Sql-Server

CHECK 和 CONSTRAINT CHECK 有什麼區別?

  • October 21, 2019

以下範例之間有什麼區別嗎?

ProjNum int 
   CONSTRAINT nn_ProjNum NOT NULL 
       CONSTRAINT C_ProjNum CHECK (ProjNum >= 10)

ProjNum int NOT NULL 
   CHECK (ProjNum >= 10)

謝謝。

這兩個語句在 SQL Server 中沒有區別。每個結果都帶有一個檢查約束的 NOT NULL 列(不是約束)。唯一的區別是第二個創建了一個系統命名的檢查約束,比如’CK__t__ProjNum__4AB81AF0’。

兩者都是一樣的。

據我了解,CONSTRAINT CHECK可以在添加新列時定義。

ALTER TABLE dbo.DocExc   
  ADD ColumnD int NULL   
  CONSTRAINT CHK_ColumnD_DocExc   
  CHECK (ColumnD > 10 AND ColumnD < 50);  
GO

使用者也可以提供自己的約束名稱。

但是,如果我們必須檢查現有列,那麼

ALTER TABLE dbo.DocExc   
ADD  CHECK (ExistsColumn > 10 AND ExistsColumn < 50);  
GO

系統將在此處提供約束名稱。

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