最近因為無法確認 AP 端問題在哪,導致必須在 SQL Server 上建立條件約束來避免異常資料存進來,就順道整理條件約束相關內容
USE tempdb
GO
DROP TABLE IF Exists Temp
CREATE TABLE Temp (StartDate Date , EndDate Date)
ALTER TABLE Temp
ADD CONSTRAINT CK_DateCompare CHECK (StartDate < EndDate );
INSERT INTO Temp (StartDate , EndDate) VALUES('20180919','20180901')
INSERT 陳述式與 CHECK 條件約束 "CK_DateCompare" 衝突。衝突發生在資料庫 "tempdb",資料表 "dbo.Temp"。
無法直接利用 TSQL 語法修改 Check 條件約束,必須先刪除再新增
ALTER TABLE Temp
DROP CONSTRAINT CK_DateCompare
ALTER TABLE Temp
ADD CONSTRAINT CK_DateCompare CHECK (StartDate <= EndDate);
ALTER TABLE Temp NOCHECK CONSTRAINT CK_DateCompare
![[SQL] Check 條件約束-2](https://farm2.staticflickr.com/1943/44859914442_1771778e88_z.jpg)
--
ALTER TABLE Temp CHECK CONSTRAINT CK_DateCompare
ALTER TABLE Temp WITH CHECK CHECK CONSTRAINT CK_DateCompare
SELECT
s.[name] AS ScheamName ,
o.[name] AS TableName ,
i.[name] AS CheckName ,
i.definition ,
i.type_desc ,
i.create_date ,
i.modify_date ,
i.is_disabled ,
i.is_not_for_replication ,
i.is_not_trusted
FROM sys.check_constraints i
INNER JOIN sys.objects o ON i.parent_object_id = o.[object_id]
INNER JOIN sys.schemas s ON o.[schema_id] = s.[schema_id]
GO
沒有留言:
張貼留言