0

我有一个带有 col1 和 col2 的 sql 表,我想创建一个约束或触发器(无论工作如何),当且仅当 col1 中输入的值为 1 时,col2 才应从 NULL 更改为 Not Null。

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

4

2 回答 2

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,'') = ''))
于 2013-07-16T12:36:50.620 回答
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
于 2013-07-16T12:41:39.723 回答