如何修复我的 For Every 行语句未移动到下一行的错误


USE myDatabase;
CREATE DEFINER = CURRENT_USER TRIGGER `myDatabase`.`master_AFTER_INSERT` AFTER INSERT ON `master` FOR EACH ROW
INSERT INTO Encryption (master_AccountID, master_AccountName, TeamOps_DL, AccountKeys, KeyARNs) 
SELECT AccountID, AccountName, TeamOps_DL, AccountKeys, KeyARNs 
FROM master;

我遇到的问题是,当我将一组插入复制到主帐户时,只有第一条记录正确插入(首先插入主记录,然后插入加密)。然后,它会为其余插入项抛出错误

错误 1062 (23000):密钥"主要"重复条目"*********-[帐户名]"。

因此,它似乎再次从列表的顶部重新开始并卡在那里。我不确定为什么它没有移动到下一行。任何见解都值得赞赏!

您的问题是您的INSERT ... SELECT上没有WHERE条件,因此触发器操作的第一行将master中的所有数据插入Encryption然后,插入第二行会尝试执行相同的操作,从而导致您看到的重复输入错误。您可能想要这样的东西,它只会插入与新AccountId关联的数据:

CREATE DEFINER = CURRENT_USER TRIGGER `myDatabase`.`master_AFTER_INSERT` AFTER INSERT ON `master` FOR EACH ROW
INSERT INTO Encryption (master_AccountID, master_AccountName, TeamOps_DL, AccountKeys, KeyARNs) 
SELECT AccountID, AccountName, TeamOps_DL, AccountKeys, KeyARNs 
FROM master
WHERE AccountId = NEW.AccountID;

相关内容

最新更新