关于mysql使用delete删除表中不存在记录!

语句:
delete from user where uid =22

  1. uid为22这条记录是不存在的

  2. 这条语句执行了,修改记录为0行

问题是他为什么不报错呢?我表里分明没有这条记录啊!

我的使用场景是使用事物删除一个用户的全部资料,如果其中一个不能删除则回滾!

阅读 17.5k
4 个回答

SQL是一种声明式的编程方式,除非是语法错误、权限不足、在数据库的层面有锁无法执行,否则都不认为是错误。

DELETE语句执行成功后,会返回影响的记录行数,在业务层可以判断是否为零,对下一步做不同的处理。

受影响的行: 0
时间: 0.014s
他只是提示你受影响的行数,不会告诉你到底执行成功没有,除非语法错误,或者其他,才会直接报错。

如果你是这种需求,你为什么不先判断你的 uid 存不存在呢?保证你的 deletewhere 里都是存在的uid

一般 执行delete update语句的时候 都需要先select一下 判断 要操作的数据是否存在 再执行操作

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题