我正在使用 SQL Server 并嘗試添加一列和檢查約束。我發現以下方法有效:
ALTER TABLE table.column
ADD isTrue BIT
GO
ALTER TABLE table.column
ADD CONSTRAINT CK_table_isTrue CHECK ((isTrue = 1 AND column1 = 0 AND column2 = 0 AND column3 IS NULL) OR isTrue = 0)
然而,一種不那么冗長的寫法是行不通的:
ALTER TABLE table.column
ADD isTrue BIT
CONSTRAINT CK_table_isTrue CHECK ((isTrue = 1 AND column1 = 0 AND column2 = 0 AND column3 IS NULL) OR isTrue = 0)
輸出以下錯誤:
列 'isTrue' 的列 CHECK 約束參考另一列,表 'table'。
查看檔案,所以我無法確定為什么會這樣
uj5u.com熱心網友回復:
你的語法不太對。參考多列的約束是表約束。您正在嘗試添加表約束,因此在 isTrue 的資料型別定義之后需要一個逗號。
ALTER TABLE table.column
ADD isTrue BIT,
CONSTRAINT CK_table_isTrue CHECK ((isTrue = 1 AND column1 = 0 AND column2 = 0 AND column3 IS NULL) OR isTrue = 0);
如果沒有逗號,SQL Server 會認為您正在嘗試添加列約束,從而導致您參考不同列的錯誤。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/377479.html
標籤:sql sql-server 查询语句 更改表 检查约束
下一篇:SQL查詢結果上的SED
