sql中规定每个表都应该有一个主键,并且每个表只能有一个主键,即PRIMARY KEY 约束
对于一个字段设置的主键,每个表确实只能有一个主键,但是可以设置多个字段组成的主键,即联合主键,示例如下,
1、创建测试表,create table test_pkey(companyid number, userid number, username varchar2(200));
2、创建主键语句,
-- Create/Recreate primary, unique and foreign key constraints
alter table TEST_PKEY
add constraint pk1 primary key (COMPANYID);
alter table TEST_PKEY
add constraint pk2 primary key (USERID);
这时候会发现sql报错,信息如下:ORA-02260: 表只能具有一个主键,即,每个表只有一个主键,
3、修改
alter table TEST_PKEY
add constraint pk2 primary key (COMPANYID, USERID);
4、重新查看该表的主键,是由多个字段组成,
select a.constraint_name, a.column_name
from user_cons_columns a, user_constraints b
where a.constraint_name = b.constraint_name
and b.constraint_type = 'P'
and a.table_name = 'TEST_PKEY',
并且每个表只能有一个主键,即PRIMARY KEY 约束 --这也是对的
如果需要命名 PRIMARY KEY 约束,以及为多个列定义 PRIMARY KEY 约束,请使用下面的 SQL 语法,
PRIMARY KEY 约束 ,通俗讲就是主键,这一段的意思是,要创建一个主键。
这里的关键是,主键不一定是在一个列上的。比如一个表有10列,可以在第一, 第二 两个列上,创建主键。这种的主键叫做联合主键。
你说的不就是复合主键吗?
给你个简单的例子吧,,,
create table test(id int,cid int,
pRIMARY KEY(id,cid))
意思,就是id和cid2个合起来不能重复
例如:
1、3
1、2
或者
2、1
3、1
这样的数据是可以的
但是
1、2
1、2
这样的数据插入就会提示主键重复
你可以表述更清楚点,你用的语句和问题给贴一下