MySQL:如何通过脚本创建具有自动递增列的表

时间:2015-06-17 07:47:56

标签: mysql auto-increment create-table

我是MySQL的新手,希望有人可以帮助我。

我想创建一个包含两个特殊设置的简单表:

  1. 包含“de”和“location
  2. 列的双列主键
  3. 生成唯一ID的自动递增列“tID” 从1开始
  4. 我尝试了以下(和其他几种方法),但这总是返回以下错误:

    SQL:

    CREATE TABLE TranslationsMain (
        de VARCHAR(100) NOT NULL,
        tID INT UNSIGNED NOT NULL AUTO_INCREMENT,
        location VARCHAR(50) NOT NULL,
        classes VARCHAR(100) NOT NULL,
        info VARCHAR(100) NOT NULL,
        sortOrder INT NOT NULL,
        en VARCHAR(100) NOT NULL,
        PRIMARY KEY(de, location)
    )
    

    错误消息:

    "Incorrect table definition; there can be only one auto column and it must be defined as a key."
    

    如果我离开自动递增列(“tID”),它会起作用,所以这里似乎有问题。 有人可以帮我这个吗?

    非常感谢, 麦克

2 个答案:

答案 0 :(得分:3)

尝试以下查询,我认为这将解决您的问题

CREATE TABLE TranslationsMain (
 de VARCHAR(100) NOT NULL,
 tID INT UNSIGNED NOT NULL AUTO_INCREMENT,
 location VARCHAR(50) NOT NULL,
 classes VARCHAR(100) NOT NULL,
 info VARCHAR(100) NOT NULL,
 sortOrder INT NOT NULL,
 en VARCHAR(100) NOT NULL,
 PRIMARY KEY(tID),
 UNIQUE(de, location))

OR

CREATE TABLE TranslationsMain12 (
     de VARCHAR(100) NOT NULL,
     tID INT UNSIGNED NOT NULL AUTO_INCREMENT,
     location VARCHAR(50) NOT NULL,
     classes VARCHAR(100) NOT NULL,
     info VARCHAR(100) NOT NULL,
     sortOrder INT NOT NULL,
     en VARCHAR(100) NOT NULL,
     unique(tID),
     primary key(de,location)
    )

答案 1 :(得分:1)

在你的SQL中,自动增量的问题必须是主键。否则它将无法工作。

您可以使用这些。我认为你的问题会解决。

  CREATE TABLE TranslationsMain (
     de VARCHAR(100) NOT NULL,
     tID INT UNSIGNED NOT NULL AUTO_INCREMENT,
     location VARCHAR(50) NOT NULL,
     classes VARCHAR(100) NOT NULL,
     info VARCHAR(100) NOT NULL,
     sortOrder INT NOT NULL,
     en VARCHAR(100) NOT NULL,
     PRIMARY KEY(tID,de, location))