表中某一字段值原值"123-ABC”, 但要求修改为"123ABC“,数据库中很多表有关联此字段值
二 修改方式
1 首先清除主键约束 select 'ALTER TABLE ' || consc.table_name || ' disable constraint ' || consc.constraint_name from dba_cons_columns consc, (select tb.owner, tb.table_name, cols.column_name from dba_tables tb, dba_tab_cols cols where tb.OWNER = 'ORCL' and cols.OWNER = tb.OWNER and tb.table_name = cols.table_name and cols.column_name in ('XLID', 'TQID')) tbs where consc.table_name = tbs.table_name and consc.owner = 'ORCL' and consc.column_name in ('XLID', 'TQID') order by consc.constraint_name
2 其次生成更新语句 select tb.owner, ' update ' || tb.table_name || ' set ' || cols.column_name || '= substr(' || cols.column_name || ',0,instr(' || cols.column_name || ',''-'')-1)||substr(' || cols.column_name || ',instr(' || cols.column_name || ',''-'')+1,length(' || cols.column_name || ')) where instr(' || cols.column_name || ',''-'')>0', cols.column_name from dba_tables tb, dba_tab_cols cols where tb.OWNER = 'ORCL' and cols.OWNER = tb.OWNER and tb.table_name = cols.table_name and cols.column_name in ('XLID', 'TQID')
3 恢复主键约束 select 'ALTER TABLE ' || consc.table_name || ' able constraint ' || consc.constraint_name from dba_cons_columns consc, (select tb.owner, tb.table_name, cols.column_name from dba_tables tb, dba_tab_cols cols where tb.OWNER = 'ORCL' and cols.OWNER = tb.OWNER and tb.table_name = cols.table_name and cols.column_name in ('XLID', 'TQID')) tbs where consc.table_name = tbs.table_name and consc.owner = 'ORCL' and consc.column_name in ('XLID', 'TQID') order by consc.constraint_name