SQL Server:如何在插入时自动编译表
问题描述:
如何在下列情况下自动编译表:用户正在插入或修改某列中的数据,如果他这样做,则另一列无法或设置为NULL。SQL Server:如何在插入时自动编译表
例如,如果用户插入Value1,他不能插入Value2原因设置为NULL,或者如果他编译Value2,他不能插入Value1。 如果他在更新中插入Value1或Value2或者不可能,或者其他值自动设置为NULL。
Value Value1 Value2
1 'abc' NULL
2 NULL 'cde'
3 NULL 'fgh'
答
我会用一个检查约束:
CREATE TABLE [dbo].[Test](
[Value] [int] NOT NULL,
[value1] [int] NULL,
[Value2] [int] NULL
)
ALTER TABLE [dbo].[Test] WITH CHECK
ADD CONSTRAINT [CK_Test] CHECK
(([Value1] IS NOT NULL AND [Value2] IS NULL OR
[Value1] IS NULL AND [Value2] IS NOT NULL))
下面插入的结果是:
失败:INSERT语句冲突与CHECK约束 “CK_Test”。
INSERT INTO Test
VALUES
(1,1,1)
成功:
INSERT INTO Test
VALUES
(1,NULL,1)
成功:
失败:INSERT语句冲突与CHECK约束 “CK_Test”。
INSERT INTO Test
VALUES
(1,NULL,NULL)
+0
谢谢你,它完美的作品! – Vladmyr
+0
@Vladmyr没问题,如果它适合你,你可以接受这个答案,你认为这将有助于未来的人。 –
您可以在Insert或UpdateTriggers中相应地处理这样的逻辑。 –