⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 conflict.test

📁 最新的sqlite3.6.2源代码
💻 TEST
📖 第 1 页 / 共 2 页
字号:
# Make sure the row count is right for rows that are ignored on# an insert.#do_test conflict-8.1 {  execsql {    DELETE FROM t1;    INSERT INTO t1 VALUES(1,2);  }  execsql {    INSERT OR IGNORE INTO t1 VALUES(2,3);  }} {1}do_test conflict-8.1.1 {  db changes} {1}do_test conflict-8.2 {  execsql {    INSERT OR IGNORE INTO t1 VALUES(2,4);  }} {0}do_test conflict-8.2.1 {  db changes} {0}do_test conflict-8.3 {  execsql {    INSERT OR REPLACE INTO t1 VALUES(2,4);  }} {1}do_test conflict-8.3.1 {  db changes} {1}do_test conflict-8.4 {  execsql {    INSERT OR IGNORE INTO t1 SELECT * FROM t1;  }} {0}do_test conflict-8.4.1 {  db changes} {0}do_test conflict-8.5 {  execsql {    INSERT OR IGNORE INTO t1 SELECT a+2,b+2 FROM t1;  }} {2}do_test conflict-8.5.1 {  db changes} {2}do_test conflict-8.6 {  execsql {    INSERT OR IGNORE INTO t1 SELECT a+3,b+3 FROM t1;  }} {3}do_test conflict-8.6.1 {  db changes} {3}integrity_check conflict-8.99do_test conflict-9.1 {  execsql {    PRAGMA count_changes=0;    CREATE TABLE t2(      a INTEGER UNIQUE ON CONFLICT IGNORE,      b INTEGER UNIQUE ON CONFLICT FAIL,      c INTEGER UNIQUE ON CONFLICT REPLACE,      d INTEGER UNIQUE ON CONFLICT ABORT,      e INTEGER UNIQUE ON CONFLICT ROLLBACK    );    CREATE TABLE t3(x);    INSERT INTO t3 VALUES(1);    SELECT * FROM t3;  }} {1}do_test conflict-9.2 {  catchsql {    INSERT INTO t2 VALUES(1,1,1,1,1);    INSERT INTO t2 VALUES(2,2,2,2,2);    SELECT * FROM t2;  }} {0 {1 1 1 1 1 2 2 2 2 2}}do_test conflict-9.3 {  catchsql {    INSERT INTO t2 VALUES(1,3,3,3,3);    SELECT * FROM t2;  }} {0 {1 1 1 1 1 2 2 2 2 2}}do_test conflict-9.4 {  catchsql {    UPDATE t2 SET a=a+1 WHERE a=1;    SELECT * FROM t2;  }} {0 {1 1 1 1 1 2 2 2 2 2}}do_test conflict-9.5 {  catchsql {    INSERT INTO t2 VALUES(3,1,3,3,3);    SELECT * FROM t2;  }} {1 {column b is not unique}}do_test conflict-9.6 {  catchsql {    UPDATE t2 SET b=b+1 WHERE b=1;    SELECT * FROM t2;  }} {1 {column b is not unique}}do_test conflict-9.7 {  catchsql {    BEGIN;    UPDATE t3 SET x=x+1;    INSERT INTO t2 VALUES(3,1,3,3,3);    SELECT * FROM t2;  }} {1 {column b is not unique}}do_test conflict-9.8 {  execsql {COMMIT}  execsql {SELECT * FROM t3}} {2}do_test conflict-9.9 {  catchsql {    BEGIN;    UPDATE t3 SET x=x+1;    UPDATE t2 SET b=b+1 WHERE b=1;    SELECT * FROM t2;  }} {1 {column b is not unique}}do_test conflict-9.10 {  execsql {COMMIT}  execsql {SELECT * FROM t3}} {3}do_test conflict-9.11 {  catchsql {    INSERT INTO t2 VALUES(3,3,3,1,3);    SELECT * FROM t2;  }} {1 {column d is not unique}}do_test conflict-9.12 {  catchsql {    UPDATE t2 SET d=d+1 WHERE d=1;    SELECT * FROM t2;  }} {1 {column d is not unique}}do_test conflict-9.13 {  catchsql {    BEGIN;    UPDATE t3 SET x=x+1;    INSERT INTO t2 VALUES(3,3,3,1,3);    SELECT * FROM t2;  }} {1 {column d is not unique}}do_test conflict-9.14 {  execsql {COMMIT}  execsql {SELECT * FROM t3}} {4}do_test conflict-9.15 {  catchsql {    BEGIN;    UPDATE t3 SET x=x+1;    UPDATE t2 SET d=d+1 WHERE d=1;    SELECT * FROM t2;  }} {1 {column d is not unique}}do_test conflict-9.16 {  execsql {COMMIT}  execsql {SELECT * FROM t3}} {5}do_test conflict-9.17 {  catchsql {    INSERT INTO t2 VALUES(3,3,3,3,1);    SELECT * FROM t2;  }} {1 {column e is not unique}}do_test conflict-9.18 {  catchsql {    UPDATE t2 SET e=e+1 WHERE e=1;    SELECT * FROM t2;  }} {1 {column e is not unique}}do_test conflict-9.19 {  catchsql {    BEGIN;    UPDATE t3 SET x=x+1;    INSERT INTO t2 VALUES(3,3,3,3,1);    SELECT * FROM t2;  }} {1 {column e is not unique}}do_test conflict-9.20 {  catch {execsql {COMMIT}}  execsql {SELECT * FROM t3}} {5}do_test conflict-9.21 {  catchsql {    BEGIN;    UPDATE t3 SET x=x+1;    UPDATE t2 SET e=e+1 WHERE e=1;    SELECT * FROM t2;  }} {1 {column e is not unique}}do_test conflict-9.22 {  catch {execsql {COMMIT}}  execsql {SELECT * FROM t3}} {5}do_test conflict-9.23 {  catchsql {    INSERT INTO t2 VALUES(3,3,1,3,3);    SELECT * FROM t2;  }} {0 {2 2 2 2 2 3 3 1 3 3}}do_test conflict-9.24 {  catchsql {    UPDATE t2 SET c=c-1 WHERE c=2;    SELECT * FROM t2;  }} {0 {2 2 1 2 2}}do_test conflict-9.25 {  catchsql {    BEGIN;    UPDATE t3 SET x=x+1;    INSERT INTO t2 VALUES(3,3,1,3,3);    SELECT * FROM t2;  }} {0 {3 3 1 3 3}}do_test conflict-9.26 {  catch {execsql {COMMIT}}  execsql {SELECT * FROM t3}} {6}do_test conflict-10.1 {  catchsql {    DELETE FROM t1;    BEGIN;    INSERT OR ROLLBACK INTO t1 VALUES(1,2);    INSERT OR ROLLBACK INTO t1 VALUES(1,3);    COMMIT;  }  execsql {SELECT * FROM t1}} {}do_test conflict-10.2 {  catchsql {    CREATE TABLE t4(x);    CREATE UNIQUE INDEX t4x ON t4(x);    BEGIN;    INSERT OR ROLLBACK INTO t4 VALUES(1);    INSERT OR ROLLBACK INTO t4 VALUES(1);    COMMIT;  }  execsql {SELECT * FROM t4}} {}# Ticket #1171.  Make sure statement rollbacks do not# damage the database.#do_test conflict-11.1 {  execsql {    -- Create a database object (pages 2, 3 of the file)    BEGIN;      CREATE TABLE abc(a UNIQUE, b, c);      INSERT INTO abc VALUES(1, 2, 3);      INSERT INTO abc VALUES(4, 5, 6);      INSERT INTO abc VALUES(7, 8, 9);    COMMIT;  }    # Set a small cache size so that changes will spill into  # the database file.    execsql {    PRAGMA cache_size = 10;  }    # Make lots of changes.  Because of the small cache, some  # (most?) of these changes will spill into the disk file.  # In other words, some of the changes will not be held in  # cache.  #  execsql {    BEGIN;      -- Make sure the pager is in EXCLUSIVE state.      CREATE TABLE def(d, e, f);      INSERT INTO def VALUES          ('xxxxxxxxxxxxxxx', 'yyyyyyyyyyyyyyyy', 'zzzzzzzzzzzzzzzz');      INSERT INTO def SELECT * FROM def;      INSERT INTO def SELECT * FROM def;      INSERT INTO def SELECT * FROM def;      INSERT INTO def SELECT * FROM def;      INSERT INTO def SELECT * FROM def;      INSERT INTO def SELECT * FROM def;      INSERT INTO def SELECT * FROM def;      DELETE FROM abc WHERE a = 4;  }  # Execute a statement that does a statement rollback due to  # a constraint failure.  #  catchsql {    INSERT INTO abc SELECT 10, 20, 30 FROM def;  }  # Rollback the database.  Verify that the state of the ABC table  # is unchanged from the beginning of the transaction.  In other words,  # make sure the DELETE on table ABC that occurred within the transaction  # had no effect.  #  execsql {    ROLLBACK;    SELECT * FROM abc;  }} {1 2 3 4 5 6 7 8 9}integrity_check conflict-11.2# Repeat test conflict-11.1 but this time commit.#do_test conflict-11.3 {  execsql {    BEGIN;      -- Make sure the pager is in EXCLUSIVE state.      UPDATE abc SET a=a+1;      CREATE TABLE def(d, e, f);      INSERT INTO def VALUES          ('xxxxxxxxxxxxxxx', 'yyyyyyyyyyyyyyyy', 'zzzzzzzzzzzzzzzz');      INSERT INTO def SELECT * FROM def;      INSERT INTO def SELECT * FROM def;      INSERT INTO def SELECT * FROM def;      INSERT INTO def SELECT * FROM def;      INSERT INTO def SELECT * FROM def;      INSERT INTO def SELECT * FROM def;      INSERT INTO def SELECT * FROM def;      DELETE FROM abc WHERE a = 4;  }  catchsql {    INSERT INTO abc SELECT 10, 20, 30 FROM def;  }  execsql {    ROLLBACK;    SELECT * FROM abc;  }} {1 2 3 4 5 6 7 8 9}# Repeat test conflict-11.1 but this time commit.#do_test conflict-11.5 {  execsql {    BEGIN;      -- Make sure the pager is in EXCLUSIVE state.      CREATE TABLE def(d, e, f);      INSERT INTO def VALUES          ('xxxxxxxxxxxxxxx', 'yyyyyyyyyyyyyyyy', 'zzzzzzzzzzzzzzzz');      INSERT INTO def SELECT * FROM def;      INSERT INTO def SELECT * FROM def;      INSERT INTO def SELECT * FROM def;      INSERT INTO def SELECT * FROM def;      INSERT INTO def SELECT * FROM def;      INSERT INTO def SELECT * FROM def;      INSERT INTO def SELECT * FROM def;      DELETE FROM abc WHERE a = 4;  }  catchsql {    INSERT INTO abc SELECT 10, 20, 30 FROM def;  }  execsql {    COMMIT;    SELECT * FROM abc;  }} {1 2 3 7 8 9}integrity_check conflict-11.6# Make sure UPDATE OR REPLACE works on tables that have only# an INTEGER PRIMARY KEY.#do_test conflict-12.1 {  execsql {    CREATE TABLE t5(a INTEGER PRIMARY KEY, b text);    INSERT INTO t5 VALUES(1,'one');    INSERT INTO t5 VALUES(2,'two');    SELECT * FROM t5  }} {1 one 2 two}do_test conflict-12.2 {  execsql {    UPDATE OR IGNORE t5 SET a=a+1 WHERE a=1;    SELECT * FROM t5;  }} {1 one 2 two}do_test conflict-12.3 {  catchsql {    UPDATE t5 SET a=a+1 WHERE a=1;  }} {1 {PRIMARY KEY must be unique}}do_test conflict-12.4 {  execsql {    UPDATE OR REPLACE t5 SET a=a+1 WHERE a=1;    SELECT * FROM t5;  }} {2 one}finish_test

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -