0

我需要更新与 oracle 数据库中所有表中的特定模式匹配的列。例如,我在所有表中都有此列 *_CID 是主表的外键,女巫有主键 CID

谢谢

4

2 回答 2

1

您可以使用命名约定和查询all_tab_columns

declare
    cursor c is 
        select table_owner , column_name, table_name from all_tab_columns where column_name like '%_CID';
begin 
    for x in c loop
        execute immediate 'update ' || x.table_owner || '.' || x.table_name ||' set ' || x.column_name||' = 0';
    end loop;
end;

如果您有有效的 Fk,您还可all_tab_constraints以为您的主表使用启用了 fetch 的 FK,并获取r_constraint_name.

于 2014-08-28T08:29:36.527 回答
0

我找到了解决问题的方法:

BEGIN  
  FOR x IN (SELECT owner, table_name, column_name FROM all_tab_columns) LOOP   
    EXECUTE IMMEDIATE  'update ' || x.owner || '.' || x.table_name ||' set ' || x.column_name||' = 0 where '||x.column_name||' = 1';
  END LOOP;
END;

谢谢

于 2014-08-28T09:11:14.563 回答