2017-04-26 7 views
0

이것은 구문 질문입니다. 생각하고있는 것이 가능한지 모르겠습니다. 나는 그것에 대해 아무것도 찾을 수 없습니다.SELECT 문을 사용하여 만든 테이블에 자동 증가 기본 키를 추가하십시오.

CREATE TABLE IF NOT EXISTS newTable 
SELECT 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; 

감사합니다!

답변

0

는이 작업을 수행하기 위해 여러 단계를 실행해야합니다 것 같은데 :

  • 저장 프로 시저를 사용하여이 테이블에 열을 추가 기본 키
  • 있는 테이블을 만들기을 (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