使用触发器更新多个表

时间:2013-09-30 02:37:09

标签: sql database sqlite triggers

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

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。我尝试在开始和结束关键字之间放置两个更新语句,但是,它说有一个语法错误....是否有一种特定的方法在开始和结束之间放置两个更新?

2 个答案:

答案 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
相关问题