如果列1的值为1,则SQL列2从NULL更改为NOT NULL

时间:2013-07-16 12:27:16

标签: sql triggers constraints

我有一个sql表,让我们说col1和col2,我想创建一个约束或一个触发器(无论什么工作),这样当且仅当col1中输入的值为1时,col2应该从NULL更改为Not Null。

关键是,如果col1设置为1,我想强制使用col2字段,否则保持可选。

2 个答案:

答案 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