Loading...
MySQL 9.5 Reference Manual 9.5의 1.7.3 How MySQL Deals with Constraints의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
1.7.3.1 PRIMARY KEY and UNIQUE Index Constraints 1.7.3.2 FOREIGN KEY Constraints 1.7.3.3 ENUM and SET Constraints
MySQL은 롤백이 가능한 트랜잭션 테이블과 그렇지 않은 논트랜잭션 테이블 모두를 사용할 수 있게 해 줍니다. 이 때문에, 제약 조건 처리 방식은 다른 DBMS와는 MySQL에서 약간 다릅니다. 에러가 발생했을 때 변경 사항을 롤백할 수 없는 논트랜잭션 테이블에 많은 행을 insert하거나 update한 경우를 처리해야 합니다.
기본적인 철학은, 실행할 구문을 파싱하는 동안 MySQL Server가 감지할 수 있는 모든 것에 대해서는 에러를 생성하려 하고, 구문을 실행하는 동안 발생하는 에러에 대해서는 가능한 한 복구를 시도한다는 것입니다. 대부분의 경우에 우리는 이렇게 하지만, 아직 모든 경우에 대해 그런 것은 아닙니다.
에러가 발생했을 때 MySQL이 취할 수 있는 옵션은 구문을 중간에서 중단하든가, 문제에서 가능한 한 잘 복구하고 계속 진행하든가입니다. 기본적으로 서버는 후자의 방식을 따릅니다. 예를 들어, 이는 서버가 유효하지 않은 값을 가장 가까운 유효한 값으로 강제 변환(coerce)할 수 있음을 의미합니다.
잘못된 데이터 값 처리 및 에러가 발생했을 때 구문 실행을 계속할지 중단(abort)할지에 대한 제어를 더 엄격히 할 수 있도록 여러 SQL 모드 옵션이 제공됩니다. 이러한 옵션을 사용하면, 부적절한 입력을 거부하는 다른 DBMS와 유사한 보다 전통적인 방식으로 MySQL Server가 동작하도록 구성할 수 있습니다.
SQL 모드는 서버 시작 시 전역적으로 설정하여 모든 클라이언트에 영향을 줄 수 있습니다. 개별 클라이언트는 런타임에 SQL 모드를 설정할 수 있으며, 이를 통해 각 클라이언트는 자신의 요구 사항에 가장 적합한 동작을 선택할 수 있습니다. Section 7.1.11, “Server SQL Modes”를 참조하십시오.
다음 섹션에서는 MySQL Server가 서로 다른 타입의 제약 조건을 어떻게 처리하는지 설명합니다.
1.7.2 MySQL Differences from Standard SQL
2 Installing MySQL