主键语法

Primary Key Syntax

除了视觉上的差异,在列定义中声明主节点或在底部声明主节点之间是否存在功能差异?

例如:

CREATE TABLE tbl_name (
    id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
    content TEXT
) ENGINE=InnoDB CHARSET=utf8;

以上是否不同于:

CREATE TABLE tbl_name (
    id INT UNSIGNED NOT NULL AUTO_INCREMENT,
    content TEXT,
    PRIMARY KEY ( id )
) ENGINE=InnoDB CHARSET=utf8;

两种语法是等价的。

第一个使用 约束。

第二种语法使用 table 约束,当您需要 compound 主键时最有用,它引用多于一列(在这种情况下无法使用列约束)。