2 개의 테이블에 데이터 삽입을 처리하는 프로 시저를 작성하려고합니다. 삽입이 둘 중 하나에서 실패하면 전체 프로 시저가 실패해야합니다. 나는이 여러 가지 방법을 시도해 왔지만 제대로 작동하지 않습니다. 의도적으로 두 번째 삽입을 실패했지만 데이터가 첫 번째 테이블에 삽입됩니다.row_count를 사용하는 프로 시저 예제 찾기
rowcount를 기반으로 IF 문을 중첩하려고 시도했지만 데이터가 두 번째 삽입에서 실패하더라도 데이터는 여전히 첫 번째 테이블에 삽입됩니다. 영향을받은 행이 총 2 개 있습니다.
다른 사람이 여러 삽입물을 처리하는 방법을 보여줄 수 있습니까? 그 중 하나가 실패하면 롤백 할 수 있습니까? 간단한 예가 좋을 것입니다.
이미 거래를 사용하고 있습니다. 문제는 row_count가 첫 번째 삽입에 대해 1을 반환하고 두 번째에 대해 -1이라고 가정한다는 것입니다. 트랜잭션이 시작 되었더라도 두 번째 삽입이 실패 할 때 데이터는 여전히 첫 번째 테이블에 삽입됩니다. 나는 이미 영향을받는 행을 테스트하고 있는데, 그렇지 않으면 롤백하지 않는다. else commit. – jimSET autocommit = 0; START TRANSACTION ......
그리고 innoDB 테이블에서 트랜잭션을 사용하는 것이 첫 번째 쿼리를 롤백하지 않습니까? – SubniC
SubniC가 없습니다. 이상합니다. 사이트의 다른 부분에서 작업하는 동안 나는 그것을 오늘 밤에 알아 차렸습니다. 저는 Innodb을 사용하고 있으며 전에도이 문제에 뛰어 들어 본 적이 없습니다. 어떤 아이디어 일 수 있니? – jim