【问题标题】:Add an autoincrement primary key to a table created with a SELECT statement向使用 SELECT 语句创建的表添加自动增量主键
【发布时间】:2017-09-24 11:51:33
【问题描述】:

这是一个语法问题,我不知道我的想法是否可行。我找不到任何关于它的信息。

CREATE TABLE IF NOT EXISTS newTable
SELECT something1, something2, something3 FROM someTable;

使用这个语法创建一个新表,我可以给它添加一个主键吗?像这样的:

CREATE TABLE IF NOT EXISTS newTable
SELECT id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, something1, something2, something3 FROM someTable;

我有一个大而复杂的动态查询,它可以返回我需要的确切结果。剩下的就是将这些结果添加一个自动增量主键! 因为查询是动态的,我不知道我会得到多少列,所以我不能只是:

DROP TABLE IF EXISTS newTable;
CREATE TABLE newTable(
  id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  something1 VARCHAR(255),
  something2 VARCHAR(255),
  something3 VARCHAR(255)
)  ENGINE=MEMORY;

提前感谢您提供的任何建议!

【问题讨论】:

    标签: mysql syntax primary-key create-table


    【解决方案1】:

    看起来您必须运行多个步骤才能执行此操作:

    • 使用主键创建表
    • 使用存储过程将列添加到此表中(可以与步骤 1 合并)

    为此,您需要使用信息架构。这将如下所示(虚拟代码,没有 mysql 方便调试任何东西):

    CREATE PROCEDURE create_table(table_name VARCHAR(200))
    BEGIN
      declare cursor table_columns as SELECT COLUMN_NAME, DATA_TYPE, 
        IS_NULLABLE, COLUMN_DEFAULT FROM INFORMATION_SCHEMA.COLUMNS
        WHERE table_name = 'table_name'
      LOOP
         concatenate create table statement
      END LOOP;
      execute create table statement
    
    END
    

    【讨论】:

      猜你喜欢
      • 2011-07-26
      • 2012-07-12
      • 2020-01-28
      • 1970-01-01
      • 2014-02-10
      • 1970-01-01
      • 2012-03-19
      • 2012-04-16
      相关资源
      最近更新 更多