SQLite 자습서(5): 데이터베이스 및 트랜잭션

1. Attach 데이터베이스:
ATTACH DATABASE 문구는 현재 연결에 다른 데이터베이스 파일을 추가합니다. 파일 이름이':memory:'이면 메모리 데이터베이스로 간주할 수 있습니다. 메모리 데이터베이스가 디스크 파일에 오래 지속되지 않습니다.Attached 데이터베이스에 있는 테이블을 조작하려면 테이블 이름 앞에 데이터베이스 이름을 추가해야 합니다. 예를 들어dbname.table_name.마지막으로 설명해야 할 것은, 만약에 하나의 업무가 여러 개의Attached 데이터베이스 조작을 포함한다면, 이 업무는 여전히 원자적이다.다음 예제를 참조하십시오.
 

    sqlite> CREATE TABLE testtable (first_col integer);
    sqlite> INSERT INTO testtable VALUES(1);
    sqlite> .backup 'D:/mydb.db'   -- 。
    sqlite> .exit
    -- sqlite :
    sqlite> CREATE TABLE testtable (first_col integer);
    sqlite> INSERT INTO testtable VALUES(2);
    sqlite> INSERT INTO testtable VALUES(1);
    sqlite> ATTACH DATABASE 'D:/mydb.db' AS mydb;   
    sqlite> .header on            -- 。
    sqlite> .mode column        -- 。
    sqlite> SELECT t1.first_col FROM testtable t1, mydb.testtable t2 WHERE t.first_col = t2.first_col;
    first_col
    ----------
    1   
2. Detach 데이터베이스:
    
현재 연결된 지정한 데이터베이스를 마운트 해제합니다.main과temp 데이터베이스는 마운트 해제할 수 없습니다.다음 예제를 참조하십시오.
 

    -- , mydb Attach 。
    sqlite> DETACH DATABASE mydb;
    sqlite> SELECT t1.first_col FROM testtable t1, mydb.testtable t2 WHERE t.first_col = t2.first_col;
    Error: no such table: mydb.testtable
   
3. 업무:
SQLite에서 현재 SQL 명령(SELECT 제외)에 대해 지정된 트랜잭션이 표시되지 않으면 SQLite는 자동으로 이 작업의 원자성과 일치성을 보장하기 위해 스텔스 트랜잭션을 추가합니다.물론 SQLite도 대부분의 관계형 데이터베이스에 비해 문법이 기본적으로 같은 사무를 지원합니다.다음 예제를 참조하십시오.
 

    sqlite> BEGIN TRANSACTION;
    sqlite> INSERT INTO testtable VALUES(1);
    sqlite> INSERT INTO testtable VALUES(2);
    sqlite> COMMIT TRANSACTION;      -- , 。
    sqlite> SELECT COUNT(*) FROM testtable;
    COUNT(*)
    ----------
    2
    sqlite> BEGIN TRANSACTION;
    sqlite> INSERT INTO testtable VALUES(1);
    sqlite> ROLLBACK TRANSACTION;  -- , 。
    sqlite> SELECT COUNT(*) FROM testtable;
    COUNT(*)
    ----------
    2

좋은 웹페이지 즐겨찾기