我有这样的疑问
CREATE TRIGGER check_shippeddate_tr
ON Orders
FOR UPDATE
AS
IF ((SELECT ShippedDate FROM inserted) > (SELECT RequiredDate FROM Orders) )
BEGIN
PRINT 'Order must be shipped before required date'
ROLLBACK TRANSACTION
END
GO
但是,当我试图更新表时,请使用以下代码
UPDATE Orders
SET ShippedDate = '1994-04-03'
WHERE OrderID = 11051
AND CustomerID = 'LAMAI'
AND EmployeeID = 7
它应该阻止更新并打印消息,因为ShippedDate是在RequiredDate之后。但是我得到了一个错误“子查询返回了一个以上的值。当子查询跟随=,!=,<,<=,>,>=,或者当子查询被用作表达式时,这是不允许的。”如何修复它?
发布于 2015-04-01 14:48:02
试一试.
假设OrderID是主键列
CREATE TRIGGER check_shippeddate_tr
ON Orders
FOR UPDATE
AS
BEGIN
SET NOCOUNT ON;
IF EXISTS (SELECT 1 FROM inserted i
inner join Orders o ON i.OrderID = o.OrderID
WHERE i.ShippedDate > O.RequiredDate)
BEGIN
PRINT 'Order must be shipped before required date'
ROLLBACK TRANSACTION
END
END
发布于 2015-04-01 15:30:59
在表上创建检查约束
ALTER TABLE Orders
ADD CHECK (ShippedDate < RequiredDate)
https://stackoverflow.com/questions/29401991
复制相似问题