본문 바로가기

DB(SQL)/mysql|maria

[DB] table data copy

반응형

예를들어 A라는 테이블이 있는데 그대로 어떤 테이블에 데이터를 넣고 싶은 경우 아래와 같이 할 수 있다.

 

-- 테이블 A의 컬럼 정보를 조회하는 쿼리
SELECT GROUP_CONCAT(COLUMN_NAME) INTO @columns
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'A' AND TABLE_SCHEMA = DATABASE();

-- 트리거 생성 스크립트를 생성하는 쿼리
SET @trigger_sql = CONCAT('
CREATE TRIGGER insert_into_b_after_a
AFTER INSERT ON A
FOR EACH ROW
BEGIN
    INSERT INTO B (', @columns, ')
    VALUES (', REPLACE(@columns, ',', ', NEW.'), ');
END;');

-- 트리거 생성
PREPARE stmt FROM @trigger_sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
반응형