首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >删除Oracle中的分区触发器

删除Oracle中的分区触发器
EN

Stack Overflow用户
提问于 2018-11-02 19:32:31
回答 1查看 235关注 0票数 1

如何在Oracle中创建drop partition DDL触发器。例如,假设我们创建DDL触发器来捕获或防止有人在我们的模式中触发drop TABLE/INDEX或naything。在架构上创建或替换触发器my_trg After DROP

我们可以对drop分区做同样的事情吗?

我们是否可以存储此特定用户删除此分区的详细信息..like。

我们是否可以通过触发器或捕获删除分区的用户来防止用户删除分区

EN

回答 1

Stack Overflow用户

发布于 2018-11-02 22:09:09

触发器可能是这个:

代码语言:javascript
运行
复制
CREATE OR REPLACE TRIGGER LOG_ALTER
    BEFORE ALTER ON SCHEMA
    WHEN (ora_dict_obj_type = 'TABLE' AND ora_dict_obj_name = 'YOUR_TABLE')
DECLARE

    sqlcmd T_USER_LOGGING.ULOG_SQL_CMD%TYPE;
    sql_text ora_name_list_t;
    n NUMBER;

BEGIN

    n := ora_sql_txt(sql_text);
    IF n IS NOT NULL THEN
        FOR i IN 1..n LOOP
            sqlcmd := sqlcmd || sql_text(i);
        END LOOP;
    END IF;

    IF REGEXP_LIKE(sqlcmd, 'DROP\s+PARTITION', 'i') THEN
        RAISE_APPLICATION_ERROR(-20010, 'User '||ora_login_user||' must not drop partition from table YOUR_TABLE');
    END IF;     

END;
/

但请注意,具有ADMINISTER DATABASE TRIGGER系统权限的用户可以删除分区,因为他忽略了RAISE_APPLICATION_ERROR

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53117812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档