2024-09-04
求ORACLE触发器设计,实现修改列为非空之前,删除对应表内所有数据。
背景:环境为ORACLE测试环境,版本11.204,牵涉到OGG的同步,上游环境研发手动修改列为非空,由于下游表对应列存在空值,同步过来的DDL语句会执行失败,进一步导致同步进程ABENED。
主要目标 想建一个触发器,当检测到要执行修改列为非空时,提前删除表内所有内容,来防止DDL执行失败,同步ABENED。
设计环境为 oracle 11g 11.204
模拟表:create test001 as select * from dba_tables;
update test001 set IOT_TYPE='' where 1=1;
模拟语句情况1:alter table test001 modify IOT_TYPE DEFAULT 0 NOT NULL;
模拟语句情况2:alter table test001 modify IOT_TYPE NOT NULL;
此时由于test001表的IOT_TYPE列存在空值,会导致该alter执行不成功。
故想要增加一个触发器,实现当检测到类似格式的DDL语句执行时,在执行DDL语句前先将这张表清空。
期望触发器实现效果:delete from test001 where IOT_TYPE is null; (最优)
delete from test001 where 1=1; (次选,也可以)
我来答
添加附件
收藏
分享
问题补充
5条回答
默认
最新
回答交流
Markdown
请输入正文
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
