创建插入触发器

时间:2017-05-10 19:34:55

标签: sql-server tsql triggers

这是我的代码:

USE MyGuitarshop
GO

CREATE TRIGGER Products_INSERT
ON Products
FOR INSERT
AS
BEGIN
    UPDATE Products
    SET DateAdded = GETDATE()
    WHERE DateAdded IS NULL;
END;
GO

USE MyGuitarShop

INSERT INTO Products (CategoryID, ProductCode, ProductName, Description, ListPrice, DiscountPercent, DateAdded)
VALUES (1, '229985', 'Quartz Watch', 'Lovely watch with a quartz face', 29.99, 12, NULL);
GO

USE MyGuitarShop

SELECT * FROM Products

弹出此错误:消息512,级别16,状态1,过程产品_UPDATE,行13 [批次启动行21] 子查询返回的值超过1。当子查询遵循=,!=,<,< =,>,> =或子查询用作表达式时,不允许这样做。

我不明白错误或如何修复它。有人可以指出我正确的方向吗?

2 个答案:

答案 0 :(得分:7)

不能将常规比较运算符与NULL一起使用 - 与NULL相比的任何内容都是未定义的,因此" false"。

使用IS NULL检查唯一可以使用IS NOT NULLUPDATE Products SET DateAdded = GETDATE() WHERE DateAdded IS NULL;

a

答案 1 :(得分:-3)

尝试

UPDATE inserted SET DateAdded = GETDATE() WHERE DateAdded IS NULL; END;