SQL非空约束条件
我很好奇是否有可能sql中创建条件非null约束?换句话说,只要能创造约束,就能创造约束吗?A列包含“NEW”,那么B列可以是空的,但如果是A列的内容改为其他内容,然后B列不再允许空?
扩展这一点,然后保持不变,只要A列说“ NEW”,B列必须是空的还是空的?
谢谢大家:D
解决方案:
这对于CONSTRAINT CHECK非常合适。只需执行以下操作:
要求:
是否有可能创造一个约束,只要A列包含长行 NEW”,B列可以是空的,但如果是A列的内容改为其他内容,然后B列就不再允许Null?
请注意以下短语:B列 可以 为空
解决方案:
create table tbl( A varchar(10) not null, B varchar constraint uk_tbl check ( A = 'NEW' -- B can be null or not null: no need to add AND here OR (A'NEW' AND B IS NOT NULL) );可以进一步简化:
create table tbl( A varchar(10) not null, B varchar constraint uk_tbl check ( A = 'NEW OR B IS NOT NULL );矛盾的要求与上述要求不符:
扩展这一点,然后保持不变,只要A列说“ NEW”,B列必须是空的还是空的?
请注意以下短语:B列 必须 为空
create table tbl( A varchar(10) not null, B varchar constraint uk_tbl check ( (A = 'NEW' AND B IS NULL) OR A'NEW);它可以通过以下方式简化,但可能不如上述可读性:
create table tbl( A varchar(10) not null, B varchar constraint uk_tbl check ( A'NEW OR B IS NULL );
页:
[1]