ITPub博客

首页 > 数据库 > Oracle > 记一次用DBA用户建立小权限用户表主键的错误

记一次用DBA用户建立小权限用户表主键的错误

原创 Oracle 作者:贺子_DBA时代 时间:2016-01-20 14:48:54 0 删除 编辑
有这样一个需求,有一个权限系统表: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/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
记录工作中遇到的问题,积少成多,坚持就是胜利,工作经历:曾就职于国美、中国采购与招标网、目前就职于一家正规消费金融公司负责Oracle和MySQL、mongodb以及sqlserver和hadoop相关运维和优化的工作

注册时间:2014-05-12

  • 博文量
    242
  • 访问量
    1676898