数据库级触发器

tvmytwxo  于 2021-07-29  发布在  Java
关注(0)|答案(1)|浏览(294)
CREATE TRIGGER safety_drop
ON DATABASE 
FOR DROP_TABLE
AS
BEGIN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'DELETING NOT ALLOWED';
ROLLBACK;
END

错误

1064-您的sql语法有错误;检查与您的mariadb服务器版本相对应的手册,以了解在第2行使用near'on database for drop\u table as begin signal sqlstate'45000'set message\u tex'的正确语法

q3qa4bjr

q3qa4bjr1#

mariadb只是不支持“数据库级”触发器。引用文件(重点补充):
触发器,顾名思义,是一组语句,当表上发生事件时,这些语句运行或被触发。[…]事件可以是 INSERT ,安 UPDATE 或者 DELETE .
所以基本上,这适用于dml操作(更改数据的语句),而不是ddl(更改结构的操作)。
至于您所要求的内容,使用权限和角色来防止用户删除数据库中的任何表似乎是一种更合适的方法。

相关问题