我有一个sql表,让我们说col1和col2,我想创建一个约束或一个触发器(无论什么工作),这样当且仅当col1中输入的值为1时,col2应该从NULL更改为Not Null。
关键是,如果col1设置为1,我想强制使用col2字段,否则保持可选。
答案 0 :(得分:4)
您在评论中提到了SQL Server
CREATE TABLE YourTable
(
Col1 INT,
Col2 VARCHAR(25) NULL,
CONSTRAINT ck_foo CHECK (NOT (Col1 = 1 AND Col2 IS NULL))
);
如问题中所述,将禁止NULL
。要禁止空字符串,约束定义可以是
CONSTRAINT ck_foo CHECK (NOT (Col1 = 1 AND ISNULL(Col2,'') = ''))
答案 1 :(得分:1)
ALTER TABLE YourTable WITH CHECK ADD CONSTRAINT [CK_YourTable] CHECK (([col1]=(1) AND [col2] IS NOT NULL OR [col1]<>(1)))
GO
如果你想排除空字符串,那么:
ALTER TABLE YourTable WITH CHECK ADD CONSTRAINT [CK_YourTable] CHECK (([col1]=(1) AND ( [col2] IS NOT NULL AND [col2] <> '') OR [col1]<>(1)))
GO