Ski*_*eak 1 sql-server constraint
我目前正在 SQL Server 中处理下表
Table: order_status_logs
log_id INT NOT NULL IDENTITY(1,1)
order_id INT NOT NULL
status_id INT NOT NULL
log_date DATE NOT NULL
expected_by DATE NULL
Run Code Online (Sandbox Code Playgroud)
在此status_id
列的表中,可能有以下值:
[1] - Pending
[2] - Ordered
[3] - Backordered
[4] - Received
Run Code Online (Sandbox Code Playgroud)
我想设置我的表,以便在尝试创建新记录时,如果不等于 4 ,expected_by
则从NULL
到 。基本上除非已收到订单,否则该表将始终需要该列的数据。NOT NULL
status_id
expected_by
可以用 a 来做到这一点CONSTRAINT
吗?或者这是我需要通过返回错误消息的程序或如果我不提供该列数据的内容来执行的操作?
是的,您可以在不使用触发器或存储过程的情况下创建表检查约束。这对 Sql Server 2008 或更高版本有效:
ALTER TABLE dbo.order_status_logs
ADD
CONSTRAINT CHK_EXPECTED_BY
CHECK ((status_id <> 4 AND expected_by IS NOT NULL) OR status_id = 4);
GO
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1835 次 |
最近记录: |