>데이터 베이스 >MySQL 튜토리얼 >지연된 제약과 즉시 제약이 데이터베이스 트랜잭션의 기본 및 고유 키 적용에 어떤 영향을 미칩니까?

지연된 제약과 즉시 제약이 데이터베이스 트랜잭션의 기본 및 고유 키 적용에 어떤 영향을 미칩니까?

Patricia Arquette
Patricia Arquette원래의
2025-01-06 09:02:44746검색

How Do Deferred and Immediate Constraints Affect Primary and Unique Key Enforcement in Database Transactions?

DEFERRABLE INITIALLY IMMEDIATE로 정의된 제약 조건은 지연된 상태로 유지됩니다.

지연 제약 조건의 적용

DEFERRED/DEFERRABLE 및 INITIALLY IMMEDIATE로 정의된 기본 및 고유 키 제약 조건은 고유성을 적용합니다. 거래 중 특정 지점에서 실행.

지연 상태

1. 여러 행을 수정하는 업데이트 문:

기본 키 교체와 관련된 여러 행을 수정하는 업데이트 문은 INITIALLY IMMEDIATE 제약 조건이 있어도 성공합니다. 제약 조건 확인은 문 이후까지 연기되기 때문입니다.

2. 데이터 수정 CTE:

데이터 수정 CTE는 지연되지 않은 기본 키 위반으로 인해 실패하는 업데이트 충돌을 제외하고 유사하게 동작합니다.

3. 트랜잭션의 다중 UPDATE 문:

SET CONSTRAINTS가 없으면 트랜잭션 내에서 고유 제약 조건을 위반하는 여러 UPDATE 문이 실패하게 됩니다. 각 문 다음에 검사가 수행되기 때문입니다.

즉시 상태

  • INITIALLY IMMEDIATE로 정의된 제약 조건은 각 제약 조건이 발생한 후에만 적용됩니다.
  • INITALLY IMMEDIATE 및 SET CONSTRAINTS IMMEDIATE는 동일하게 작동합니다.

지연 및 PostgreSQL 구현

  • PostgreSQL은 각 행 업데이트 후 지연되지 않는 제약 조건을 적용합니다. , 잠재력으로 이어지는
  • DEFERRABLE 제약 조건은 이 결함이 있는 구현에 대한 해결 방법을 제공합니다.

제약 조건 적용 요약

  • DEFERRABLE INITIALLY IMMEDIATE 제약 조건은 명령문 후에 확인됩니다.
  • 처음에는 연기 가능 DEFERRED 제약 조건은 트랜잭션 후에 확인됩니다.
  • 모든 명령 후에 지연되지 않는 제약 조건이 확인됩니다.

참고: UNIQUE 및 PRIMARY KEY 제약 조건은 특별히 처리되며, 연기되지 않은 제약 조건은 행이 수정될 때마다 즉시 확인됩니다.

SQL과의 호환성 표준

표준 준수 동작을 달성하려면 DEFERRABLE 제약 조건을 INITIALLY IMMEDIATE로 선언해야 하지만 지연되어서는 안 됩니다. 이는 즉각적인 고유성 검사에 비해 성능이 저하될 수 있습니다.

외래 키 제약 조건

참조된 열은 지연 불가능한 고유 또는 기본 키 제약 조건이어야 하므로 DEFERRABLE 제약 조건은 FOREIGN KEY 참조에 사용할 수 없습니다.

위 내용은 지연된 제약과 즉시 제약이 데이터베이스 트랜잭션의 기본 및 고유 키 적용에 어떤 영향을 미칩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.