Oracle中如何定义多主键?

1、Oracle中如何定义多主键?例如;一张“员工表”,身份证号和员工号都是唯一的,可以在创建表的时候同时加上PRIMARY_KEY吗?2、如果另外又有一张“员工表”,没... 1、Oracle中如何定义多主键?
例如;一张“员工表”,身份证号 和 员工号 都是唯一的,可以在创建表的时候同时加上 PRIMARY_KEY 吗?

2、如果另外又有一张“员工表”,没有身份证号 和 员工号 这些是可以唯一标识的属性,只有 姓名(有重复) 和 出生日期(有重复),但姓名+出生日期(没重复),如何能够将 姓名+出生日期 作为一个属性设为主键?
展开
 我来答
ThinkIBM
2010-03-29 · TA获得超过5289个赞
知道大有可为答主
回答量:3263
采纳率:0%
帮助的人:5479万
展开全部
1、这种情况可以随便设置哪个字段为主键,另外一个字段建个唯一索引就可以了,而不能把2个字段都设置为主键,比如:
alter table 表名 add constraint PK_1 primary key (身份证号字段) using index;--建主键
create unique index IDX_1 on 表名 (员工号字段);--建唯一索引

这样,创建的表里的身份证号 和 员工号,都不可能重复,避免垃圾数据

2、这种就只能把2个字段都设置为主键了,如:
alter table 表名 add constraint PK_2 primary key (姓名字段, 出生日期字段) using index
净利率
2010-03-29 · TA获得超过830个赞
知道小有建树答主
回答量:345
采纳率:0%
帮助的人:251万
展开全部
第一个问题:一个表只能有一个主键
第二个问题:你可以不用设置主键,设置唯一索引啊,只要将 姓名+出生日期 设置为唯一索引,这样在你新增记录的时候一样可以实现:如果 姓名+出生日期
报错。。。。即实现主键的功能啊

具体语法如下:
CREATE UNIQUE INDEX 索引名称 ON 表名
(姓名, 出生日期)

这个方法一定OK
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
linuxocp
推荐于2017-11-23 · TA获得超过267个赞
知道答主
回答量:82
采纳率:0%
帮助的人:120万
展开全部
你说的是单一主键和联合主键的问题,一个表只能有一个主键:
基于一列的主键:
alter table test add constraint PK_TEST primary key(ename);

基于多列的联合主键:

alter table test add constraint PK_TEST primary key(ename,birthday);
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
抽屉83
2010-03-29 · TA获得超过171个赞
知道小有建树答主
回答量:326
采纳率:0%
帮助的人:164万
展开全部
PK就只能有一个,其它的建立唯一性约束即可!PK不是用来保证唯一的,是用来关联其它表用的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
A天山刀客
2010-03-29 · TA获得超过436个赞
知道小有建树答主
回答量:295
采纳率:0%
帮助的人:226万
展开全部
1 . create table abc(id number primary key,name varchar2(20)....)

2. crete table abc (name varchar2(20),birth date, .....)
alter table abc add primary key (name,birth);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式