라이브러리
[PHP] mysqli::begin_transaction - 트랜잭션을 시작합니다.
MySQLi Transaction
MySQLi는 MySQL 데이터베이스와 상호 작용하는 PHP 확장입니다. MySQLi의 `begin_transaction()` 메서드는 현재 연결에서 트랜잭션을 시작합니다. 트랜잭션은 데이터베이스의 일관성을 유지하기 위해 여러 쿼리를 하나의 단위로 처리하는 방법입니다.
# 트랜잭션의 특징
- 원자성(Atomicity): 트랜잭션은 모두 성공하거나 모두 실패합니다.
- 일관성(Consistency): 트랜잭션은 데이터베이스의 일관성을 유지합니다.
- 독립성(Isolation): 트랜잭션은 다른 트랜잭션에 영향을 받지 않습니다.
- 持続성(Durability): 트랜잭션의 결과는 데이터베이스에 영구적으로 저장됩니다.
# 예제
#hostingforum.kr
php
// MySQLi 연결 설정
$host = 'localhost';
$db_name = 'mydb';
$user = 'root';
$password = '';
// MySQLi 연결 생성
$mysqli = new mysqli($host, $user, $password, $db_name);
// 트랜잭션 시작
if ($mysqli->begin_transaction()) {
echo "트랜잭션 시작 성공
";
// 쿼리 1
$query1 = "INSERT INTO users (name, email) VALUES ('John Doe', 'john@example.com')";
if ($mysqli->query($query1)) {
echo "쿼리 1 성공
";
} else {
echo "쿼리 1 실패
";
$mysqli->rollback();
exit;
}
// 쿼리 2
$query2 = "INSERT INTO orders (user_id, product_id) VALUES (1, 1)";
if ($mysqli->query($query2)) {
echo "쿼리 2 성공
";
} else {
echo "쿼리 2 실패
";
$mysqli->rollback();
exit;
}
// 트랜잭션 커밋
if ($mysqli->commit()) {
echo "트랜잭션 커밋 성공
";
} else {
echo "트랜잭션 커밋 실패
";
}
} else {
echo "트랜잭션 시작 실패
";
}
// MySQLi 연결 닫기
$mysqli->close();
이 예제에서는 `begin_transaction()` 메서드를 사용하여 트랜잭션을 시작하고, 두 개의 쿼리를 실행한 후 `commit()` 메서드를 사용하여 트랜잭션을 커밋합니다. 만약 하나의 쿼리라도 실패하면 `rollback()` 메서드를 사용하여 트랜잭션을 롤백합니다.
참고자료
- MySQLi 공식 문서:
- 트랜잭션의 원자성, 일관성, 독립성, 유지성:
-
- 나우호스팅 @pcs8404
-
호스팅포럼 화이팅!
댓글목록
등록된 댓글이 없습니다.