如何解决SQL-在“检查约束”中添加“如果存在”条件
我正在尝试在CHECK约束中设置条件。情况是
- 当column1为null时,则无需采取任何措施
- 如果column1不为null,则column3必须具有定义的代码
例如,如果一个学生询问(1),那么他应该已经执行了一个动作(以代码1访问或被称为代码2)
CREATE TABLE [dbo].[enquiry_details](
[Id] uniqueidentifier NOT NULL,[Name] [varchar] (100) NOT NULL,[Enquired] [int] NULL,[location] [int] NOT NULL,[Action_Type] [int] NULL,-- CONSTRAINT menu_key CHECK ((Enquired IS NOT NULL)and Action_Type IN ('11','22'))
--CONSTRAINT menu_key CHECK (IF(Enquired!= null) Action_Type IN ('11','22'))
CONSTRAINT menu_key CHECK (IF(Enquired is not null) Action_Type IN ('11','22'))
-- CONSTRAINT menu_keyi CHECK (CASE WHEN Enquired IS NOT NULL THEN Action_Type IN ('11','22') END)
-- CONSTRAINT menu_keyi CHECK (CASE WHEN LEN(Enquired)>0 THEN (Action_Type '11' OR Action_Type='22') ELSE NULL END)
)
解决方法
不要考虑运行条件代码-只需考虑形成一个逻辑块即可。
CONSTRAINT menu_key CHECK (Enquired is null OR Action_Type IN ('11','22'))
如果OR
不为null,则Enquired
的第一部分将为false,在这种情况下,只有OR
的第二部分才能满足总体条件。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。