簡體   English   中英

MySQL:在CREATE TABLE語句中命名主鍵

[英]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`)
)

UPDATE

根據說明,如果要指定索引名稱,可以使用以下內容替換上面的最后一個定義:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM