2011-01-07 2 views
0

:ROLLBACK을 위해 SQL 쿼리에 어떤 종류의 오류가 있습니까? 예

insert into table(a, b) values ('a','b') could generate the following error: 

**a-b duplicate entry** 

그러나 여기서 I는이 값의 ID를 선택하고,이 오차를 무시할 수는,이 ID를 사용

select ID from table where a = 'a' and b = 'b' 
insert into brother(table) values (ID) 

마지막 I는 PROCEDURE으로 완결. ID가 필요한 경우이 오류는 롤백과 관련이 없다고 생각하십시오.

질문은 : 어떤 종류의 오류가 절차를 롤백 할 것인가?

귀하의 이해를 바랍니다.

답변

0

당신은 "어떤 종류의 오류로 인해 INSERT 문이 발생하여 MySQL 롤백을 트랜잭션으로 만들 수 있습니까?"라고 묻고 싶습니다.

제약 조건을 위반하는 INSERT는 롤백을 유발합니다. 윤곽을 그리는 것처럼 외래 키 제약 조건이 될 수 있지만 UNIQUE 제약 조건이나 CHECK 제약 조건 일 수도 있습니다. (CHECK 제약 조건은 아마도 MySQL에서 트리거로 구현됩니다.) 유효하지 않은 값 (null이 아닌 열에 NULL, 범위를 벗어난 숫자, 잘못된 날짜)을 삽입하려고하면 롤백이 발생할 수 있습니다. 그러나 서버 구성에 따라 그렇지 않을 수도 있습니다. (아래 링크 참조)

권한이 없기 때문에 INSERT가 실패 할 수도 있습니다. 또한 롤백이 발생합니다.

다른 플랫폼에서 롤백을 유발하는 일부 조건으로 인해 MySQL에서 롤백이 발생하지 않습니다.

오류 가 발생하면 MySQL이이 옵션은

는 에 중간 문을 중지하거나뿐만 아니라 문제에서 가능한 및 가 계속 복구 할 수 있습니다. 기본적으로 서버 은 후자의 과정을 따릅니다. 예를 들어, 은 서버가 에 가장 근접한 값을 허용하지 않을 수 있음을 의미합니다.

견적은 How MySQL Deals with Constraints입니다.

MySQL 설명서에서 내가 가장 좋아하는 따옴표 중 하나 인 1.8.6.2. Constraints on Invalid Data.

MySQL은 특정 날짜에 잘못된 날짜 값 (예 : '2000년 2월 31일' 또는 '2000-02-00'등) DATETIME 열을 저장할 수 있습니다. 생각은 은 에 SQL 서버의 작업을 확인하지 않습니다.

아니야 귀여운?

관련 문제