2014-12-18 3 views
0

약간의 검색을 수행했지만 명시적인 대답을 찾을 수 없었습니다. 그것은 INSERT, UPDATE 또는 오류가 발생한다는 점에서 원자 적입니까? 그렇다면 TRANSACTION을 사용하는 것과 다른 점이 있습니까? 또는 내 응용 프로그램에서 데이터베이스에 액세스하는 경우 함수/메서드를 쿼리하는 것과 함께 일종의 조건부입니까? 정의에INSERT ... ON DUPLICATE KEY UPDATE는 정확히 얼마나 정확하게?

+0

'원자'의 감각이 하나뿐입니다. 귀하의 질문은 아무것도 아닙니다. – EJP

+0

존경심으로 @EJP, 그러나 나의 질문은 나의 의심을 맑게하는 것에 관한 것이었다. 또한 트랜잭션에 관한 몇 가지 다른 질문을했고 프로그래밍 언어로 동일한 로직을 구현했으며이 세 가지가 동등한 지 여부를 질문했습니다. 그래서 제 질문은 뭔가에 관한 것이라고 생각합니다. – Kareem

답변

0

MySQL Docs

는, 자성 각 트랜잭션이 모두 또는 아무것도 것을 요구한다. 그래서 네가 삽입하려는 데이터가 기본 키 또는 고유 인덱스에서 중복을 일으키는 경우, 명령문은 대신 업데이트를 수행하고 오류는 발생하지 않는다는 점에서 원자 적입니다. 적절한 용어는 upsert (업데이트/삽입)이라고 생각합니다.

개인적으로는 데이터베이스가 유효한 상태 (기본 키나 고유 한 제약 조건을 위반하지 않았 음)에 있음을 보장하기 때문에 개인적으로 일관성 (C ACID 원칙)에 초점을 맞추고 있다고 생각합니다.

까지 transactions까지는 그렇습니다. 롤백이 없으면 삽입 또는 업데이트가 수행됩니다.

관련 문제