您可以编写脚本来创建动态 SQL 语句,但我认为这确实需要大量工作。我认为您会更快地找到具有“ParticipantId”列的所有表,其中包含类似这样的内容
select * from all_tab_columns where column_name = 'PARTICIPANTID'
然后做一些快速编辑/替换/其他类型的脚本操作来生成自己的删除语句。
关于约束。这是相似的。获得所有约束
SELECT owner, table_name, constraint_name
FROM dba_constraints
where table_name in (select table_name from all_tab_columns where column_name = 'PARTICIPANTID')
您可以使用打开和关闭约束
ALTER TABLE <table name> ENABLE/DISABLE constraint <constraint name>;
也许这你可以用一个循环来做。从这个页面借
begin
for i in
(select constraint_name, table_name from user_constraints where table_name in (select table_name from all_tab_columns where column_name = 'PARTICIPANTID')
) LOOP
execute immediate 'alter table '||i.table_name||' disable constraint '||i.constraint_name||'';
end loop;
end;
我不确定您的级联删除操作,但以上内容让您大致了解了删除操作的样子:
begin
for i in
(select constraint_name, table_name from user_constraints where table_name in (select table_name from all_tab_columns where column_name = 'PARTICIPANTID')
) LOOP
execute immediate 'delete from '||i.table_name||' where participantid = ''1'' ';
end loop;
end;
希望能帮助到你。