如何在创建表时设置主键的名称?
例如,我在这里尝试创建名为"id"的主键,但这是无效的SQL.你能告诉我这样做的正确方法吗?
CREATE TABLE IF NOT EXISTS `default_test`
(
`default_test`.`id` SMALLINT NOT NULL AUTO_INCREMENT PRIMARY KEY `id`,
`default_test`.`name` LONGTEXT NOT NULL
)
Run Code Online (Sandbox Code Playgroud)
我想指定主键的名称 - 而不是默认名称"PRIMARY"我希望它被称为"id"或者可能是"primary_id",所以如果我以后要运行SHOW INDEXES FROM default_test ,Key_name将是我指定的东西.
Jas*_*ary 16
或者更广泛地支持:
CREATE TABLE IF NOT EXISTS `default_test` (
`default_test`.`id` SMALLINT NOT NULL AUTO_INCREMENT,
`default_test`.`name` LONGTEXT NOT NULL,
PRIMARY KEY (`id`)
)
Run Code Online (Sandbox Code Playgroud)
根据说明,如果要指定索引名称,可以使用以下内容替换上面的最后一个定义:
CONSTRAINT `pk_id` PRIMARY KEY (`id`)
Run Code Online (Sandbox Code Playgroud)
http://dev.mysql.com/doc/refman/5.1/en/create-table.html
[...]在MySQL中,PRIMARY KEY的名称是PRIMARY.[...]
CREATE TABLE IF NOT EXISTS `default_test` (
`default_test`.`id` SMALLINT NOT NULL AUTO_INCREMENT,
`default_test`.`name` LONGTEXT NOT NULL,
PRIMARY KEY (`id`)
)
Run Code Online (Sandbox Code Playgroud)
您不必再次指定列名,因为您已经将其指定为当前字段定义的一部分 - 只需说PRIMARY KEY。
CREATE TABLE IF NOT EXISTS `default_test` (
`id` SMALLINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`name` LONGTEXT NOT NULL
)
Run Code Online (Sandbox Code Playgroud)
或者,您可以稍后单独指定:
CREATE TABLE IF NOT EXISTS `default_test` (
`id` SMALLINT NOT NULL AUTO_INCREMENT,
`name` LONGTEXT NOT NULL,
PRIMARY KEY(`id`)
)
Run Code Online (Sandbox Code Playgroud)