使用触发器来获取GETDATE()
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用触发器来获取GETDATE()相关的知识,希望对你有一定的参考价值。
我正在使用Trigger将Products表更新为当前日期,如果该列的值为null。我还有一切,当我将新值插入表中时,DateAdded列为NULL而不是今天的当前日期。我不确定什么是错的,为什么它不起作用。任何帮助将不胜感激,谢谢!
IF OBJECT_ID('Products_INSERT') IS NOT NULL
DROP TRIGGER Products_INSERT
CREATE TRIGGER Products_INSERT
ON Products
AFTER INSERT
AS
UPDATE Products
SET DateAdded = GETDATE()
WHERE DateAdded = NULL;
答案
我希望触发器看起来像这样:
CREATE TRIGGER INSERT_Products ON Products
AFTER INSERT
AS BEGIN
UPDATE Products
SET DateAdded = GETDATE()
FROM Products p JOIN
Inserted i
ON p.productid = i.productid;
END;
如果要测试未在insert
中设置的值:
CREATE TRIGGER INSERT_Products ON Products
AFTER INSERT
AS BEGIN
UPDATE Products
SET DateAdded = GETDATE()
FROM Products p JOIN
Inserted i
ON p.productid = i.productid
WHERE DateAdded IS NOT NULL;
END;
也就是说,我只会使用默认值 -
create table Products (
ProductId int identity primary key,
. . .
DateAdded datetime not null default getdate()
);
比触发器简单得多,这仍然允许您使用自己的值覆盖默认值。
另一答案
null
不是一个价值,它缺乏价值。为了检查它,您需要使用is
运算符,而不是=
运算符:
UPDATE Products
SET DateAdded = GETDATE()
WHERE DateAdded IS NULL;
-- Here ---------^
以上是关于使用触发器来获取GETDATE()的主要内容,如果未能解决你的问题,请参考以下文章
分离不触发 onSaveInstanceState() 的片段