更新与oracle数据库中所有表中的特定模式匹配的列

时间:2014-08-28 08:09:13

标签: sql database oracle oracle-sqldeveloper oracle12c

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

谢谢

2 个答案:

答案 0 :(得分: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的fetch,并获取r_constraint_name的列名称。

答案 1 :(得分: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;

感谢

相关问题