我想在用户想要更新视图时更新两个表。
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;
我想更新僵尸程序Movie关系和Rating关系,但是,我还没有经历过能够更新多个表的触发器。有人可以说明我如何克服这个问题吗?
更新:这是一个测试我的触发器脚本技能的练习。要求是我必须在一个触发器查询中编写它。 @CL。我尝试在开始和结束关键字之间放置两个更新语句,但是,它说有一个语法错误....是否有一种特定的方法在开始和结束之间放置两个更新?
答案 0 :(得分:2)
单个UPDATE
语句只能修改一个表。
使用两个UPDATE
s:
UPDATE Movie SET mID = NEW.mID WHERE mID = OLD.mID;
UPDATE Rating SET mID = NEW.mID WHERE mID = OLD.mID;
答案 1 :(得分: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