关于mysql触发器更新本表数据的问题

时间:2021-06-10 11:01:59
RT:

假设数据库有2个字段,id和childrenId 现在想写个触发器,在update的触发条件下,如果这条记录的childrenId不为空就更新id=当前数据childrenId字段的那条数据,可是mysql的触发器里面的执行语句不用用update set 也不能用replace to 这类的 先求助大神 你们平时这种业务上是如何处理的 

6 个解决方案

#1


BEFORE UPDATE:
SET NEW.ID=NEW.childrenId

#2


引用 1 楼 WWWWA 的回复:
BEFORE UPDATE:
SET NEW.ID=NEW.childrenId

大神 我是想实现 update tablename t set column = new.value where t.id = new.childrenId 这样的效果哦..不是更新当前这条记录 而是本表的另外一条记录 

#3


引用 2 楼 orange001425 的回复:
Quote: 引用 1 楼 WWWWA 的回复:

BEFORE UPDATE:
SET NEW.ID=NEW.childrenId

大神 我是想实现 update tablename t set column = new.value where t.id = new.childrenId 这样的效果哦..不是更新当前这条记录 而是本表的另外一条记录 

无法做到,MYSQL不允许在TRIGGER中对本表操作, 拆分成2个表 OR 更换数据库

#4


引用 2 楼 orange001425 的回复:
Quote: 引用 1 楼 WWWWA 的回复:

BEFORE UPDATE:
SET NEW.ID=NEW.childrenId

大神 我是想实现 update tablename t set column = new.value where t.id = new.childrenId 这样的效果哦..不是更新当前这条记录 而是本表的另外一条记录 


无法实现,MySQL不像MSSQL有之前表,和之后表这个概念,它只有那条被改变记录的之前状态,和之后状态,因此你唯一的选择就是分表

#5


MYSQL不支持触发器中对本表自身的更新操作。 除非自己修改MYSQL的源代码重新编译。

#6


该回复于2013-10-18 14:05:40被管理员删除

#1


BEFORE UPDATE:
SET NEW.ID=NEW.childrenId

#2


引用 1 楼 WWWWA 的回复:
BEFORE UPDATE:
SET NEW.ID=NEW.childrenId

大神 我是想实现 update tablename t set column = new.value where t.id = new.childrenId 这样的效果哦..不是更新当前这条记录 而是本表的另外一条记录 

#3


引用 2 楼 orange001425 的回复:
Quote: 引用 1 楼 WWWWA 的回复:

BEFORE UPDATE:
SET NEW.ID=NEW.childrenId

大神 我是想实现 update tablename t set column = new.value where t.id = new.childrenId 这样的效果哦..不是更新当前这条记录 而是本表的另外一条记录 

无法做到,MYSQL不允许在TRIGGER中对本表操作, 拆分成2个表 OR 更换数据库

#4


引用 2 楼 orange001425 的回复:
Quote: 引用 1 楼 WWWWA 的回复:

BEFORE UPDATE:
SET NEW.ID=NEW.childrenId

大神 我是想实现 update tablename t set column = new.value where t.id = new.childrenId 这样的效果哦..不是更新当前这条记录 而是本表的另外一条记录 


无法实现,MySQL不像MSSQL有之前表,和之后表这个概念,它只有那条被改变记录的之前状态,和之后状态,因此你唯一的选择就是分表

#5


MYSQL不支持触发器中对本表自身的更新操作。 除非自己修改MYSQL的源代码重新编译。

#6


该回复于2013-10-18 14:05:40被管理员删除