[英]SQL Constraint conditional Check: if column0 is null, column1 is not null and vice versa
[英]Sql Server - Constraint - Allow to set column A only if column B is null and vice-versa
有沒有辦法在SQL Server 2008中添加一個約束來驗證如果用戶試圖在列A中輸入一個值,它只能在列B為空時反之亦然
例
像這樣的東西:
ALTER TABLE foo WITH CHECK ADD
CONSTRAINT CK_Foo_reason CHECK (
ColA IS NOT NULL AND ColB IS NULL
OR
ColA IS NULL AND ColB IS NOT NULL
)
編輯:問題更新后
這取決於在這種情況下是否允許兩列都為NULL
ColA IS NULL OR ColB IS NULL
編輯2:對於3列,其中一列必須為NOT NULL
我擔心沒有聰明的褲子回答。 我添加了空格,希望能讓它更清晰
ALTER TABLE foo WITH CHECK ADD
CONSTRAINT CK_Foo_reason CHECK (
ColA IS NOT NULL AND ColB IS NULL AND ColC IS NULL
OR
ColA IS NULL AND ColB IS NOT NULL AND ColC IS NULL
OR
ColA IS NULL AND ColB IS NULL AND ColC IS NOT NULL
)
這似乎對我有用:
CREATE TABLE dbo.Test_Constraint
(
a INT NULL,
b VARCHAR(10) NULL,
CONSTRAINT Test_Constraint_CHK CHECK (a IS NULL OR b IS NULL)
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.