簡體   English   中英

向使用SELECT語句創建的表中添加自動增量主鍵

[英]Add an autoincrement primary key to a table created with a SELECT statement

這是一個語法問題,我不知道自己在想什么。 我找不到任何東西。

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;

在此先感謝您提供任何建議!

看來您將必須運行多個步驟才能執行此操作:

  • 用主鍵創建一個表
  • 使用存儲過程將列添加到該表中(可以與步驟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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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