微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将检查约束与SQL中的IF语句结合在一起?

如何解决如何将检查约束与SQL中的IF语句结合在一起?

当我想像这样放置约束时,如何在sql中使用检查约束:

Y must be NOT NULL when X=‘hello’;
when X != ‘hello’ Y can be NULL

我尝试过这种方法,但是没有用。.

ALTER TABLE table
ADD ( CONSTRAINT cons CHECK ( X= ‘hello’ and Y!= NULL or X!= ‘hello’));

解决方法

如果我理解逻辑,则正确的语法是:

ALTER TABLE table ADD CONSTRAINT cons
    CHECK ( X = 'hello' and Y IS NOT NULL NULL OR X <> 'hello');
,

您可以使用:

ALTER TABLE table_name
  ADD CONSTRAINT cons CHECK ( Y IS NOT NULL OR X <> 'hello');

然后,如果您有:

CREATE TABLE table_name ( x VARCHAR2(5),y VARCHAR2(5) );

然后您可以插入以下值:

INSERT INTO table_name ( x,y )
SELECT 'hello','abc' FROM DUAL UNION ALL
SELECT 'other',NULL  FROM DUAL;

但是,如果您尝试:

INSERT INTO table_name ( x,y ) VALUES ( 'hello',NULL );

您会得到例外:

ORA-02290: check constraint (SCHEMA_NAME.CONS) violated

db 提琴here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。