Constraint

SQL 檢查約束,它要求基於另一列的值的列中的值不為空

  • June 6, 2014

我有一個包含以下兩列的表

  • 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;

引用自:https://dba.stackexchange.com/questions/66681