Annotation of embedaddon/sqlite3/test/fkey1.test, revision 1.1
1.1 ! misho 1: # 2001 September 15
! 2: #
! 3: # The author disclaims copyright to this source code. In place of
! 4: # a legal notice, here is a blessing:
! 5: #
! 6: # May you do good and not evil.
! 7: # May you find forgiveness for yourself and forgive others.
! 8: # May you share freely, never taking more than you give.
! 9: #
! 10: #***********************************************************************
! 11: # This file implements regression tests for SQLite library.
! 12: #
! 13: # This file implements tests for foreign keys.
! 14: #
! 15:
! 16: set testdir [file dirname $argv0]
! 17: source $testdir/tester.tcl
! 18:
! 19: ifcapable {!foreignkey} {
! 20: finish_test
! 21: return
! 22: }
! 23:
! 24: # Create a table and some data to work with.
! 25: #
! 26: do_test fkey1-1.0 {
! 27: execsql {
! 28: CREATE TABLE t1(
! 29: a INTEGER PRIMARY KEY,
! 30: b INTEGER
! 31: REFERENCES t1 ON DELETE CASCADE
! 32: REFERENCES t2,
! 33: c TEXT,
! 34: FOREIGN KEY (b,c) REFERENCES t2(x,y) ON UPDATE CASCADE
! 35: );
! 36: }
! 37: } {}
! 38: do_test fkey1-1.1 {
! 39: execsql {
! 40: CREATE TABLE t2(
! 41: x INTEGER PRIMARY KEY,
! 42: y TEXT
! 43: );
! 44: }
! 45: } {}
! 46: do_test fkey1-1.2 {
! 47: execsql {
! 48: CREATE TABLE t3(
! 49: a INTEGER REFERENCES t2,
! 50: b INTEGER REFERENCES t1,
! 51: FOREIGN KEY (a,b) REFERENCES t2(x,y)
! 52: );
! 53: }
! 54: } {}
! 55:
! 56: do_test fkey1-2.1 {
! 57: execsql {
! 58: CREATE TABLE t4(a integer primary key);
! 59: CREATE TABLE t5(x references t4);
! 60: CREATE TABLE t6(x references t4);
! 61: CREATE TABLE t7(x references t4);
! 62: CREATE TABLE t8(x references t4);
! 63: CREATE TABLE t9(x references t4);
! 64: CREATE TABLE t10(x references t4);
! 65: DROP TABLE t7;
! 66: DROP TABLE t9;
! 67: DROP TABLE t5;
! 68: DROP TABLE t8;
! 69: DROP TABLE t6;
! 70: DROP TABLE t10;
! 71: }
! 72: } {}
! 73:
! 74: do_test fkey1-3.1 {
! 75: execsql {
! 76: CREATE TABLE t5(a PRIMARY KEY, b, c);
! 77: CREATE TABLE t6(
! 78: d REFERENCES t5,
! 79: e REFERENCES t5(c)
! 80: );
! 81: PRAGMA foreign_key_list(t6);
! 82: }
! 83: } [concat \
! 84: {0 0 t5 e c {NO ACTION} {NO ACTION} NONE} \
! 85: {1 0 t5 d {} {NO ACTION} {NO ACTION} NONE} \
! 86: ]
! 87: do_test fkey1-3.2 {
! 88: execsql {
! 89: CREATE TABLE t7(d, e, f,
! 90: FOREIGN KEY (d, e) REFERENCES t5(a, b)
! 91: );
! 92: PRAGMA foreign_key_list(t7);
! 93: }
! 94: } [concat \
! 95: {0 0 t5 d a {NO ACTION} {NO ACTION} NONE} \
! 96: {0 1 t5 e b {NO ACTION} {NO ACTION} NONE} \
! 97: ]
! 98: do_test fkey1-3.3 {
! 99: execsql {
! 100: CREATE TABLE t8(d, e, f,
! 101: FOREIGN KEY (d, e) REFERENCES t5 ON DELETE CASCADE ON UPDATE SET NULL
! 102: );
! 103: PRAGMA foreign_key_list(t8);
! 104: }
! 105: } [concat \
! 106: {0 0 t5 d {} {SET NULL} CASCADE NONE} \
! 107: {0 1 t5 e {} {SET NULL} CASCADE NONE} \
! 108: ]
! 109: do_test fkey1-3.4 {
! 110: execsql {
! 111: CREATE TABLE t9(d, e, f,
! 112: FOREIGN KEY (d, e) REFERENCES t5 ON DELETE CASCADE ON UPDATE SET DEFAULT
! 113: );
! 114: PRAGMA foreign_key_list(t9);
! 115: }
! 116: } [concat \
! 117: {0 0 t5 d {} {SET DEFAULT} CASCADE NONE} \
! 118: {0 1 t5 e {} {SET DEFAULT} CASCADE NONE} \
! 119: ]
! 120:
! 121: finish_test
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>