1

我目前正在 PHPmyadmin 中的 MySQL 中编写我的第一个触发器。我想要这样当一个表中的项目被更新时,另一个表中的一行被插入。要插入到第二个表中的行的几列由第一个表中正在更新的值确定。

因此,当表 A 发生更新时,我需要在表 B 中插入一个新行。表 B 中的某些列的值将由更新的表 A 行中的值定义,这导致触发器运行.

请在下面找到触发器。

CREATE TRIGGER `before_categoryiteminstance_update` BEFORE UPDATE ON `TABLEA`
FOR EACH ROW BEGIN
declare f_guidcategoryiteminstance int; 
declare f_guidcategory int; 
INSERT INTO TABLEB
SET
f_guidcategoryiteminstance =(SELECT guidcategoryiteminstance FROM inserted),
f_guidcategory =(SELECT guidcategory FROM inserted),
guiduser= f_guidcategory,
guidcategoryinstance= f_guidcategoryiteminstance,
number= number +1,
dateofaction= NOW(); END

触发器可以很好地添加到数据库中。但是,当我尝试更新表 A 上的一行时(这应该会导致触发器运行),我收到一条错误消息,指出插入的表不存在。但是,我的印象是 Inserted 应该是一个包含触发器初始部分结果的逻辑表。仅当触发器在插入而不是更新上运行时才会出现这种情况?如果是这样,更新触发器是否有等价物?

4

0 回答 0