我现在非常困惑,也许你能帮助我更好地理解问题,关于这个问题:一个表是否可以有两个主键?如果是,那么如何实现?如果不行,为什么?
我现在非常困惑,也许你能帮助我更好地理解问题,关于这个问题:一个表是否可以有两个主键?如果是,那么如何实现?如果不行,为什么?
你问是否可以有多个主键字段,肯定可以。你只能有一个主键,但是它可以由尽可能多的列组成,以便唯一地标识行。
在创建表时可以使用类似以下语句:
CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName)
其中P_Td
和LastName
是您表中的列。
如果您认为需要多个主键,那么答案是“实际上不行”。您只能有一个主键。但是,您可以有任意数量的索引,对它们进行唯一约束条件。唯一索引与主键基本上具有相同的功能。
例如:-
CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName)
)
注意: 在上面的例子中只有一个主键 (pk_PersonID
)。然而,pk_PersonID
的值由两列 (P_Id
和 LastName
) 组成。
不行,你不能在一个表中有两个主键,但是你可以有一个复合主键。
因为主键是一行的标识,一行不能有两个ID。
表格只有一个主键,但该主键可以包含多个字段。这意味着在创建表时,当您指定主键时,可以添加更多的列。
例如:
CREATE TABLE table_name ( col1 Datatype , col2 Datatype,col3 Datatype, col4 Datatype, PRIMARY KEY (col1,col2,col3) )
通过这种方式,您可以将主键添加到单个表中。
create table test1 (col1 numeric(10) primary key, col2 numeric(10) primary key
,col3 numeric(10) primary key, col4 numeric(10))
它需要是一个复合键。是的,我们可以将多个列作为主键来解决一些业务需求。主键确保表中的列不会有重复值或空值。
以下是创建具有复合主键的表的SQL语句
CREATE TABLE track(
col1 numeric(10) , col2 numeric(10) ,col3 numeric(10), col4 numeric(10),
PRIMARY KEY (col1,col2,col3)
)
创建表track( col1 numeric(10) , col2 numeric(10) ,col3 numeric(10) , col4 numeric(10), PRIMARY KEY (col1,col2,col3) )
不可以。在表中你不能使用超过一个主键,但你可以使用复合键,它是多个字段的组合。