다음 필드가 PK 인 테이블에 DB : DOC_ID
, SECTION_ID
, SET_ID
, CELL_ID
이 있습니다. 당신이 추론 할 수있는 한, 이것은 엑셀 스프레드 시트의 세트로 참조됩니다.임시 키가 겹치는 여러 레코드 업데이트
필드 외에도 CELL_ROW
필드와 CELL_COL
필드가 있습니다. SET_ID
(고유)은 대체 키를 구성합니다.
적어도 이론 상으로는 두 셀의 좌표를 바꾸려면 해당 제약 조건을 해제하거나 세 번째 임시 자유 위치 (예 : A100000)를 사용해야합니다.
가정하자 나는 다음과 같은 세포가 :
DOC_ID | SECTION_ID | SET_ID | CELL_ID | CELL_ROW | CELL_COL
--------|------------|--------|---------|----------|----------
5 | 456 | 8778 | 15045 | 5 | 4
5 | 456 | 8778 | 15048 | 5 | 5
그리고 나는 기본 테이블에 UPDATE
을 수행되는 다음 임시 테이블이 있다고 가정 : 이론적으로
DOC_ID | SECTION_ID | SET_ID | CELL_ID | CELL_ROW | CELL_COL
--------|------------|--------|---------|----------|----------
5 | 456 | 8778 | 15045 | 5 | 5
5 | 456 | 8778 | 15048 | 5 | 4
을 UPDATE
이해야 그 예외를 발생 시키십시오 ...
하지만 그냥 시도해 봅니다!
당신은 나에게 이유를 설명 할 수 있습니까? 오라클은이를 원자 적 연산으로 수행하기 때문에 제약 조건은 레코드 당 레코드 대신 전체 연산 후에 만 검사됩니까?
이런 상황에서 MS SQL Server 2008 r2 및 Postgres는 어떻게 작동합니까?
답변 해 주셔서 감사합니다! 사실, 저는 Postgres 커뮤니티와 접촉이 없었습니다. 우리 회사에서는 언급 된 DBMS에 대한 완전한 지원을 제공하지만, 1 년 전에 채용 한 이후 Postgres에 대해 한 번도 다뤄 본 적이 없습니다. – Teejay
SQL Server를 사용해 보았는데 문제없이 작동하는 것 같습니다. 이제, PG의 경우 제약 조건을 변경하고 즉시 DEFERRABLE을 설정하는 방법이 있습니까? 또는이 속성은 테이블 생성시에만 설정할 수 있습니다. 제약 조건은 FK가 아닙니다. – Teejay
문제를 해결하기 위해 DB 작성시 DEFERRABLE로 설정하기로 결정했습니다. – Teejay