MySQL多条件组合操作语句无法正常运行问题咨询
MySQL多操作组合语句运行失败原因分析及解决方案
核心错误原因
- 语法逻辑错误:DELETE、INSERT、UPDATE属于三类独立的DML操作语句,
AND是SQL中仅用于WHERE条件内做逻辑判断的关键字,不能用来拼接不同的独立SQL语句,你的写法会让MySQL将整段内容识别为一条DELETE语句,后续的INSERT、UPDATE内容会被判定为DELETE的WHERE条件的一部分,完全不符合MySQL语法规则,因此直接报错。 - 分隔符使用错误:多句独立SQL同时执行时,需要使用默认语句结束符
;做分隔,不能用逻辑运算符代替分隔符。
修复方案
方案1:无需事务保证,拆分执行
将三个操作拆分为独立语句分别执行即可,代码如下:
-- 删除操作 DELETE FROM tab_1 WHERE lastname = 'Ahmad'; -- 插入操作 INSERT INTO tab_1(firstname, lastname, title) VALUES ('Kashif' , 'Younis' , 'I am working in GSK'); -- 更新操作 UPDATE tab_1 SET firstname = 'Kh. Mohsin' WHERE id= 4;
方案2:需原子性保证,事务包裹
如果要求三个操作要么全部执行成功,要么全部失败回滚,可以使用事务包裹语句:
START TRANSACTION; DELETE FROM tab_1 WHERE lastname = 'Ahmad'; INSERT INTO tab_1(firstname, lastname, title) VALUES ('Kashif' , 'Younis' , 'I am working in GSK'); UPDATE tab_1 SET firstname = 'Kh. Mohsin' WHERE id= 4; -- 所有语句执行无报错则提交 COMMIT; -- 执行中出现报错则执行ROLLBACK回滚所有修改
内容的提问来源于stack exchange,提问作者Adriana henry
相关产品推荐
相关产品推荐

