MSSQL 딕셔너리테이블 이용한 테이블 생성 0 5 1,398

by 에브리데이나잇쇼 [DB 기타] [2016.05.18 16:57:09]


안녕하세요

 

기존 a라는 테이블을 이용하여 a_h라는 로그테이들을 만들려합니다.

로그 테이블에는 날짜컬럼, 구분 컬럼만 추가 되고 나머지는 똑같이 만들려고 합니다.(pk없도록)

여러테이블에 적용시키기 위하여 information_schema를 이용하여

create문장을 구성하여 보려고 하는데

 

select 'CREATE TABLE ' + table_name+'_h' + ' ( ' + column_name + ' ' + data_type + '(' + str(character_maximum_length) + ') ' + is_nullable
  from INFORMATION_SCHEMA.COLUMNS

이런식으로 컬럼들까지 하나하나 create()문장안에 넣어주고 싶은데 잘안되네요...

혹시 쿼리만으로 가능한지 궁금합니다

create문장만 완성된다면 복사하여 쿼리편집기에서 다 실행하여 테이블을 만들려는게 주목적입니다..

도움좀 부탁드립니다.ㅜㅜ

 

by 마농 [2016.05.18 17:53:21]

컬럼명이랑 컬럼 타입이랑 일일이 다 적용시키려면 만만치 않을 듯 하네요.
단순하게 CTAS 방식으로 테이블 복사하여 컬럼 추가 따로 하는게 쉬울 듯 합니다.
 

SELECT 'SELECT * INTO ' + table_name + '_h FROM ' + table_name + ' WHERE 1=2;' create_tab
     , 'ALTER TABLE ' + table_name + '_h' + ' ADD dt DATETIME, gb VARCHAR(1);' add_col
  FROM information_schema.tables
;

 


by 에브리데이나잇쇼 [2016.05.18 17:58:40]

트리거같은경우는 어떤식으로해야할까요??


by 마농 [2016.05.18 18:28:44]
SELECT 'CREATE TRIGGER trg_' + table_name + '_h ON ' + table_name
+ ' AFTER INSERT,DELETE,UPDATE AS BEGIN'
+ ' INSERT INTO ' + table_name + '_h SELECT a.*, GETDATE(), ''D'' FROM deleted  a;'
+ ' INSERT INTO ' + table_name + '_h SELECT a.*, GETDATE(), ''I'' FROM inserted a;'
+ ' END;' tri_h
  FROM information_schema.tables
;

 


by 에브리데이나잇쇼 [2016.05.18 19:31:57]

tri_h는 무엇인가요??


by 마농 [2016.05.19 08:08:45]

Alias(별칭)

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입