表格中有2列 -
[SendDate]和[PayDate]
我正在尝试实施一个约束,该约束将检查 - 如果尚未发送产品,则无法付款。
基本上用简单的话来说,如果SendDate是NULL,那么PayDate不能包含某个值或类似的东西 如果SendDate为NULL,那么如果用户输入PayDate的内容,则会出现错误
我不知道如何继续下去。
非常感谢任何建议,谢谢
答案 0 :(得分:2)
使用像这样的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);