有这样一个需求,有一个权限系统表:ustest_zh_cn.tb_res 但是这里面只有中文的数据,也就是LANGUAGE_ID='zh_CN', 需要以中文为模板,复制19份,把LANGUAGE_ID改成各自对应的19中语言,把主键TB_RES_ID和PARENT_ID同时修改一样的值,再插入到ustest_zh_cn.tb_res表中。

具体操作:
create table ustest_zh_cn.tb_res_add as select * from ustest_zh_cn.tb_res;
update ustest_zh_cn.tb_res_add set LANGUAGE_ID='pl_PL';
update ustest_zh_cn.tb_res_add set TB_RES_ID=TB_RES_ID+100011;
update ustest_zh_cn.tb_res_add set PARENT_ID=PARENT_ID+100011;
commit;
insert into ustest_zh_cn.tb_res select * from ustest_zh_cn.tb_res_add ;
commit;
并且 ustest_zh_cn.tb_res 有主键TB_RES_ID,
可是操作完成之后,主键有重复值,这是怎么回事呢?
原来是我用system用户登陆plsql/developer 工具, 然后右击-edit 这样添加的ustest_zh_cn.tb_res表的主键,这样添加上的主键是有问题的,
如下,这样建立的主键他是属于system用户的,并且你用ustest_zh_cn 是看不到的,最糟糕的是他不起作用,也就是说可以重复,

小结主键,通过plsql /developer 建立主键的时候,最好是自己用户建立自己的主键,至于索引 ,可以用system这样拥有dba权限的用户去操作,因为建立索引的时候可以指定owner, 最好不要用DBA权限的用户去建立小权限用户的主键。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29654823/viewspace-1979585/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29654823/viewspace-1979585/
本文介绍了一种在数据库中复制并修改记录的方法,用于创建多语言版本的数据。同时,文章详细解释了如何避免主键冲突的问题,特别是当使用不同用户权限进行操作时。
254

被折叠的 条评论
为什么被折叠?



