alter table dbo.transactions
add constraint tk_paiement check ([Date_paiementdu]=[dateTransaction] +(30))
我想在日期交易后30天设置date_paiementdu
,但它不起作用
需要一些帮助!感谢
答案 0 :(得分:2)
您已定义了CHECK约束,但您想要的是computed column:
alter table dbo.transactions
add tk_Date_paiementdu as (DateAdd(day, 30, [dateTransaction])
答案 1 :(得分:2)
听起来你想要computed column而不是检查约束:
ALTER TABLE yourTable
ADD Date_paiementdu AS DATEADD(DAY, 30, dateTransaction);
如果您希望列不可为空或索引,那么您将需要使用PERSISTED
并且DateTransaction也需要不可为空:
ALTER TABLE yourTable
ADD Date_paiementdu AS DATEADD(DAY, 30, dateTransaction) PERSISTED NOT NULL;
为了进一步澄清使用PERSISTED将实际存储要在列中显示的数据,省略它将使列保持为每次需要时计算的虚拟列。
答案 2 :(得分:0)
数据库规范化的一个原则是不存储计算值。考虑到这一点,您可以通过以下方式实现目标:
where datediff(day, dateTransaction, Date_paiementdu) <= 30
如何完成此操作的详细信息是特定于RDBMS的,您没有指定自己的。