Sql 以下查询之间有什么区别?

Sql 以下查询之间有什么区别?,sql,sql-server,Sql,Sql Server,--这是一个错误 Msg 8110,第16级,状态0,第1行 无法将多个主键约束添加到表“#my_table”。 上述两种代码之间有什么区别?第一种代码执行正确,而第二种代码执行不正确? 但是两者都在创建多个主键?第一个是复合键,这意味着两列的组合必须是唯一的。另一方面,您的第二个方法是尝试创建两个独立的主键,这是不可能的 每个表只能有一个主键。这将作为表的唯一标识符,因此它当然会失败。在第一个查询中,多个字段已分配给主键,因为主键中可以有多个字段,但是在第二个查询中,它试图创建多个主键,这是

--这是一个错误

Msg 8110,第16级,状态0,第1行
无法将多个主键约束添加到表“#my_table”。

上述两种代码之间有什么区别?第一种代码执行正确,而第二种代码执行不正确?
但是两者都在创建多个主键?

第一个是复合键,这意味着两列的组合必须是唯一的。另一方面,您的第二个方法是尝试创建两个独立的主键,这是不可能的

每个表只能有一个主键。这将作为表的唯一标识符,因此它当然会失败。

在第一个查询中,多个字段已分配给主键,因为主键中可以有多个字段,但是在第二个查询中,它试图创建多个主键,这是不可能的。

每个表只允许一个主键。您可以选择在第一个查询中执行的复合主键
create table my_table (
     column_a integer not null,
     column_b integer not null,
     column_c varchar(50),
     primary key (column_a, column_b)
);
create table my_table (
     column_a integer primary key not null,
     column_b integer primary key not null,
     column_c varchar(50),
    );