sql中规定每个表都应该有一个主键,并且每个表只能有一个主键,即PRIMARY KEY 约束

2025-03-21 14:59:27
推荐回答(4个)
回答1:

对于一个字段设置的主键,每个表确实只能有一个主键,但是可以设置多个字段组成的主键,即联合主键,示例如下,

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',

回答2:

sql中规定每个表都应该有一个主键 --这是对的

并且每个表只能有一个主键,即PRIMARY KEY 约束 --这也是对的

如果需要命名 PRIMARY KEY 约束,以及为多个列定义 PRIMARY KEY 约束,请使用下面的 SQL 语法,

PRIMARY KEY 约束 ,通俗讲就是主键,这一段的意思是,要创建一个主键。
这里的关键是,主键不一定是在一个列上的。比如一个表有10列,可以在第一, 第二 两个列上,创建主键。这种的主键叫做联合主键。

回答3:

你说的不就是复合主键吗?

给你个简单的例子吧,,,


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

这样的数据插入就会提示主键重复

回答4:

一个表应该有一个主键,但也可以由多个主键,可以把多个列定义字段定义成主键
你可以表述更清楚点,你用的语句和问题给贴一下