alter table dbo.transactions
add constraint tk_paiement check ([Date_paiementdu]=[dateTransaction] +(30))
我想date_paiementdu
在 datetransaction 后 30 天设置,但它不起作用
需要一些帮助!谢谢
alter table dbo.transactions
add constraint tk_paiement check ([Date_paiementdu]=[dateTransaction] +(30))
我想date_paiementdu
在 datetransaction 后 30 天设置,但它不起作用
需要一些帮助!谢谢
您已经定义了一个 CHECK 约束,但您似乎想要的是一个计算列:
alter table dbo.transactions
add tk_Date_paiementdu as (DateAdd(day, 30, [dateTransaction])
听起来您想要一个计算列而不是检查约束:
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 实际上将存储要在列中显示的数据,省略它将将该列保留为每次需要时计算的虚拟列。
数据库规范化的原则之一是不存储计算值。考虑到这一点,您可能可以通过以下方式实现您的目标:
where datediff(day, dateTransaction, Date_paiementdu) <= 30
如何完成此操作的详细信息是 RDBMS 特定的,您没有指定您的。