Mysql 질문드립니다. 0 2 1,090

by CVS [MySQL] mysql constraint [2021.01.19 13:34:46]


안녕하세요? 테이블 제약조건 관련하여 조언을 구하고자 글을 작성하게 되었습니다.

create table if not exists table_cp like table;

위처럼 테이블을 복사할때 제약조건까지 같이 복사하는데 제약조건은 제외하고 테이블을 복사하는 방법이 있을까요?

아니면 

schema에서 특정 테이블을 지정하여 제약조건을 전부 삭제하는 방법이 있을까요?

delete from information_schema.table_constraints

where table_schema='aa'

and table_name like'bb';

위에는 select는 할수있지만 delete는 불가하더라구요.

혹시 위처럼 조회도 가능하면서 삭제하는 방법이 있을까요?

조언 부탁드립니다.

by pajama [2021.01.19 14:30:08]

create table .. select 문장으로 하시면 primary key, foreign key, index는 제외하고 복사할 수 있습니다.

check나 not null 제약조건은 그대로 남네요.

제약조건을 제거하시려면 alter table ... drop foreign key/primary key/index 문장을 사용하시면 됩니다.


by CVS [2021.01.21 17:58:51]

답변 감사드립니다.

selec 문장이라는 말씀에 힌트를 얻어

select "alter table",concat(table_schema,".",table_name),

"drop primary key;"

from information_schema.table_constraints

where table_schema='a'

and constraint_name='PRIMARY'

and table_name like '%_cp';

이렇게 만들어서 결과 복붙해서 돌리고 다른 제약조건도 위와 비슷하게 해결했습니다.

다시한번 감사드립니다.

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