본문으로 바로가기

PostgreSQL ON DELETE CASCADE

category Database/PostgreSQL 2020. 7. 2. 23:35

# CASCADE

참조 테이블의 해당 행이 삭제되거나 업데이트될 때, 기본 테이블에서도 해당 행이 삭제 또는 업데이트됨

 

# on delete cascade 설정

cascade 설정을 하지않았으면 참조 테이블 삭제 불가

 

child 테이블에서 FOREIGN KEY ~ REFERENCES~ 를 통해 parent 테이블을 참조하고 그 테이블을 참조할 떄 사용할 왜래키 속성을 지정

-- 참조 테이블 생성
CREATE TABLE parent (
  pid varchar(255) NOT NULL,
  password varchar(255),
  CONSTRAINT "parent_pkey" PRIMARY KEY ("pid")
);

-- 기본 테이블 생성
CREATE TABLE child (
  cid varchar(255) NOT NULL,
  pid varchar(255),
  CONSTRAINT "fkey" FOREIGN KEY ("pid") REFERENCES parent("pid")
);

-- insert(참조/기본 테이블 모두)
INSERT INTO parent VALUES('pid1', '1234');
INSERT INTO child VALUES('cid1', 'pid1');

-- on delete cascade (기본 테이블)
ALTER TABLE child DROP CONSTRAINT "fkey",ADD CONSTRAINT "fkey" FOREIGN KEY ("pid") REFERENCES parent("pid") on delete cascade;

-- delete(참조 테이블)
DELETE FROM parent WHERE pid='pid1';

 

# ON DELETE 옵션

- NO ACTION

- CASCADE

- SET NULL

- SET DEFAULT

( 그 중 CASCADE 사용)

'Database > PostgreSQL' 카테고리의 다른 글

# PostgreSQL upsert  (0) 2020.07.18
# PostgreSQL 절차형SQL_for문_insert  (0) 2020.07.05
PostgreSQL Auto_increment(varchar)  (0) 2020.07.02
# PostgreSQL DB생성시간(varchar)  (0) 2020.07.02
# PostgreSQL 명령어 정리  (0) 2020.07.02