Sign-up....

急!!!如何更改Oralce主键记录???

Oracle数据库中要更改主从表中的Record_ID 关键字字段的记录怎么办?

比如主表、从表Record字段记录为0020000001,现在两个表都要改为0015000001?

而且记录有上千条呀!

我现在知道土办法,就是先将两个表的记录导出文本文件,查找替换,再删除表中所有记录后把修改后的记录导进来。

[157 byte] By [msdn] at [2007-8-14 15:34:44]
# 1 Re: 急!!!如何更改Oralce主键记录???

UPDATE tbl

SET record='0015000001'

WHERE record='0020000001'

welyngj at 2004-8-9 22:20:49 >
# 2 Re: 急!!!如何更改Oralce主键记录???

表达不明确,把你的表结构贴出来,要更改哪些字段?

rolandzhang at 2004-8-9 22:28:21 >
# 3 Re: 急!!!如何更改Oralce主键记录???

Re: welyngj(不做老实人)

这是更新主键的记录值,那样update是不行的,因为有关联关系。

Re: rolandzhang()

比如:设备表tb_shebei和厂家表tb_changjia,tb_shebei的主键shebei_id是tb_changjia中shebei_bianhao的外键,原来Id的编码规则是0020000001开始递增1的,现在要改为0015000001开始递增1,已经有很多设备记录了。我是想寻求高级一点update方法,现在我已经把数据表记录改好了。

谢谢关注!

jhlcf at 2004-8-9 22:57:07 >
# 4 Re: 急!!!如何更改Oralce主键记录???

这是主键.有没有外键关联啊?如果有的话更新了以后都失效了. :)

dinya2003 at 2004-8-10 9:17:27 >
# 5 Re: 急!!!如何更改Oralce主键记录???

在sql/plus里,执行更新,两个表一起,然后在commit;

应该可以吧。

qiaozhiwei at 2004-8-10 9:47:13 >
# 6 Re: 急!!!如何更改Oralce主键记录???

先Disable外键约束,修改完以后在Enable

gzh_seagull at 2004-8-10 11:03:13 >
# 7 Re: 急!!!如何更改Oralce主键记录???

创建表外键时指定on update cascade

ks9960 at 2004-8-10 14:04:25 >
# 8 Re: 急!!!如何更改Oralce主键记录???

同意ks9960(snk)

daihaidong at 2004-8-10 14:28:26 >
# 9 Re: 急!!!如何更改Oralce主键记录???

sorry,oracle9i不支持on update,用google搜索10g的新特性也没有找到相关信息。

ks9960 at 2004-8-10 15:31:54 >
# 10 Re: 急!!!如何更改Oralce主键记录???

主键是不能重复的

smallcrocodile at 2004-8-10 17:28:15 >

Oracle

All Classified