CUBRID 매니저 사용 방법
GUI 입력 방법
나는 `DBeaver`와 `CUBRID Manager`를 함께 사용한다.
주로 DBeaver를 사용하지만 CUBRID는 CUBRID 매니저에서만 지원하는 기능들이 있기에 그때그때 필요할 때마다 사용하고 있다. 예) 쿼리 실행 계획
DBeaver에서는 cubrid comment입력을 gui로 지원하지 않지만 큐브리드 매니저는 gui입력이 적용된다!
수정할 테이블에서 `마우스 우클릭`하고 `테이블 편집`을 클릭하자.
그리고 `컬럼 설명` 더블클릭해서 원하는 컬럼 설명을 추가해 준 뒤 확인을 눌러주면 끝이다.
🚫 오류 : 외래키 문제
다만 어떤 컬럼은 몇 번을 반복해도 컬럼 설명이 저장되지 않는 기이한 현상이 발생했는데, `외래키 문제`였다.
따로 오류는 나오지 않으나 해당 컬럼이 외래키 참조에 걸려있다면 컬럼 변경이 되지 않는다.
`외래키 삭제` > `컬럼 수정` > `외래키 재등록` 해주면 되겠다.
cubrid 사용자는 반드시 `cubrid manager`를 사용했으면 좋겠다.
이것 말고도 지원되는 기능이 많다.
쿼리 사용 방법
큐브리드 DB를 덤프 해서 이동한 결과 코멘트가 따라오지 않아 따로 입력해줘야 했다.
테이블과 컬럼의 개수가 많았기 때문에 쿼리를 사용했다.
일단 큐브리드 버전을 확인해야 한다.
버전별로 코멘트 작성에 차이점이 있기 때문이다.
(처음에 이걸 몰라서 삽질을 좀 했다.)
버전 조회 쿼리
select version();
테이블 COMMENT 추가 쿼리
ALTER TABLE [테이블명] COMMENT = '[COMMENT내용]';
[ ]안에 맞는 값을 넣어주면 된다.
테이블은 쉬웠다.
문제는 컬럼에 COMMENT를 달아주는 것이었다.
검색결과 큐브리드 10.x 버전대는 컬럼 comment 추가를 하려면 `ALTER TABLE`을 사용해야 하는데 `fk(외래키)`가 있으면 변경이 안 된다는 사실을 알아냈다.
그래서 컬럼 코멘트를 추가하기 위해서는
`외래키 삭제` > `코멘트 추가` > `다시 외래키 추가` 의 과정을 거쳐야 했다.
컬럼 COMMENT 추가 쿼리
ALTER TABLE [테이블명] MODIFY COLUMN [컬럼명] [타입][(크기)] NOT NULL COMMENT'[COMMENT 내용]';
/* 예시 */
ALTER TABLE test_table MODIFY COLUMN test_col_no CHAR(14) NOT NULL COMMENT '테스트 컬럼 번호';
❗️주의❗️
10.x 버전 기준 코멘트만 추가할 수 없다고 한다.
다른 버전은 잘 모르겠다.
`ALTER TABLE MODIFY COLUMM`을 사용하기 때문에 다른 입력값도 번거롭지만 다 넣어줘야 한다.
추가해야 할 디폴트값이 있다면 이것도 참고 바란다.
컬럼 기본값 추가 쿼리
ALTER TABLE [테이블명] ALTER COLUMN [컬럼명] SET DEFAULT '[기본값]';
/* 예시 */
ALTER TABLE test_tbl ALTER COLUMN col_yn SET DEFAULT 'N';
❗️참고❗️
외래키 참조를 하고 있던 당하고 있던 대상 컬럼에 뭐라도 걸려있으면 에러가 발생하기 때문에 외래키가 걸려있다면 찾아내서 삭제해야 한다.
잘 적어놓았다가 다시 원상 복귀하도록 하자.
외래키 조회 쿼리
select *
from db_index_key
where index_name like 'fk_%';
외래키 삭제 쿼리
ALTER TABLE [테이블명] DROP CONSTRAINT [제약조건명];
/* 예시 */
ALTER TABLE test_tbl DROP CONSTRAINT fk_test;
외래키 추가 쿼리
ALTER TABLE [테이블명] ADD CONSTRAINT [제약조건명] FOREIGN KEY([참조컬렴명]) REFERENCES [참조테이블명]([참조컬럼명]) ON DELETE RESTRICT ON UPDATE RESTRICT;
/* 예시 */
ALTER TABLE test_tbl ADD CONSTRAINT fk_test FOREIGN KEY(test_no, col_no) REFERENCES target_tbl(test_no, col_no) ON DELETE RESTRICT ON UPDATE RESTRICT;