如何根据表中其他两个列的值更改列的值?

时间:2020-06-13 17:19:54

标签: sql sql-server tsql

我有一个表Loan,其中包含LoanDateReturnDateExpired等列。前两个是日期时间,而后一个时间。

如果getutcdate()超过ReturnDate值,Expired列自动更新为1,该怎么办?

1 个答案:

答案 0 :(得分:2)

如果我正确理解,您希望当当前日期超过Expired时,1列会自动变为ReturnDate

在这种情况下,您可以为Expired使用computed column

create table Loan (
  LoanDate datetime null,
  ReturnDate datetime null,
  Expired as cast(case when getutcdate()>ReturnDate then 1 else 0 end as bit)
)

这对于使用像这样的同一行中的数据的简单计算非常有用。

请注意,计算列为“只读”,然后从INSERTUPDATE语句中忽略:

insert into Loan (LoanDate, ReturnDate) values
  ('20010101','20011231'),
  ('20210101','20211231')