Oracle数据库中要更改主从表中的Record_ID 关键字字段的记录怎么办?
比如主表、从表Record字段记录为0020000001,现在两个表都要改为0015000001?
而且记录有上千条呀!我现在知道土办法,就是先将两个表的记录导出文本文件,查找替换,再删除表中所有记录后把修改后的记录导进来。
比如主表、从表Record字段记录为0020000001,现在两个表都要改为0015000001?
而且记录有上千条呀!我现在知道土办法,就是先将两个表的记录导出文本文件,查找替换,再删除表中所有记录后把修改后的记录导进来。
解决方案 »
- 大家一般备份还原oracle数据,使用那种方法?
- oracle (10g) enterprise manager异常退出问题
- oracle物化视图建立时报错ORA-06512
- 求一sql,谢谢各位
- 在数据库处于mount状态下如何查询当前数据库下有哪些用户
- 求一个sql
- database 跟 instance 怎么对应起来(RAC)
- where lower(last_name)='ross'|| lower(last_name)='murray';大家帮忙看看这个语句有什么错误?
- 初级菜鸟问些小问题 oracle9i
- 请各位大侠帮忙:怎样用sql 把一个表空间中的表复制到另一个表空间?
- oracle9i主定义站点更新问题
- oracle9i中怎么实时查看在数据库上执行的所有SQL语句?就像sql server事件探查器.
SET record='0015000001'
WHERE record='0020000001'
这是更新主键的记录值,那样update是不行的,因为有关联关系。Re: rolandzhang()
比如:设备表tb_shebei和厂家表tb_changjia,tb_shebei的主键shebei_id是tb_changjia中shebei_bianhao的外键,原来Id的编码规则是0020000001开始递增1的,现在要改为0015000001开始递增1,已经有很多设备记录了。我是想寻求高级一点update方法,现在我已经把数据表记录改好了。谢谢关注!
应该可以吧。
create table a (col number(5,0),
time date);
create table b (col number(5,0);
insert into a values(2,sysdate);
alter table b add constraint b_FK_a foreign key(col) references a(col) on delete cascade deferrable initially immediate;
insert into b values(2);
这时如果
SQL> update a set col=3 where col=2;
update a set col=3 where col=2
*
ERROR at line 1:
ORA-02292: integrity constraint (SCOTT.B_FK_A) violated - child record found
你可以这样设置
set constraint b_fk_a deferred;Constraint set.SQL> update a set col=3 where col=2;1 row updated.SQL> update b set col=3 where col=2;1 row updated.SQL> commit;Commit complete.SQL> select * from a; COL TIME
---------- ---------
3 10-AUG-04SQL> select * from b; COL
----------
3这样就可以update了。
在你commit后,这个constraint会自动恢复成immediate模式,你也可以用
set constraint b_fk_a immediate手动恢复