|
정적 테이블 설계 |
동적 테이블 설계 |
|
회원 테이블에 회원 ID를 Foreign Key로 가지고 있는 Message테이블이 있다.
왼쪽은 정적인 테이블로 받는사람ID, 보낸사람ID를 Foreign Key로 가지고 있고
오른쪽은 회원이 등록되면 회원마다 Message테이블이 동적으로 생성되는 구조이다.
동적 테이블 생성 프로시져 예제)
ALTER PROCEDURE dbo.CreateMessageTable ( @m_id varchar(20) ) AS declare @sql varchar(1000) set @sql = 'create table ' + @m_id + '_Message' set @sql = @sql + '( ms_id int identity(1 , 1) NOT NULL Primary Key, ms_sender varchar(20) FOREIGN KEY(ms_sender) REFERENCES Member(m_id) ON DELETE CASCADE ON UPDATE CASCADE NOT NULL, ms_date varchar(50) NOT NULL, ms_contents varchar(255) NOT NULL, ms_status int NOT NULL )' exec (@sql) RETURN |
declare @sql varchar(1000) : varchar(1000) 형식의 변수 선언 후
set @sql = '쿼리문' -> exec (@sql)로 실행을 하면 테이블이 생성된다.
테이블 생성 결과
|
--주의
숫자 입력시
cast로 varchar 형으로 형변환 해서 사용해야 한다.
@s_id int declare @sid varchar(20) set @sid = cast(@s_id as varchar(20))
int identity(1 , 1) : 자동 증가 값(처음 숫자, 증가 값)
NOT NULL : 널값이 들어올 수 없다.
FOREIGN KEY(ms_sender) REFERENCES Member(m_id) ON DELETE CASCADE ON UPDATE CASCADE : Primary Key 삭제, 업데이트시 참조하고 있는 값도 삭제, 업데이트 된다.
|
첫댓글 동적 쿼리 많이 도움 됐어요ㅋㅋ~
많은 도움이 될 것으로 예상합니다~!!!
유용한 정보 감사합니다!