Add PRAGMA foreign_key_check. Name the child and parent tables as part of
a "foreign key mismatch" error. FossilOrigin-Name: e408dc9080594dc464b8763dece6b365772c6105
This commit is contained in:
+22
-21
@@ -627,7 +627,8 @@ proc test_efkey_57 {tn isError sql} {
|
||||
execsql $sql
|
||||
do_test e_fkey-18.$tn {
|
||||
catchsql { INSERT INTO t2 VALUES(NULL) }
|
||||
} [lindex {{0 {}} {1 {foreign key mismatch}}} $isError]
|
||||
} [lindex {{0 {}} {/1 {foreign key mismatch - ".*" referencing ".*"}/}} \
|
||||
$isError]
|
||||
}
|
||||
test_efkey_57 2 0 { CREATE TABLE t1(x PRIMARY KEY) }
|
||||
test_efkey_57 3 0 { CREATE TABLE t1(x UNIQUE) }
|
||||
@@ -698,16 +699,16 @@ do_test e_fkey-19.2 {
|
||||
} {}
|
||||
do_test e_fkey-19.2 {
|
||||
catchsql { INSERT INTO child4 VALUES('xxx', 5) }
|
||||
} {1 {foreign key mismatch}}
|
||||
} {1 {foreign key mismatch - "child4" referencing "parent"}}
|
||||
do_test e_fkey-19.3 {
|
||||
catchsql { INSERT INTO child5 VALUES('xxx', 6) }
|
||||
} {1 {foreign key mismatch}}
|
||||
} {1 {foreign key mismatch - "child5" referencing "parent"}}
|
||||
do_test e_fkey-19.4 {
|
||||
catchsql { INSERT INTO child6 VALUES(2, 3) }
|
||||
} {1 {foreign key mismatch}}
|
||||
} {1 {foreign key mismatch - "child6" referencing "parent"}}
|
||||
do_test e_fkey-19.5 {
|
||||
catchsql { INSERT INTO child7 VALUES(3) }
|
||||
} {1 {foreign key mismatch}}
|
||||
} {1 {foreign key mismatch - "child7" referencing "parent"}}
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
# Test errors in the database schema that are detected while preparing
|
||||
@@ -765,12 +766,12 @@ do_test e_fkey-20.1 {
|
||||
|
||||
foreach {tn tbl ptbl err} {
|
||||
2 c1 {} "no such table: main.nosuchtable"
|
||||
3 c2 p2 "foreign key mismatch"
|
||||
4 c3 p3 "foreign key mismatch"
|
||||
5 c4 p4 "foreign key mismatch"
|
||||
6 c5 p5 "foreign key mismatch"
|
||||
7 c6 p6 "foreign key mismatch"
|
||||
8 c7 p7 "foreign key mismatch"
|
||||
3 c2 p2 "foreign key mismatch - \"c2\" referencing \"p2\""
|
||||
4 c3 p3 "foreign key mismatch - \"c3\" referencing \"p3\""
|
||||
5 c4 p4 "foreign key mismatch - \"c4\" referencing \"p4\""
|
||||
6 c5 p5 "foreign key mismatch - \"c5\" referencing \"p5\""
|
||||
7 c6 p6 "foreign key mismatch - \"c6\" referencing \"p6\""
|
||||
8 c7 p7 "foreign key mismatch - \"c7\" referencing \"p7\""
|
||||
} {
|
||||
do_test e_fkey-20.$tn.1 {
|
||||
catchsql "INSERT INTO $tbl VALUES('a', 'b')"
|
||||
@@ -820,22 +821,22 @@ do_test e_fkey-21.2 {
|
||||
} {}
|
||||
do_test e_fkey-21.3 {
|
||||
catchsql { INSERT INTO child9 VALUES('I') }
|
||||
} {1 {foreign key mismatch}}
|
||||
} {1 {foreign key mismatch - "child9" referencing "parent2"}}
|
||||
do_test e_fkey-21.4 {
|
||||
catchsql { INSERT INTO child9 VALUES('II') }
|
||||
} {1 {foreign key mismatch}}
|
||||
} {1 {foreign key mismatch - "child9" referencing "parent2"}}
|
||||
do_test e_fkey-21.5 {
|
||||
catchsql { INSERT INTO child9 VALUES(NULL) }
|
||||
} {1 {foreign key mismatch}}
|
||||
} {1 {foreign key mismatch - "child9" referencing "parent2"}}
|
||||
do_test e_fkey-21.6 {
|
||||
catchsql { INSERT INTO child10 VALUES('I', 'II', 'III') }
|
||||
} {1 {foreign key mismatch}}
|
||||
} {1 {foreign key mismatch - "child10" referencing "parent2"}}
|
||||
do_test e_fkey-21.7 {
|
||||
catchsql { INSERT INTO child10 VALUES(1, 2, 3) }
|
||||
} {1 {foreign key mismatch}}
|
||||
} {1 {foreign key mismatch - "child10" referencing "parent2"}}
|
||||
do_test e_fkey-21.8 {
|
||||
catchsql { INSERT INTO child10 VALUES(NULL, NULL, NULL) }
|
||||
} {1 {foreign key mismatch}}
|
||||
} {1 {foreign key mismatch - "child10" referencing "parent2"}}
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
# Test errors that are reported when creating the child table.
|
||||
@@ -1151,7 +1152,7 @@ do_test e_fkey-28.8 {
|
||||
CREATE TABLE c(a, b, FOREIGN KEY(a,b) REFERENCES p);
|
||||
}
|
||||
catchsql {DELETE FROM p}
|
||||
} {1 {foreign key mismatch}}
|
||||
} {1 {foreign key mismatch - "c" referencing "p"}}
|
||||
do_test e_fkey-28.9 {
|
||||
drop_all_tables
|
||||
execsql {
|
||||
@@ -1159,7 +1160,7 @@ do_test e_fkey-28.9 {
|
||||
CREATE TABLE c(a REFERENCES p);
|
||||
}
|
||||
catchsql {DELETE FROM p}
|
||||
} {1 {foreign key mismatch}}
|
||||
} {1 {foreign key mismatch - "c" referencing "p"}}
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
@@ -2729,11 +2730,11 @@ do_test e_fkey-60.3 {
|
||||
do_test e_fkey-60.4 {
|
||||
execsql { CREATE TABLE nosuchtable(x PRIMARY KEY) }
|
||||
catchsql { DELETE FROM p }
|
||||
} {1 {foreign key mismatch}}
|
||||
} {1 {foreign key mismatch - "c2" referencing "p"}}
|
||||
do_test e_fkey-60.5 {
|
||||
execsql { DROP TABLE c1 }
|
||||
catchsql { DELETE FROM p }
|
||||
} {1 {foreign key mismatch}}
|
||||
} {1 {foreign key mismatch - "c2" referencing "p"}}
|
||||
do_test e_fkey-60.6 {
|
||||
execsql { DROP TABLE c2 }
|
||||
execsql { DELETE FROM p }
|
||||
|
||||
+24
-5
@@ -139,14 +139,21 @@ set FkeySimpleTests {
|
||||
4.17 "UPDATE t7 SET a = 10" {0 {}}
|
||||
|
||||
5.1 "INSERT INTO t9 VALUES(1, 3)" {1 {no such table: main.nosuchtable}}
|
||||
5.2 "INSERT INTO t10 VALUES(1, 3)" {1 {foreign key mismatch}}
|
||||
5.2 "INSERT INTO t10 VALUES(1, 3)"
|
||||
{1 {foreign key mismatch - "t10" referencing "t9"}}
|
||||
}
|
||||
|
||||
do_test fkey2-1.1.0 {
|
||||
execsql [string map {/D/ {}} $FkeySimpleSchema]
|
||||
} {}
|
||||
foreach {tn zSql res} $FkeySimpleTests {
|
||||
do_test fkey2-1.1.$tn { catchsql $zSql } $res
|
||||
do_test fkey2-1.1.$tn.1 { catchsql $zSql } $res
|
||||
do_test fkey2-1.1.$tn.2 { execsql {PRAGMA foreign_key_check(t1)} } {}
|
||||
do_test fkey2-1.1.$tn.3 { execsql {PRAGMA foreign_key_check(t2)} } {}
|
||||
do_test fkey2-1.1.$tn.4 { execsql {PRAGMA foreign_key_check(t3)} } {}
|
||||
do_test fkey2-1.1.$tn.5 { execsql {PRAGMA foreign_key_check(t4)} } {}
|
||||
do_test fkey2-1.1.$tn.6 { execsql {PRAGMA foreign_key_check(t7)} } {}
|
||||
do_test fkey2-1.1.$tn.7 { execsql {PRAGMA foreign_key_check(t8)} } {}
|
||||
}
|
||||
drop_all_tables
|
||||
|
||||
@@ -155,6 +162,12 @@ do_test fkey2-1.2.0 {
|
||||
} {}
|
||||
foreach {tn zSql res} $FkeySimpleTests {
|
||||
do_test fkey2-1.2.$tn { catchsql $zSql } $res
|
||||
do_test fkey2-1.2.$tn.2 { execsql {PRAGMA foreign_key_check(t1)} } {}
|
||||
do_test fkey2-1.2.$tn.3 { execsql {PRAGMA foreign_key_check(t2)} } {}
|
||||
do_test fkey2-1.2.$tn.4 { execsql {PRAGMA foreign_key_check(t3)} } {}
|
||||
do_test fkey2-1.2.$tn.5 { execsql {PRAGMA foreign_key_check(t4)} } {}
|
||||
do_test fkey2-1.2.$tn.6 { execsql {PRAGMA foreign_key_check(t7)} } {}
|
||||
do_test fkey2-1.2.$tn.7 { execsql {PRAGMA foreign_key_check(t8)} } {}
|
||||
}
|
||||
drop_all_tables
|
||||
|
||||
@@ -165,6 +178,12 @@ do_test fkey2-1.3.0 {
|
||||
foreach {tn zSql res} $FkeySimpleTests {
|
||||
if {$res == "0 {}"} { set res {0 1} }
|
||||
do_test fkey2-1.3.$tn { catchsql $zSql } $res
|
||||
do_test fkey2-1.3.$tn.2 { execsql {PRAGMA foreign_key_check(t1)} } {}
|
||||
do_test fkey2-1.3.$tn.3 { execsql {PRAGMA foreign_key_check(t2)} } {}
|
||||
do_test fkey2-1.3.$tn.4 { execsql {PRAGMA foreign_key_check(t3)} } {}
|
||||
do_test fkey2-1.3.$tn.5 { execsql {PRAGMA foreign_key_check(t4)} } {}
|
||||
do_test fkey2-1.3.$tn.6 { execsql {PRAGMA foreign_key_check(t7)} } {}
|
||||
do_test fkey2-1.3.$tn.7 { execsql {PRAGMA foreign_key_check(t8)} } {}
|
||||
}
|
||||
execsql { PRAGMA count_changes = 0 }
|
||||
drop_all_tables
|
||||
@@ -681,7 +700,7 @@ foreach zSql [list {
|
||||
do_test fkey2-10.1.[incr tn] {
|
||||
execsql $zSql
|
||||
catchsql { INSERT INTO c DEFAULT VALUES }
|
||||
} {1 {foreign key mismatch}}
|
||||
} {/1 {foreign key mismatch - "c" referencing "."}/}
|
||||
}
|
||||
|
||||
# "rowid" cannot be used as part of a child or parent key definition
|
||||
@@ -709,7 +728,7 @@ do_test fkey2-10.2.1 {
|
||||
INSERT INTO t1(rowid, a, b) VALUES(1, 1, 1);
|
||||
INSERT INTO t2 VALUES(1, 1);
|
||||
}
|
||||
} {1 {foreign key mismatch}}
|
||||
} {1 {foreign key mismatch - "t2" referencing "t1"}}
|
||||
do_test fkey2-10.2.2 {
|
||||
drop_all_tables
|
||||
catchsql {
|
||||
@@ -1223,7 +1242,7 @@ do_test fkey-2.14.3.8 {
|
||||
CREATE TABLE cc(a, b, FOREIGN KEY(a, b) REFERENCES pp(x, z));
|
||||
}
|
||||
catchsql { INSERT INTO cc VALUES(1, 2) }
|
||||
} {1 {foreign key mismatch}}
|
||||
} {1 {foreign key mismatch - "cc" referencing "pp"}}
|
||||
do_test fkey-2.14.3.9 {
|
||||
execsql { DROP TABLE cc }
|
||||
} {}
|
||||
|
||||
+310
@@ -0,0 +1,310 @@
|
||||
# 2012 December 17
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
# This file tests the PRAGMA foreign_key_check command.
|
||||
#
|
||||
|
||||
set testdir [file dirname $argv0]
|
||||
source $testdir/tester.tcl
|
||||
|
||||
ifcapable {!foreignkey} {
|
||||
finish_test
|
||||
return
|
||||
}
|
||||
|
||||
do_test fkey5-1.1 {
|
||||
db eval {
|
||||
CREATE TABLE p1(a INTEGER PRIMARY KEY); INSERT INTO p1 VALUES(88),(89);
|
||||
CREATE TABLE p2(a INT PRIMARY KEY); INSERT INTO p2 VALUES(77),(78);
|
||||
CREATE TABLE p3(a TEXT PRIMARY KEY);
|
||||
INSERT INTO p3 VALUES(66),(67),('alpha'),('BRAVO');
|
||||
CREATE TABLE p4(a TEXT PRIMARY KEY COLLATE nocase);
|
||||
INSERT INTO p4 VALUES('alpha'),('BRAVO'),('55'),('Delta'),('ECHO');
|
||||
CREATE TABLE p5(a INTEGER PRIMARY KEY, b, c, UNIQUE(b,c));
|
||||
INSERT INTO p5 VALUES(1,'Alpha','abc'),(2,'beta','def');
|
||||
CREATE TABLE p6(a INTEGER PRIMARY KEY, b TEXT COLLATE nocase,
|
||||
c TEXT COLLATE rtrim, UNIQUE(b,c));
|
||||
INSERT INTO p6 VALUES(1,'Alpha','abc '),(2,'bETA','def ');
|
||||
|
||||
CREATE TABLE c1(x INTEGER PRIMARY KEY references p1);
|
||||
CREATE TABLE c2(x INTEGER PRIMARY KEY references p2);
|
||||
CREATE TABLE c3(x INTEGER PRIMARY KEY references p3);
|
||||
CREATE TABLE c4(x INTEGER PRIMARY KEY references p4);
|
||||
CREATE TABLE c5(x INT references p1);
|
||||
CREATE TABLE c6(x INT references p2);
|
||||
CREATE TABLE c7(x INT references p3);
|
||||
CREATE TABLE c8(x INT references p4);
|
||||
CREATE TABLE c9(x TEXT UNIQUE references p1);
|
||||
CREATE TABLE c10(x TEXT UNIQUE references p2);
|
||||
CREATE TABLE c11(x TEXT UNIQUE references p3);
|
||||
CREATE TABLE c12(x TEXT UNIQUE references p4);
|
||||
CREATE TABLE c13(x TEXT COLLATE nocase references p3);
|
||||
CREATE TABLE c14(x TEXT COLLATE nocase references p4);
|
||||
CREATE TABLE c15(x, y, FOREIGN KEY(x,y) REFERENCES p5(b,c));
|
||||
CREATE TABLE c16(x, y, FOREIGN KEY(x,y) REFERENCES p5(c,b));
|
||||
CREATE TABLE c17(x, y, FOREIGN KEY(x,y) REFERENCES p6(b,c));
|
||||
CREATE TABLE c18(x, y, FOREIGN KEY(x,y) REFERENCES p6(c,b));
|
||||
CREATE TABLE c19(x TEXT COLLATE nocase, y TEXT COLLATE rtrim,
|
||||
FOREIGN KEY(x,y) REFERENCES p5(b,c));
|
||||
CREATE TABLE c20(x TEXT COLLATE nocase, y TEXT COLLATE rtrim,
|
||||
FOREIGN KEY(x,y) REFERENCES p5(c,b));
|
||||
CREATE TABLE c21(x TEXT COLLATE nocase, y TEXT COLLATE rtrim,
|
||||
FOREIGN KEY(x,y) REFERENCES p6(b,c));
|
||||
CREATE TABLE c22(x TEXT COLLATE nocase, y TEXT COLLATE rtrim,
|
||||
FOREIGN KEY(x,y) REFERENCES p6(c,b));
|
||||
|
||||
PRAGMA foreign_key_check;
|
||||
}
|
||||
} {}
|
||||
do_test fkey5-1.2 {
|
||||
db eval {
|
||||
INSERT INTO c1 VALUES(90),(87),(88);
|
||||
PRAGMA foreign_key_check;
|
||||
}
|
||||
} {c1 87 p1 0 c1 90 p1 0}
|
||||
do_test fkey5-1.3 {
|
||||
db eval {
|
||||
PRAGMA foreign_key_check(c1);
|
||||
}
|
||||
} {c1 87 p1 0 c1 90 p1 0}
|
||||
do_test fkey5-1.4 {
|
||||
db eval {
|
||||
PRAGMA foreign_key_check(c2);
|
||||
}
|
||||
} {}
|
||||
|
||||
do_test fkey5-2.0 {
|
||||
db eval {
|
||||
INSERT INTO c5 SELECT x FROM c1;
|
||||
DELETE FROM c1;
|
||||
PRAGMA foreign_key_check;
|
||||
}
|
||||
} {c5 1 p1 0 c5 3 p1 0}
|
||||
do_test fkey5-2.1 {
|
||||
db eval {
|
||||
PRAGMA foreign_key_check(c5);
|
||||
}
|
||||
} {c5 1 p1 0 c5 3 p1 0}
|
||||
do_test fkey5-2.2 {
|
||||
db eval {
|
||||
PRAGMA foreign_key_check(c1);
|
||||
}
|
||||
} {}
|
||||
|
||||
do_test fkey5-3.0 {
|
||||
db eval {
|
||||
INSERT INTO c9 SELECT x FROM c5;
|
||||
DELETE FROM c5;
|
||||
PRAGMA foreign_key_check;
|
||||
}
|
||||
} {c9 1 p1 0 c9 3 p1 0}
|
||||
do_test fkey5-3.1 {
|
||||
db eval {
|
||||
PRAGMA foreign_key_check(c9);
|
||||
}
|
||||
} {c9 1 p1 0 c9 3 p1 0}
|
||||
do_test fkey5-3.2 {
|
||||
db eval {
|
||||
PRAGMA foreign_key_check(c5);
|
||||
}
|
||||
} {}
|
||||
|
||||
do_test fkey5-4.0 {
|
||||
db eval {
|
||||
DELETE FROM c9;
|
||||
INSERT INTO c2 VALUES(79),(77),(76);
|
||||
PRAGMA foreign_key_check;
|
||||
}
|
||||
} {c2 76 p2 0 c2 79 p2 0}
|
||||
do_test fkey5-4.1 {
|
||||
db eval {
|
||||
PRAGMA foreign_key_check(c2);
|
||||
}
|
||||
} {c2 76 p2 0 c2 79 p2 0}
|
||||
do_test fkey5-4.2 {
|
||||
db eval {
|
||||
INSERT INTO c6 SELECT x FROM c2;
|
||||
DELETE FROM c2;
|
||||
PRAGMA foreign_key_check;
|
||||
}
|
||||
} {c6 1 p2 0 c6 3 p2 0}
|
||||
do_test fkey5-4.3 {
|
||||
db eval {
|
||||
PRAGMA foreign_key_check(c6);
|
||||
}
|
||||
} {c6 1 p2 0 c6 3 p2 0}
|
||||
do_test fkey5-4.4 {
|
||||
db eval {
|
||||
INSERT INTO c10 SELECT x FROM c6;
|
||||
DELETE FROM c6;
|
||||
PRAGMA foreign_key_check;
|
||||
}
|
||||
} {c10 1 p2 0 c10 3 p2 0}
|
||||
do_test fkey5-4.5 {
|
||||
db eval {
|
||||
PRAGMA foreign_key_check(c10);
|
||||
}
|
||||
} {c10 1 p2 0 c10 3 p2 0}
|
||||
|
||||
do_test fkey5-5.0 {
|
||||
db eval {
|
||||
DELETE FROM c10;
|
||||
INSERT INTO c3 VALUES(68),(67),(65);
|
||||
PRAGMA foreign_key_check;
|
||||
}
|
||||
} {c3 65 p3 0 c3 68 p3 0}
|
||||
do_test fkey5-5.1 {
|
||||
db eval {
|
||||
PRAGMA foreign_key_check(c3);
|
||||
}
|
||||
} {c3 65 p3 0 c3 68 p3 0}
|
||||
do_test fkey5-5.2 {
|
||||
db eval {
|
||||
INSERT INTO c7 SELECT x FROM c3;
|
||||
INSERT INTO c7 VALUES('Alpha'),('alpha'),('foxtrot');
|
||||
DELETE FROM c3;
|
||||
PRAGMA foreign_key_check;
|
||||
}
|
||||
} {c7 1 p3 0 c7 3 p3 0 c7 4 p3 0 c7 6 p3 0}
|
||||
do_test fkey5-5.3 {
|
||||
db eval {
|
||||
PRAGMA foreign_key_check(c7);
|
||||
}
|
||||
} {c7 1 p3 0 c7 3 p3 0 c7 4 p3 0 c7 6 p3 0}
|
||||
do_test fkey5-5.4 {
|
||||
db eval {
|
||||
INSERT INTO c11 SELECT x FROM c7;
|
||||
DELETE FROM c7;
|
||||
PRAGMA foreign_key_check;
|
||||
}
|
||||
} {c11 1 p3 0 c11 3 p3 0 c11 4 p3 0 c11 6 p3 0}
|
||||
do_test fkey5-5.5 {
|
||||
db eval {
|
||||
PRAGMA foreign_key_check(c11);
|
||||
}
|
||||
} {c11 1 p3 0 c11 3 p3 0 c11 4 p3 0 c11 6 p3 0}
|
||||
|
||||
do_test fkey5-6.0 {
|
||||
db eval {
|
||||
DELETE FROM c11;
|
||||
INSERT INTO c4 VALUES(54),(55),(56);
|
||||
PRAGMA foreign_key_check;
|
||||
}
|
||||
} {c4 54 p4 0 c4 56 p4 0}
|
||||
do_test fkey5-6.1 {
|
||||
db eval {
|
||||
PRAGMA foreign_key_check(c4);
|
||||
}
|
||||
} {c4 54 p4 0 c4 56 p4 0}
|
||||
do_test fkey5-6.2 {
|
||||
db eval {
|
||||
INSERT INTO c8 SELECT x FROM c4;
|
||||
INSERT INTO c8 VALUES('Alpha'),('ALPHA'),('foxtrot');
|
||||
DELETE FROM c4;
|
||||
PRAGMA foreign_key_check;
|
||||
}
|
||||
} {c8 1 p4 0 c8 3 p4 0 c8 6 p4 0}
|
||||
do_test fkey5-6.3 {
|
||||
db eval {
|
||||
PRAGMA foreign_key_check(c8);
|
||||
}
|
||||
} {c8 1 p4 0 c8 3 p4 0 c8 6 p4 0}
|
||||
do_test fkey5-6.4 {
|
||||
db eval {
|
||||
INSERT INTO c12 SELECT x FROM c8;
|
||||
DELETE FROM c8;
|
||||
PRAGMA foreign_key_check;
|
||||
}
|
||||
} {c12 1 p4 0 c12 3 p4 0 c12 6 p4 0}
|
||||
do_test fkey5-6.5 {
|
||||
db eval {
|
||||
PRAGMA foreign_key_check(c12);
|
||||
}
|
||||
} {c12 1 p4 0 c12 3 p4 0 c12 6 p4 0}
|
||||
|
||||
do_test fkey5-7.1 {
|
||||
db eval {
|
||||
INSERT OR IGNORE INTO c13 SELECT * FROM c12;
|
||||
INSERT OR IGNORE INTO C14 SELECT * FROM c12;
|
||||
DELETE FROM c12;
|
||||
PRAGMA foreign_key_check;
|
||||
}
|
||||
} {c14 1 p4 0 c14 3 p4 0 c14 6 p4 0 c13 1 p3 0 c13 2 p3 0 c13 3 p3 0 c13 4 p3 0 c13 5 p3 0 c13 6 p3 0}
|
||||
do_test fkey5-7.2 {
|
||||
db eval {
|
||||
PRAGMA foreign_key_check(c14);
|
||||
}
|
||||
} {c14 1 p4 0 c14 3 p4 0 c14 6 p4 0}
|
||||
do_test fkey5-7.3 {
|
||||
db eval {
|
||||
PRAGMA foreign_key_check(c13);
|
||||
}
|
||||
} {c13 1 p3 0 c13 2 p3 0 c13 3 p3 0 c13 4 p3 0 c13 5 p3 0 c13 6 p3 0}
|
||||
|
||||
do_test fkey5-8.0 {
|
||||
db eval {
|
||||
DELETE FROM c13;
|
||||
DELETE FROM c14;
|
||||
INSERT INTO c19 VALUES('alpha','abc');
|
||||
PRAGMA foreign_key_check(c19);
|
||||
}
|
||||
} {c19 1 p5 0}
|
||||
do_test fkey5-8.1 {
|
||||
db eval {
|
||||
DELETE FROM c19;
|
||||
INSERT INTO c19 VALUES('Alpha','abc');
|
||||
PRAGMA foreign_key_check(c19);
|
||||
}
|
||||
} {}
|
||||
do_test fkey5-8.2 {
|
||||
db eval {
|
||||
INSERT INTO c20 VALUES('Alpha','abc');
|
||||
PRAGMA foreign_key_check(c20);
|
||||
}
|
||||
} {c20 1 p5 0}
|
||||
do_test fkey5-8.3 {
|
||||
db eval {
|
||||
DELETE FROM c20;
|
||||
INSERT INTO c20 VALUES('abc','Alpha');
|
||||
PRAGMA foreign_key_check(c20);
|
||||
}
|
||||
} {}
|
||||
do_test fkey5-8.4 {
|
||||
db eval {
|
||||
INSERT INTO c21 VALUES('alpha','abc ');
|
||||
PRAGMA foreign_key_check(c21);
|
||||
}
|
||||
} {}
|
||||
do_test fkey5-8.5 {
|
||||
db eval {
|
||||
DELETE FROM c21;
|
||||
INSERT INTO c19 VALUES('Alpha','abc');
|
||||
PRAGMA foreign_key_check(c21);
|
||||
}
|
||||
} {}
|
||||
do_test fkey5-8.6 {
|
||||
db eval {
|
||||
INSERT INTO c22 VALUES('Alpha','abc');
|
||||
PRAGMA foreign_key_check(c22);
|
||||
}
|
||||
} {c22 1 p6 0}
|
||||
do_test fkey5-8.7 {
|
||||
db eval {
|
||||
DELETE FROM c22;
|
||||
INSERT INTO c22 VALUES('abc ','ALPHA');
|
||||
PRAGMA foreign_key_check(c22);
|
||||
}
|
||||
} {}
|
||||
|
||||
|
||||
|
||||
finish_test
|
||||
@@ -29,6 +29,7 @@ do_malloc_test fkey_malloc-1 -sqlprep {
|
||||
INSERT INTO t2 VALUES('aaa');
|
||||
UPDATE t1 SET a = 'bbb';
|
||||
DELETE FROM t1;
|
||||
PRAGMA foreign_key_check;
|
||||
}
|
||||
|
||||
do_malloc_test fkey_malloc-2 -sqlprep {
|
||||
@@ -128,5 +129,3 @@ do_malloc_test fkey_malloc-7 -sqlprep {
|
||||
}
|
||||
|
||||
finish_test
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user