钟伟豪 发表于 2023-9-14 12:24:43

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]
查看完整版本: SQL非空约束条件