MySQL 트랜잭션

黄舟
黄舟원래의
2017-02-06 10:34:211046검색

MySQL 트랜잭션은 주로 대규모 작업과 복잡성이 높은 데이터를 처리하는 데 사용됩니다. 예를 들어 인사관리시스템에서 사람을 삭제하면 그 사람의 기본정보도 함께 삭제해야 하고, 사서함, 물품 등 그 사람과 관련된 정보도 함께 삭제해야 한다. 이런 식으로 이들 데이터베이스는 작업문은 거래를 구성합니다.

  • MySQL에서는 Innodb 데이터베이스 엔진을 사용하는 데이터베이스나 테이블만 트랜잭션을 지원합니다.

  • 트랜잭션 처리를 사용하여 데이터베이스의 무결성을 유지할 수 있습니다. , SQL 문 배치가 모두 실행되거나 전혀 실행되지 않도록 보장합니다.

  • 삽입, 업데이트, 삭제 문을 관리하는 데 트랜잭션이 사용됩니다.

일반 일반적으로 트랜잭션은 4가지 조건(ACID)을 충족해야 합니다: Atomicity(원자성), Consistency(안정성), Isolation(격리성), Durability(신뢰성)

  • 1 . : 일련의 거래가 성공하거나 철회됩니다.

  • 2. 안정성: 불법 데이터(외래 키 제약 조건 등)가 있는 경우 거래가 철회됩니다.

  • 3. 격리: 트랜잭션이 독립적으로 실행됩니다. 한 거래의 결과가 다른 거래에 영향을 미치는 경우 다른 거래가 철회됩니다. 트랜잭션을 100% 격리하려면 속도가 희생되어야 합니다.

  • 4. 신뢰성: 소프트웨어나 하드웨어가 충돌한 후 InnoDB 데이터 테이블 드라이버는 로그 파일을 사용하여 이를 재구성하고 수정합니다. 신뢰성과 고속을 동시에 달성할 수는 없습니다. innodb_flush_log_at_trx_commit 옵션은 트랜잭션을 로그에 저장할 시기를 결정합니다.

Mysql 콘솔의 트랜잭션을 사용하여 작동

1, 트랜잭션 시작

트랜잭션 시작

2, 세이브포인트 만들기

세이브포인트 이름

3, 작업

4, 롤백 가능, 제출 가능, 문제 없으면 제출 가능 , 문제가 있으면 롤백을 제출하세요.

PHP에서 트랜잭션 사용 예시

<?php
$handler=mysql_connect("localhost","root","password");
mysql_select_db("task");
mysql_query("SET AUTOCOMMIT=0");//设置为不自动提交,因为MYSQL默认立即执行
mysql_query("BEGIN");//开始事务定义
if(!mysql_query("insert into trans (id) values(&#39;2&#39;)"))
{
mysql_query("ROLLBACK");//判断当执行失败时回滚
}
if(!mysql_query("insert into trans (id) values(&#39;4&#39;)"))
{
mysql_query("ROLLBACK");//判断执行失败回滚
}
mysql_query("COMMIT");//执行事务
mysql_close($handler);
?>

위는 MySQL 트랜잭션 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.