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

时间:2014-10-14 09:39:19

标签: sql sql-server

create table my_table (
     column_a integer not null,
     column_b integer not null,
     column_c varchar(50),
     primary key (column_a, column_b)
);

- 这个错误

Msg 8110, Level 16, State 0, Line 1 Cannot add multiple PRIMARY KEY constraints to table '#my_table'.

create table my_table (
     column_a integer primary key not null,
     column_b integer primary key not null,
     column_c varchar(50),
    );

上述2个代码之间有什么区别?第一个正确执行但后者没有? 但两者都在创建多个主键?

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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