使用变量的SQL触发器
我需要帮助创建这个触发器,任何帮助都将不胜感激,我无法保存这个脚本,它说的是“无效的列名OfferId”。但是我检查了所有的列名,它们都是正确的使用变量的SQL触发器,sql,triggers,Sql,Triggers,我需要帮助创建这个触发器,任何帮助都将不胜感激,我无法保存这个脚本,它说的是“无效的列名OfferId”。但是我检查了所有的列名,它们都是正确的 CREATE TRIGGER dbo.OrderOffer_UpdatedUnits ON dbo.OrderOffer FOR UPDATE AS BEGIN DECLARE @OfferId char(5) SET @OfferId = (Select OfferId From INSERTED i, Orde
CREATE TRIGGER dbo.OrderOffer_UpdatedUnits
ON dbo.OrderOffer
FOR UPDATE
AS
BEGIN
DECLARE @OfferId char(5) SET @OfferId = (Select OfferId From INSERTED i, OrderOffer a Where i.OrderOfferid = a.OrderOfferid);
DECLARE @UnitsAvailable int SET @UnitsAvailable = (Select SUM(UnitsAvailable) From dbo.Offer Where OfferId=@OfferId);
UPDATE dbo.OrderOffer SET dbo.UnitsAvailable = @UnitsAvailable
FROM INSERTED i, OrderOffer a
WHERE i.OrderOfferid = a.OrderOfferid
END
试试这个:
CREATE TRIGGER dbo.OrderOffer_UpdatedUnits
ON dbo.OrderOffer
FOR UPDATE
AS
BEGIN
UPDATE a
SET dbo.UnitsAvailable =
(
Select SUM(b.UnitsAvailable)
From dbo.Offer b
Where b.OfferId = a.OfferId
)
FROM OrderOffer a
INNER JOIN INSERTED i
ON i.OrderOfferid = a.OrderOfferid
END
注意:我删除了变量,因为这将假定您一次只更新一行。即使更新在多行上运行,上述操作仍应有效。记住,更新可能会影响多行;不仅仅是一个。谢谢你,约翰,我得到了这个错误:第8行中“')”附近的语法不正确,无需担心/道歉;我在那里留下了一些原始代码,去掉了其他部分。现在应该可以了。约翰比万,你有时间的时候能帮我提个问题吗。提前谢谢你!嘿@Carlos,你能不能再多告诉我一些你还需要帮助的信息?提前谢谢。约翰贝文,很高兴再次收到你的来信,上周我正在努力编写一个触发器,我在这里提出了一个新问题:链接[我花了一段时间才使这个触发器工作,但代码看起来很混乱,我希望你能帮我简化它。我会非常感激的。祝你愉快!