📄 update.test
字号:
} {}do_test update-6.3.3 { execsql {SELECT * FROM test1 WHERE f2==88 ORDER BY f1,f2}} {8 88}do_test update-6.4 { execsql {UPDATE test1 SET f1=f1+1 WHERE f2==128} execsql {SELECT * FROM test1 ORDER BY f1,f2}} {6 64 8 88 8 128 8 256 8 888 9 512 10 1024 78 128 778 128}do_test update-6.4.1 { execsql {SELECT * FROM test1 WHERE f1==78 ORDER BY f1,f2}} {78 128}do_test update-6.4.2 { execsql {SELECT * FROM test1 WHERE f1==778 ORDER BY f1,f2}} {778 128}do_test update-6.4.3 { execsql {SELECT * FROM test1 WHERE f1==8 ORDER BY f1,f2}} {8 88 8 128 8 256 8 888}do_test update-6.5 { execsql {UPDATE test1 SET f1=f1-1 WHERE f1>100 and f2==128} execsql {SELECT * FROM test1 ORDER BY f1,f2}} {6 64 8 88 8 128 8 256 8 888 9 512 10 1024 78 128 777 128}do_test update-6.5.1 { execsql {SELECT * FROM test1 WHERE f1==78 ORDER BY f1,f2}} {78 128}do_test update-6.5.2 { execsql {SELECT * FROM test1 WHERE f1==778 ORDER BY f1,f2}} {}do_test update-6.5.3 { execsql {SELECT * FROM test1 WHERE f1==777 ORDER BY f1,f2}} {777 128}do_test update-6.5.4 { execsql {SELECT * FROM test1 WHERE f1==8 ORDER BY f1,f2}} {8 88 8 128 8 256 8 888}do_test update-6.6 { execsql {UPDATE test1 SET f1=f1-1 WHERE f1<=100 and f2==128} execsql {SELECT * FROM test1 ORDER BY f1,f2}} {6 64 7 128 8 88 8 256 8 888 9 512 10 1024 77 128 777 128}do_test update-6.6.1 { execsql {SELECT * FROM test1 WHERE f1==77 ORDER BY f1,f2}} {77 128}do_test update-6.6.2 { execsql {SELECT * FROM test1 WHERE f1==778 ORDER BY f1,f2}} {}do_test update-6.6.3 { execsql {SELECT * FROM test1 WHERE f1==777 ORDER BY f1,f2}} {777 128}do_test update-6.6.4 { execsql {SELECT * FROM test1 WHERE f1==8 ORDER BY f1,f2}} {8 88 8 256 8 888}# Repeat the previous sequence of tests with multiple# indices#do_test update-7.0 { execsql {CREATE INDEX idx2 ON test1(f2)} execsql {CREATE INDEX idx3 ON test1(f1,f2)} execsql {SELECT * FROM test1 ORDER BY f1,f2}} {6 64 7 128 8 88 8 256 8 888 9 512 10 1024 77 128 777 128}do_test update-7.1 { execsql {UPDATE test1 SET f2=f2+1 WHERE f1==8} execsql {SELECT * FROM test1 ORDER BY f1,f2}} {6 64 7 128 8 89 8 257 8 889 9 512 10 1024 77 128 777 128}do_test update-7.1.1 { execsql {SELECT * FROM test1 WHERE f1==8 ORDER BY f1,f2}} {8 89 8 257 8 889}do_test update-7.1.2 { execsql {SELECT * FROM test1 WHERE f2==89 ORDER BY f1,f2}} {8 89}do_test update-7.1.3 { execsql {SELECT * FROM test1 WHERE f1==88 ORDER BY f1,f2}} {}do_test update-7.2 { execsql {UPDATE test1 SET f2=f2-1 WHERE f1==8 and f2>800} execsql {SELECT * FROM test1 ORDER BY f1,f2}} {6 64 7 128 8 89 8 257 8 888 9 512 10 1024 77 128 777 128}do_test update-7.3 { # explain {UPDATE test1 SET f2=f2-1 WHERE f1==8 and F2<300} execsql {UPDATE test1 SET f2=f2-1 WHERE f1==8 and f2<800} execsql {SELECT * FROM test1 ORDER BY f1,f2}} {6 64 7 128 8 88 8 256 8 888 9 512 10 1024 77 128 777 128}do_test update-7.3.1 { execsql {SELECT * FROM test1 WHERE f1==8 ORDER BY f1,f2}} {8 88 8 256 8 888}do_test update-7.3.2 { execsql {SELECT * FROM test1 WHERE f2==89 ORDER BY f1,f2}} {}do_test update-7.3.3 { execsql {SELECT * FROM test1 WHERE f2==88 ORDER BY f1,f2}} {8 88}do_test update-7.4 { execsql {UPDATE test1 SET f1=f1+1 WHERE f2==128} execsql {SELECT * FROM test1 ORDER BY f1,f2}} {6 64 8 88 8 128 8 256 8 888 9 512 10 1024 78 128 778 128}do_test update-7.4.1 { execsql {SELECT * FROM test1 WHERE f1==78 ORDER BY f1,f2}} {78 128}do_test update-7.4.2 { execsql {SELECT * FROM test1 WHERE f1==778 ORDER BY f1,f2}} {778 128}do_test update-7.4.3 { execsql {SELECT * FROM test1 WHERE f1==8 ORDER BY f1,f2}} {8 88 8 128 8 256 8 888}do_test update-7.5 { execsql {UPDATE test1 SET f1=f1-1 WHERE f1>100 and f2==128} execsql {SELECT * FROM test1 ORDER BY f1,f2}} {6 64 8 88 8 128 8 256 8 888 9 512 10 1024 78 128 777 128}do_test update-7.5.1 { execsql {SELECT * FROM test1 WHERE f1==78 ORDER BY f1,f2}} {78 128}do_test update-7.5.2 { execsql {SELECT * FROM test1 WHERE f1==778 ORDER BY f1,f2}} {}do_test update-7.5.3 { execsql {SELECT * FROM test1 WHERE f1==777 ORDER BY f1,f2}} {777 128}do_test update-7.5.4 { execsql {SELECT * FROM test1 WHERE f1==8 ORDER BY f1,f2}} {8 88 8 128 8 256 8 888}do_test update-7.6 { execsql {UPDATE test1 SET f1=f1-1 WHERE f1<=100 and f2==128} execsql {SELECT * FROM test1 ORDER BY f1,f2}} {6 64 7 128 8 88 8 256 8 888 9 512 10 1024 77 128 777 128}do_test update-7.6.1 { execsql {SELECT * FROM test1 WHERE f1==77 ORDER BY f1,f2}} {77 128}do_test update-7.6.2 { execsql {SELECT * FROM test1 WHERE f1==778 ORDER BY f1,f2}} {}do_test update-7.6.3 { execsql {SELECT * FROM test1 WHERE f1==777 ORDER BY f1,f2}} {777 128}do_test update-7.6.4 { execsql {SELECT * FROM test1 WHERE f1==8 ORDER BY f1,f2}} {8 88 8 256 8 888}# Error messages#do_test update-9.1 { set v [catch {execsql { UPDATE test1 SET x=11 WHERE f1=1025 }} msg] lappend v $msg} {1 {no such column: x}}do_test update-9.2 { set v [catch {execsql { UPDATE test1 SET f1=x(11) WHERE f1=1025 }} msg] lappend v $msg} {1 {no such function: x}}do_test update-9.3 { set v [catch {execsql { UPDATE test1 SET f1=11 WHERE x=1025 }} msg] lappend v $msg} {1 {no such column: x}}do_test update-9.4 { set v [catch {execsql { UPDATE test1 SET f1=11 WHERE x(f1)=1025 }} msg] lappend v $msg} {1 {no such function: x}}# Try doing updates on a unique column where the value does not# really change.#do_test update-10.1 { execsql { DROP TABLE test1; CREATE TABLE t1( a integer primary key, b UNIQUE, c, d, e, f, UNIQUE(c,d) ); INSERT INTO t1 VALUES(1,2,3,4,5,6); INSERT INTO t1 VALUES(2,3,4,4,6,7); SELECT * FROM t1 }} {1 2 3 4 5 6 2 3 4 4 6 7}do_test update-10.2 { catchsql { UPDATE t1 SET a=1, e=9 WHERE f=6; SELECT * FROM t1; }} {0 {1 2 3 4 9 6 2 3 4 4 6 7}}do_test update-10.3 { catchsql { UPDATE t1 SET a=1, e=10 WHERE f=7; SELECT * FROM t1; }} {1 {PRIMARY KEY must be unique}}do_test update-10.4 { catchsql { SELECT * FROM t1; }} {0 {1 2 3 4 9 6 2 3 4 4 6 7}}do_test update-10.5 { catchsql { UPDATE t1 SET b=2, e=11 WHERE f=6; SELECT * FROM t1; }} {0 {1 2 3 4 11 6 2 3 4 4 6 7}}do_test update-10.6 { catchsql { UPDATE t1 SET b=2, e=12 WHERE f=7; SELECT * FROM t1; }} {1 {column b is not unique}}do_test update-10.7 { catchsql { SELECT * FROM t1; }} {0 {1 2 3 4 11 6 2 3 4 4 6 7}}do_test update-10.8 { catchsql { UPDATE t1 SET c=3, d=4, e=13 WHERE f=6; SELECT * FROM t1; }} {0 {1 2 3 4 13 6 2 3 4 4 6 7}}do_test update-10.9 { catchsql { UPDATE t1 SET c=3, d=4, e=14 WHERE f=7; SELECT * FROM t1; }} {1 {columns c, d are not unique}}do_test update-10.10 { catchsql { SELECT * FROM t1; }} {0 {1 2 3 4 13 6 2 3 4 4 6 7}}# Make sure we can handle a subquery in the where clause.#do_test update-11.1 { execsql { UPDATE t1 SET e=e+1 WHERE b IN (SELECT b FROM t1); SELECT b,e FROM t1; }} {2 14 3 7}do_test update-11.2 { execsql { UPDATE t1 SET e=e+1 WHERE a IN (SELECT a FROM t1); SELECT a,e FROM t1; }} {1 15 2 8}integrity_check update-12.1finish_test
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -