Teradata创建防止DROP TABLE的触发器never_drop的正确语法
Teradata 阻止指定表被删除的触发器实现语法
你可以通过创建前置DDL触发器实现DROP操作拦截,满足所有要求的正确语法如下:
CREATE TRIGGER comp.never_drop BEFORE DROP TABLE ON comp.maagar FOR EACH STATEMENT BEGIN ATOMIC -- 写入操作日志,可根据实际日志表结构调整字段 INSERT INTO comp.ddl_operate_log(create_time, message) VALUES (CURRENT_TIMESTAMP, '尝试删除受保护表comp.maagar,操作已被拦截回滚'); -- 执行回滚终止删除操作 ROLLBACK; END;
关键说明
- 上述代码中
comp.ddl_operate_log是提前创建的DDL操作日志表,如果你需要对接系统自带日志,替换为对应日志写入逻辑即可 - 触发器创建完成后,所有针对
comp.maagar的DROP TABLE操作都会被拦截,事务自动回滚,同时留下操作记录 - 创建该触发器需要提前获取comp schema的CREATE TRIGGER权限,以及DDL事件触发器对应的系统权限
- 若后续需要正常删除该表,需要先执行
DROP TRIGGER comp.never_drop移除触发器
内容的提问来源于stack exchange,提问作者Eyal Marom
相关产品推荐
相关产品推荐

