约束检查 restrict null Oracle
Constraint check restrict null Oracle
CREATE TABLE CLIENT
(
id NUMBER (5) NOT NULL ,
name VARCHAR2 (20) ,
surname VARCHAR2 (20) ,
company VARCHAR2 (20) ,
ALTER TABLE CLIENT ADD CONSTRAINT CLIENT_PK PRIMARY KEY ( id ) ;
如何制作姓名和姓氏不为空且相反时禁止进入公司的检查约束?
如果我没有正确理解您的要求,那么如下:
ALTER TABLE CLIENT ADD CONSTRAINT CLIENT_CK
check ( (company is null and name is not null and surname is not null)
or (company is not null and name is null and surname is null) ) ;
例如在以下插入语句中,只有前两个会成功插入一行 - 其余的将因检查约束而失败:
insert into client (id, name, surname, company)
values (1, 'fred', 'bloggs', null);
insert into client (id, name, surname, company)
values (2, null, null, 'ACME');
insert into client (id, name, surname, company)
values (3, 'joe', null, null);
insert into client (id, name, surname, company)
values (4, null, 'smith', 'INC INC.');
insert into client (id, name, surname, company)
values (5, 'bob', 'jobs', 'CORP CORP.');
CREATE TABLE CLIENT
(
id NUMBER (5) NOT NULL ,
name VARCHAR2 (20) ,
surname VARCHAR2 (20) ,
company VARCHAR2 (20) ,
ALTER TABLE CLIENT ADD CONSTRAINT CLIENT_PK PRIMARY KEY ( id ) ;
如何制作姓名和姓氏不为空且相反时禁止进入公司的检查约束?
如果我没有正确理解您的要求,那么如下:
ALTER TABLE CLIENT ADD CONSTRAINT CLIENT_CK
check ( (company is null and name is not null and surname is not null)
or (company is not null and name is null and surname is null) ) ;
例如在以下插入语句中,只有前两个会成功插入一行 - 其余的将因检查约束而失败:
insert into client (id, name, surname, company)
values (1, 'fred', 'bloggs', null);
insert into client (id, name, surname, company)
values (2, null, null, 'ACME');
insert into client (id, name, surname, company)
values (3, 'joe', null, null);
insert into client (id, name, surname, company)
values (4, null, 'smith', 'INC INC.');
insert into client (id, name, surname, company)
values (5, 'bob', 'jobs', 'CORP CORP.');