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

📄 attach2.test

📁 sqlite数据库源码
💻 TEST
字号:
# 2003 July 1## The author disclaims copyright to this source code.  In place of# a legal notice, here is a blessing:##    May you do good and not evil.#    May you find forgiveness for yourself and forgive others.#    May you share freely, never taking more than you give.##***********************************************************************# This file implements regression tests for SQLite library.  The# focus of this script is testing the ATTACH and DETACH commands# and related functionality.## $Id: attach2.test,v 1.5 2004/02/12 15:31:22 drh Exp $#set testdir [file dirname $argv0]source $testdir/tester.tcl# Ticket #354#do_test attach2-1.1 {  db eval {    CREATE TABLE t1(a,b);    CREATE INDEX x1 ON t1(a);  }  file delete -force test2.db  file delete -force test2.db-journal  sqlite db2 test2.db  db2 eval {    CREATE TABLE t1(a,b);    CREATE INDEX x1 ON t1(a);  }  catchsql {    ATTACH 'test2.db' AS t2;  }} {0 {}}# Ticket #514#proc db_list {db} {  set list {}  foreach {idx name file} [execsql {PRAGMA database_list} $db] {    lappend list $idx $name  }  return $list}db eval {DETACH t2}do_test attach2-2.1 {  # lock test2.db then try to attach it.  Should get an error.  db2 eval {BEGIN}  catchsql {    ATTACH 'test2.db' AS t2;  }} {1 {database is locked}}do_test attach2-2.2 {  # make sure test2.db did not get attached.  db_list db} {0 main 1 temp}do_test attach2-2.3 {  # unlock test2.db and try to attach again.  should work this time.  db2 eval {COMMIT}  catchsql {    ATTACH 'test2.db' AS t2;  }} {0 {}}do_test attach2-2.4 {  db_list db} {0 main 1 temp 2 t2}do_test attach2-2.5 {  catchsql {    SELECT name FROM t2.sqlite_master;  }} {0 {t1 x1}}do_test attach2-2.6 {  # lock test2.db and try to read from it.  should get an error.  db2 eval BEGIN  catchsql {    SELECT name FROM t2.sqlite_master;  }} {1 {database is locked}}do_test attach2-2.7 {  # but we can still read from test1.db even though test2.db is locked.  catchsql {    SELECT name FROM main.sqlite_master;  }} {0 {t1 x1}}do_test attach2-2.8 {  # start a transaction on test.db even though test2.db is locked.  catchsql {    BEGIN;    INSERT INTO t1 VALUES(8,9);  }} {0 {}}do_test attach2-2.9 {  execsql {    SELECT * FROM t1  }} {8 9}do_test attach2-2.10 {  # now try to write to test2.db.  the write should fail  catchsql {    INSERT INTO t2.t1 VALUES(1,2);  }} {1 {database is locked}}do_test attach2-2.11 {  # when the write failed in the previous test, the transaction should  # have rolled back.  db2 eval ROLLBACK  execsql {    SELECT * FROM t1  }} {}do_test attach2-2.12 {  catchsql {    COMMIT  }} {1 {cannot commit - no transaction is active}}# Ticket #574:  Make sure it works usingi the non-callback API#do_test attach2-3.1 {  db close  set DB [sqlite db test.db]  set rc [catch {sqlite_compile $DB "ATTACH 'test2.db' AS t2" TAIL} VM]  if {$rc} {lappend rc $VM}  sqlite_finalize $VM  set rc} {0}do_test attach2-3.2 {  set rc [catch {sqlite_compile $DB "DETACH t2" TAIL} VM]  if {$rc} {lappend rc $VM}  sqlite_finalize $VM  set rc} {0}db closefor {set i 2} {$i<=15} {incr i} {  catch {db$i close}}file delete -force test2.dbfinish_test

⌨️ 快捷键说明

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