반응형
--테이블제거
존재하는 테이블을 제거할 수 있다.
--실습 준비
DROP TABLE AUTHOR;
DROP TABLE PAGE;
CREATE TABLE AUTHOR
(
AUTHOR_ID INT NOT NULL PRIMARY KEY
, FIRSTNAME VARCHAR (50)
, LASTNAME VARCHAR (50)
);
CREATE TABLE PAGE (
PAGE_ID SERIAL PRIMARY KEY
, TITLE VARCHAR (255) NOT NULL
, CONTENT TEXT
, AUTHOR_ID INT NOT NULL
, FOREIGN KEY (AUTHOR_ID) REFERENCES AUTHOR (AUTHOR_ID)
);
INSERT INTO AUTHOR
VALUES (1, 'kyounhoh', 'Lee');
INSERT INTO PAGE
VALUES (1, 'SQL과 데이터베이스', 'drop table', 1);
COMMIT;
DROP TABLE AUTHOR; --부모테이블이기 때문에 삭제 불가
SQL Error [2BP01]: 오류: 기타 다른 개체들이 이 개체에 의존하고 있어, author 테이블 삭제할 수 없음
Detail: page_author_id_fkey 제약 조건(해당 개체: page 테이블) 의존대상: author 테이블
Hint: 이 개체와 관계된 모든 개체들을 함께 삭제하려면 DROP ... CASCADE 명령을 사용하십시오
;
DROP TABLE PAGE; --자식테이블이기 때문에 제거가능
SELECT * FROM AUTHOR;
SELECT * FROM page; --없어짐확인
--그냥 삭제하고싶으면 cascade 사용
DROP TABLE AUTHOR CASCADE;
SELECT * FROM AUTHOR; --삭제됨을 확인
SQL Error [42P01]: 오류: "author" 이름의 릴레이션(relation)이 없습니다
Position: 15
;
--자식 테이블의 행은 존재하지만 fk 제약조건은 자동 삭제됨
SELECT * FROM PAGE;
-- public.page definition
CREATE TABLE public.page (
page_id serial4 NOT NULL,
title varchar(255) NOT NULL,
"content" text NULL,
author_id int4 NOT NULL,
CONSTRAINT page_pkey PRIMARY KEY (page_id)
);
반응형
'DataBase' 카테고리의 다른 글
[SQL]TRUNCATE (0) | 2021.09.25 |
---|---|
[SQL]임시 테이블 (0) | 2021.09.25 |
[SQL]컬럼 이름 변경 (0) | 2021.09.25 |
[SQL]컬럼 데이터 타입 변경 (0) | 2021.09.25 |
[SQL]칼럼 제거 (0) | 2021.09.25 |
댓글