表1 T1(id title) 表2 T2(id tid title)主外键关系为:T2.tid=T1.id现在想在T1上建立个触发器: 要求在T1增加一行记录时,T2表也相应增加一行 当然 要求T2增加的记录必须满足:T2.tid=T1.id T2.title=T1.title
解决方案 »
- mysql中的关键字key是什么意思??
- 怎么查不重复的最新记录?
- mysql中如何查询指定日期是否在一个日期区间中。
- mysql -u root -h 127.0.0.1 为何会首先解析成 mysql -uroot -hlocalhost 呢?
- mysql数据库服务器上线前的疑问
- 一个游标问题
- 请教:如何写一个自动建库并导入大量oracle数据的mysql数据库脚本?
- 如何将Mysql表结构导出到一个SQL脚本中?
- mysql5.7.11安装出现错误,请看抓屏和log文件。
- mysql中innodb和MyISAM引擎差距在哪里,分别适合在什么场景使用
- 如何获取select count(*) from bable 的值
- mysql 4.0乱码问题急求解决办法
for each row
insert into t2(tid,title) values (new.id,new.title);
我就这样写的 但是不行 编译触发器不报错 但是T1插入记录时 报错Can't update table 'T1' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
for each row begin
insert into t2(tid,title) values (new.id,new.title);
update t1 set `number` =`number` +1 where id=new.tid;
end删除触发器就建立在t2上即可,这个单向的,不会死循环。
for each row begin
insert into t2(tid,title) values (new.id,new.title);
update t1 set `number` =`number` +1 where id=new.tid;
end这个语句应该不会被通过啊。
思路好像对 ,编译触发器 没错 ,但是T1表插入还是报错:
Can't update table 'T1' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
看一下你的触发实际内容是什么。
TRIGGER `T1_ai` AFTER INSERT ON `T1`
FOR EACH ROW BEGIN
insert into T2(tid) values(NEW.id);
update T1 set NEW.number=NEW.number+1 where NEW.id=T2.tid;
END;$$DELIMITER ;
TRIGGER `T1_ai` AFTER INSERT ON `T1`
FOR EACH ROW BEGIN
insert into T2(tid) values(NEW.id);
update T1 set NEW.number=NEW.number+1 where NEW.id=T2.tid;
END;$$DELIMITER ;
你这一句导致触发器循环,递归下去了。你需要重新设计你的业务逻辑。