Oracle中如何定义多主键?
1、Oracle中如何定义多主键?例如;一张“员工表”,身份证号和员工号都是唯一的,可以在创建表的时候同时加上PRIMARY_KEY吗?2、如果另外又有一张“员工表”,没...
1、Oracle中如何定义多主键?
例如;一张“员工表”,身份证号 和 员工号 都是唯一的,可以在创建表的时候同时加上 PRIMARY_KEY 吗?
2、如果另外又有一张“员工表”,没有身份证号 和 员工号 这些是可以唯一标识的属性,只有 姓名(有重复) 和 出生日期(有重复),但姓名+出生日期(没重复),如何能够将 姓名+出生日期 作为一个属性设为主键? 展开
例如;一张“员工表”,身份证号 和 员工号 都是唯一的,可以在创建表的时候同时加上 PRIMARY_KEY 吗?
2、如果另外又有一张“员工表”,没有身份证号 和 员工号 这些是可以唯一标识的属性,只有 姓名(有重复) 和 出生日期(有重复),但姓名+出生日期(没重复),如何能够将 姓名+出生日期 作为一个属性设为主键? 展开
5个回答
展开全部
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
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
展开全部
第一个问题:一个表只能有一个主键
第二个问题:你可以不用设置主键,设置唯一索引啊,只要将 姓名+出生日期 设置为唯一索引,这样在你新增记录的时候一样可以实现:如果 姓名+出生日期
报错。。。。即实现主键的功能啊
具体语法如下:
CREATE UNIQUE INDEX 索引名称 ON 表名
(姓名, 出生日期)
这个方法一定OK
第二个问题:你可以不用设置主键,设置唯一索引啊,只要将 姓名+出生日期 设置为唯一索引,这样在你新增记录的时候一样可以实现:如果 姓名+出生日期
报错。。。。即实现主键的功能啊
具体语法如下:
CREATE UNIQUE INDEX 索引名称 ON 表名
(姓名, 出生日期)
这个方法一定OK
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你说的是单一主键和联合主键的问题,一个表只能有一个主键:
基于一列的主键:
alter table test add constraint PK_TEST primary key(ename);
基于多列的联合主键:
alter table test add constraint PK_TEST primary key(ename,birthday);
基于一列的主键:
alter table test add constraint PK_TEST primary key(ename);
基于多列的联合主键:
alter table test add constraint PK_TEST primary key(ename,birthday);
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
PK就只能有一个,其它的建立唯一性约束即可!PK不是用来保证唯一的,是用来关联其它表用的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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);
2. crete table abc (name varchar2(20),birth date, .....)
alter table abc add primary key (name,birth);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询