5
我有一個表中有兩個數字列的SQL Server。至少必須填寫其中一個數字字段。我如何編寫一個檢查約束來驗證這一點?我需要一個檢查約束兩列,至少有一個不能爲空
我有一個表中有兩個數字列的SQL Server。至少必須填寫其中一個數字字段。我如何編寫一個檢查約束來驗證這一點?我需要一個檢查約束兩列,至少有一個不能爲空
這可以用驗證空值,並用結果或
create table #t (i int
, j int
, constraint chk_null check (i is not null or j is not null))
下面是測試用例
insert into #t values (null, null) --> error
insert into #t values (1, null) --> ok
insert into #t values (null, 1) --> ok
insert into #t values (1, 1) --> ok
末的答案相匹配的檢查約束來實現,但這裏是一個解決方案對於任何數量的列來檢查Sql Server:
CONSTRAINT CK_one_is_not_null CHECK (COALESCE(col1, col2, col3) IS NOT NULL)
可能的重複[[列之間的兩列之一s應該不是NULL。如何在模式中執行它?](http://stackoverflow.com/questions/7017871/one-of-the-column-between-two-columns-should-be-not-null-how-to-enforce-it -in-s) – JohnnyHK 2016-03-10 00:16:24
@JohnnyHK不重複,因爲這個問題是關於'兩個中的至少一個',而且一個關於'只有一個' – nahab 2017-03-15 10:46:34