繁体   English   中英

SQL Server TRIGGER UPDATE 更改

[英]SQL Server TRIGGER UPDATE on change

我正在尝试为网上商店进行触发更新,我希望每次向订单中添加某些内容时更新总金额( col2 ),所有订单都在一个表( table1 )中完成,然后存储所有订单在另一个表( table2 )中。 我不断收到table1.col1 = table2.col1的错误,其中col1是一个 ID。

CREATE TRIGGER table2.col2
ON table1
FOR UPDATE
BEGIN
    UPDATE table2
    SET newTable =
        (SELECT table2.col2 AS p
        FROM table2
        JOIN inserted AS i
        ON p.orderId = i.orderId)
    WHERE table2.orderId = table1.orderId
END

您可能可以在没有子查询的情况下重写它,但快速修复是将inserted添加到您的where子句中,如下所示:

CREATE TRIGGER table2.col2
ON table1
FOR UPDATE
BEGIN
    UPDATE table2 SET
        newTable = (
            SELECT table2.col2 AS p
            FROM table2
            JOIN inserted AS i
            ON p.orderId = i.orderId
        )
    WHERE table2.orderId in (select orderId from Inserted)
END

Inserted是一个伪表,其中包含一行,其中包含用于更新的每一行的新数据(大列除外)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM