📄 attach2.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 + -