SQLite 클래식 튜토리얼login
SQLite 클래식 튜토리얼
작가:php.cn  업데이트 시간:2022-04-13 17:05:02

SQLite 트랜잭션


트랜잭션은 데이터베이스에서 수행되는 작업 단위입니다. 트랜잭션은 논리적 순서로 완료되는 작업 단위 또는 순서입니다. 이는 사용자가 수동으로 완료하거나 일부 데이터베이스 프로그램에 의해 자동으로 완료될 수 있습니다.

트랜잭션은 데이터베이스를 변경하는 하나 이상의 확장을 의미합니다. 예를 들어, 레코드를 생성하거나, 레코드를 업데이트하거나, 테이블에서 레코드를 삭제하는 경우 해당 테이블에서 트랜잭션을 수행하는 것입니다. 데이터 무결성을 보장하고 데이터베이스 오류를 처리하려면 트랜잭션을 제어하는 ​​것이 중요합니다.

실제로 많은 SQLite 쿼리를 하나의 그룹으로 결합하고 트랜잭션의 일부로 모두 함께 실행할 수 있습니다.

트랜잭션 속성

트랜잭션에는 다음과 같은 네 가지 표준 속성이 있습니다. 일반적으로 약어를 기반으로 하는 ACID입니다.

  • 원자성 ): 작업 단위 내의 모든 작업이 성공적으로 완료됩니다. 그렇지 않으면 트랜잭션이 실패 시 종료되고 이전 작업이 이전 상태로 롤백됩니다.

  • 일관성: 성공적으로 커밋된 트랜잭션에서 데이터베이스 상태가 올바르게 변경되는지 확인합니다.

  • 격리: 거래 운영을 독립적이고 투명하게 만듭니다.

  • 내구성: 시스템 오류가 발생해도 커밋된 트랜잭션의 결과 또는 효과가 지속되도록 보장합니다.

트랜잭션 제어

다음 명령을 사용하여 트랜잭션을 제어합니다.

  • BEGIN TRANSACTION: 시작 거래 처리.

  • COMMIT: 변경 사항을 저장하거나 END TRANSACTION 명령을 사용할 수 있습니다.

  • ROLLBACK: 변경 사항을 롤백합니다.

트랜잭션 제어 명령은 DML 명령 INSERT, UPDATE 및 DELETE에만 사용됩니다. 이러한 작업은 데이터베이스에서 자동으로 커밋되므로 테이블을 생성하거나 테이블을 삭제할 때 사용할 수 없습니다.

BEGIN TRANSACTION 명령

BEGIN TRANSACTION 명령 또는 간단한 BEGIN 명령을 사용하여 트랜잭션을 시작할 수 있습니다. 이러한 트랜잭션은 일반적으로 다음 COMMIT 또는 ROLLBACK 명령이 발생할 때까지 계속됩니다. 그러나 데이터베이스가 닫히거나 오류가 발생하면 트랜잭션도 롤백됩니다. 다음은 트랜잭션을 시작하는 간단한 구문입니다.

BEGIN;

or 

BEGIN TRANSACTION;

COMMIT 명령

COMMIT 명령은 트랜잭션에서 호출한 변경 사항을 데이터베이스에 저장하는 데 사용되는 트랜잭션 명령입니다.

COMMIT 명령은 마지막 COMMIT 또는 ROLLBACK 명령 이후의 모든 트랜잭션을 데이터베이스에 저장합니다.

COMMIT 명령의 구문은 다음과 같습니다.

COMMIT;

or

END TRANSACTION;

ROLLBACK 명령

ROLLBACK 명령은 아직 저장되지 않은 트랜잭션을 실행 취소하는 데 사용되는 트랜잭션 명령입니다. 데이터 베이스.

ROLLBACK 명령은 마지막 COMMIT 또는 ROLLBACK 명령이 실행된 이후 트랜잭션을 실행 취소하는 데에만 사용할 수 있습니다.

ROLLBACK 명령의 구문은 다음과 같습니다.

ROLLBACK;

COMPANY 테이블에 다음 레코드가 있다고 가정합니다.

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
2           Allen       25          Texas       15000.0
3           Teddy       23          Norway      20000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0
6           Kim         22          South-Hall  45000.0
7           James       24          Houston     10000.0

자, 트랜잭션을 시작하고 시작 연령 = 25인 레코드가 테이블에서 삭제됩니다. 마지막으로 ROLLBACK 명령을 사용하여 모든 변경 사항을 취소합니다.

sqlite> BEGIN;
sqlite> DELETE FROM COMPANY WHERE AGE = 25;
sqlite> ROLLBACK;

COMPANY 테이블을 확인하면 여전히 다음 레코드가 있습니다.

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
2           Allen       25          Texas       15000.0
3           Teddy       23          Norway      20000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0
6           Kim         22          South-Hall  45000.0
7           James       24          Houston     10000.0

이제 다른 트랜잭션을 시작하여 테이블에서 age = 25 레코드를 삭제하고 마지막으로 COMMIT를 사용합니다. 모든 변경 사항을 커밋하는 명령입니다.

sqlite> BEGIN;
sqlite> DELETE FROM COMPANY WHERE AGE = 25;
sqlite> COMMIT;

COMPANY 테이블을 확인하면 다음과 같은 기록이 있습니다.

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
3           Teddy       23          Norway      20000.0
5           David       27          Texas       85000.0
6           Kim         22          South-Hall  45000.0
7           James       24          Houston     10000.0

PHP 중국어 웹사이트