MySQL의 트랜잭션 처리란 무엇입니까? (코드 예)

青灯夜游
풀어 주다: 2018-11-13 15:57:37
앞으로
2887명이 탐색했습니다.

이 글의 내용은 MySQL에서의 트랜잭션 처리란 무엇인지 소개하는 것입니다. (코드 예). 도움이 필요한 친구들이 참고할 수 있기를 바랍니다. MySQL 트랜잭션 처리 1. 트랜잭션 시작

start transaction

트랜잭션을 시작하면 모든 SQL 작업이 메모리에서 발생하지만 실제 피드백은 없습니다. 데이터베이스 디스크의 파일!

2.Rollback

rollback

Rollback은 트랜잭션이 시작되기 전의 원래 상태로 복원하는 것입니다. 상태!

참고:

롤백 작업은 트랜잭션을 자동으로 닫습니다. 트랜잭션을 다시 실행하려면 트랜잭션을 다시 열어야 합니다!

3. 제출commit

거래의 기본 원칙# 🎜 🎜#

일반적인 실행이 즉시 실행되어 적용되는 이유는 기본적으로 MySQL의 sql 문 실행이 자동으로 제출되기 때문입니다! 따라서 트랜잭션 열기의 핵심은 이전 자동 제출 기능을 끄고 대신 사용자가 수동으로(commit 문을 사용하여) 제출하는 것입니다! [관련 동영상 튜토리얼 추천: MySQL 튜토리얼]

거래 단계 요약:

# 🎜🎜# 1. 트랜잭션

2을 엽니다. 실행이 성공하면 커밋

3을 제출합니다. .SQL 문이 실행되지 않으면 롤백됩니다!

거래 처리의 예:

Transaction 가장 일반적인 처리는 돈을 빌리고 갚는 것입니다.

Zhang San을 예로 들어 Li Si에게 1,000위안을 갚으십시오.

먼저 해당 금액을 확인하세요. 데이터베이스

다음은 상환 거래를 처리하는 코드입니다.

<?php 

/**
* MySQL实现事务操作
*/

echo "<meta charset=utf-8>";

// 1 连接数据库
$link = @mysql_connect('localhost','root','') or die('连接数据库失败');
mysql_select_db('test',$link);
mysql_query('set names utf8');

// 2  开启事务
mysql_query("start transaction");
//设置一个变量,用来判断所有sql语句是否成功
$flag = true;

// 2.1执行事务中的一组sql语句 
   
// 李四的money+1000
$sql = "update pdo set mone=money+1000 where name='李四'";
$res = mysql_query($sql);
if (!$res) {
    //若sql语句执行失败,把$falg设置为false
    $flag = false;
}

//张三的money-1000
$sql = "update pdo set money=money-1000 where name='张三'";
$res = mysql_query($sql);
if (!$res) {
    //若sql语句执行失败,把$falg设置为false
    $flag = false;
}

// 2.2 判断事务是否执行成功
if ($flag) {
    //所有sql语句执行成功,把sql语句提交
    mysql_query('commit');
    echo "还钱成功!";
}else{
    // 如其中一条执行失败,则回滚到事务开启之前的状态
    mysql_query('rollback');
    echo "还钱失败!";
}
로그인 후 복사

결과: #🎜 🎜##🎜 🎜#

아래에서는 거래가 정상적으로 처리되는지, 데이터베이스의 금액이 변경됩니다!

// 李四的money+1000
$sql = "update pdo set mone=money+1000 where name='李四'";  //把moeny字段错写成mone
로그인 후 복사
결과:


결과는 상환 실패입니다. , 데이터베이스의 해당 금액은 변경되지 않았으며 특정 명령문이 성공적으로 실행되지 않으면 트랜잭션이 커밋되지 않고 롤백되어 트랜잭션을 시작하기 전의 데이터를 원래 상태로 복원한다는 것을 나타냅니다. 이것도 트랜잭션을 사용하는 역할입니다. 즉, #🎜 🎜#트랜잭션에 포함된 모든 SQL 문이 모두 성공적으로 실행되어야만 트랜잭션이 제출되고, 그렇지 않으면 롤백됩니다!

요약: 위 내용은 이 글의 전체 내용입니다. 모든 분들의 공부에 도움이 되었으면 좋겠습니다.

위 내용은 MySQL의 트랜잭션 처리란 무엇입니까? (코드 예)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:cnblogs.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿