【踩坑日常】Explicit or implicit commit is not allowed in stored function or trigger.

  • Post author:
  • Post category:其他


最近在做数据库实验,遇到这个问题的题目为:设置一个触发器,该触发器仅允许“dbo”用户可以删除学生表内数据。

网上有很多使用sql server的答案,但是没有MySQL的。是因为写不出来。

隐式提交的定义:

又名自动提交,即无需显示执行commit语句,session中的操作被自动提交到数据库的过程。

隐式提交的方式:

1、正常执行完DDL语句。包括create,alter,drop,truncate,rename。

2、正常执行完DCL语句。包括grant,revoke,rollback,commit

3、正常退出数据库管理软件,没有明确发出commit或者rollback。

参考:

数据库基础知识四:显示提交与隐式提交

所以在触发器里是不能用rollback的,同时delete操作也不能NEW.XXX,会报错:There is no NEW row in on DELETE trigger

还是使用sql server吧。



版权声明:本文为Saedi_0101原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。