Constraint
SQL 檢查約束,它要求基於另一列的值的列中的值不為空
我有一個包含以下兩列的表
OnSite BIT NOT NULL
ClientId INT NULL
我想添加一個約束條件,即何時
ClientId
為真(1)。NOT NULL``OnSite
我在網站上找不到任何東西。
謝謝
您想強制執行以下含義:
(OnSite=true) => (ClientId is not null)
這可以重寫為:
(OnSite=false) or (ClientId is not null)
因此,您的約束變為:
CHECK ( OnSite=0 or ClientId is not null)
對於 SQL Server,您可以使用:
CREATE TABLE dbo.MyTable ( OnSite BIT NOT NULL, ClientID INT NULL); ALTER TABLE dbo.MyTable WITH CHECK ADD CONSTRAINT CK_MyTable_ClientId_NotNull CHECK (OnSite=0 OR ClientId IS NOT NULL); ALTER TABLE dbo.MyTable CHECK CONSTRAINT CK_MyTable_ClientId_NotNull;