【问题标题】:Mariadb Database level triggerMariadb 数据库级触发器
【发布时间】:2020-11-16 06:06:58
【问题描述】:
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 服务器版本相对应的手册,以了解要使用的正确语法 'ON DATABASE FOR DROP_TABLE AS BEGIN SIGNAL SQLSTATE '45000' SET 附近 第 2 行的 MESSAGE_TEX'

【问题讨论】:

    标签: sql mariadb ddl database-trigger


    【解决方案1】:

    MariaDB 只是不支持“数据库级”触发器。引用the documentation(强调):

    触发器,顾名思义,是一组在在表上发生事件时运行或触发的语句。 [...] 事件可以是INSERTUPDATEDELETE

    所以基本上这适用于 DML 操作(更改数据的语句),而不适用于 DDL(更改结构的操作)。

    至于您的要求,使用权限和角色来防止用户删除数据库中的任何表似乎是一种更相关的方法。

    【讨论】:

    • 实际上我想防止一些表在我向下迁移时被丢弃。就像向下迁移一样,我不想从国家/地区表中删除数据。
    猜你喜欢
    • 2015-09-19
    • 1970-01-01
    • 1970-01-01
    • 2018-08-06
    • 2012-02-23
    • 2017-10-01
    • 2019-11-15
    • 1970-01-01
    • 2018-07-29
    相关资源
    最近更新 更多