프로젝트에서 많은 테이블의 행을 많이 삭제하고 업데이트하므로 트랜잭션을 사용하기로 결정했습니다. 그러나 트랜잭션은 오류가 발생하여 스크립트가 종료 될 때까지 커밋됩니다.오류가 발생하더라도 MySQL 트랜잭션이 커밋됩니다.
나는 그것 때문에 지원되지 않습니다 해당 서버에만 mysql_로하지 mysqli_ 또는 PDO를 사용합니다.
mysql_query("START TRANSACTION");
$res = mysql_query("some insert...");
if($res === false){
//this save error log and exit script with die() or exit()
trigger_error(mysql_errno()."\n".mysql_error());
}
$res = mysql_query("some delete...");
if($res === false){
trigger_error(mysql_errno()."\n".mysql_error());
}
mysql_query("COMMIT");
내 프로젝트에서 나는이 클래스를 mysql에 입력하면 안되지만이 방법으로 작동한다.
첫 번째 쿼리 오류가 발생한 후에 오류 로그가 저장되고 종료 스크립트가 종료됩니다. 그러나 삽입 된 데이터는 DB에 남아 있습니다. 하지만 COMMIT
이 실행되지 않고 연결이 닫히면 자동으로 ROLLBACK
이 발생합니다.
P. mysqli를 사용하는 것이 더 좋다는 것을 알고 있지만, mysql_과 mysqli_에 대해서도 동일합니다. 그렇지 않습니까?
성공한 후에 만 커밋하고 오류 후 롤백 – StasGrin
성공한 후에 만 커밋하지만 오류가 발생하면 롤백하지 않습니다. 나는 그것이 자동으로 생각. – Arxeiss