2014-09-29 17 views
5

Tôi có một bảng trong SQL Server với hai cột số. Phải điền ít nhất một trong các trường số này. Làm thế nào để viết một ràng buộc kiểm tra để xác minh điều này?Tôi cần một ràng buộc kiểm tra trên hai cột, ít nhất một không được rỗng

+1

Bản sao có thể có của [Một cột giữa hai cột s hould KHÔNG NULL. Làm thế nào để thực thi nó trong lược đồ?] (Http://stackoverflow.com/questions/7017871/one-of-the-column-between-two-columns-should-be-not-null-how-to-enforce-it -in-s) – JohnnyHK

+0

@JohnnyHK không trùng lặp vì câu hỏi này là về 'ít nhất một trong hai' và câu hỏi đó là về 'chỉ một trong hai' – nahab

Trả lời

12

này có thể được thực hiện với một hạn chế kiểm tra xác minh giá trị null và phù hợp với kết quả có hoặc

create table #t (i int 
       , j int 
       , constraint chk_null check (i is not null or j is not null)) 

Sau đây là các trường hợp thử nghiệm

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 
0

trễ trả lời, nhưng đây là một giải pháp cho Sql Server cho bất kỳ số cột nào cần kiểm tra:

CONSTRAINT CK_one_is_not_null CHECK (COALESCE(col1, col2, col3) IS NOT NULL) 
Các vấn đề liên quan