oracle数据表中有多个主键

oracle数据表中有多个主键,第1张

主键冲突--一个表可以有两个主键的作用&表中已有主键新增一个主键语句

一个表可以有两个主键的作用:

primary key for table xs ' is not unique:主键冲突

首先,那两个字段都变成了主键,这话是不确切的

严格的说因为是你选择的那两个字段共同构成了主键,也就是 "学生编号+课程编号 "

的组合是一个主键,这个组合不能够重复,不能够同时为空, 而不是 "学生编号 " !

在Oracle数据库中,我们知道创建主键约束的时候,会自动创建唯一索引,靠着唯一索引,保证数据的唯一,删除主键约束时,会自动删除对应的唯一索引。但是最近碰到了个奇怪的问题,同事说测试环境中删除一张表的主键约束,发现约束删了,但唯一索引还在,难道有什么隐藏的问题

Oracle11204,创建测试表,然后创建主键,自动生成同名的索引,

但是现象在这摆着的,有果必有因,看下MOS,是不是有类似的案例出现过,果然,3706331这篇文章介绍的和我们碰到的很像,使用ALTER TABLE删除主键约束的时候不能删除隐含的索引,但是请注意,有个前提,就是待删除主键约束的表是通过导入执行的,并不是我们自己手工创建的,而且文章 明确说了如果表是自行创建的,不是导入进来的,删除主键约束的时候会连带删除主键索引,这个问题来自于一个未公布的bug,3894962,通过导入 *** 作,主键索引并未依赖于主键约束,因此当删除主键约束的时候,不会自动删除对应的主键(/唯一)索引,值得一提的是,9i中并无此现象,从1010之 后的版本才出现此问题,解决方案就是删除索引,一种方式是drop constraint的时候带上drop index,一次性执行,另一种就是drop index删除索引

主键、外键都属于oracle约束可以查询

select from dba_constraints;

索引可以查询

select from dba_indexes;

这个是因为每个表的主键都具有唯一性,也就是说如果之前主键中已经有这个数值了,那么在此插入的时候就会报这个错误,实际上是保护数据的唯一性的一种做法。

举例(字段名是主键):

insert into 表名(字段名) values( 1111);

以上语句正常插入。

commit;

insert into 表名(字段名) values( 1111);

此时就会报违反唯一性约束。

oracle里怎么先复制粘贴再重新生成主键?首先在oracle 数据库 中,如何进行带有主键的行复制,复制时候创建一个新主键那么我们可以将主键先设置成增长 他生成的时候 会是 1,2,3,4 以此类推最后可以得出结论oracl复制粘贴重新生成主键

以上就是关于oracle数据表中有多个主键全部的内容,包括:oracle数据表中有多个主键、oracle主键删除了但是user_index表还有、在Linux环境下,oracle数据库中查询表主键、外键及索引的命令是什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9411829.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存