MySQL의 기본 ON DELETE 동작은 무엇입니까?
MySQL 문서 를 구문 분석하려고합니다 . 더 명확 할 수 있습니다. 그들이 말하는 것처럼 보이는 것은 SET NULL, NO ACTION, RESTRICT, CASCADE 및 SET DEFAULT의 다섯 가지 가능성이 있다는 것입니다.
NO ACTION 및 RESTRICT는 동일한 작업을 수행하며 (FK를 중단하는 DB 변경 방지) 해당 작업이 기본값이므로 ON DELETE 절을 생략하면 NO ACTION (또는 RESTRICT-동일한 것)이라고 말하는 것입니다.
SET NULL은 상위 행 삭제를 허용하고 FK를 NULL로 설정합니다.
CASCADE는 자식 행을 삭제합니다.
SET DEFAULT는 절대 사용해서는 안됩니다.
이것이 다소 정확합니까?
네, 맞습니다 :
NO ACTION : [...] InnoDB는 상위 테이블에 대한 삭제 또는 업데이트 작업을 거부합니다.
RESTRICT : 상위 테이블에 대한 삭제 또는 업데이트 작업을 거부합니다. RESTRICT (또는 NO ACTION)를 지정하는 것은 ON DELETE 또는 ON UPDATE 절을 생략하는 것과 같습니다. [...]
분명히 NO ACTION
와 RESTRICT
동의어입니다. 또한 ON DELETE / UPDATE
절이 없을 때마다 사용되기 때문에 이것이 기본 동작입니다.
SET NULL : 상위 테이블에서 행을 삭제 또는 업데이트하고 하위 테이블의 외래 키 열을 NULL로 설정합니다. [...]
외부 열은 NOT NULL로 선언되지 않은 경우 NULL로 설정됩니다 (또는 InnoDB에서 삭제 또는 업데이트를 허용하지 않음).
CASCADE : 상위 테이블에서 행을 삭제 또는 업데이트하고 하위 테이블에서 일치하는 행을 자동으로 삭제 또는 업데이트합니다. [...]
Cascade는 외부 열을 삭제 (또는 업데이트)합니다.
SET DEFAULT :이 동작은 파서에 의해 인식되지만 InnoDB는 ON DELETE SET DEFAULT 또는 ON UPDATE SET DEFAULT 절을 포함하는 테이블 정의를 거부합니다.
따라서 기본적으로 해당 옵션을 사용할 수 없습니다.
참고 URL : https://stackoverflow.com/questions/1027656/what-is-mysqls-default-on-delete-behavior
'Program Tip' 카테고리의 다른 글
파이썬에 상응하는 auto.arima () (0) | 2020.11.28 |
---|---|
(C # 7.2) "private protected"한정자의 사용 사례는 무엇입니까? (0) | 2020.11.28 |
"localhost", 호스트 및 포트의 요점은 무엇입니까? (0) | 2020.11.28 |
-g 플래그에도 불구하고 Valgrind가 줄 번호를 표시하지 않음 (Ubuntu 11.10 / VirtualBox에서) (0) | 2020.11.28 |
Go 프로그래밍에서 [] byte를 int로 변환하는 방법 (0) | 2020.11.28 |