ORACLE里的CHECK约束。。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ORACLE里的CHECK约束。。相关的知识,希望对你有一定的参考价值。

要想约束 我的SAVINGTYPE列 必须是 活期/定期/两可 中的一个

怎么写这句CHECK()?

oracle中的check约束是为了让表中某字段值能输入固定的值。

如:

1、创建带有check约束的表。

create table test
(id int,
name varchar2(10),
sex varchar2(10) check (sex in (\'男\',\'女\')));

以上语句说明输入的sex只能为男或女。

2、插入测试数据:

insert into test values (1,\'badkano\',\'男\');
insert into test values (2,\'冷小月9\',\'女\');

以上两个语句都能输入成功。

如果输入:

insert into test values (3,\'dongdng\',\'不男不女\');

则会报错:

参考技术A ALTER TABLE tablename
ADD CONSTRAINT con1
CHECK (SAVINGTYPE='活期' or SAVINGTYPE = '定期') ENABLE
VALIDATE本回答被提问者采纳

Oracle字段约束

初识约束

  约束是数据库用来确保数据满足业务规则的手段,对数据做的条件限制。

约束的类型

1. 主键约束(PRIMARY KEY)

2. 唯一性约束(UNIQUE)

3. 非空约束(NOT NULL)

4. 检查约束(CHECK)

5. 外键约束(FOREIGN KEY)

主键约束(PRIMARY KEY)

  1. 非空加唯一约束;

  2. 一个表只有一个主键;

  3. 主键会默认加索引;

唯一性约束(UNIQUE)

对于UNIQUE约束来讲,索引是必须的。如果不存在,就自动创建一个(UNIQUE的唯一性本质上是通过索引来保证的)

UNIQUE允许null值,UNIQUE约束的列可存在多个null。这是因为,Unique唯一性通过btree索引来实现,而btree索引中不包含null。所以,这也造成了在where语句中用null值进行过滤会造成全表扫描。

删除约束

alter table table_name drop constraint constraint_name;

非空约束(NOT NULL)

非空约束作用的列也叫强制列。顾名思义,强制键列中必须有值,当然建表时候若使用default关键字指定了默认值,则可不输入。

外键约束(FOREIGN KEY)

  外键约束定义在具有父子关系的子表中,外键约束使得子表中的列对应父表的主键列,用以维护数据库的完整性。不过出于性能和后期的业务系统的扩展的考虑,很多时候,外键约束仅出现在数据库的设计中,实际会放在业务程序中进行处理。外键约束注意以下几点:

  1. 外键约束的子表中的列和对应父表中的列数据类型必须相同,列名可以不同
  1. 对应的父表列必须存在主键约束(PRIMARY KEY)或唯一约束(UNIQUE)

 

以上是关于ORACLE里的CHECK约束。。的主要内容,如果未能解决你的问题,请参考以下文章

oracle的check约束

oracle 唯一约束 为啥 唯一索引

Oracle 检查约束check

oracle约束总结(not null/unique/primary key/foreign key/check)

Oracle SQL - 我可以在 DDL 的 CHECK 约束中使用子查询吗?

Oracle SQL - REGEXP_LIKE 在 CHECK 约束中没有按预期工作