[英]MySQL: Name primary key in CREATE TABLE statement
如何在創建表時設置主鍵的名稱?
例如,我在這里嘗試創建名為“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
)
我想指定主鍵的名稱 - 而不是默認名稱“PRIMARY”我希望它被稱為“id”或者可能是“primary_id”,所以如果我以后要運行SHOW INDEXES FROM default_test ,Key_name將是我指定的東西。
或者更廣泛地支持:
CREATE TABLE IF NOT EXISTS `default_test` (
`default_test`.`id` SMALLINT NOT NULL AUTO_INCREMENT,
`default_test`.`name` LONGTEXT NOT NULL,
PRIMARY KEY (`id`)
)
根據說明,如果要指定索引名稱,可以使用以下內容替換上面的最后一個定義:
CONSTRAINT `pk_id` PRIMARY KEY (`id`)
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`)
)
在指定與列定義直接內聯的主鍵列名稱時,不應指定列名,因此:
CREATE TABLE IF NOT EXISTS `default_test` (
`default_test`.`id` SMALLINT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`default_test`.`name` LONGTEXT NOT NULL
);
或者你可以這樣做:
CREATE TABLE IF NOT EXISTS `default_test` (
`default_test`.`id` SMALLINT NOT NULL AUTO_INCREMENT ,
`default_test`.`name` LONGTEXT NOT NULL ,
PRIMARY KEY `default_test_id_pkey` (`id`)
);
您不必再次指定列名,因為您已將其指定為當前字段定義的一部分 - 只需說PRIMARY KEY
。
CREATE TABLE IF NOT EXISTS `default_test` (
`id` SMALLINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`name` LONGTEXT NOT NULL
)
或者,您可以稍后單獨指定它:
CREATE TABLE IF NOT EXISTS `default_test` (
`id` SMALLINT NOT NULL AUTO_INCREMENT,
`name` LONGTEXT NOT NULL,
PRIMARY KEY(`id`)
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.