如何使用 MYSQL 触发器和光标
How to use MYSQL Trigger with Cursor
当新数据 inserted/update 插入“Txn_Sales”table 时,想要将多行插入 table“txn_dbtransactionnotification”。
假设事务 table“Txn_Sales”中存在 5 行,而主 table“Mst_Sales”中存在 1 行。
所以当数据进入 master table "Mst_Sales" 被修改时,相关数据进入 table "Txn_Sales" 必须被修改并且更新被发送到 table "txn_dbtransactionnotification" 那么我如何在触发器中使用 Cursor 所以当 table "Mst_Sales" 中的数据被修改时,然后数据进入 table "Txn_Sales”必须逐行修改
MySQL 的存储例程语言中的游标支持不完整。它不像其他品牌的 SQL 实施那样支持 UPDATE ... WHERE CURRENT OF CURSOR
。
但在很多情况下,没有必要逐行更新。批量更新更简单。考虑更新行集,而不是逐行更新。
例如:
CREATE TRIGGER mytrigger AFTER UPDATE ON Mst_Sales
FOR EACH ROW
BEGIN
-- update a set of rows related to the same product that
-- spawned this trigger.
UPDATE Txn_Sales SET price = NEW.price WHERE product = NEW.product;
-- and enter a record in the notifications table
INSERT INTO txn_dbtransactionnotification ...;
END
我不得不想象你在谈论什么类型的更新,因为你以如此抽象的方式描述了问题。在现实生活中,我认为改变产品价格不会追溯适用于过去的交易。所以上面的例子只是为了展示技术,而不是你会使用的真实代码。
当新数据 inserted/update 插入“Txn_Sales”table 时,想要将多行插入 table“txn_dbtransactionnotification”。 假设事务 table“Txn_Sales”中存在 5 行,而主 table“Mst_Sales”中存在 1 行。 所以当数据进入 master table "Mst_Sales" 被修改时,相关数据进入 table "Txn_Sales" 必须被修改并且更新被发送到 table "txn_dbtransactionnotification" 那么我如何在触发器中使用 Cursor 所以当 table "Mst_Sales" 中的数据被修改时,然后数据进入 table "Txn_Sales”必须逐行修改
MySQL 的存储例程语言中的游标支持不完整。它不像其他品牌的 SQL 实施那样支持 UPDATE ... WHERE CURRENT OF CURSOR
。
但在很多情况下,没有必要逐行更新。批量更新更简单。考虑更新行集,而不是逐行更新。
例如:
CREATE TRIGGER mytrigger AFTER UPDATE ON Mst_Sales
FOR EACH ROW
BEGIN
-- update a set of rows related to the same product that
-- spawned this trigger.
UPDATE Txn_Sales SET price = NEW.price WHERE product = NEW.product;
-- and enter a record in the notifications table
INSERT INTO txn_dbtransactionnotification ...;
END
我不得不想象你在谈论什么类型的更新,因为你以如此抽象的方式描述了问题。在现实生活中,我认为改变产品价格不会追溯适用于过去的交易。所以上面的例子只是为了展示技术,而不是你会使用的真实代码。