/ Hex Artifact Content
Login

Artifact 0b96c0df9b6390c728d9e15ff046419b678ddf44:


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 63 72 65 61 74 65  tprefix e_create
0240: 74 61 62 6c 65 0a 0a 69 66 63 61 70 61 62 6c 65  table..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 61 62 6c 65 5f 74 65 73 74 73 20 7b 6e 6d 20  table_tests {nm 
0290: 61 72 67 73 7d 20 7b 0a 20 20 75 70 6c 65 76 65  args} {.  upleve
02a0: 6c 20 64 6f 5f 73 65 6c 65 63 74 5f 74 65 73 74  l do_select_test
02b0: 73 20 5b 6c 69 73 74 20 65 5f 63 72 65 61 74 65  s [list e_create
02c0: 74 61 62 6c 65 2d 24 6e 6d 5d 20 24 61 72 67 73  table-$nm] $args
02d0: 0a 7d 0a 0a 70 72 6f 63 20 6c 69 73 74 5f 61 6c  .}..proc list_al
02e0: 6c 5f 74 72 69 67 67 65 72 73 20 7b 7b 64 62 20  l_triggers {{db 
02f0: 64 62 7d 7d 20 7b 0a 20 20 73 65 74 20 72 65 73  db}} {.  set res
0300: 20 5b 6c 69 73 74 5d 0a 20 20 24 64 62 20 65 76   [list].  $db ev
0310: 61 6c 20 7b 20 50 52 41 47 4d 41 20 64 61 74 61  al { PRAGMA data
0320: 62 61 73 65 5f 6c 69 73 74 20 7d 20 7b 0a 20 20  base_list } {.  
0330: 20 20 69 66 20 7b 24 6e 61 6d 65 20 3d 3d 20 22    if {$name == "
0340: 74 65 6d 70 22 7d 20 7b 0a 20 20 20 20 20 20 73  temp"} {.      s
0350: 65 74 20 74 62 6c 20 73 71 6c 69 74 65 5f 74 65  et tbl sqlite_te
0360: 6d 70 5f 6d 61 73 74 65 72 0a 20 20 20 20 7d 20  mp_master.    } 
0370: 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 73 65 74  else {.      set
0380: 20 74 62 6c 20 22 24 6e 61 6d 65 2e 73 71 6c 69   tbl "$name.sqli
0390: 74 65 5f 6d 61 73 74 65 72 22 0a 20 20 20 20 7d  te_master".    }
03a0: 0a 20 20 20 20 6c 61 70 70 65 6e 64 20 72 65 73  .    lappend res
03b0: 20 7b 2a 7d 5b 0a 20 20 20 20 20 20 64 62 20 65   {*}[.      db e
03c0: 76 61 6c 20 22 53 45 4c 45 43 54 20 27 24 6e 61  val "SELECT '$na
03d0: 6d 65 2e 27 20 7c 7c 20 6e 61 6d 65 20 46 52 4f  me.' || name FRO
03e0: 4d 20 24 74 62 6c 20 57 48 45 52 45 20 74 79 70  M $tbl WHERE typ
03f0: 65 20 3d 20 27 74 72 69 67 67 65 72 27 22 0a 20  e = 'trigger'". 
0400: 20 20 20 5d 0a 20 20 7d 0a 20 20 73 65 74 20 72     ].  }.  set r
0410: 65 73 0a 7d 0a 0a 0a 70 72 6f 63 20 64 72 6f 70  es.}...proc drop
0420: 74 72 69 67 67 65 72 5f 72 65 6f 70 65 6e 5f 64  trigger_reopen_d
0430: 62 20 7b 7b 65 76 65 6e 74 20 49 4e 53 45 52 54  b {{event INSERT
0440: 7d 7d 20 7b 0a 20 20 64 62 20 63 6c 6f 73 65 0a  }} {.  db close.
0450: 20 20 66 6f 72 63 65 64 65 6c 65 74 65 20 74 65    forcedelete te
0460: 73 74 2e 64 62 20 74 65 73 74 2e 64 62 32 0a 20  st.db test.db2. 
0470: 20 73 71 6c 69 74 65 33 20 64 62 20 74 65 73 74   sqlite3 db test
0480: 2e 64 62 0a 0a 20 20 73 65 74 20 3a 3a 74 72 69  .db..  set ::tri
0490: 67 67 65 72 73 5f 66 69 72 65 64 20 5b 6c 69 73  ggers_fired [lis
04a0: 74 5d 0a 20 20 70 72 6f 63 20 72 20 7b 78 7d 20  t].  proc r {x} 
04b0: 7b 20 6c 61 70 70 65 6e 64 20 3a 3a 74 72 69 67  { lappend ::trig
04c0: 67 65 72 73 5f 66 69 72 65 64 20 24 78 20 7d 0a  gers_fired $x }.
04d0: 20 20 64 62 20 66 75 6e 63 20 72 20 72 0a 0a 20    db func r r.. 
04e0: 20 64 62 20 65 76 61 6c 20 22 0a 20 20 20 20 41   db eval ".    A
04f0: 54 54 41 43 48 20 27 74 65 73 74 2e 64 62 32 27  TTACH 'test.db2'
0500: 20 41 53 20 61 75 78 3b 0a 0a 20 20 20 20 43 52   AS aux;..    CR
0510: 45 41 54 45 20 54 45 4d 50 20 54 41 42 4c 45 20  EATE TEMP TABLE 
0520: 74 31 28 61 2c 20 62 29 3b 0a 20 20 20 20 49 4e  t1(a, b);.    IN
0530: 53 45 52 54 20 49 4e 54 4f 20 74 31 20 56 41 4c  SERT INTO t1 VAL
0540: 55 45 53 28 27 61 27 2c 20 27 62 27 29 3b 0a 20  UES('a', 'b');. 
0550: 20 20 20 43 52 45 41 54 45 20 54 52 49 47 47 45     CREATE TRIGGE
0560: 52 20 74 72 31 20 41 46 54 45 52 20 24 65 76 65  R tr1 AFTER $eve
0570: 6e 74 20 4f 4e 20 74 31 20 42 45 47 49 4e 20 53  nt ON t1 BEGIN S
0580: 45 4c 45 43 54 20 72 28 27 74 65 6d 70 2e 74 72  ELECT r('temp.tr
0590: 31 27 29 20 3b 20 45 4e 44 3b 0a 0a 20 20 20 20  1') ; END;..    
05a0: 43 52 45 41 54 45 20 54 41 42 4c 45 20 74 32 28  CREATE TABLE t2(
05b0: 61 2c 20 62 29 3b 0a 20 20 20 20 49 4e 53 45 52  a, b);.    INSER
05c0: 54 20 49 4e 54 4f 20 74 32 20 56 41 4c 55 45 53  T INTO t2 VALUES
05d0: 28 27 61 27 2c 20 27 62 27 29 3b 0a 20 20 20 20  ('a', 'b');.    
05e0: 43 52 45 41 54 45 20 54 52 49 47 47 45 52 20 74  CREATE TRIGGER t
05f0: 72 31 20 42 45 46 4f 52 45 20 24 65 76 65 6e 74  r1 BEFORE $event
0600: 20 4f 4e 20 74 32 20 42 45 47 49 4e 20 53 45 4c   ON t2 BEGIN SEL
0610: 45 43 54 20 72 28 27 6d 61 69 6e 2e 74 72 31 27  ECT r('main.tr1'
0620: 29 20 3b 20 45 4e 44 3b 0a 20 20 20 20 43 52 45  ) ; END;.    CRE
0630: 41 54 45 20 54 52 49 47 47 45 52 20 74 72 32 20  ATE TRIGGER tr2 
0640: 41 46 54 45 52 20 20 24 65 76 65 6e 74 20 4f 4e  AFTER  $event ON
0650: 20 74 32 20 42 45 47 49 4e 20 53 45 4c 45 43 54   t2 BEGIN SELECT
0660: 20 72 28 27 6d 61 69 6e 2e 74 72 32 27 29 20 3b   r('main.tr2') ;
0670: 20 45 4e 44 3b 0a 0a 20 20 20 20 43 52 45 41 54   END;..    CREAT
0680: 45 20 54 41 42 4c 45 20 61 75 78 2e 74 33 28 61  E TABLE aux.t3(a
0690: 2c 20 62 29 3b 0a 20 20 20 20 49 4e 53 45 52 54  , b);.    INSERT
06a0: 20 49 4e 54 4f 20 74 33 20 56 41 4c 55 45 53 28   INTO t3 VALUES(
06b0: 27 61 27 2c 20 27 62 27 29 3b 0a 20 20 20 20 43  'a', 'b');.    C
06c0: 52 45 41 54 45 20 54 52 49 47 47 45 52 20 61 75  REATE TRIGGER au
06d0: 78 2e 74 72 31 20 42 45 46 4f 52 45 20 24 65 76  x.tr1 BEFORE $ev
06e0: 65 6e 74 20 4f 4e 20 74 33 20 42 45 47 49 4e 20  ent ON t3 BEGIN 
06f0: 53 45 4c 45 43 54 20 72 28 27 61 75 78 2e 74 72  SELECT r('aux.tr
0700: 31 27 29 20 3b 20 45 4e 44 3b 0a 20 20 20 20 43  1') ; END;.    C
0710: 52 45 41 54 45 20 54 52 49 47 47 45 52 20 61 75  REATE TRIGGER au
0720: 78 2e 74 72 32 20 41 46 54 45 52 20 20 24 65 76  x.tr2 AFTER  $ev
0730: 65 6e 74 20 4f 4e 20 74 33 20 42 45 47 49 4e 20  ent ON t3 BEGIN 
0740: 53 45 4c 45 43 54 20 72 28 27 61 75 78 2e 74 72  SELECT r('aux.tr
0750: 32 27 29 20 3b 20 45 4e 44 3b 0a 20 20 20 20 43  2') ; END;.    C
0760: 52 45 41 54 45 20 54 52 49 47 47 45 52 20 61 75  REATE TRIGGER au
0770: 78 2e 74 72 33 20 41 46 54 45 52 20 20 24 65 76  x.tr3 AFTER  $ev
0780: 65 6e 74 20 4f 4e 20 74 33 20 42 45 47 49 4e 20  ent ON t3 BEGIN 
0790: 53 45 4c 45 43 54 20 72 28 27 61 75 78 2e 74 72  SELECT r('aux.tr
07a0: 33 27 29 20 3b 20 45 4e 44 3b 0a 20 20 22 0a 7d  3') ; END;.  ".}
07b0: 0a 0a 0a 23 20 45 56 49 44 45 4e 43 45 2d 4f 46  ...# EVIDENCE-OF
07c0: 3a 20 52 2d 35 32 36 35 30 2d 31 36 38 35 35 20  : R-52650-16855 
07d0: 2d 2d 20 73 79 6e 74 61 78 20 64 69 61 67 72 61  -- syntax diagra
07e0: 6d 20 64 72 6f 70 2d 74 72 69 67 67 65 72 2d 73  m drop-trigger-s
07f0: 74 6d 74 0a 23 0a 64 6f 5f 64 72 6f 70 74 61 62  tmt.#.do_droptab
0800: 6c 65 5f 74 65 73 74 73 20 31 2e 31 20 2d 72 65  le_tests 1.1 -re
0810: 70 61 69 72 20 7b 0a 20 20 64 72 6f 70 74 72 69  pair {.  droptri
0820: 67 67 65 72 5f 72 65 6f 70 65 6e 5f 64 62 0a 7d  gger_reopen_db.}
0830: 20 2d 74 63 6c 71 75 65 72 79 20 7b 0a 20 20 6c   -tclquery {.  l
0840: 69 73 74 5f 61 6c 6c 5f 74 72 69 67 67 65 72 73  ist_all_triggers
0850: 20 0a 7d 20 7b 0a 20 20 31 20 20 20 22 44 52 4f   .} {.  1   "DRO
0860: 50 20 54 52 49 47 47 45 52 20 6d 61 69 6e 2e 74  P TRIGGER main.t
0870: 72 31 22 20 20 20 20 20 20 20 20 20 20 20 20 0a  r1"            .
0880: 20 20 20 20 20 20 7b 6d 61 69 6e 2e 74 72 32 20        {main.tr2 
0890: 74 65 6d 70 2e 74 72 31 20 61 75 78 2e 74 72 31  temp.tr1 aux.tr1
08a0: 20 61 75 78 2e 74 72 32 20 61 75 78 2e 74 72 33   aux.tr2 aux.tr3
08b0: 7d 0a 20 20 32 20 20 20 22 44 52 4f 50 20 54 52  }.  2   "DROP TR
08c0: 49 47 47 45 52 20 49 46 20 45 58 49 53 54 53 20  IGGER IF EXISTS 
08d0: 6d 61 69 6e 2e 74 72 31 22 20 20 0a 20 20 20 20  main.tr1"  .    
08e0: 20 20 7b 6d 61 69 6e 2e 74 72 32 20 74 65 6d 70    {main.tr2 temp
08f0: 2e 74 72 31 20 61 75 78 2e 74 72 31 20 61 75 78  .tr1 aux.tr1 aux
0900: 2e 74 72 32 20 61 75 78 2e 74 72 33 7d 0a 20 20  .tr2 aux.tr3}.  
0910: 33 20 20 20 22 44 52 4f 50 20 54 52 49 47 47 45  3   "DROP TRIGGE
0920: 52 20 74 72 31 22 20 20 20 20 20 20 20 20 20 20  R tr1"          
0930: 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 7b 6d         .      {m
0940: 61 69 6e 2e 74 72 31 20 6d 61 69 6e 2e 74 72 32  ain.tr1 main.tr2
0950: 20 61 75 78 2e 74 72 31 20 61 75 78 2e 74 72 32   aux.tr1 aux.tr2
0960: 20 61 75 78 2e 74 72 33 7d 0a 20 20 34 20 20 20   aux.tr3}.  4   
0970: 22 44 52 4f 50 20 54 52 49 47 47 45 52 20 49 46  "DROP TRIGGER IF
0980: 20 45 58 49 53 54 53 20 74 72 31 22 20 20 20 20   EXISTS tr1"    
0990: 20 20 20 0a 20 20 20 20 20 20 7b 6d 61 69 6e 2e     .      {main.
09a0: 74 72 31 20 6d 61 69 6e 2e 74 72 32 20 61 75 78  tr1 main.tr2 aux
09b0: 2e 74 72 31 20 61 75 78 2e 74 72 32 20 61 75 78  .tr1 aux.tr2 aux
09c0: 2e 74 72 33 7d 0a 0a 20 20 35 20 20 20 22 44 52  .tr3}..  5   "DR
09d0: 4f 50 20 54 52 49 47 47 45 52 20 61 75 78 2e 74  OP TRIGGER aux.t
09e0: 72 31 22 20 20 20 20 20 20 20 20 20 20 20 20 20  r1"             
09f0: 0a 20 20 20 20 20 20 7b 6d 61 69 6e 2e 74 72 31  .      {main.tr1
0a00: 20 6d 61 69 6e 2e 74 72 32 20 74 65 6d 70 2e 74   main.tr2 temp.t
0a10: 72 31 20 61 75 78 2e 74 72 32 20 61 75 78 2e 74  r1 aux.tr2 aux.t
0a20: 72 33 7d 0a 20 20 36 20 20 20 22 44 52 4f 50 20  r3}.  6   "DROP 
0a30: 54 52 49 47 47 45 52 20 49 46 20 45 58 49 53 54  TRIGGER IF EXIST
0a40: 53 20 61 75 78 2e 74 72 31 22 20 20 20 0a 20 20  S aux.tr1"   .  
0a50: 20 20 20 20 7b 6d 61 69 6e 2e 74 72 31 20 6d 61      {main.tr1 ma
0a60: 69 6e 2e 74 72 32 20 74 65 6d 70 2e 74 72 31 20  in.tr2 temp.tr1 
0a70: 61 75 78 2e 74 72 32 20 61 75 78 2e 74 72 33 7d  aux.tr2 aux.tr3}
0a80: 0a 0a 20 20 37 20 20 20 22 44 52 4f 50 20 54 52  ..  7   "DROP TR
0a90: 49 47 47 45 52 20 49 46 20 45 58 49 53 54 53 20  IGGER IF EXISTS 
0aa0: 61 75 78 2e 78 78 78 22 20 20 20 0a 20 20 20 20  aux.xxx"   .    
0ab0: 20 20 7b 6d 61 69 6e 2e 74 72 31 20 6d 61 69 6e    {main.tr1 main
0ac0: 2e 74 72 32 20 74 65 6d 70 2e 74 72 31 20 61 75  .tr2 temp.tr1 au
0ad0: 78 2e 74 72 31 20 61 75 78 2e 74 72 32 20 61 75  x.tr1 aux.tr2 au
0ae0: 78 2e 74 72 33 7d 0a 20 20 38 20 20 20 22 44 52  x.tr3}.  8   "DR
0af0: 4f 50 20 54 52 49 47 47 45 52 20 49 46 20 45 58  OP TRIGGER IF EX
0b00: 49 53 54 53 20 61 75 78 2e 78 78 78 22 20 20 20  ISTS aux.xxx"   
0b10: 0a 20 20 20 20 20 20 7b 6d 61 69 6e 2e 74 72 31  .      {main.tr1
0b20: 20 6d 61 69 6e 2e 74 72 32 20 74 65 6d 70 2e 74   main.tr2 temp.t
0b30: 72 31 20 61 75 78 2e 74 72 31 20 61 75 78 2e 74  r1 aux.tr1 aux.t
0b40: 72 32 20 61 75 78 2e 74 72 33 7d 0a 7d 0a 0a 23  r2 aux.tr3}.}..#
0b50: 20 45 56 49 44 45 4e 43 45 2d 4f 46 3a 20 52 2d   EVIDENCE-OF: R-
0b60: 36 31 31 37 32 2d 31 35 36 37 31 20 54 68 65 20  61172-15671 The 
0b70: 44 52 4f 50 20 54 52 49 47 47 45 52 20 73 74 61  DROP TRIGGER sta
0b80: 74 65 6d 65 6e 74 20 72 65 6d 6f 76 65 73 20 61  tement removes a
0b90: 0a 23 20 74 72 69 67 67 65 72 20 63 72 65 61 74  .# trigger creat
0ba0: 65 64 20 62 79 20 74 68 65 20 43 52 45 41 54 45  ed by the CREATE
0bb0: 20 54 52 49 47 47 45 52 20 73 74 61 74 65 6d 65   TRIGGER stateme
0bc0: 6e 74 2e 0a 23 0a 66 6f 72 65 61 63 68 20 7b 74  nt..#.foreach {t
0bd0: 6e 20 74 62 6c 20 64 72 6f 70 74 72 69 67 67 65  n tbl droptrigge
0be0: 72 20 62 65 66 6f 72 65 20 61 66 74 65 72 7d 20  r before after} 
0bf0: 7b 0a 20 20 31 20 20 20 74 31 20 20 22 44 52 4f  {.  1   t1  "DRO
0c00: 50 20 54 52 49 47 47 45 52 20 74 72 31 22 20 7b  P TRIGGER tr1" {
0c10: 74 65 6d 70 2e 74 72 31 7d 20 20 20 20 20 20 20  temp.tr1}       
0c20: 20 20 20 20 20 20 20 20 20 7b 7d 0a 20 20 32 20           {}.  2 
0c30: 20 20 74 32 20 20 22 44 52 4f 50 20 54 52 49 47    t2  "DROP TRIG
0c40: 47 45 52 20 74 72 31 22 20 7b 6d 61 69 6e 2e 74  GER tr1" {main.t
0c50: 72 31 20 6d 61 69 6e 2e 74 72 32 7d 20 20 20 20  r1 main.tr2}    
0c60: 20 20 20 7b 6d 61 69 6e 2e 74 72 31 20 6d 61 69     {main.tr1 mai
0c70: 6e 2e 74 72 32 7d 0a 20 20 33 20 20 20 74 33 20  n.tr2}.  3   t3 
0c80: 20 22 44 52 4f 50 20 54 52 49 47 47 45 52 20 74   "DROP TRIGGER t
0c90: 72 31 22 20 7b 61 75 78 2e 74 72 31 20 61 75 78  r1" {aux.tr1 aux
0ca0: 2e 74 72 33 20 61 75 78 2e 74 72 32 7d 20 7b 61  .tr3 aux.tr2} {a
0cb0: 75 78 2e 74 72 31 20 61 75 78 2e 74 72 33 20 61  ux.tr1 aux.tr3 a
0cc0: 75 78 2e 74 72 32 7d 0a 0a 20 20 34 20 20 20 74  ux.tr2}..  4   t
0cd0: 31 20 20 22 44 52 4f 50 20 54 52 49 47 47 45 52  1  "DROP TRIGGER
0ce0: 20 74 72 32 22 20 7b 74 65 6d 70 2e 74 72 31 7d   tr2" {temp.tr1}
0cf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0d00: 7b 74 65 6d 70 2e 74 72 31 7d 0a 20 20 35 20 20  {temp.tr1}.  5  
0d10: 20 74 32 20 20 22 44 52 4f 50 20 54 52 49 47 47   t2  "DROP TRIGG
0d20: 45 52 20 74 72 32 22 20 7b 6d 61 69 6e 2e 74 72  ER tr2" {main.tr
0d30: 31 20 6d 61 69 6e 2e 74 72 32 7d 20 20 20 20 20  1 main.tr2}     
0d40: 20 20 7b 6d 61 69 6e 2e 74 72 31 7d 0a 20 20 36    {main.tr1}.  6
0d50: 20 20 20 74 33 20 20 22 44 52 4f 50 20 54 52 49     t3  "DROP TRI
0d60: 47 47 45 52 20 74 72 32 22 20 7b 61 75 78 2e 74  GGER tr2" {aux.t
0d70: 72 31 20 61 75 78 2e 74 72 33 20 61 75 78 2e 74  r1 aux.tr3 aux.t
0d80: 72 32 7d 20 7b 61 75 78 2e 74 72 31 20 61 75 78  r2} {aux.tr1 aux
0d90: 2e 74 72 33 20 61 75 78 2e 74 72 32 7d 0a 0a 20  .tr3 aux.tr2}.. 
0da0: 20 37 20 20 20 74 31 20 20 22 44 52 4f 50 20 54   7   t1  "DROP T
0db0: 52 49 47 47 45 52 20 74 72 33 22 20 7b 74 65 6d  RIGGER tr3" {tem
0dc0: 70 2e 74 72 31 7d 20 20 20 20 20 20 20 20 20 20  p.tr1}          
0dd0: 20 20 20 20 20 20 7b 74 65 6d 70 2e 74 72 31 7d        {temp.tr1}
0de0: 0a 20 20 38 20 20 20 74 32 20 20 22 44 52 4f 50  .  8   t2  "DROP
0df0: 20 54 52 49 47 47 45 52 20 74 72 33 22 20 7b 6d   TRIGGER tr3" {m
0e00: 61 69 6e 2e 74 72 31 20 6d 61 69 6e 2e 74 72 32  ain.tr1 main.tr2
0e10: 7d 20 20 20 20 20 20 20 7b 6d 61 69 6e 2e 74 72  }       {main.tr
0e20: 31 20 6d 61 69 6e 2e 74 72 32 7d 0a 20 20 39 20  1 main.tr2}.  9 
0e30: 20 20 74 33 20 20 22 44 52 4f 50 20 54 52 49 47    t3  "DROP TRIG
0e40: 47 45 52 20 74 72 33 22 20 7b 61 75 78 2e 74 72  GER tr3" {aux.tr
0e50: 31 20 61 75 78 2e 74 72 33 20 61 75 78 2e 74 72  1 aux.tr3 aux.tr
0e60: 32 7d 20 7b 61 75 78 2e 74 72 31 20 61 75 78 2e  2} {aux.tr1 aux.
0e70: 74 72 32 7d 0a 7d 20 7b 0a 0a 20 20 64 6f 5f 74  tr2}.} {..  do_t
0e80: 65 73 74 20 32 2e 24 74 6e 2e 31 20 7b 0a 20 20  est 2.$tn.1 {.  
0e90: 20 20 64 72 6f 70 74 72 69 67 67 65 72 5f 72 65    droptrigger_re
0ea0: 6f 70 65 6e 5f 64 62 0a 20 20 20 20 65 78 65 63  open_db.    exec
0eb0: 73 71 6c 20 22 20 49 4e 53 45 52 54 20 49 4e 54  sql " INSERT INT
0ec0: 4f 20 24 74 62 6c 20 56 41 4c 55 45 53 28 27 31  O $tbl VALUES('1
0ed0: 27 2c 20 27 32 27 29 20 22 0a 20 20 20 20 73 65  ', '2') ".    se
0ee0: 74 20 3a 3a 74 72 69 67 67 65 72 73 5f 66 69 72  t ::triggers_fir
0ef0: 65 64 0a 20 20 7d 20 24 62 65 66 6f 72 65 0a 0a  ed.  } $before..
0f00: 20 20 64 6f 5f 74 65 73 74 20 32 2e 24 74 6e 2e    do_test 2.$tn.
0f10: 32 20 7b 0a 20 20 20 20 64 72 6f 70 74 72 69 67  2 {.    droptrig
0f20: 67 65 72 5f 72 65 6f 70 65 6e 5f 64 62 0a 20 20  ger_reopen_db.  
0f30: 20 20 65 78 65 63 73 71 6c 20 24 64 72 6f 70 74    execsql $dropt
0f40: 72 69 67 67 65 72 0a 20 20 20 20 65 78 65 63 73  rigger.    execs
0f50: 71 6c 20 22 20 49 4e 53 45 52 54 20 49 4e 54 4f  ql " INSERT INTO
0f60: 20 24 74 62 6c 20 56 41 4c 55 45 53 28 27 31 27   $tbl VALUES('1'
0f70: 2c 20 27 32 27 29 20 22 0a 20 20 20 20 73 65 74  , '2') ".    set
0f80: 20 3a 3a 74 72 69 67 67 65 72 73 5f 66 69 72 65   ::triggers_fire
0f90: 64 0a 20 20 7d 20 24 61 66 74 65 72 0a 7d 0a 0a  d.  } $after.}..
0fa0: 23 20 45 56 49 44 45 4e 43 45 2d 4f 46 3a 20 52  # EVIDENCE-OF: R
0fb0: 2d 35 30 32 33 39 2d 32 39 38 31 31 20 4f 6e 63  -50239-29811 Onc
0fc0: 65 20 72 65 6d 6f 76 65 64 2c 20 74 68 65 20 74  e removed, the t
0fd0: 72 69 67 67 65 72 20 64 65 66 69 6e 69 74 69 6f  rigger definitio
0fe0: 6e 20 69 73 20 6e 6f 0a 23 20 6c 6f 6e 67 65 72  n is no.# longer
0ff0: 20 70 72 65 73 65 6e 74 20 69 6e 20 74 68 65 20   present in the 
1000: 73 71 6c 69 74 65 5f 6d 61 73 74 65 72 20 28 6f  sqlite_master (o
1010: 72 20 73 71 6c 69 74 65 5f 74 65 6d 70 5f 6d 61  r sqlite_temp_ma
1020: 73 74 65 72 29 20 74 61 62 6c 65 20 61 6e 64 0a  ster) table and.
1030: 23 20 69 73 20 6e 6f 74 20 66 69 72 65 64 20 62  # is not fired b
1040: 79 20 61 6e 79 20 73 75 62 73 65 71 75 65 6e 74  y any subsequent
1050: 20 49 4e 53 45 52 54 2c 20 55 50 44 41 54 45 20   INSERT, UPDATE 
1060: 6f 72 20 44 45 4c 45 54 45 20 73 74 61 74 65 6d  or DELETE statem
1070: 65 6e 74 73 2e 0a 23 0a 23 20 20 20 54 65 73 74  ents..#.#   Test
1080: 20 63 61 73 65 73 20 65 5f 64 72 6f 70 74 72 69   cases e_droptri
1090: 67 67 65 72 2d 31 2e 2a 20 74 65 73 74 20 74 68  gger-1.* test th
10a0: 65 20 66 69 72 73 74 20 70 61 72 74 20 6f 66 20  e first part of 
10b0: 74 68 69 73 20 73 74 61 74 65 6d 65 6e 74 0a 23  this statement.#
10c0: 20 20 20 28 74 68 61 74 20 64 72 6f 70 70 65 64     (that dropped
10d0: 20 74 72 69 67 67 65 72 73 20 64 6f 20 6e 6f 74   triggers do not
10e0: 20 61 70 70 65 61 72 20 69 6e 20 74 68 65 20 73   appear in the s
10f0: 63 68 65 6d 61 20 74 61 62 6c 65 29 2c 20 61 6e  chema table), an
1100: 64 20 74 65 73 74 73 0a 23 20 20 20 64 72 6f 70  d tests.#   drop
1110: 74 72 69 67 67 65 72 2d 32 2e 2a 20 74 65 73 74  trigger-2.* test
1120: 20 74 68 61 74 20 64 72 6f 70 70 65 64 20 74 72   that dropped tr
1130: 69 67 67 65 72 73 20 61 72 65 20 6e 6f 74 20 66  iggers are not f
1140: 69 72 65 64 20 62 79 20 49 4e 53 45 52 54 0a 23  ired by INSERT.#
1150: 20 20 20 73 74 61 74 65 6d 65 6e 74 73 2e 20 54     statements. T
1160: 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 65 73  he following tes
1170: 74 73 20 76 65 72 69 66 79 20 74 68 61 74 20 74  ts verify that t
1180: 68 65 79 20 61 72 65 20 6e 6f 74 20 66 69 72 65  hey are not fire
1190: 64 20 62 79 0a 23 20 20 20 55 50 44 41 54 45 20  d by.#   UPDATE 
11a0: 6f 72 20 44 45 4c 45 54 45 20 73 74 61 74 65 6d  or DELETE statem
11b0: 65 6e 74 73 2e 0a 23 0a 66 6f 72 65 61 63 68 20  ents..#.foreach 
11c0: 7b 74 6e 20 74 62 6c 20 64 72 6f 70 74 72 69 67  {tn tbl droptrig
11d0: 67 65 72 20 62 65 66 6f 72 65 20 61 66 74 65 72  ger before after
11e0: 7d 20 7b 0a 20 20 31 20 20 20 74 31 20 20 22 44  } {.  1   t1  "D
11f0: 52 4f 50 20 54 52 49 47 47 45 52 20 74 72 31 22  ROP TRIGGER tr1"
1200: 20 7b 74 65 6d 70 2e 74 72 31 7d 20 20 20 20 20   {temp.tr1}     
1210: 20 20 20 20 20 20 20 20 20 20 20 7b 7d 0a 20 20             {}.  
1220: 32 20 20 20 74 32 20 20 22 44 52 4f 50 20 54 52  2   t2  "DROP TR
1230: 49 47 47 45 52 20 74 72 31 22 20 7b 6d 61 69 6e  IGGER tr1" {main
1240: 2e 74 72 31 20 6d 61 69 6e 2e 74 72 32 7d 20 20  .tr1 main.tr2}  
1250: 20 20 20 20 20 7b 6d 61 69 6e 2e 74 72 31 20 6d       {main.tr1 m
1260: 61 69 6e 2e 74 72 32 7d 0a 20 20 33 20 20 20 74  ain.tr2}.  3   t
1270: 33 20 20 22 44 52 4f 50 20 54 52 49 47 47 45 52  3  "DROP TRIGGER
1280: 20 74 72 31 22 20 7b 61 75 78 2e 74 72 31 20 61   tr1" {aux.tr1 a
1290: 75 78 2e 74 72 33 20 61 75 78 2e 74 72 32 7d 20  ux.tr3 aux.tr2} 
12a0: 7b 61 75 78 2e 74 72 31 20 61 75 78 2e 74 72 33  {aux.tr1 aux.tr3
12b0: 20 61 75 78 2e 74 72 32 7d 0a 0a 20 20 34 20 20   aux.tr2}..  4  
12c0: 20 74 31 20 20 22 44 52 4f 50 20 54 52 49 47 47   t1  "DROP TRIGG
12d0: 45 52 20 74 72 32 22 20 7b 74 65 6d 70 2e 74 72  ER tr2" {temp.tr
12e0: 31 7d 20 20 20 20 20 20 20 20 20 20 20 20 20 20  1}              
12f0: 20 20 7b 74 65 6d 70 2e 74 72 31 7d 0a 20 20 35    {temp.tr1}.  5
1300: 20 20 20 74 32 20 20 22 44 52 4f 50 20 54 52 49     t2  "DROP TRI
1310: 47 47 45 52 20 74 72 32 22 20 7b 6d 61 69 6e 2e  GGER tr2" {main.
1320: 74 72 31 20 6d 61 69 6e 2e 74 72 32 7d 20 20 20  tr1 main.tr2}   
1330: 20 20 20 20 7b 6d 61 69 6e 2e 74 72 31 7d 0a 20      {main.tr1}. 
1340: 20 36 20 20 20 74 33 20 20 22 44 52 4f 50 20 54   6   t3  "DROP T
1350: 52 49 47 47 45 52 20 74 72 32 22 20 7b 61 75 78  RIGGER tr2" {aux
1360: 2e 74 72 31 20 61 75 78 2e 74 72 33 20 61 75 78  .tr1 aux.tr3 aux
1370: 2e 74 72 32 7d 20 7b 61 75 78 2e 74 72 31 20 61  .tr2} {aux.tr1 a
1380: 75 78 2e 74 72 33 20 61 75 78 2e 74 72 32 7d 0a  ux.tr3 aux.tr2}.
1390: 0a 20 20 37 20 20 20 74 31 20 20 22 44 52 4f 50  .  7   t1  "DROP
13a0: 20 54 52 49 47 47 45 52 20 74 72 33 22 20 7b 74   TRIGGER tr3" {t
13b0: 65 6d 70 2e 74 72 31 7d 20 20 20 20 20 20 20 20  emp.tr1}        
13c0: 20 20 20 20 20 20 20 20 7b 74 65 6d 70 2e 74 72          {temp.tr
13d0: 31 7d 0a 20 20 38 20 20 20 74 32 20 20 22 44 52  1}.  8   t2  "DR
13e0: 4f 50 20 54 52 49 47 47 45 52 20 74 72 33 22 20  OP TRIGGER tr3" 
13f0: 7b 6d 61 69 6e 2e 74 72 31 20 6d 61 69 6e 2e 74  {main.tr1 main.t
1400: 72 32 7d 20 20 20 20 20 20 20 7b 6d 61 69 6e 2e  r2}       {main.
1410: 74 72 31 20 6d 61 69 6e 2e 74 72 32 7d 0a 20 20  tr1 main.tr2}.  
1420: 39 20 20 20 74 33 20 20 22 44 52 4f 50 20 54 52  9   t3  "DROP TR
1430: 49 47 47 45 52 20 74 72 33 22 20 7b 61 75 78 2e  IGGER tr3" {aux.
1440: 74 72 31 20 61 75 78 2e 74 72 33 20 61 75 78 2e  tr1 aux.tr3 aux.
1450: 74 72 32 7d 20 7b 61 75 78 2e 74 72 31 20 61 75  tr2} {aux.tr1 au
1460: 78 2e 74 72 32 7d 0a 7d 20 7b 0a 0a 20 20 64 6f  x.tr2}.} {..  do
1470: 5f 74 65 73 74 20 33 2e 31 2e 24 74 6e 2e 31 20  _test 3.1.$tn.1 
1480: 7b 0a 20 20 20 20 64 72 6f 70 74 72 69 67 67 65  {.    droptrigge
1490: 72 5f 72 65 6f 70 65 6e 5f 64 62 20 55 50 44 41  r_reopen_db UPDA
14a0: 54 45 0a 20 20 20 20 65 78 65 63 73 71 6c 20 22  TE.    execsql "
14b0: 55 50 44 41 54 45 20 24 74 62 6c 20 53 45 54 20  UPDATE $tbl SET 
14c0: 61 20 3d 20 27 61 62 63 27 22 0a 20 20 20 20 73  a = 'abc'".    s
14d0: 65 74 20 3a 3a 74 72 69 67 67 65 72 73 5f 66 69  et ::triggers_fi
14e0: 72 65 64 0a 20 20 7d 20 24 62 65 66 6f 72 65 0a  red.  } $before.
14f0: 0a 20 20 64 6f 5f 74 65 73 74 20 33 2e 31 2e 24  .  do_test 3.1.$
1500: 74 6e 2e 32 20 7b 0a 20 20 20 20 64 72 6f 70 74  tn.2 {.    dropt
1510: 72 69 67 67 65 72 5f 72 65 6f 70 65 6e 5f 64 62  rigger_reopen_db
1520: 20 55 50 44 41 54 45 0a 20 20 20 20 65 78 65 63   UPDATE.    exec
1530: 73 71 6c 20 24 64 72 6f 70 74 72 69 67 67 65 72  sql $droptrigger
1540: 0a 20 20 20 20 65 78 65 63 73 71 6c 20 22 55 50  .    execsql "UP
1550: 44 41 54 45 20 24 74 62 6c 20 53 45 54 20 61 20  DATE $tbl SET a 
1560: 3d 20 27 61 62 63 27 22 0a 20 20 20 20 73 65 74  = 'abc'".    set
1570: 20 3a 3a 74 72 69 67 67 65 72 73 5f 66 69 72 65   ::triggers_fire
1580: 64 0a 20 20 7d 20 24 61 66 74 65 72 0a 7d 0a 66  d.  } $after.}.f
1590: 6f 72 65 61 63 68 20 7b 74 6e 20 74 62 6c 20 64  oreach {tn tbl d
15a0: 72 6f 70 74 72 69 67 67 65 72 20 62 65 66 6f 72  roptrigger befor
15b0: 65 20 61 66 74 65 72 7d 20 7b 0a 20 20 31 20 20  e after} {.  1  
15c0: 20 74 31 20 20 22 44 52 4f 50 20 54 52 49 47 47   t1  "DROP TRIGG
15d0: 45 52 20 74 72 31 22 20 7b 74 65 6d 70 2e 74 72  ER tr1" {temp.tr
15e0: 31 7d 20 20 20 20 20 20 20 20 20 20 20 20 20 20  1}              
15f0: 20 20 7b 7d 0a 20 20 32 20 20 20 74 32 20 20 22    {}.  2   t2  "
1600: 44 52 4f 50 20 54 52 49 47 47 45 52 20 74 72 31  DROP TRIGGER tr1
1610: 22 20 7b 6d 61 69 6e 2e 74 72 31 20 6d 61 69 6e  " {main.tr1 main
1620: 2e 74 72 32 7d 20 20 20 20 20 20 20 7b 6d 61 69  .tr2}       {mai
1630: 6e 2e 74 72 31 20 6d 61 69 6e 2e 74 72 32 7d 0a  n.tr1 main.tr2}.
1640: 20 20 33 20 20 20 74 33 20 20 22 44 52 4f 50 20    3   t3  "DROP 
1650: 54 52 49 47 47 45 52 20 74 72 31 22 20 7b 61 75  TRIGGER tr1" {au
1660: 78 2e 74 72 31 20 61 75 78 2e 74 72 33 20 61 75  x.tr1 aux.tr3 au
1670: 78 2e 74 72 32 7d 20 7b 61 75 78 2e 74 72 31 20  x.tr2} {aux.tr1 
1680: 61 75 78 2e 74 72 33 20 61 75 78 2e 74 72 32 7d  aux.tr3 aux.tr2}
1690: 0a 0a 20 20 34 20 20 20 74 31 20 20 22 44 52 4f  ..  4   t1  "DRO
16a0: 50 20 54 52 49 47 47 45 52 20 74 72 32 22 20 7b  P TRIGGER tr2" {
16b0: 74 65 6d 70 2e 74 72 31 7d 20 20 20 20 20 20 20  temp.tr1}       
16c0: 20 20 20 20 20 20 20 20 20 7b 74 65 6d 70 2e 74           {temp.t
16d0: 72 31 7d 0a 20 20 35 20 20 20 74 32 20 20 22 44  r1}.  5   t2  "D
16e0: 52 4f 50 20 54 52 49 47 47 45 52 20 74 72 32 22  ROP TRIGGER tr2"
16f0: 20 7b 6d 61 69 6e 2e 74 72 31 20 6d 61 69 6e 2e   {main.tr1 main.
1700: 74 72 32 7d 20 20 20 20 20 20 20 7b 6d 61 69 6e  tr2}       {main
1710: 2e 74 72 31 7d 0a 20 20 36 20 20 20 74 33 20 20  .tr1}.  6   t3  
1720: 22 44 52 4f 50 20 54 52 49 47 47 45 52 20 74 72  "DROP TRIGGER tr
1730: 32 22 20 7b 61 75 78 2e 74 72 31 20 61 75 78 2e  2" {aux.tr1 aux.
1740: 74 72 33 20 61 75 78 2e 74 72 32 7d 20 7b 61 75  tr3 aux.tr2} {au
1750: 78 2e 74 72 31 20 61 75 78 2e 74 72 33 20 61 75  x.tr1 aux.tr3 au
1760: 78 2e 74 72 32 7d 0a 0a 20 20 37 20 20 20 74 31  x.tr2}..  7   t1
1770: 20 20 22 44 52 4f 50 20 54 52 49 47 47 45 52 20    "DROP TRIGGER 
1780: 74 72 33 22 20 7b 74 65 6d 70 2e 74 72 31 7d 20  tr3" {temp.tr1} 
1790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
17a0: 74 65 6d 70 2e 74 72 31 7d 0a 20 20 38 20 20 20  temp.tr1}.  8   
17b0: 74 32 20 20 22 44 52 4f 50 20 54 52 49 47 47 45  t2  "DROP TRIGGE
17c0: 52 20 74 72 33 22 20 7b 6d 61 69 6e 2e 74 72 31  R tr3" {main.tr1
17d0: 20 6d 61 69 6e 2e 74 72 32 7d 20 20 20 20 20 20   main.tr2}      
17e0: 20 7b 6d 61 69 6e 2e 74 72 31 20 6d 61 69 6e 2e   {main.tr1 main.
17f0: 74 72 32 7d 0a 20 20 39 20 20 20 74 33 20 20 22  tr2}.  9   t3  "
1800: 44 52 4f 50 20 54 52 49 47 47 45 52 20 74 72 33  DROP TRIGGER tr3
1810: 22 20 7b 61 75 78 2e 74 72 31 20 61 75 78 2e 74  " {aux.tr1 aux.t
1820: 72 33 20 61 75 78 2e 74 72 32 7d 20 7b 61 75 78  r3 aux.tr2} {aux
1830: 2e 74 72 31 20 61 75 78 2e 74 72 32 7d 0a 7d 20  .tr1 aux.tr2}.} 
1840: 7b 0a 0a 20 20 64 6f 5f 74 65 73 74 20 33 2e 32  {..  do_test 3.2
1850: 2e 24 74 6e 2e 31 20 7b 0a 20 20 20 20 64 72 6f  .$tn.1 {.    dro
1860: 70 74 72 69 67 67 65 72 5f 72 65 6f 70 65 6e 5f  ptrigger_reopen_
1870: 64 62 20 44 45 4c 45 54 45 0a 20 20 20 20 65 78  db DELETE.    ex
1880: 65 63 73 71 6c 20 22 44 45 4c 45 54 45 20 46 52  ecsql "DELETE FR
1890: 4f 4d 20 24 74 62 6c 22 0a 20 20 20 20 73 65 74  OM $tbl".    set
18a0: 20 3a 3a 74 72 69 67 67 65 72 73 5f 66 69 72 65   ::triggers_fire
18b0: 64 0a 20 20 7d 20 24 62 65 66 6f 72 65 0a 0a 20  d.  } $before.. 
18c0: 20 64 6f 5f 74 65 73 74 20 33 2e 32 2e 24 74 6e   do_test 3.2.$tn
18d0: 2e 32 20 7b 0a 20 20 20 20 64 72 6f 70 74 72 69  .2 {.    droptri
18e0: 67 67 65 72 5f 72 65 6f 70 65 6e 5f 64 62 20 44  gger_reopen_db D
18f0: 45 4c 45 54 45 0a 20 20 20 20 65 78 65 63 73 71  ELETE.    execsq
1900: 6c 20 24 64 72 6f 70 74 72 69 67 67 65 72 0a 20  l $droptrigger. 
1910: 20 20 20 65 78 65 63 73 71 6c 20 22 44 45 4c 45     execsql "DELE
1920: 54 45 20 46 52 4f 4d 20 24 74 62 6c 22 0a 20 20  TE FROM $tbl".  
1930: 20 20 73 65 74 20 3a 3a 74 72 69 67 67 65 72 73    set ::triggers
1940: 5f 66 69 72 65 64 0a 20 20 7d 20 24 61 66 74 65  _fired.  } $afte
1950: 72 0a 7d 0a 0a 23 20 45 56 49 44 45 4e 43 45 2d  r.}..# EVIDENCE-
1960: 4f 46 3a 20 52 2d 33 37 38 30 38 2d 36 32 32 37  OF: R-37808-6227
1970: 33 20 4e 6f 74 65 20 74 68 61 74 20 74 72 69 67  3 Note that trig
1980: 67 65 72 73 20 61 72 65 20 61 75 74 6f 6d 61 74  gers are automat
1990: 69 63 61 6c 6c 79 0a 23 20 64 72 6f 70 70 65 64  ically.# dropped
19a0: 20 77 68 65 6e 20 74 68 65 20 61 73 73 6f 63 69   when the associ
19b0: 61 74 65 64 20 74 61 62 6c 65 20 69 73 20 64 72  ated table is dr
19c0: 6f 70 70 65 64 2e 0a 23 0a 64 6f 5f 74 65 73 74  opped..#.do_test
19d0: 20 34 2e 31 20 7b 0a 20 20 64 72 6f 70 74 72 69   4.1 {.  droptri
19e0: 67 67 65 72 5f 72 65 6f 70 65 6e 5f 64 62 0a 20  gger_reopen_db. 
19f0: 20 6c 69 73 74 5f 61 6c 6c 5f 74 72 69 67 67 65   list_all_trigge
1a00: 72 73 0a 7d 20 7b 6d 61 69 6e 2e 74 72 31 20 6d  rs.} {main.tr1 m
1a10: 61 69 6e 2e 74 72 32 20 74 65 6d 70 2e 74 72 31  ain.tr2 temp.tr1
1a20: 20 61 75 78 2e 74 72 31 20 61 75 78 2e 74 72 32   aux.tr1 aux.tr2
1a30: 20 61 75 78 2e 74 72 33 7d 0a 64 6f 5f 74 65 73   aux.tr3}.do_tes
1a40: 74 20 34 2e 32 20 7b 0a 20 20 64 72 6f 70 74 72  t 4.2 {.  droptr
1a50: 69 67 67 65 72 5f 72 65 6f 70 65 6e 5f 64 62 0a  igger_reopen_db.
1a60: 20 20 65 78 65 63 73 71 6c 20 22 44 52 4f 50 20    execsql "DROP 
1a70: 54 41 42 4c 45 20 74 31 22 0a 20 20 6c 69 73 74  TABLE t1".  list
1a80: 5f 61 6c 6c 5f 74 72 69 67 67 65 72 73 0a 7d 20  _all_triggers.} 
1a90: 7b 6d 61 69 6e 2e 74 72 31 20 6d 61 69 6e 2e 74  {main.tr1 main.t
1aa0: 72 32 20 61 75 78 2e 74 72 31 20 61 75 78 2e 74  r2 aux.tr1 aux.t
1ab0: 72 32 20 61 75 78 2e 74 72 33 7d 0a 64 6f 5f 74  r2 aux.tr3}.do_t
1ac0: 65 73 74 20 34 2e 33 20 7b 0a 20 20 64 72 6f 70  est 4.3 {.  drop
1ad0: 74 72 69 67 67 65 72 5f 72 65 6f 70 65 6e 5f 64  trigger_reopen_d
1ae0: 62 0a 20 20 65 78 65 63 73 71 6c 20 22 44 52 4f  b.  execsql "DRO
1af0: 50 20 54 41 42 4c 45 20 74 31 22 0a 20 20 6c 69  P TABLE t1".  li
1b00: 73 74 5f 61 6c 6c 5f 74 72 69 67 67 65 72 73 0a  st_all_triggers.
1b10: 7d 20 7b 6d 61 69 6e 2e 74 72 31 20 6d 61 69 6e  } {main.tr1 main
1b20: 2e 74 72 32 20 61 75 78 2e 74 72 31 20 61 75 78  .tr2 aux.tr1 aux
1b30: 2e 74 72 32 20 61 75 78 2e 74 72 33 7d 0a 64 6f  .tr2 aux.tr3}.do
1b40: 5f 74 65 73 74 20 34 2e 34 20 7b 0a 20 20 64 72  _test 4.4 {.  dr
1b50: 6f 70 74 72 69 67 67 65 72 5f 72 65 6f 70 65 6e  optrigger_reopen
1b60: 5f 64 62 0a 20 20 65 78 65 63 73 71 6c 20 22 44  _db.  execsql "D
1b70: 52 4f 50 20 54 41 42 4c 45 20 74 31 22 0a 20 20  ROP TABLE t1".  
1b80: 6c 69 73 74 5f 61 6c 6c 5f 74 72 69 67 67 65 72  list_all_trigger
1b90: 73 0a 7d 20 7b 6d 61 69 6e 2e 74 72 31 20 6d 61  s.} {main.tr1 ma
1ba0: 69 6e 2e 74 72 32 20 61 75 78 2e 74 72 31 20 61  in.tr2 aux.tr1 a
1bb0: 75 78 2e 74 72 32 20 61 75 78 2e 74 72 33 7d 0a  ux.tr2 aux.tr3}.
1bc0: 0a 66 69 6e 69 73 68 5f 74 65 73 74 0a           .finish_test.