/ Hex Artifact Content
Login

Artifact afd5c4d27dec607f5997a66bf7e2498a082cb235:


0000: 23 20 32 30 31 30 20 4e 6f 76 65 6d 62 65 72 20  # 2010 November 
0010: 32 39 0a 23 0a 23 20 54 68 65 20 61 75 74 68 6f  29.#.# The autho
0020: 72 20 64 69 73 63 6c 61 69 6d 73 20 63 6f 70 79  r disclaims copy
0030: 72 69 67 68 74 20 74 6f 20 74 68 69 73 20 73 6f  right to this so
0040: 75 72 63 65 20 63 6f 64 65 2e 20 20 49 6e 20 70  urce code.  In p
0050: 6c 61 63 65 20 6f 66 0a 23 20 61 20 6c 65 67 61  lace of.# a lega
0060: 6c 20 6e 6f 74 69 63 65 2c 20 68 65 72 65 20 69  l notice, here i
0070: 73 20 61 20 62 6c 65 73 73 69 6e 67 3a 0a 23 0a  s a blessing:.#.
0080: 23 20 20 20 20 4d 61 79 20 79 6f 75 20 64 6f 20  #    May you do 
0090: 67 6f 6f 64 20 61 6e 64 20 6e 6f 74 20 65 76 69  good and not evi
00a0: 6c 2e 0a 23 20 20 20 20 4d 61 79 20 79 6f 75 20  l..#    May you 
00b0: 66 69 6e 64 20 66 6f 72 67 69 76 65 6e 65 73 73  find forgiveness
00c0: 20 66 6f 72 20 79 6f 75 72 73 65 6c 66 20 61 6e   for yourself an
00d0: 64 20 66 6f 72 67 69 76 65 20 6f 74 68 65 72 73  d forgive others
00e0: 2e 0a 23 20 20 20 20 4d 61 79 20 79 6f 75 20 73  ..#    May you s
00f0: 68 61 72 65 20 66 72 65 65 6c 79 2c 20 6e 65 76  hare freely, nev
0100: 65 72 20 74 61 6b 69 6e 67 20 6d 6f 72 65 20 74  er taking more t
0110: 68 61 6e 20 79 6f 75 20 67 69 76 65 2e 0a 23 0a  han you give..#.
0120: 23 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  #***************
0130: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0140: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0150: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0160: 2a 2a 2a 2a 2a 2a 2a 2a 0a 23 0a 23 20 54 68 69  ********.#.# Thi
0170: 73 20 66 69 6c 65 20 69 6d 70 6c 65 6d 65 6e 74  s file implement
0180: 73 20 74 65 73 74 73 20 74 6f 20 76 65 72 69 66  s tests to verif
0190: 79 20 74 68 61 74 20 74 68 65 20 22 74 65 73 74  y that the "test
01a0: 61 62 6c 65 20 73 74 61 74 65 6d 65 6e 74 73 22  able statements"
01b0: 20 69 6e 20 0a 23 20 74 68 65 20 6c 61 6e 67 5f   in .# the lang_
01c0: 64 72 6f 70 74 72 69 67 67 65 72 2e 68 74 6d 6c  droptrigger.html
01d0: 20 64 6f 63 75 6d 65 6e 74 20 61 72 65 20 63 6f   document are co
01e0: 72 72 65 63 74 2e 0a 23 0a 0a 73 65 74 20 74 65  rrect..#..set te
01f0: 73 74 64 69 72 20 5b 66 69 6c 65 20 64 69 72 6e  stdir [file dirn
0200: 61 6d 65 20 24 61 72 67 76 30 5d 0a 73 6f 75 72  ame $argv0].sour
0210: 63 65 20 24 74 65 73 74 64 69 72 2f 74 65 73 74  ce $testdir/test
0220: 65 72 2e 74 63 6c 0a 73 65 74 20 3a 3a 74 65 73  er.tcl.set ::tes
0230: 74 70 72 65 66 69 78 20 65 5f 64 72 6f 70 74 72  tprefix e_droptr
0240: 69 67 67 65 72 0a 0a 69 66 63 61 70 61 62 6c 65  igger..ifcapable
0250: 20 21 74 72 69 67 67 65 72 20 7b 20 66 69 6e 69   !trigger { fini
0260: 73 68 5f 74 65 73 74 20 3b 20 72 65 74 75 72 6e  sh_test ; return
0270: 20 7d 0a 0a 70 72 6f 63 20 64 6f 5f 64 72 6f 70   }..proc do_drop
0280: 74 72 69 67 67 65 72 5f 74 65 73 74 73 20 7b 6e  trigger_tests {n
0290: 6d 20 61 72 67 73 7d 20 7b 0a 20 20 75 70 6c 65  m args} {.  uple
02a0: 76 65 6c 20 64 6f 5f 73 65 6c 65 63 74 5f 74 65  vel do_select_te
02b0: 73 74 73 20 5b 6c 69 73 74 20 65 5f 63 72 65 61  sts [list e_crea
02c0: 74 65 74 61 62 6c 65 2d 24 6e 6d 5d 20 24 61 72  tetable-$nm] $ar
02d0: 67 73 0a 7d 0a 0a 70 72 6f 63 20 6c 69 73 74 5f  gs.}..proc list_
02e0: 61 6c 6c 5f 74 72 69 67 67 65 72 73 20 7b 7b 64  all_triggers {{d
02f0: 62 20 64 62 7d 7d 20 7b 0a 20 20 73 65 74 20 72  b db}} {.  set r
0300: 65 73 20 5b 6c 69 73 74 5d 0a 20 20 24 64 62 20  es [list].  $db 
0310: 65 76 61 6c 20 7b 20 50 52 41 47 4d 41 20 64 61  eval { PRAGMA da
0320: 74 61 62 61 73 65 5f 6c 69 73 74 20 7d 20 7b 0a  tabase_list } {.
0330: 20 20 20 20 69 66 20 7b 24 6e 61 6d 65 20 3d 3d      if {$name ==
0340: 20 22 74 65 6d 70 22 7d 20 7b 0a 20 20 20 20 20   "temp"} {.     
0350: 20 73 65 74 20 74 62 6c 20 73 71 6c 69 74 65 5f   set tbl sqlite_
0360: 74 65 6d 70 5f 6d 61 73 74 65 72 0a 20 20 20 20  temp_master.    
0370: 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 73  } else {.      s
0380: 65 74 20 74 62 6c 20 22 24 6e 61 6d 65 2e 73 71  et tbl "$name.sq
0390: 6c 69 74 65 5f 6d 61 73 74 65 72 22 0a 20 20 20  lite_master".   
03a0: 20 7d 0a 20 20 20 20 6c 61 70 70 65 6e 64 20 72   }.    lappend r
03b0: 65 73 20 7b 2a 7d 5b 0a 20 20 20 20 20 20 64 62  es {*}[.      db
03c0: 20 65 76 61 6c 20 22 53 45 4c 45 43 54 20 27 24   eval "SELECT '$
03d0: 6e 61 6d 65 2e 27 20 7c 7c 20 6e 61 6d 65 20 46  name.' || name F
03e0: 52 4f 4d 20 24 74 62 6c 20 57 48 45 52 45 20 74  ROM $tbl WHERE t
03f0: 79 70 65 20 3d 20 27 74 72 69 67 67 65 72 27 22  ype = 'trigger'"
0400: 0a 20 20 20 20 5d 0a 20 20 7d 0a 20 20 73 65 74  .    ].  }.  set
0410: 20 72 65 73 0a 7d 0a 0a 0a 70 72 6f 63 20 64 72   res.}...proc dr
0420: 6f 70 74 72 69 67 67 65 72 5f 72 65 6f 70 65 6e  optrigger_reopen
0430: 5f 64 62 20 7b 7b 65 76 65 6e 74 20 49 4e 53 45  _db {{event INSE
0440: 52 54 7d 7d 20 7b 0a 20 20 64 62 20 63 6c 6f 73  RT}} {.  db clos
0450: 65 0a 20 20 66 6f 72 63 65 64 65 6c 65 74 65 20  e.  forcedelete 
0460: 74 65 73 74 2e 64 62 20 74 65 73 74 2e 64 62 32  test.db test.db2
0470: 0a 20 20 73 71 6c 69 74 65 33 20 64 62 20 74 65  .  sqlite3 db te
0480: 73 74 2e 64 62 0a 0a 20 20 73 65 74 20 3a 3a 74  st.db..  set ::t
0490: 72 69 67 67 65 72 73 5f 66 69 72 65 64 20 5b 6c  riggers_fired [l
04a0: 69 73 74 5d 0a 20 20 70 72 6f 63 20 72 20 7b 78  ist].  proc r {x
04b0: 7d 20 7b 20 6c 61 70 70 65 6e 64 20 3a 3a 74 72  } { lappend ::tr
04c0: 69 67 67 65 72 73 5f 66 69 72 65 64 20 24 78 20  iggers_fired $x 
04d0: 7d 0a 20 20 64 62 20 66 75 6e 63 20 72 20 72 0a  }.  db func r r.
04e0: 0a 20 20 64 62 20 65 76 61 6c 20 22 0a 20 20 20  .  db eval ".   
04f0: 20 41 54 54 41 43 48 20 27 74 65 73 74 2e 64 62   ATTACH 'test.db
0500: 32 27 20 41 53 20 61 75 78 3b 0a 0a 20 20 20 20  2' AS aux;..    
0510: 43 52 45 41 54 45 20 54 45 4d 50 20 54 41 42 4c  CREATE TEMP TABL
0520: 45 20 74 31 28 61 2c 20 62 29 3b 0a 20 20 20 20  E t1(a, b);.    
0530: 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20 56  INSERT INTO t1 V
0540: 41 4c 55 45 53 28 27 61 27 2c 20 27 62 27 29 3b  ALUES('a', 'b');
0550: 0a 20 20 20 20 43 52 45 41 54 45 20 54 52 49 47  .    CREATE TRIG
0560: 47 45 52 20 74 72 31 20 41 46 54 45 52 20 24 65  GER tr1 AFTER $e
0570: 76 65 6e 74 20 4f 4e 20 74 31 20 42 45 47 49 4e  vent ON t1 BEGIN
0580: 20 53 45 4c 45 43 54 20 72 28 27 74 65 6d 70 2e   SELECT r('temp.
0590: 74 72 31 27 29 20 3b 20 45 4e 44 3b 0a 0a 20 20  tr1') ; END;..  
05a0: 20 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 74    CREATE TABLE t
05b0: 32 28 61 2c 20 62 29 3b 0a 20 20 20 20 49 4e 53  2(a, b);.    INS
05c0: 45 52 54 20 49 4e 54 4f 20 74 32 20 56 41 4c 55  ERT INTO t2 VALU
05d0: 45 53 28 27 61 27 2c 20 27 62 27 29 3b 0a 20 20  ES('a', 'b');.  
05e0: 20 20 43 52 45 41 54 45 20 54 52 49 47 47 45 52    CREATE TRIGGER
05f0: 20 74 72 31 20 42 45 46 4f 52 45 20 24 65 76 65   tr1 BEFORE $eve
0600: 6e 74 20 4f 4e 20 74 32 20 42 45 47 49 4e 20 53  nt ON t2 BEGIN S
0610: 45 4c 45 43 54 20 72 28 27 6d 61 69 6e 2e 74 72  ELECT r('main.tr
0620: 31 27 29 20 3b 20 45 4e 44 3b 0a 20 20 20 20 43  1') ; END;.    C
0630: 52 45 41 54 45 20 54 52 49 47 47 45 52 20 74 72  REATE TRIGGER tr
0640: 32 20 41 46 54 45 52 20 20 24 65 76 65 6e 74 20  2 AFTER  $event 
0650: 4f 4e 20 74 32 20 42 45 47 49 4e 20 53 45 4c 45  ON t2 BEGIN SELE
0660: 43 54 20 72 28 27 6d 61 69 6e 2e 74 72 32 27 29  CT r('main.tr2')
0670: 20 3b 20 45 4e 44 3b 0a 0a 20 20 20 20 43 52 45   ; END;..    CRE
0680: 41 54 45 20 54 41 42 4c 45 20 61 75 78 2e 74 33  ATE TABLE aux.t3
0690: 28 61 2c 20 62 29 3b 0a 20 20 20 20 49 4e 53 45  (a, b);.    INSE
06a0: 52 54 20 49 4e 54 4f 20 74 33 20 56 41 4c 55 45  RT INTO t3 VALUE
06b0: 53 28 27 61 27 2c 20 27 62 27 29 3b 0a 20 20 20  S('a', 'b');.   
06c0: 20 43 52 45 41 54 45 20 54 52 49 47 47 45 52 20   CREATE TRIGGER 
06d0: 61 75 78 2e 74 72 31 20 42 45 46 4f 52 45 20 24  aux.tr1 BEFORE $
06e0: 65 76 65 6e 74 20 4f 4e 20 74 33 20 42 45 47 49  event ON t3 BEGI
06f0: 4e 20 53 45 4c 45 43 54 20 72 28 27 61 75 78 2e  N SELECT r('aux.
0700: 74 72 31 27 29 20 3b 20 45 4e 44 3b 0a 20 20 20  tr1') ; END;.   
0710: 20 43 52 45 41 54 45 20 54 52 49 47 47 45 52 20   CREATE TRIGGER 
0720: 61 75 78 2e 74 72 32 20 41 46 54 45 52 20 20 24  aux.tr2 AFTER  $
0730: 65 76 65 6e 74 20 4f 4e 20 74 33 20 42 45 47 49  event ON t3 BEGI
0740: 4e 20 53 45 4c 45 43 54 20 72 28 27 61 75 78 2e  N SELECT r('aux.
0750: 74 72 32 27 29 20 3b 20 45 4e 44 3b 0a 20 20 20  tr2') ; END;.   
0760: 20 43 52 45 41 54 45 20 54 52 49 47 47 45 52 20   CREATE TRIGGER 
0770: 61 75 78 2e 74 72 33 20 41 46 54 45 52 20 20 24  aux.tr3 AFTER  $
0780: 65 76 65 6e 74 20 4f 4e 20 74 33 20 42 45 47 49  event ON t3 BEGI
0790: 4e 20 53 45 4c 45 43 54 20 72 28 27 61 75 78 2e  N SELECT r('aux.
07a0: 74 72 33 27 29 20 3b 20 45 4e 44 3b 0a 20 20 22  tr3') ; END;.  "
07b0: 0a 7d 0a 0a 0a 23 20 45 56 49 44 45 4e 43 45 2d  .}...# EVIDENCE-
07c0: 4f 46 3a 20 52 2d 32 37 39 37 35 2d 31 30 39 35  OF: R-27975-1095
07d0: 31 20 2d 2d 20 73 79 6e 74 61 78 20 64 69 61 67  1 -- syntax diag
07e0: 72 61 6d 20 64 72 6f 70 2d 74 72 69 67 67 65 72  ram drop-trigger
07f0: 2d 73 74 6d 74 0a 23 0a 64 6f 5f 64 72 6f 70 74  -stmt.#.do_dropt
0800: 72 69 67 67 65 72 5f 74 65 73 74 73 20 31 2e 31  rigger_tests 1.1
0810: 20 2d 72 65 70 61 69 72 20 7b 0a 20 20 64 72 6f   -repair {.  dro
0820: 70 74 72 69 67 67 65 72 5f 72 65 6f 70 65 6e 5f  ptrigger_reopen_
0830: 64 62 0a 7d 20 2d 74 63 6c 71 75 65 72 79 20 7b  db.} -tclquery {
0840: 0a 20 20 6c 69 73 74 5f 61 6c 6c 5f 74 72 69 67  .  list_all_trig
0850: 67 65 72 73 20 0a 7d 20 7b 0a 20 20 31 20 20 20  gers .} {.  1   
0860: 22 44 52 4f 50 20 54 52 49 47 47 45 52 20 6d 61  "DROP TRIGGER ma
0870: 69 6e 2e 74 72 31 22 20 20 20 20 20 20 20 20 20  in.tr1"         
0880: 20 20 20 0a 20 20 20 20 20 20 7b 6d 61 69 6e 2e     .      {main.
0890: 74 72 32 20 74 65 6d 70 2e 74 72 31 20 61 75 78  tr2 temp.tr1 aux
08a0: 2e 74 72 31 20 61 75 78 2e 74 72 32 20 61 75 78  .tr1 aux.tr2 aux
08b0: 2e 74 72 33 7d 0a 20 20 32 20 20 20 22 44 52 4f  .tr3}.  2   "DRO
08c0: 50 20 54 52 49 47 47 45 52 20 49 46 20 45 58 49  P TRIGGER IF EXI
08d0: 53 54 53 20 6d 61 69 6e 2e 74 72 31 22 20 20 0a  STS main.tr1"  .
08e0: 20 20 20 20 20 20 7b 6d 61 69 6e 2e 74 72 32 20        {main.tr2 
08f0: 74 65 6d 70 2e 74 72 31 20 61 75 78 2e 74 72 31  temp.tr1 aux.tr1
0900: 20 61 75 78 2e 74 72 32 20 61 75 78 2e 74 72 33   aux.tr2 aux.tr3
0910: 7d 0a 20 20 33 20 20 20 22 44 52 4f 50 20 54 52  }.  3   "DROP TR
0920: 49 47 47 45 52 20 74 72 31 22 20 20 20 20 20 20  IGGER tr1"      
0930: 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20             .    
0940: 20 20 7b 6d 61 69 6e 2e 74 72 31 20 6d 61 69 6e    {main.tr1 main
0950: 2e 74 72 32 20 61 75 78 2e 74 72 31 20 61 75 78  .tr2 aux.tr1 aux
0960: 2e 74 72 32 20 61 75 78 2e 74 72 33 7d 0a 20 20  .tr2 aux.tr3}.  
0970: 34 20 20 20 22 44 52 4f 50 20 54 52 49 47 47 45  4   "DROP TRIGGE
0980: 52 20 49 46 20 45 58 49 53 54 53 20 74 72 31 22  R IF EXISTS tr1"
0990: 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 7b 6d         .      {m
09a0: 61 69 6e 2e 74 72 31 20 6d 61 69 6e 2e 74 72 32  ain.tr1 main.tr2
09b0: 20 61 75 78 2e 74 72 31 20 61 75 78 2e 74 72 32   aux.tr1 aux.tr2
09c0: 20 61 75 78 2e 74 72 33 7d 0a 0a 20 20 35 20 20   aux.tr3}..  5  
09d0: 20 22 44 52 4f 50 20 54 52 49 47 47 45 52 20 61   "DROP TRIGGER a
09e0: 75 78 2e 74 72 31 22 20 20 20 20 20 20 20 20 20  ux.tr1"         
09f0: 20 20 20 20 0a 20 20 20 20 20 20 7b 6d 61 69 6e      .      {main
0a00: 2e 74 72 31 20 6d 61 69 6e 2e 74 72 32 20 74 65  .tr1 main.tr2 te
0a10: 6d 70 2e 74 72 31 20 61 75 78 2e 74 72 32 20 61  mp.tr1 aux.tr2 a
0a20: 75 78 2e 74 72 33 7d 0a 20 20 36 20 20 20 22 44  ux.tr3}.  6   "D
0a30: 52 4f 50 20 54 52 49 47 47 45 52 20 49 46 20 45  ROP TRIGGER IF E
0a40: 58 49 53 54 53 20 61 75 78 2e 74 72 31 22 20 20  XISTS aux.tr1"  
0a50: 20 0a 20 20 20 20 20 20 7b 6d 61 69 6e 2e 74 72   .      {main.tr
0a60: 31 20 6d 61 69 6e 2e 74 72 32 20 74 65 6d 70 2e  1 main.tr2 temp.
0a70: 74 72 31 20 61 75 78 2e 74 72 32 20 61 75 78 2e  tr1 aux.tr2 aux.
0a80: 74 72 33 7d 0a 0a 20 20 37 20 20 20 22 44 52 4f  tr3}..  7   "DRO
0a90: 50 20 54 52 49 47 47 45 52 20 49 46 20 45 58 49  P TRIGGER IF EXI
0aa0: 53 54 53 20 61 75 78 2e 78 78 78 22 20 20 20 0a  STS aux.xxx"   .
0ab0: 20 20 20 20 20 20 7b 6d 61 69 6e 2e 74 72 31 20        {main.tr1 
0ac0: 6d 61 69 6e 2e 74 72 32 20 74 65 6d 70 2e 74 72  main.tr2 temp.tr
0ad0: 31 20 61 75 78 2e 74 72 31 20 61 75 78 2e 74 72  1 aux.tr1 aux.tr
0ae0: 32 20 61 75 78 2e 74 72 33 7d 0a 20 20 38 20 20  2 aux.tr3}.  8  
0af0: 20 22 44 52 4f 50 20 54 52 49 47 47 45 52 20 49   "DROP TRIGGER I
0b00: 46 20 45 58 49 53 54 53 20 61 75 78 2e 78 78 78  F EXISTS aux.xxx
0b10: 22 20 20 20 0a 20 20 20 20 20 20 7b 6d 61 69 6e  "   .      {main
0b20: 2e 74 72 31 20 6d 61 69 6e 2e 74 72 32 20 74 65  .tr1 main.tr2 te
0b30: 6d 70 2e 74 72 31 20 61 75 78 2e 74 72 31 20 61  mp.tr1 aux.tr1 a
0b40: 75 78 2e 74 72 32 20 61 75 78 2e 74 72 33 7d 0a  ux.tr2 aux.tr3}.
0b50: 7d 0a 0a 23 20 45 56 49 44 45 4e 43 45 2d 4f 46  }..# EVIDENCE-OF
0b60: 3a 20 52 2d 36 31 31 37 32 2d 31 35 36 37 31 20  : R-61172-15671 
0b70: 54 68 65 20 44 52 4f 50 20 54 52 49 47 47 45 52  The DROP TRIGGER
0b80: 20 73 74 61 74 65 6d 65 6e 74 20 72 65 6d 6f 76   statement remov
0b90: 65 73 20 61 0a 23 20 74 72 69 67 67 65 72 20 63  es a.# trigger c
0ba0: 72 65 61 74 65 64 20 62 79 20 74 68 65 20 43 52  reated by the CR
0bb0: 45 41 54 45 20 54 52 49 47 47 45 52 20 73 74 61  EATE TRIGGER sta
0bc0: 74 65 6d 65 6e 74 2e 0a 23 0a 66 6f 72 65 61 63  tement..#.foreac
0bd0: 68 20 7b 74 6e 20 74 62 6c 20 64 72 6f 70 74 72  h {tn tbl droptr
0be0: 69 67 67 65 72 20 62 65 66 6f 72 65 20 61 66 74  igger before aft
0bf0: 65 72 7d 20 7b 0a 20 20 31 20 20 20 74 31 20 20  er} {.  1   t1  
0c00: 22 44 52 4f 50 20 54 52 49 47 47 45 52 20 74 72  "DROP TRIGGER tr
0c10: 31 22 20 7b 74 65 6d 70 2e 74 72 31 7d 20 20 20  1" {temp.tr1}   
0c20: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 7d 0a               {}.
0c30: 20 20 32 20 20 20 74 32 20 20 22 44 52 4f 50 20    2   t2  "DROP 
0c40: 54 52 49 47 47 45 52 20 74 72 31 22 20 7b 6d 61  TRIGGER tr1" {ma
0c50: 69 6e 2e 74 72 31 20 6d 61 69 6e 2e 74 72 32 7d  in.tr1 main.tr2}
0c60: 20 20 20 20 20 20 20 7b 6d 61 69 6e 2e 74 72 31         {main.tr1
0c70: 20 6d 61 69 6e 2e 74 72 32 7d 0a 20 20 33 20 20   main.tr2}.  3  
0c80: 20 74 33 20 20 22 44 52 4f 50 20 54 52 49 47 47   t3  "DROP TRIGG
0c90: 45 52 20 74 72 31 22 20 7b 61 75 78 2e 74 72 31  ER tr1" {aux.tr1
0ca0: 20 61 75 78 2e 74 72 33 20 61 75 78 2e 74 72 32   aux.tr3 aux.tr2
0cb0: 7d 20 7b 61 75 78 2e 74 72 31 20 61 75 78 2e 74  } {aux.tr1 aux.t
0cc0: 72 33 20 61 75 78 2e 74 72 32 7d 0a 0a 20 20 34  r3 aux.tr2}..  4
0cd0: 20 20 20 74 31 20 20 22 44 52 4f 50 20 54 52 49     t1  "DROP TRI
0ce0: 47 47 45 52 20 74 72 32 22 20 7b 74 65 6d 70 2e  GGER tr2" {temp.
0cf0: 74 72 31 7d 20 20 20 20 20 20 20 20 20 20 20 20  tr1}            
0d00: 20 20 20 20 7b 74 65 6d 70 2e 74 72 31 7d 0a 20      {temp.tr1}. 
0d10: 20 35 20 20 20 74 32 20 20 22 44 52 4f 50 20 54   5   t2  "DROP T
0d20: 52 49 47 47 45 52 20 74 72 32 22 20 7b 6d 61 69  RIGGER tr2" {mai
0d30: 6e 2e 74 72 31 20 6d 61 69 6e 2e 74 72 32 7d 20  n.tr1 main.tr2} 
0d40: 20 20 20 20 20 20 7b 6d 61 69 6e 2e 74 72 31 7d        {main.tr1}
0d50: 0a 20 20 36 20 20 20 74 33 20 20 22 44 52 4f 50  .  6   t3  "DROP
0d60: 20 54 52 49 47 47 45 52 20 74 72 32 22 20 7b 61   TRIGGER tr2" {a
0d70: 75 78 2e 74 72 31 20 61 75 78 2e 74 72 33 20 61  ux.tr1 aux.tr3 a
0d80: 75 78 2e 74 72 32 7d 20 7b 61 75 78 2e 74 72 31  ux.tr2} {aux.tr1
0d90: 20 61 75 78 2e 74 72 33 20 61 75 78 2e 74 72 32   aux.tr3 aux.tr2
0da0: 7d 0a 0a 20 20 37 20 20 20 74 31 20 20 22 44 52  }..  7   t1  "DR
0db0: 4f 50 20 54 52 49 47 47 45 52 20 74 72 33 22 20  OP TRIGGER tr3" 
0dc0: 7b 74 65 6d 70 2e 74 72 31 7d 20 20 20 20 20 20  {temp.tr1}      
0dd0: 20 20 20 20 20 20 20 20 20 20 7b 74 65 6d 70 2e            {temp.
0de0: 74 72 31 7d 0a 20 20 38 20 20 20 74 32 20 20 22  tr1}.  8   t2  "
0df0: 44 52 4f 50 20 54 52 49 47 47 45 52 20 74 72 33  DROP TRIGGER tr3
0e00: 22 20 7b 6d 61 69 6e 2e 74 72 31 20 6d 61 69 6e  " {main.tr1 main
0e10: 2e 74 72 32 7d 20 20 20 20 20 20 20 7b 6d 61 69  .tr2}       {mai
0e20: 6e 2e 74 72 31 20 6d 61 69 6e 2e 74 72 32 7d 0a  n.tr1 main.tr2}.
0e30: 20 20 39 20 20 20 74 33 20 20 22 44 52 4f 50 20    9   t3  "DROP 
0e40: 54 52 49 47 47 45 52 20 74 72 33 22 20 7b 61 75  TRIGGER tr3" {au
0e50: 78 2e 74 72 31 20 61 75 78 2e 74 72 33 20 61 75  x.tr1 aux.tr3 au
0e60: 78 2e 74 72 32 7d 20 7b 61 75 78 2e 74 72 31 20  x.tr2} {aux.tr1 
0e70: 61 75 78 2e 74 72 32 7d 0a 7d 20 7b 0a 0a 20 20  aux.tr2}.} {..  
0e80: 64 6f 5f 74 65 73 74 20 32 2e 24 74 6e 2e 31 20  do_test 2.$tn.1 
0e90: 7b 0a 20 20 20 20 64 72 6f 70 74 72 69 67 67 65  {.    droptrigge
0ea0: 72 5f 72 65 6f 70 65 6e 5f 64 62 0a 20 20 20 20  r_reopen_db.    
0eb0: 65 78 65 63 73 71 6c 20 22 20 49 4e 53 45 52 54  execsql " INSERT
0ec0: 20 49 4e 54 4f 20 24 74 62 6c 20 56 41 4c 55 45   INTO $tbl VALUE
0ed0: 53 28 27 31 27 2c 20 27 32 27 29 20 22 0a 20 20  S('1', '2') ".  
0ee0: 20 20 73 65 74 20 3a 3a 74 72 69 67 67 65 72 73    set ::triggers
0ef0: 5f 66 69 72 65 64 0a 20 20 7d 20 24 62 65 66 6f  _fired.  } $befo
0f00: 72 65 0a 0a 20 20 64 6f 5f 74 65 73 74 20 32 2e  re..  do_test 2.
0f10: 24 74 6e 2e 32 20 7b 0a 20 20 20 20 64 72 6f 70  $tn.2 {.    drop
0f20: 74 72 69 67 67 65 72 5f 72 65 6f 70 65 6e 5f 64  trigger_reopen_d
0f30: 62 0a 20 20 20 20 65 78 65 63 73 71 6c 20 24 64  b.    execsql $d
0f40: 72 6f 70 74 72 69 67 67 65 72 0a 20 20 20 20 65  roptrigger.    e
0f50: 78 65 63 73 71 6c 20 22 20 49 4e 53 45 52 54 20  xecsql " INSERT 
0f60: 49 4e 54 4f 20 24 74 62 6c 20 56 41 4c 55 45 53  INTO $tbl VALUES
0f70: 28 27 31 27 2c 20 27 32 27 29 20 22 0a 20 20 20  ('1', '2') ".   
0f80: 20 73 65 74 20 3a 3a 74 72 69 67 67 65 72 73 5f   set ::triggers_
0f90: 66 69 72 65 64 0a 20 20 7d 20 24 61 66 74 65 72  fired.  } $after
0fa0: 0a 7d 0a 0a 23 20 45 56 49 44 45 4e 43 45 2d 4f  .}..# EVIDENCE-O
0fb0: 46 3a 20 52 2d 35 30 32 33 39 2d 32 39 38 31 31  F: R-50239-29811
0fc0: 20 4f 6e 63 65 20 72 65 6d 6f 76 65 64 2c 20 74   Once removed, t
0fd0: 68 65 20 74 72 69 67 67 65 72 20 64 65 66 69 6e  he trigger defin
0fe0: 69 74 69 6f 6e 20 69 73 20 6e 6f 0a 23 20 6c 6f  ition is no.# lo
0ff0: 6e 67 65 72 20 70 72 65 73 65 6e 74 20 69 6e 20  nger present in 
1000: 74 68 65 20 73 71 6c 69 74 65 5f 6d 61 73 74 65  the sqlite_maste
1010: 72 20 28 6f 72 20 73 71 6c 69 74 65 5f 74 65 6d  r (or sqlite_tem
1020: 70 5f 6d 61 73 74 65 72 29 20 74 61 62 6c 65 20  p_master) table 
1030: 61 6e 64 0a 23 20 69 73 20 6e 6f 74 20 66 69 72  and.# is not fir
1040: 65 64 20 62 79 20 61 6e 79 20 73 75 62 73 65 71  ed by any subseq
1050: 75 65 6e 74 20 49 4e 53 45 52 54 2c 20 55 50 44  uent INSERT, UPD
1060: 41 54 45 20 6f 72 20 44 45 4c 45 54 45 20 73 74  ATE or DELETE st
1070: 61 74 65 6d 65 6e 74 73 2e 0a 23 0a 23 20 20 20  atements..#.#   
1080: 54 65 73 74 20 63 61 73 65 73 20 65 5f 64 72 6f  Test cases e_dro
1090: 70 74 72 69 67 67 65 72 2d 31 2e 2a 20 74 65 73  ptrigger-1.* tes
10a0: 74 20 74 68 65 20 66 69 72 73 74 20 70 61 72 74  t the first part
10b0: 20 6f 66 20 74 68 69 73 20 73 74 61 74 65 6d 65   of this stateme
10c0: 6e 74 0a 23 20 20 20 28 74 68 61 74 20 64 72 6f  nt.#   (that dro
10d0: 70 70 65 64 20 74 72 69 67 67 65 72 73 20 64 6f  pped triggers do
10e0: 20 6e 6f 74 20 61 70 70 65 61 72 20 69 6e 20 74   not appear in t
10f0: 68 65 20 73 63 68 65 6d 61 20 74 61 62 6c 65 29  he schema table)
1100: 2c 20 61 6e 64 20 74 65 73 74 73 0a 23 20 20 20  , and tests.#   
1110: 64 72 6f 70 74 72 69 67 67 65 72 2d 32 2e 2a 20  droptrigger-2.* 
1120: 74 65 73 74 20 74 68 61 74 20 64 72 6f 70 70 65  test that droppe
1130: 64 20 74 72 69 67 67 65 72 73 20 61 72 65 20 6e  d triggers are n
1140: 6f 74 20 66 69 72 65 64 20 62 79 20 49 4e 53 45  ot fired by INSE
1150: 52 54 0a 23 20 20 20 73 74 61 74 65 6d 65 6e 74  RT.#   statement
1160: 73 2e 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  s. The following
1170: 20 74 65 73 74 73 20 76 65 72 69 66 79 20 74 68   tests verify th
1180: 61 74 20 74 68 65 79 20 61 72 65 20 6e 6f 74 20  at they are not 
1190: 66 69 72 65 64 20 62 79 0a 23 20 20 20 55 50 44  fired by.#   UPD
11a0: 41 54 45 20 6f 72 20 44 45 4c 45 54 45 20 73 74  ATE or DELETE st
11b0: 61 74 65 6d 65 6e 74 73 2e 0a 23 0a 66 6f 72 65  atements..#.fore
11c0: 61 63 68 20 7b 74 6e 20 74 62 6c 20 64 72 6f 70  ach {tn tbl drop
11d0: 74 72 69 67 67 65 72 20 62 65 66 6f 72 65 20 61  trigger before a
11e0: 66 74 65 72 7d 20 7b 0a 20 20 31 20 20 20 74 31  fter} {.  1   t1
11f0: 20 20 22 44 52 4f 50 20 54 52 49 47 47 45 52 20    "DROP TRIGGER 
1200: 74 72 31 22 20 7b 74 65 6d 70 2e 74 72 31 7d 20  tr1" {temp.tr1} 
1210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
1220: 7d 0a 20 20 32 20 20 20 74 32 20 20 22 44 52 4f  }.  2   t2  "DRO
1230: 50 20 54 52 49 47 47 45 52 20 74 72 31 22 20 7b  P TRIGGER tr1" {
1240: 6d 61 69 6e 2e 74 72 31 20 6d 61 69 6e 2e 74 72  main.tr1 main.tr
1250: 32 7d 20 20 20 20 20 20 20 7b 6d 61 69 6e 2e 74  2}       {main.t
1260: 72 31 20 6d 61 69 6e 2e 74 72 32 7d 0a 20 20 33  r1 main.tr2}.  3
1270: 20 20 20 74 33 20 20 22 44 52 4f 50 20 54 52 49     t3  "DROP TRI
1280: 47 47 45 52 20 74 72 31 22 20 7b 61 75 78 2e 74  GGER tr1" {aux.t
1290: 72 31 20 61 75 78 2e 74 72 33 20 61 75 78 2e 74  r1 aux.tr3 aux.t
12a0: 72 32 7d 20 7b 61 75 78 2e 74 72 31 20 61 75 78  r2} {aux.tr1 aux
12b0: 2e 74 72 33 20 61 75 78 2e 74 72 32 7d 0a 0a 20  .tr3 aux.tr2}.. 
12c0: 20 34 20 20 20 74 31 20 20 22 44 52 4f 50 20 54   4   t1  "DROP T
12d0: 52 49 47 47 45 52 20 74 72 32 22 20 7b 74 65 6d  RIGGER tr2" {tem
12e0: 70 2e 74 72 31 7d 20 20 20 20 20 20 20 20 20 20  p.tr1}          
12f0: 20 20 20 20 20 20 7b 74 65 6d 70 2e 74 72 31 7d        {temp.tr1}
1300: 0a 20 20 35 20 20 20 74 32 20 20 22 44 52 4f 50  .  5   t2  "DROP
1310: 20 54 52 49 47 47 45 52 20 74 72 32 22 20 7b 6d   TRIGGER tr2" {m
1320: 61 69 6e 2e 74 72 31 20 6d 61 69 6e 2e 74 72 32  ain.tr1 main.tr2
1330: 7d 20 20 20 20 20 20 20 7b 6d 61 69 6e 2e 74 72  }       {main.tr
1340: 31 7d 0a 20 20 36 20 20 20 74 33 20 20 22 44 52  1}.  6   t3  "DR
1350: 4f 50 20 54 52 49 47 47 45 52 20 74 72 32 22 20  OP TRIGGER tr2" 
1360: 7b 61 75 78 2e 74 72 31 20 61 75 78 2e 74 72 33  {aux.tr1 aux.tr3
1370: 20 61 75 78 2e 74 72 32 7d 20 7b 61 75 78 2e 74   aux.tr2} {aux.t
1380: 72 31 20 61 75 78 2e 74 72 33 20 61 75 78 2e 74  r1 aux.tr3 aux.t
1390: 72 32 7d 0a 0a 20 20 37 20 20 20 74 31 20 20 22  r2}..  7   t1  "
13a0: 44 52 4f 50 20 54 52 49 47 47 45 52 20 74 72 33  DROP TRIGGER tr3
13b0: 22 20 7b 74 65 6d 70 2e 74 72 31 7d 20 20 20 20  " {temp.tr1}    
13c0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 74 65 6d              {tem
13d0: 70 2e 74 72 31 7d 0a 20 20 38 20 20 20 74 32 20  p.tr1}.  8   t2 
13e0: 20 22 44 52 4f 50 20 54 52 49 47 47 45 52 20 74   "DROP TRIGGER t
13f0: 72 33 22 20 7b 6d 61 69 6e 2e 74 72 31 20 6d 61  r3" {main.tr1 ma
1400: 69 6e 2e 74 72 32 7d 20 20 20 20 20 20 20 7b 6d  in.tr2}       {m
1410: 61 69 6e 2e 74 72 31 20 6d 61 69 6e 2e 74 72 32  ain.tr1 main.tr2
1420: 7d 0a 20 20 39 20 20 20 74 33 20 20 22 44 52 4f  }.  9   t3  "DRO
1430: 50 20 54 52 49 47 47 45 52 20 74 72 33 22 20 7b  P TRIGGER tr3" {
1440: 61 75 78 2e 74 72 31 20 61 75 78 2e 74 72 33 20  aux.tr1 aux.tr3 
1450: 61 75 78 2e 74 72 32 7d 20 7b 61 75 78 2e 74 72  aux.tr2} {aux.tr
1460: 31 20 61 75 78 2e 74 72 32 7d 0a 7d 20 7b 0a 0a  1 aux.tr2}.} {..
1470: 20 20 64 6f 5f 74 65 73 74 20 33 2e 31 2e 24 74    do_test 3.1.$t
1480: 6e 2e 31 20 7b 0a 20 20 20 20 64 72 6f 70 74 72  n.1 {.    droptr
1490: 69 67 67 65 72 5f 72 65 6f 70 65 6e 5f 64 62 20  igger_reopen_db 
14a0: 55 50 44 41 54 45 0a 20 20 20 20 65 78 65 63 73  UPDATE.    execs
14b0: 71 6c 20 22 55 50 44 41 54 45 20 24 74 62 6c 20  ql "UPDATE $tbl 
14c0: 53 45 54 20 61 20 3d 20 27 61 62 63 27 22 0a 20  SET a = 'abc'". 
14d0: 20 20 20 73 65 74 20 3a 3a 74 72 69 67 67 65 72     set ::trigger
14e0: 73 5f 66 69 72 65 64 0a 20 20 7d 20 24 62 65 66  s_fired.  } $bef
14f0: 6f 72 65 0a 0a 20 20 64 6f 5f 74 65 73 74 20 33  ore..  do_test 3
1500: 2e 31 2e 24 74 6e 2e 32 20 7b 0a 20 20 20 20 64  .1.$tn.2 {.    d
1510: 72 6f 70 74 72 69 67 67 65 72 5f 72 65 6f 70 65  roptrigger_reope
1520: 6e 5f 64 62 20 55 50 44 41 54 45 0a 20 20 20 20  n_db UPDATE.    
1530: 65 78 65 63 73 71 6c 20 24 64 72 6f 70 74 72 69  execsql $droptri
1540: 67 67 65 72 0a 20 20 20 20 65 78 65 63 73 71 6c  gger.    execsql
1550: 20 22 55 50 44 41 54 45 20 24 74 62 6c 20 53 45   "UPDATE $tbl SE
1560: 54 20 61 20 3d 20 27 61 62 63 27 22 0a 20 20 20  T a = 'abc'".   
1570: 20 73 65 74 20 3a 3a 74 72 69 67 67 65 72 73 5f   set ::triggers_
1580: 66 69 72 65 64 0a 20 20 7d 20 24 61 66 74 65 72  fired.  } $after
1590: 0a 7d 0a 66 6f 72 65 61 63 68 20 7b 74 6e 20 74  .}.foreach {tn t
15a0: 62 6c 20 64 72 6f 70 74 72 69 67 67 65 72 20 62  bl droptrigger b
15b0: 65 66 6f 72 65 20 61 66 74 65 72 7d 20 7b 0a 20  efore after} {. 
15c0: 20 31 20 20 20 74 31 20 20 22 44 52 4f 50 20 54   1   t1  "DROP T
15d0: 52 49 47 47 45 52 20 74 72 31 22 20 7b 74 65 6d  RIGGER tr1" {tem
15e0: 70 2e 74 72 31 7d 20 20 20 20 20 20 20 20 20 20  p.tr1}          
15f0: 20 20 20 20 20 20 7b 7d 0a 20 20 32 20 20 20 74        {}.  2   t
1600: 32 20 20 22 44 52 4f 50 20 54 52 49 47 47 45 52  2  "DROP TRIGGER
1610: 20 74 72 31 22 20 7b 6d 61 69 6e 2e 74 72 31 20   tr1" {main.tr1 
1620: 6d 61 69 6e 2e 74 72 32 7d 20 20 20 20 20 20 20  main.tr2}       
1630: 7b 6d 61 69 6e 2e 74 72 31 20 6d 61 69 6e 2e 74  {main.tr1 main.t
1640: 72 32 7d 0a 20 20 33 20 20 20 74 33 20 20 22 44  r2}.  3   t3  "D
1650: 52 4f 50 20 54 52 49 47 47 45 52 20 74 72 31 22  ROP TRIGGER tr1"
1660: 20 7b 61 75 78 2e 74 72 31 20 61 75 78 2e 74 72   {aux.tr1 aux.tr
1670: 33 20 61 75 78 2e 74 72 32 7d 20 7b 61 75 78 2e  3 aux.tr2} {aux.
1680: 74 72 31 20 61 75 78 2e 74 72 33 20 61 75 78 2e  tr1 aux.tr3 aux.
1690: 74 72 32 7d 0a 0a 20 20 34 20 20 20 74 31 20 20  tr2}..  4   t1  
16a0: 22 44 52 4f 50 20 54 52 49 47 47 45 52 20 74 72  "DROP TRIGGER tr
16b0: 32 22 20 7b 74 65 6d 70 2e 74 72 31 7d 20 20 20  2" {temp.tr1}   
16c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 74 65               {te
16d0: 6d 70 2e 74 72 31 7d 0a 20 20 35 20 20 20 74 32  mp.tr1}.  5   t2
16e0: 20 20 22 44 52 4f 50 20 54 52 49 47 47 45 52 20    "DROP TRIGGER 
16f0: 74 72 32 22 20 7b 6d 61 69 6e 2e 74 72 31 20 6d  tr2" {main.tr1 m
1700: 61 69 6e 2e 74 72 32 7d 20 20 20 20 20 20 20 7b  ain.tr2}       {
1710: 6d 61 69 6e 2e 74 72 31 7d 0a 20 20 36 20 20 20  main.tr1}.  6   
1720: 74 33 20 20 22 44 52 4f 50 20 54 52 49 47 47 45  t3  "DROP TRIGGE
1730: 52 20 74 72 32 22 20 7b 61 75 78 2e 74 72 31 20  R tr2" {aux.tr1 
1740: 61 75 78 2e 74 72 33 20 61 75 78 2e 74 72 32 7d  aux.tr3 aux.tr2}
1750: 20 7b 61 75 78 2e 74 72 31 20 61 75 78 2e 74 72   {aux.tr1 aux.tr
1760: 33 20 61 75 78 2e 74 72 32 7d 0a 0a 20 20 37 20  3 aux.tr2}..  7 
1770: 20 20 74 31 20 20 22 44 52 4f 50 20 54 52 49 47    t1  "DROP TRIG
1780: 47 45 52 20 74 72 33 22 20 7b 74 65 6d 70 2e 74  GER tr3" {temp.t
1790: 72 31 7d 20 20 20 20 20 20 20 20 20 20 20 20 20  r1}             
17a0: 20 20 20 7b 74 65 6d 70 2e 74 72 31 7d 0a 20 20     {temp.tr1}.  
17b0: 38 20 20 20 74 32 20 20 22 44 52 4f 50 20 54 52  8   t2  "DROP TR
17c0: 49 47 47 45 52 20 74 72 33 22 20 7b 6d 61 69 6e  IGGER tr3" {main
17d0: 2e 74 72 31 20 6d 61 69 6e 2e 74 72 32 7d 20 20  .tr1 main.tr2}  
17e0: 20 20 20 20 20 7b 6d 61 69 6e 2e 74 72 31 20 6d       {main.tr1 m
17f0: 61 69 6e 2e 74 72 32 7d 0a 20 20 39 20 20 20 74  ain.tr2}.  9   t
1800: 33 20 20 22 44 52 4f 50 20 54 52 49 47 47 45 52  3  "DROP TRIGGER
1810: 20 74 72 33 22 20 7b 61 75 78 2e 74 72 31 20 61   tr3" {aux.tr1 a
1820: 75 78 2e 74 72 33 20 61 75 78 2e 74 72 32 7d 20  ux.tr3 aux.tr2} 
1830: 7b 61 75 78 2e 74 72 31 20 61 75 78 2e 74 72 32  {aux.tr1 aux.tr2
1840: 7d 0a 7d 20 7b 0a 0a 20 20 64 6f 5f 74 65 73 74  }.} {..  do_test
1850: 20 33 2e 32 2e 24 74 6e 2e 31 20 7b 0a 20 20 20   3.2.$tn.1 {.   
1860: 20 64 72 6f 70 74 72 69 67 67 65 72 5f 72 65 6f   droptrigger_reo
1870: 70 65 6e 5f 64 62 20 44 45 4c 45 54 45 0a 20 20  pen_db DELETE.  
1880: 20 20 65 78 65 63 73 71 6c 20 22 44 45 4c 45 54    execsql "DELET
1890: 45 20 46 52 4f 4d 20 24 74 62 6c 22 0a 20 20 20  E FROM $tbl".   
18a0: 20 73 65 74 20 3a 3a 74 72 69 67 67 65 72 73 5f   set ::triggers_
18b0: 66 69 72 65 64 0a 20 20 7d 20 24 62 65 66 6f 72  fired.  } $befor
18c0: 65 0a 0a 20 20 64 6f 5f 74 65 73 74 20 33 2e 32  e..  do_test 3.2
18d0: 2e 24 74 6e 2e 32 20 7b 0a 20 20 20 20 64 72 6f  .$tn.2 {.    dro
18e0: 70 74 72 69 67 67 65 72 5f 72 65 6f 70 65 6e 5f  ptrigger_reopen_
18f0: 64 62 20 44 45 4c 45 54 45 0a 20 20 20 20 65 78  db DELETE.    ex
1900: 65 63 73 71 6c 20 24 64 72 6f 70 74 72 69 67 67  ecsql $droptrigg
1910: 65 72 0a 20 20 20 20 65 78 65 63 73 71 6c 20 22  er.    execsql "
1920: 44 45 4c 45 54 45 20 46 52 4f 4d 20 24 74 62 6c  DELETE FROM $tbl
1930: 22 0a 20 20 20 20 73 65 74 20 3a 3a 74 72 69 67  ".    set ::trig
1940: 67 65 72 73 5f 66 69 72 65 64 0a 20 20 7d 20 24  gers_fired.  } $
1950: 61 66 74 65 72 0a 7d 0a 0a 23 20 45 56 49 44 45  after.}..# EVIDE
1960: 4e 43 45 2d 4f 46 3a 20 52 2d 33 37 38 30 38 2d  NCE-OF: R-37808-
1970: 36 32 32 37 33 20 4e 6f 74 65 20 74 68 61 74 20  62273 Note that 
1980: 74 72 69 67 67 65 72 73 20 61 72 65 20 61 75 74  triggers are aut
1990: 6f 6d 61 74 69 63 61 6c 6c 79 0a 23 20 64 72 6f  omatically.# dro
19a0: 70 70 65 64 20 77 68 65 6e 20 74 68 65 20 61 73  pped when the as
19b0: 73 6f 63 69 61 74 65 64 20 74 61 62 6c 65 20 69  sociated table i
19c0: 73 20 64 72 6f 70 70 65 64 2e 0a 23 0a 64 6f 5f  s dropped..#.do_
19d0: 74 65 73 74 20 34 2e 31 20 7b 0a 20 20 64 72 6f  test 4.1 {.  dro
19e0: 70 74 72 69 67 67 65 72 5f 72 65 6f 70 65 6e 5f  ptrigger_reopen_
19f0: 64 62 0a 20 20 6c 69 73 74 5f 61 6c 6c 5f 74 72  db.  list_all_tr
1a00: 69 67 67 65 72 73 0a 7d 20 7b 6d 61 69 6e 2e 74  iggers.} {main.t
1a10: 72 31 20 6d 61 69 6e 2e 74 72 32 20 74 65 6d 70  r1 main.tr2 temp
1a20: 2e 74 72 31 20 61 75 78 2e 74 72 31 20 61 75 78  .tr1 aux.tr1 aux
1a30: 2e 74 72 32 20 61 75 78 2e 74 72 33 7d 0a 64 6f  .tr2 aux.tr3}.do
1a40: 5f 74 65 73 74 20 34 2e 32 20 7b 0a 20 20 64 72  _test 4.2 {.  dr
1a50: 6f 70 74 72 69 67 67 65 72 5f 72 65 6f 70 65 6e  optrigger_reopen
1a60: 5f 64 62 0a 20 20 65 78 65 63 73 71 6c 20 22 44  _db.  execsql "D
1a70: 52 4f 50 20 54 41 42 4c 45 20 74 31 22 0a 20 20  ROP TABLE t1".  
1a80: 6c 69 73 74 5f 61 6c 6c 5f 74 72 69 67 67 65 72  list_all_trigger
1a90: 73 0a 7d 20 7b 6d 61 69 6e 2e 74 72 31 20 6d 61  s.} {main.tr1 ma
1aa0: 69 6e 2e 74 72 32 20 61 75 78 2e 74 72 31 20 61  in.tr2 aux.tr1 a
1ab0: 75 78 2e 74 72 32 20 61 75 78 2e 74 72 33 7d 0a  ux.tr2 aux.tr3}.
1ac0: 64 6f 5f 74 65 73 74 20 34 2e 33 20 7b 0a 20 20  do_test 4.3 {.  
1ad0: 64 72 6f 70 74 72 69 67 67 65 72 5f 72 65 6f 70  droptrigger_reop
1ae0: 65 6e 5f 64 62 0a 20 20 65 78 65 63 73 71 6c 20  en_db.  execsql 
1af0: 22 44 52 4f 50 20 54 41 42 4c 45 20 74 31 22 0a  "DROP TABLE t1".
1b00: 20 20 6c 69 73 74 5f 61 6c 6c 5f 74 72 69 67 67    list_all_trigg
1b10: 65 72 73 0a 7d 20 7b 6d 61 69 6e 2e 74 72 31 20  ers.} {main.tr1 
1b20: 6d 61 69 6e 2e 74 72 32 20 61 75 78 2e 74 72 31  main.tr2 aux.tr1
1b30: 20 61 75 78 2e 74 72 32 20 61 75 78 2e 74 72 33   aux.tr2 aux.tr3
1b40: 7d 0a 64 6f 5f 74 65 73 74 20 34 2e 34 20 7b 0a  }.do_test 4.4 {.
1b50: 20 20 64 72 6f 70 74 72 69 67 67 65 72 5f 72 65    droptrigger_re
1b60: 6f 70 65 6e 5f 64 62 0a 20 20 65 78 65 63 73 71  open_db.  execsq
1b70: 6c 20 22 44 52 4f 50 20 54 41 42 4c 45 20 74 31  l "DROP TABLE t1
1b80: 22 0a 20 20 6c 69 73 74 5f 61 6c 6c 5f 74 72 69  ".  list_all_tri
1b90: 67 67 65 72 73 0a 7d 20 7b 6d 61 69 6e 2e 74 72  ggers.} {main.tr
1ba0: 31 20 6d 61 69 6e 2e 74 72 32 20 61 75 78 2e 74  1 main.tr2 aux.t
1bb0: 72 31 20 61 75 78 2e 74 72 32 20 61 75 78 2e 74  r1 aux.tr2 aux.t
1bc0: 72 33 7d 0a 0a 66 69 6e 69 73 68 5f 74 65 73 74  r3}..finish_test
1bd0: 0a                                               .