由于表中有两条重复的记录,我用delete from main where id = 1 limit 1;
试图删除其中的一条,main中的还剩下一条,这个结果没问题,
但相应的副标slave中却一条都没有了,好像直接执行了 delete from main where id = 1
而没有执行limit 1子句。我的触发器就是写成了:
delete from slave where id = old.id;
确实没有添加limit 1, 但是触发器是不是不会自动抄下后边的limit 1并执行呢?
试图删除其中的一条,main中的还剩下一条,这个结果没问题,
但相应的副标slave中却一条都没有了,好像直接执行了 delete from main where id = 1
而没有执行limit 1子句。我的触发器就是写成了:
delete from slave where id = old.id;
确实没有添加limit 1, 但是触发器是不是不会自动抄下后边的limit 1并执行呢?
解决方案 »
- 按时间段查询某段时间新曾的数据
- 求助高手,昨天晚上公司断电,服务器关,今天早上启动MYSQL服务直接报错,(贴上错误信息)
- 在线等,关于mysql语句转sqlite语句的问题
- cause: 连线被拒,请检查主机名称和埠号,并确定 postmaster 可以接受 TCP/IP 连线。
- 字符串替换
- 求一个SQL,对你来说很简单的,thanks
- mysql -u root -p<bookmarks.sql 这么用啊
- 请问有什么会影响MYSQL的排序
- 求助:MYSQL 中的replace函数怎么才能不区分大小写?
- MySQL 高难度需求语句如何写?
- mysql 枚举类型中的汉字问题
- 大家帮忙想个sql语句
不会。触发器语句和你激活触发器的语句之间是没有这样的关联关系的。你可以看看日志里面记录的SQL语句,带-VV 参数,就能够看到完整的命令了。所以你的从全部被删除了,是正确的。
delete from slave where id = old.id limit 1;
这样就不会了。
-VV的运行具体是哪个命令呢?哪个日志文件?还有,如果像以下这样设置,碰上delete from slave where id = old.id操作又该如何呢?
二者不能兼得吗?
这样查看二进制日志的内容。还有,如果像以下这样设置,碰上delete from slave where id = old.id操作又该如何呢?
在触发器里select count(*) into @A from slave where id=old.id
if @A=1 then
delete from slave where id = old.id;
else
delete from slave where id = old.id limit 1;
end if;