1

当用户想要更新视图时,我想更新两个表。

create trigger update_mID
instead of update of mID on LateRating
for each row
begin
    update Movie, Rating
    set mID = new.mID
    where mID = Old.mID;
end;

我想更新机器人电影关系和评级关系,但是,我还没有遇到能够更新多个表的触发器。有人可以指出我如何克服这个问题吗?

更新:这是一个测试我的触发脚本技能的练习。要求是我必须在一个触发器查询中编写它。@CL。我尝试在 begin 和 end 关键字之间放置两个更新语句,但是,它说存在语法错误.... 是否有特定的方法可以在 begin 和 end 之间放置两个更新?

4

2 回答 2

2

一条UPDATE语句只能修改一个表。

使用两个UPDATEs:

UPDATE Movie  SET mID = NEW.mID WHERE mID = OLD.mID;
UPDATE Rating SET mID = NEW.mID WHERE mID = OLD.mID;
于 2013-09-30T06:40:56.817 回答
1

您可以执行REPLACE INTO如下声明:

DROP TRIGGER IF EXISTS `update_mID`;CREATE DEFINER=`USER`@`localhost` TRIGGER 
`update_mID` AFTER UPDATE ON `tblname` FOR EACH ROW REPLACE INTO 
USER_DATABASENAME.TBLNAME (COLUMNNAME1,COLUMNNAME1) SELECT COLUMNNAME1,COLUMNNAME1 
FROM USER_DBNAME.TBLNAME

这甚至可以是两个独立的数据库,如下例所示:

DROP TRIGGER IF EXISTS `update_mID`;CREATE DEFINER=`USER`@`localhost` TRIGGER 
`update_mID` AFTER UPDATE ON `tblname from DB1` FOR EACH ROW REPLACE INTO 
USER_DATABASENAME1.TBLNAMEDB2 (COLUMNNAME1,COLUMNNAME1) SELECT 
COLUMNNAME1,COLUMNNAME1 FROM USER_DBNAME2.TBLNAME
于 2018-10-16T18:51:00.003 回答