0
我有2分表中的列 -檢查約束SQL
[SendDate]和[PayDate]
我想實現一個約束,將檢查 - 產品無法支付,如果有沒有被送出去。
基本上在簡單的話IF SendDate爲NULL,則PayDate不能containt值或類似 東西,如果SendDate爲NULL,則如果一些用戶類型PayDate,錯誤將上升
我不知道如何去關於它。
大加讚賞任何建議,感謝
我有2分表中的列 -檢查約束SQL
[SendDate]和[PayDate]
我想實現一個約束,將檢查 - 產品無法支付,如果有沒有被送出去。
基本上在簡單的話IF SendDate爲NULL,則PayDate不能containt值或類似 東西,如果SendDate爲NULL,則如果一些用戶類型PayDate,錯誤將上升
我不知道如何去關於它。
大加讚賞任何建議,感謝
使用Check
約束這樣
CHECK([PayDate] IS NULL OR ([PayDate] IS NOT NULL AND [SendDate] IS NOT NULL))
樣品
CREATE TABLE dbo.Payment
(
[Id] INT IDENTITY(1,1) PRIMARY KEY,
[SendDate] DATE NULL,
[PayDate] DATE NULL,
CONSTRAINT CHK_PayDate CHECK([PayDate] IS NULL OR ([PayDate] IS NOT NULL AND [SendDate] IS NOT NULL))
)
-- All Fine
INSERT INTO dbo.Payment([SendDate],[PayDate]) VALUES(CURRENT_TIMESTAMP,CURRENT_TIMESTAMP);
INSERT INTO dbo.Payment([SendDate],[PayDate]) VALUES(CURRENT_TIMESTAMP,NULL);
INSERT INTO dbo.Payment([SendDate],[PayDate]) VALUES(NULL,NULL);
--Raises Error
INSERT INTO dbo.Payment([SendDate],[PayDate]) VALUES(NULL,CURRENT_TIMESTAMP);
不錯的一個,謝謝:) – Vlad11