Documentation Source Text

Hex Artifact Content
Login

Artifact 598b032a972a3869c8f9987c1e59453b50a2647c:


0000: 3c 74 69 74 6c 65 3e 51 75 65 72 79 20 4c 61 6e  <title>Query Lan
0010: 67 75 61 67 65 20 55 6e 64 65 72 73 74 6f 6f 64  guage Understood
0020: 20 62 79 20 53 51 4c 69 74 65 3c 2f 74 69 74 6c   by SQLite</titl
0030: 65 3e 0a 0a 3c 68 32 3e 53 51 4c 20 41 73 20 55  e>..<h2>SQL As U
0040: 6e 64 65 72 73 74 6f 6f 64 20 42 79 20 53 51 4c  nderstood By SQL
0050: 69 74 65 3c 2f 68 32 3e 0a 0a 3c 70 3e 53 51 4c  ite</h2>..<p>SQL
0060: 69 74 65 20 75 6e 64 65 72 73 74 61 6e 64 73 20  ite understands 
0070: 6d 6f 73 74 20 6f 66 20 74 68 65 20 73 74 61 6e  most of the stan
0080: 64 61 72 64 20 53 51 4c 0a 6c 61 6e 67 75 61 67  dard SQL.languag
0090: 65 2e 20 20 42 75 74 20 69 74 20 64 6f 65 73 20  e.  But it does 
00a0: 3c 61 20 68 72 65 66 3d 22 6f 6d 69 74 74 65 64  <a href="omitted
00b0: 2e 68 74 6d 6c 22 3e 6f 6d 69 74 20 73 6f 6d 65  .html">omit some
00c0: 20 66 65 61 74 75 72 65 73 3c 2f 61 3e 0a 77 68   features</a>.wh
00d0: 69 6c 65 20 61 74 20 74 68 65 20 73 61 6d 65 20  ile at the same 
00e0: 74 69 6d 65 0a 61 64 64 69 6e 67 20 61 20 66 65  time.adding a fe
00f0: 77 20 66 65 61 74 75 72 65 73 20 6f 66 20 69 74  w features of it
0100: 73 20 6f 77 6e 2e 20 20 54 68 69 73 20 64 6f 63  s own.  This doc
0110: 75 6d 65 6e 74 20 61 74 74 65 6d 70 74 73 20 74  ument attempts t
0120: 6f 0a 64 65 73 63 72 69 62 65 20 70 72 65 63 69  o.describe preci
0130: 73 65 6c 79 20 77 68 61 74 20 70 61 72 74 73 20  sely what parts 
0140: 6f 66 20 74 68 65 20 53 51 4c 20 6c 61 6e 67 75  of the SQL langu
0150: 61 67 65 20 53 51 4c 69 74 65 20 64 6f 65 73 0a  age SQLite does.
0160: 61 6e 64 20 64 6f 65 73 20 6e 6f 74 20 73 75 70  and does not sup
0170: 70 6f 72 74 2e 20 20 41 20 6c 69 73 74 20 6f 66  port.  A list of
0180: 20 3c 61 20 68 72 65 66 3d 22 6c 61 6e 67 5f 6b   <a href="lang_k
0190: 65 79 77 6f 72 64 73 2e 68 74 6d 6c 22 3e 6b 65  eywords.html">ke
01a0: 79 77 6f 72 64 73 3c 2f 61 3e 20 69 73 20 0a 61  ywords</a> is .a
01b0: 6c 73 6f 20 70 72 6f 76 69 64 65 64 2e 20 20 54  lso provided.  T
01c0: 68 65 20 53 51 4c 20 6c 61 6e 67 75 61 67 65 20  he SQL language 
01d0: 73 79 6e 74 61 78 20 69 73 20 64 65 73 63 72 69  syntax is descri
01e0: 62 65 64 20 62 79 0a 3c 61 20 68 72 65 66 3d 22  bed by.<a href="
01f0: 73 79 6e 74 61 78 64 69 61 67 72 61 6d 73 2e 68  syntaxdiagrams.h
0200: 74 6d 6c 22 3e 73 79 6e 74 61 78 20 64 69 61 67  tml">syntax diag
0210: 72 61 6d 73 3c 2f 61 3e 2e 3c 2f 70 3e 0a 0a 3c  rams</a>.</p>..<
0220: 70 3e 49 6e 20 61 6c 6c 20 6f 66 20 74 68 65 20  p>In all of the 
0230: 73 79 6e 74 61 78 20 64 69 61 67 72 61 6d 73 20  syntax diagrams 
0240: 74 68 61 74 20 66 6f 6c 6c 6f 77 2c 20 6c 69 74  that follow, lit
0250: 65 72 61 6c 20 74 65 78 74 20 69 73 20 73 68 6f  eral text is sho
0260: 77 6e 20 69 6e 0a 62 6f 6c 64 20 62 6c 75 65 2e  wn in.bold blue.
0270: 20 20 4e 6f 6e 2d 74 65 72 6d 69 6e 61 6c 20 73    Non-terminal s
0280: 79 6d 62 6f 6c 73 20 61 72 65 20 73 68 6f 77 6e  ymbols are shown
0290: 20 69 6e 20 69 74 61 6c 69 63 20 72 65 64 2e 20   in italic red. 
02a0: 20 4f 70 65 72 61 74 6f 72 73 0a 74 68 61 74 20   Operators.that 
02b0: 61 72 65 20 70 61 72 74 20 6f 66 20 74 68 65 20  are part of the 
02c0: 73 79 6e 74 61 63 74 69 63 20 6d 61 72 6b 75 70  syntactic markup
02d0: 20 69 74 73 65 6c 66 20 61 72 65 20 73 68 6f 77   itself are show
02e0: 6e 20 69 6e 20 62 6c 61 63 6b 20 72 6f 6d 61 6e  n in black roman
02f0: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 69 73 20 64  .</p>..<p>This d
0300: 6f 63 75 6d 65 6e 74 20 69 73 20 6a 75 73 74 20  ocument is just 
0310: 61 6e 20 6f 76 65 72 76 69 65 77 20 6f 66 20 74  an overview of t
0320: 68 65 20 53 51 4c 20 73 79 6e 74 61 78 20 69 6d  he SQL syntax im
0330: 70 6c 65 6d 65 6e 74 65 64 0a 62 79 20 53 51 4c  plemented.by SQL
0340: 69 74 65 2e 20 20 4d 61 6e 79 20 6c 6f 77 2d 6c  ite.  Many low-l
0350: 65 76 65 6c 20 70 72 6f 64 75 63 74 69 6f 6e 73  evel productions
0360: 20 61 72 65 20 6f 6d 69 74 74 65 64 2e 20 20 46   are omitted.  F
0370: 6f 72 20 64 65 74 61 69 6c 65 64 20 69 6e 66 6f  or detailed info
0380: 72 6d 61 74 69 6f 6e 0a 6f 6e 20 74 68 65 20 6c  rmation.on the l
0390: 61 6e 67 75 61 67 65 20 74 68 61 74 20 53 51 4c  anguage that SQL
03a0: 69 74 65 20 75 6e 64 65 72 73 74 61 6e 64 73 2c  ite understands,
03b0: 20 72 65 66 65 72 20 74 6f 20 74 68 65 20 73 6f   refer to the so
03c0: 75 72 63 65 20 63 6f 64 65 20 61 6e 64 0a 74 68  urce code and.th
03d0: 65 20 67 72 61 6d 6d 61 72 20 66 69 6c 65 20 22  e grammar file "
03e0: 70 61 72 73 65 2e 79 22 2e 3c 2f 70 3e 0a 0a 3c  parse.y".</p>..<
03f0: 70 3e 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20  p>The following 
0400: 73 79 6e 74 61 78 20 64 6f 63 75 6d 65 6e 74 61  syntax documenta
0410: 74 69 6f 6e 20 74 6f 70 69 63 73 20 61 72 65 20  tion topics are 
0420: 61 76 61 69 6c 61 62 6c 65 3a 3c 2f 70 3e 0a 0a  available:</p>..
0430: 3c 74 61 62 6c 65 20 77 69 64 74 68 3d 22 31 30  <table width="10
0440: 30 25 22 20 63 65 6c 6c 70 61 64 64 69 6e 67 3d  0%" cellpadding=
0450: 22 35 22 20 62 6f 72 64 65 72 3d 22 30 22 3e 0a  "5" border="0">.
0460: 3c 74 72 3e 3c 74 64 20 76 61 6c 69 67 6e 3d 22  <tr><td valign="
0470: 74 6f 70 22 3e 3c 75 6c 3e 0a 0a 3c 74 63 6c 3e  top"><ul>..<tcl>
0480: 0a 20 20 73 65 74 20 69 20 30 0a 20 20 73 65 74  .  set i 0.  set
0490: 20 6c 61 6e 67 5f 73 65 63 74 69 6f 6e 5f 6c 69   lang_section_li
04a0: 73 74 20 7b 0a 20 20 7b 7b 43 52 45 41 54 45 20  st {.  {{CREATE 
04b0: 54 41 42 4c 45 7d 20 63 72 65 61 74 65 74 61 62  TABLE} createtab
04c0: 6c 65 7d 0a 20 20 7b 7b 43 52 45 41 54 45 20 56  le}.  {{CREATE V
04d0: 49 52 54 55 41 4c 20 54 41 42 4c 45 7d 20 63 72  IRTUAL TABLE} cr
04e0: 65 61 74 65 76 74 61 62 7d 0a 20 20 7b 7b 43 52  eatevtab}.  {{CR
04f0: 45 41 54 45 20 49 4e 44 45 58 7d 20 63 72 65 61  EATE INDEX} crea
0500: 74 65 69 6e 64 65 78 7d 0a 20 20 7b 56 41 43 55  teindex}.  {VACU
0510: 55 4d 20 76 61 63 75 75 6d 7d 0a 20 20 7b 7b 44  UM vacuum}.  {{D
0520: 52 4f 50 20 54 41 42 4c 45 7d 20 64 72 6f 70 74  ROP TABLE} dropt
0530: 61 62 6c 65 7d 0a 20 20 7b 7b 44 52 4f 50 20 49  able}.  {{DROP I
0540: 4e 44 45 58 7d 20 64 72 6f 70 69 6e 64 65 78 7d  NDEX} dropindex}
0550: 0a 20 20 7b 49 4e 53 45 52 54 20 69 6e 73 65 72  .  {INSERT inser
0560: 74 7d 0a 20 20 7b 52 45 50 4c 41 43 45 20 72 65  t}.  {REPLACE re
0570: 70 6c 61 63 65 7d 0a 20 20 7b 44 45 4c 45 54 45  place}.  {DELETE
0580: 20 64 65 6c 65 74 65 7d 0a 20 20 7b 55 50 44 41   delete}.  {UPDA
0590: 54 45 20 75 70 64 61 74 65 7d 0a 20 20 7b 53 45  TE update}.  {SE
05a0: 4c 45 43 54 20 73 65 6c 65 63 74 7d 0a 20 20 7b  LECT select}.  {
05b0: 63 6f 6d 6d 65 6e 74 20 63 6f 6d 6d 65 6e 74 7d  comment comment}
05c0: 0a 20 20 7b 45 58 50 4c 41 49 4e 20 65 78 70 6c  .  {EXPLAIN expl
05d0: 61 69 6e 7d 0a 20 20 7b 65 78 70 72 65 73 73 69  ain}.  {expressi
05e0: 6f 6e 20 65 78 70 72 7d 0a 20 20 7b 7b 42 45 47  on expr}.  {{BEG
05f0: 49 4e 20 54 52 41 4e 53 41 43 54 49 4f 4e 7d 20  IN TRANSACTION} 
0600: 74 72 61 6e 73 61 63 74 69 6f 6e 7d 0a 20 20 7b  transaction}.  {
0610: 7b 43 4f 4d 4d 49 54 20 54 52 41 4e 53 41 43 54  {COMMIT TRANSACT
0620: 49 4f 4e 7d 20 74 72 61 6e 73 61 63 74 69 6f 6e  ION} transaction
0630: 20 43 4f 4d 4d 49 54 7d 0a 20 20 7b 7b 45 4e 44   COMMIT}.  {{END
0640: 20 54 52 41 4e 53 41 43 54 49 4f 4e 7d 20 74 72   TRANSACTION} tr
0650: 61 6e 73 61 63 74 69 6f 6e 20 43 4f 4d 4d 49 54  ansaction COMMIT
0660: 7d 0a 20 20 7b 7b 52 4f 4c 4c 42 41 43 4b 20 54  }.  {{ROLLBACK T
0670: 52 41 4e 53 41 43 54 49 4f 4e 7d 20 74 72 61 6e  RANSACTION} tran
0680: 73 61 63 74 69 6f 6e 20 52 4f 4c 4c 42 41 43 4b  saction ROLLBACK
0690: 7d 0a 20 20 7b 53 41 56 45 50 4f 49 4e 54 20 73  }.  {SAVEPOINT s
06a0: 61 76 65 70 6f 69 6e 74 7d 0a 20 20 7b 7b 52 45  avepoint}.  {{RE
06b0: 4c 45 41 53 45 20 53 41 56 45 50 4f 49 4e 54 7d  LEASE SAVEPOINT}
06c0: 20 73 61 76 65 70 6f 69 6e 74 20 53 41 56 45 50   savepoint SAVEP
06d0: 4f 49 4e 54 7d 0a 20 20 7b 50 52 41 47 4d 41 20  OINT}.  {PRAGMA 
06e0: 70 72 61 67 6d 61 2e 68 74 6d 6c 7d 0a 20 20 7b  pragma.html}.  {
06f0: 7b 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 63 6c 61  {ON CONFLICT cla
0700: 75 73 65 7d 20 63 6f 6e 66 6c 69 63 74 7d 0a 20  use} conflict}. 
0710: 20 7b 7b 43 52 45 41 54 45 20 56 49 45 57 7d 20   {{CREATE VIEW} 
0720: 63 72 65 61 74 65 76 69 65 77 7d 0a 20 20 7b 7b  createview}.  {{
0730: 44 52 4f 50 20 56 49 45 57 7d 20 64 72 6f 70 76  DROP VIEW} dropv
0740: 69 65 77 7d 0a 20 20 7b 7b 43 52 45 41 54 45 20  iew}.  {{CREATE 
0750: 54 52 49 47 47 45 52 7d 20 63 72 65 61 74 65 74  TRIGGER} createt
0760: 72 69 67 67 65 72 7d 0a 20 20 7b 7b 44 52 4f 50  rigger}.  {{DROP
0770: 20 54 52 49 47 47 45 52 7d 20 64 72 6f 70 74 72   TRIGGER} droptr
0780: 69 67 67 65 72 7d 0a 20 20 7b 7b 41 54 54 41 43  igger}.  {{ATTAC
0790: 48 20 44 41 54 41 42 41 53 45 7d 20 61 74 74 61  H DATABASE} atta
07a0: 63 68 7d 0a 20 20 7b 7b 44 45 54 41 43 48 20 44  ch}.  {{DETACH D
07b0: 41 54 41 42 41 53 45 7d 20 64 65 74 61 63 68 7d  ATABASE} detach}
07c0: 0a 20 20 7b 52 45 49 4e 44 45 58 20 72 65 69 6e  .  {REINDEX rein
07d0: 64 65 78 7d 0a 20 20 7b 7b 41 4c 54 45 52 20 54  dex}.  {{ALTER T
07e0: 41 42 4c 45 7d 20 61 6c 74 65 72 74 61 62 6c 65  ABLE} altertable
07f0: 7d 0a 20 20 7b 7b 41 4e 41 4c 59 5a 45 7d 20 61  }.  {{ANALYZE} a
0800: 6e 61 6c 79 7a 65 7d 0a 20 20 7b 7b 49 4e 44 45  nalyze}.  {{INDE
0810: 58 45 44 20 42 59 7d 20 69 6e 64 65 78 65 64 62  XED BY} indexedb
0820: 79 7d 0a 20 20 7b 7b 61 67 67 72 65 67 61 74 65  y}.  {{aggregate
0830: 20 66 75 6e 63 74 69 6f 6e 73 7d 20 61 67 67 66   functions} aggf
0840: 75 6e 63 20 61 67 67 66 75 6e 63 7d 0a 20 20 7b  unc aggfunc}.  {
0850: 7b 63 6f 72 65 20 66 75 6e 63 74 69 6f 6e 73 7d  {core functions}
0860: 20 63 6f 72 65 66 75 6e 63 20 63 6f 72 65 66 75   corefunc corefu
0870: 6e 63 7d 0a 20 20 7b 7b 64 61 74 65 20 61 6e 64  nc}.  {{date and
0880: 20 74 69 6d 65 20 66 75 6e 63 74 69 6f 6e 73 7d   time functions}
0890: 20 64 61 74 65 66 75 6e 63 20 64 61 74 65 66 75   datefunc datefu
08a0: 6e 63 7d 0a 20 20 7b 6b 65 79 77 6f 72 64 73 20  nc}.  {keywords 
08b0: 6b 65 79 77 6f 72 64 73 20 7b 53 51 4c 20 6b 65  keywords {SQL ke
08c0: 79 77 6f 72 64 73 7d 7d 0a 20 20 7d 0a 20 20 73  ywords}}.  }.  s
08d0: 65 74 20 6c 61 6e 67 5f 73 65 63 74 69 6f 6e 5f  et lang_section_
08e0: 62 72 65 61 6b 20 5b 65 78 70 72 20 7b 28 5b 6c  break [expr {([l
08f0: 6c 65 6e 67 74 68 20 24 6c 61 6e 67 5f 73 65 63  length $lang_sec
0900: 74 69 6f 6e 5f 6c 69 73 74 5d 2b 32 29 2f 33 7d  tion_list]+2)/3}
0910: 5d 0a 20 20 66 6f 72 65 61 63 68 20 7b 73 65 63  ].  foreach {sec
0920: 74 69 6f 6e 7d 20 5b 6c 73 6f 72 74 20 2d 69 6e  tion} [lsort -in
0930: 64 65 78 20 30 20 2d 64 69 63 74 69 6f 6e 61 72  dex 0 -dictionar
0940: 79 20 24 6c 61 6e 67 5f 73 65 63 74 69 6f 6e 5f  y $lang_section_
0950: 6c 69 73 74 5d 20 7b 0a 20 20 66 6f 72 65 61 63  list] {.  foreac
0960: 68 20 7b 73 5f 74 69 74 6c 65 20 73 5f 74 61 67  h {s_title s_tag
0970: 20 73 5f 6b 77 7d 20 24 73 65 63 74 69 6f 6e 20   s_kw} $section 
0980: 7b 7d 0a 20 20 69 66 20 7b 24 73 5f 6b 77 20 3d  {}.  if {$s_kw =
0990: 3d 20 22 22 7d 20 7b 0a 20 20 20 20 73 65 74 20  = ""} {.    set 
09a0: 73 5f 6b 77 20 24 73 5f 74 69 74 6c 65 0a 20 20  s_kw $s_title.  
09b0: 7d 0a 20 20 69 66 20 7b 24 73 5f 74 61 67 3d 3d  }.  if {$s_tag==
09c0: 22 70 72 61 67 6d 61 2e 68 74 6d 6c 22 7d 20 7b  "pragma.html"} {
09d0: 0a 20 20 20 20 73 65 74 20 75 72 6c 20 24 73 5f  .    set url $s_
09e0: 74 61 67 0a 20 20 7d 20 65 6c 73 65 20 7b 0a 20  tag.  } else {. 
09f0: 20 20 20 73 65 74 20 75 72 6c 20 6c 61 6e 67 5f     set url lang_
0a00: 24 73 5f 74 61 67 2e 68 74 6d 6c 0a 20 20 7d 0a  $s_tag.html.  }.
0a10: 20 20 68 64 5f 72 65 73 6f 6c 76 65 20 22 3c 6c    hd_resolve "<l
0a20: 69 3e 5c 5b 24 73 5f 6b 77 7c 24 73 5f 74 69 74  i>\[$s_kw|$s_tit
0a30: 6c 65 5c 5d 3c 2f 6c 69 3e 22 0a 20 20 69 6e 63  le\]</li>".  inc
0a40: 72 20 69 0a 20 20 69 66 20 7b 24 69 3d 3d 24 6c  r i.  if {$i==$l
0a50: 61 6e 67 5f 73 65 63 74 69 6f 6e 5f 62 72 65 61  ang_section_brea
0a60: 6b 20 7c 7c 20 24 69 3d 3d 32 2a 24 6c 61 6e 67  k || $i==2*$lang
0a70: 5f 73 65 63 74 69 6f 6e 5f 62 72 65 61 6b 7d 20  _section_break} 
0a80: 7b 0a 20 20 20 20 68 64 5f 70 75 74 73 20 22 3c  {.    hd_puts "<
0a90: 2f 75 6c 3e 3c 2f 74 64 3e 3c 74 64 20 76 61 6c  /ul></td><td val
0aa0: 69 67 6e 3d 5c 22 74 6f 70 5c 22 3e 3c 75 6c 3e  ign=\"top\"><ul>
0ab0: 22 0a 20 20 7d 0a 7d 0a 3c 2f 74 63 6c 3e 0a 3c  ".  }.}.</tcl>.<
0ac0: 2f 75 6c 3e 3c 2f 74 64 3e 3c 2f 74 72 3e 3c 2f  /ul></td></tr></
0ad0: 74 61 62 6c 65 3e 0a 0a 3c 70 3e 54 68 65 20 72  table>..<p>The r
0ae0: 6f 75 74 69 6e 65 73 20 5b 73 71 6c 69 74 65 33  outines [sqlite3
0af0: 5f 70 72 65 70 61 72 65 5f 76 32 28 29 5d 2c 20  _prepare_v2()], 
0b00: 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65  [sqlite3_prepare
0b10: 28 29 5d 2c 0a 5b 73 71 6c 69 74 65 33 5f 70 72  ()],.[sqlite3_pr
0b20: 65 70 61 72 65 31 36 28 29 5d 2c 20 5b 73 71 6c  epare16()], [sql
0b30: 69 74 65 33 5f 65 78 65 63 28 29 5d 2c 20 61 6e  ite3_exec()], an
0b40: 64 20 5b 73 71 6c 69 74 65 33 5f 67 65 74 5f 74  d [sqlite3_get_t
0b50: 61 62 6c 65 28 29 5d 20 61 63 63 65 70 74 0a 61  able()] accept.a
0b60: 6e 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20  n SQL statement 
0b70: 6c 69 73 74 20 28 73 71 6c 2d 73 74 6d 74 2d 6c  list (sql-stmt-l
0b80: 69 73 74 29 20 77 68 69 63 68 20 69 73 20 61 20  ist) which is a 
0b90: 73 65 6d 69 63 6f 6c 6f 6e 2d 73 65 70 61 72 61  semicolon-separa
0ba0: 74 65 64 0a 6c 69 73 74 20 6f 66 20 73 74 61 74  ted.list of stat
0bb0: 65 6d 65 6e 74 73 2e 3c 2f 70 3e 0a 0a 3c 74 63  ements.</p>..<tc
0bc0: 6c 3e 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20  l>BubbleDiagram 
0bd0: 73 71 6c 2d 73 74 6d 74 2d 6c 69 73 74 3c 2f 74  sql-stmt-list</t
0be0: 63 6c 3e 0a 0a 3c 70 3e 45 61 63 68 20 53 51 4c  cl>..<p>Each SQL
0bf0: 20 73 74 61 74 65 6d 65 6e 74 20 69 6e 20 74 68   statement in th
0c00: 65 20 73 74 61 74 65 6d 65 6e 74 20 6c 69 73 74  e statement list
0c10: 20 69 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 20   is an instance 
0c20: 6f 66 20 74 68 65 0a 66 6f 6c 6c 6f 77 69 6e 67  of the.following
0c30: 3a 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 42 75 62 62  :</p>..<tcl>Bubb
0c40: 6c 65 44 69 61 67 72 61 6d 20 73 71 6c 2d 73 74  leDiagram sql-st
0c50: 6d 74 3c 2f 74 63 6c 3e 0a 0a 3c 74 63 6c 3e 0a  mt</tcl>..<tcl>.
0c60: 70 72 6f 63 20 4f 70 65 72 61 74 6f 72 20 7b 6e  proc Operator {n
0c70: 61 6d 65 7d 20 7b 0a 20 20 72 65 74 75 72 6e 20  ame} {.  return 
0c80: 22 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 5c 22 23  "<font color=\"#
0c90: 32 63 32 63 66 30 5c 22 3e 3c 62 69 67 3e 24 6e  2c2cf0\"><big>$n
0ca0: 61 6d 65 3c 2f 62 69 67 3e 3c 2f 66 6f 6e 74 3e  ame</big></font>
0cb0: 22 0a 7d 0a 70 72 6f 63 20 4e 6f 6e 74 65 72 6d  ".}.proc Nonterm
0cc0: 69 6e 61 6c 20 7b 6e 61 6d 65 7d 20 7b 0a 20 20  inal {name} {.  
0cd0: 72 65 74 75 72 6e 20 22 3c 69 3e 3c 66 6f 6e 74  return "<i><font
0ce0: 20 63 6f 6c 6f 72 3d 5c 22 23 66 66 33 34 33 34   color=\"#ff3434
0cf0: 5c 22 3e 24 6e 61 6d 65 3c 2f 66 6f 6e 74 3e 3c  \">$name</font><
0d00: 2f 69 3e 22 0a 7d 0a 70 72 6f 63 20 4b 65 79 77  /i>".}.proc Keyw
0d10: 6f 72 64 20 7b 6e 61 6d 65 7d 20 7b 0a 20 20 72  ord {name} {.  r
0d20: 65 74 75 72 6e 20 22 3c 66 6f 6e 74 20 63 6f 6c  eturn "<font col
0d30: 6f 72 3d 5c 22 23 32 63 32 63 66 30 5c 22 3e 24  or=\"#2c2cf0\">$
0d40: 6e 61 6d 65 3c 2f 66 6f 6e 74 3e 22 0a 7d 0a 70  name</font>".}.p
0d50: 72 6f 63 20 45 78 61 6d 70 6c 65 20 7b 74 65 78  roc Example {tex
0d60: 74 7d 20 7b 0a 20 20 68 64 5f 70 75 74 73 20 22  t} {.  hd_puts "
0d70: 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70 72 65  <blockquote><pre
0d80: 3e 24 74 65 78 74 3c 2f 70 72 65 3e 3c 2f 62 6c  >$text</pre></bl
0d90: 6f 63 6b 71 75 6f 74 65 3e 22 0a 20 20 7d 0a 0a  ockquote>".  }..
0da0: 20 20 70 72 6f 63 20 53 65 63 74 69 6f 6e 20 7b    proc Section {
0db0: 6e 61 6d 65 20 6c 61 62 65 6c 20 6b 65 79 77 6f  name label keywo
0dc0: 72 64 73 7d 20 7b 0a 20 20 67 6c 6f 62 61 6c 20  rds} {.  global 
0dd0: 44 4f 43 0a 20 20 68 64 5f 63 6c 6f 73 65 5f 6d  DOC.  hd_close_m
0de0: 61 69 6e 0a 20 20 68 64 5f 6f 70 65 6e 5f 6d 61  ain.  hd_open_ma
0df0: 69 6e 20 6c 61 6e 67 5f 24 6c 61 62 65 6c 2e 68  in lang_$label.h
0e00: 74 6d 6c 0a 20 20 68 64 5f 68 65 61 64 65 72 20  tml.  hd_header 
0e10: 22 53 51 4c 69 74 65 20 51 75 65 72 79 20 4c 61  "SQLite Query La
0e20: 6e 67 75 61 67 65 3a 20 24 6e 61 6d 65 22 20 24  nguage: $name" $
0e30: 44 4f 43 2f 70 61 67 65 73 2f 6c 61 6e 67 2e 69  DOC/pages/lang.i
0e40: 6e 0a 20 20 65 76 61 6c 20 68 64 5f 6b 65 79 77  n.  eval hd_keyw
0e50: 6f 72 64 73 20 24 6b 65 79 77 6f 72 64 73 0a 20  ords $keywords. 
0e60: 20 69 66 20 7b 5b 6c 73 65 61 72 63 68 20 24 6b   if {[lsearch $k
0e70: 65 79 77 6f 72 64 73 20 24 6e 61 6d 65 5d 20 3d  eywords $name] =
0e80: 3d 20 2d 31 7d 20 7b 0a 20 20 20 20 65 76 61 6c  = -1} {.    eval
0e90: 20 68 64 5f 6b 65 79 77 6f 72 64 73 20 7b 20 24   hd_keywords { $
0ea0: 6e 61 6d 65 20 7d 0a 20 20 7d 0a 20 20 68 64 5f  name }.  }.  hd_
0eb0: 70 75 74 73 20 7b 3c 61 20 68 72 65 66 3d 22 6c  puts {<a href="l
0ec0: 61 6e 67 2e 68 74 6d 6c 22 3e 0a 20 20 20 20 20  ang.html">.     
0ed0: 20 20 20 20 20 20 3c 68 32 20 61 6c 69 67 6e 3d        <h2 align=
0ee0: 22 63 65 6e 74 65 72 22 3e 53 51 4c 20 41 73 20  "center">SQL As 
0ef0: 55 6e 64 65 72 73 74 6f 6f 64 20 42 79 20 53 51  Understood By SQ
0f00: 4c 69 74 65 3c 2f 68 32 3e 3c 2f 61 3e 7d 0a 20  Lite</h2></a>}. 
0f10: 20 68 64 5f 70 75 74 73 20 22 3c 68 31 3e 24 6e   hd_puts "<h1>$n
0f20: 61 6d 65 3c 2f 68 31 3e 22 0a 7d 0a 0a 23 23 23  ame</h1>".}..###
0f30: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0f40: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0f50: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0f60: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0f70: 23 23 23 23 23 23 23 23 23 23 23 23 0a 53 65 63  ############.Sec
0f80: 74 69 6f 6e 20 7b 41 4c 54 45 52 20 54 41 42 4c  tion {ALTER TABL
0f90: 45 7d 20 61 6c 74 65 72 74 61 62 6c 65 20 7b 7b  E} altertable {{
0fa0: 41 4c 54 45 52 20 54 41 42 4c 45 7d 20 7b 41 4c  ALTER TABLE} {AL
0fb0: 54 45 52 7d 7d 0a 0a 42 75 62 62 6c 65 44 69 61  TER}}..BubbleDia
0fc0: 67 72 61 6d 20 61 6c 74 65 72 2d 74 61 62 6c 65  gram alter-table
0fd0: 2d 73 74 6d 74 20 31 0a 3c 2f 74 63 6c 3e 0a 0a  -stmt 1.</tcl>..
0fe0: 3c 70 3e 53 51 4c 69 74 65 20 73 75 70 70 6f 72  <p>SQLite suppor
0ff0: 74 73 20 61 20 6c 69 6d 69 74 65 64 20 73 75 62  ts a limited sub
1000: 73 65 74 20 6f 66 20 41 4c 54 45 52 20 54 41 42  set of ALTER TAB
1010: 4c 45 2e 0a 54 68 65 20 41 4c 54 45 52 20 54 41  LE..The ALTER TA
1020: 42 4c 45 20 63 6f 6d 6d 61 6e 64 20 69 6e 20 53  BLE command in S
1030: 51 4c 69 74 65 20 61 6c 6c 6f 77 73 20 74 68 65  QLite allows the
1040: 20 75 73 65 72 20 74 6f 20 72 65 6e 61 6d 65 20   user to rename 
1050: 61 20 74 61 62 6c 65 0a 6f 72 20 74 6f 20 61 64  a table.or to ad
1060: 64 20 61 20 6e 65 77 20 63 6f 6c 75 6d 6e 20 74  d a new column t
1070: 6f 20 61 6e 20 65 78 69 73 74 69 6e 67 20 74 61  o an existing ta
1080: 62 6c 65 2e 20 49 74 20 69 73 20 6e 6f 74 20 70  ble. It is not p
1090: 6f 73 73 69 62 6c 65 0a 74 6f 20 72 65 6e 61 6d  ossible.to renam
10a0: 65 20 61 20 63 6f 6c 75 6d 2c 20 72 65 6d 6f 76  e a colum, remov
10b0: 65 20 61 20 63 6f 6c 75 6d 6e 2c 20 6f 72 20 61  e a column, or a
10c0: 64 64 20 6f 72 20 72 65 6d 6f 76 65 20 63 6f 6e  dd or remove con
10d0: 73 74 72 61 69 6e 74 73 20 66 72 6f 6d 20 61 20  straints from a 
10e0: 74 61 62 6c 65 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e  table..</p>..<p>
10f0: 54 68 65 20 52 45 4e 41 4d 45 20 54 4f 20 73 79  The RENAME TO sy
1100: 6e 74 61 78 20 69 73 20 75 73 65 64 20 74 6f 20  ntax is used to 
1110: 72 65 6e 61 6d 65 20 74 68 65 20 74 61 62 6c 65  rename the table
1120: 20 69 64 65 6e 74 69 66 69 65 64 20 62 79 20 0a   identified by .
1130: 3c 69 3e 26 23 39 31 3b 64 61 74 61 62 61 73 65  <i>&#91;database
1140: 2d 6e 61 6d 65 2e 26 23 39 33 3b 74 61 62 6c 65  -name.&#93;table
1150: 2d 6e 61 6d 65 3c 2f 69 3e 20 74 6f 20 3c 69 3e  -name</i> to <i>
1160: 6e 65 77 2d 74 61 62 6c 65 2d 6e 61 6d 65 3c 2f  new-table-name</
1170: 69 3e 2e 0a 54 68 69 73 20 63 6f 6d 6d 61 6e 64  i>..This command
1180: 20 0a 63 61 6e 6e 6f 74 20 62 65 20 75 73 65 64   .cannot be used
1190: 20 74 6f 20 6d 6f 76 65 20 61 20 74 61 62 6c 65   to move a table
11a0: 20 62 65 74 77 65 65 6e 20 61 74 74 61 63 68 65   between attache
11b0: 64 20 64 61 74 61 62 61 73 65 73 2c 20 6f 6e 6c  d databases, onl
11c0: 79 20 74 6f 20 72 65 6e 61 6d 65 20 0a 61 20 74  y to rename .a t
11d0: 61 62 6c 65 20 77 69 74 68 69 6e 20 74 68 65 20  able within the 
11e0: 73 61 6d 65 20 64 61 74 61 62 61 73 65 2e 3c 2f  same database.</
11f0: 70 3e 0a 0a 3c 70 3e 49 66 20 74 68 65 20 74 61  p>..<p>If the ta
1200: 62 6c 65 20 62 65 69 6e 67 20 72 65 6e 61 6d 65  ble being rename
1210: 64 20 68 61 73 20 74 72 69 67 67 65 72 73 20 6f  d has triggers o
1220: 72 20 69 6e 64 69 63 65 73 2c 20 74 68 65 6e 20  r indices, then 
1230: 74 68 65 73 65 20 72 65 6d 61 69 6e 0a 61 74 74  these remain.att
1240: 61 63 68 65 64 20 74 6f 20 74 68 65 20 74 61 62  ached to the tab
1250: 6c 65 20 61 66 74 65 72 20 69 74 20 68 61 73 20  le after it has 
1260: 62 65 65 6e 20 72 65 6e 61 6d 65 64 2e 20 48 6f  been renamed. Ho
1270: 77 65 76 65 72 2c 20 69 66 20 74 68 65 72 65 20  wever, if there 
1280: 61 72 65 0a 61 6e 79 20 76 69 65 77 20 64 65 66  are.any view def
1290: 69 6e 69 74 69 6f 6e 73 2c 20 6f 72 20 73 74 61  initions, or sta
12a0: 74 65 6d 65 6e 74 73 20 65 78 65 63 75 74 65 64  tements executed
12b0: 20 62 79 20 74 72 69 67 67 65 72 73 20 74 68 61   by triggers tha
12c0: 74 20 72 65 66 65 72 20 74 6f 0a 74 68 65 20 74  t refer to.the t
12d0: 61 62 6c 65 20 62 65 69 6e 67 20 72 65 6e 61 6d  able being renam
12e0: 65 64 2c 20 74 68 65 73 65 20 61 72 65 20 6e 6f  ed, these are no
12f0: 74 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20  t automatically 
1300: 6d 6f 64 69 66 69 65 64 20 74 6f 20 75 73 65 20  modified to use 
1310: 74 68 65 20 6e 65 77 0a 74 61 62 6c 65 20 6e 61  the new.table na
1320: 6d 65 2e 20 49 66 20 74 68 69 73 20 69 73 20 72  me. If this is r
1330: 65 71 75 69 72 65 64 2c 20 74 68 65 20 74 72 69  equired, the tri
1340: 67 67 65 72 73 20 6f 72 20 76 69 65 77 20 64 65  ggers or view de
1350: 66 69 6e 69 74 69 6f 6e 73 20 6d 75 73 74 20 62  finitions must b
1360: 65 0a 64 72 6f 70 70 65 64 20 61 6e 64 20 72 65  e.dropped and re
1370: 63 72 65 61 74 65 64 20 74 6f 20 75 73 65 20 74  created to use t
1380: 68 65 20 6e 65 77 20 74 61 62 6c 65 20 6e 61 6d  he new table nam
1390: 65 20 62 79 20 68 61 6e 64 2e 0a 3c 2f 70 3e 0a  e by hand..</p>.
13a0: 0a 3c 70 3e 54 68 65 20 41 44 44 20 43 4f 4c 55  .<p>The ADD COLU
13b0: 4d 4e 20 73 79 6e 74 61 78 0a 69 73 20 75 73 65  MN syntax.is use
13c0: 64 20 74 6f 20 61 64 64 20 61 20 6e 65 77 20 63  d to add a new c
13d0: 6f 6c 75 6d 6e 20 74 6f 20 61 6e 20 65 78 69 73  olumn to an exis
13e0: 74 69 6e 67 20 74 61 62 6c 65 2e 0a 54 68 65 20  ting table..The 
13f0: 6e 65 77 20 63 6f 6c 75 6d 6e 20 69 73 20 61 6c  new column is al
1400: 77 61 79 73 20 61 70 70 65 6e 64 65 64 20 74 6f  ways appended to
1410: 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65 20   the end of the 
1420: 6c 69 73 74 20 6f 66 20 65 78 69 73 74 69 6e 67  list of existing
1430: 20 63 6f 6c 75 6d 6e 73 2e 0a 54 68 65 20 5b 63   columns..The [c
1440: 6f 6c 75 6d 6e 2d 64 65 66 5d 20 72 75 6c 65 20  olumn-def] rule 
1450: 64 65 66 69 6e 65 73 20 74 68 65 20 63 68 61 72  defines the char
1460: 61 63 74 65 72 69 73 74 69 63 73 20 6f 66 20 74  acteristics of t
1470: 68 65 20 6e 65 77 20 63 6f 6c 75 6d 6e 2e 0a 54  he new column..T
1480: 68 65 20 6e 65 77 20 63 6f 6c 75 6d 6e 20 6d 61  he new column ma
1490: 79 20 74 61 6b 65 20 61 6e 79 20 6f 66 20 74 68  y take any of th
14a0: 65 20 66 6f 72 6d 73 20 70 65 72 6d 69 73 73 61  e forms permissa
14b0: 62 6c 65 20 69 6e 20 61 20 5b 43 52 45 41 54 45  ble in a [CREATE
14c0: 20 54 41 42 4c 45 5d 0a 73 74 61 74 65 6d 65 6e   TABLE].statemen
14d0: 74 2c 20 77 69 74 68 20 74 68 65 20 66 6f 6c 6c  t, with the foll
14e0: 6f 77 69 6e 67 20 72 65 73 74 72 69 63 74 69 6f  owing restrictio
14f0: 6e 73 3a 0a 3c 75 6c 3e 0a 3c 6c 69 3e 54 68 65  ns:.<ul>.<li>The
1500: 20 63 6f 6c 75 6d 6e 20 6d 61 79 20 6e 6f 74 20   column may not 
1510: 68 61 76 65 20 61 20 50 52 49 4d 41 52 59 20 4b  have a PRIMARY K
1520: 45 59 20 6f 72 20 55 4e 49 51 55 45 20 63 6f 6e  EY or UNIQUE con
1530: 73 74 72 61 69 6e 74 2e 3c 2f 6c 69 3e 0a 3c 6c  straint.</li>.<l
1540: 69 3e 54 68 65 20 63 6f 6c 75 6d 6e 20 6d 61 79  i>The column may
1550: 20 6e 6f 74 20 68 61 76 65 20 61 20 64 65 66 61   not have a defa
1560: 75 6c 74 20 76 61 6c 75 65 20 6f 66 20 43 55 52  ult value of CUR
1570: 52 45 4e 54 5f 54 49 4d 45 2c 20 43 55 52 52 45  RENT_TIME, CURRE
1580: 4e 54 5f 44 41 54 45 20 0a 20 20 20 20 6f 72 20  NT_DATE .    or 
1590: 43 55 52 52 45 4e 54 5f 54 49 4d 45 53 54 41 4d  CURRENT_TIMESTAM
15a0: 50 2e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 49 66 20 61  P.</li>.<li>If a
15b0: 20 4e 4f 54 20 4e 55 4c 4c 20 63 6f 6e 73 74 72   NOT NULL constr
15c0: 61 69 6e 74 20 69 73 20 73 70 65 63 69 66 69 65  aint is specifie
15d0: 64 2c 20 74 68 65 6e 20 74 68 65 20 63 6f 6c 75  d, then the colu
15e0: 6d 6e 20 6d 75 73 74 20 68 61 76 65 20 61 0a 20  mn must have a. 
15f0: 20 20 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65     default value
1600: 20 6f 74 68 65 72 20 74 68 61 6e 20 4e 55 4c 4c   other than NULL
1610: 2e 0a 3c 2f 75 6c 3e 0a 0a 3c 70 3e 4e 6f 74 65  ..</ul>..<p>Note
1620: 20 61 6c 73 6f 20 74 68 61 74 20 77 68 65 6e 20   also that when 
1630: 61 64 64 69 6e 67 20 61 20 43 48 45 43 4b 20 63  adding a CHECK c
1640: 6f 6e 73 74 72 61 69 6e 74 2c 20 74 68 65 20 43  onstraint, the C
1650: 48 45 43 4b 20 63 6f 6e 73 74 72 61 69 6e 74 0a  HECK constraint.
1660: 69 73 20 6e 6f 74 20 74 65 73 74 65 64 20 61 67  is not tested ag
1670: 61 69 6e 73 74 20 70 72 65 65 78 69 73 74 69 6e  ainst preexistin
1680: 67 20 72 6f 77 73 20 6f 66 20 74 68 65 20 74 61  g rows of the ta
1690: 62 6c 65 2e 0a 54 68 69 73 20 63 61 6e 20 72 65  ble..This can re
16a0: 73 75 6c 74 20 69 6e 20 61 20 74 61 62 6c 65 20  sult in a table 
16b0: 74 68 61 74 20 63 6f 6e 74 61 69 6e 73 20 64 61  that contains da
16c0: 74 61 20 74 68 61 74 0a 69 73 20 69 6e 20 76 69  ta that.is in vi
16d0: 6f 6c 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 43  olation of the C
16e0: 48 45 43 4b 20 63 6f 6e 73 74 72 61 69 6e 74 2e  HECK constraint.
16f0: 20 20 46 75 74 75 72 65 20 76 65 72 73 69 6f 6e    Future version
1700: 73 20 6f 66 20 53 51 4c 69 74 65 20 6d 69 67 68  s of SQLite migh
1710: 74 0a 63 68 61 6e 67 65 20 74 6f 20 76 61 6c 69  t.change to vali
1720: 64 61 74 65 20 43 48 45 43 4b 20 63 6f 6e 73 74  date CHECK const
1730: 72 61 69 6e 74 73 20 61 73 20 74 68 65 79 20 61  raints as they a
1740: 72 65 20 61 64 64 65 64 2e 3c 2f 70 3e 0a 0a 3c  re added.</p>..<
1750: 70 3e 54 68 65 20 65 78 65 63 75 74 69 6f 6e 20  p>The execution 
1760: 74 69 6d 65 20 6f 66 20 74 68 65 20 41 4c 54 45  time of the ALTE
1770: 52 20 54 41 42 4c 45 20 63 6f 6d 6d 61 6e 64 20  R TABLE command 
1780: 69 73 20 69 6e 64 65 70 65 6e 64 65 6e 74 20 6f  is independent o
1790: 66 0a 74 68 65 20 61 6d 6f 75 6e 74 20 6f 66 20  f.the amount of 
17a0: 64 61 74 61 20 69 6e 20 74 68 65 20 74 61 62 6c  data in the tabl
17b0: 65 2e 20 20 54 68 65 20 41 4c 54 45 52 20 54 41  e.  The ALTER TA
17c0: 42 4c 45 20 63 6f 6d 6d 61 6e 64 20 72 75 6e 73  BLE command runs
17d0: 20 61 73 20 71 75 69 63 6b 6c 79 0a 6f 6e 20 61   as quickly.on a
17e0: 20 74 61 62 6c 65 20 77 69 74 68 20 31 30 20 6d   table with 10 m
17f0: 69 6c 6c 69 6f 6e 20 72 6f 77 73 20 61 73 20 69  illion rows as i
1800: 74 20 64 6f 65 73 20 6f 6e 20 61 20 74 61 62 6c  t does on a tabl
1810: 65 20 77 69 74 68 20 31 20 72 6f 77 2e 0a 3c 2f  e with 1 row..</
1820: 70 3e 0a 0a 3c 70 3e 41 66 74 65 72 20 41 44 44  p>..<p>After ADD
1830: 20 43 4f 4c 55 4d 4e 20 68 61 73 20 62 65 65 6e   COLUMN has been
1840: 20 72 75 6e 20 6f 6e 20 61 20 64 61 74 61 62 61   run on a databa
1850: 73 65 2c 20 74 68 61 74 20 64 61 74 61 62 61 73  se, that databas
1860: 65 20 77 69 6c 6c 20 6e 6f 74 0a 62 65 20 72 65  e will not.be re
1870: 61 64 61 62 6c 65 20 62 79 20 53 51 4c 69 74 65  adable by SQLite
1880: 20 76 65 72 73 69 6f 6e 20 33 2e 31 2e 33 20 61   version 3.1.3 a
1890: 6e 64 20 65 61 72 6c 69 65 72 2e 3c 2f 70 3e 0a  nd earlier.</p>.
18a0: 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23  .<tcl>.#########
18b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18f0: 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b 41  #####.Section {A
1900: 4e 41 4c 59 5a 45 7d 20 61 6e 61 6c 79 7a 65 20  NALYZE} analyze 
1910: 41 4e 41 4c 59 5a 45 0a 0a 42 75 62 62 6c 65 44  ANALYZE..BubbleD
1920: 69 61 67 72 61 6d 20 61 6e 61 6c 79 7a 65 2d 73  iagram analyze-s
1930: 74 6d 74 20 31 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70  tmt 1.</tcl>..<p
1940: 3e 54 68 65 20 41 4e 41 4c 59 5a 45 20 63 6f 6d  >The ANALYZE com
1950: 6d 61 6e 64 20 67 61 74 68 65 72 73 20 73 74 61  mand gathers sta
1960: 74 69 73 74 69 63 73 20 61 62 6f 75 74 20 69 6e  tistics about in
1970: 64 69 63 65 73 20 61 6e 64 20 73 74 6f 72 65 73  dices and stores
1980: 20 74 68 65 6d 0a 69 6e 20 61 20 73 70 65 63 69   them.in a speci
1990: 61 6c 20 74 61 62 6c 65 73 20 69 6e 20 74 68 65  al tables in the
19a0: 20 64 61 74 61 62 61 73 65 20 77 68 65 72 65 20   database where 
19b0: 74 68 65 20 71 75 65 72 79 20 6f 70 74 69 6d 69  the query optimi
19c0: 7a 65 72 20 63 61 6e 20 75 73 65 0a 74 68 65 6d  zer can use.them
19d0: 20 74 6f 20 68 65 6c 70 20 6d 61 6b 65 20 62 65   to help make be
19e0: 74 74 65 72 20 69 6e 64 65 78 20 63 68 6f 69 63  tter index choic
19f0: 65 73 2e 0a 49 66 20 6e 6f 20 61 72 67 75 6d 65  es..If no argume
1a00: 6e 74 73 20 61 72 65 20 67 69 76 65 6e 2c 20 61  nts are given, a
1a10: 6c 6c 20 69 6e 64 69 63 65 73 20 69 6e 20 61 6c  ll indices in al
1a20: 6c 20 61 74 74 61 63 68 65 64 20 64 61 74 61 62  l attached datab
1a30: 61 73 65 73 20 61 72 65 0a 61 6e 61 6c 79 7a 65  ases are.analyze
1a40: 64 2e 20 20 49 66 20 61 20 64 61 74 61 62 61 73  d.  If a databas
1a50: 65 20 6e 61 6d 65 20 69 73 20 67 69 76 65 6e 20  e name is given 
1a60: 61 73 20 74 68 65 20 61 72 67 75 6d 65 6e 74 2c  as the argument,
1a70: 20 61 6c 6c 20 69 6e 64 69 63 65 73 0a 69 6e 20   all indices.in 
1a80: 74 68 61 74 20 6f 6e 65 20 64 61 74 61 62 61 73  that one databas
1a90: 65 20 61 72 65 20 61 6e 61 6c 79 7a 65 64 2e 20  e are analyzed. 
1aa0: 20 49 66 20 74 68 65 20 61 72 67 75 6d 65 6e 74   If the argument
1ab0: 20 69 73 20 61 20 74 61 62 6c 65 20 6e 61 6d 65   is a table name
1ac0: 2c 0a 74 68 65 6e 20 6f 6e 6c 79 20 69 6e 64 69  ,.then only indi
1ad0: 63 65 73 20 61 73 73 6f 63 69 61 74 65 64 20 77  ces associated w
1ae0: 69 74 68 20 74 68 61 74 20 6f 6e 65 20 74 61 62  ith that one tab
1af0: 6c 65 20 61 72 65 20 61 6e 61 6c 79 7a 65 64 2e  le are analyzed.
1b00: 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 69 6e 69  </p>..<p>The ini
1b10: 74 69 61 6c 20 69 6d 70 6c 65 6d 65 6e 74 61 74  tial implementat
1b20: 69 6f 6e 20 73 74 6f 72 65 73 20 61 6c 6c 20 73  ion stores all s
1b30: 74 61 74 69 73 74 69 63 73 20 69 6e 20 61 20 73  tatistics in a s
1b40: 69 6e 67 6c 65 0a 74 61 62 6c 65 20 6e 61 6d 65  ingle.table name
1b50: 64 20 3c 62 3e 73 71 6c 69 74 65 5f 73 74 61 74  d <b>sqlite_stat
1b60: 31 3c 2f 62 3e 2e 20 20 46 75 74 75 72 65 20 65  1</b>.  Future e
1b70: 6e 68 61 6e 63 65 6d 65 6e 74 73 20 6d 61 79 20  nhancements may 
1b80: 63 72 65 61 74 65 0a 61 64 64 69 74 69 6f 6e 61  create.additiona
1b90: 6c 20 74 61 62 6c 65 73 20 77 69 74 68 20 74 68  l tables with th
1ba0: 65 20 73 61 6d 65 20 6e 61 6d 65 20 70 61 74 74  e same name patt
1bb0: 65 72 6e 20 65 78 63 65 70 74 20 77 69 74 68 20  ern except with 
1bc0: 74 68 65 20 22 31 22 0a 63 68 61 6e 67 65 64 20  the "1".changed 
1bd0: 74 6f 20 61 20 64 69 66 66 65 72 65 6e 74 20 64  to a different d
1be0: 69 67 69 74 2e 20 20 54 68 65 20 5b 44 52 4f 50  igit.  The [DROP
1bf0: 20 54 41 42 4c 45 5d 20 63 6f 6d 6d 61 6e 64 20   TABLE] command 
1c00: 64 6f 65 73 0a 6e 6f 74 20 77 6f 72 6b 20 6f 6e  does.not work on
1c10: 20 74 68 65 20 3c 62 3e 73 71 6c 69 74 65 5f 73   the <b>sqlite_s
1c20: 74 61 74 31 3c 2f 62 3e 20 74 61 62 6c 65 2c 0a  tat1</b> table,.
1c30: 62 75 74 20 61 6c 6c 20 74 68 65 20 63 6f 6e 74  but all the cont
1c40: 65 6e 74 20 63 61 6e 20 62 65 20 72 65 6d 6f 76  ent can be remov
1c50: 65 64 20 75 73 69 6e 67 20 74 68 65 20 5b 44 45  ed using the [DE
1c60: 4c 45 54 45 5d 20 63 6f 6d 6d 61 6e 64 2c 0a 77  LETE] command,.w
1c70: 68 69 63 68 20 68 61 73 20 74 68 65 20 73 61 6d  hich has the sam
1c80: 65 20 65 66 66 65 63 74 2e 3c 2f 70 3e 0a 0a 3c  e effect.</p>..<
1c90: 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23  tcl>.###########
1ca0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1cb0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1cc0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1cd0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1ce0: 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b 41 54 54  ###.Section {ATT
1cf0: 41 43 48 20 44 41 54 41 42 41 53 45 7d 20 61 74  ACH DATABASE} at
1d00: 74 61 63 68 20 41 54 54 41 43 48 0a 0a 42 75 62  tach ATTACH..Bub
1d10: 62 6c 65 44 69 61 67 72 61 6d 20 61 74 74 61 63  bleDiagram attac
1d20: 68 2d 73 74 6d 74 20 31 0a 3c 2f 74 63 6c 3e 0a  h-stmt 1.</tcl>.
1d30: 0a 3c 70 3e 54 68 65 20 41 54 54 41 43 48 20 44  .<p>The ATTACH D
1d40: 41 54 41 42 41 53 45 20 73 74 61 74 65 6d 65 6e  ATABASE statemen
1d50: 74 20 61 64 64 73 20 61 6e 6f 74 68 65 72 20 64  t adds another d
1d60: 61 74 61 62 61 73 65 20 0a 66 69 6c 65 20 74 6f  atabase .file to
1d70: 20 74 68 65 20 63 75 72 72 65 6e 74 20 64 61 74   the current dat
1d80: 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
1d90: 2e 20 20 49 66 20 74 68 65 20 66 69 6c 65 6e 61  .  If the filena
1da0: 6d 65 20 63 6f 6e 74 61 69 6e 73 20 0a 70 75 6e  me contains .pun
1db0: 63 74 75 61 74 69 6f 6e 20 63 68 61 72 61 63 74  ctuation charact
1dc0: 65 72 73 20 69 74 20 6d 75 73 74 20 62 65 20 71  ers it must be q
1dd0: 75 6f 74 65 64 2e 20 20 54 68 65 20 64 61 74 61  uoted.  The data
1de0: 62 61 73 65 2d 6e 61 6d 65 73 20 27 6d 61 69 6e  base-names 'main
1df0: 27 20 61 6e 64 20 0a 27 74 65 6d 70 27 20 72 65  ' and .'temp' re
1e00: 66 65 72 20 74 6f 20 74 68 65 20 6d 61 69 6e 20  fer to the main 
1e10: 64 61 74 61 62 61 73 65 20 61 6e 64 20 74 68 65  database and the
1e20: 20 64 61 74 61 62 61 73 65 20 75 73 65 64 20 66   database used f
1e30: 6f 72 20 0a 74 65 6d 70 6f 72 61 72 79 20 74 61  or .temporary ta
1e40: 62 6c 65 73 2e 20 20 54 68 65 73 65 20 63 61 6e  bles.  These can
1e50: 6e 6f 74 20 62 65 20 64 65 74 61 63 68 65 64 2e  not be detached.
1e60: 20 20 41 74 74 61 63 68 65 64 20 64 61 74 61 62    Attached datab
1e70: 61 73 65 73 20 0a 61 72 65 20 72 65 6d 6f 76 65  ases .are remove
1e80: 64 20 75 73 69 6e 67 20 74 68 65 20 5b 44 45 54  d using the [DET
1e90: 41 43 48 5d 20 73 74 61 74 65 6d 65 6e 74 2e 3c  ACH] statement.<
1ea0: 2f 70 3e 0a 0a 3c 70 3e 59 6f 75 20 63 61 6e 6e  /p>..<p>You cann
1eb0: 6f 74 20 63 72 65 61 74 65 20 61 20 6e 65 77 20  ot create a new 
1ec0: 74 61 62 6c 65 20 77 69 74 68 20 74 68 65 20 73  table with the s
1ed0: 61 6d 65 20 6e 61 6d 65 20 61 73 20 61 20 74 61  ame name as a ta
1ee0: 62 6c 65 20 69 6e 20 0a 61 6e 20 61 74 74 61 63  ble in .an attac
1ef0: 68 65 64 20 64 61 74 61 62 61 73 65 2c 20 62 75  hed database, bu
1f00: 74 20 79 6f 75 20 63 61 6e 20 61 74 74 61 63 68  t you can attach
1f10: 20 61 20 64 61 74 61 62 61 73 65 20 77 68 69 63   a database whic
1f20: 68 20 63 6f 6e 74 61 69 6e 73 0a 74 61 62 6c 65  h contains.table
1f30: 73 20 77 68 6f 73 65 20 6e 61 6d 65 73 20 61 72  s whose names ar
1f40: 65 20 64 75 70 6c 69 63 61 74 65 73 20 6f 66 20  e duplicates of 
1f50: 74 61 62 6c 65 73 20 69 6e 20 74 68 65 20 6d 61  tables in the ma
1f60: 69 6e 20 64 61 74 61 62 61 73 65 2e 20 20 49 74  in database.  It
1f70: 20 69 73 20 0a 61 6c 73 6f 20 70 65 72 6d 69 73   is .also permis
1f80: 73 69 62 6c 65 20 74 6f 20 61 74 74 61 63 68 20  sible to attach 
1f90: 74 68 65 20 73 61 6d 65 20 64 61 74 61 62 61 73  the same databas
1fa0: 65 20 66 69 6c 65 20 6d 75 6c 74 69 70 6c 65 20  e file multiple 
1fb0: 74 69 6d 65 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54  times.</p>..<p>T
1fc0: 61 62 6c 65 73 20 69 6e 20 61 6e 20 61 74 74 61  ables in an atta
1fd0: 63 68 65 64 20 64 61 74 61 62 61 73 65 20 63 61  ched database ca
1fe0: 6e 20 62 65 20 72 65 66 65 72 72 65 64 20 74 6f  n be referred to
1ff0: 20 75 73 69 6e 67 20 74 68 65 20 73 79 6e 74 61   using the synta
2000: 78 20 0a 3c 69 3e 64 61 74 61 62 61 73 65 2d 6e  x .<i>database-n
2010: 61 6d 65 2e 74 61 62 6c 65 2d 6e 61 6d 65 3c 2f  ame.table-name</
2020: 69 3e 2e 20 20 49 66 20 61 6e 20 61 74 74 61 63  i>.  If an attac
2030: 68 65 64 20 74 61 62 6c 65 20 64 6f 65 73 6e 27  hed table doesn'
2040: 74 20 68 61 76 65 20 0a 61 20 64 75 70 6c 69 63  t have .a duplic
2050: 61 74 65 20 74 61 62 6c 65 20 6e 61 6d 65 20 69  ate table name i
2060: 6e 20 74 68 65 20 6d 61 69 6e 20 64 61 74 61 62  n the main datab
2070: 61 73 65 2c 20 69 74 20 64 6f 65 73 20 6e 6f 74  ase, it does not
2080: 20 72 65 71 75 69 72 65 20 61 20 0a 3c 69 3e 64   require a .<i>d
2090: 61 74 61 62 61 73 65 2d 6e 61 6d 65 3c 2f 69 3e  atabase-name</i>
20a0: 20 70 72 65 66 69 78 2e 20 20 57 68 65 6e 20 61   prefix.  When a
20b0: 20 64 61 74 61 62 61 73 65 20 69 73 20 61 74 74   database is att
20c0: 61 63 68 65 64 2c 20 61 6c 6c 20 6f 66 20 69 74  ached, all of it
20d0: 73 20 0a 74 61 62 6c 65 73 20 77 68 69 63 68 20  s .tables which 
20e0: 64 6f 6e 27 74 20 68 61 76 65 20 64 75 70 6c 69  don't have dupli
20f0: 63 61 74 65 20 6e 61 6d 65 73 20 62 65 63 6f 6d  cate names becom
2100: 65 20 74 68 65 20 64 65 66 61 75 6c 74 20 74 61  e the default ta
2110: 62 6c 65 0a 6f 66 20 74 68 61 74 20 6e 61 6d 65  ble.of that name
2120: 2e 20 20 41 6e 79 20 74 61 62 6c 65 73 20 6f 66  .  Any tables of
2130: 20 74 68 61 74 20 6e 61 6d 65 20 61 74 74 61 63   that name attac
2140: 68 65 64 20 61 66 74 65 72 77 61 72 64 73 20 72  hed afterwards r
2150: 65 71 75 69 72 65 20 74 68 65 0a 64 61 74 61 62  equire the.datab
2160: 61 73 65 20 70 72 65 66 69 78 2e 20 49 66 20 74  ase prefix. If t
2170: 68 65 20 64 65 66 61 75 6c 74 20 74 61 62 6c 65  he default table
2180: 20 6f 66 20 61 20 67 69 76 65 6e 20 6e 61 6d 65   of a given name
2190: 20 69 73 20 64 65 74 61 63 68 65 64 2c 20 74 68   is detached, th
21a0: 65 6e 0a 74 68 65 20 6c 61 73 74 20 74 61 62 6c  en.the last tabl
21b0: 65 20 6f 66 20 74 68 61 74 20 6e 61 6d 65 20 61  e of that name a
21c0: 74 74 61 63 68 65 64 20 62 65 63 6f 6d 65 73 20  ttached becomes 
21d0: 74 68 65 20 6e 65 77 20 64 65 66 61 75 6c 74 2e  the new default.
21e0: 3c 2f 70 3e 0a 0a 3c 70 3e 0a 54 72 61 6e 73 61  </p>..<p>.Transa
21f0: 63 74 69 6f 6e 73 20 69 6e 76 6f 6c 76 69 6e 67  ctions involving
2200: 20 6d 75 6c 74 69 70 6c 65 20 61 74 74 61 63 68   multiple attach
2210: 65 64 20 64 61 74 61 62 61 73 65 73 20 61 72 65  ed databases are
2220: 20 61 74 6f 6d 69 63 2c 0a 61 73 73 75 6d 69 6e   atomic,.assumin
2230: 67 20 74 68 61 74 20 74 68 65 20 6d 61 69 6e 20  g that the main 
2240: 64 61 74 61 62 61 73 65 20 69 73 20 6e 6f 74 20  database is not 
2250: 22 5b 3a 6d 65 6d 6f 72 79 3a 5d 22 2e 20 20 49  "[:memory:]".  I
2260: 66 20 74 68 65 20 6d 61 69 6e 0a 64 61 74 61 62  f the main.datab
2270: 61 73 65 20 69 73 20 22 3a 6d 65 6d 6f 72 79 3a  ase is ":memory:
2280: 22 20 74 68 65 6e 20 0a 74 72 61 6e 73 61 63 74  " then .transact
2290: 69 6f 6e 73 20 63 6f 6e 74 69 6e 75 65 20 74 6f  ions continue to
22a0: 20 62 65 20 61 74 6f 6d 69 63 20 77 69 74 68 69   be atomic withi
22b0: 6e 20 65 61 63 68 20 69 6e 64 69 76 69 64 75 61  n each individua
22c0: 6c 0a 64 61 74 61 62 61 73 65 20 66 69 6c 65 2e  l.database file.
22d0: 20 42 75 74 20 69 66 20 74 68 65 20 68 6f 73 74   But if the host
22e0: 20 63 6f 6d 70 75 74 65 72 20 63 72 61 73 68 65   computer crashe
22f0: 73 20 69 6e 20 74 68 65 20 6d 69 64 64 6c 65 0a  s in the middle.
2300: 6f 66 20 61 20 5b 43 4f 4d 4d 49 54 5d 20 77 68  of a [COMMIT] wh
2310: 65 72 65 20 74 77 6f 20 6f 72 20 6d 6f 72 65 20  ere two or more 
2320: 64 61 74 61 62 61 73 65 20 66 69 6c 65 73 20 61  database files a
2330: 72 65 20 75 70 64 61 74 65 64 2c 0a 73 6f 6d 65  re updated,.some
2340: 20 6f 66 20 74 68 6f 73 65 20 66 69 6c 65 73 20   of those files 
2350: 6d 69 67 68 74 20 67 65 74 20 74 68 65 20 63 68  might get the ch
2360: 61 6e 67 65 73 20 77 68 65 72 65 20 6f 74 68 65  anges where othe
2370: 72 73 0a 6d 69 67 68 74 20 6e 6f 74 2e 0a 3c 2f  rs.might not..</
2380: 70 3e 0a 0a 3c 70 3e 54 68 65 72 65 20 69 73 20  p>..<p>There is 
2390: 61 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6c  a compile-time l
23a0: 69 6d 69 74 20 6f 66 20 5b 53 51 4c 49 54 45 5f  imit of [SQLITE_
23b0: 4d 41 58 5f 41 54 54 41 43 48 45 44 5d 0a 61 74  MAX_ATTACHED].at
23c0: 74 61 63 68 65 64 20 64 61 74 61 62 61 73 65 20  tached database 
23d0: 66 69 6c 65 73 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c  files.</p>..<tcl
23e0: 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23  >.##############
23f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2400: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2410: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2420: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2430: 23 0a 53 65 63 74 69 6f 6e 20 7b 42 45 47 49 4e  #.Section {BEGIN
2440: 20 54 52 41 4e 53 41 43 54 49 4f 4e 7d 20 74 72   TRANSACTION} tr
2450: 61 6e 73 61 63 74 69 6f 6e 20 7b 42 45 47 49 4e  ansaction {BEGIN
2460: 20 43 4f 4d 4d 49 54 20 52 4f 4c 4c 42 41 43 4b   COMMIT ROLLBACK
2470: 7d 0a 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d  }..BubbleDiagram
2480: 20 62 65 67 69 6e 2d 73 74 6d 74 0a 42 75 62 62   begin-stmt.Bubb
2490: 6c 65 44 69 61 67 72 61 6d 20 63 6f 6d 6d 69 74  leDiagram commit
24a0: 2d 73 74 6d 74 0a 42 75 62 62 6c 65 44 69 61 67  -stmt.BubbleDiag
24b0: 72 61 6d 20 72 6f 6c 6c 62 61 63 6b 2d 73 74 6d  ram rollback-stm
24c0: 74 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 0a 4e 6f  t.</tcl>..<p>.No
24d0: 20 63 68 61 6e 67 65 73 20 63 61 6e 20 62 65 20   changes can be 
24e0: 6d 61 64 65 20 74 6f 20 74 68 65 20 64 61 74 61  made to the data
24f0: 62 61 73 65 20 65 78 63 65 70 74 20 77 69 74 68  base except with
2500: 69 6e 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e  in a transaction
2510: 2e 0a 41 6e 79 20 63 6f 6d 6d 61 6e 64 20 74 68  ..Any command th
2520: 61 74 20 63 68 61 6e 67 65 73 20 74 68 65 20 64  at changes the d
2530: 61 74 61 62 61 73 65 20 28 62 61 73 69 63 61 6c  atabase (basical
2540: 6c 79 2c 20 61 6e 79 20 53 51 4c 20 63 6f 6d 6d  ly, any SQL comm
2550: 61 6e 64 0a 6f 74 68 65 72 20 74 68 61 6e 20 5b  and.other than [
2560: 53 45 4c 45 43 54 5d 29 20 77 69 6c 6c 20 61 75  SELECT]) will au
2570: 74 6f 6d 61 74 69 63 61 6c 6c 79 20 73 74 61 72  tomatically star
2580: 74 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  t a transaction 
2590: 69 66 0a 6f 6e 65 20 69 73 20 6e 6f 74 20 61 6c  if.one is not al
25a0: 72 65 61 64 79 20 69 6e 20 65 66 66 65 63 74 2e  ready in effect.
25b0: 20 20 41 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20    Automatically 
25c0: 73 74 61 72 74 65 64 20 74 72 61 6e 73 61 63 74  started transact
25d0: 69 6f 6e 73 0a 61 72 65 20 63 6f 6d 6d 69 74 74  ions.are committ
25e0: 65 64 20 77 68 65 6e 20 74 68 65 20 6c 61 73 74  ed when the last
25f0: 20 71 75 65 72 79 20 66 69 6e 69 73 68 65 73 2e   query finishes.
2600: 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 54 72 61 6e 73  .</p>..<p>.Trans
2610: 61 63 74 69 6f 6e 73 20 63 61 6e 20 62 65 20 73  actions can be s
2620: 74 61 72 74 65 64 20 6d 61 6e 75 61 6c 6c 79 20  tarted manually 
2630: 75 73 69 6e 67 20 74 68 65 20 42 45 47 49 4e 0a  using the BEGIN.
2640: 63 6f 6d 6d 61 6e 64 2e 20 20 53 75 63 68 20 74  command.  Such t
2650: 72 61 6e 73 61 63 74 69 6f 6e 73 20 75 73 75 61  ransactions usua
2660: 6c 6c 79 20 70 65 72 73 69 73 74 20 75 6e 74 69  lly persist unti
2670: 6c 20 74 68 65 20 6e 65 78 74 0a 43 4f 4d 4d 49  l the next.COMMI
2680: 54 20 6f 72 20 52 4f 4c 4c 42 41 43 4b 20 63 6f  T or ROLLBACK co
2690: 6d 6d 61 6e 64 2e 20 20 42 75 74 20 61 20 74 72  mmand.  But a tr
26a0: 61 6e 73 61 63 74 69 6f 6e 20 77 69 6c 6c 20 61  ansaction will a
26b0: 6c 73 6f 20 0a 52 4f 4c 4c 42 41 43 4b 20 69 66  lso .ROLLBACK if
26c0: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 69 73   the database is
26d0: 20 63 6c 6f 73 65 64 20 6f 72 20 69 66 20 61 6e   closed or if an
26e0: 20 65 72 72 6f 72 20 6f 63 63 75 72 73 0a 61 6e   error occurs.an
26f0: 64 20 74 68 65 20 52 4f 4c 4c 42 41 43 4b 20 63  d the ROLLBACK c
2700: 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75 74 69  onflict resoluti
2710: 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 20 69 73 20  on algorithm is 
2720: 73 70 65 63 69 66 69 65 64 2e 0a 53 65 65 20 74  specified..See t
2730: 68 65 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e  he documentation
2740: 20 6f 6e 20 74 68 65 20 5b 4f 4e 20 43 4f 4e 46   on the [ON CONF
2750: 4c 49 43 54 5d 0a 63 6c 61 75 73 65 20 66 6f 72  LICT].clause for
2760: 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f   additional info
2770: 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 74 68  rmation about th
2780: 65 20 52 4f 4c 4c 42 41 43 4b 0a 63 6f 6e 66 6c  e ROLLBACK.confl
2790: 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61  ict resolution a
27a0: 6c 67 6f 72 69 74 68 6d 2e 0a 3c 2f 70 3e 0a 0a  lgorithm..</p>..
27b0: 3c 70 3e 0a 45 4e 44 20 54 52 41 4e 53 41 43 54  <p>.END TRANSACT
27c0: 49 4f 4e 20 69 73 20 61 6e 20 61 6c 69 61 73 20  ION is an alias 
27d0: 66 6f 72 20 43 4f 4d 4d 49 54 2e 0a 3c 2f 70 3e  for COMMIT..</p>
27e0: 0a 0a 3c 70 3e 54 72 61 6e 73 61 63 74 69 6f 6e  ..<p>Transaction
27f0: 73 20 63 72 65 61 74 65 64 20 75 73 69 6e 67 20  s created using 
2800: 42 45 47 49 4e 2e 2e 2e 43 4f 4d 4d 49 54 20 64  BEGIN...COMMIT d
2810: 6f 20 6e 6f 74 20 6e 65 73 74 2e 0a 46 6f 72 20  o not nest..For 
2820: 6e 65 73 74 65 64 20 74 72 61 6e 73 61 63 74 69  nested transacti
2830: 6f 6e 73 2c 20 75 73 65 20 74 68 65 20 5b 53 41  ons, use the [SA
2840: 56 45 50 4f 49 4e 54 5d 20 61 6e 64 20 5b 52 45  VEPOINT] and [RE
2850: 4c 45 41 53 45 5d 20 63 6f 6d 6d 61 6e 64 73 2e  LEASE] commands.
2860: 0a 54 68 65 20 22 54 4f 20 53 41 56 45 50 4f 49  .The "TO SAVEPOI
2870: 4e 54 20 3c 69 3e 6e 61 6d 65 3c 2f 69 3e 22 20  NT <i>name</i>" 
2880: 63 6c 61 75 73 65 20 6f 66 20 74 68 65 20 52 4f  clause of the RO
2890: 4c 4c 42 41 43 4b 20 63 6f 6d 6d 61 6e 64 20 73  LLBACK command s
28a0: 68 6f 77 6e 0a 69 6e 20 74 68 65 20 73 79 6e 74  hown.in the synt
28b0: 61 78 20 64 69 61 67 72 61 6d 20 61 62 6f 76 65  ax diagram above
28c0: 20 69 73 20 6f 6e 6c 79 20 61 70 70 6c 69 63 61   is only applica
28d0: 62 6c 65 20 74 6f 20 5b 53 41 56 45 50 4f 49 4e  ble to [SAVEPOIN
28e0: 54 5d 0a 74 72 61 6e 73 61 63 74 69 6f 6e 73 2e  T].transactions.
28f0: 20 20 41 6e 20 61 74 74 65 6d 70 74 20 74 6f 20    An attempt to 
2900: 69 6e 76 6f 6b 65 20 74 68 65 20 42 45 47 49 4e  invoke the BEGIN
2910: 20 63 6f 6d 6d 61 6e 64 20 77 69 74 68 69 6e 0a   command within.
2920: 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 77 69  a transaction wi
2930: 6c 6c 20 66 61 69 6c 20 77 69 74 68 20 61 6e 20  ll fail with an 
2940: 65 72 72 6f 72 2c 20 72 65 67 61 72 64 6c 65 73  error, regardles
2950: 73 20 6f 66 20 77 68 65 74 68 65 72 0a 74 68 65  s of whether.the
2960: 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 77 61 73   transaction was
2970: 20 73 74 61 72 74 65 64 20 62 79 20 5b 53 41 56   started by [SAV
2980: 45 50 4f 49 4e 54 5d 20 6f 72 20 61 20 70 72 69  EPOINT] or a pri
2990: 6f 72 20 42 45 47 49 4e 2e 0a 54 68 65 20 43 4f  or BEGIN..The CO
29a0: 4d 4d 49 54 20 63 6f 6d 6d 61 6e 64 20 61 6e 64  MMIT command and
29b0: 20 74 68 65 20 52 4f 4c 4c 42 41 43 4b 20 63 6f   the ROLLBACK co
29c0: 6d 6d 61 6e 64 20 77 69 74 68 6f 75 74 20 74 68  mmand without th
29d0: 65 20 54 4f 20 63 6c 61 75 73 65 0a 77 6f 72 6b  e TO clause.work
29e0: 20 74 68 65 20 73 61 6d 65 20 6f 6e 20 5b 53 41   the same on [SA
29f0: 56 45 50 4f 49 4e 54 5d 20 74 72 61 6e 73 61 63  VEPOINT] transac
2a00: 74 69 6f 6e 73 20 61 73 20 74 68 65 79 20 64 6f  tions as they do
2a10: 20 77 69 74 68 20 74 72 61 6e 73 61 63 74 69 6f   with transactio
2a20: 6e 73 0a 73 74 61 72 74 65 64 20 62 79 20 42 45  ns.started by BE
2a30: 47 49 4e 2e 3c 2f 70 3e 0a 0a 3c 70 3e 0a 54 72  GIN.</p>..<p>.Tr
2a40: 61 6e 73 61 63 74 69 6f 6e 73 20 63 61 6e 20 62  ansactions can b
2a50: 65 20 64 65 66 65 72 72 65 64 2c 20 69 6d 6d 65  e deferred, imme
2a60: 64 69 61 74 65 2c 20 6f 72 20 65 78 63 6c 75 73  diate, or exclus
2a70: 69 76 65 2e 20 20 0a 54 68 65 20 64 65 66 61 75  ive.  .The defau
2a80: 6c 74 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 62  lt transaction b
2a90: 65 68 61 76 69 6f 72 20 69 73 20 64 65 66 65 72  ehavior is defer
2aa0: 72 65 64 2e 0a 44 65 66 65 72 72 65 64 20 6d 65  red..Deferred me
2ab0: 61 6e 73 20 74 68 61 74 20 6e 6f 20 6c 6f 63 6b  ans that no lock
2ac0: 73 20 61 72 65 20 61 63 71 75 69 72 65 64 0a 6f  s are acquired.o
2ad0: 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20 75  n the database u
2ae0: 6e 74 69 6c 20 74 68 65 20 64 61 74 61 62 61 73  ntil the databas
2af0: 65 20 69 73 20 66 69 72 73 74 20 61 63 63 65 73  e is first acces
2b00: 73 65 64 2e 20 20 54 68 75 73 20 77 69 74 68 20  sed.  Thus with 
2b10: 61 0a 64 65 66 65 72 72 65 64 20 74 72 61 6e 73  a.deferred trans
2b20: 61 63 74 69 6f 6e 2c 20 74 68 65 20 42 45 47 49  action, the BEGI
2b30: 4e 20 73 74 61 74 65 6d 65 6e 74 20 69 74 73 65  N statement itse
2b40: 6c 66 20 64 6f 65 73 20 6e 6f 74 68 69 6e 67 2e  lf does nothing.
2b50: 20 20 4c 6f 63 6b 73 0a 61 72 65 20 6e 6f 74 20    Locks.are not 
2b60: 61 63 71 75 69 72 65 64 20 75 6e 74 69 6c 20 74  acquired until t
2b70: 68 65 20 66 69 72 73 74 20 72 65 61 64 20 6f 72  he first read or
2b80: 20 77 72 69 74 65 20 6f 70 65 72 61 74 69 6f 6e   write operation
2b90: 2e 20 20 54 68 65 20 66 69 72 73 74 20 72 65 61  .  The first rea
2ba0: 64 0a 6f 70 65 72 61 74 69 6f 6e 20 61 67 61 69  d.operation agai
2bb0: 6e 73 74 20 61 20 64 61 74 61 62 61 73 65 20 63  nst a database c
2bc0: 72 65 61 74 65 73 20 61 20 5b 53 48 41 52 45 44  reates a [SHARED
2bd0: 5d 20 6c 6f 63 6b 20 61 6e 64 20 74 68 65 20 66  ] lock and the f
2be0: 69 72 73 74 0a 77 72 69 74 65 20 6f 70 65 72 61  irst.write opera
2bf0: 74 69 6f 6e 20 63 72 65 61 74 65 73 20 61 20 5b  tion creates a [
2c00: 52 45 53 45 52 56 45 44 5d 20 6c 6f 63 6b 2e 20  RESERVED] lock. 
2c10: 20 20 42 65 63 61 75 73 65 20 74 68 65 20 61 63    Because the ac
2c20: 71 75 69 73 69 74 69 6f 6e 20 6f 66 0a 6c 6f 63  quisition of.loc
2c30: 6b 73 20 69 73 20 64 65 66 65 72 72 65 64 20 75  ks is deferred u
2c40: 6e 74 69 6c 20 74 68 65 79 20 61 72 65 20 6e 65  ntil they are ne
2c50: 65 64 65 64 2c 20 69 74 20 69 73 20 70 6f 73 73  eded, it is poss
2c60: 69 62 6c 65 20 74 68 61 74 20 61 6e 6f 74 68 65  ible that anothe
2c70: 72 0a 74 68 72 65 61 64 20 6f 72 20 70 72 6f 63  r.thread or proc
2c80: 65 73 73 20 63 6f 75 6c 64 20 63 72 65 61 74 65  ess could create
2c90: 20 61 20 73 65 70 61 72 61 74 65 20 74 72 61 6e   a separate tran
2ca0: 73 61 63 74 69 6f 6e 20 61 6e 64 20 77 72 69 74  saction and writ
2cb0: 65 20 74 6f 0a 74 68 65 20 64 61 74 61 62 61 73  e to.the databas
2cc0: 65 20 61 66 74 65 72 20 74 68 65 20 42 45 47 49  e after the BEGI
2cd0: 4e 20 6f 6e 20 74 68 65 20 63 75 72 72 65 6e 74  N on the current
2ce0: 20 74 68 72 65 61 64 20 68 61 73 20 65 78 65 63   thread has exec
2cf0: 75 74 65 64 2e 0a 49 66 20 74 68 65 20 74 72 61  uted..If the tra
2d00: 6e 73 61 63 74 69 6f 6e 20 69 73 20 69 6d 6d 65  nsaction is imme
2d10: 64 69 61 74 65 2c 20 74 68 65 6e 20 5b 52 45 53  diate, then [RES
2d20: 45 52 56 45 44 5d 20 6c 6f 63 6b 73 0a 61 72 65  ERVED] locks.are
2d30: 20 61 63 71 75 69 72 65 64 20 6f 6e 20 61 6c 6c   acquired on all
2d40: 20 64 61 74 61 62 61 73 65 73 20 61 73 20 73 6f   databases as so
2d50: 6f 6e 20 61 73 20 74 68 65 20 42 45 47 49 4e 20  on as the BEGIN 
2d60: 63 6f 6d 6d 61 6e 64 20 69 73 0a 65 78 65 63 75  command is.execu
2d70: 74 65 64 2c 20 77 69 74 68 6f 75 74 20 77 61 69  ted, without wai
2d80: 74 69 6e 67 20 66 6f 72 20 74 68 65 0a 64 61 74  ting for the.dat
2d90: 61 62 61 73 65 20 74 6f 20 62 65 20 75 73 65 64  abase to be used
2da0: 2e 20 20 41 66 74 65 72 20 61 20 42 45 47 49 4e  .  After a BEGIN
2db0: 20 49 4d 4d 45 44 49 41 54 45 2c 20 79 6f 75 20   IMMEDIATE, you 
2dc0: 61 72 65 20 67 75 61 72 61 6e 74 65 65 64 20 74  are guaranteed t
2dd0: 68 61 74 0a 6e 6f 20 6f 74 68 65 72 20 74 68 72  hat.no other thr
2de0: 65 61 64 20 6f 72 20 70 72 6f 63 65 73 73 20 77  ead or process w
2df0: 69 6c 6c 20 62 65 20 61 62 6c 65 20 74 6f 20 77  ill be able to w
2e00: 72 69 74 65 20 74 6f 20 74 68 65 20 64 61 74 61  rite to the data
2e10: 62 61 73 65 20 6f 72 0a 64 6f 20 61 20 42 45 47  base or.do a BEG
2e20: 49 4e 20 49 4d 4d 45 44 49 41 54 45 20 6f 72 20  IN IMMEDIATE or 
2e30: 42 45 47 49 4e 20 45 58 43 4c 55 53 49 56 45 2e  BEGIN EXCLUSIVE.
2e40: 20 20 4f 74 68 65 72 20 70 72 6f 63 65 73 73 65    Other processe
2e50: 73 20 63 61 6e 20 63 6f 6e 74 69 6e 75 65 0a 74  s can continue.t
2e60: 6f 20 72 65 61 64 20 66 72 6f 6d 20 74 68 65 20  o read from the 
2e70: 64 61 74 61 62 61 73 65 2c 20 68 6f 77 65 76 65  database, howeve
2e80: 72 2e 20 20 41 6e 20 65 78 63 6c 75 73 69 76 65  r.  An exclusive
2e90: 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 63 61 75   transaction cau
2ea0: 73 65 73 0a 5b 45 58 43 4c 55 53 49 56 45 5d 20  ses.[EXCLUSIVE] 
2eb0: 6c 6f 63 6b 73 20 74 6f 20 62 65 20 61 63 71 75  locks to be acqu
2ec0: 69 72 65 64 20 6f 6e 20 61 6c 6c 20 64 61 74 61  ired on all data
2ed0: 62 61 73 65 73 2e 20 20 41 66 74 65 72 20 61 20  bases.  After a 
2ee0: 42 45 47 49 4e 0a 45 58 43 4c 55 53 49 56 45 2c  BEGIN.EXCLUSIVE,
2ef0: 20 79 6f 75 20 61 72 65 20 67 75 61 72 61 6e 74   you are guarant
2f00: 65 65 64 20 74 68 61 74 20 6e 6f 20 6f 74 68 65  eed that no othe
2f10: 72 20 74 68 72 65 61 64 20 6f 72 20 70 72 6f 63  r thread or proc
2f20: 65 73 73 20 77 69 6c 6c 0a 62 65 20 61 62 6c 65  ess will.be able
2f30: 20 74 6f 20 72 65 61 64 20 6f 72 20 77 72 69 74   to read or writ
2f40: 65 20 74 68 65 20 64 61 74 61 62 61 73 65 20 75  e the database u
2f50: 6e 74 69 6c 20 74 68 65 20 74 72 61 6e 73 61 63  ntil the transac
2f60: 74 69 6f 6e 20 69 73 0a 63 6f 6d 70 6c 65 74 65  tion is.complete
2f70: 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 41 6e 20 69  ..</p>..<p>.An i
2f80: 6d 70 6c 69 63 69 74 20 74 72 61 6e 73 61 63 74  mplicit transact
2f90: 69 6f 6e 20 28 61 20 74 72 61 6e 73 61 63 74 69  ion (a transacti
2fa0: 6f 6e 20 74 68 61 74 20 69 73 20 73 74 61 72 74  on that is start
2fb0: 65 64 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79  ed automatically
2fc0: 2c 0a 6e 6f 74 20 61 20 74 72 61 6e 73 61 63 74  ,.not a transact
2fd0: 69 6f 6e 20 73 74 61 72 74 65 64 20 62 79 20 42  ion started by B
2fe0: 45 47 49 4e 29 20 69 73 20 63 6f 6d 6d 69 74 74  EGIN) is committ
2ff0: 65 64 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79  ed automatically
3000: 20 77 68 65 6e 0a 74 68 65 20 6c 61 73 74 20 61   when.the last a
3010: 63 74 69 76 65 20 73 74 61 74 65 6d 65 6e 74 20  ctive statement 
3020: 66 69 6e 69 73 68 65 73 2e 20 20 41 20 73 74 61  finishes.  A sta
3030: 74 65 6d 65 6e 74 20 66 69 6e 69 73 68 65 73 20  tement finishes 
3040: 77 68 65 6e 20 69 74 73 0a 70 72 65 70 61 72 65  when its.prepare
3050: 64 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 5b  d statement is [
3060: 73 71 6c 69 74 65 33 5f 72 65 73 65 74 28 29 20  sqlite3_reset() 
3070: 7c 20 72 65 73 65 74 5d 20 6f 72 0a 5b 73 71 6c  | reset] or.[sql
3080: 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65 28 29 20  ite3_finalize() 
3090: 7c 20 66 69 6e 61 6c 69 7a 65 64 5d 2e 20 20 41  | finalized].  A
30a0: 6e 20 6f 70 65 6e 20 5b 73 71 6c 69 74 65 33 5f  n open [sqlite3_
30b0: 62 6c 6f 62 5d 20 75 73 65 64 20 66 6f 72 0a 69  blob] used for.i
30c0: 6e 63 72 65 6d 65 6e 74 61 6c 20 42 4c 4f 42 20  ncremental BLOB 
30d0: 49 2f 4f 20 63 6f 75 6e 74 73 20 61 73 20 61 6e  I/O counts as an
30e0: 20 75 6e 66 69 6e 69 73 68 65 64 20 73 74 61 74   unfinished stat
30f0: 65 6d 65 6e 74 2e 20 20 54 68 65 20 5b 73 71 6c  ement.  The [sql
3100: 69 74 65 33 5f 62 6c 6f 62 5d 0a 66 69 6e 69 73  ite3_blob].finis
3110: 68 65 73 20 77 68 65 6e 20 69 74 20 69 73 20 5b  hes when it is [
3120: 73 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 63 6c 6f  sqlite3_blob_clo
3130: 73 65 28 29 20 7c 20 63 6c 6f 73 65 64 5d 2e 0a  se() | closed]..
3140: 3c 2f 70 3e 0a 0a 3c 70 3e 0a 54 68 65 20 65 78  </p>..<p>.The ex
3150: 70 6c 69 63 69 74 20 43 4f 4d 4d 49 54 20 63 6f  plicit COMMIT co
3160: 6d 6d 61 6e 64 20 72 75 6e 73 20 69 6d 6d 65 64  mmand runs immed
3170: 69 61 74 65 6c 79 2c 20 65 76 65 6e 20 69 66 20  iately, even if 
3180: 74 68 65 72 65 20 61 72 65 0a 70 65 6e 64 69 6e  there are.pendin
3190: 67 20 5b 53 45 4c 45 43 54 5d 20 73 74 61 74 65  g [SELECT] state
31a0: 6d 65 6e 74 73 2e 20 20 48 6f 77 65 76 65 72 2c  ments.  However,
31b0: 20 69 66 20 74 68 65 72 65 20 61 72 65 20 70 65   if there are pe
31c0: 6e 64 69 6e 67 0a 77 72 69 74 65 20 6f 70 65 72  nding.write oper
31d0: 61 74 69 6f 6e 73 2c 20 74 68 65 20 43 4f 4d 4d  ations, the COMM
31e0: 49 54 20 63 6f 6d 6d 61 6e 64 0a 77 69 6c 6c 20  IT command.will 
31f0: 66 61 69 6c 20 77 69 74 68 20 61 20 65 72 72 6f  fail with a erro
3200: 72 20 63 6f 64 65 20 5b 53 51 4c 49 54 45 5f 42  r code [SQLITE_B
3210: 55 53 59 5d 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a  USY]..</p>..<p>.
3220: 41 6e 20 61 74 74 65 6d 70 74 20 74 6f 20 65 78  An attempt to ex
3230: 65 63 75 74 65 20 43 4f 4d 4d 49 54 20 6d 69 67  ecute COMMIT mig
3240: 68 74 20 61 6c 73 6f 20 72 65 73 75 6c 74 20 69  ht also result i
3250: 6e 20 61 6e 20 5b 53 51 4c 49 54 45 5f 42 55 53  n an [SQLITE_BUS
3260: 59 5d 20 72 65 74 75 72 6e 20 63 6f 64 65 0a 69  Y] return code.i
3270: 66 20 61 6e 20 61 6e 6f 74 68 65 72 20 74 68 72  f an another thr
3280: 65 61 64 20 6f 72 20 70 72 6f 63 65 73 73 20 68  ead or process h
3290: 61 73 20 61 20 5b 73 68 61 72 65 64 20 6c 6f 63  as a [shared loc
32a0: 6b 5d 20 6f 6e 20 74 68 65 20 64 61 74 61 62 61  k] on the databa
32b0: 73 65 0a 74 68 61 74 20 70 72 65 76 65 6e 74 65  se.that prevente
32c0: 64 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66  d the database f
32d0: 72 6f 6d 20 62 65 69 6e 67 20 75 70 64 61 74 65  rom being update
32e0: 64 2e 20 20 57 68 65 6e 20 43 4f 4d 4d 49 54 20  d.  When COMMIT 
32f0: 66 61 69 6c 73 20 69 6e 20 74 68 69 73 0a 77 61  fails in this.wa
3300: 79 2c 20 74 68 65 20 74 72 61 6e 73 61 63 74 69  y, the transacti
3310: 6f 6e 20 72 65 6d 61 69 6e 73 20 61 63 74 69 76  on remains activ
3320: 65 20 61 6e 64 20 74 68 65 20 43 4f 4d 4d 49 54  e and the COMMIT
3330: 20 63 61 6e 20 62 65 20 72 65 74 72 69 65 64 20   can be retried 
3340: 6c 61 74 65 72 0a 61 66 74 65 72 20 74 68 65 20  later.after the 
3350: 72 65 61 64 65 72 20 68 61 73 20 68 61 64 20 61  reader has had a
3360: 20 63 68 61 6e 63 65 20 74 6f 20 63 6c 65 61 72   chance to clear
3370: 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 54 68 65 20  ..</p>..<p>.The 
3380: 52 4f 4c 4c 42 41 43 4b 20 77 69 6c 6c 20 66 61  ROLLBACK will fa
3390: 69 6c 20 77 69 74 68 20 61 6e 20 65 72 72 6f 72  il with an error
33a0: 20 63 6f 64 65 20 5b 53 51 4c 49 54 45 5f 42 55   code [SQLITE_BU
33b0: 53 59 5d 20 69 66 20 74 68 65 72 65 0a 61 72 65  SY] if there.are
33c0: 20 61 6e 79 20 70 65 6e 64 69 6e 67 20 71 75 65   any pending que
33d0: 72 69 65 73 2e 20 20 42 6f 74 68 20 72 65 61 64  ries.  Both read
33e0: 2d 6f 6e 6c 79 20 61 6e 64 20 72 65 61 64 2f 77  -only and read/w
33f0: 72 69 74 65 20 71 75 65 72 69 65 73 20 77 69 6c  rite queries wil
3400: 6c 0a 63 61 75 73 65 20 61 20 52 4f 4c 4c 42 41  l.cause a ROLLBA
3410: 43 4b 20 74 6f 20 66 61 69 6c 2e 20 20 41 20 52  CK to fail.  A R
3420: 4f 4c 4c 42 41 43 4b 20 6d 75 73 74 20 66 61 69  OLLBACK must fai
3430: 6c 20 69 66 20 74 68 65 72 65 20 61 72 65 20 70  l if there are p
3440: 65 6e 64 69 6e 67 0a 72 65 61 64 20 6f 70 65 72  ending.read oper
3450: 61 74 69 6f 6e 73 20 28 75 6e 6c 69 6b 65 20 43  ations (unlike C
3460: 4f 4d 4d 49 54 20 77 68 69 63 68 20 63 61 6e 20  OMMIT which can 
3470: 73 75 63 63 65 65 64 29 20 62 65 63 61 75 73 65  succeed) because
3480: 20 62 61 64 20 74 68 69 6e 67 73 0a 77 69 6c 6c   bad things.will
3490: 20 68 61 70 70 65 6e 20 69 66 20 6d 65 6d 6f 72   happen if memor
34a0: 79 20 69 6d 61 67 65 20 6f 66 20 74 68 65 20 64  y image of the d
34b0: 61 74 61 62 61 73 65 20 69 73 20 63 68 61 6e 67  atabase is chang
34c0: 65 64 20 6f 75 74 20 66 72 6f 6d 20 75 6e 64 65  ed out from unde
34d0: 72 0a 61 6e 20 61 63 74 69 76 65 20 71 75 65 72  r.an active quer
34e0: 79 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 49 66 20  y..</p>..<p>.If 
34f0: 5b 50 52 41 47 4d 41 20 6a 6f 75 72 6e 61 6c 5f  [PRAGMA journal_
3500: 6d 6f 64 65 5d 20 69 73 20 73 65 74 20 74 6f 20  mode] is set to 
3510: 4f 46 46 20 28 74 68 75 73 20 64 69 73 61 62 6c  OFF (thus disabl
3520: 69 6e 67 20 74 68 65 20 72 6f 6c 6c 62 61 63 6b  ing the rollback
3530: 20 6a 6f 75 72 6e 61 6c 0a 66 69 6c 65 29 20 74   journal.file) t
3540: 68 65 6e 20 74 68 65 20 62 65 68 61 76 69 6f 72  hen the behavior
3550: 20 6f 66 20 74 68 65 20 52 4f 4c 4c 42 41 43 4b   of the ROLLBACK
3560: 20 63 6f 6d 6d 61 6e 64 20 69 73 20 75 6e 64 65   command is unde
3570: 66 69 6e 65 64 2e 0a 3c 2f 70 3e 0a 0a 3c 68 33  fined..</p>..<h3
3580: 3e 52 65 73 70 6f 6e 73 65 20 54 6f 20 45 72 72  >Response To Err
3590: 6f 72 73 20 57 69 74 68 69 6e 20 41 20 54 72 61  ors Within A Tra
35a0: 6e 73 61 63 74 69 6f 6e 3c 2f 68 33 3e 0a 0a 3c  nsaction</h3>..<
35b0: 70 3e 49 66 20 63 65 72 74 61 69 6e 20 6b 69 6e  p>If certain kin
35c0: 64 73 20 6f 66 20 65 72 72 6f 72 73 20 6f 63 63  ds of errors occ
35d0: 75 72 20 77 69 74 68 69 6e 20 61 20 74 72 61 6e  ur within a tran
35e0: 73 61 63 74 69 6f 6e 2c 20 74 68 65 0a 74 72 61  saction, the.tra
35f0: 6e 73 61 63 74 69 6f 6e 20 6d 61 79 20 6f 72 20  nsaction may or 
3600: 6d 61 79 20 6e 6f 74 20 62 65 20 72 6f 6c 6c 65  may not be rolle
3610: 64 20 62 61 63 6b 20 61 75 74 6f 6d 61 74 69 63  d back automatic
3620: 61 6c 6c 79 2e 20 20 54 68 65 0a 65 72 72 6f 72  ally.  The.error
3630: 73 20 74 68 61 74 20 63 61 75 73 65 20 74 68 65  s that cause the
3640: 20 62 65 68 61 76 69 6f 72 20 69 6e 63 6c 75 64   behavior includ
3650: 65 3a 3c 2f 70 3e 0a 0a 3c 75 6c 3e 0a 3c 6c 69  e:</p>..<ul>.<li
3660: 3e 20 5b 53 51 4c 49 54 45 5f 46 55 4c 4c 5d 3a  > [SQLITE_FULL]:
3670: 20 64 61 74 61 62 61 73 65 20 6f 72 20 64 69 73   database or dis
3680: 6b 20 66 75 6c 6c 0a 3c 6c 69 3e 20 5b 53 51 4c  k full.<li> [SQL
3690: 49 54 45 5f 49 4f 45 52 52 5d 3a 20 64 69 73 6b  ITE_IOERR]: disk
36a0: 20 49 2f 4f 20 65 72 72 6f 72 0a 3c 6c 69 3e 20   I/O error.<li> 
36b0: 5b 53 51 4c 49 54 45 5f 42 55 53 59 5d 3a 20 64  [SQLITE_BUSY]: d
36c0: 61 74 61 62 61 73 65 20 69 6e 20 75 73 65 20 62  atabase in use b
36d0: 79 20 61 6e 6f 74 68 65 72 20 70 72 6f 63 65 73  y another proces
36e0: 73 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4e  s.<li> [SQLITE_N
36f0: 4f 4d 45 4d 5d 3a 20 6f 75 74 20 6f 72 20 6d 65  OMEM]: out or me
3700: 6d 6f 72 79 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54  mory.<li> [SQLIT
3710: 45 5f 49 4e 54 45 52 52 55 50 54 5d 3a 20 70 72  E_INTERRUPT]: pr
3720: 6f 63 65 73 73 69 6e 67 20 5b 73 71 6c 69 74 65  ocessing [sqlite
3730: 33 5f 69 6e 74 65 72 72 75 70 74 7c 69 6e 74 65  3_interrupt|inte
3740: 72 72 75 70 74 65 64 5d 0a 20 20 20 20 20 62 79  rrupted].     by
3750: 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 72 65 71   application req
3760: 75 65 73 74 0a 3c 2f 75 6c 3e 0a 0a 3c 70 3e 0a  uest.</ul>..<p>.
3770: 46 6f 72 20 61 6c 6c 20 6f 66 20 74 68 65 73 65  For all of these
3780: 20 65 72 72 6f 72 73 2c 20 53 51 4c 69 74 65 20   errors, SQLite 
3790: 61 74 74 65 6d 70 74 73 20 74 6f 20 75 6e 64 6f  attempts to undo
37a0: 20 6a 75 73 74 20 74 68 65 20 6f 6e 65 20 73 74   just the one st
37b0: 61 74 65 6d 65 6e 74 0a 69 74 20 77 61 73 20 77  atement.it was w
37c0: 6f 72 6b 69 6e 67 20 6f 6e 20 61 6e 64 20 6c 65  orking on and le
37d0: 61 76 65 20 63 68 61 6e 67 65 73 20 66 72 6f 6d  ave changes from
37e0: 20 70 72 69 6f 72 20 73 74 61 74 65 6d 65 6e 74   prior statement
37f0: 73 20 77 69 74 68 69 6e 20 74 68 65 0a 73 61 6d  s within the.sam
3800: 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 69 6e  e transaction in
3810: 74 61 63 74 20 61 6e 64 20 63 6f 6e 74 69 6e 75  tact and continu
3820: 65 20 77 69 74 68 20 74 68 65 20 74 72 61 6e 73  e with the trans
3830: 61 63 74 69 6f 6e 2e 20 20 48 6f 77 65 76 65 72  action.  However
3840: 2c 20 0a 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20  , .depending on 
3850: 74 68 65 20 73 74 61 74 65 6d 65 6e 74 20 62 65  the statement be
3860: 69 6e 67 20 65 76 61 6c 75 61 74 65 64 20 61 6e  ing evaluated an
3870: 64 20 74 68 65 20 70 6f 69 6e 74 20 61 74 20 77  d the point at w
3880: 68 69 63 68 20 74 68 65 0a 65 72 72 6f 72 20 6f  hich the.error o
3890: 63 63 75 72 73 2c 20 69 74 20 6d 69 67 68 74 20  ccurs, it might 
38a0: 62 65 20 6e 65 63 65 73 73 61 72 79 20 66 6f 72  be necessary for
38b0: 20 53 51 4c 69 74 65 20 74 6f 20 72 6f 6c 6c 62   SQLite to rollb
38c0: 61 63 6b 20 61 6e 64 0a 63 61 6e 63 65 6c 20 74  ack and.cancel t
38d0: 68 65 20 65 6e 74 69 72 65 20 74 72 61 6e 73 61  he entire transa
38e0: 63 74 69 6f 6e 2e 20 20 41 6e 20 61 70 70 6c 69  ction.  An appli
38f0: 63 61 74 69 6f 6e 20 63 61 6e 20 74 65 6c 6c 20  cation can tell 
3900: 77 68 69 63 68 0a 63 6f 75 72 73 65 20 6f 66 20  which.course of 
3910: 61 63 74 69 6f 6e 20 53 51 4c 69 74 65 20 74 6f  action SQLite to
3920: 6f 6b 20 62 79 20 75 73 69 6e 67 20 74 68 65 0a  ok by using the.
3930: 5b 73 71 6c 69 74 65 33 5f 67 65 74 5f 61 75 74  [sqlite3_get_aut
3940: 6f 63 6f 6d 6d 69 74 28 29 5d 20 43 2d 6c 61 6e  ocommit()] C-lan
3950: 67 75 61 67 65 20 69 6e 74 65 72 66 61 63 65 2e  guage interface.
3960: 3c 2f 70 3e 0a 0a 3c 70 3e 49 74 20 69 73 20 72  </p>..<p>It is r
3970: 65 63 6f 6d 6d 65 6e 64 65 64 20 74 68 61 74 20  ecommended that 
3980: 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 72 65 73  applications res
3990: 70 6f 6e 64 20 74 6f 20 74 68 65 20 65 72 72 6f  pond to the erro
39a0: 72 73 0a 6c 69 73 74 65 64 20 61 62 6f 76 65 20  rs.listed above 
39b0: 62 79 20 65 78 70 6c 69 63 69 74 6c 79 20 69 73  by explicitly is
39c0: 73 75 69 6e 67 20 61 20 52 4f 4c 4c 42 41 43 4b  suing a ROLLBACK
39d0: 20 63 6f 6d 6d 61 6e 64 2e 20 20 49 66 20 74 68   command.  If th
39e0: 65 20 0a 74 72 61 6e 73 61 63 74 69 6f 6e 20 68  e .transaction h
39f0: 61 73 20 61 6c 72 65 61 64 79 20 62 65 65 6e 20  as already been 
3a00: 72 6f 6c 6c 65 64 20 62 61 63 6b 20 61 75 74 6f  rolled back auto
3a10: 6d 61 74 69 63 61 6c 6c 79 0a 62 79 20 74 68 65  matically.by the
3a20: 20 65 72 72 6f 72 20 72 65 73 70 6f 6e 73 65 2c   error response,
3a30: 20 74 68 65 6e 20 74 68 65 20 52 4f 4c 4c 42 41   then the ROLLBA
3a40: 43 4b 20 63 6f 6d 6d 61 6e 64 20 77 69 6c 6c 20  CK command will 
3a50: 66 61 69 6c 20 77 69 74 68 20 61 6e 0a 65 72 72  fail with an.err
3a60: 6f 72 2c 20 62 75 74 20 6e 6f 20 68 61 72 6d 20  or, but no harm 
3a70: 69 73 20 63 61 75 73 65 64 20 62 79 20 74 68 69  is caused by thi
3a80: 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 46 75 74 75 72  s.</p>..<p>Futur
3a90: 65 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 53 51  e versions of SQ
3aa0: 4c 69 74 65 20 6d 61 79 20 65 78 74 65 6e 64 20  Lite may extend 
3ab0: 74 68 65 20 6c 69 73 74 20 6f 66 20 65 72 72 6f  the list of erro
3ac0: 72 73 20 77 68 69 63 68 0a 6d 69 67 68 74 20 63  rs which.might c
3ad0: 61 75 73 65 20 61 75 74 6f 6d 61 74 69 63 20 74  ause automatic t
3ae0: 72 61 6e 73 61 63 74 69 6f 6e 20 72 6f 6c 6c 62  ransaction rollb
3af0: 61 63 6b 2e 20 20 46 75 74 75 72 65 20 76 65 72  ack.  Future ver
3b00: 73 69 6f 6e 73 20 6f 66 0a 53 51 4c 69 74 65 20  sions of.SQLite 
3b10: 6d 69 67 68 74 20 63 68 61 6e 67 65 20 74 68 65  might change the
3b20: 20 65 72 72 6f 72 20 72 65 73 70 6f 6e 73 65 2e   error response.
3b30: 20 20 49 6e 20 70 61 72 74 69 63 75 6c 61 72 2c    In particular,
3b40: 20 77 65 20 6d 61 79 0a 63 68 6f 6f 73 65 20 74   we may.choose t
3b50: 6f 20 73 69 6d 70 6c 69 66 79 20 74 68 65 20 69  o simplify the i
3b60: 6e 74 65 72 66 61 63 65 20 69 6e 20 66 75 74 75  nterface in futu
3b70: 72 65 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 53  re versions of S
3b80: 51 4c 69 74 65 20 62 79 0a 63 61 75 73 69 6e 67  QLite by.causing
3b90: 20 74 68 65 20 65 72 72 6f 72 73 20 61 62 6f 76   the errors abov
3ba0: 65 20 74 6f 20 66 6f 72 63 65 20 61 6e 20 75 6e  e to force an un
3bb0: 63 6f 6e 64 69 74 69 6f 6e 61 6c 20 72 6f 6c 6c  conditional roll
3bc0: 62 61 63 6b 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e  back.</p>..<tcl>
3bd0: 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  .###############
3be0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3bf0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3c00: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3c10: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3c20: 0a 53 65 63 74 69 6f 6e 20 7b 53 41 56 45 50 4f  .Section {SAVEPO
3c30: 49 4e 54 7d 20 73 61 76 65 70 6f 69 6e 74 20 7b  INT} savepoint {
3c40: 53 41 56 45 50 4f 49 4e 54 20 52 45 4c 45 41 53  SAVEPOINT RELEAS
3c50: 45 7d 0a 0a 42 75 62 62 6c 65 44 69 61 67 72 61  E}..BubbleDiagra
3c60: 6d 20 73 61 76 65 70 6f 69 6e 74 2d 73 74 6d 74  m savepoint-stmt
3c70: 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 72  .BubbleDiagram r
3c80: 65 6c 65 61 73 65 2d 73 74 6d 74 0a 42 75 62 62  elease-stmt.Bubb
3c90: 6c 65 44 69 61 67 72 61 6d 20 72 6f 6c 6c 62 61  leDiagram rollba
3ca0: 63 6b 2d 73 74 6d 74 0a 3c 2f 74 63 6c 3e 0a 0a  ck-stmt.</tcl>..
3cb0: 3c 70 3e 53 41 56 45 50 4f 49 4e 54 73 20 61 72  <p>SAVEPOINTs ar
3cc0: 65 20 61 20 6d 65 74 68 6f 64 20 6f 66 20 63 72  e a method of cr
3cd0: 65 61 74 69 6e 67 20 74 72 61 6e 73 61 63 74 69  eating transacti
3ce0: 6f 6e 73 2c 20 73 69 6d 69 6c 61 72 20 74 6f 0a  ons, similar to.
3cf0: 5b 42 45 47 49 4e 5d 20 61 6e 64 20 5b 43 4f 4d  [BEGIN] and [COM
3d00: 4d 49 54 5d 2c 20 65 78 63 65 70 74 20 74 68 61  MIT], except tha
3d10: 74 20 74 68 65 20 53 41 56 45 50 4f 49 4e 54 20  t the SAVEPOINT 
3d20: 61 6e 64 20 52 45 4c 45 41 53 45 20 63 6f 6d 6d  and RELEASE comm
3d30: 61 6e 64 73 0a 61 72 65 20 6e 61 6d 65 64 20 61  ands.are named a
3d40: 6e 64 20 6d 61 79 20 62 65 20 6e 65 73 74 65 64  nd may be nested
3d50: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 53 41  .</p>..<p>The SA
3d60: 56 45 50 4f 49 4e 54 20 63 6f 6d 6d 61 6e 64 20  VEPOINT command 
3d70: 73 74 61 72 74 73 20 61 20 6e 65 77 20 74 72 61  starts a new tra
3d80: 6e 73 61 63 74 69 6f 6e 20 77 69 74 68 20 61 20  nsaction with a 
3d90: 6e 61 6d 65 2e 0a 54 68 65 20 74 72 61 6e 73 61  name..The transa
3da0: 63 74 69 6f 6e 20 6e 61 6d 65 73 20 6e 65 65 64  ction names need
3db0: 20 6e 6f 74 20 62 65 20 75 6e 69 71 75 65 2e 0a   not be unique..
3dc0: 41 20 53 41 56 45 50 4f 49 4e 54 20 63 61 6e 20  A SAVEPOINT can 
3dd0: 62 65 20 73 74 61 72 74 65 64 20 65 69 74 68 65  be started eithe
3de0: 72 20 77 69 74 68 69 6e 20 6f 72 20 6f 75 74 73  r within or outs
3df0: 69 64 65 20 6f 66 0a 61 20 5b 42 45 47 49 4e 5d  ide of.a [BEGIN]
3e00: 2e 2e 2e 5b 43 4f 4d 4d 49 54 5d 2e 20 20 57 68  ...[COMMIT].  Wh
3e10: 65 6e 20 61 20 53 41 56 45 50 4f 49 4e 54 20 69  en a SAVEPOINT i
3e20: 73 20 74 68 65 20 6f 75 74 65 72 2d 6d 6f 73 74  s the outer-most
3e30: 20 73 61 76 65 70 6f 69 6e 74 0a 61 6e 64 20 69   savepoint.and i
3e40: 74 20 69 73 20 6e 6f 74 20 77 69 74 68 69 6e 20  t is not within 
3e50: 61 20 5b 42 45 47 49 4e 5d 2e 2e 2e 5b 43 4f 4d  a [BEGIN]...[COM
3e60: 4d 49 54 5d 20 74 68 65 6e 20 74 68 65 20 62 65  MIT] then the be
3e70: 68 61 76 69 6f 72 20 69 73 20 74 68 65 0a 73 61  havior is the.sa
3e80: 6d 65 20 61 73 20 42 45 47 49 4e 20 44 45 46 45  me as BEGIN DEFE
3e90: 52 52 45 44 20 54 52 41 4e 53 41 43 54 49 4f 4e  RRED TRANSACTION
3ea0: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 52 4f  .</p>..<p>The RO
3eb0: 4c 4c 42 41 43 4b 20 54 4f 20 63 6f 6d 6d 61 6e  LLBACK TO comman
3ec0: 64 20 72 65 76 65 72 74 73 20 74 68 65 20 73 74  d reverts the st
3ed0: 61 74 65 20 6f 66 20 74 68 65 20 64 61 74 61 62  ate of the datab
3ee0: 61 73 65 20 62 61 63 6b 20 74 6f 20 77 68 61 74  ase back to what
3ef0: 0a 69 74 20 77 61 73 20 6a 75 73 74 20 61 66 74  .it was just aft
3f00: 65 72 20 74 68 65 20 63 6f 72 72 65 73 70 6f 6e  er the correspon
3f10: 64 69 6e 67 20 53 41 56 45 50 4f 49 4e 54 2e 20  ding SAVEPOINT. 
3f20: 20 4e 6f 74 65 20 74 68 61 74 20 75 6e 6c 69 6b   Note that unlik
3f30: 65 20 74 68 61 74 0a 70 6c 61 69 6e 20 5b 52 4f  e that.plain [RO
3f40: 4c 4c 42 41 43 4b 5d 20 63 6f 6d 6d 61 6e 64 20  LLBACK] command 
3f50: 28 77 69 74 68 6f 75 74 20 74 68 65 20 54 4f 20  (without the TO 
3f60: 6b 65 79 77 6f 72 64 29 20 74 68 65 20 52 4f 4c  keyword) the ROL
3f70: 4c 42 41 43 4b 20 54 4f 20 63 6f 6d 6d 61 6e 64  LBACK TO command
3f80: 0a 64 6f 65 73 20 6e 6f 74 20 63 61 6e 63 65 6c  .does not cancel
3f90: 20 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e   the transaction
3fa0: 2e 20 20 49 6e 73 74 65 61 64 20 6f 66 20 63 61  .  Instead of ca
3fb0: 6e 63 65 6c 6c 69 6e 67 20 74 68 65 20 74 72 61  ncelling the tra
3fc0: 6e 73 61 63 74 69 6f 6e 2c 0a 74 68 65 20 52 4f  nsaction,.the RO
3fd0: 4c 4c 42 41 43 4b 20 54 4f 20 63 6f 6d 6d 61 6e  LLBACK TO comman
3fe0: 64 20 72 65 73 74 61 72 74 73 20 74 68 65 20 74  d restarts the t
3ff0: 72 61 6e 73 61 63 74 69 6f 6e 20 61 67 61 69 6e  ransaction again
4000: 20 61 74 20 74 68 65 20 62 65 67 69 6e 6e 69 6e   at the beginnin
4010: 67 2e 0a 41 6c 6c 20 69 6e 74 65 72 76 65 6e 69  g..All interveni
4020: 6e 67 20 53 41 56 45 50 4f 49 4e 54 73 20 61 72  ng SAVEPOINTs ar
4030: 65 20 63 61 6e 63 65 6c 6c 65 64 2c 20 68 6f 77  e cancelled, how
4040: 65 76 65 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68  ever.</p>..<p>Th
4050: 65 20 52 45 4c 45 41 53 45 20 69 73 20 6c 69 6b  e RELEASE is lik
4060: 65 20 61 20 5b 43 4f 4d 4d 49 54 5d 20 66 6f 72  e a [COMMIT] for
4070: 20 61 20 53 41 56 45 50 4f 49 4e 54 2e 0a 54 68   a SAVEPOINT..Th
4080: 65 20 52 45 4c 45 41 53 45 20 63 6f 6d 6d 61 6e  e RELEASE comman
4090: 64 20 63 61 75 73 65 73 20 61 6c 6c 20 73 61 76  d causes all sav
40a0: 65 70 6f 69 6e 74 73 20 62 61 63 6b 20 74 6f 20  epoints back to 
40b0: 61 6e 64 20 69 6e 63 6c 75 64 69 6e 67 20 74 68  and including th
40c0: 65 20 66 69 72 73 74 0a 73 61 76 65 70 6f 69 6e  e first.savepoin
40d0: 74 20 77 69 74 68 20 61 20 6d 61 74 63 68 69 6e  t with a matchin
40e0: 67 20 6e 61 6d 65 20 74 6f 20 62 65 20 72 65 6d  g name to be rem
40f0: 6f 76 65 64 20 66 72 6f 6d 20 74 68 65 20 74 72  oved from the tr
4100: 61 6e 73 61 63 74 69 6f 6e 20 73 74 61 63 6b 2e  ansaction stack.
4110: 20 20 54 68 65 0a 52 45 4c 45 41 53 45 20 6f 66    The.RELEASE of
4120: 20 61 6e 20 69 6e 6e 65 72 20 74 72 61 6e 73 61   an inner transa
4130: 63 74 69 6f 6e 0a 64 6f 65 73 20 6e 6f 74 20 63  ction.does not c
4140: 61 75 73 65 20 61 6e 79 20 63 68 61 6e 67 65 73  ause any changes
4150: 20 74 6f 20 62 65 20 77 72 69 74 74 65 6e 20 74   to be written t
4160: 6f 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66  o the database f
4170: 69 6c 65 3b 20 69 74 20 6d 65 72 65 6c 79 0a 72  ile; it merely.r
4180: 65 6d 6f 76 65 73 20 73 61 76 65 70 6f 69 6e 74  emoves savepoint
4190: 73 20 66 72 6f 6d 20 74 68 65 20 74 72 61 6e 73  s from the trans
41a0: 61 63 74 69 6f 6e 20 73 74 61 63 6b 20 73 75 63  action stack suc
41b0: 68 20 74 68 61 74 20 69 74 20 69 73 0a 6e 6f 20  h that it is.no 
41c0: 6c 6f 6e 67 65 72 20 70 6f 73 73 69 62 6c 65 20  longer possible 
41d0: 74 6f 20 52 4f 4c 4c 42 41 43 4b 20 54 4f 20 74  to ROLLBACK TO t
41e0: 68 6f 73 65 20 73 61 76 65 70 6f 69 6e 74 73 2e  hose savepoints.
41f0: 0a 49 66 20 61 20 52 45 4c 45 41 53 45 20 63 6f  .If a RELEASE co
4200: 6d 6d 61 6e 64 20 72 65 6c 65 61 73 65 73 20 74  mmand releases t
4210: 68 65 20 6f 75 74 65 72 6d 6f 73 74 20 73 61 76  he outermost sav
4220: 65 70 6f 69 6e 74 2c 20 73 6f 0a 74 68 61 74 20  epoint, so.that 
4230: 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  the transaction 
4240: 73 74 61 63 6b 20 62 65 63 6f 6d 65 73 20 65 6d  stack becomes em
4250: 70 74 79 2c 20 74 68 65 6e 20 52 45 4c 45 41 53  pty, then RELEAS
4260: 45 20 69 73 20 74 68 65 20 73 61 6d 65 0a 61 73  E is the same.as
4270: 20 5b 43 4f 4d 4d 49 54 5d 2e 0a 54 68 65 20 5b   [COMMIT]..The [
4280: 43 4f 4d 4d 49 54 5d 20 63 6f 6d 6d 61 6e 64 20  COMMIT] command 
4290: 6d 61 79 20 75 73 65 64 20 74 6f 20 72 65 6c 65  may used to rele
42a0: 61 73 65 20 61 6c 6c 20 73 61 76 65 70 6f 69 6e  ase all savepoin
42b0: 74 73 20 61 6e 64 0a 63 6f 6d 6d 69 74 20 74 68  ts and.commit th
42c0: 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 65 76  e transaction ev
42d0: 65 6e 20 69 66 20 74 68 65 20 74 72 61 6e 73 61  en if the transa
42e0: 63 74 69 6f 6e 20 77 61 73 20 6f 72 69 67 69 6e  ction was origin
42f0: 61 6c 6c 79 20 73 74 61 72 74 65 64 0a 62 79 20  ally started.by 
4300: 61 20 53 41 56 45 50 4f 49 4e 54 20 63 6f 6d 6d  a SAVEPOINT comm
4310: 61 6e 64 20 69 6e 73 74 65 61 64 20 6f 66 20 61  and instead of a
4320: 20 5b 42 45 47 49 4e 5d 20 63 6f 6d 6d 61 6e 64   [BEGIN] command
4330: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 74 68 65  .</p>..<p>If the
4340: 20 73 61 76 65 70 6f 69 6e 74 2d 6e 61 6d 65 20   savepoint-name 
4350: 69 6e 20 61 20 52 45 4c 45 41 53 45 20 63 6f 6d  in a RELEASE com
4360: 6d 61 6e 64 20 64 6f 65 73 20 6e 6f 74 20 6d 61  mand does not ma
4370: 74 63 68 20 61 6e 79 0a 73 61 76 65 70 6f 69 6e  tch any.savepoin
4380: 74 20 63 75 72 72 65 6e 74 6c 79 20 69 6e 20 74  t currently in t
4390: 68 65 20 74 72 61 6e 61 63 74 69 6f 6e 20 73 74  he tranaction st
43a0: 61 63 6b 2c 20 74 68 65 6e 20 6e 6f 20 73 61 76  ack, then no sav
43b0: 65 70 6f 69 6e 74 73 20 61 72 65 0a 72 65 6c 65  epoints are.rele
43c0: 61 73 65 64 2c 20 74 68 65 20 64 61 74 61 62 61  ased, the databa
43d0: 73 65 20 69 73 20 75 6e 63 68 61 6e 67 65 64 2c  se is unchanged,
43e0: 20 61 6e 64 20 74 68 65 20 52 45 4c 45 41 53 45   and the RELEASE
43f0: 20 63 6f 6d 6d 61 6e 64 20 72 65 74 75 72 6e 73   command returns
4400: 0a 61 6e 20 65 72 72 6f 72 2e 3c 2f 70 3e 0a 0a  .an error.</p>..
4410: 3c 70 3e 4e 6f 74 65 20 74 68 61 74 20 61 6e 20  <p>Note that an 
4420: 69 6e 6e 65 72 20 74 72 61 6e 73 61 63 74 69 6f  inner transactio
4430: 6e 20 6d 69 67 68 74 20 63 6f 6d 6d 69 74 20 28  n might commit (
4440: 75 73 69 6e 67 20 74 68 65 20 52 45 4c 45 41 53  using the RELEAS
4450: 45 20 63 6f 6d 6d 61 6e 64 29 0a 62 75 74 20 74  E command).but t
4460: 68 65 6e 20 6c 61 74 65 72 20 68 61 76 65 20 69  hen later have i
4470: 74 73 20 77 6f 72 6b 20 75 6e 64 6f 6e 65 20 62  ts work undone b
4480: 79 20 61 20 52 4f 4c 4c 42 41 43 4b 20 69 6e 20  y a ROLLBACK in 
4490: 61 6e 20 6f 75 74 65 72 20 74 72 61 6e 73 61 63  an outer transac
44a0: 74 69 6f 6e 2e 0a 41 20 70 6f 77 65 72 20 66 61  tion..A power fa
44b0: 69 6c 75 72 65 20 6f 72 20 70 72 6f 67 72 61 6d  ilure or program
44c0: 20 63 72 61 73 68 20 6f 72 20 4f 53 20 63 72 61   crash or OS cra
44d0: 73 68 20 77 69 6c 6c 20 63 61 75 73 65 20 74 68  sh will cause th
44e0: 65 20 6f 75 74 65 72 2d 6d 6f 73 74 0a 74 72 61  e outer-most.tra
44f0: 6e 73 61 63 74 69 6f 6e 20 74 6f 20 72 6f 6c 6c  nsaction to roll
4500: 62 61 63 6b 2c 20 75 6e 64 6f 69 6e 67 20 61 6c  back, undoing al
4510: 6c 20 63 68 61 6e 67 65 73 20 74 68 61 74 20 68  l changes that h
4520: 61 76 65 20 6f 63 63 75 72 72 65 64 20 77 69 74  ave occurred wit
4530: 68 69 6e 0a 74 68 61 74 20 6f 75 74 65 72 20 74  hin.that outer t
4540: 72 61 6e 73 61 63 74 69 6f 6e 2c 20 65 76 65 6e  ransaction, even
4550: 20 63 68 61 6e 67 65 73 20 74 68 61 74 20 68 61   changes that ha
4560: 76 65 20 73 75 70 70 6f 73 65 64 6c 79 20 62 65  ve supposedly be
4570: 65 6e 20 22 63 6f 6d 6d 69 74 74 65 64 22 0a 62  en "committed".b
4580: 79 20 74 68 65 20 52 45 4c 45 41 53 45 20 63 6f  y the RELEASE co
4590: 6d 6d 61 6e 64 2e 20 20 43 6f 6e 74 65 6e 74 20  mmand.  Content 
45a0: 69 73 20 6e 6f 74 20 61 63 74 75 61 6c 6c 79 20  is not actually 
45b0: 63 6f 6d 6d 69 74 74 65 64 20 6f 6e 20 74 68 65  committed on the
45c0: 20 64 69 73 6b 20 0a 75 6e 74 69 6c 20 74 68 65   disk .until the
45d0: 20 6f 75 74 65 72 6d 6f 73 74 20 74 72 61 6e 73   outermost trans
45e0: 61 63 74 69 6f 6e 20 63 6f 6d 6d 69 74 73 2e 3c  action commits.<
45f0: 2f 70 3e 0a 0a 3c 70 3e 54 68 65 72 65 20 61 72  /p>..<p>There ar
4600: 65 20 73 65 76 65 72 61 6c 20 77 61 79 73 20 6f  e several ways o
4610: 66 20 74 68 69 6e 6b 69 6e 67 20 61 62 6f 75 74  f thinking about
4620: 20 74 68 65 20 52 45 4c 45 41 53 45 20 63 6f 6d   the RELEASE com
4630: 6d 61 6e 64 3a 3c 2f 70 3e 0a 0a 3c 75 6c 3e 0a  mand:</p>..<ul>.
4640: 3c 6c 69 3e 3c 70 3e 0a 53 6f 6d 65 20 70 65 6f  <li><p>.Some peo
4650: 70 6c 65 20 76 69 65 77 20 52 45 4c 45 41 53 45  ple view RELEASE
4660: 20 61 73 20 74 68 65 20 65 71 75 69 76 61 6c 65   as the equivale
4670: 6e 74 20 6f 66 20 43 4f 4d 4d 49 54 20 66 6f 72  nt of COMMIT for
4680: 20 61 20 53 41 56 45 50 4f 49 4e 54 2e 0a 54 68   a SAVEPOINT..Th
4690: 69 73 20 69 73 20 61 6e 20 61 63 63 65 70 74 61  is is an accepta
46a0: 62 6c 65 20 70 6f 69 6e 74 20 6f 66 20 76 69 65  ble point of vie
46b0: 77 20 61 73 20 6c 6f 6e 67 20 61 73 20 6f 6e 65  w as long as one
46c0: 20 72 65 6d 65 6d 62 65 72 73 20 74 68 61 74 20   remembers that 
46d0: 74 68 65 0a 63 68 61 6e 67 65 73 20 63 6f 6d 6d  the.changes comm
46e0: 69 74 74 65 64 20 62 79 20 61 6e 20 69 6e 6e 65  itted by an inne
46f0: 72 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 6d 69  r transaction mi
4700: 67 68 74 20 6c 61 74 65 72 20 62 65 20 75 6e 64  ght later be und
4710: 6f 6e 65 20 62 79 20 61 0a 72 6f 6c 6c 62 61 63  one by a.rollbac
4720: 6b 20 69 6e 20 61 6e 20 6f 75 74 65 72 20 74 72  k in an outer tr
4730: 61 6e 73 61 63 74 69 6f 6e 2e 3c 2f 70 3e 3c 2f  ansaction.</p></
4740: 6c 69 3e 0a 0a 3c 6c 69 3e 3c 70 3e 0a 41 6e 6f  li>..<li><p>.Ano
4750: 74 68 65 72 20 76 69 65 77 20 6f 66 20 52 45 4c  ther view of REL
4760: 45 41 53 45 20 69 73 20 74 68 61 74 20 69 74 20  EASE is that it 
4770: 6d 65 72 67 65 73 20 61 20 6e 61 6d 65 64 20 74  merges a named t
4780: 72 61 6e 73 61 63 74 69 6f 6e 20 69 6e 74 6f 20  ransaction into 
4790: 69 74 73 0a 70 61 72 65 6e 74 20 74 72 61 6e 73  its.parent trans
47a0: 61 63 74 69 6f 6e 2c 20 73 6f 20 74 68 61 74 20  action, so that 
47b0: 74 68 65 20 6e 61 6d 65 64 20 74 72 61 6e 73 61  the named transa
47c0: 63 74 69 6f 6e 20 61 6e 64 20 69 74 73 20 70 61  ction and its pa
47d0: 72 65 6e 74 20 62 65 63 6f 6d 65 0a 74 68 65 20  rent become.the 
47e0: 73 61 6d 65 20 74 72 61 6e 73 61 63 74 69 6f 6e  same transaction
47f0: 2e 20 20 41 66 74 65 72 20 52 45 4c 45 41 53 45  .  After RELEASE
4800: 2c 20 74 68 65 20 6e 61 6d 65 64 20 74 72 61 6e  , the named tran
4810: 73 61 63 74 69 6f 6e 20 61 6e 64 20 69 74 73 20  saction and its 
4820: 70 61 72 65 6e 74 0a 77 69 6c 6c 20 63 6f 6d 6d  parent.will comm
4830: 69 74 20 6f 72 20 72 6f 6c 6c 62 61 63 6b 20 74  it or rollback t
4840: 6f 67 65 74 68 65 72 2c 20 77 68 61 74 65 76 65  ogether, whateve
4850: 72 20 74 68 65 69 72 20 66 61 74 65 20 6d 61 79  r their fate may
4860: 20 62 65 2e 0a 3c 2f 70 3e 3c 2f 6c 69 3e 0a 0a   be..</p></li>..
4870: 3c 6c 69 3e 3c 70 3e 0a 4f 6e 65 20 63 61 6e 20  <li><p>.One can 
4880: 61 6c 73 6f 20 74 68 69 6e 6b 20 6f 66 20 73 61  also think of sa
4890: 76 65 70 6f 69 6e 74 73 20 61 73 0a 22 6d 61 72  vepoints as."mar
48a0: 6b 73 22 20 69 6e 20 74 68 65 20 74 72 61 6e 73  ks" in the trans
48b0: 61 63 74 69 6f 6e 20 74 69 6d 65 6c 69 6e 65 2e  action timeline.
48c0: 20 20 49 6e 20 74 68 69 73 20 76 69 65 77 2c 20    In this view, 
48d0: 74 68 65 20 53 41 56 45 50 4f 49 4e 54 20 63 6f  the SAVEPOINT co
48e0: 6d 6d 61 6e 64 0a 63 72 65 61 74 65 73 20 61 20  mmand.creates a 
48f0: 6e 65 77 20 6d 61 72 6b 2c 20 74 68 65 20 52 4f  new mark, the RO
4900: 4c 4c 42 41 43 4b 20 54 4f 20 63 6f 6d 6d 61 6e  LLBACK TO comman
4910: 64 20 72 65 77 69 6e 64 73 20 74 68 65 20 74 69  d rewinds the ti
4920: 6d 65 6c 69 6e 65 20 62 61 63 6b 0a 74 6f 20 61  meline back.to a
4930: 20 70 6f 69 6e 74 20 6a 75 73 74 20 61 66 74 65   point just afte
4940: 72 20 74 68 65 20 6e 61 6d 65 64 20 6d 61 72 6b  r the named mark
4950: 2c 20 61 6e 64 20 74 68 65 20 52 45 4c 45 41 53  , and the RELEAS
4960: 45 20 63 6f 6d 6d 61 6e 64 0a 65 72 61 73 65 73  E command.erases
4970: 20 6d 61 72 6b 73 20 66 72 6f 6d 20 74 68 65 20   marks from the 
4980: 74 69 6d 65 6c 69 6e 65 20 77 69 74 68 6f 75 74  timeline without
4990: 20 61 63 74 75 61 6c 6c 79 20 6d 61 6b 69 6e 67   actually making
49a0: 20 61 6e 79 0a 63 68 61 6e 67 65 73 20 74 6f 20   any.changes to 
49b0: 74 68 65 20 64 61 74 61 62 61 73 65 2e 0a 3c 2f  the database..</
49c0: 70 3e 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e 0a 0a 0a  p></li>.</ul>...
49d0: 0a 3c 68 33 3e 54 72 61 6e 73 61 63 74 69 6f 6e  .<h3>Transaction
49e0: 20 4e 65 73 74 69 6e 67 20 52 75 6c 65 73 3c 2f   Nesting Rules</
49f0: 68 33 3e 0a 0a 3c 70 3e 54 72 61 6e 73 61 63 74  h3>..<p>Transact
4a00: 69 6f 6e 73 20 73 74 61 63 6b 2e 20 20 54 68 65  ions stack.  The
4a10: 20 6c 61 73 74 20 74 72 61 6e 73 61 63 74 69 6f   last transactio
4a20: 6e 20 73 74 61 72 74 65 64 20 77 69 6c 6c 20 62  n started will b
4a30: 65 20 74 68 65 20 66 69 72 73 74 0a 74 72 61 6e  e the first.tran
4a40: 73 61 63 74 69 6f 6e 20 63 6f 6d 6d 69 74 74 65  saction committe
4a50: 64 20 6f 72 20 72 6f 6c 6c 65 64 20 62 61 63 6b  d or rolled back
4a60: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 5b 42  .</p>..<p>The [B
4a70: 45 47 49 4e 5d 20 63 6f 6d 6d 61 6e 64 20 6f 6e  EGIN] command on
4a80: 6c 79 20 77 6f 72 6b 73 20 69 66 20 74 68 65 20  ly works if the 
4a90: 74 72 61 6e 73 61 63 74 69 6f 6e 20 73 74 61 63  transaction stac
4aa0: 6b 20 69 73 20 65 6d 70 74 79 2c 20 6f 72 0a 69  k is empty, or.i
4ab0: 6e 20 6f 74 68 65 72 20 77 6f 72 64 73 20 69 66  n other words if
4ac0: 20 74 68 65 72 65 20 61 72 65 20 6e 6f 20 70 65   there are no pe
4ad0: 6e 64 69 6e 67 20 74 72 61 6e 73 61 63 74 69 6f  nding transactio
4ae0: 6e 73 2e 20 20 49 66 20 74 68 65 20 74 72 61 6e  ns.  If the tran
4af0: 73 61 63 74 69 6f 6e 0a 73 74 61 63 6b 20 69 73  saction.stack is
4b00: 20 6e 6f 74 20 65 6d 70 74 79 20 77 68 65 6e 20   not empty when 
4b10: 74 68 65 20 5b 42 45 47 49 4e 5d 20 63 6f 6d 6d  the [BEGIN] comm
4b20: 61 6e 64 20 69 73 20 69 6e 76 6f 6b 65 64 2c 20  and is invoked, 
4b30: 74 68 65 6e 20 74 68 65 20 63 6f 6d 6d 61 6e 64  then the command
4b40: 0a 66 61 69 6c 73 20 77 69 74 68 20 61 6e 20 65  .fails with an e
4b50: 72 72 6f 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68  rror.</p>..<p>Th
4b60: 65 20 5b 43 4f 4d 4d 49 54 5d 20 63 6f 6d 6d 61  e [COMMIT] comma
4b70: 6e 64 20 63 6f 6d 6d 69 74 73 20 61 6c 6c 20 6f  nd commits all o
4b80: 75 74 73 74 61 6e 64 69 6e 67 20 74 72 61 6e 73  utstanding trans
4b90: 61 63 74 69 6f 6e 73 20 61 6e 64 20 6c 65 61 76  actions and leav
4ba0: 65 73 0a 74 68 65 20 74 72 61 6e 73 61 63 74 69  es.the transacti
4bb0: 6f 6e 20 73 74 61 63 6b 20 65 6d 70 74 79 2e 3c  on stack empty.<
4bc0: 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 52 45 4c 45  /p>..<p>The RELE
4bd0: 41 53 45 20 63 6f 6d 6d 61 6e 64 20 73 74 61 72  ASE command star
4be0: 74 73 20 77 69 74 68 20 74 68 65 20 6d 6f 73 74  ts with the most
4bf0: 20 72 65 63 65 6e 74 20 61 64 64 69 74 69 6f 6e   recent addition
4c00: 20 74 6f 20 74 68 65 0a 74 72 61 6e 73 61 63 74   to the.transact
4c10: 69 6f 6e 20 73 74 61 63 6b 20 61 6e 64 20 72 65  ion stack and re
4c20: 6c 65 61 73 65 73 20 73 61 76 65 70 6f 69 6e 74  leases savepoint
4c30: 73 20 62 61 63 6b 77 61 72 64 73 20 0a 69 6e 20  s backwards .in 
4c40: 74 69 6d 65 20 75 6e 74 69 6c 20 69 74 20 72 65  time until it re
4c50: 6c 65 61 73 65 73 20 61 20 73 61 76 65 70 6f 69  leases a savepoi
4c60: 6e 74 20 6d 61 72 6b 20 77 69 74 68 20 61 20 6d  nt mark with a m
4c70: 61 74 63 68 69 6e 67 20 73 61 76 65 70 6f 69 6e  atching savepoin
4c80: 74 2d 6e 61 6d 65 2e 0a 50 72 69 6f 72 20 73 61  t-name..Prior sa
4c90: 76 65 70 6f 69 6e 74 73 2c 20 65 76 65 6e 20 73  vepoints, even s
4ca0: 61 76 65 70 6f 69 6e 74 73 20 77 69 74 68 20 6d  avepoints with m
4cb0: 61 74 63 68 69 6e 67 20 73 61 76 65 70 6f 69 6e  atching savepoin
4cc0: 74 2d 6e 61 6d 65 73 2c 20 61 72 65 0a 75 6e 63  t-names, are.unc
4cd0: 68 61 6e 67 65 64 2e 0a 49 66 20 74 68 65 20 52  hanged..If the R
4ce0: 45 4c 45 41 53 45 20 63 6f 6d 6d 61 6e 64 20 63  ELEASE command c
4cf0: 61 75 73 65 73 20 74 68 65 0a 74 72 61 6e 73 61  auses the.transa
4d00: 63 74 69 6f 6e 20 73 74 61 63 6b 20 74 6f 20 62  ction stack to b
4d10: 65 63 6f 6d 65 20 65 6d 70 74 79 20 28 69 66 20  ecome empty (if 
4d20: 74 68 65 20 52 45 4c 45 41 53 45 20 63 6f 6d 6d  the RELEASE comm
4d30: 61 6e 64 20 72 65 6c 65 61 73 65 73 20 74 68 65  and releases the
4d40: 0a 6f 75 74 65 72 6d 6f 73 74 20 74 72 61 6e 73  .outermost trans
4d50: 61 63 74 69 6f 6e 20 66 72 6f 6d 20 74 68 65 20  action from the 
4d60: 73 74 61 63 6b 29 20 74 68 65 6e 20 74 68 65 20  stack) then the 
4d70: 74 72 61 6e 73 61 63 74 69 6f 6e 20 63 6f 6d 6d  transaction comm
4d80: 69 74 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  its.</p>..<p>The
4d90: 20 5b 52 4f 4c 4c 42 41 43 4b 5d 20 63 6f 6d 6d   [ROLLBACK] comm
4da0: 61 6e 64 20 77 69 74 68 6f 75 74 20 61 20 54 4f  and without a TO
4db0: 20 63 6c 61 75 73 65 20 72 6f 6c 6c 73 20 62 61   clause rolls ba
4dc0: 63 6b 73 20 61 6c 6c 20 74 72 61 6e 73 61 63 74  cks all transact
4dd0: 69 6f 6e 73 0a 61 6e 64 20 6c 65 61 76 65 73 20  ions.and leaves 
4de0: 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  the transaction 
4df0: 73 74 61 63 6b 20 65 6d 70 74 79 2e 3c 2f 70 3e  stack empty.</p>
4e00: 0a 0a 3c 70 3e 54 68 65 20 52 4f 4c 4c 42 41 43  ..<p>The ROLLBAC
4e10: 4b 20 63 6f 6d 6d 61 6e 64 20 77 69 74 68 20 61  K command with a
4e20: 20 54 4f 20 63 6c 61 75 73 65 20 72 6f 6c 6c 73   TO clause rolls
4e30: 20 62 61 63 6b 20 74 72 61 6e 73 61 63 74 69 6f   back transactio
4e40: 6e 73 20 67 6f 69 6e 67 0a 62 61 63 6b 77 61 72  ns going.backwar
4e50: 64 73 20 69 6e 20 74 69 6d 65 20 62 61 63 6b 20  ds in time back 
4e60: 74 6f 20 74 68 65 20 6d 6f 73 74 20 72 65 63 65  to the most rece
4e70: 6e 74 20 53 41 56 45 50 4f 49 4e 54 20 77 69 74  nt SAVEPOINT wit
4e80: 68 20 61 20 6d 61 74 63 68 69 6e 67 20 6e 61 6d  h a matching nam
4e90: 65 2e 0a 54 68 65 20 53 41 56 45 50 4f 49 4e 54  e..The SAVEPOINT
4ea0: 20 77 69 74 68 20 74 68 65 20 6d 61 74 63 68 69   with the matchi
4eb0: 6e 67 20 6e 61 6d 65 20 72 65 6d 61 69 6e 73 20  ng name remains 
4ec0: 6f 6e 20 74 68 65 20 74 72 61 6e 73 61 63 74 69  on the transacti
4ed0: 6f 6e 20 73 74 61 63 6b 2c 0a 62 75 74 20 61 6c  on stack,.but al
4ee0: 6c 20 64 61 74 61 62 61 73 65 20 63 68 61 6e 67  l database chang
4ef0: 65 73 20 74 68 61 74 20 6f 63 63 75 72 72 65 64  es that occurred
4f00: 20 61 66 74 65 72 20 74 68 61 74 20 53 41 56 45   after that SAVE
4f10: 50 4f 49 4e 54 20 77 61 73 20 63 72 65 61 74 65  POINT was create
4f20: 64 0a 61 72 65 20 72 6f 6c 6c 65 64 20 62 61 63  d.are rolled bac
4f30: 6b 2e 20 20 49 66 20 74 68 65 20 73 61 76 65 70  k.  If the savep
4f40: 6f 69 6e 74 2d 6e 61 6d 65 20 69 6e 20 61 20 52  oint-name in a R
4f50: 4f 4c 4c 42 41 43 4b 20 54 4f 20 63 6f 6d 6d 61  OLLBACK TO comma
4f60: 6e 64 20 64 6f 65 73 20 6e 6f 74 0a 6d 61 74 63  nd does not.matc
4f70: 68 20 61 6e 79 20 53 41 56 45 50 4f 49 4e 54 20  h any SAVEPOINT 
4f80: 6f 6e 20 74 68 65 20 73 74 61 63 6b 2c 20 74 68  on the stack, th
4f90: 65 6e 20 74 68 65 20 52 4f 4c 4c 42 41 43 4b 20  en the ROLLBACK 
4fa0: 63 6f 6d 6d 61 6e 64 20 66 61 69 6c 73 20 77 69  command fails wi
4fb0: 74 68 20 61 6e 0a 65 72 72 6f 72 20 61 6e 64 20  th an.error and 
4fc0: 6c 65 61 76 65 73 20 74 68 65 20 73 74 61 74 65  leaves the state
4fd0: 20 6f 66 20 74 68 65 20 64 61 74 61 62 61 73 65   of the database
4fe0: 20 75 6e 63 68 61 6e 67 65 64 2e 3c 2f 70 3e 0a   unchanged.</p>.
4ff0: 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23  .<tcl>.#########
5000: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5010: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5020: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5030: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5040: 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 63  ######.Section c
5050: 6f 6d 6d 65 6e 74 20 63 6f 6d 6d 65 6e 74 20 7b  omment comment {
5060: 63 6f 6d 6d 65 6e 74 20 63 6f 6d 6d 65 6e 74 73  comment comments
5070: 7d 0a 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d  }..BubbleDiagram
5080: 20 63 6f 6d 6d 65 6e 74 2d 73 79 6e 74 61 78 0a   comment-syntax.
5090: 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 43 6f 6d 6d 65  </tcl>..<p>Comme
50a0: 6e 74 73 20 61 72 65 6e 27 74 20 53 51 4c 20 63  nts aren't SQL c
50b0: 6f 6d 6d 61 6e 64 73 2c 20 62 75 74 20 63 61 6e  ommands, but can
50c0: 20 6f 63 63 75 72 20 77 69 74 68 69 6e 20 74 68   occur within th
50d0: 65 20 74 65 78 74 20 6f 66 0a 53 51 4c 20 71 75  e text of.SQL qu
50e0: 65 72 69 65 73 20 70 61 73 73 65 64 20 74 6f 20  eries passed to 
50f0: 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65  [sqlite3_prepare
5100: 5f 76 32 28 29 5d 20 61 6e 64 20 72 65 6c 61 74  _v2()] and relat
5110: 65 64 20 69 6e 74 65 72 66 61 63 65 73 2e 2e 0a  ed interfaces...
5120: 43 6f 6d 6d 65 6e 74 73 20 61 72 65 20 0a 74 72  Comments are .tr
5130: 65 61 74 65 64 20 61 73 20 77 68 69 74 65 73 70  eated as whitesp
5140: 61 63 65 20 62 79 20 74 68 65 20 70 61 72 73 65  ace by the parse
5150: 72 2e 20 20 54 68 65 79 20 63 61 6e 20 62 65 67  r.  They can beg
5160: 69 6e 20 61 6e 79 77 68 65 72 65 20 77 68 69 74  in anywhere whit
5170: 65 73 70 61 63 65 20 0a 63 61 6e 20 62 65 20 66  espace .can be f
5180: 6f 75 6e 64 2c 20 69 6e 63 6c 75 64 69 6e 67 20  ound, including 
5190: 69 6e 73 69 64 65 20 65 78 70 72 65 73 73 69 6f  inside expressio
51a0: 6e 73 20 74 68 61 74 20 73 70 61 6e 20 6d 75 6c  ns that span mul
51b0: 74 69 70 6c 65 20 6c 69 6e 65 73 2e 0a 3c 2f 70  tiple lines..</p
51c0: 3e 0a 0a 3c 70 3e 20 53 51 4c 20 63 6f 6d 6d 65  >..<p> SQL comme
51d0: 6e 74 73 20 62 65 67 69 6e 20 77 69 74 68 20 74  nts begin with t
51e0: 77 6f 20 63 6f 6e 73 65 63 75 74 69 76 65 20 22  wo consecutive "
51f0: 2d 22 20 63 68 61 72 61 63 74 65 72 73 20 28 41  -" characters (A
5200: 53 43 49 49 20 30 78 32 64 29 0a 61 6e 64 20 65  SCII 0x2d).and e
5210: 78 74 65 6e 64 20 75 70 20 74 6f 20 61 6e 64 20  xtend up to and 
5220: 69 6e 63 6c 75 64 69 6e 67 20 74 68 65 20 6e 65  including the ne
5230: 78 74 20 6e 65 77 6c 69 6e 65 20 63 68 61 72 61  xt newline chara
5240: 63 74 65 72 20 28 41 53 43 49 49 20 30 78 30 61  cter (ASCII 0x0a
5250: 29 0a 6f 72 20 75 6e 74 69 6c 20 74 68 65 20 65  ).or until the e
5260: 6e 64 20 6f 66 20 69 6e 70 75 74 2c 20 77 68 69  nd of input, whi
5270: 63 68 65 76 65 72 20 63 6f 6d 65 73 20 66 69 72  chever comes fir
5280: 73 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 20 43 20 63  st.</p>..<p> C c
5290: 6f 6d 6d 65 6e 74 73 20 63 61 6e 20 73 70 61 6e  omments can span
52a0: 20 61 6e 79 20 6e 75 6d 62 65 72 20 6f 66 20 6c   any number of l
52b0: 69 6e 65 73 2e 20 20 43 2d 73 74 79 6c 65 20 63  ines.  C-style c
52c0: 6f 6d 6d 65 6e 74 73 20 62 65 67 69 6e 0a 77 69  omments begin.wi
52d0: 74 68 20 22 2f 2a 22 20 61 6e 64 20 65 78 74 65  th "/*" and exte
52e0: 6e 64 20 75 70 20 74 6f 20 61 6e 64 20 69 6e 63  nd up to and inc
52f0: 6c 75 64 69 6e 67 20 74 68 65 20 6e 65 78 74 20  luding the next 
5300: 22 2a 2f 22 20 63 68 61 72 61 63 74 65 72 20 70  "*/" character p
5310: 61 69 72 0a 6f 72 20 75 6e 74 69 6c 20 74 68 65  air.or until the
5320: 20 65 6e 64 20 6f 66 20 69 6e 70 75 74 2c 20 77   end of input, w
5330: 68 69 63 68 65 76 65 72 20 63 6f 6d 65 73 20 66  hichever comes f
5340: 69 72 73 74 2e 20 20 43 2d 73 74 79 6c 65 20 63  irst.  C-style c
5350: 6f 6d 6d 65 6e 74 73 0a 63 61 6e 20 73 70 61 6e  omments.can span
5360: 20 6d 75 6c 74 69 70 6c 65 20 6c 69 6e 65 73 2e   multiple lines.
5370: 20 3c 2f 70 3e 0a 0a 3c 70 3e 20 43 6f 6d 6d 65   </p>..<p> Comme
5380: 6e 74 73 20 63 61 6e 20 61 70 70 65 61 72 20 61  nts can appear a
5390: 6e 79 77 68 65 72 65 20 77 68 69 74 65 73 70 61  nywhere whitespa
53a0: 63 65 20 63 61 6e 20 6f 63 63 75 72 2c 0a 69 6e  ce can occur,.in
53b0: 63 6c 75 64 69 6e 67 20 69 6e 73 69 64 65 20 65  cluding inside e
53c0: 78 70 72 65 73 73 69 6f 6e 73 20 61 6e 64 20 69  xpressions and i
53d0: 6e 20 74 68 65 20 6d 69 64 64 6c 65 20 6f 66 20  n the middle of 
53e0: 6f 74 68 65 72 20 53 51 4c 20 73 74 61 74 65 6d  other SQL statem
53f0: 65 6e 74 73 2e 0a 43 6f 6d 6d 65 6e 74 73 20 64  ents..Comments d
5400: 6f 20 6e 6f 74 20 6e 65 73 74 2e 0a 3c 2f 70 3e  o not nest..</p>
5410: 0a 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23  ...<tcl>.#######
5420: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5430: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5440: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5450: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5460: 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20  #######.Section 
5470: 7b 43 52 45 41 54 45 20 49 4e 44 45 58 7d 20 63  {CREATE INDEX} c
5480: 72 65 61 74 65 69 6e 64 65 78 20 7b 7b 43 52 45  reateindex {{CRE
5490: 41 54 45 20 49 4e 44 45 58 7d 7d 0a 0a 42 75 62  ATE INDEX}}..Bub
54a0: 62 6c 65 44 69 61 67 72 61 6d 20 63 72 65 61 74  bleDiagram creat
54b0: 65 2d 69 6e 64 65 78 2d 73 74 6d 74 20 31 0a 42  e-index-stmt 1.B
54c0: 75 62 62 6c 65 44 69 61 67 72 61 6d 20 69 6e 64  ubbleDiagram ind
54d0: 65 78 65 64 2d 63 6f 6c 75 6d 6e 0a 3c 2f 74 63  exed-column.</tc
54e0: 6c 3e 0a 0a 3c 70 3e 54 68 65 20 43 52 45 41 54  l>..<p>The CREAT
54f0: 45 20 49 4e 44 45 58 20 63 6f 6d 6d 61 6e 64 20  E INDEX command 
5500: 63 6f 6e 73 69 73 74 73 20 6f 66 20 74 68 65 20  consists of the 
5510: 6b 65 79 77 6f 72 64 73 20 22 43 52 45 41 54 45  keywords "CREATE
5520: 20 49 4e 44 45 58 22 20 66 6f 6c 6c 6f 77 65 64   INDEX" followed
5530: 0a 62 79 20 74 68 65 20 6e 61 6d 65 20 6f 66 20  .by the name of 
5540: 74 68 65 20 6e 65 77 20 69 6e 64 65 78 2c 20 74  the new index, t
5550: 68 65 20 6b 65 79 77 6f 72 64 20 22 4f 4e 22 2c  he keyword "ON",
5560: 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 61 20 70   the name of a p
5570: 72 65 76 69 6f 75 73 6c 79 0a 63 72 65 61 74 65  reviously.create
5580: 64 20 74 61 62 6c 65 20 74 68 61 74 20 69 73 20  d table that is 
5590: 74 6f 20 62 65 20 69 6e 64 65 78 65 64 2c 20 61  to be indexed, a
55a0: 6e 64 20 61 20 70 61 72 65 6e 74 68 65 73 69 7a  nd a parenthesiz
55b0: 65 64 20 6c 69 73 74 20 6f 66 20 6e 61 6d 65 73  ed list of names
55c0: 20 6f 66 0a 63 6f 6c 75 6d 6e 73 20 69 6e 20 74   of.columns in t
55d0: 68 65 20 74 61 62 6c 65 20 74 68 61 74 20 61 72  he table that ar
55e0: 65 20 75 73 65 64 20 66 6f 72 20 74 68 65 20 69  e used for the i
55f0: 6e 64 65 78 20 6b 65 79 2e 3c 2f 70 3e 0a 0a 3c  ndex key.</p>..<
5600: 70 3e 45 61 63 68 20 63 6f 6c 75 6d 6e 20 6e 61  p>Each column na
5610: 6d 65 20 63 61 6e 20 62 65 20 66 6f 6c 6c 6f 77  me can be follow
5620: 65 64 20 62 79 20 6f 6e 65 20 6f 66 20 74 68 65  ed by one of the
5630: 20 22 41 53 43 22 20 6f 72 20 22 44 45 53 43 22   "ASC" or "DESC"
5640: 20 6b 65 79 77 6f 72 64 73 0a 74 6f 20 69 6e 64   keywords.to ind
5650: 69 63 61 74 65 20 73 6f 72 74 20 6f 72 64 65 72  icate sort order
5660: 2e 20 20 54 68 65 20 73 6f 72 74 20 6f 72 64 65  .  The sort orde
5670: 72 20 6d 61 79 20 6f 72 20 6d 61 79 20 6e 6f 74  r may or may not
5680: 20 62 65 20 69 67 6e 6f 72 65 64 20 64 65 70 65   be ignored depe
5690: 6e 64 69 6e 67 0a 6f 6e 20 74 68 65 20 64 61 74  nding.on the dat
56a0: 61 62 61 73 65 20 66 69 6c 65 20 66 6f 72 6d 61  abase file forma
56b0: 74 2e 20 20 54 68 65 20 22 6c 65 67 61 63 79 22  t.  The "legacy"
56c0: 20 66 69 6c 65 20 66 6f 72 6d 61 74 20 69 67 6e   file format ign
56d0: 6f 72 65 73 20 69 6e 64 65 78 0a 73 6f 72 74 20  ores index.sort 
56e0: 6f 72 64 65 72 2e 20 20 54 68 65 20 64 65 73 63  order.  The desc
56f0: 65 6e 64 69 6e 67 20 69 6e 64 65 78 20 66 69 6c  ending index fil
5700: 65 20 66 6f 72 6d 61 74 20 74 61 6b 65 73 20 69  e format takes i
5710: 6e 64 65 78 20 73 6f 72 74 20 6f 72 64 65 72 0a  ndex sort order.
5720: 69 6e 74 6f 20 61 63 63 6f 75 6e 74 2e 20 20 4f  into account.  O
5730: 6e 6c 79 20 63 6f 70 69 65 73 20 6f 66 20 53 51  nly copies of SQ
5740: 4c 69 74 65 20 6e 65 77 65 72 20 74 68 61 6e 20  Lite newer than 
5750: 5b 76 65 72 73 69 6f 6e 20 33 2e 33 2e 30 5d 20  [version 3.3.0] 
5760: 0a 28 72 65 6c 65 61 73 65 64 20 6f 6e 20 32 30  .(released on 20
5770: 30 36 2d 30 31 2d 31 30 29 20 61 72 65 20 61 62  06-01-10) are ab
5780: 6c 65 20 74 6f 20 75 6e 64 65 72 73 74 61 6e 64  le to understand
5790: 20 74 68 65 20 6e 65 77 65 72 20 64 65 73 63 65   the newer desce
57a0: 6e 64 69 6e 67 0a 69 6e 64 65 78 20 66 69 6c 65  nding.index file
57b0: 20 66 6f 72 6d 61 74 20 61 6e 64 20 73 6f 20 66   format and so f
57c0: 6f 72 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79  or compatibility
57d0: 20 77 69 74 68 20 6f 6c 64 65 72 20 76 65 72 73   with older vers
57e0: 69 6f 6e 73 20 6f 66 0a 53 51 4c 69 74 65 2c 20  ions of.SQLite, 
57f0: 74 68 65 20 6c 65 67 61 63 79 20 66 69 6c 65 20  the legacy file 
5800: 66 6f 72 6d 61 74 20 69 73 20 67 65 6e 65 72 61  format is genera
5810: 74 65 64 20 62 79 20 64 65 66 61 75 6c 74 2e 20  ted by default. 
5820: 20 55 73 65 20 74 68 65 0a 5b 6c 65 67 61 63 79   Use the.[legacy
5830: 5f 66 69 6c 65 5f 66 6f 72 6d 61 74 5d 20 70 72  _file_format] pr
5840: 61 67 6d 61 20 74 6f 20 6d 6f 64 69 66 79 20 74  agma to modify t
5850: 68 69 73 20 62 65 68 61 76 69 6f 72 20 61 6e 64  his behavior and
5860: 20 67 65 6e 65 72 61 74 65 0a 64 61 74 61 62 61   generate.databa
5870: 73 65 73 20 74 68 61 74 20 75 73 65 20 74 68 65  ses that use the
5880: 20 6e 65 77 65 72 20 66 69 6c 65 20 66 6f 72 6d   newer file form
5890: 61 74 2e 20 20 46 75 74 75 72 65 20 76 65 72 73  at.  Future vers
58a0: 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 0a 6d  ions of SQLite.m
58b0: 61 79 20 62 65 67 69 6e 20 74 6f 20 67 65 6e 65  ay begin to gene
58c0: 72 61 74 65 20 74 68 65 20 6e 65 77 65 72 20 66  rate the newer f
58d0: 69 6c 65 20 66 6f 72 6d 61 74 20 62 79 20 64 65  ile format by de
58e0: 66 61 75 6c 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54  fault.</p>..<p>T
58f0: 68 65 20 43 4f 4c 4c 41 54 45 20 63 6c 61 75 73  he COLLATE claus
5900: 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 65 61 63 68  e following each
5910: 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 20 64 65 66   column name def
5920: 69 6e 65 73 20 61 20 63 6f 6c 6c 61 74 69 6e 67  ines a collating
5930: 0a 73 65 71 75 65 6e 63 65 20 75 73 65 64 20 66  .sequence used f
5940: 6f 72 20 74 65 78 74 20 65 6e 74 72 69 65 73 20  or text entries 
5950: 69 6e 20 74 68 61 74 20 63 6f 6c 75 6d 6e 2e 20  in that column. 
5960: 20 54 68 65 20 64 65 66 61 75 6c 74 20 63 6f 6c   The default col
5970: 6c 61 74 69 6e 67 0a 73 65 71 75 65 6e 63 65 20  lating.sequence 
5980: 69 73 20 74 68 65 20 63 6f 6c 6c 61 74 69 6e 67  is the collating
5990: 20 73 65 71 75 65 6e 63 65 20 64 65 66 69 6e 65   sequence define
59a0: 64 20 66 6f 72 20 74 68 61 74 20 63 6f 6c 75 6d  d for that colum
59b0: 6e 20 69 6e 20 74 68 65 0a 5b 43 52 45 41 54 45  n in the.[CREATE
59c0: 20 54 41 42 4c 45 5d 20 73 74 61 74 65 6d 65 6e   TABLE] statemen
59d0: 74 2e 20 20 4f 72 20 69 66 20 6e 6f 20 63 6f 6c  t.  Or if no col
59e0: 6c 61 74 69 6e 67 20 73 65 71 75 65 6e 63 65 20  lating sequence 
59f0: 69 73 20 6f 74 68 65 72 77 69 73 65 20 64 65 66  is otherwise def
5a00: 69 6e 65 64 2c 0a 74 68 65 20 62 75 69 6c 74 2d  ined,.the built-
5a10: 69 6e 20 42 49 4e 41 52 59 20 63 6f 6c 6c 61 74  in BINARY collat
5a20: 69 6e 67 20 73 65 71 75 65 6e 63 65 20 69 73 20  ing sequence is 
5a30: 75 73 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68  used.</p>..<p>Th
5a40: 65 72 65 20 61 72 65 20 6e 6f 20 61 72 62 69 74  ere are no arbit
5a50: 72 61 72 79 20 6c 69 6d 69 74 73 20 6f 6e 20 74  rary limits on t
5a60: 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 69 6e 64  he number of ind
5a70: 69 63 65 73 20 74 68 61 74 20 63 61 6e 20 62 65  ices that can be
5a80: 0a 61 74 74 61 63 68 65 64 20 74 6f 20 61 20 73  .attached to a s
5a90: 69 6e 67 6c 65 20 74 61 62 6c 65 2e 20 20 54 68  ingle table.  Th
5aa0: 65 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75  e number of colu
5ab0: 6d 6e 73 20 69 6e 20 61 6e 20 69 6e 64 65 78 20  mns in an index 
5ac0: 69 73 20 0a 6c 69 6d 69 74 65 64 20 74 6f 20 5b  is .limited to [
5ad0: 53 51 4c 49 54 45 5f 4d 41 58 5f 43 4f 4c 55 4d  SQLITE_MAX_COLUM
5ae0: 4e 5d 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 74  N].</p>..<p>If t
5af0: 68 65 20 55 4e 49 51 55 45 20 6b 65 79 77 6f 72  he UNIQUE keywor
5b00: 64 20 61 70 70 65 61 72 73 20 62 65 74 77 65 65  d appears betwee
5b10: 6e 20 43 52 45 41 54 45 20 61 6e 64 20 49 4e 44  n CREATE and IND
5b20: 45 58 20 74 68 65 6e 20 64 75 70 6c 69 63 61 74  EX then duplicat
5b30: 65 0a 69 6e 64 65 78 20 65 6e 74 72 69 65 73 20  e.index entries 
5b40: 61 72 65 20 6e 6f 74 20 61 6c 6c 6f 77 65 64 2e  are not allowed.
5b50: 20 20 41 6e 79 20 61 74 74 65 6d 70 74 20 74 6f    Any attempt to
5b60: 20 69 6e 73 65 72 74 20 61 20 64 75 70 6c 69 63   insert a duplic
5b70: 61 74 65 20 65 6e 74 72 79 0a 77 69 6c 6c 20 72  ate entry.will r
5b80: 65 73 75 6c 74 20 69 6e 20 61 6e 20 65 72 72 6f  esult in an erro
5b90: 72 2e 20 20 46 6f 72 20 74 68 65 20 70 75 72 70  r.  For the purp
5ba0: 6f 73 65 73 20 6f 66 20 75 6e 69 71 75 65 20 69  oses of unique i
5bb0: 6e 64 69 63 65 73 2c 20 61 6c 6c 20 4e 55 4c 4c  ndices, all NULL
5bc0: 20 76 61 6c 75 65 73 0a 61 72 65 20 63 6f 6e 73   values.are cons
5bd0: 69 64 65 72 65 64 20 74 6f 20 64 69 66 66 65 72  idered to differ
5be0: 65 6e 74 20 66 72 6f 6d 20 61 6c 6c 20 6f 74 68  ent from all oth
5bf0: 65 72 20 4e 55 4c 4c 20 76 61 6c 75 65 73 20 61  er NULL values a
5c00: 6e 64 20 61 72 65 20 74 68 75 73 20 75 6e 69 71  nd are thus uniq
5c10: 75 65 2e 0a 54 68 69 73 20 69 73 20 6f 6e 65 20  ue..This is one 
5c20: 6f 66 20 74 68 65 20 74 77 6f 20 70 6f 73 73 69  of the two possi
5c30: 62 6c 65 20 69 6e 74 65 72 70 72 65 74 61 74 69  ble interpretati
5c40: 6f 6e 73 20 6f 66 20 74 68 65 20 53 51 4c 2d 39  ons of the SQL-9
5c50: 32 20 73 74 61 6e 64 61 72 64 0a 28 74 68 65 20  2 standard.(the 
5c60: 6c 61 6e 67 75 61 67 65 20 69 6e 20 74 68 65 20  language in the 
5c70: 73 74 61 6e 64 61 72 64 20 69 73 20 61 6d 62 69  standard is ambi
5c80: 67 75 69 6f 75 73 29 20 61 6e 64 20 69 73 20 74  guious) and is t
5c90: 68 65 20 69 6e 74 65 72 70 72 65 74 61 74 69 6f  he interpretatio
5ca0: 6e 0a 66 6f 6c 6c 6f 77 65 64 20 62 79 20 50 6f  n.followed by Po
5cb0: 73 74 67 72 65 53 51 4c 2c 20 4d 79 53 51 4c 2c  stgreSQL, MySQL,
5cc0: 20 46 69 72 65 62 69 72 64 2c 20 61 6e 64 20 4f   Firebird, and O
5cd0: 72 61 63 6c 65 2e 20 20 49 6e 66 6f 72 6d 69 78  racle.  Informix
5ce0: 20 61 6e 64 0a 4d 69 63 72 6f 73 6f 66 74 20 53   and.Microsoft S
5cf0: 51 4c 20 53 65 72 76 65 72 20 66 6f 6c 6c 6f 77  QL Server follow
5d00: 20 74 68 65 20 6f 74 68 65 72 20 69 6e 74 65 72   the other inter
5d10: 70 72 65 74 61 74 69 6f 6e 20 6f 66 20 74 68 65  pretation of the
5d20: 20 73 74 61 6e 64 61 72 64 2e 3c 2f 70 3e 0a 0a   standard.</p>..
5d30: 3c 70 3e 54 68 65 20 74 65 78 74 0a 6f 66 20 65  <p>The text.of e
5d40: 61 63 68 20 43 52 45 41 54 45 20 49 4e 44 45 58  ach CREATE INDEX
5d50: 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 73 74   statement is st
5d60: 6f 72 65 64 20 69 6e 20 74 68 65 20 3c 62 3e 73  ored in the <b>s
5d70: 71 6c 69 74 65 5f 6d 61 73 74 65 72 3c 2f 62 3e  qlite_master</b>
5d80: 0a 6f 72 20 3c 62 3e 73 71 6c 69 74 65 5f 74 65  .or <b>sqlite_te
5d90: 6d 70 5f 6d 61 73 74 65 72 3c 2f 62 3e 20 74 61  mp_master</b> ta
5da0: 62 6c 65 2c 20 64 65 70 65 6e 64 69 6e 67 20 6f  ble, depending o
5db0: 6e 20 77 68 65 74 68 65 72 20 74 68 65 20 74 61  n whether the ta
5dc0: 62 6c 65 0a 62 65 69 6e 67 20 69 6e 64 65 78 65  ble.being indexe
5dd0: 64 20 69 73 20 74 65 6d 70 6f 72 61 72 79 2e 20  d is temporary. 
5de0: 20 45 76 65 72 79 20 74 69 6d 65 20 74 68 65 20   Every time the 
5df0: 64 61 74 61 62 61 73 65 20 69 73 20 6f 70 65 6e  database is open
5e00: 65 64 2c 0a 61 6c 6c 20 43 52 45 41 54 45 20 49  ed,.all CREATE I
5e10: 4e 44 45 58 20 73 74 61 74 65 6d 65 6e 74 73 0a  NDEX statements.
5e20: 61 72 65 20 72 65 61 64 20 66 72 6f 6d 20 74 68  are read from th
5e30: 65 20 3c 62 3e 73 71 6c 69 74 65 5f 6d 61 73 74  e <b>sqlite_mast
5e40: 65 72 3c 2f 62 3e 20 74 61 62 6c 65 20 61 6e 64  er</b> table and
5e50: 20 75 73 65 64 20 74 6f 20 72 65 67 65 6e 65 72   used to regener
5e60: 61 74 65 0a 53 51 4c 69 74 65 27 73 20 69 6e 74  ate.SQLite's int
5e70: 65 72 6e 61 6c 20 72 65 70 72 65 73 65 6e 74 61  ernal representa
5e80: 74 69 6f 6e 20 6f 66 20 74 68 65 20 69 6e 64 65  tion of the inde
5e90: 78 20 6c 61 79 6f 75 74 2e 3c 2f 70 3e 0a 0a 3c  x layout.</p>..<
5ea0: 70 3e 49 66 20 74 68 65 20 6f 70 74 69 6f 6e 61  p>If the optiona
5eb0: 6c 20 49 46 20 4e 4f 54 20 45 58 49 53 54 53 20  l IF NOT EXISTS 
5ec0: 63 6c 61 75 73 65 20 69 73 20 70 72 65 73 65 6e  clause is presen
5ed0: 74 20 61 6e 64 20 61 6e 6f 74 68 65 72 20 69 6e  t and another in
5ee0: 64 65 78 0a 77 69 74 68 20 74 68 65 20 73 61 6d  dex.with the sam
5ef0: 65 20 6e 61 6d 65 20 61 6c 65 61 64 79 20 65 78  e name aleady ex
5f00: 69 73 74 73 2c 20 74 68 65 6e 20 74 68 69 73 20  ists, then this 
5f10: 63 6f 6d 6d 61 6e 64 20 62 65 63 6f 6d 65 73 20  command becomes 
5f20: 61 20 6e 6f 2d 6f 70 2e 3c 2f 70 3e 0a 0a 3c 70  a no-op.</p>..<p
5f30: 3e 49 6e 64 65 78 65 73 20 61 72 65 20 72 65 6d  >Indexes are rem
5f40: 6f 76 65 64 20 77 69 74 68 20 74 68 65 20 3c 61  oved with the <a
5f50: 20 68 72 65 66 3d 22 6c 61 6e 67 5f 64 72 6f 70   href="lang_drop
5f60: 69 6e 64 65 78 2e 68 74 6d 6c 22 3e 44 52 4f 50  index.html">DROP
5f70: 20 49 4e 44 45 58 3c 2f 61 3e 20 0a 63 6f 6d 6d   INDEX</a> .comm
5f80: 61 6e 64 2e 3c 2f 70 3e 0a 0a 0a 3c 74 63 6c 3e  and.</p>...<tcl>
5f90: 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  .###############
5fa0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5fb0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5fc0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5fd0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a  ###############.
5fe0: 53 65 63 74 69 6f 6e 20 7b 43 52 45 41 54 45 20  Section {CREATE 
5ff0: 54 41 42 4c 45 7d 20 7b 63 72 65 61 74 65 74 61  TABLE} {createta
6000: 62 6c 65 7d 20 7b 7b 43 52 45 41 54 45 20 54 41  ble} {{CREATE TA
6010: 42 4c 45 7d 7d 0a 0a 42 75 62 62 6c 65 44 69 61  BLE}}..BubbleDia
6020: 67 72 61 6d 20 63 72 65 61 74 65 2d 74 61 62 6c  gram create-tabl
6030: 65 2d 73 74 6d 74 20 31 0a 42 75 62 62 6c 65 44  e-stmt 1.BubbleD
6040: 69 61 67 72 61 6d 20 63 6f 6c 75 6d 6e 2d 64 65  iagram column-de
6050: 66 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20  f.BubbleDiagram 
6060: 74 79 70 65 2d 6e 61 6d 65 0a 42 75 62 62 6c 65  type-name.Bubble
6070: 44 69 61 67 72 61 6d 20 63 6f 6c 75 6d 6e 2d 63  Diagram column-c
6080: 6f 6e 73 74 72 61 69 6e 74 0a 42 75 62 62 6c 65  onstraint.Bubble
6090: 44 69 61 67 72 61 6d 20 74 61 62 6c 65 2d 63 6f  Diagram table-co
60a0: 6e 73 74 72 61 69 6e 74 0a 42 75 62 62 6c 65 44  nstraint.BubbleD
60b0: 69 61 67 72 61 6d 20 66 6f 72 65 69 67 6e 2d 6b  iagram foreign-k
60c0: 65 79 2d 63 6c 61 75 73 65 0a 3c 2f 74 63 6c 3e  ey-clause.</tcl>
60d0: 0a 0a 3c 70 3e 41 20 43 52 45 41 54 45 20 54 41  ..<p>A CREATE TA
60e0: 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 20 69 73  BLE statement is
60f0: 20 62 61 73 69 63 61 6c 6c 79 20 74 68 65 20 6b   basically the k
6100: 65 79 77 6f 72 64 73 20 22 43 52 45 41 54 45 20  eywords "CREATE 
6110: 54 41 42 4c 45 22 0a 66 6f 6c 6c 6f 77 65 64 20  TABLE".followed 
6120: 62 79 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 61  by the name of a
6130: 20 6e 65 77 20 74 61 62 6c 65 20 61 6e 64 20 61   new table and a
6140: 20 70 61 72 65 6e 74 68 65 73 69 7a 65 64 20 6c   parenthesized l
6150: 69 73 74 20 6f 66 20 63 6f 6c 75 6d 6e 0a 64 65  ist of column.de
6160: 66 69 6e 69 74 69 6f 6e 73 20 61 6e 64 20 63 6f  finitions and co
6170: 6e 73 74 72 61 69 6e 74 73 2e 20 20 0a 54 61 62  nstraints.  .Tab
6180: 6c 65 73 20 6e 61 6d 65 73 20 74 68 61 74 20 62  les names that b
6190: 65 67 69 6e 20 77 69 74 68 20 22 3c 62 3e 73 71  egin with "<b>sq
61a0: 6c 69 74 65 5f 3c 2f 62 3e 22 20 61 72 65 20 72  lite_</b>" are r
61b0: 65 73 65 72 76 65 64 0a 66 6f 72 20 75 73 65 20  eserved.for use 
61c0: 62 79 20 74 68 65 20 65 6e 67 69 6e 65 2e 3c 2f  by the engine.</
61d0: 70 3e 0a 0a 3c 70 3e 45 61 63 68 20 63 6f 6c 75  p>..<p>Each colu
61e0: 6d 6e 20 64 65 66 69 6e 69 74 69 6f 6e 20 69 73  mn definition is
61f0: 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65   the name of the
6200: 20 63 6f 6c 75 6d 6e 20 6f 70 74 69 6f 6e 61 6c   column optional
6210: 6c 79 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 74  ly followed by t
6220: 68 65 0a 5b 64 61 74 61 74 79 70 65 5d 20 66 6f  he.[datatype] fo
6230: 72 20 74 68 61 74 20 63 6f 6c 75 6d 6e 2c 20 74  r that column, t
6240: 68 65 6e 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20  hen one or more 
6250: 6f 70 74 69 6f 6e 61 6c 20 63 6f 6c 75 6d 6e 20  optional column 
6260: 63 6f 6e 73 74 72 61 69 6e 74 73 2e 0a 53 51 4c  constraints..SQL
6270: 69 74 65 20 75 73 65 73 20 5b 64 79 6e 61 6d 69  ite uses [dynami
6280: 63 20 74 79 70 69 6e 67 5d 3b 20 0a 74 68 65 20  c typing]; .the 
6290: 64 61 74 61 74 79 70 65 20 66 6f 72 20 74 68 65  datatype for the
62a0: 20 63 6f 6c 75 6d 6e 20 64 6f 65 73 20 6e 6f 74   column does not
62b0: 20 72 65 73 74 72 69 63 74 20 77 68 61 74 20 64   restrict what d
62c0: 61 74 61 20 6d 61 79 20 62 65 20 70 75 74 0a 69  ata may be put.i
62d0: 6e 20 74 68 61 74 20 63 6f 6c 75 6d 6e 2e 0a 54  n that column..T
62e0: 68 65 20 55 4e 49 51 55 45 20 63 6f 6e 73 74 72  he UNIQUE constr
62f0: 61 69 6e 74 20 63 61 75 73 65 73 20 61 6e 20 75  aint causes an u
6300: 6e 69 71 75 65 20 69 6e 64 65 78 20 74 6f 20 62  nique index to b
6310: 65 20 63 72 65 61 74 65 64 20 6f 6e 20 74 68 65  e created on the
6320: 20 73 70 65 63 69 66 69 65 64 0a 63 6f 6c 75 6d   specified.colum
6330: 6e 73 2e 20 20 41 6c 6c 20 4e 55 4c 4c 20 76 61  ns.  All NULL va
6340: 6c 75 65 73 20 61 72 65 20 63 6f 6e 73 69 64 65  lues are conside
6350: 72 65 64 20 64 69 66 66 65 72 65 6e 74 20 66 72  red different fr
6360: 6f 6d 20 65 61 63 68 20 6f 74 68 65 72 20 61 6e  om each other an
6370: 64 20 66 72 6f 6d 0a 61 6c 6c 20 6f 74 68 65 72  d from.all other
6380: 20 76 61 6c 75 65 73 20 66 6f 72 20 74 68 65 20   values for the 
6390: 70 75 72 70 6f 73 65 20 6f 66 20 64 65 74 65 72  purpose of deter
63a0: 6d 69 6e 69 6e 67 20 75 6e 69 71 75 65 6e 65 73  mining uniquenes
63b0: 73 2c 20 68 65 6e 63 65 20 61 20 55 4e 49 51 55  s, hence a UNIQU
63c0: 45 0a 63 6f 6c 75 6d 6e 20 6d 61 79 20 63 6f 6e  E.column may con
63d0: 74 61 69 6e 20 6d 75 6c 74 69 70 6c 65 20 65 6e  tain multiple en
63e0: 74 72 69 65 73 20 77 69 74 68 20 74 68 65 20 76  tries with the v
63f0: 61 6c 75 65 20 6f 66 20 4e 55 4c 4c 2e 0a 54 68  alue of NULL..Th
6400: 65 20 43 4f 4c 4c 41 54 45 20 63 6c 61 75 73 65  e COLLATE clause
6410: 20 73 70 65 63 69 66 69 65 73 20 77 68 61 74 20   specifies what 
6420: 74 65 78 74 20 0a 5b 63 6f 6c 6c 61 74 69 6e 67  text .[collating
6430: 20 66 75 6e 63 74 69 6f 6e 5d 20 74 6f 20 75 73   function] to us
6440: 65 20 77 68 65 6e 20 63 6f 6d 70 61 72 69 6e 67  e when comparing
6450: 20 74 65 78 74 20 65 6e 74 72 69 65 73 20 66 6f   text entries fo
6460: 72 20 74 68 65 20 63 6f 6c 75 6d 6e 2e 20 20 0a  r the column.  .
6470: 54 68 65 20 62 75 69 6c 74 2d 69 6e 20 5b 42 49  The built-in [BI
6480: 4e 41 52 59 5d 20 63 6f 6c 6c 61 74 69 6e 67 20  NARY] collating 
6490: 66 75 6e 63 74 69 6f 6e 20 69 73 20 75 73 65 64  function is used
64a0: 20 62 79 20 64 65 66 61 75 6c 74 2e 0a 3c 70 3e   by default..<p>
64b0: 0a 54 68 65 20 44 45 46 41 55 4c 54 20 63 6f 6e  .The DEFAULT con
64c0: 73 74 72 61 69 6e 74 20 73 70 65 63 69 66 69 65  straint specifie
64d0: 73 20 61 20 64 65 66 61 75 6c 74 20 76 61 6c 75  s a default valu
64e0: 65 20 74 6f 20 75 73 65 20 77 68 65 6e 20 64 6f  e to use when do
64f0: 69 6e 67 20 61 6e 20 5b 49 4e 53 45 52 54 5d 2e  ing an [INSERT].
6500: 0a 54 68 65 20 76 61 6c 75 65 20 6d 61 79 20 62  .The value may b
6510: 65 20 4e 55 4c 4c 2c 20 61 20 73 74 72 69 6e 67  e NULL, a string
6520: 20 63 6f 6e 73 74 61 6e 74 20 6f 72 20 61 20 6e   constant or a n
6530: 75 6d 62 65 72 2e 0a 54 68 65 20 64 65 66 61 75  umber..The defau
6540: 6c 74 20 76 61 6c 75 65 20 6d 61 79 20 61 6c 73  lt value may als
6550: 6f 20 62 65 20 6f 6e 65 20 6f 66 20 74 68 65 20  o be one of the 
6560: 73 70 65 63 69 61 6c 20 63 61 73 65 2d 69 6e 64  special case-ind
6570: 65 70 65 6e 64 61 6e 74 0a 6b 65 79 77 6f 72 64  ependant.keyword
6580: 73 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 2c 20  s CURRENT_TIME, 
6590: 43 55 52 52 45 4e 54 5f 44 41 54 45 20 6f 72 20  CURRENT_DATE or 
65a0: 43 55 52 52 45 4e 54 5f 54 49 4d 45 53 54 41 4d  CURRENT_TIMESTAM
65b0: 50 2e 20 49 66 20 74 68 65 20 76 61 6c 75 65 20  P. If the value 
65c0: 69 73 0a 4e 55 4c 4c 2c 20 61 20 73 74 72 69 6e  is.NULL, a strin
65d0: 67 20 63 6f 6e 73 74 61 6e 74 20 6f 72 20 6e 75  g constant or nu
65e0: 6d 62 65 72 2c 20 69 74 20 69 73 20 6c 69 74 65  mber, it is lite
65f0: 72 61 6c 6c 79 20 69 6e 73 65 72 74 65 64 20 69  rally inserted i
6600: 6e 74 6f 20 74 68 65 20 63 6f 6c 75 6d 6e 0a 77  nto the column.w
6610: 68 65 6e 65 76 65 72 20 61 6e 20 49 4e 53 45 52  henever an INSER
6620: 54 20 73 74 61 74 65 6d 65 6e 74 20 74 68 61 74  T statement that
6630: 20 64 6f 65 73 20 6e 6f 74 20 73 70 65 63 69 66   does not specif
6640: 79 20 61 20 76 61 6c 75 65 20 66 6f 72 20 74 68  y a value for th
6650: 65 20 63 6f 6c 75 6d 6e 20 69 73 0a 65 78 65 63  e column is.exec
6660: 75 74 65 64 2e 20 49 66 20 74 68 65 20 76 61 6c  uted. If the val
6670: 75 65 20 69 73 20 43 55 52 52 45 4e 54 5f 54 49  ue is CURRENT_TI
6680: 4d 45 2c 20 43 55 52 52 45 4e 54 5f 44 41 54 45  ME, CURRENT_DATE
6690: 20 6f 72 20 43 55 52 52 45 4e 54 5f 54 49 4d 45   or CURRENT_TIME
66a0: 53 54 41 4d 50 2c 20 74 68 65 6e 0a 74 68 65 20  STAMP, then.the 
66b0: 63 75 72 72 65 6e 74 20 55 54 43 20 64 61 74 65  current UTC date
66c0: 20 61 6e 64 2f 6f 72 20 74 69 6d 65 20 69 73 20   and/or time is 
66d0: 69 6e 73 65 72 74 65 64 20 69 6e 74 6f 20 74 68  inserted into th
66e0: 65 20 63 6f 6c 75 6d 6e 73 2e 20 46 6f 72 0a 43  e columns. For.C
66f0: 55 52 52 45 4e 54 5f 54 49 4d 45 2c 20 74 68 65  URRENT_TIME, the
6700: 20 66 6f 72 6d 61 74 20 69 73 20 48 48 3a 4d 4d   format is HH:MM
6710: 3a 53 53 2e 20 46 6f 72 20 43 55 52 52 45 4e 54  :SS. For CURRENT
6720: 5f 44 41 54 45 2c 20 59 59 59 59 2d 4d 4d 2d 44  _DATE, YYYY-MM-D
6730: 44 2e 20 54 68 65 20 66 6f 72 6d 61 74 0a 66 6f  D. The format.fo
6740: 72 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 53 54  r CURRENT_TIMEST
6750: 41 4d 50 20 69 73 20 22 59 59 59 59 2d 4d 4d 2d  AMP is "YYYY-MM-
6760: 44 44 20 48 48 3a 4d 4d 3a 53 53 22 2e 0a 3c 2f  DD HH:MM:SS"..</
6770: 70 3e 0a 0a 3c 70 3e 54 68 65 20 50 52 49 4d 41  p>..<p>The PRIMA
6780: 52 59 20 4b 45 59 20 61 74 74 72 69 62 75 74 65  RY KEY attribute
6790: 20 6e 6f 72 6d 61 6c 6c 79 20 63 72 65 61 74 65   normally create
67a0: 73 20 61 20 55 4e 49 51 55 45 20 69 6e 64 65 78  s a UNIQUE index
67b0: 20 6f 6e 0a 74 68 65 20 63 6f 6c 75 6d 6e 20 6f   on.the column o
67c0: 72 20 63 6f 6c 75 6d 6e 73 20 74 68 61 74 20 61  r columns that a
67d0: 72 65 20 73 70 65 63 69 66 69 65 64 20 61 73 20  re specified as 
67e0: 74 68 65 20 50 52 49 4d 41 52 59 20 4b 45 59 2e  the PRIMARY KEY.
67f0: 20 20 54 68 65 20 6f 6e 6c 79 0a 65 78 63 65 70    The only.excep
6800: 74 69 6f 6e 20 74 6f 20 74 68 69 73 20 62 65 68  tion to this beh
6810: 61 76 69 6f 72 20 69 73 20 73 70 65 63 69 61 6c  avior is special
6820: 20 5b 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52   [INTEGER PRIMAR
6830: 59 20 4b 45 59 5d 20 63 6f 6c 75 6d 6e 2c 0a 64  Y KEY] column,.d
6840: 65 73 63 72 69 62 65 64 20 62 65 6c 6f 77 2e 0a  escribed below..
6850: 41 63 63 6f 72 64 69 6e 67 20 74 6f 20 74 68 65  According to the
6860: 20 53 51 4c 20 73 74 61 6e 64 61 72 64 2c 20 50   SQL standard, P
6870: 52 49 4d 41 52 59 20 4b 45 59 20 73 68 6f 75 6c  RIMARY KEY shoul
6880: 64 20 69 6d 70 6c 79 20 4e 4f 54 20 4e 55 4c 4c  d imply NOT NULL
6890: 2e 0a 55 6e 66 6f 72 74 75 6e 61 74 65 6c 79 2c  ..Unfortunately,
68a0: 20 64 75 65 20 74 6f 20 61 20 6c 6f 6e 67 2d 73   due to a long-s
68b0: 74 61 6e 64 69 6e 67 20 63 6f 64 69 6e 67 20 6f  tanding coding o
68c0: 76 65 72 73 69 67 68 74 2c 20 74 68 69 73 20 69  versight, this i
68d0: 73 20 6e 6f 74 20 0a 74 68 65 20 63 61 73 65 20  s not .the case 
68e0: 69 6e 20 53 51 4c 69 74 65 2e 20 20 53 51 4c 69  in SQLite.  SQLi
68f0: 74 65 20 61 6c 6c 6f 77 73 20 4e 55 4c 4c 20 76  te allows NULL v
6900: 61 6c 75 65 73 0a 69 6e 20 61 20 50 52 49 4d 41  alues.in a PRIMA
6910: 52 59 20 4b 45 59 20 63 6f 6c 75 6d 6e 2e 20 20  RY KEY column.  
6920: 57 65 20 63 6f 75 6c 64 20 63 68 61 6e 67 65 20  We could change 
6930: 53 51 4c 69 74 65 20 74 6f 20 63 6f 6e 66 6f 72  SQLite to confor
6940: 6d 20 74 6f 20 74 68 65 0a 73 74 61 6e 64 61 72  m to the.standar
6950: 64 20 28 61 6e 64 20 77 65 20 6d 69 67 68 74 20  d (and we might 
6960: 64 6f 20 73 6f 20 69 6e 20 74 68 65 20 66 75 74  do so in the fut
6970: 75 72 65 29 2c 20 62 75 74 20 62 79 20 74 68 65  ure), but by the
6980: 20 74 69 6d 65 20 74 68 65 0a 6f 76 65 72 73 69   time the.oversi
6990: 67 68 74 20 77 61 73 20 64 69 73 63 6f 76 65 72  ght was discover
69a0: 65 64 2c 20 53 51 4c 69 74 65 20 77 61 73 20 69  ed, SQLite was i
69b0: 6e 20 73 75 63 68 20 77 69 64 65 20 75 73 65 20  n such wide use 
69c0: 74 68 61 74 20 77 65 20 66 65 61 72 65 64 0a 62  that we feared.b
69d0: 72 65 61 6b 69 6e 67 20 6c 65 67 61 63 79 20 63  reaking legacy c
69e0: 6f 64 65 20 69 66 20 77 65 20 66 69 78 65 64 20  ode if we fixed 
69f0: 74 68 65 20 70 72 6f 62 6c 65 6d 2e 20 20 53 6f  the problem.  So
6a00: 20 66 6f 72 20 6e 6f 77 20 77 65 20 68 61 76 65   for now we have
6a10: 0a 63 68 6f 73 65 6e 20 74 6f 20 63 6f 6e 74 69  .chosen to conti
6a20: 6e 75 65 20 61 6c 6c 6f 77 69 6e 67 20 4e 55 4c  nue allowing NUL
6a30: 4c 73 20 69 6e 20 50 52 49 4d 41 52 59 20 4b 45  Ls in PRIMARY KE
6a40: 59 20 63 6f 6c 75 6d 6e 73 2e 0a 44 65 76 65 6c  Y columns..Devel
6a50: 6f 70 65 72 73 20 73 68 6f 75 6c 64 20 62 65 20  opers should be 
6a60: 61 77 61 72 65 2c 20 68 6f 77 65 76 65 72 2c 20  aware, however, 
6a70: 74 68 61 74 20 77 65 20 6d 61 79 20 63 68 61 6e  that we may chan
6a80: 67 65 20 53 51 4c 69 74 65 20 74 6f 0a 63 6f 6e  ge SQLite to.con
6a90: 66 6f 72 6d 20 74 6f 20 74 68 65 20 53 51 4c 20  form to the SQL 
6aa0: 73 74 61 6e 64 61 72 64 20 69 6e 20 66 75 74 75  standard in futu
6ab0: 72 65 20 61 6e 64 20 73 68 6f 75 6c 64 20 64 65  re and should de
6ac0: 73 69 67 6e 20 6e 65 77 20 70 72 6f 67 72 61 6d  sign new program
6ad0: 73 0a 61 63 63 6f 72 64 69 6e 67 6c 79 2e 3c 2f  s.accordingly.</
6ae0: 70 3e 0a 0a 3c 70 3e 53 51 4c 69 74 65 20 75 73  p>..<p>SQLite us
6af0: 65 73 20 5b 64 79 6e 61 6d 69 63 20 74 79 70 69  es [dynamic typi
6b00: 6e 67 5d 20 69 6e 73 74 65 61 64 20 6f 66 20 73  ng] instead of s
6b10: 74 61 74 69 63 20 74 79 70 69 6e 67 2e 20 20 45  tatic typing.  E
6b20: 78 63 65 70 74 20 66 6f 72 20 74 68 65 0a 73 70  xcept for the.sp
6b30: 65 63 69 61 6c 20 63 61 73 65 20 6f 66 20 5b 49  ecial case of [I
6b40: 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b  NTEGER PRIMARY K
6b50: 45 59 5d 2c 20 53 51 4c 69 74 65 20 77 69 6c 6c  EY], SQLite will
6b60: 20 61 6c 6c 6f 77 20 76 61 6c 75 65 73 20 6f 66   allow values of
6b70: 20 61 6e 79 0a 74 79 70 65 20 74 6f 20 62 65 20   any.type to be 
6b80: 73 74 6f 72 65 64 20 69 6e 20 61 6e 79 20 63 6f  stored in any co
6b90: 6c 75 6d 6e 20 72 65 67 61 72 64 6c 65 73 73 20  lumn regardless 
6ba0: 6f 66 20 74 68 65 20 64 65 63 6c 61 72 65 64 20  of the declared 
6bb0: 64 61 74 61 74 79 70 65 20 6f 66 0a 74 68 61 74  datatype of.that
6bc0: 20 63 6f 6c 75 6d 6e 2e 20 20 54 68 65 20 64 65   column.  The de
6bd0: 63 6c 61 72 65 64 20 64 61 74 61 74 79 70 65 20  clared datatype 
6be0: 69 73 20 61 20 5b 61 66 66 69 6e 69 74 79 20 7c  is a [affinity |
6bf0: 20 74 79 70 65 20 61 66 66 69 6e 69 74 79 5d 20   type affinity] 
6c00: 74 68 61 74 0a 53 51 4c 69 74 65 20 61 74 74 65  that.SQLite atte
6c10: 6d 70 74 73 20 74 6f 20 63 6f 6d 70 6c 79 20 77  mpts to comply w
6c20: 69 74 68 2c 20 62 75 74 20 74 68 65 20 6f 70 65  ith, but the ope
6c30: 72 61 74 69 6f 6e 20 77 69 6c 6c 20 70 72 6f 63  ration will proc
6c40: 65 65 64 20 65 76 65 6e 20 69 66 0a 63 6f 6d 70  eed even if.comp
6c50: 6c 69 61 6e 63 65 20 69 73 20 6e 6f 74 20 70 6f  liance is not po
6c60: 73 73 69 62 6c 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e  ssible.</p>..<p>
6c70: 49 66 20 74 68 65 20 22 54 45 4d 50 22 20 6f 72  If the "TEMP" or
6c80: 20 22 54 45 4d 50 4f 52 41 52 59 22 20 6b 65 79   "TEMPORARY" key
6c90: 77 6f 72 64 20 6f 63 63 75 72 73 20 69 6e 20 62  word occurs in b
6ca0: 65 74 77 65 65 6e 20 22 43 52 45 41 54 45 22 0a  etween "CREATE".
6cb0: 61 6e 64 20 22 54 41 42 4c 45 22 20 74 68 65 6e  and "TABLE" then
6cc0: 20 74 68 65 20 74 61 62 6c 65 20 74 68 61 74 20   the table that 
6cd0: 69 73 20 63 72 65 61 74 65 64 20 69 73 20 6f 6e  is created is on
6ce0: 6c 79 20 76 69 73 69 62 6c 65 0a 77 69 74 68 69  ly visible.withi
6cf0: 6e 20 74 68 61 74 20 73 61 6d 65 20 64 61 74 61  n that same data
6d00: 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 0a  base connection.
6d10: 61 6e 64 20 69 73 20 61 75 74 6f 6d 61 74 69 63  and is automatic
6d20: 61 6c 6c 79 20 64 65 6c 65 74 65 64 20 77 68 65  ally deleted whe
6d30: 6e 0a 74 68 65 20 64 61 74 61 62 61 73 65 20 63  n.the database c
6d40: 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20 63 6c 6f  onnection is clo
6d50: 73 65 64 2e 20 20 41 6e 79 20 69 6e 64 69 63 65  sed.  Any indice
6d60: 73 20 63 72 65 61 74 65 64 20 6f 6e 20 61 20 74  s created on a t
6d70: 65 6d 70 6f 72 61 72 79 20 74 61 62 6c 65 0a 61  emporary table.a
6d80: 72 65 20 61 6c 73 6f 20 74 65 6d 70 6f 72 61 72  re also temporar
6d90: 79 2e 20 20 54 65 6d 70 6f 72 61 72 79 20 74 61  y.  Temporary ta
6da0: 62 6c 65 73 20 61 6e 64 20 69 6e 64 69 63 65 73  bles and indices
6db0: 20 61 72 65 20 73 74 6f 72 65 64 20 69 6e 20 61   are stored in a
6dc0: 0a 73 65 70 61 72 61 74 65 20 66 69 6c 65 20 64  .separate file d
6dd0: 69 73 74 69 6e 63 74 20 66 72 6f 6d 20 74 68 65  istinct from the
6de0: 20 6d 61 69 6e 20 64 61 74 61 62 61 73 65 20 66   main database f
6df0: 69 6c 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 20 49 66  ile.</p>..<p> If
6e00: 20 61 20 26 6c 74 3b 64 61 74 61 62 61 73 65 2d   a &lt;database-
6e10: 6e 61 6d 65 26 67 74 3b 20 69 73 20 73 70 65 63  name&gt; is spec
6e20: 69 66 69 65 64 2c 20 74 68 65 6e 20 74 68 65 20  ified, then the 
6e30: 74 61 62 6c 65 20 69 73 20 63 72 65 61 74 65 64  table is created
6e40: 20 69 6e 20 0a 74 68 65 20 6e 61 6d 65 64 20 64   in .the named d
6e50: 61 74 61 62 61 73 65 2e 20 49 74 20 69 73 20 61  atabase. It is a
6e60: 6e 20 65 72 72 6f 72 20 74 6f 20 73 70 65 63 69  n error to speci
6e70: 66 79 20 62 6f 74 68 20 61 20 26 6c 74 3b 64 61  fy both a &lt;da
6e80: 74 61 62 61 73 65 2d 6e 61 6d 65 26 67 74 3b 0a  tabase-name&gt;.
6e90: 61 6e 64 20 74 68 65 20 54 45 4d 50 20 6b 65 79  and the TEMP key
6ea0: 77 6f 72 64 2c 20 75 6e 6c 65 73 73 20 74 68 65  word, unless the
6eb0: 20 26 6c 74 3b 64 61 74 61 62 61 73 65 2d 6e 61   &lt;database-na
6ec0: 6d 65 26 67 74 3b 20 69 73 20 22 74 65 6d 70 22  me&gt; is "temp"
6ed0: 2e 20 49 66 20 6e 6f 0a 64 61 74 61 62 61 73 65  . If no.database
6ee0: 20 6e 61 6d 65 20 69 73 20 73 70 65 63 69 66 69   name is specifi
6ef0: 65 64 2c 20 61 6e 64 20 74 68 65 20 54 45 4d 50  ed, and the TEMP
6f00: 20 6b 65 79 77 6f 72 64 20 69 73 20 6e 6f 74 20   keyword is not 
6f10: 70 72 65 73 65 6e 74 2c 0a 74 68 65 20 74 61 62  present,.the tab
6f20: 6c 65 20 69 73 20 63 72 65 61 74 65 64 20 69 6e  le is created in
6f30: 20 74 68 65 20 6d 61 69 6e 20 64 61 74 61 62 61   the main databa
6f40: 73 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20  se.</p>..<p>The 
6f50: 6f 70 74 69 6f 6e 61 6c 20 5b 63 6f 6e 66 6c 69  optional [confli
6f60: 63 74 20 63 6c 61 75 73 65 5d 20 66 6f 6c 6c 6f  ct clause] follo
6f70: 77 69 6e 67 20 65 61 63 68 20 63 6f 6e 73 74 72  wing each constr
6f80: 61 69 6e 74 0a 61 6c 6c 6f 77 73 20 74 68 65 20  aint.allows the 
6f90: 73 70 65 63 69 66 69 63 61 74 69 6f 6e 20 6f 66  specification of
6fa0: 20 61 6e 20 61 6c 74 65 72 6e 61 74 69 76 65 20   an alternative 
6fb0: 64 65 66 61 75 6c 74 0a 63 6f 6e 73 74 72 61 69  default.constrai
6fc0: 6e 74 20 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f  nt conflict reso
6fd0: 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d  lution algorithm
6fe0: 20 66 6f 72 20 74 68 61 74 20 63 6f 6e 73 74 72   for that constr
6ff0: 61 69 6e 74 2e 0a 54 68 65 20 64 65 66 61 75 6c  aint..The defaul
7000: 74 20 69 73 20 61 62 6f 72 74 20 41 42 4f 52 54  t is abort ABORT
7010: 2e 20 20 44 69 66 66 65 72 65 6e 74 20 63 6f 6e  .  Different con
7020: 73 74 72 61 69 6e 74 73 20 77 69 74 68 69 6e 20  straints within 
7030: 74 68 65 20 73 61 6d 65 0a 74 61 62 6c 65 20 6d  the same.table m
7040: 61 79 20 68 61 76 65 20 64 69 66 66 65 72 65 6e  ay have differen
7050: 74 20 64 65 66 61 75 6c 74 20 63 6f 6e 66 6c 69  t default confli
7060: 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c  ct resolution al
7070: 67 6f 72 69 74 68 6d 73 2e 0a 49 66 20 61 6e 20  gorithms..If an 
7080: 5b 49 4e 53 45 52 54 5d 20 6f 72 20 5b 55 50 44  [INSERT] or [UPD
7090: 41 54 45 5d 20 73 74 61 74 65 6d 65 6e 74 20 73  ATE] statement s
70a0: 70 65 63 69 66 69 65 73 20 61 20 64 69 66 66 65  pecifies a diffe
70b0: 72 65 6e 74 20 63 6f 6e 66 6c 69 63 74 0a 72 65  rent conflict.re
70c0: 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74  solution algorit
70d0: 68 6d 2c 20 74 68 65 6e 20 74 68 61 74 20 61 6c  hm, then that al
70e0: 67 6f 72 69 74 68 6d 20 69 73 20 75 73 65 64 20  gorithm is used 
70f0: 69 6e 20 70 6c 61 63 65 20 6f 66 20 74 68 65 0a  in place of the.
7100: 64 65 66 61 75 6c 74 20 61 6c 67 6f 72 69 74 68  default algorith
7110: 6d 20 73 70 65 63 69 66 69 65 64 20 69 6e 20 74  m specified in t
7120: 68 65 20 43 52 45 41 54 45 20 54 41 42 4c 45 20  he CREATE TABLE 
7130: 73 74 61 74 65 6d 65 6e 74 2e 0a 53 65 65 20 74  statement..See t
7140: 68 65 20 73 65 63 74 69 6f 6e 20 74 69 74 6c 65  he section title
7150: 64 0a 5b 4f 4e 20 43 4f 4e 46 4c 49 43 54 5d 20  d.[ON CONFLICT] 
7160: 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 69  for additional i
7170: 6e 66 6f 72 6d 61 74 69 6f 6e 2e 3c 2f 70 3e 0a  nformation.</p>.
7180: 0a 3c 70 3e 43 48 45 43 4b 20 63 6f 6e 73 74 72  .<p>CHECK constr
7190: 61 69 6e 74 73 20 61 72 65 20 73 75 70 70 6f 72  aints are suppor
71a0: 74 65 64 20 61 73 20 6f 66 20 5b 76 65 72 73 69  ted as of [versi
71b0: 6f 6e 20 33 2e 33 2e 30 5d 2e 20 20 50 72 69 6f  on 3.3.0].  Prio
71c0: 72 0a 74 6f 20 76 65 72 73 69 6f 6e 20 33 2e 33  r.to version 3.3
71d0: 2e 30 2c 20 43 48 45 43 4b 20 63 6f 6e 73 74 72  .0, CHECK constr
71e0: 61 69 6e 74 73 20 77 65 72 65 20 70 61 72 73 65  aints were parse
71f0: 64 20 62 75 74 20 6e 6f 74 20 65 6e 66 6f 72 63  d but not enforc
7200: 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20  ed.</p>..<p>The 
7210: 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e  number of column
7220: 73 20 69 6e 20 61 20 74 61 62 6c 65 20 69 73 20  s in a table is 
7230: 6c 69 6d 69 74 65 64 20 62 79 20 74 68 65 0a 5b  limited by the.[
7240: 53 51 4c 49 54 45 5f 4d 41 58 5f 43 4f 4c 55 4d  SQLITE_MAX_COLUM
7250: 4e 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  N] compile-time 
7260: 70 61 72 61 6d 65 74 65 72 2e 0a 41 20 73 69 6e  parameter..A sin
7270: 67 6c 65 20 72 6f 77 20 6f 66 20 61 20 74 61 62  gle row of a tab
7280: 6c 65 20 63 61 6e 6e 6f 74 20 73 74 6f 72 65 20  le cannot store 
7290: 6d 6f 72 65 20 74 68 61 6e 0a 5b 53 51 4c 49 54  more than.[SQLIT
72a0: 45 5f 4d 41 58 5f 4c 45 4e 47 54 48 5d 20 62 79  E_MAX_LENGTH] by
72b0: 74 65 73 20 6f 66 20 64 61 74 61 2e 0a 42 6f 74  tes of data..Bot
72c0: 68 20 6f 66 20 74 68 65 73 65 20 6c 69 6d 69 74  h of these limit
72d0: 73 20 63 61 6e 20 62 65 20 6c 6f 77 65 72 65 64  s can be lowered
72e0: 20 61 74 20 72 75 6e 74 69 6d 65 20 75 73 69 6e   at runtime usin
72f0: 67 20 74 68 65 0a 5b 73 71 6c 69 74 65 33 5f 6c  g the.[sqlite3_l
7300: 69 6d 69 74 28 29 5d 20 43 2f 43 2b 2b 20 69 6e  imit()] C/C++ in
7310: 74 65 72 66 61 63 65 2e 3c 2f 70 3e 0a 0a 0a 3c  terface.</p>...<
7320: 70 3e 54 68 65 20 43 52 45 41 54 45 20 54 41 42  p>The CREATE TAB
7330: 4c 45 20 41 53 20 66 6f 72 6d 20 64 65 66 69 6e  LE AS form defin
7340: 65 73 20 74 68 65 20 74 61 62 6c 65 20 74 6f 20  es the table to 
7350: 62 65 0a 74 68 65 20 72 65 73 75 6c 74 20 73 65  be.the result se
7360: 74 20 6f 66 20 61 20 71 75 65 72 79 2e 20 20 54  t of a query.  T
7370: 68 65 20 6e 61 6d 65 73 20 6f 66 20 74 68 65 20  he names of the 
7380: 74 61 62 6c 65 20 63 6f 6c 75 6d 6e 73 20 61 72  table columns ar
7390: 65 0a 74 68 65 20 6e 61 6d 65 73 20 6f 66 20 74  e.the names of t
73a0: 68 65 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68  he columns in th
73b0: 65 20 72 65 73 75 6c 74 2e 3c 2f 70 3e 0a 0a 3c  e result.</p>..<
73c0: 70 3e 54 68 65 20 74 65 78 74 0a 6f 66 20 65 61  p>The text.of ea
73d0: 63 68 20 43 52 45 41 54 45 20 54 41 42 4c 45 20  ch CREATE TABLE 
73e0: 73 74 61 74 65 6d 65 6e 74 20 69 73 20 73 74 6f  statement is sto
73f0: 72 65 64 20 69 6e 20 74 68 65 20 3c 62 3e 73 71  red in the <b>sq
7400: 6c 69 74 65 5f 6d 61 73 74 65 72 3c 2f 62 3e 0a  lite_master</b>.
7410: 74 61 62 6c 65 2e 20 20 45 76 65 72 79 20 74 69  table.  Every ti
7420: 6d 65 20 74 68 65 20 64 61 74 61 62 61 73 65 20  me the database 
7430: 69 73 20 6f 70 65 6e 65 64 2c 20 61 6c 6c 20 43  is opened, all C
7440: 52 45 41 54 45 20 54 41 42 4c 45 20 73 74 61 74  REATE TABLE stat
7450: 65 6d 65 6e 74 73 0a 61 72 65 20 72 65 61 64 20  ements.are read 
7460: 66 72 6f 6d 20 74 68 65 20 3c 62 3e 73 71 6c 69  from the <b>sqli
7470: 74 65 5f 6d 61 73 74 65 72 3c 2f 62 3e 20 74 61  te_master</b> ta
7480: 62 6c 65 20 61 6e 64 20 75 73 65 64 20 74 6f 20  ble and used to 
7490: 72 65 67 65 6e 65 72 61 74 65 0a 53 51 4c 69 74  regenerate.SQLit
74a0: 65 27 73 20 69 6e 74 65 72 6e 61 6c 20 72 65 70  e's internal rep
74b0: 72 65 73 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74  resentation of t
74c0: 68 65 20 74 61 62 6c 65 20 6c 61 79 6f 75 74 2e  he table layout.
74d0: 0a 49 66 20 74 68 65 20 6f 72 69 67 69 6e 61 6c  .If the original
74e0: 20 63 6f 6d 6d 61 6e 64 20 77 61 73 20 61 20 43   command was a C
74f0: 52 45 41 54 45 20 54 41 42 4c 45 20 41 53 20 74  REATE TABLE AS t
7500: 68 65 6e 20 74 68 65 6e 20 61 6e 20 65 71 75 69  hen then an equi
7510: 76 61 6c 65 6e 74 0a 43 52 45 41 54 45 20 54 41  valent.CREATE TA
7520: 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 20 69 73  BLE statement is
7530: 20 73 79 6e 74 68 65 73 69 7a 65 64 20 61 6e 64   synthesized and
7540: 20 73 74 6f 72 65 20 69 6e 20 3c 62 3e 73 71 6c   store in <b>sql
7550: 69 74 65 5f 6d 61 73 74 65 72 3c 2f 62 3e 0a 69  ite_master</b>.i
7560: 6e 20 70 6c 61 63 65 20 6f 66 20 74 68 65 20 6f  n place of the o
7570: 72 69 67 69 6e 61 6c 20 63 6f 6d 6d 61 6e 64 2e  riginal command.
7580: 0a 54 68 65 20 74 65 78 74 20 6f 66 20 43 52 45  .The text of CRE
7590: 41 54 45 20 54 45 4d 50 4f 52 41 52 59 20 54 41  ATE TEMPORARY TA
75a0: 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 73 20 61  BLE statements a
75b0: 72 65 20 73 74 6f 72 65 64 20 69 6e 20 74 68 65  re stored in the
75c0: 0a 3c 62 3e 73 71 6c 69 74 65 5f 74 65 6d 70 5f  .<b>sqlite_temp_
75d0: 6d 61 73 74 65 72 3c 2f 62 3e 20 74 61 62 6c 65  master</b> table
75e0: 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 74 68  ..</p>..<p>If th
75f0: 65 20 6f 70 74 69 6f 6e 61 6c 20 49 46 20 4e 4f  e optional IF NO
7600: 54 20 45 58 49 53 54 53 20 63 6c 61 75 73 65 20  T EXISTS clause 
7610: 69 73 20 70 72 65 73 65 6e 74 20 61 6e 64 20 61  is present and a
7620: 6e 6f 74 68 65 72 20 74 61 62 6c 65 0a 77 69 74  nother table.wit
7630: 68 20 74 68 65 20 73 61 6d 65 20 6e 61 6d 65 20  h the same name 
7640: 61 6c 65 61 64 79 20 65 78 69 73 74 73 2c 20 74  aleady exists, t
7650: 68 65 6e 20 74 68 69 73 20 63 6f 6d 6d 61 6e 64  hen this command
7660: 20 62 65 63 6f 6d 65 73 20 61 20 6e 6f 2d 6f 70   becomes a no-op
7670: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 61 62 6c 65 73  .</p>..<p>Tables
7680: 20 61 72 65 20 72 65 6d 6f 76 65 64 20 75 73 69   are removed usi
7690: 6e 67 20 74 68 65 20 3c 61 20 68 72 65 66 3d 22  ng the <a href="
76a0: 6c 61 6e 67 5f 64 72 6f 70 74 61 62 6c 65 2e 68  lang_droptable.h
76b0: 74 6d 6c 22 3e 44 52 4f 50 20 54 41 42 4c 45 3c  tml">DROP TABLE<
76c0: 2f 61 3e 20 0a 73 74 61 74 65 6d 65 6e 74 2e 20  /a> .statement. 
76d0: 20 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 68 64 5f 66   </p>..<tcl>hd_f
76e0: 72 61 67 6d 65 6e 74 20 72 6f 77 69 64 20 7b 49  ragment rowid {I
76f0: 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b  NTEGER PRIMARY K
7700: 45 59 7d 20 52 4f 57 49 44 20 72 6f 77 69 64 3c  EY} ROWID rowid<
7710: 2f 74 63 6c 3e 0a 3c 68 33 3e 52 4f 57 49 44 73  /tcl>.<h3>ROWIDs
7720: 20 61 6e 64 20 74 68 65 20 49 4e 54 45 47 45 52   and the INTEGER
7730: 20 50 52 49 4d 41 52 59 20 4b 45 59 3c 2f 68 33   PRIMARY KEY</h3
7740: 3e 0a 0a 3c 70 3e 45 76 65 72 79 20 72 6f 77 20  >..<p>Every row 
7750: 6f 66 20 65 76 65 72 79 20 53 51 4c 69 74 65 20  of every SQLite 
7760: 74 61 62 6c 65 20 68 61 73 20 61 20 36 34 2d 62  table has a 64-b
7770: 69 74 20 73 69 67 6e 65 64 20 69 6e 74 65 67 65  it signed intege
7780: 72 20 6b 65 79 20 0a 74 68 61 74 20 69 73 20 75  r key .that is u
7790: 6e 69 71 75 65 20 77 69 74 68 69 6e 20 74 68 65  nique within the
77a0: 20 73 61 6d 65 20 74 61 62 6c 65 2e 0a 54 68 69   same table..Thi
77b0: 73 20 69 6e 74 65 67 65 72 20 69 73 20 75 73 75  s integer is usu
77c0: 61 6c 6c 79 20 63 61 6c 6c 65 64 20 74 68 65 20  ally called the 
77d0: 22 72 6f 77 69 64 22 2e 20 20 54 68 65 20 72 6f  "rowid".  The ro
77e0: 77 69 64 20 69 73 20 74 68 65 20 61 63 74 75 61  wid is the actua
77f0: 6c 20 6b 65 79 20 75 73 65 64 0a 69 6e 20 74 68  l key used.in th
7800: 65 20 42 2d 54 72 65 65 20 74 68 61 74 20 69 6d  e B-Tree that im
7810: 70 6c 65 6d 65 6e 74 73 20 61 6e 20 53 51 4c 69  plements an SQLi
7820: 74 65 20 74 61 62 6c 65 2e 20 20 52 6f 77 73 20  te table.  Rows 
7830: 61 72 65 20 73 74 6f 72 65 64 20 69 6e 0a 72 6f  are stored in.ro
7840: 77 69 64 20 6f 72 64 65 72 2e 20 54 68 65 0a 72  wid order. The.r
7850: 6f 77 69 64 20 76 61 6c 75 65 20 63 61 6e 20 62  owid value can b
7860: 65 20 61 63 63 65 73 73 65 64 20 75 73 69 6e 67  e accessed using
7870: 20 6f 6e 65 20 6f 66 20 74 68 65 20 73 70 65 63   one of the spec
7880: 69 61 6c 20 6e 61 6d 65 73 0a 22 3c 62 3e 52 4f  ial names."<b>RO
7890: 57 49 44 3c 2f 62 3e 22 2c 20 22 3c 62 3e 4f 49  WID</b>", "<b>OI
78a0: 44 3c 2f 62 3e 22 2c 20 6f 72 20 22 3c 62 3e 5f  D</b>", or "<b>_
78b0: 52 4f 57 49 44 5f 3c 2f 62 3e 22 2e 3c 2f 70 3e  ROWID_</b>".</p>
78c0: 0a 0a 3c 70 3e 0a 49 66 20 61 20 63 6f 6c 75 6d  ..<p>.If a colum
78d0: 6e 20 69 73 20 64 65 63 6c 61 72 65 64 20 74 6f  n is declared to
78e0: 20 62 65 20 61 6e 20 49 4e 54 45 47 45 52 20 50   be an INTEGER P
78f0: 52 49 4d 41 52 59 20 4b 45 59 2c 20 74 68 65 6e  RIMARY KEY, then
7900: 20 74 68 61 74 20 63 6f 6c 75 6d 6e 20 69 73 20   that column is 
7910: 6e 6f 74 0a 61 20 22 72 65 61 6c 22 20 64 61 74  not.a "real" dat
7920: 61 62 61 73 65 20 63 6f 6c 75 6d 6e 20 62 75 74  abase column but
7930: 20 69 6e 73 74 65 61 64 20 62 65 63 6f 6d 65 73   instead becomes
7940: 0a 61 6e 20 61 6c 69 61 73 20 66 6f 72 20 74 68  .an alias for th
7950: 65 20 72 6f 77 69 64 2e 20 20 55 6e 6c 69 6b 65  e rowid.  Unlike
7960: 20 6e 6f 72 6d 61 6c 20 53 51 4c 69 74 65 20 63   normal SQLite c
7970: 6f 6c 75 6d 6e 73 2c 20 74 68 65 20 72 6f 77 69  olumns, the rowi
7980: 64 0a 6d 75 73 74 20 62 65 20 61 20 6e 6f 6e 2d  d.must be a non-
7990: 4e 55 4c 4c 20 69 6e 74 65 67 65 72 20 76 61 6c  NULL integer val
79a0: 75 65 2e 20 20 54 68 65 20 72 6f 77 69 64 20 69  ue.  The rowid i
79b0: 73 20 6e 6f 74 20 61 62 6c 65 20 74 6f 20 68 6f  s not able to ho
79c0: 6c 64 0a 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e  ld.floating poin
79d0: 74 20 76 61 6c 75 65 73 2c 20 73 74 72 69 6e 67  t values, string
79e0: 73 2c 20 42 4c 4f 42 73 2c 20 6f 72 20 4e 55 4c  s, BLOBs, or NUL
79f0: 4c 73 2e 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71  Ls.</p>..<blockq
7a00: 75 6f 74 65 3e 3c 69 3e 0a 41 6e 20 49 4e 54 45  uote><i>.An INTE
7a10: 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 20  GER PRIMARY KEY 
7a20: 63 6f 6c 75 6d 6e 20 69 73 20 61 6e 20 61 6c 69  column is an ali
7a30: 61 73 20 66 6f 72 20 74 68 65 20 36 34 2d 62 69  as for the 64-bi
7a40: 74 20 73 69 67 6e 65 64 20 69 6e 74 65 67 65 72  t signed integer
7a50: 20 72 6f 77 69 64 2e 0a 3c 2f 69 3e 3c 2f 62 6c   rowid..</i></bl
7a60: 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70 3e 41 6e  ockquote>..<p>An
7a70: 20 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59   INTEGER PRIMARY
7a80: 20 4b 45 59 20 63 6f 6c 75 6d 6e 20 63 61 6e 20   KEY column can 
7a90: 61 6c 73 6f 20 69 6e 63 6c 75 64 65 20 74 68 65  also include the
7aa0: 0a 6b 65 79 77 6f 72 64 20 5b 41 55 54 4f 49 4e  .keyword [AUTOIN
7ab0: 43 52 45 4d 45 4e 54 5d 2e 20 20 54 68 65 20 5b  CREMENT].  The [
7ac0: 41 55 54 4f 49 4e 43 52 45 4d 45 4e 54 5d 20 6b  AUTOINCREMENT] k
7ad0: 65 79 77 6f 72 64 20 6d 6f 64 69 66 69 65 64 20  eyword modified 
7ae0: 74 68 65 20 77 61 79 0a 74 68 61 74 20 42 2d 54  the way.that B-T
7af0: 72 65 65 20 6b 65 79 73 20 61 72 65 20 61 75 74  ree keys are aut
7b00: 6f 6d 61 74 69 63 61 6c 6c 79 20 67 65 6e 65 72  omatically gener
7b10: 61 74 65 64 2e 20 20 41 64 64 69 74 69 6f 6e 61  ated.  Additiona
7b20: 6c 20 64 65 74 61 69 6c 0a 6f 6e 20 61 75 74 6f  l detail.on auto
7b30: 6d 61 74 69 63 20 42 2d 54 72 65 65 20 6b 65 79  matic B-Tree key
7b40: 20 67 65 6e 65 72 61 74 69 6f 6e 20 69 73 20 61   generation is a
7b50: 76 61 69 6c 61 62 6c 65 0a 3c 61 20 68 72 65 66  vailable.<a href
7b60: 3d 22 61 75 74 6f 69 6e 63 2e 68 74 6d 6c 22 3e  ="autoinc.html">
7b70: 73 65 70 61 72 61 74 65 6c 79 3c 2f 61 3e 2e 3c  separately</a>.<
7b80: 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 73 70 65 63  /p>..<p>The spec
7b90: 69 61 6c 20 62 65 68 61 76 69 6f 72 20 6f 66 20  ial behavior of 
7ba0: 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59 20  INTEGER PRIMARY 
7bb0: 4b 45 59 0a 69 73 20 6f 6e 6c 79 20 61 76 61 69  KEY.is only avai
7bc0: 6c 61 62 6c 65 20 69 66 20 74 68 65 20 74 79 70  lable if the typ
7bd0: 65 20 6e 61 6d 65 20 69 73 20 65 78 61 63 74 6c  e name is exactl
7be0: 79 20 22 49 4e 54 45 47 45 52 22 20 28 69 6e 20  y "INTEGER" (in 
7bf0: 61 6e 79 20 6d 69 78 74 75 72 65 0a 6f 66 20 75  any mixture.of u
7c00: 70 70 65 72 20 61 6e 64 20 6c 6f 77 65 72 20 63  pper and lower c
7c10: 61 73 65 2e 29 20 20 4f 74 68 65 72 20 69 6e 74  ase.)  Other int
7c20: 65 67 65 72 20 74 79 70 65 20 6e 61 6d 65 73 0a  eger type names.
7c30: 6c 69 6b 65 20 22 49 4e 54 22 20 6f 72 20 22 42  like "INT" or "B
7c40: 49 47 49 4e 54 22 20 6f 72 20 22 53 48 4f 52 54  IGINT" or "SHORT
7c50: 20 49 4e 54 45 47 45 52 22 20 6f 72 20 22 55 4e   INTEGER" or "UN
7c60: 53 49 47 4e 45 44 20 49 4e 54 45 47 45 52 22 0a  SIGNED INTEGER".
7c70: 63 61 75 73 65 73 20 74 68 65 20 70 72 69 6d 61  causes the prima
7c80: 72 79 20 6b 65 79 20 63 6f 6c 75 6d 6e 20 74 6f  ry key column to
7c90: 20 62 65 68 61 76 65 20 61 73 20 61 6e 20 6f 72   behave as an or
7ca0: 64 69 6e 61 72 79 20 74 61 62 6c 65 20 63 6f 6c  dinary table col
7cb0: 75 6d 6e 20 77 69 74 68 0a 69 6e 74 65 67 65 72  umn with.integer
7cc0: 20 5b 61 66 66 69 6e 69 74 79 5d 20 61 6e 64 20   [affinity] and 
7cd0: 61 20 75 6e 69 71 75 65 20 69 6e 64 65 78 2c 20  a unique index, 
7ce0: 6e 6f 74 20 61 73 20 61 6e 20 61 6c 69 61 73 20  not as an alias 
7cf0: 66 6f 72 20 74 68 65 20 72 6f 77 69 64 2e 0a 54  for the rowid..T
7d00: 68 65 20 73 70 65 63 69 61 6c 20 62 65 68 61 76  he special behav
7d10: 69 6f 72 20 6f 66 20 49 4e 54 45 47 45 52 20 50  ior of INTEGER P
7d20: 52 49 4d 41 52 59 20 4b 45 59 20 69 73 20 6f 6e  RIMARY KEY is on
7d30: 6c 79 20 61 76 61 69 6c 61 62 6c 65 20 69 66 20  ly available if 
7d40: 74 68 65 0a 70 72 69 6d 61 72 79 20 6b 65 79 20  the.primary key 
7d50: 69 73 20 61 20 73 69 6e 67 6c 65 20 63 6f 6c 75  is a single colu
7d60: 6d 6e 2e 20 20 4d 75 6c 74 69 2d 63 6f 6c 75 6d  mn.  Multi-colum
7d70: 6e 20 70 72 69 6d 61 72 79 20 6b 65 79 73 20 64  n primary keys d
7d80: 6f 20 6e 6f 74 20 62 65 63 6f 6d 65 0a 61 6c 69  o not become.ali
7d90: 61 73 65 73 20 66 6f 72 20 74 68 65 20 72 6f 77  ases for the row
7da0: 69 64 2e 0a 54 68 65 20 41 55 54 4f 49 4e 43 52  id..The AUTOINCR
7db0: 45 4d 45 4e 54 20 6b 65 79 77 6f 72 64 20 6f 6e  EMENT keyword on
7dc0: 6c 79 20 77 6f 72 6b 73 20 6f 6e 20 61 20 63 6f  ly works on a co
7dd0: 6c 75 6d 6e 20 74 68 61 74 20 69 73 20 61 6e 20  lumn that is an 
7de0: 61 6c 69 61 73 0a 66 6f 72 20 74 68 65 20 72 6f  alias.for the ro
7df0: 77 69 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 4e 6f 74  wid.</p>..<p>Not
7e00: 65 20 74 68 61 74 20 73 65 61 72 63 68 65 73 20  e that searches 
7e10: 61 67 61 69 6e 73 74 20 61 20 72 6f 77 69 64 20  against a rowid 
7e20: 61 72 65 20 67 65 6e 65 72 61 6c 6c 79 20 61 62  are generally ab
7e30: 6f 75 74 20 74 77 69 63 65 20 61 73 0a 66 61 73  out twice as.fas
7e40: 74 20 61 73 20 73 65 61 72 63 68 65 73 20 61 67  t as searches ag
7e50: 61 69 6e 73 74 20 61 6e 79 20 6f 74 68 65 72 20  ainst any other 
7e60: 50 52 49 4d 41 52 59 20 4b 45 59 20 6f 72 20 69  PRIMARY KEY or i
7e70: 6e 64 65 78 65 64 20 76 61 6c 75 65 2e 0a 3c 2f  ndexed value..</
7e80: 70 3e 0a 0a 3c 70 3e 3c 62 3e 47 6f 6f 66 79 20  p>..<p><b>Goofy 
7e90: 62 65 68 61 76 69 6f 72 20 61 6c 65 72 74 3a 3c  behavior alert:<
7ea0: 2f 62 3e 20 20 54 68 65 20 66 6f 6c 6c 6f 77 69  /b>  The followi
7eb0: 6e 67 20 74 68 72 65 65 20 64 65 63 6c 61 72 61  ng three declara
7ec0: 74 69 6f 6e 73 20 61 6c 6c 20 63 61 75 73 65 0a  tions all cause.
7ed0: 74 68 65 20 63 6f 6c 75 6d 6e 20 22 78 22 20 62  the column "x" b
7ee0: 65 20 61 6e 20 61 6c 69 61 73 20 66 6f 72 20 74  e an alias for t
7ef0: 68 65 20 72 6f 77 69 64 3a 3c 2f 70 3e 0a 0a 3c  he rowid:</p>..<
7f00: 75 6c 3e 0a 3c 6c 69 3e 3c 74 74 3e 43 52 45 41  ul>.<li><tt>CREA
7f10: 54 45 20 54 41 42 4c 45 20 74 28 78 20 49 4e 54  TE TABLE t(x INT
7f20: 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59  EGER PRIMARY KEY
7f30: 20 41 53 43 2c 20 79 2c 20 7a 29 3b 3c 2f 74 74   ASC, y, z);</tt
7f40: 3e 0a 3c 6c 69 3e 3c 74 74 3e 43 52 45 41 54 45  >.<li><tt>CREATE
7f50: 20 54 41 42 4c 45 20 74 28 78 20 49 4e 54 45 47   TABLE t(x INTEG
7f60: 45 52 2c 20 79 2c 20 7a 2c 20 50 52 49 4d 41 52  ER, y, z, PRIMAR
7f70: 59 20 4b 45 59 28 78 20 41 53 43 29 29 3b 3c 2f  Y KEY(x ASC));</
7f80: 74 74 3e 0a 3c 6c 69 3e 3c 74 74 3e 43 52 45 41  tt>.<li><tt>CREA
7f90: 54 45 20 54 41 42 4c 45 20 74 28 78 20 49 4e 54  TE TABLE t(x INT
7fa0: 45 47 45 52 2c 20 79 2c 20 7a 2c 20 50 52 49 4d  EGER, y, z, PRIM
7fb0: 41 52 59 20 4b 45 59 28 78 20 44 45 53 43 29 29  ARY KEY(x DESC))
7fc0: 3b 3c 2f 74 74 3e 0a 3c 2f 75 6c 3e 0a 0a 3c 70  ;</tt>.</ul>..<p
7fd0: 3e 42 75 74 2c 20 69 6e 20 63 6f 6e 74 72 61 73  >But, in contras
7fe0: 74 2c 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  t, the following
7ff0: 20 64 65 63 6c 61 72 61 74 69 6f 6e 20 64 6f 65   declaration doe
8000: 73 20 3c 75 3e 6e 6f 74 3c 2f 75 3e 20 72 65 73  s <u>not</u> res
8010: 75 6c 74 20 69 6e 0a 22 78 22 20 62 65 69 6e 67  ult in."x" being
8020: 20 61 6e 20 61 6c 69 61 73 20 66 6f 72 20 74 68   an alias for th
8030: 65 20 72 6f 77 69 64 3a 3c 2f 70 3e 0a 0a 3c 75  e rowid:</p>..<u
8040: 6c 3e 0a 3c 6c 69 3e 3c 74 74 3e 43 52 45 41 54  l>.<li><tt>CREAT
8050: 45 20 54 41 42 4c 45 20 74 28 78 20 49 4e 54 45  E TABLE t(x INTE
8060: 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 20  GER PRIMARY KEY 
8070: 44 45 53 43 2c 20 79 2c 20 7a 29 3b 3c 2f 74 74  DESC, y, z);</tt
8080: 3e 0a 3c 2f 75 6c 3e 0a 0a 3c 70 3e 54 68 69 73  >.</ul>..<p>This
8090: 20 61 73 79 6d 6d 65 74 72 69 63 61 6c 20 62 65   asymmetrical be
80a0: 68 61 76 69 6f 72 20 69 73 20 75 6e 66 6f 72 74  havior is unfort
80b0: 75 6e 61 74 65 20 61 6e 64 20 69 73 20 72 65 61  unate and is rea
80c0: 6c 6c 79 20 64 75 65 20 74 6f 20 61 20 62 75 67  lly due to a bug
80d0: 0a 69 6e 20 74 68 65 20 70 61 72 73 65 72 20 69  .in the parser i
80e0: 6e 20 65 61 72 6c 79 20 76 65 72 73 69 6f 6e 73  n early versions
80f0: 20 6f 66 20 53 51 4c 69 74 65 2e 20 20 42 75 74   of SQLite.  But
8100: 20 66 69 78 69 6e 67 20 74 68 65 20 62 75 67 20   fixing the bug 
8110: 77 6f 75 6c 64 0a 72 65 73 75 6c 74 20 69 6e 20  would.result in 
8120: 76 65 72 79 20 73 65 72 69 6f 75 73 20 62 61 63  very serious bac
8130: 6b 77 61 72 64 73 20 69 6e 63 6f 6d 70 61 74 69  kwards incompati
8140: 62 69 6c 69 74 69 65 73 2e 20 20 54 68 65 20 53  bilities.  The S
8150: 51 4c 69 74 65 20 64 65 76 65 6c 6f 70 65 72 73  QLite developers
8160: 0a 66 65 65 6c 20 74 68 61 74 20 67 6f 6f 66 79  .feel that goofy
8170: 20 62 65 68 61 76 69 6f 72 20 69 6e 20 61 6e 20   behavior in an 
8180: 63 6f 72 6e 65 72 20 63 61 73 65 20 69 73 20 66  corner case is f
8190: 61 72 20 62 65 74 74 65 72 20 74 68 61 6e 0a 61  ar better than.a
81a0: 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 62   compatibility b
81b0: 72 65 61 6b 2c 20 73 6f 20 74 68 65 20 6f 72 69  reak, so the ori
81c0: 67 69 6e 61 6c 20 62 65 68 61 76 69 6f 72 20 69  ginal behavior i
81d0: 73 20 72 65 74 61 69 6e 65 64 2e 3c 2f 70 3e 0a  s retained.</p>.
81e0: 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23  .<tcl>.#########
81f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8200: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8210: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8220: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8230: 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b 43  #####.Section {C
8240: 52 45 41 54 45 20 54 52 49 47 47 45 52 7d 20 63  REATE TRIGGER} c
8250: 72 65 61 74 65 74 72 69 67 67 65 72 20 7b 7b 43  reatetrigger {{C
8260: 52 45 41 54 45 20 54 52 49 47 47 45 52 7d 7d 0a  REATE TRIGGER}}.
8270: 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 63  .BubbleDiagram c
8280: 72 65 61 74 65 2d 74 72 69 67 67 65 72 2d 73 74  reate-trigger-st
8290: 6d 74 20 31 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e  mt 1.</tcl>..<p>
82a0: 54 68 65 20 43 52 45 41 54 45 20 54 52 49 47 47  The CREATE TRIGG
82b0: 45 52 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20  ER statement is 
82c0: 75 73 65 64 20 74 6f 20 61 64 64 20 74 72 69 67  used to add trig
82d0: 67 65 72 73 20 74 6f 20 74 68 65 20 0a 64 61 74  gers to the .dat
82e0: 61 62 61 73 65 20 73 63 68 65 6d 61 2e 20 54 72  abase schema. Tr
82f0: 69 67 67 65 72 73 20 61 72 65 20 64 61 74 61 62  iggers are datab
8300: 61 73 65 20 6f 70 65 72 61 74 69 6f 6e 73 20 0a  ase operations .
8310: 74 68 61 74 20 61 72 65 20 61 75 74 6f 6d 61 74  that are automat
8320: 69 63 61 6c 6c 79 20 70 65 72 66 6f 72 6d 65 64  ically performed
8330: 20 77 68 65 6e 20 61 20 73 70 65 63 69 66 69 65   when a specifie
8340: 64 20 64 61 74 61 62 61 73 65 20 65 76 65 6e 74  d database event
8350: 0a 6f 63 63 75 72 73 2e 20 20 3c 2f 70 3e 0a 0a  .occurs.  </p>..
8360: 3c 70 3e 41 20 74 72 69 67 67 65 72 20 6d 61 79  <p>A trigger may
8370: 20 62 65 20 73 70 65 63 69 66 69 65 64 20 74 6f   be specified to
8380: 20 66 69 72 65 20 77 68 65 6e 65 76 65 72 20 61   fire whenever a
8390: 20 5b 44 45 4c 45 54 45 5d 2c 20 5b 49 4e 53 45   [DELETE], [INSE
83a0: 52 54 5d 2c 0a 6f 72 20 5b 55 50 44 41 54 45 5d  RT],.or [UPDATE]
83b0: 20 6f 66 20 61 0a 70 61 72 74 69 63 75 6c 61 72   of a.particular
83c0: 20 64 61 74 61 62 61 73 65 20 74 61 62 6c 65 20   database table 
83d0: 6f 63 63 75 72 73 2c 20 6f 72 20 77 68 65 6e 65  occurs, or whene
83e0: 76 65 72 20 61 6e 20 5b 55 50 44 41 54 45 5d 20  ver an [UPDATE] 
83f0: 6f 66 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 0a 73  of one or more.s
8400: 70 65 63 69 66 69 65 64 20 63 6f 6c 75 6d 6e 73  pecified columns
8410: 20 6f 66 20 61 20 74 61 62 6c 65 20 61 72 65 20   of a table are 
8420: 75 70 64 61 74 65 64 2e 3c 2f 70 3e 0a 0a 3c 70  updated.</p>..<p
8430: 3e 41 74 20 74 68 69 73 20 74 69 6d 65 20 53 51  >At this time SQ
8440: 4c 69 74 65 20 73 75 70 70 6f 72 74 73 20 6f 6e  Lite supports on
8450: 6c 79 20 46 4f 52 20 45 41 43 48 20 52 4f 57 20  ly FOR EACH ROW 
8460: 74 72 69 67 67 65 72 73 2c 20 6e 6f 74 20 46 4f  triggers, not FO
8470: 52 20 45 41 43 48 0a 53 54 41 54 45 4d 45 4e 54  R EACH.STATEMENT
8480: 20 74 72 69 67 67 65 72 73 2e 20 48 65 6e 63 65   triggers. Hence
8490: 20 65 78 70 6c 69 63 69 74 6c 79 20 73 70 65 63   explicitly spec
84a0: 69 66 79 69 6e 67 20 46 4f 52 20 45 41 43 48 20  ifying FOR EACH 
84b0: 52 4f 57 20 69 73 20 6f 70 74 69 6f 6e 61 6c 2e  ROW is optional.
84c0: 20 20 46 4f 52 0a 45 41 43 48 20 52 4f 57 20 69    FOR.EACH ROW i
84d0: 6d 70 6c 69 65 73 20 74 68 61 74 20 74 68 65 20  mplies that the 
84e0: 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 20 73  SQL statements s
84f0: 70 65 63 69 66 69 65 64 20 69 6e 20 74 68 65 20  pecified in the 
8500: 74 72 69 67 67 65 72 0a 6d 61 79 20 62 65 20 65  trigger.may be e
8510: 78 65 63 75 74 65 64 20 28 64 65 70 65 6e 64 69  xecuted (dependi
8520: 6e 67 20 6f 6e 20 74 68 65 20 57 48 45 4e 20 63  ng on the WHEN c
8530: 6c 61 75 73 65 29 20 66 6f 72 20 65 61 63 68 20  lause) for each 
8540: 64 61 74 61 62 61 73 65 20 72 6f 77 20 62 65 69  database row bei
8550: 6e 67 0a 69 6e 73 65 72 74 65 64 2c 20 75 70 64  ng.inserted, upd
8560: 61 74 65 64 20 6f 72 20 64 65 6c 65 74 65 64 20  ated or deleted 
8570: 62 79 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74  by the statement
8580: 20 63 61 75 73 69 6e 67 20 74 68 65 20 74 72 69   causing the tri
8590: 67 67 65 72 20 74 6f 20 66 69 72 65 2e 3c 2f 70  gger to fire.</p
85a0: 3e 0a 0a 3c 70 3e 42 6f 74 68 20 74 68 65 20 57  >..<p>Both the W
85b0: 48 45 4e 20 63 6c 61 75 73 65 20 61 6e 64 20 74  HEN clause and t
85c0: 68 65 20 74 72 69 67 67 65 72 20 61 63 74 69 6f  he trigger actio
85d0: 6e 73 20 6d 61 79 20 61 63 63 65 73 73 20 65 6c  ns may access el
85e0: 65 6d 65 6e 74 73 20 6f 66 20 0a 74 68 65 20 72  ements of .the r
85f0: 6f 77 20 62 65 69 6e 67 20 69 6e 73 65 72 74 65  ow being inserte
8600: 64 2c 20 64 65 6c 65 74 65 64 20 6f 72 20 75 70  d, deleted or up
8610: 64 61 74 65 64 20 75 73 69 6e 67 20 72 65 66 65  dated using refe
8620: 72 65 6e 63 65 73 20 6f 66 20 74 68 65 20 66 6f  rences of the fo
8630: 72 6d 20 0a 22 4e 45 57 2e 3c 69 3e 63 6f 6c 75  rm ."NEW.<i>colu
8640: 6d 6e 2d 6e 61 6d 65 3c 2f 69 3e 22 20 61 6e 64  mn-name</i>" and
8650: 20 22 4f 4c 44 2e 3c 69 3e 63 6f 6c 75 6d 6e 2d   "OLD.<i>column-
8660: 6e 61 6d 65 3c 2f 69 3e 22 2c 20 77 68 65 72 65  name</i>", where
8670: 0a 3c 69 3e 63 6f 6c 75 6d 6e 2d 6e 61 6d 65 3c  .<i>column-name<
8680: 2f 69 3e 20 69 73 20 74 68 65 20 6e 61 6d 65 20  /i> is the name 
8690: 6f 66 20 61 20 63 6f 6c 75 6d 6e 20 66 72 6f 6d  of a column from
86a0: 20 74 68 65 20 74 61 62 6c 65 20 74 68 61 74 20   the table that 
86b0: 74 68 65 20 74 72 69 67 67 65 72 0a 69 73 20 61  the trigger.is a
86c0: 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 2e 20  ssociated with. 
86d0: 4f 4c 44 20 61 6e 64 20 4e 45 57 20 72 65 66 65  OLD and NEW refe
86e0: 72 65 6e 63 65 73 20 6d 61 79 20 6f 6e 6c 79 20  rences may only 
86f0: 62 65 20 75 73 65 64 20 69 6e 20 74 72 69 67 67  be used in trigg
8700: 65 72 73 20 6f 6e 0a 65 76 65 6e 74 73 20 66 6f  ers on.events fo
8710: 72 20 77 68 69 63 68 20 74 68 65 79 20 61 72 65  r which they are
8720: 20 72 65 6c 65 76 61 6e 74 2c 20 61 73 20 66 6f   relevant, as fo
8730: 6c 6c 6f 77 73 3a 3c 2f 70 3e 0a 0a 3c 74 61 62  llows:</p>..<tab
8740: 6c 65 20 62 6f 72 64 65 72 3d 30 20 63 65 6c 6c  le border=0 cell
8750: 70 61 64 64 69 6e 67 3d 31 30 3e 0a 3c 74 72 3e  padding=10>.<tr>
8760: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
8770: 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 20  " align="right" 
8780: 77 69 64 74 68 3d 31 32 30 3e 3c 69 3e 49 4e 53  width=120><i>INS
8790: 45 52 54 3c 2f 69 3e 3c 2f 74 64 3e 0a 3c 74 64  ERT</i></td>.<td
87a0: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 4e 45   valign="top">NE
87b0: 57 20 72 65 66 65 72 65 6e 63 65 73 20 61 72 65  W references are
87c0: 20 76 61 6c 69 64 3c 2f 74 64 3e 0a 3c 2f 74 72   valid</td>.</tr
87d0: 3e 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67  >.<tr>.<td valig
87e0: 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72  n="top" align="r
87f0: 69 67 68 74 22 20 77 69 64 74 68 3d 31 32 30 3e  ight" width=120>
8800: 3c 69 3e 55 50 44 41 54 45 3c 2f 69 3e 3c 2f 74  <i>UPDATE</i></t
8810: 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  d>.<td valign="t
8820: 6f 70 22 3e 4e 45 57 20 61 6e 64 20 4f 4c 44 20  op">NEW and OLD 
8830: 72 65 66 65 72 65 6e 63 65 73 20 61 72 65 20 76  references are v
8840: 61 6c 69 64 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a  alid</td>.</tr>.
8850: 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  <tr>.<td valign=
8860: 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67  "top" align="rig
8870: 68 74 22 20 77 69 64 74 68 3d 31 32 30 3e 3c 69  ht" width=120><i
8880: 3e 44 45 4c 45 54 45 3c 2f 69 3e 3c 2f 74 64 3e  >DELETE</i></td>
8890: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
88a0: 22 3e 4f 4c 44 20 72 65 66 65 72 65 6e 63 65 73  ">OLD references
88b0: 20 61 72 65 20 76 61 6c 69 64 3c 2f 74 64 3e 0a   are valid</td>.
88c0: 3c 2f 74 72 3e 0a 3c 2f 74 61 62 6c 65 3e 0a 3c  </tr>.</table>.<
88d0: 2f 70 3e 0a 0a 3c 70 3e 49 66 20 61 20 57 48 45  /p>..<p>If a WHE
88e0: 4e 20 63 6c 61 75 73 65 20 69 73 20 73 75 70 70  N clause is supp
88f0: 6c 69 65 64 2c 20 74 68 65 20 53 51 4c 20 73 74  lied, the SQL st
8900: 61 74 65 6d 65 6e 74 73 20 73 70 65 63 69 66 69  atements specifi
8910: 65 64 0a 61 72 65 20 6f 6e 6c 79 20 65 78 65 63  ed.are only exec
8920: 75 74 65 64 20 66 6f 72 20 72 6f 77 73 20 66 6f  uted for rows fo
8930: 72 20 77 68 69 63 68 20 74 68 65 20 57 48 45 4e  r which the WHEN
8940: 0a 63 6c 61 75 73 65 20 69 73 20 74 72 75 65 2e  .clause is true.
8950: 20 49 66 20 6e 6f 20 57 48 45 4e 20 63 6c 61 75   If no WHEN clau
8960: 73 65 20 69 73 20 73 75 70 70 6c 69 65 64 2c 20  se is supplied, 
8970: 74 68 65 20 53 51 4c 20 73 74 61 74 65 6d 65 6e  the SQL statemen
8980: 74 73 0a 61 72 65 20 65 78 65 63 75 74 65 64 20  ts.are executed 
8990: 66 6f 72 20 61 6c 6c 20 72 6f 77 73 2e 3c 2f 70  for all rows.</p
89a0: 3e 0a 0a 3c 70 3e 54 68 65 20 42 45 46 4f 52 45  >..<p>The BEFORE
89b0: 20 6f 72 20 41 46 54 45 52 20 6b 65 79 77 6f 72   or AFTER keywor
89c0: 64 20 64 65 74 65 72 6d 69 6e 65 73 20 77 68 65  d determines whe
89d0: 6e 20 74 68 65 20 74 72 69 67 67 65 72 20 61 63  n the trigger ac
89e0: 74 69 6f 6e 73 0a 77 69 6c 6c 20 62 65 20 65 78  tions.will be ex
89f0: 65 63 75 74 65 64 20 72 65 6c 61 74 69 76 65 20  ecuted relative 
8a00: 74 6f 20 74 68 65 20 69 6e 73 65 72 74 69 6f 6e  to the insertion
8a10: 2c 20 6d 6f 64 69 66 69 63 61 74 69 6f 6e 20 6f  , modification o
8a20: 72 20 72 65 6d 6f 76 61 6c 20 6f 66 20 74 68 65  r removal of the
8a30: 0a 61 73 73 6f 63 69 61 74 65 64 20 72 6f 77 2e  .associated row.
8a40: 3c 2f 70 3e 0a 0a 3c 70 3e 41 6e 20 5b 4f 4e 20  </p>..<p>An [ON 
8a50: 43 4f 4e 46 4c 49 43 54 5d 20 63 6c 61 75 73 65  CONFLICT] clause
8a60: 20 6d 61 79 20 62 65 20 73 70 65 63 69 66 69 65   may be specifie
8a70: 64 20 61 73 20 70 61 72 74 20 6f 66 20 61 6e 20  d as part of an 
8a80: 5b 55 50 44 41 54 45 5d 20 6f 72 20 5b 49 4e 53  [UPDATE] or [INS
8a90: 45 52 54 5d 0a 61 63 74 69 6f 6e 20 77 69 74 68  ERT].action with
8aa0: 69 6e 20 74 68 65 20 62 6f 64 79 20 6f 66 20 74  in the body of t
8ab0: 68 65 20 74 72 69 67 67 65 72 2e 0a 48 6f 77 65  he trigger..Howe
8ac0: 76 65 72 20 69 66 20 61 6e 20 5b 4f 4e 20 43 4f  ver if an [ON CO
8ad0: 4e 46 4c 49 43 54 5d 20 63 6c 61 75 73 65 20 69  NFLICT] clause i
8ae0: 73 20 73 70 65 63 69 66 69 65 64 20 61 73 20 70  s specified as p
8af0: 61 72 74 20 6f 66 20 0a 74 68 65 20 73 74 61 74  art of .the stat
8b00: 65 6d 65 6e 74 20 63 61 75 73 69 6e 67 20 74 68  ement causing th
8b10: 65 20 74 72 69 67 67 65 72 20 74 6f 20 66 69 72  e trigger to fir
8b20: 65 2c 20 74 68 65 6e 20 63 6f 6e 66 6c 69 63 74  e, then conflict
8b30: 20 68 61 6e 64 6c 69 6e 67 0a 70 6f 6c 69 63 79   handling.policy
8b40: 20 6f 66 20 74 68 65 20 6f 75 74 65 72 20 73 74   of the outer st
8b50: 61 74 65 6d 65 6e 74 20 69 73 20 75 73 65 64 20  atement is used 
8b60: 69 6e 73 74 65 61 64 2e 3c 2f 70 3e 0a 0a 3c 70  instead.</p>..<p
8b70: 3e 54 72 69 67 67 65 72 73 20 61 72 65 20 61 75  >Triggers are au
8b80: 74 6f 6d 61 74 69 63 61 6c 6c 79 20 5b 44 52 4f  tomatically [DRO
8b90: 50 20 54 52 49 47 47 45 52 20 7c 20 64 72 6f 70  P TRIGGER | drop
8ba0: 70 65 64 5d 0a 77 68 65 6e 20 74 68 65 20 74 61  ped].when the ta
8bb0: 62 6c 65 20 74 68 61 74 20 74 68 65 79 20 61 72  ble that they ar
8bc0: 65 20 0a 61 73 73 6f 63 69 61 74 65 64 20 77 69  e .associated wi
8bd0: 74 68 20 28 74 68 65 20 3c 69 3e 74 61 62 6c 65  th (the <i>table
8be0: 2d 6e 61 6d 65 3c 2f 69 3e 20 74 61 62 6c 65 29  -name</i> table)
8bf0: 20 69 73 20 0a 5b 44 52 4f 50 20 54 41 42 4c 45   is .[DROP TABLE
8c00: 20 7c 20 64 72 6f 70 70 65 64 5d 2e 20 20 48 6f   | dropped].  Ho
8c10: 77 65 76 65 72 20 69 66 20 74 68 65 20 74 68 65  wever if the the
8c20: 20 74 72 69 67 67 65 72 20 61 63 74 69 6f 6e 73   trigger actions
8c30: 20 72 65 66 65 72 65 6e 63 65 0a 6f 74 68 65 72   reference.other
8c40: 20 74 61 62 6c 65 73 2c 20 74 68 65 20 74 72 69   tables, the tri
8c50: 67 67 65 72 20 69 73 20 6e 6f 74 20 64 72 6f 70  gger is not drop
8c60: 70 65 64 20 6f 72 20 6d 6f 64 69 66 69 65 64 20  ped or modified 
8c70: 69 66 20 74 68 6f 73 65 20 6f 74 68 65 72 0a 74  if those other.t
8c80: 61 62 6c 65 73 20 61 72 65 20 5b 44 52 4f 50 20  ables are [DROP 
8c90: 54 41 42 4c 45 20 7c 20 64 72 6f 70 70 65 64 5d  TABLE | dropped]
8ca0: 20 6f 72 20 5b 41 4c 54 45 52 20 54 41 42 4c 45   or [ALTER TABLE
8cb0: 20 7c 20 6d 6f 64 69 66 69 65 64 5d 2e 3c 2f 70   | modified].</p
8cc0: 3e 0a 0a 3c 70 3e 54 72 69 67 67 65 72 73 20 61  >..<p>Triggers a
8cd0: 72 65 20 72 65 6d 6f 76 65 64 20 75 73 69 6e 67  re removed using
8ce0: 20 74 68 65 20 5b 44 52 4f 50 20 54 52 49 47 47   the [DROP TRIGG
8cf0: 45 52 5d 20 73 74 61 74 65 6d 65 6e 74 2e 3c 2f  ER] statement.</
8d00: 70 3e 0a 0a 3c 68 33 3e 53 79 6e 74 61 78 20 52  p>..<h3>Syntax R
8d10: 65 73 74 72 69 63 74 69 6f 6e 73 20 4f 6e 20 55  estrictions On U
8d20: 50 44 41 54 45 2c 20 44 45 4c 45 54 45 2c 20 61  PDATE, DELETE, a
8d30: 6e 64 20 49 4e 53 45 52 54 20 53 74 61 74 65 6d  nd INSERT Statem
8d40: 65 6e 74 73 20 57 69 74 68 69 6e 0a 20 20 20 20  ents Within.    
8d50: 54 72 69 67 67 65 72 73 3c 2f 68 33 3e 0a 0a 3c  Triggers</h3>..<
8d60: 70 3e 54 68 65 20 5b 55 50 44 41 54 45 5d 2c 20  p>The [UPDATE], 
8d70: 5b 44 45 4c 45 54 45 5d 2c 20 61 6e 64 20 5b 49  [DELETE], and [I
8d80: 4e 53 45 52 54 5d 0a 73 74 61 74 65 6d 65 6e 74  NSERT].statement
8d90: 73 20 77 69 74 68 69 6e 20 74 72 69 67 67 65 72  s within trigger
8da0: 73 20 64 6f 20 6e 6f 74 20 73 75 70 70 6f 72 74  s do not support
8db0: 0a 74 68 65 20 66 75 6c 6c 20 73 79 6e 74 61 78  .the full syntax
8dc0: 20 66 6f 72 20 5b 55 50 44 41 54 45 5d 2c 20 5b   for [UPDATE], [
8dd0: 44 45 4c 45 54 45 5d 2c 20 61 6e 64 20 5b 49 4e  DELETE], and [IN
8de0: 53 45 52 54 5d 20 73 74 61 74 65 6d 65 6e 74 73  SERT] statements
8df0: 2e 20 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  .  The following
8e00: 0a 72 65 73 74 72 69 63 74 69 6f 6e 73 20 61 70  .restrictions ap
8e10: 70 6c 79 3a 3c 2f 70 3e 0a 0a 3c 75 6c 3e 0a 3c  ply:</p>..<ul>.<
8e20: 6c 69 3e 3c 70 3e 0a 20 20 54 68 65 20 6e 61 6d  li><p>.  The nam
8e30: 65 20 6f 66 20 74 68 65 20 74 61 62 6c 65 20 74  e of the table t
8e40: 6f 20 62 65 20 6d 6f 64 69 66 69 65 64 20 69 6e  o be modified in
8e50: 20 61 6e 20 5b 55 50 44 41 54 45 5d 2c 20 5b 44   an [UPDATE], [D
8e60: 45 4c 45 54 45 5d 2c 20 6f 72 20 5b 49 4e 53 45  ELETE], or [INSE
8e70: 52 54 5d 0a 20 20 73 74 61 74 65 6d 65 6e 74 20  RT].  statement 
8e80: 6d 75 73 74 20 62 65 20 61 6e 20 75 6e 71 75 61  must be an unqua
8e90: 6c 69 66 69 65 64 20 74 61 62 6c 65 20 6e 61 6d  lified table nam
8ea0: 65 2e 20 20 49 6e 20 6f 74 68 65 72 20 77 6f 72  e.  In other wor
8eb0: 64 73 2c 20 6f 6e 65 20 6d 75 73 74 0a 20 20 75  ds, one must.  u
8ec0: 73 65 20 6a 75 73 74 20 22 3c 69 3e 74 61 62 6c  se just "<i>tabl
8ed0: 65 6e 61 6d 65 3c 2f 69 3e 22 20 6e 6f 74 20 22  ename</i>" not "
8ee0: 3c 69 3e 64 61 74 61 62 61 73 65 3c 2f 69 3e 3c  <i>database</i><
8ef0: 62 3e 2e 3c 2f 62 3e 3c 69 3e 74 61 62 6c 65 6e  b>.</b><i>tablen
8f00: 61 6d 65 3c 2f 69 3e 22 0a 20 20 77 68 65 6e 20  ame</i>".  when 
8f10: 73 70 65 63 69 66 79 69 6e 67 20 74 68 65 20 74  specifying the t
8f20: 61 62 6c 65 2e 20 20 54 68 65 20 74 61 62 6c 65  able.  The table
8f30: 20 74 6f 20 62 65 20 6d 6f 64 69 66 69 65 64 20   to be modified 
8f40: 6d 75 73 74 20 65 78 69 73 74 20 69 6e 20 74 68  must exist in th
8f50: 65 0a 20 20 73 61 6d 65 20 64 61 74 61 62 61 73  e.  same databas
8f60: 65 20 61 73 20 74 68 65 20 74 61 62 6c 65 20 6f  e as the table o
8f70: 72 20 76 69 65 77 20 74 6f 20 77 68 69 63 68 20  r view to which 
8f80: 74 68 65 20 74 72 69 67 67 65 72 20 69 73 20 61  the trigger is a
8f90: 74 74 61 63 68 65 64 2e 0a 20 20 3c 2f 70 3e 3c  ttached..  </p><
8fa0: 2f 6c 69 3e 0a 0a 3c 6c 69 3e 3c 70 3e 0a 20 20  /li>..<li><p>.  
8fb0: 54 68 65 20 22 49 4e 53 45 52 54 20 49 4e 54 4f  The "INSERT INTO
8fc0: 20 3c 69 3e 74 61 62 6c 65 3c 2f 69 3e 20 44 45   <i>table</i> DE
8fd0: 46 41 55 4c 54 20 56 41 4c 55 45 53 22 20 66 6f  FAULT VALUES" fo
8fe0: 72 6d 20 6f 66 20 74 68 65 20 5b 49 4e 53 45 52  rm of the [INSER
8ff0: 54 5d 20 73 74 61 74 65 6d 65 6e 74 0a 20 20 69  T] statement.  i
9000: 73 20 6e 6f 74 20 73 75 70 70 6f 72 74 65 64 2e  s not supported.
9010: 0a 20 20 3c 2f 70 3e 3c 2f 6c 69 3e 0a 0a 3c 6c  .  </p></li>..<l
9020: 69 3e 3c 70 3e 0a 20 20 54 68 65 20 49 4e 44 45  i><p>.  The INDE
9030: 58 45 44 20 42 59 20 61 6e 64 20 4e 4f 54 20 49  XED BY and NOT I
9040: 4e 44 45 58 45 44 20 63 6c 61 75 73 65 73 20 61  NDEXED clauses a
9050: 72 65 20 6e 6f 74 20 73 75 70 70 6f 72 74 65 64  re not supported
9060: 20 66 6f 72 20 5b 55 50 44 41 54 45 5d 20 61 6e   for [UPDATE] an
9070: 64 0a 20 20 5b 44 45 4c 45 54 45 5d 20 73 74 61  d.  [DELETE] sta
9080: 74 65 6d 65 6e 74 73 2e 0a 20 20 3c 2f 70 3e 3c  tements..  </p><
9090: 2f 6c 69 3e 0a 0a 3c 6c 69 3e 3c 70 3e 0a 20 20  /li>..<li><p>.  
90a0: 54 68 65 20 4f 52 44 45 52 20 42 59 20 61 6e 64  The ORDER BY and
90b0: 20 4c 49 4d 49 54 20 63 6c 61 75 73 65 73 20 6f   LIMIT clauses o
90c0: 6e 20 5b 55 50 44 41 54 45 5d 20 61 6e 64 20 5b  n [UPDATE] and [
90d0: 44 45 4c 45 54 45 5d 20 73 74 61 74 65 6d 65 6e  DELETE] statemen
90e0: 74 73 20 61 72 65 20 6e 6f 74 0a 20 20 73 75 70  ts are not.  sup
90f0: 70 6f 72 74 65 64 2e 20 20 4f 52 44 45 52 20 42  ported.  ORDER B
9100: 59 20 61 6e 64 20 4c 49 4d 49 54 20 61 72 65 20  Y and LIMIT are 
9110: 6e 6f 74 20 6e 6f 72 6d 61 6c 6c 79 20 73 75 70  not normally sup
9120: 70 6f 72 74 65 64 20 66 6f 72 20 5b 55 50 44 41  ported for [UPDA
9130: 54 45 5d 20 6f 72 0a 20 20 5b 44 45 4c 45 54 45  TE] or.  [DELETE
9140: 5d 20 69 6e 20 61 6e 79 20 63 6f 6e 74 65 78 74  ] in any context
9150: 20 62 75 74 20 63 61 6e 20 62 65 20 65 6e 61 62   but can be enab
9160: 6c 65 64 20 66 6f 72 20 74 6f 70 2d 6c 65 76 65  led for top-leve
9170: 6c 20 73 74 61 74 65 6d 65 6e 74 73 0a 20 20 75  l statements.  u
9180: 73 69 6e 67 20 74 68 65 20 5b 53 51 4c 49 54 45  sing the [SQLITE
9190: 5f 45 4e 41 42 4c 45 5f 55 50 44 41 54 45 5f 44  _ENABLE_UPDATE_D
91a0: 45 4c 45 54 45 5f 4c 49 4d 49 54 5d 20 63 6f 6d  ELETE_LIMIT] com
91b0: 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e  pile-time option
91c0: 2e 20 20 48 6f 77 65 76 65 72 2c 0a 20 20 74 68  .  However,.  th
91d0: 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  at compile-time 
91e0: 6f 70 74 69 6f 6e 20 6f 6e 6c 79 20 61 70 70 6c  option only appl
91f0: 69 65 73 20 74 6f 20 74 6f 70 2d 6c 65 76 65 6c  ies to top-level
9200: 20 5b 55 50 44 41 54 45 5d 20 61 6e 64 20 5b 44   [UPDATE] and [D
9210: 45 4c 45 54 45 5d 0a 20 20 73 74 61 74 65 6d 65  ELETE].  stateme
9220: 6e 74 73 2c 20 6e 6f 74 20 5b 55 50 44 41 54 45  nts, not [UPDATE
9230: 5d 20 61 6e 64 20 5b 44 45 4c 45 54 45 5d 20 73  ] and [DELETE] s
9240: 74 61 74 65 6d 65 6e 74 73 20 77 69 74 68 69 6e  tatements within
9250: 20 74 72 69 67 67 65 72 73 2e 0a 20 20 3c 2f 70   triggers..  </p
9260: 3e 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e 0a 0a 3c 74  ></li>.</ul>..<t
9270: 63 6c 3e 68 64 5f 66 72 61 67 6d 65 6e 74 20 69  cl>hd_fragment i
9280: 6e 73 74 65 61 64 5f 6f 66 5f 74 72 69 67 67 65  nstead_of_trigge
9290: 72 20 7b 49 4e 53 54 45 41 44 20 4f 46 7d 20 7b  r {INSTEAD OF} {
92a0: 49 4e 53 54 45 41 44 20 4f 46 20 74 72 69 67 67  INSTEAD OF trigg
92b0: 65 72 7d 3c 2f 74 63 6c 3e 0a 3c 68 33 3e 49 4e  er}</tcl>.<h3>IN
92c0: 53 54 45 41 44 20 4f 46 20 74 72 69 67 67 65 72  STEAD OF trigger
92d0: 3c 2f 68 33 3e 0a 0a 3c 70 3e 54 72 69 67 67 65  </h3>..<p>Trigge
92e0: 72 73 20 6d 61 79 20 62 65 20 63 72 65 61 74 65  rs may be create
92f0: 64 20 6f 6e 20 5b 76 69 65 77 73 5d 2c 20 61 73  d on [views], as
9300: 20 77 65 6c 6c 20 61 73 20 6f 72 64 69 6e 61 72   well as ordinar
9310: 79 20 74 61 62 6c 65 73 2c 20 62 79 0a 73 70 65  y tables, by.spe
9320: 63 69 66 79 69 6e 67 20 49 4e 53 54 45 41 44 20  cifying INSTEAD 
9330: 4f 46 20 69 6e 20 74 68 65 20 43 52 45 41 54 45  OF in the CREATE
9340: 20 54 52 49 47 47 45 52 20 73 74 61 74 65 6d 65   TRIGGER stateme
9350: 6e 74 2e 20 0a 49 66 20 6f 6e 65 20 6f 72 20 6d  nt. .If one or m
9360: 6f 72 65 20 4f 4e 20 49 4e 53 45 52 54 2c 20 4f  ore ON INSERT, O
9370: 4e 20 44 45 4c 45 54 45 0a 6f 72 20 4f 4e 20 55  N DELETE.or ON U
9380: 50 44 41 54 45 20 74 72 69 67 67 65 72 73 20 61  PDATE triggers a
9390: 72 65 20 64 65 66 69 6e 65 64 20 6f 6e 20 61 20  re defined on a 
93a0: 76 69 65 77 2c 20 74 68 65 6e 20 69 74 20 69 73  view, then it is
93b0: 20 6e 6f 74 20 61 6e 0a 65 72 72 6f 72 20 74 6f   not an.error to
93c0: 20 65 78 65 63 75 74 65 20 61 6e 20 49 4e 53 45   execute an INSE
93d0: 52 54 2c 20 44 45 4c 45 54 45 20 6f 72 20 55 50  RT, DELETE or UP
93e0: 44 41 54 45 20 73 74 61 74 65 6d 65 6e 74 20 6f  DATE statement o
93f0: 6e 20 74 68 65 20 76 69 65 77 2c 20 0a 72 65 73  n the view, .res
9400: 70 65 63 74 69 76 65 6c 79 2e 20 54 68 65 72 65  pectively. There
9410: 61 66 74 65 72 2c 0a 65 78 65 63 75 74 69 6e 67  after,.executing
9420: 20 61 6e 20 49 4e 53 45 52 54 2c 20 44 45 4c 45   an INSERT, DELE
9430: 54 45 20 6f 72 20 55 50 44 41 54 45 20 6f 6e 20  TE or UPDATE on 
9440: 74 68 65 20 76 69 65 77 20 63 61 75 73 65 73 20  the view causes 
9450: 74 68 65 20 61 73 73 6f 63 69 61 74 65 64 0a 74  the associated.t
9460: 72 69 67 67 65 72 73 20 74 6f 20 66 69 72 65 2e  riggers to fire.
9470: 20 54 68 65 20 72 65 61 6c 20 74 61 62 6c 65 73   The real tables
9480: 20 75 6e 64 65 72 6c 79 69 6e 67 20 74 68 65 20   underlying the 
9490: 76 69 65 77 20 61 72 65 20 6e 6f 74 20 6d 6f 64  view are not mod
94a0: 69 66 69 65 64 0a 28 65 78 63 65 70 74 20 70 6f  ified.(except po
94b0: 73 73 69 62 6c 79 20 65 78 70 6c 69 63 69 74 6c  ssibly explicitl
94c0: 79 2c 20 62 79 20 61 20 74 72 69 67 67 65 72 20  y, by a trigger 
94d0: 70 72 6f 67 72 61 6d 29 2e 3c 2f 70 3e 0a 0a 3c  program).</p>..<
94e0: 70 3e 4e 6f 74 65 20 74 68 61 74 20 74 68 65 20  p>Note that the 
94f0: 5b 73 71 6c 69 74 65 33 5f 63 68 61 6e 67 65 73  [sqlite3_changes
9500: 28 29 5d 20 61 6e 64 20 5b 73 71 6c 69 74 65 33  ()] and [sqlite3
9510: 5f 74 6f 74 61 6c 5f 63 68 61 6e 67 65 73 28 29  _total_changes()
9520: 5d 20 69 6e 74 65 72 66 61 63 65 73 0a 64 6f 20  ] interfaces.do 
9530: 6e 6f 74 20 63 6f 75 6e 74 20 49 4e 53 54 45 41  not count INSTEA
9540: 44 20 4f 46 20 74 72 69 67 67 65 72 20 66 69 72  D OF trigger fir
9550: 69 6e 67 73 2c 20 62 75 74 20 74 68 65 0a 5b 63  ings, but the.[c
9560: 6f 75 6e 74 5f 63 68 61 6e 67 65 73 20 70 72 61  ount_changes pra
9570: 67 6d 61 5d 20 64 6f 65 73 20 63 6f 75 6e 74 20  gma] does count 
9580: 49 4e 53 54 45 41 44 20 4f 46 20 74 72 69 67 67  INSTEAD OF trigg
9590: 65 72 20 66 69 72 69 6e 67 2e 3c 2f 70 3e 0a 0a  er firing.</p>..
95a0: 3c 68 33 3e 45 78 61 6d 70 6c 65 73 3c 2f 68 33  <h3>Examples</h3
95b0: 3e 0a 0a 3c 70 3e 41 73 73 75 6d 69 6e 67 20 74  >..<p>Assuming t
95c0: 68 61 74 20 63 75 73 74 6f 6d 65 72 20 72 65 63  hat customer rec
95d0: 6f 72 64 73 20 61 72 65 20 73 74 6f 72 65 64 20  ords are stored 
95e0: 69 6e 20 74 68 65 20 22 63 75 73 74 6f 6d 65 72  in the "customer
95f0: 73 22 20 74 61 62 6c 65 2c 20 61 6e 64 0a 74 68  s" table, and.th
9600: 61 74 20 6f 72 64 65 72 20 72 65 63 6f 72 64 73  at order records
9610: 20 61 72 65 20 73 74 6f 72 65 64 20 69 6e 20 74   are stored in t
9620: 68 65 20 22 6f 72 64 65 72 73 22 20 74 61 62 6c  he "orders" tabl
9630: 65 2c 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  e, the following
9640: 20 74 72 69 67 67 65 72 0a 65 6e 73 75 72 65 73   trigger.ensures
9650: 20 74 68 61 74 20 61 6c 6c 20 61 73 73 6f 63 69   that all associ
9660: 61 74 65 64 20 6f 72 64 65 72 73 20 61 72 65 20  ated orders are 
9670: 72 65 64 69 72 65 63 74 65 64 20 77 68 65 6e 20  redirected when 
9680: 61 20 63 75 73 74 6f 6d 65 72 20 63 68 61 6e 67  a customer chang
9690: 65 73 0a 68 69 73 20 6f 72 20 68 65 72 20 61 64  es.his or her ad
96a0: 64 72 65 73 73 3a 3c 2f 70 3e 0a 0a 3c 74 63 6c  dress:</p>..<tcl
96b0: 3e 45 78 61 6d 70 6c 65 20 7b 0a 43 52 45 41 54  >Example {.CREAT
96c0: 45 20 54 52 49 47 47 45 52 20 75 70 64 61 74 65  E TRIGGER update
96d0: 5f 63 75 73 74 6f 6d 65 72 5f 61 64 64 72 65 73  _customer_addres
96e0: 73 20 55 50 44 41 54 45 20 4f 46 20 61 64 64 72  s UPDATE OF addr
96f0: 65 73 73 20 4f 4e 20 63 75 73 74 6f 6d 65 72 73  ess ON customers
9700: 20 0a 20 20 42 45 47 49 4e 0a 20 20 20 20 55 50   .  BEGIN.    UP
9710: 44 41 54 45 20 6f 72 64 65 72 73 20 53 45 54 20  DATE orders SET 
9720: 61 64 64 72 65 73 73 20 3d 20 6e 65 77 2e 61 64  address = new.ad
9730: 64 72 65 73 73 20 57 48 45 52 45 20 63 75 73 74  dress WHERE cust
9740: 6f 6d 65 72 5f 6e 61 6d 65 20 3d 20 6f 6c 64 2e  omer_name = old.
9750: 6e 61 6d 65 3b 0a 20 20 45 4e 44 3b 0a 7d 3c 2f  name;.  END;.}</
9760: 74 63 6c 3e 0a 0a 3c 70 3e 57 69 74 68 20 74 68  tcl>..<p>With th
9770: 69 73 20 74 72 69 67 67 65 72 20 69 6e 73 74 61  is trigger insta
9780: 6c 6c 65 64 2c 20 65 78 65 63 75 74 69 6e 67 20  lled, executing 
9790: 74 68 65 20 73 74 61 74 65 6d 65 6e 74 3a 3c 2f  the statement:</
97a0: 70 3e 0a 0a 3c 74 63 6c 3e 45 78 61 6d 70 6c 65  p>..<tcl>Example
97b0: 20 7b 0a 55 50 44 41 54 45 20 63 75 73 74 6f 6d   {.UPDATE custom
97c0: 65 72 73 20 53 45 54 20 61 64 64 72 65 73 73 20  ers SET address 
97d0: 3d 20 27 31 20 4d 61 69 6e 20 53 74 2e 27 20 57  = '1 Main St.' W
97e0: 48 45 52 45 20 6e 61 6d 65 20 3d 20 27 4a 61 63  HERE name = 'Jac
97f0: 6b 20 4a 6f 6e 65 73 27 3b 0a 7d 3c 2f 74 63 6c  k Jones';.}</tcl
9800: 3e 0a 0a 3c 70 3e 63 61 75 73 65 73 20 74 68 65  >..<p>causes the
9810: 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 6f 20 62 65   following to be
9820: 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 65   automatically e
9830: 78 65 63 75 74 65 64 3a 3c 2f 70 3e 0a 0a 3c 74  xecuted:</p>..<t
9840: 63 6c 3e 45 78 61 6d 70 6c 65 20 7b 0a 55 50 44  cl>Example {.UPD
9850: 41 54 45 20 6f 72 64 65 72 73 20 53 45 54 20 61  ATE orders SET a
9860: 64 64 72 65 73 73 20 3d 20 27 31 20 4d 61 69 6e  ddress = '1 Main
9870: 20 53 74 2e 27 20 57 48 45 52 45 20 63 75 73 74   St.' WHERE cust
9880: 6f 6d 65 72 5f 6e 61 6d 65 20 3d 20 27 4a 61 63  omer_name = 'Jac
9890: 6b 20 4a 6f 6e 65 73 27 3b 0a 7d 3c 2f 74 63 6c  k Jones';.}</tcl
98a0: 3e 0a 0a 3c 68 33 3e 52 6f 77 69 64 73 20 61 6e  >..<h3>Rowids an
98b0: 64 20 42 45 46 4f 52 45 20 74 72 69 67 67 65 72  d BEFORE trigger
98c0: 73 3c 2f 68 33 3e 0a 0a 3c 70 3e 4e 6f 74 65 20  s</h3>..<p>Note 
98d0: 74 68 61 74 20 63 75 72 72 65 6e 74 6c 79 2c 20  that currently, 
98e0: 74 72 69 67 67 65 72 73 20 6d 61 79 20 62 65 68  triggers may beh
98f0: 61 76 65 20 6f 64 64 6c 79 20 77 68 65 6e 20 63  ave oddly when c
9900: 72 65 61 74 65 64 20 6f 6e 20 74 61 62 6c 65 73  reated on tables
9910: 0a 20 20 77 69 74 68 20 5b 49 4e 54 45 47 45 52  .  with [INTEGER
9920: 20 50 52 49 4d 41 52 59 20 4b 45 59 5d 20 66 69   PRIMARY KEY] fi
9930: 65 6c 64 73 2e 20 49 66 20 61 20 42 45 46 4f 52  elds. If a BEFOR
9940: 45 20 74 72 69 67 67 65 72 20 70 72 6f 67 72 61  E trigger progra
9950: 6d 20 6d 6f 64 69 66 69 65 73 20 74 68 65 20 0a  m modifies the .
9960: 20 20 5b 49 4e 54 45 47 45 52 20 50 52 49 4d 41    [INTEGER PRIMA
9970: 52 59 20 4b 45 59 5d 20 66 69 65 6c 64 20 6f 66  RY KEY] field of
9980: 20 61 20 72 6f 77 20 74 68 61 74 20 77 69 6c 6c   a row that will
9990: 20 62 65 20 73 75 62 73 65 71 75 65 6e 74 6c 79   be subsequently
99a0: 20 75 70 64 61 74 65 64 20 62 79 20 74 68 65 0a   updated by the.
99b0: 20 20 73 74 61 74 65 6d 65 6e 74 20 74 68 61 74    statement that
99c0: 20 63 61 75 73 65 73 20 74 68 65 20 74 72 69 67   causes the trig
99d0: 67 65 72 20 74 6f 20 66 69 72 65 2c 20 74 68 65  ger to fire, the
99e0: 6e 20 74 68 65 20 75 70 64 61 74 65 20 6d 61 79  n the update may
99f0: 20 6e 6f 74 20 6f 63 63 75 72 2e 20 0a 20 20 54   not occur. .  T
9a00: 68 65 20 77 6f 72 6b 61 72 6f 75 6e 64 20 69 73  he workaround is
9a10: 20 74 6f 20 64 65 63 6c 61 72 65 20 74 68 65 20   to declare the 
9a20: 74 61 62 6c 65 20 77 69 74 68 20 61 20 50 52 49  table with a PRI
9a30: 4d 41 52 59 20 4b 45 59 20 63 6f 6c 75 6d 6e 20  MARY KEY column 
9a40: 69 6e 73 74 65 61 64 0a 20 20 6f 66 20 61 6e 20  instead.  of an 
9a50: 5b 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59  [INTEGER PRIMARY
9a60: 20 4b 45 59 5d 20 63 6f 6c 75 6d 6e 2e 3c 2f 70   KEY] column.</p
9a70: 3e 0a 0a 3c 68 33 3e 54 68 65 20 52 41 49 53 45  >..<h3>The RAISE
9a80: 28 29 20 66 75 6e 63 74 69 6f 6e 3c 2f 68 33 3e  () function</h3>
9a90: 0a 0a 3c 70 3e 41 20 73 70 65 63 69 61 6c 20 53  ..<p>A special S
9aa0: 51 4c 20 66 75 6e 63 74 69 6f 6e 20 52 41 49 53  QL function RAIS
9ab0: 45 28 29 20 6d 61 79 20 62 65 20 75 73 65 64 20  E() may be used 
9ac0: 77 69 74 68 69 6e 20 61 20 74 72 69 67 67 65 72  within a trigger
9ad0: 2d 70 72 6f 67 72 61 6d 2c 0a 77 69 74 68 20 74  -program,.with t
9ae0: 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 73 79 6e  he following syn
9af0: 74 61 78 3c 2f 70 3e 20 0a 0a 3c 74 63 6c 3e 42  tax</p> ..<tcl>B
9b00: 75 62 62 6c 65 44 69 61 67 72 61 6d 20 72 61 69  ubbleDiagram rai
9b10: 73 65 2d 66 75 6e 63 74 69 6f 6e 3c 2f 74 63 6c  se-function</tcl
9b20: 3e 0a 0a 3c 70 3e 57 68 65 6e 20 6f 6e 65 20 6f  >..<p>When one o
9b30: 66 20 74 68 65 20 66 69 72 73 74 20 74 68 72 65  f the first thre
9b40: 65 20 66 6f 72 6d 73 20 69 73 20 63 61 6c 6c 65  e forms is calle
9b50: 64 20 64 75 72 69 6e 67 20 74 72 69 67 67 65 72  d during trigger
9b60: 2d 70 72 6f 67 72 61 6d 0a 65 78 65 63 75 74 69  -program.executi
9b70: 6f 6e 2c 20 74 68 65 20 73 70 65 63 69 66 69 65  on, the specifie
9b80: 64 20 5b 4f 4e 20 43 4f 4e 46 4c 49 43 54 5d 20  d [ON CONFLICT] 
9b90: 70 72 6f 63 65 73 73 69 6e 67 20 69 73 20 70 65  processing is pe
9ba0: 72 66 6f 72 6d 65 64 0a 28 65 69 74 68 65 72 20  rformed.(either 
9bb0: 41 42 4f 52 54 2c 20 46 41 49 4c 20 6f 72 20 52  ABORT, FAIL or R
9bc0: 4f 4c 4c 42 41 43 4b 29 20 61 6e 64 20 74 68 65  OLLBACK) and the
9bd0: 20 63 75 72 72 65 6e 74 20 71 75 65 72 79 20 74   current query t
9be0: 65 72 6d 69 6e 61 74 65 73 2e 0a 41 6e 20 65 72  erminates..An er
9bf0: 72 6f 72 20 63 6f 64 65 20 6f 66 20 5b 53 51 4c  ror code of [SQL
9c00: 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 5d 20  ITE_CONSTRAINT] 
9c10: 69 73 20 72 65 74 75 72 6e 65 64 20 74 6f 20 74  is returned to t
9c20: 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 2c 0a  he application,.
9c30: 61 6c 6f 6e 67 20 77 69 74 68 20 74 68 65 20 73  along with the s
9c40: 70 65 63 69 66 69 65 64 20 65 72 72 6f 72 20 6d  pecified error m
9c50: 65 73 73 61 67 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e  essage.</p>..<p>
9c60: 57 68 65 6e 20 52 41 49 53 45 28 49 47 4e 4f 52  When RAISE(IGNOR
9c70: 45 29 20 69 73 20 63 61 6c 6c 65 64 2c 20 74 68  E) is called, th
9c80: 65 20 72 65 6d 61 69 6e 64 65 72 20 6f 66 20 74  e remainder of t
9c90: 68 65 20 63 75 72 72 65 6e 74 20 74 72 69 67 67  he current trigg
9ca0: 65 72 20 70 72 6f 67 72 61 6d 2c 0a 74 68 65 20  er program,.the 
9cb0: 73 74 61 74 65 6d 65 6e 74 20 74 68 61 74 20 63  statement that c
9cc0: 61 75 73 65 64 20 74 68 65 20 74 72 69 67 67 65  aused the trigge
9cd0: 72 20 70 72 6f 67 72 61 6d 20 74 6f 20 65 78 65  r program to exe
9ce0: 63 75 74 65 20 61 6e 64 20 61 6e 79 20 73 75 62  cute and any sub
9cf0: 73 65 71 75 65 6e 74 0a 74 72 69 67 67 65 72 20  sequent.trigger 
9d00: 70 72 6f 67 72 61 6d 73 20 74 68 61 74 20 77 6f  programs that wo
9d10: 75 6c 64 20 6f 66 20 62 65 65 6e 20 65 78 65 63  uld of been exec
9d20: 75 74 65 64 20 61 72 65 20 61 62 61 6e 64 6f 6e  uted are abandon
9d30: 65 64 2e 20 4e 6f 20 64 61 74 61 62 61 73 65 0a  ed. No database.
9d40: 63 68 61 6e 67 65 73 20 61 72 65 20 72 6f 6c 6c  changes are roll
9d50: 65 64 20 62 61 63 6b 2e 20 20 49 66 20 74 68 65  ed back.  If the
9d60: 20 73 74 61 74 65 6d 65 6e 74 20 74 68 61 74 20   statement that 
9d70: 63 61 75 73 65 64 20 74 68 65 20 74 72 69 67 67  caused the trigg
9d80: 65 72 20 70 72 6f 67 72 61 6d 0a 74 6f 20 65 78  er program.to ex
9d90: 65 63 75 74 65 20 69 73 20 69 74 73 65 6c 66 20  ecute is itself 
9da0: 70 61 72 74 20 6f 66 20 61 20 74 72 69 67 67 65  part of a trigge
9db0: 72 20 70 72 6f 67 72 61 6d 2c 20 74 68 65 6e 20  r program, then 
9dc0: 74 68 61 74 20 74 72 69 67 67 65 72 20 70 72 6f  that trigger pro
9dd0: 67 72 61 6d 0a 72 65 73 75 6d 65 73 20 65 78 65  gram.resumes exe
9de0: 63 75 74 69 6f 6e 20 61 74 20 74 68 65 20 62 65  cution at the be
9df0: 67 69 6e 6e 69 6e 67 20 6f 66 20 74 68 65 20 6e  ginning of the n
9e00: 65 78 74 20 73 74 65 70 2e 0a 3c 2f 70 3e 0a 0a  ext step..</p>..
9e10: 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23  .<tcl>.#########
9e20: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9e30: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9e40: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9e50: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9e60: 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b  ######.Section {
9e70: 43 52 45 41 54 45 20 56 49 45 57 7d 20 7b 63 72  CREATE VIEW} {cr
9e80: 65 61 74 65 76 69 65 77 7d 20 7b 7b 43 52 45 41  eateview} {{CREA
9e90: 54 45 20 56 49 45 57 7d 20 76 69 65 77 20 76 69  TE VIEW} view vi
9ea0: 65 77 73 7d 0a 0a 42 75 62 62 6c 65 44 69 61 67  ews}..BubbleDiag
9eb0: 72 61 6d 20 63 72 65 61 74 65 2d 76 69 65 77 2d  ram create-view-
9ec0: 73 74 6d 74 20 31 0a 3c 2f 74 63 6c 3e 0a 0a 3c  stmt 1.</tcl>..<
9ed0: 70 3e 54 68 65 20 43 52 45 41 54 45 20 56 49 45  p>The CREATE VIE
9ee0: 57 20 63 6f 6d 6d 61 6e 64 20 61 73 73 69 67 6e  W command assign
9ef0: 73 20 61 20 6e 61 6d 65 20 74 6f 20 61 20 70 72  s a name to a pr
9f00: 65 2d 70 61 63 6b 61 67 65 64 20 0a 3c 61 20 68  e-packaged .<a h
9f10: 72 65 66 3d 22 6c 61 6e 67 5f 73 65 6c 65 63 74  ref="lang_select
9f20: 2e 68 74 6d 6c 22 3e 53 45 4c 45 43 54 3c 2f 61  .html">SELECT</a
9f30: 3e 0a 73 74 61 74 65 6d 65 6e 74 2e 20 20 4f 6e  >.statement.  On
9f40: 63 65 20 74 68 65 20 76 69 65 77 20 69 73 20 63  ce the view is c
9f50: 72 65 61 74 65 64 2c 20 69 74 20 63 61 6e 20 62  reated, it can b
9f60: 65 20 75 73 65 64 20 69 6e 20 74 68 65 20 46 52  e used in the FR
9f70: 4f 4d 20 63 6c 61 75 73 65 0a 6f 66 20 61 6e 6f  OM clause.of ano
9f80: 74 68 65 72 20 5b 53 45 4c 45 43 54 5d 20 69 6e  ther [SELECT] in
9f90: 20 70 6c 61 63 65 20 6f 66 20 61 20 74 61 62 6c   place of a tabl
9fa0: 65 20 6e 61 6d 65 2e 0a 3c 2f 70 3e 0a 0a 3c 70  e name..</p>..<p
9fb0: 3e 49 66 20 74 68 65 20 22 54 45 4d 50 22 20 6f  >If the "TEMP" o
9fc0: 72 20 22 54 45 4d 50 4f 52 41 52 59 22 20 6b 65  r "TEMPORARY" ke
9fd0: 79 77 6f 72 64 20 6f 63 63 75 72 73 20 69 6e 20  yword occurs in 
9fe0: 62 65 74 77 65 65 6e 20 22 43 52 45 41 54 45 22  between "CREATE"
9ff0: 0a 61 6e 64 20 22 56 49 45 57 22 20 74 68 65 6e  .and "VIEW" then
a000: 20 74 68 65 20 76 69 65 77 20 74 68 61 74 20 69   the view that i
a010: 73 20 63 72 65 61 74 65 64 20 69 73 20 6f 6e 6c  s created is onl
a020: 79 20 76 69 73 69 62 6c 65 20 74 6f 20 74 68 65  y visible to the
a030: 0a 70 72 6f 63 65 73 73 20 74 68 61 74 20 6f 70  .process that op
a040: 65 6e 65 64 20 74 68 65 20 64 61 74 61 62 61 73  ened the databas
a050: 65 20 61 6e 64 20 69 73 20 61 75 74 6f 6d 61 74  e and is automat
a060: 69 63 61 6c 6c 79 20 64 65 6c 65 74 65 64 20 77  ically deleted w
a070: 68 65 6e 0a 74 68 65 20 64 61 74 61 62 61 73 65  hen.the database
a080: 20 69 73 20 63 6c 6f 73 65 64 2e 3c 2f 70 3e 0a   is closed.</p>.
a090: 0a 3c 70 3e 20 49 66 20 61 20 26 6c 74 3b 64 61  .<p> If a &lt;da
a0a0: 74 61 62 61 73 65 2d 6e 61 6d 65 26 67 74 3b 20  tabase-name&gt; 
a0b0: 69 73 20 73 70 65 63 69 66 69 65 64 2c 20 74 68  is specified, th
a0c0: 65 6e 20 74 68 65 20 76 69 65 77 20 69 73 20 63  en the view is c
a0d0: 72 65 61 74 65 64 20 69 6e 20 0a 74 68 65 20 6e  reated in .the n
a0e0: 61 6d 65 64 20 64 61 74 61 62 61 73 65 2e 20 49  amed database. I
a0f0: 74 20 69 73 20 61 6e 20 65 72 72 6f 72 20 74 6f  t is an error to
a100: 20 73 70 65 63 69 66 79 20 62 6f 74 68 20 61 20   specify both a 
a110: 26 6c 74 3b 64 61 74 61 62 61 73 65 2d 6e 61 6d  &lt;database-nam
a120: 65 26 67 74 3b 0a 61 6e 64 20 74 68 65 20 54 45  e&gt;.and the TE
a130: 4d 50 20 6b 65 79 77 6f 72 64 2c 20 75 6e 6c 65  MP keyword, unle
a140: 73 73 20 74 68 65 20 26 6c 74 3b 64 61 74 61 62  ss the &lt;datab
a150: 61 73 65 2d 6e 61 6d 65 26 67 74 3b 20 69 73 20  ase-name&gt; is 
a160: 22 74 65 6d 70 22 2e 20 49 66 20 6e 6f 0a 64 61  "temp". If no.da
a170: 74 61 62 61 73 65 20 6e 61 6d 65 20 69 73 20 73  tabase name is s
a180: 70 65 63 69 66 69 65 64 2c 20 61 6e 64 20 74 68  pecified, and th
a190: 65 20 54 45 4d 50 20 6b 65 79 77 6f 72 64 20 69  e TEMP keyword i
a1a0: 73 20 6e 6f 74 20 70 72 65 73 65 6e 74 2c 0a 74  s not present,.t
a1b0: 68 65 20 74 61 62 6c 65 20 69 73 20 63 72 65 61  he table is crea
a1c0: 74 65 64 20 69 6e 20 74 68 65 20 6d 61 69 6e 20  ted in the main 
a1d0: 64 61 74 61 62 61 73 65 2e 3c 2f 70 3e 0a 0a 3c  database.</p>..<
a1e0: 70 3e 59 6f 75 20 63 61 6e 6e 6f 74 20 5b 44 45  p>You cannot [DE
a1f0: 4c 45 54 45 5d 2c 20 5b 49 4e 53 45 52 54 5d 2c  LETE], [INSERT],
a200: 20 6f 72 20 5b 55 50 44 41 54 45 5d 20 61 20 76   or [UPDATE] a v
a210: 69 65 77 2e 20 20 56 69 65 77 73 20 61 72 65 20  iew.  Views are 
a220: 72 65 61 64 2d 6f 6e 6c 79 20 0a 69 6e 20 53 51  read-only .in SQ
a230: 4c 69 74 65 2e 20 20 48 6f 77 65 76 65 72 2c 20  Lite.  However, 
a240: 69 6e 20 6d 61 6e 79 20 63 61 73 65 73 20 79 6f  in many cases yo
a250: 75 20 63 61 6e 20 75 73 65 20 61 6e 0a 5b 49 4e  u can use an.[IN
a260: 53 54 45 41 44 20 4f 46 20 74 72 69 67 67 65 72  STEAD OF trigger
a270: 5d 20 6f 6e 20 74 68 65 20 76 69 65 77 20 74 6f  ] on the view to
a280: 20 61 63 63 6f 6d 70 6c 69 73 68 20 0a 74 68 65   accomplish .the
a290: 20 73 61 6d 65 20 74 68 69 6e 67 2e 20 20 56 69   same thing.  Vi
a2a0: 65 77 73 20 61 72 65 20 72 65 6d 6f 76 65 64 20  ews are removed 
a2b0: 0a 77 69 74 68 20 74 68 65 20 5b 44 52 4f 50 20  .with the [DROP 
a2c0: 56 49 45 57 5d 20 63 6f 6d 6d 61 6e 64 2e 3c 2f  VIEW] command.</
a2d0: 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23  p>..<tcl>.######
a2e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a2f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a300: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a310: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a320: 23 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e  ########.Section
a330: 20 7b 43 52 45 41 54 45 20 56 49 52 54 55 41 4c   {CREATE VIRTUAL
a340: 20 54 41 42 4c 45 7d 20 7b 63 72 65 61 74 65 76   TABLE} {createv
a350: 74 61 62 7d 20 7b 7b 43 52 45 41 54 45 20 56 49  tab} {{CREATE VI
a360: 52 54 55 41 4c 20 54 41 42 4c 45 7d 7d 0a 0a 42  RTUAL TABLE}}..B
a370: 75 62 62 6c 65 44 69 61 67 72 61 6d 20 63 72 65  ubbleDiagram cre
a380: 61 74 65 2d 76 69 72 74 75 61 6c 2d 74 61 62 6c  ate-virtual-tabl
a390: 65 2d 73 74 6d 74 20 31 0a 3c 2f 74 63 6c 3e 0a  e-stmt 1.</tcl>.
a3a0: 0a 3c 70 3e 41 20 5b 76 69 72 74 75 61 6c 20 74  .<p>A [virtual t
a3b0: 61 62 6c 65 5d 20 69 73 20 61 6e 20 69 6e 74 65  able] is an inte
a3c0: 72 66 61 63 65 20 74 6f 20 61 6e 20 65 78 74 65  rface to an exte
a3d0: 72 6e 61 6c 20 73 74 6f 72 61 67 65 20 6f 72 20  rnal storage or 
a3e0: 63 6f 6d 70 75 74 61 74 69 6f 6e 0a 65 6e 67 69  computation.engi
a3f0: 6e 65 20 74 68 61 74 20 61 70 70 65 61 72 73 20  ne that appears 
a400: 74 6f 20 62 65 20 61 20 74 61 62 6c 65 20 62 75  to be a table bu
a410: 74 20 64 6f 65 73 20 6e 6f 74 20 61 63 74 75 61  t does not actua
a420: 6c 6c 79 20 73 74 6f 72 65 20 69 6e 66 6f 72 6d  lly store inform
a430: 61 74 69 6f 6e 0a 69 6e 20 74 68 65 20 64 61 74  ation.in the dat
a440: 61 62 61 73 65 20 66 69 6c 65 2e 3c 2f 70 3e 0a  abase file.</p>.
a450: 0a 3c 70 3e 49 6e 20 67 65 6e 65 72 61 6c 2c 20  .<p>In general, 
a460: 79 6f 75 20 63 61 6e 20 64 6f 20 61 6e 79 74 68  you can do anyth
a470: 69 6e 67 20 77 69 74 68 20 61 20 5b 76 69 72 74  ing with a [virt
a480: 75 61 6c 20 74 61 62 6c 65 5d 20 74 68 61 74 20  ual table] that 
a490: 63 61 6e 20 62 65 20 64 6f 6e 65 0a 77 69 74 68  can be done.with
a4a0: 20 61 6e 20 6f 72 64 69 6e 61 72 79 20 74 61 62   an ordinary tab
a4b0: 6c 65 2c 20 65 78 63 65 70 74 20 74 68 61 74 20  le, except that 
a4c0: 79 6f 75 20 63 61 6e 6e 6f 74 20 63 72 65 61 74  you cannot creat
a4d0: 65 20 69 6e 64 69 63 65 73 20 6f 72 20 74 72 69  e indices or tri
a4e0: 67 67 65 72 73 20 6f 6e 20 61 0a 76 69 72 74 75  ggers on a.virtu
a4f0: 61 6c 20 74 61 62 6c 65 2e 20 20 53 6f 6d 65 20  al table.  Some 
a500: 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 69 6d  virtual table im
a510: 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 6d 69  plementations mi
a520: 67 68 74 20 69 6d 70 6f 73 65 20 61 64 64 69 74  ght impose addit
a530: 69 6f 6e 61 6c 0a 72 65 73 74 72 69 63 74 69 6f  ional.restrictio
a540: 6e 73 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c 65  ns.  For example
a550: 2c 20 6d 61 6e 79 20 76 69 72 74 75 61 6c 20 74  , many virtual t
a560: 61 62 6c 65 73 20 61 72 65 20 72 65 61 64 2d 6f  ables are read-o
a570: 6e 6c 79 2e 0a 56 69 72 74 75 61 6c 20 74 61 62  nly..Virtual tab
a580: 6c 65 73 20 63 61 6e 6e 6f 74 20 62 65 20 75 73  les cannot be us
a590: 65 64 20 69 6e 0a 5b 73 71 6c 69 74 65 33 5f 65  ed in.[sqlite3_e
a5a0: 6e 61 62 6c 65 5f 73 68 61 72 65 64 5f 63 61 63  nable_shared_cac
a5b0: 68 65 20 7c 20 73 68 61 72 65 64 20 63 61 63 68  he | shared cach
a5c0: 65 20 6d 6f 64 65 5d 2e 3c 2f 70 3e 0a 0a 3c 70  e mode].</p>..<p
a5d0: 3e 54 68 65 20 26 6c 74 3b 6d 6f 64 75 6c 65 2d  >The &lt;module-
a5e0: 6e 61 6d 65 26 67 74 3b 20 69 73 20 74 68 65 20  name&gt; is the 
a5f0: 6e 61 6d 65 20 6f 66 20 61 6e 20 6f 62 6a 65 63  name of an objec
a600: 74 20 74 68 61 74 20 69 6d 70 6c 65 6d 65 6e 74  t that implement
a610: 73 0a 74 68 65 20 76 69 72 74 75 61 6c 20 74 61  s.the virtual ta
a620: 62 6c 65 2e 20 20 54 68 65 20 26 6c 74 3b 6d 6f  ble.  The &lt;mo
a630: 64 75 6c 65 2d 6e 61 6d 65 26 67 74 3b 20 6d 75  dule-name&gt; mu
a640: 73 74 20 62 65 20 72 65 67 69 73 74 65 72 65 64  st be registered
a650: 20 77 69 74 68 0a 74 68 65 20 53 51 4c 69 74 65   with.the SQLite
a660: 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
a670: 74 69 6f 6e 20 75 73 69 6e 67 0a 5b 73 71 6c 69  tion using.[sqli
a680: 74 65 33 5f 63 72 65 61 74 65 5f 6d 6f 64 75 6c  te3_create_modul
a690: 65 28 29 5d 20 6f 72 20 5b 73 71 6c 69 74 65 33  e()] or [sqlite3
a6a0: 5f 63 72 65 61 74 65 5f 6d 6f 64 75 6c 65 5f 76  _create_module_v
a6b0: 32 28 29 5d 0a 70 72 69 6f 72 20 74 6f 20 69 73  2()].prior to is
a6c0: 73 75 69 6e 67 20 74 68 65 20 43 52 45 41 54 45  suing the CREATE
a6d0: 20 56 49 52 54 55 41 4c 20 54 41 42 4c 45 20 73   VIRTUAL TABLE s
a6e0: 74 61 74 65 6d 65 6e 74 2e 0a 54 68 65 20 6d 6f  tatement..The mo
a6f0: 64 75 6c 65 20 74 61 6b 65 73 20 7a 65 72 6f 20  dule takes zero 
a700: 6f 72 20 6d 6f 72 65 20 63 6f 6d 6d 61 2d 73 65  or more comma-se
a710: 70 61 72 61 74 65 64 20 61 72 67 75 6d 65 6e 74  parated argument
a720: 73 2e 0a 54 68 65 20 61 72 67 75 6d 65 6e 74 73  s..The arguments
a730: 20 63 61 6e 20 62 65 20 6a 75 73 74 20 61 62 6f   can be just abo
a740: 75 74 20 61 6e 79 20 74 65 78 74 20 61 73 20 6c  ut any text as l
a750: 6f 6e 67 20 61 73 20 69 74 20 68 61 73 20 62 61  ong as it has ba
a760: 6c 61 6e 63 65 64 0a 70 61 72 65 6e 74 68 65 73  lanced.parenthes
a770: 65 73 2e 20 20 54 68 65 20 61 72 67 75 6d 65 6e  es.  The argumen
a780: 74 20 73 79 6e 74 61 78 20 69 73 20 73 75 66 66  t syntax is suff
a790: 69 63 69 65 6e 74 6c 79 20 67 65 6e 65 72 61 6c  iciently general
a7a0: 20 74 68 61 74 20 74 68 65 0a 61 72 67 75 6d 65   that the.argume
a7b0: 6e 74 73 20 63 61 6e 20 62 65 20 6d 61 64 65 20  nts can be made 
a7c0: 74 6f 20 61 70 70 65 61 72 20 61 73 20 63 6f 6c  to appear as col
a7d0: 75 6d 6e 20 64 65 66 69 6e 69 74 69 6f 6e 73 20  umn definitions 
a7e0: 69 6e 20 61 20 74 72 61 64 69 74 69 6f 6e 61 6c  in a traditional
a7f0: 0a 5b 43 52 45 41 54 45 20 54 41 42 4c 45 5d 20  .[CREATE TABLE] 
a800: 73 74 61 74 65 6d 65 6e 74 2e 20 20 0a 53 51 4c  statement.  .SQL
a810: 69 74 65 20 70 61 73 73 65 73 20 74 68 65 20 6d  ite passes the m
a820: 6f 64 75 6c 65 20 61 72 67 75 6d 65 6e 74 73 20  odule arguments 
a830: 64 69 72 65 63 74 6c 79 0a 74 6f 20 74 68 65 20  directly.to the 
a840: 5b 78 43 72 65 61 74 65 5d 20 61 6e 64 20 5b 78  [xCreate] and [x
a850: 43 6f 6e 6e 65 63 74 5d 20 6d 65 74 68 6f 64 73  Connect] methods
a860: 20 6f 66 20 74 68 65 20 6d 6f 64 75 6c 65 20 69   of the module i
a870: 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 0a 77 69  mplementation.wi
a880: 74 68 6f 75 74 20 61 6e 79 20 69 6e 74 65 72 70  thout any interp
a890: 72 65 74 61 74 69 6f 6e 2e 20 20 49 74 20 69 73  retation.  It is
a8a0: 20 74 68 65 20 72 65 73 70 6f 6e 73 69 62 69 6c   the responsibil
a8b0: 69 74 79 0a 6f 66 20 74 68 65 20 6d 6f 64 75 6c  ity.of the modul
a8c0: 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  e implementation
a8d0: 20 74 6f 20 70 61 72 73 65 20 61 6e 64 20 69 6e   to parse and in
a8e0: 74 65 72 70 72 65 74 20 69 74 73 20 6f 77 6e 20  terpret its own 
a8f0: 61 72 67 75 6d 65 6e 74 73 2e 3c 2f 70 3e 0a 0a  arguments.</p>..
a900: 3c 70 3e 41 20 76 69 72 74 75 61 6c 20 74 61 62  <p>A virtual tab
a910: 6c 65 20 69 73 20 64 65 73 74 72 6f 79 65 64 20  le is destroyed 
a920: 75 73 69 6e 67 20 74 68 65 20 6f 72 64 69 6e 61  using the ordina
a930: 72 79 0a 5b 44 52 4f 50 20 54 41 42 4c 45 5d 20  ry.[DROP TABLE] 
a940: 73 74 61 74 65 6d 65 6e 74 2e 20 20 54 68 65 72  statement.  Ther
a950: 65 20 69 73 20 6e 6f 0a 44 52 4f 50 20 56 49 52  e is no.DROP VIR
a960: 54 55 41 4c 20 54 41 42 4c 45 20 73 74 61 74 65  TUAL TABLE state
a970: 6d 65 6e 74 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e  ment.</p>..<tcl>
a980: 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  .###############
a990: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a9a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a9b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a9c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a  ###############.
a9d0: 53 65 63 74 69 6f 6e 20 44 45 4c 45 54 45 20 64  Section DELETE d
a9e0: 65 6c 65 74 65 20 7b 44 45 4c 45 54 45 20 44 45  elete {DELETE DE
a9f0: 4c 45 54 45 73 7d 0a 0a 42 75 62 62 6c 65 44 69  LETEs}..BubbleDi
aa00: 61 67 72 61 6d 20 64 65 6c 65 74 65 2d 73 74 6d  agram delete-stm
aa10: 74 20 31 0a 42 75 62 62 6c 65 44 69 61 67 72 61  t 1.BubbleDiagra
aa20: 6d 20 71 75 61 6c 69 66 69 65 64 2d 74 61 62 6c  m qualified-tabl
aa30: 65 2d 6e 61 6d 65 0a 3c 2f 74 63 6c 3e 0a 0a 3c  e-name.</tcl>..<
aa40: 70 3e 54 68 65 20 44 45 4c 45 54 45 20 63 6f 6d  p>The DELETE com
aa50: 6d 61 6e 64 20 69 73 20 75 73 65 64 20 74 6f 20  mand is used to 
aa60: 72 65 6d 6f 76 65 20 72 65 63 6f 72 64 73 20 66  remove records f
aa70: 72 6f 6d 20 61 20 74 61 62 6c 65 2e 0a 54 68 65  rom a table..The
aa80: 20 63 6f 6d 6d 61 6e 64 20 63 6f 6e 73 69 73 74   command consist
aa90: 73 20 6f 66 20 74 68 65 20 22 44 45 4c 45 54 45  s of the "DELETE
aaa0: 20 46 52 4f 4d 22 20 6b 65 79 77 6f 72 64 73 20   FROM" keywords 
aab0: 66 6f 6c 6c 6f 77 65 64 20 62 79 0a 74 68 65 20  followed by.the 
aac0: 6e 61 6d 65 20 6f 66 20 74 68 65 20 74 61 62 6c  name of the tabl
aad0: 65 20 66 72 6f 6d 20 77 68 69 63 68 20 72 65 63  e from which rec
aae0: 6f 72 64 73 20 61 72 65 20 74 6f 20 62 65 20 72  ords are to be r
aaf0: 65 6d 6f 76 65 64 2e 0a 3c 2f 70 3e 0a 0a 3c 70  emoved..</p>..<p
ab00: 3e 57 69 74 68 6f 75 74 20 61 20 57 48 45 52 45  >Without a WHERE
ab10: 20 63 6c 61 75 73 65 2c 20 61 6c 6c 20 72 6f 77   clause, all row
ab20: 73 20 6f 66 20 74 68 65 20 74 61 62 6c 65 20 61  s of the table a
ab30: 72 65 20 72 65 6d 6f 76 65 64 2e 0a 49 66 20 61  re removed..If a
ab40: 20 57 48 45 52 45 20 63 6c 61 75 73 65 20 69 73   WHERE clause is
ab50: 20 73 75 70 70 6c 69 65 64 2c 20 74 68 65 6e 20   supplied, then 
ab60: 6f 6e 6c 79 20 74 68 6f 73 65 20 72 6f 77 73 20  only those rows 
ab70: 74 68 61 74 20 6d 61 74 63 68 0a 74 68 65 20 65  that match.the e
ab80: 78 70 72 65 73 73 69 6f 6e 20 61 72 65 20 72 65  xpression are re
ab90: 6d 6f 76 65 64 2e 3c 2f 70 3e 0a 0a 3c 68 33 3e  moved.</p>..<h3>
aba0: 52 65 73 74 72 69 63 74 69 6f 6e 73 20 6f 6e 20  Restrictions on 
abb0: 44 45 4c 45 54 45 20 53 74 61 74 65 6d 65 6e 74  DELETE Statement
abc0: 73 20 57 69 74 68 69 6e 20 43 52 45 41 54 45 20  s Within CREATE 
abd0: 54 52 49 47 47 45 52 3c 2f 68 33 3e 0a 0a 3c 70  TRIGGER</h3>..<p
abe0: 3e 54 68 65 72 65 20 61 72 65 20 61 64 64 69 74  >There are addit
abf0: 69 6f 6e 61 6c 20 73 79 6e 74 61 78 20 72 65 73  ional syntax res
ac00: 74 72 69 63 74 69 6f 6e 73 20 6f 6e 20 44 45 4c  trictions on DEL
ac10: 45 54 45 20 73 74 61 74 65 6d 65 6e 74 73 20 74  ETE statements t
ac20: 68 61 74 0a 6f 63 63 75 72 20 77 69 74 68 69 6e  hat.occur within
ac30: 20 74 68 65 20 62 6f 64 79 20 6f 66 20 61 20 5b   the body of a [
ac40: 43 52 45 41 54 45 20 54 52 49 47 47 45 52 5d 20  CREATE TRIGGER] 
ac50: 73 74 61 74 65 6d 65 6e 74 2e 20 20 54 68 65 20  statement.  The 
ac60: 3c 69 3e 74 61 62 6c 65 2d 6e 61 6d 65 3c 2f 69  <i>table-name</i
ac70: 3e 0a 6d 75 73 74 20 62 65 20 75 6e 71 75 61 6c  >.must be unqual
ac80: 69 66 69 65 64 2e 20 0a 49 6e 20 6f 74 68 65 72  ified. .In other
ac90: 20 77 6f 72 64 73 2c 20 74 68 65 20 3c 69 3e 64   words, the <i>d
aca0: 61 74 61 62 61 73 65 2d 6e 61 6d 65 3c 2f 69 3e  atabase-name</i>
acb0: 3c 62 3e 2e 3c 2f 62 3e 20 70 72 65 66 69 78 0a  <b>.</b> prefix.
acc0: 6f 6e 20 74 68 65 20 74 61 62 6c 65 20 6e 61 6d  on the table nam
acd0: 65 20 69 73 20 6e 6f 74 20 61 6c 6c 6f 77 65 64  e is not allowed
ace0: 20 77 69 74 68 69 6e 20 74 72 69 67 67 65 72 73   within triggers
acf0: 2e 20 0a 54 68 65 20 74 61 62 6c 65 20 66 72 6f  . .The table fro
ad00: 6d 20 77 68 69 63 68 20 74 6f 20 64 65 6c 65 74  m which to delet
ad10: 65 20 6d 75 73 74 20 62 65 20 69 6e 20 74 68 65  e must be in the
ad20: 20 73 61 6d 65 0a 64 61 74 61 62 61 73 65 20 61   same.database a
ad30: 73 20 74 68 65 20 74 61 62 6c 65 20 74 6f 20 77  s the table to w
ad40: 68 69 63 68 20 74 68 65 20 74 72 69 67 67 65 72  hich the trigger
ad50: 20 69 73 20 61 74 74 61 63 68 65 64 2e 3c 2f 70   is attached.</p
ad60: 3e 0a 0a 3c 70 3e 54 68 65 20 49 4e 44 45 58 45  >..<p>The INDEXE
ad70: 44 20 42 59 20 61 6e 64 20 4e 4f 54 20 49 4e 44  D BY and NOT IND
ad80: 45 58 45 44 20 63 6c 61 75 73 65 73 20 61 72 65  EXED clauses are
ad90: 20 6e 6f 74 20 61 6c 6c 6f 77 65 64 20 6f 6e 20   not allowed on 
ada0: 44 45 4c 45 54 45 0a 73 74 61 74 65 6d 65 6e 74  DELETE.statement
adb0: 73 20 77 69 74 68 69 6e 20 74 72 69 67 67 65 72  s within trigger
adc0: 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 4c  s.</p>..<p>The L
add0: 49 4d 49 54 20 63 6c 61 75 73 65 20 28 64 65 73  IMIT clause (des
ade0: 63 72 69 62 65 64 20 62 65 6c 6f 77 29 20 69 73  cribed below) is
adf0: 20 75 6e 73 75 70 70 6f 72 74 65 64 20 77 69 74   unsupported wit
ae00: 68 69 6e 20 74 72 69 67 67 65 72 73 2e 3c 2f 70  hin triggers.</p
ae10: 3e 0a 0a 3c 74 63 6c 3e 68 64 5f 66 72 61 67 6d  >..<tcl>hd_fragm
ae20: 65 6e 74 20 74 72 75 63 61 74 65 6f 70 74 20 7b  ent trucateopt {
ae30: 74 72 75 6e 63 61 74 65 20 6f 70 74 69 6d 69 7a  truncate optimiz
ae40: 61 74 69 6f 6e 7d 3c 2f 74 63 6c 3e 0a 3c 68 33  ation}</tcl>.<h3
ae50: 3e 54 68 65 20 54 72 75 6e 63 61 74 65 20 4f 70  >The Truncate Op
ae60: 74 69 6d 69 7a 61 74 69 6f 6e 3c 2f 68 33 3e 0a  timization</h3>.
ae70: 0a 3c 70 3e 57 68 65 6e 20 74 68 65 20 57 48 45  .<p>When the WHE
ae80: 52 45 20 69 73 20 6f 6d 69 74 74 65 64 20 66 72  RE is omitted fr
ae90: 6f 6d 20 61 20 44 45 4c 45 54 45 20 73 74 61 74  om a DELETE stat
aea0: 65 6d 65 6e 74 20 61 6e 64 20 74 68 65 20 74 61  ement and the ta
aeb0: 62 6c 65 0a 62 65 69 6e 67 20 64 65 6c 65 74 65  ble.being delete
aec0: 64 20 68 61 73 20 6e 6f 20 74 72 69 67 67 65 72  d has no trigger
aed0: 73 2c 0a 53 51 4c 69 74 65 20 75 73 65 73 20 61  s,.SQLite uses a
aee0: 6e 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20 74  n optimization t
aef0: 6f 20 65 72 61 73 65 20 74 68 65 20 65 6e 74 69  o erase the enti
af00: 72 65 20 74 61 62 6c 65 20 63 6f 6e 74 65 6e 74  re table content
af10: 0a 77 69 74 68 6f 75 74 20 68 61 76 69 6e 67 20  .without having 
af20: 74 6f 20 76 69 73 69 74 20 65 61 63 68 20 72 6f  to visit each ro
af30: 77 20 6f 66 20 74 68 65 20 74 61 62 6c 65 20 69  w of the table i
af40: 6e 64 69 76 69 64 75 61 6c 2e 0a 54 68 69 73 20  ndividual..This 
af50: 22 74 72 75 6e 63 61 74 65 22 20 6f 70 74 69 6d  "truncate" optim
af60: 69 7a 61 74 69 6f 6e 20 6d 61 6b 65 73 20 74 68  ization makes th
af70: 65 20 64 65 6c 65 74 65 20 72 75 6e 20 6d 75 63  e delete run muc
af80: 68 20 66 61 73 74 65 72 2e 0a 50 72 69 6f 72 20  h faster..Prior 
af90: 74 6f 20 53 51 4c 69 74 65 20 5b 76 65 72 73 69  to SQLite [versi
afa0: 6f 6e 20 33 2e 36 2e 35 5d 2c 20 74 68 65 20 74  on 3.6.5], the t
afb0: 72 75 6e 63 61 74 65 20 6f 70 74 69 6d 69 7a 61  runcate optimiza
afc0: 74 69 6f 6e 0a 61 6c 73 6f 20 6d 65 61 6e 74 20  tion.also meant 
afd0: 74 68 61 74 20 74 68 65 20 5b 73 71 6c 69 74 65  that the [sqlite
afe0: 33 5f 63 68 61 6e 67 65 73 28 29 5d 20 61 6e 64  3_changes()] and
aff0: 0a 5b 73 71 6c 69 74 65 33 5f 74 6f 74 61 6c 5f  .[sqlite3_total_
b000: 63 68 61 6e 67 65 73 28 29 5d 20 69 6e 74 65 72  changes()] inter
b010: 66 61 63 65 73 0a 61 6e 64 20 74 68 65 20 5b 63  faces.and the [c
b020: 6f 75 6e 74 5f 63 68 61 6e 67 65 73 20 70 72 61  ount_changes pra
b030: 67 6d 61 5d 0a 77 69 6c 6c 20 6e 6f 74 20 61 63  gma].will not ac
b040: 74 75 61 6c 6c 79 20 72 65 74 75 72 6e 20 74 68  tually return th
b050: 65 20 6e 75 6d 62 65 72 20 6f 66 20 64 65 6c 65  e number of dele
b060: 74 65 64 20 72 6f 77 73 2e 20 20 0a 54 68 61 74  ted rows.  .That
b070: 20 70 72 6f 62 6c 65 6d 20 68 61 73 20 62 65 65   problem has bee
b080: 6e 20 66 69 78 65 64 20 61 73 20 6f 66 20 5b 76  n fixed as of [v
b090: 65 72 73 69 6f 6e 20 33 2e 36 2e 35 5d 2e 0a 0a  ersion 3.6.5]...
b0a0: 3c 70 3e 54 68 65 20 74 72 75 6e 63 61 74 65 20  <p>The truncate 
b0b0: 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20 63 61 6e  optimization can
b0c0: 20 62 65 20 70 65 72 6d 61 6e 65 6e 74 6c 79 20   be permanently 
b0d0: 64 69 73 61 62 6c 65 64 20 66 6f 72 20 61 6c 6c  disabled for all
b0e0: 20 71 75 65 72 69 65 73 0a 62 79 20 72 65 63 6f   queries.by reco
b0f0: 6d 70 69 6c 69 6e 67 0a 53 51 4c 69 74 65 20 77  mpiling.SQLite w
b100: 69 74 68 20 74 68 65 20 5b 53 51 4c 49 54 45 5f  ith the [SQLITE_
b110: 4f 4d 49 54 5f 54 52 55 4e 43 41 54 45 5f 4f 50  OMIT_TRUNCATE_OP
b120: 54 49 4d 49 5a 41 54 49 4f 4e 5d 20 63 6f 6d 70  TIMIZATION] comp
b130: 69 6c 65 2d 74 69 6d 65 20 73 77 69 74 63 68 2e  ile-time switch.
b140: 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 74 72 75  </p>..<p>The tru
b150: 6e 63 61 74 65 20 6f 70 74 69 6d 69 7a 61 74 69  ncate optimizati
b160: 6f 6e 20 63 61 6e 20 61 6c 73 6f 20 62 65 20 64  on can also be d
b170: 69 73 61 62 6c 65 64 20 61 74 20 72 75 6e 74 69  isabled at runti
b180: 6d 65 20 75 73 69 6e 67 0a 74 68 65 20 5b 73 71  me using.the [sq
b190: 6c 69 74 65 33 5f 73 65 74 5f 61 75 74 68 6f 72  lite3_set_author
b1a0: 69 7a 65 72 28 29 5d 20 69 6e 74 65 72 66 61 63  izer()] interfac
b1b0: 65 2e 20 20 49 66 20 61 6e 20 61 75 74 68 6f 72  e.  If an author
b1c0: 69 7a 65 72 20 63 61 6c 6c 62 61 63 6b 0a 72 65  izer callback.re
b1d0: 74 75 72 6e 73 20 5b 53 51 4c 49 54 45 5f 49 47  turns [SQLITE_IG
b1e0: 4e 4f 52 45 5d 20 66 6f 72 20 61 6e 20 5b 53 51  NORE] for an [SQ
b1f0: 4c 49 54 45 5f 44 45 4c 45 54 45 5d 20 61 63 74  LITE_DELETE] act
b200: 69 6f 6e 20 63 6f 64 65 2c 20 74 68 65 6e 0a 74  ion code, then.t
b210: 68 65 20 44 45 4c 45 54 45 20 6f 70 65 72 61 74  he DELETE operat
b220: 69 6f 6e 20 77 69 6c 6c 20 70 72 6f 63 65 65 64  ion will proceed
b230: 20 62 75 74 20 74 68 65 20 74 72 75 6e 63 61 74   but the truncat
b240: 65 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20 77  e optimization w
b250: 69 6c 6c 0a 62 65 20 62 79 70 61 73 73 65 64 20  ill.be bypassed 
b260: 61 6e 64 20 72 6f 77 73 20 77 69 6c 6c 20 62 65  and rows will be
b270: 20 64 65 6c 65 74 65 64 20 6f 6e 65 20 62 79 20   deleted one by 
b280: 6f 6e 65 2e 3c 2f 70 3e 0a 0a 3c 68 33 3e 55 73  one.</p>..<h3>Us
b290: 65 20 4f 66 20 4c 49 4d 49 54 3c 2f 68 33 3e 0a  e Of LIMIT</h3>.
b2a0: 0a 3c 70 3e 49 66 20 53 51 4c 69 74 65 20 69 73  .<p>If SQLite is
b2b0: 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 74   compiled with t
b2c0: 68 65 20 5b 53 51 4c 49 54 45 5f 45 4e 41 42 4c  he [SQLITE_ENABL
b2d0: 45 5f 55 50 44 41 54 45 5f 44 45 4c 45 54 45 5f  E_UPDATE_DELETE_
b2e0: 4c 49 4d 49 54 5d 0a 63 6f 6d 70 69 6c 65 2d 74  LIMIT].compile-t
b2f0: 69 6d 65 20 6f 70 74 69 6f 6e 2c 20 74 68 65 6e  ime option, then
b300: 20 74 68 65 20 73 79 6e 74 61 78 20 6f 66 20 74   the syntax of t
b310: 68 65 20 44 45 4c 45 54 45 20 73 74 61 74 65 6d  he DELETE statem
b320: 65 6e 74 20 69 73 0a 65 78 74 65 6e 64 65 64 20  ent is.extended 
b330: 62 79 20 74 68 65 20 61 64 64 69 74 69 6f 6e 20  by the addition 
b340: 6f 66 20 6f 70 74 69 6f 6e 61 6c 20 4f 52 44 45  of optional ORDE
b350: 52 20 42 59 20 61 6e 64 20 4c 49 4d 49 54 20 63  R BY and LIMIT c
b360: 6c 61 75 73 65 73 3a 3c 2f 70 3e 0a 0a 3c 74 63  lauses:</p>..<tc
b370: 6c 3e 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20  l>BubbleDiagram 
b380: 64 65 6c 65 74 65 2d 73 74 6d 74 2d 6c 69 6d 69  delete-stmt-limi
b390: 74 65 64 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68  ted</tcl>..<p>Th
b3a0: 65 20 6f 70 74 69 6f 6e 61 6c 20 4c 49 4d 49 54  e optional LIMIT
b3b0: 20 63 6c 61 75 73 65 20 63 61 6e 20 62 65 20 75   clause can be u
b3c0: 73 65 64 20 74 6f 20 6c 69 6d 69 74 20 74 68 65  sed to limit the
b3d0: 20 6e 75 6d 62 65 72 20 6f 66 0a 72 6f 77 73 20   number of.rows 
b3e0: 64 65 6c 65 74 65 64 2c 20 61 6e 64 20 74 68 65  deleted, and the
b3f0: 72 65 62 79 20 6c 69 6d 69 74 20 74 68 65 20 73  reby limit the s
b400: 69 7a 65 20 6f 66 20 74 68 65 20 74 72 61 6e 73  ize of the trans
b410: 61 63 74 69 6f 6e 2e 0a 54 68 65 20 4f 52 44 45  action..The ORDE
b420: 52 20 42 59 20 63 6c 61 75 73 65 20 69 73 20 75  R BY clause is u
b430: 73 65 64 20 6f 6e 6c 79 20 74 6f 20 64 65 74 65  sed only to dete
b440: 72 6d 69 6e 65 20 77 68 69 63 68 20 72 6f 77 73  rmine which rows
b450: 20 66 61 6c 6c 0a 77 69 74 68 69 6e 20 74 68 65   fall.within the
b460: 20 4c 49 4d 49 54 2e 20 20 54 68 65 20 6f 72 64   LIMIT.  The ord
b470: 65 72 20 69 6e 20 77 68 69 63 68 20 72 6f 77 73  er in which rows
b480: 20 61 72 65 20 64 65 6c 65 74 65 64 20 69 73 20   are deleted is 
b490: 61 72 62 69 74 72 61 72 79 0a 61 6e 64 20 69 73  arbitrary.and is
b4a0: 20 6e 6f 74 20 64 65 74 65 72 6d 69 6e 65 64 20   not determined 
b4b0: 62 79 20 74 68 65 20 4f 52 44 45 52 20 42 59 20  by the ORDER BY 
b4c0: 63 6c 61 75 73 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e  clause.</p>..<p>
b4d0: 54 68 65 20 70 72 65 73 65 6e 63 65 20 6f 66 20  The presence of 
b4e0: 61 20 4c 49 4d 49 54 20 63 6c 61 75 73 65 20 64  a LIMIT clause d
b4f0: 65 66 65 61 74 73 20 74 68 65 20 74 72 75 6e 63  efeats the trunc
b500: 61 74 65 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e  ate optimization
b510: 0a 63 61 75 73 69 6e 67 20 61 6c 6c 20 72 6f 77  .causing all row
b520: 73 20 62 65 69 6e 67 20 64 65 6c 65 74 65 64 20  s being deleted 
b530: 74 6f 20 62 65 20 76 69 73 69 74 65 64 2e 3c 2f  to be visited.</
b540: 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23  p>..<tcl>.######
b550: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
b560: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
b570: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
b580: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
b590: 23 23 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f  #########.Sectio
b5a0: 6e 20 7b 44 45 54 41 43 48 20 44 41 54 41 42 41  n {DETACH DATABA
b5b0: 53 45 7d 20 64 65 74 61 63 68 20 44 45 54 41 43  SE} detach DETAC
b5c0: 48 0a 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d  H..BubbleDiagram
b5d0: 20 64 65 74 61 63 68 2d 73 74 6d 74 20 31 0a 3c   detach-stmt 1.<
b5e0: 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 69 73 20 73  /tcl>..<p>This s
b5f0: 74 61 74 65 6d 65 6e 74 20 64 65 74 61 63 68 65  tatement detache
b600: 73 20 61 6e 20 61 64 64 69 74 69 6f 6e 61 6c 20  s an additional 
b610: 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
b620: 69 6f 6e 20 70 72 65 76 69 6f 75 73 6c 79 20 0a  ion previously .
b630: 61 74 74 61 63 68 65 64 20 75 73 69 6e 67 20 74  attached using t
b640: 68 65 20 5b 41 54 54 41 43 48 5d 20 73 74 61 74  he [ATTACH] stat
b650: 65 6d 65 6e 74 2e 20 20 0a 49 74 20 69 73 20 70  ement.  .It is p
b660: 6f 73 73 69 62 6c 65 20 74 6f 20 68 61 76 65 20  ossible to have 
b670: 74 68 65 20 73 61 6d 65 20 64 61 74 61 62 61 73  the same databas
b680: 65 20 66 69 6c 65 20 61 74 74 61 63 68 65 64 20  e file attached 
b690: 6d 75 6c 74 69 70 6c 65 20 74 69 6d 65 73 20 75  multiple times u
b6a0: 73 69 6e 67 20 0a 64 69 66 66 65 72 65 6e 74 20  sing .different 
b6b0: 6e 61 6d 65 73 2c 20 61 6e 64 20 64 65 74 61 63  names, and detac
b6c0: 68 69 6e 67 20 6f 6e 65 20 63 6f 6e 6e 65 63 74  hing one connect
b6d0: 69 6f 6e 20 74 6f 20 61 20 66 69 6c 65 20 77 69  ion to a file wi
b6e0: 6c 6c 20 6c 65 61 76 65 20 74 68 65 20 0a 6f 74  ll leave the .ot
b6f0: 68 65 72 73 20 69 6e 74 61 63 74 2e 3c 2f 70 3e  hers intact.</p>
b700: 0a 0a 3c 70 3e 54 68 69 73 20 73 74 61 74 65 6d  ..<p>This statem
b710: 65 6e 74 20 77 69 6c 6c 20 66 61 69 6c 20 69 66  ent will fail if
b720: 20 53 51 4c 69 74 65 20 69 73 20 69 6e 20 74 68   SQLite is in th
b730: 65 20 6d 69 64 64 6c 65 20 6f 66 20 61 20 74 72  e middle of a tr
b740: 61 6e 73 61 63 74 69 6f 6e 2e 3c 2f 70 3e 0a 0a  ansaction.</p>..
b750: 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23  .<tcl>.#########
b760: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
b770: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
b780: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
b790: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
b7a0: 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b 44  #####.Section {D
b7b0: 52 4f 50 20 49 4e 44 45 58 7d 20 64 72 6f 70 69  ROP INDEX} dropi
b7c0: 6e 64 65 78 20 7b 7b 44 52 4f 50 20 49 4e 44 45  ndex {{DROP INDE
b7d0: 58 7d 7d 0a 0a 42 75 62 62 6c 65 44 69 61 67 72  X}}..BubbleDiagr
b7e0: 61 6d 20 64 72 6f 70 2d 69 6e 64 65 78 2d 73 74  am drop-index-st
b7f0: 6d 74 20 31 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e  mt 1.</tcl>..<p>
b800: 54 68 65 20 44 52 4f 50 20 49 4e 44 45 58 20 73  The DROP INDEX s
b810: 74 61 74 65 6d 65 6e 74 20 72 65 6d 6f 76 65 73  tatement removes
b820: 20 61 6e 20 69 6e 64 65 78 20 61 64 64 65 64 0a   an index added.
b830: 77 69 74 68 20 74 68 65 20 5b 43 52 45 41 54 45  with the [CREATE
b840: 20 49 4e 44 45 58 5d 20 73 74 61 74 65 6d 65 6e   INDEX] statemen
b850: 74 2e 20 20 54 68 65 20 69 6e 64 65 78 20 6e 61  t.  The index na
b860: 6d 65 64 20 69 73 20 63 6f 6d 70 6c 65 74 65 6c  med is completel
b870: 79 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d 0a 74  y removed from.t
b880: 68 65 20 64 69 73 6b 2e 20 20 54 68 65 20 6f 6e  he disk.  The on
b890: 6c 79 20 77 61 79 20 74 6f 20 72 65 63 6f 76 65  ly way to recove
b8a0: 72 20 74 68 65 20 69 6e 64 65 78 20 69 73 20 74  r the index is t
b8b0: 6f 20 72 65 65 6e 74 65 72 20 74 68 65 0a 61 70  o reenter the.ap
b8c0: 70 72 6f 70 72 69 61 74 65 20 5b 43 52 45 41 54  propriate [CREAT
b8d0: 45 20 49 4e 44 45 58 5d 20 63 6f 6d 6d 61 6e 64  E INDEX] command
b8e0: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 44 52  .</p>..<p>The DR
b8f0: 4f 50 20 49 4e 44 45 58 20 73 74 61 74 65 6d 65  OP INDEX stateme
b900: 6e 74 20 64 6f 65 73 20 6e 6f 74 20 72 65 64 75  nt does not redu
b910: 63 65 20 74 68 65 20 73 69 7a 65 20 6f 66 20 74  ce the size of t
b920: 68 65 20 64 61 74 61 62 61 73 65 20 0a 66 69 6c  he database .fil
b930: 65 20 69 6e 20 74 68 65 20 64 65 66 61 75 6c 74  e in the default
b940: 20 6d 6f 64 65 2e 0a 45 6d 70 74 79 20 73 70 61   mode..Empty spa
b950: 63 65 20 69 6e 20 74 68 65 20 64 61 74 61 62 61  ce in the databa
b960: 73 65 20 69 73 20 72 65 74 61 69 6e 65 64 20 66  se is retained f
b970: 6f 72 20 6c 61 74 65 72 20 5b 49 4e 53 45 52 54  or later [INSERT
b980: 5d 20 73 74 61 74 65 6d 65 6e 74 73 2e 20 20 54  ] statements.  T
b990: 6f 20 0a 72 65 6d 6f 76 65 20 66 72 65 65 20 73  o .remove free s
b9a0: 70 61 63 65 20 69 6e 20 74 68 65 20 64 61 74 61  pace in the data
b9b0: 62 61 73 65 2c 20 75 73 65 20 74 68 65 20 5b 56  base, use the [V
b9c0: 41 43 55 55 4d 5d 0a 63 6f 6d 6d 61 6e 64 2e 20  ACUUM].command. 
b9d0: 20 49 66 20 5b 61 75 74 6f 5f 76 61 63 75 75 6d   If [auto_vacuum
b9e0: 5d 20 6d 6f 64 65 20 69 73 20 65 6e 61 62 6c 65  ] mode is enable
b9f0: 64 20 66 6f 72 20 61 20 64 61 74 61 62 61 73 65  d for a database
ba00: 20 74 68 65 6e 20 73 70 61 63 65 0a 77 69 6c 6c   then space.will
ba10: 20 62 65 20 66 72 65 65 64 20 61 75 74 6f 6d 61   be freed automa
ba20: 74 69 63 61 6c 6c 79 20 62 79 20 44 52 4f 50 20  tically by DROP 
ba30: 49 4e 44 45 58 2e 3c 2f 70 3e 0a 0a 0a 3c 74 63  INDEX.</p>...<tc
ba40: 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23 23  l>.#############
ba50: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
ba60: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
ba70: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
ba80: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
ba90: 23 0a 53 65 63 74 69 6f 6e 20 7b 44 52 4f 50 20  #.Section {DROP 
baa0: 54 41 42 4c 45 7d 20 64 72 6f 70 74 61 62 6c 65  TABLE} droptable
bab0: 20 7b 7b 44 52 4f 50 20 54 41 42 4c 45 7d 7d 0a   {{DROP TABLE}}.
bac0: 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 64  .BubbleDiagram d
bad0: 72 6f 70 2d 74 61 62 6c 65 2d 73 74 6d 74 20 31  rop-table-stmt 1
bae0: 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20  .</tcl>..<p>The 
baf0: 44 52 4f 50 20 54 41 42 4c 45 20 73 74 61 74 65  DROP TABLE state
bb00: 6d 65 6e 74 20 72 65 6d 6f 76 65 73 20 61 20 74  ment removes a t
bb10: 61 62 6c 65 20 61 64 64 65 64 20 77 69 74 68 20  able added with 
bb20: 74 68 65 0a 5b 43 52 45 41 54 45 20 54 41 42 4c  the.[CREATE TABL
bb30: 45 5d 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 54  E] statement.  T
bb40: 68 65 20 6e 61 6d 65 20 73 70 65 63 69 66 69 65  he name specifie
bb50: 64 20 69 73 20 74 68 65 0a 74 61 62 6c 65 20 6e  d is the.table n
bb60: 61 6d 65 2e 20 20 49 74 20 69 73 20 63 6f 6d 70  ame.  It is comp
bb70: 6c 65 74 65 6c 79 20 72 65 6d 6f 76 65 64 20 66  letely removed f
bb80: 72 6f 6d 20 74 68 65 20 64 61 74 61 62 61 73 65  rom the database
bb90: 20 73 63 68 65 6d 61 20 61 6e 64 20 74 68 65 20   schema and the 
bba0: 0a 64 69 73 6b 20 66 69 6c 65 2e 20 20 54 68 65  .disk file.  The
bbb0: 20 74 61 62 6c 65 20 63 61 6e 20 6e 6f 74 20 62   table can not b
bbc0: 65 20 72 65 63 6f 76 65 72 65 64 2e 20 20 41 6c  e recovered.  Al
bbd0: 6c 20 69 6e 64 69 63 65 73 20 61 6e 64 20 74 72  l indices and tr
bbe0: 69 67 67 65 72 73 0a 61 73 73 6f 63 69 61 74 65  iggers.associate
bbf0: 64 20 77 69 74 68 20 74 68 65 20 74 61 62 6c 65  d with the table
bc00: 20 61 72 65 20 61 6c 73 6f 20 64 65 6c 65 74 65   are also delete
bc10: 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 44  d.</p>..<p>The D
bc20: 52 4f 50 20 54 41 42 4c 45 20 73 74 61 74 65 6d  ROP TABLE statem
bc30: 65 6e 74 20 64 6f 65 73 20 6e 6f 74 20 72 65 64  ent does not red
bc40: 75 63 65 20 74 68 65 20 73 69 7a 65 20 6f 66 20  uce the size of 
bc50: 74 68 65 20 64 61 74 61 62 61 73 65 20 0a 66 69  the database .fi
bc60: 6c 65 20 69 6e 20 74 68 65 20 64 65 66 61 75 6c  le in the defaul
bc70: 74 20 6d 6f 64 65 2e 20 20 45 6d 70 74 79 20 73  t mode.  Empty s
bc80: 70 61 63 65 20 69 6e 20 74 68 65 20 64 61 74 61  pace in the data
bc90: 62 61 73 65 20 69 73 20 72 65 74 61 69 6e 65 64  base is retained
bca0: 20 66 6f 72 0a 6c 61 74 65 72 20 5b 49 4e 53 45   for.later [INSE
bcb0: 52 54 5d 20 73 74 61 74 65 6d 65 6e 74 73 2e 20  RT] statements. 
bcc0: 20 54 6f 20 0a 72 65 6d 6f 76 65 20 66 72 65 65   To .remove free
bcd0: 20 73 70 61 63 65 20 69 6e 20 74 68 65 20 64 61   space in the da
bce0: 74 61 62 61 73 65 2c 20 0a 75 73 65 20 74 68 65  tabase, .use the
bcf0: 20 5b 56 41 43 55 55 4d 5d 20 73 74 61 74 65 6d   [VACUUM] statem
bd00: 65 6e 74 2e 0a 49 66 20 5b 61 75 74 6f 5f 76 61  ent..If [auto_va
bd10: 63 75 75 6d 5d 20 6d 6f 64 65 20 69 73 20 65 6e  cuum] mode is en
bd20: 61 62 6c 65 64 20 66 6f 72 20 61 20 64 61 74 61  abled for a data
bd30: 62 61 73 65 20 74 68 65 6e 20 73 70 61 63 65 0a  base then space.
bd40: 77 69 6c 6c 20 62 65 20 66 72 65 65 64 20 61 75  will be freed au
bd50: 74 6f 6d 61 74 69 63 61 6c 6c 79 20 62 79 20 44  tomatically by D
bd60: 52 4f 50 20 54 41 42 4c 45 2e 3c 2f 70 3e 0a 0a  ROP TABLE.</p>..
bd70: 3c 70 3e 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20  <p>The optional 
bd80: 49 46 20 45 58 49 53 54 53 20 63 6c 61 75 73 65  IF EXISTS clause
bd90: 20 73 75 70 70 72 65 73 73 65 73 20 74 68 65 20   suppresses the 
bda0: 65 72 72 6f 72 20 74 68 61 74 20 77 6f 75 6c 64  error that would
bdb0: 20 6e 6f 72 6d 61 6c 6c 79 0a 72 65 73 75 6c 74   normally.result
bdc0: 20 69 66 20 74 68 65 20 74 61 62 6c 65 20 64 6f   if the table do
bdd0: 65 73 20 6e 6f 74 20 65 78 69 73 74 2e 3c 2f 70  es not exist.</p
bde0: 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23  >..<tcl>.#######
bdf0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
be00: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
be10: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
be20: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
be30: 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20  #######.Section 
be40: 7b 44 52 4f 50 20 54 52 49 47 47 45 52 7d 20 64  {DROP TRIGGER} d
be50: 72 6f 70 74 72 69 67 67 65 72 20 7b 7b 44 52 4f  roptrigger {{DRO
be60: 50 20 54 52 49 47 47 45 52 7d 7d 0a 0a 42 75 62  P TRIGGER}}..Bub
be70: 62 6c 65 44 69 61 67 72 61 6d 20 64 72 6f 70 2d  bleDiagram drop-
be80: 74 72 69 67 67 65 72 2d 73 74 6d 74 20 31 0a 3c  trigger-stmt 1.<
be90: 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20 44 52  /tcl>..<p>The DR
bea0: 4f 50 20 54 52 49 47 47 45 52 20 73 74 61 74 65  OP TRIGGER state
beb0: 6d 65 6e 74 20 72 65 6d 6f 76 65 73 20 61 20 74  ment removes a t
bec0: 72 69 67 67 65 72 20 63 72 65 61 74 65 64 20 62  rigger created b
bed0: 79 20 74 68 65 20 0a 5b 43 52 45 41 54 45 20 54  y the .[CREATE T
bee0: 52 49 47 47 45 52 5d 20 73 74 61 74 65 6d 65 6e  RIGGER] statemen
bef0: 74 2e 20 20 54 68 65 20 74 72 69 67 67 65 72 20  t.  The trigger 
bf00: 69 73 20 0a 64 65 6c 65 74 65 64 20 66 72 6f 6d  is .deleted from
bf10: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 73 63   the database sc
bf20: 68 65 6d 61 2e 20 4e 6f 74 65 20 74 68 61 74 20  hema. Note that 
bf30: 74 72 69 67 67 65 72 73 20 61 72 65 20 61 75 74  triggers are aut
bf40: 6f 6d 61 74 69 63 61 6c 6c 79 20 0a 64 72 6f 70  omatically .drop
bf50: 70 65 64 20 77 68 65 6e 20 74 68 65 20 61 73 73  ped when the ass
bf60: 6f 63 69 61 74 65 64 20 74 61 62 6c 65 20 69 73  ociated table is
bf70: 20 64 72 6f 70 70 65 64 2e 3c 2f 70 3e 0a 0a 3c   dropped.</p>..<
bf80: 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23  tcl>.###########
bf90: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
bfa0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
bfb0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
bfc0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
bfd0: 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b 44 52 4f  ###.Section {DRO
bfe0: 50 20 56 49 45 57 7d 20 64 72 6f 70 76 69 65 77  P VIEW} dropview
bff0: 20 7b 7b 44 52 4f 50 20 56 49 45 57 7d 7d 0a 0a   {{DROP VIEW}}..
c000: 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 64 72  BubbleDiagram dr
c010: 6f 70 2d 76 69 65 77 2d 73 74 6d 74 20 31 0a 3c  op-view-stmt 1.<
c020: 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20 44 52  /tcl>..<p>The DR
c030: 4f 50 20 56 49 45 57 20 73 74 61 74 65 6d 65 6e  OP VIEW statemen
c040: 74 20 72 65 6d 6f 76 65 73 20 61 20 76 69 65 77  t removes a view
c050: 20 63 72 65 61 74 65 64 20 62 79 20 74 68 65 0a   created by the.
c060: 5b 43 52 45 41 54 45 20 56 49 45 57 5d 20 73 74  [CREATE VIEW] st
c070: 61 74 65 6d 65 6e 74 2e 20 20 54 68 65 20 6e 61  atement.  The na
c080: 6d 65 20 73 70 65 63 69 66 69 65 64 20 69 73 20  me specified is 
c090: 74 68 65 20 0a 76 69 65 77 20 6e 61 6d 65 2e 20  the .view name. 
c0a0: 20 49 74 20 69 73 20 72 65 6d 6f 76 65 64 20 66   It is removed f
c0b0: 72 6f 6d 20 74 68 65 20 64 61 74 61 62 61 73 65  rom the database
c0c0: 20 73 63 68 65 6d 61 2c 20 62 75 74 20 6e 6f 20   schema, but no 
c0d0: 61 63 74 75 61 6c 20 64 61 74 61 20 0a 69 6e 20  actual data .in 
c0e0: 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 62  the underlying b
c0f0: 61 73 65 20 74 61 62 6c 65 73 20 69 73 20 6d 6f  ase tables is mo
c100: 64 69 66 69 65 64 2e 3c 2f 70 3e 0a 0a 3c 74 63  dified.</p>..<tc
c110: 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23 23  l>.#############
c120: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c130: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c140: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c150: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c160: 23 0a 53 65 63 74 69 6f 6e 20 45 58 50 4c 41 49  #.Section EXPLAI
c170: 4e 20 65 78 70 6c 61 69 6e 20 45 58 50 4c 41 49  N explain EXPLAI
c180: 4e 0a 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d  N..BubbleDiagram
c190: 20 73 71 6c 2d 73 74 6d 74 0a 3c 2f 74 63 6c 3e   sql-stmt.</tcl>
c1a0: 0a 0a 3c 70 3e 41 6e 20 53 51 4c 20 73 74 61 74  ..<p>An SQL stat
c1b0: 65 6d 65 6e 74 20 63 61 6e 20 62 65 20 70 72 65  ement can be pre
c1c0: 63 65 64 65 64 20 62 79 20 74 68 65 20 6b 65 79  ceded by the key
c1d0: 77 6f 72 64 20 22 45 58 50 4c 41 49 4e 22 20 6f  word "EXPLAIN" o
c1e0: 72 0a 62 79 20 74 68 65 20 70 68 72 61 73 65 20  r.by the phrase 
c1f0: 22 45 58 50 4c 41 49 4e 20 51 55 45 52 59 20 50  "EXPLAIN QUERY P
c200: 4c 41 4e 22 2e 20 20 45 69 74 68 65 72 20 6d 6f  LAN".  Either mo
c210: 64 69 66 69 63 61 74 69 6f 6e 20 63 61 75 73 65  dification cause
c220: 73 20 74 68 65 0a 53 51 4c 20 73 74 61 74 65 6d  s the.SQL statem
c230: 65 6e 74 20 74 6f 20 62 65 68 61 76 65 20 61 73  ent to behave as
c240: 20 61 20 71 75 65 72 79 20 61 6e 64 20 74 6f 20   a query and to 
c250: 72 65 74 75 72 6e 20 69 6e 66 6f 72 6d 61 74 69  return informati
c260: 6f 6e 20 61 62 6f 75 74 0a 68 6f 77 20 74 68 65  on about.how the
c270: 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 77   SQL statement w
c280: 6f 75 6c 64 20 68 61 76 65 20 6f 70 65 72 61 74  ould have operat
c290: 65 64 20 69 66 20 74 68 65 20 45 58 50 4c 41 49  ed if the EXPLAI
c2a0: 4e 20 6b 65 79 77 6f 72 64 20 6f 72 0a 70 68 72  N keyword or.phr
c2b0: 61 73 65 20 68 61 64 20 62 65 65 6e 20 6f 6d 69  ase had been omi
c2c0: 74 74 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 57 68  tted.</p>..<p>Wh
c2d0: 65 6e 20 74 68 65 20 45 58 50 4c 41 49 4e 20 6b  en the EXPLAIN k
c2e0: 65 79 77 6f 72 64 20 61 70 70 65 61 72 73 20 62  eyword appears b
c2f0: 79 20 69 74 73 65 6c 66 20 69 74 20 63 61 75 73  y itself it caus
c300: 65 73 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74  es the statement
c310: 0a 74 6f 20 62 65 68 61 76 65 20 61 73 20 61 20  .to behave as a 
c320: 71 75 65 72 79 20 74 68 61 74 20 72 65 74 75 72  query that retur
c330: 6e 73 20 74 68 65 20 73 65 71 75 65 6e 63 65 20  ns the sequence 
c340: 6f 66 20 0a 3c 61 20 68 72 65 66 3d 22 6f 70 63  of .<a href="opc
c350: 6f 64 65 2e 68 74 6d 6c 22 3e 76 69 72 74 75 61  ode.html">virtua
c360: 6c 20 6d 61 63 68 69 6e 65 20 69 6e 73 74 72 75  l machine instru
c370: 63 74 69 6f 6e 73 3c 2f 61 3e 20 69 74 20 77 6f  ctions</a> it wo
c380: 75 6c 64 20 68 61 76 65 0a 75 73 65 64 20 74 6f  uld have.used to
c390: 20 65 78 65 63 75 74 65 20 74 68 65 20 63 6f 6d   execute the com
c3a0: 6d 61 6e 64 20 68 61 64 20 74 68 65 20 45 58 50  mand had the EXP
c3b0: 4c 41 49 4e 20 6b 65 79 77 6f 72 64 20 6e 6f 74  LAIN keyword not
c3c0: 20 62 65 65 6e 20 70 72 65 73 65 6e 74 2e 0a 57   been present..W
c3d0: 68 65 6e 20 74 68 65 20 45 58 50 4c 41 49 4e 20  hen the EXPLAIN 
c3e0: 51 55 45 52 59 20 50 4c 41 4e 20 70 68 72 61 73  QUERY PLAN phras
c3f0: 65 20 61 70 70 65 61 72 73 2c 20 74 68 65 20 73  e appears, the s
c400: 74 61 74 65 6d 65 6e 74 20 72 65 74 75 72 6e 73  tatement returns
c410: 0a 68 69 67 68 2d 6c 65 76 65 6c 20 69 6e 66 6f  .high-level info
c420: 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 77 68  rmation about wh
c430: 61 74 20 69 6e 64 69 63 65 73 20 77 6f 75 6c 64  at indices would
c440: 20 68 61 76 65 20 62 65 65 6e 20 75 73 65 64 2e   have been used.
c450: 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 6f 75 74  </p>..<p>The out
c460: 70 75 74 20 66 72 6f 6d 20 45 58 50 4c 41 49 4e  put from EXPLAIN
c470: 20 61 6e 64 20 45 58 50 4c 41 49 4e 20 51 55 45   and EXPLAIN QUE
c480: 52 59 20 50 4c 41 4e 20 69 73 20 69 6e 74 65 6e  RY PLAN is inten
c490: 64 65 64 20 66 6f 72 0a 69 6e 74 65 72 61 63 74  ded for.interact
c4a0: 69 76 65 20 61 6e 61 6c 79 73 69 73 20 61 6e 64  ive analysis and
c4b0: 20 74 72 6f 75 62 6c 65 73 68 6f 6f 74 69 6e 67   troubleshooting
c4c0: 20 6f 6e 6c 79 2e 20 20 54 68 65 20 64 65 74 61   only.  The deta
c4d0: 69 6c 73 20 6f 66 20 74 68 65 20 0a 6f 75 74 70  ils of the .outp
c4e0: 75 74 20 66 6f 72 6d 61 74 20 61 72 65 20 73 75  ut format are su
c4f0: 62 6a 65 63 74 20 74 6f 20 63 68 61 6e 67 65 20  bject to change 
c500: 66 72 6f 6d 20 6f 6e 65 20 72 65 6c 65 61 73 65  from one release
c510: 20 6f 66 20 53 51 4c 69 74 65 20 74 6f 20 74 68   of SQLite to th
c520: 65 20 6e 65 78 74 2e 0a 41 70 70 6c 69 63 61 74  e next..Applicat
c530: 69 6f 6e 73 20 73 68 6f 75 6c 64 20 6e 6f 74 20  ions should not 
c540: 75 73 65 20 45 58 50 4c 41 49 4e 20 6f 72 20 45  use EXPLAIN or E
c550: 58 50 4c 41 49 4e 20 51 55 45 52 59 20 50 4c 41  XPLAIN QUERY PLA
c560: 4e 20 73 69 6e 63 65 0a 74 68 65 69 72 20 62 65  N since.their be
c570: 68 61 76 69 6f 72 20 69 73 20 75 6e 64 6f 63 75  havior is undocu
c580: 6d 65 6e 74 65 64 2c 20 75 6e 73 70 65 63 69 66  mented, unspecif
c590: 69 65 64 2c 20 61 6e 64 20 76 61 72 69 61 62 6c  ied, and variabl
c5a0: 65 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23  e.</p>..<tcl>.##
c5b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c5c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c5d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c5e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c5f0: 23 23 23 23 23 23 23 23 23 23 23 23 0a 53 65 63  ############.Sec
c600: 74 69 6f 6e 20 65 78 70 72 65 73 73 69 6f 6e 20  tion expression 
c610: 65 78 70 72 20 7b 65 78 70 72 65 73 73 69 6f 6e  expr {expression
c620: 20 7b 65 78 70 72 65 73 73 69 6f 6e 20 73 79 6e   {expression syn
c630: 74 61 78 7d 7d 0a 0a 42 75 62 62 6c 65 44 69 61  tax}}..BubbleDia
c640: 67 72 61 6d 20 65 78 70 72 20 31 0a 42 75 62 62  gram expr 1.Bubb
c650: 6c 65 44 69 61 67 72 61 6d 20 6c 69 74 65 72 61  leDiagram litera
c660: 6c 2d 76 61 6c 75 65 0a 42 75 62 62 6c 65 44 69  l-value.BubbleDi
c670: 61 67 72 61 6d 20 73 69 67 6e 65 64 2d 6e 75 6d  agram signed-num
c680: 62 65 72 0a 42 75 62 62 6c 65 44 69 61 67 72 61  ber.BubbleDiagra
c690: 6d 20 72 61 69 73 65 2d 66 75 6e 63 74 69 6f 6e  m raise-function
c6a0: 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 69 73  .</tcl>..<p>This
c6b0: 20 73 65 63 74 69 6f 6e 20 69 73 20 64 69 66 66   section is diff
c6c0: 65 72 65 6e 74 20 66 72 6f 6d 20 74 68 65 20 6f  erent from the o
c6d0: 74 68 65 72 73 2e 20 20 4d 6f 73 74 20 6f 74 68  thers.  Most oth
c6e0: 65 72 20 73 65 63 74 69 6f 6e 73 20 6f 66 0a 74  er sections of.t
c6f0: 68 69 73 20 64 6f 63 75 6d 65 6e 74 20 74 61 6c  his document tal
c700: 6b 73 20 61 62 6f 75 74 20 61 20 70 61 72 74 69  ks about a parti
c710: 63 75 6c 61 72 20 53 51 4c 20 63 6f 6d 6d 61 6e  cular SQL comman
c720: 64 2e 20 20 54 68 69 73 20 73 65 63 74 69 6f 6e  d.  This section
c730: 20 64 6f 65 73 0a 6e 6f 74 20 74 61 6c 6b 20 61   does.not talk a
c740: 62 6f 75 74 20 61 20 73 74 61 6e 64 61 6c 6f 6e  bout a standalon
c750: 65 20 63 6f 6d 6d 61 6e 64 20 62 75 74 20 61 62  e command but ab
c760: 6f 75 74 20 22 65 78 70 72 65 73 73 69 6f 6e 73  out "expressions
c770: 22 20 77 68 69 63 68 20 61 72 65 20 0a 73 75 62  " which are .sub
c780: 63 6f 6d 70 6f 6e 65 6e 74 73 20 6f 66 20 6d 6f  components of mo
c790: 73 74 20 6f 74 68 65 72 20 63 6f 6d 6d 61 6e 64  st other command
c7a0: 73 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 68 64 5f  s.</p>..<tcl>hd_
c7b0: 66 72 61 67 6d 65 6e 74 20 62 69 6e 61 72 79 6f  fragment binaryo
c7c0: 70 73 20 7b 62 69 6e 61 72 79 20 6f 70 65 72 61  ps {binary opera
c7d0: 74 6f 72 73 7d 3c 2f 74 63 6c 3e 0a 3c 68 33 3e  tors}</tcl>.<h3>
c7e0: 4f 70 65 72 61 74 6f 72 73 3c 2f 68 33 3e 0a 3c  Operators</h3>.<
c7f0: 70 3e 53 51 4c 69 74 65 20 75 6e 64 65 72 73 74  p>SQLite underst
c800: 61 6e 64 73 20 74 68 65 20 66 6f 6c 6c 6f 77 69  ands the followi
c810: 6e 67 20 62 69 6e 61 72 79 20 6f 70 65 72 61 74  ng binary operat
c820: 6f 72 73 2c 20 69 6e 20 6f 72 64 65 72 20 66 72  ors, in order fr
c830: 6f 6d 0a 68 69 67 68 65 73 74 20 74 6f 20 6c 6f  om.highest to lo
c840: 77 65 73 74 20 70 72 65 63 65 64 65 6e 63 65 3a  west precedence:
c850: 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74  </p>..<blockquot
c860: 65 3e 3c 70 72 65 3e 0a 3c 66 6f 6e 74 20 63 6f  e><pre>.<font co
c870: 6c 6f 72 3d 22 23 32 63 32 63 66 30 22 3e 3c 62  lor="#2c2cf0"><b
c880: 69 67 3e 7c 7c 0a 2a 20 20 20 20 2f 20 20 20 20  ig>||.*    /    
c890: 25 0a 2b 20 20 20 20 2d 0a 26 6c 74 3b 26 6c 74  %.+    -.&lt;&lt
c8a0: 3b 20 20 20 26 67 74 3b 26 67 74 3b 20 20 20 26  ;   &gt;&gt;   &
c8b0: 61 6d 70 3b 20 20 20 20 7c 0a 26 6c 74 3b 20 20  amp;    |.&lt;  
c8c0: 20 20 26 6c 74 3b 3d 20 20 20 26 67 74 3b 20 20    &lt;=   &gt;  
c8d0: 20 20 26 67 74 3b 3d 0a 3d 20 20 20 20 3d 3d 20    &gt;=.=    == 
c8e0: 20 20 21 3d 20 20 20 26 6c 74 3b 26 67 74 3b 20    !=   &lt;&gt; 
c8f0: 20 20 3c 2f 62 69 67 3e 49 4e 20 20 4c 49 4b 45    </big>IN  LIKE
c900: 20 20 47 4c 4f 42 20 20 4d 41 54 43 48 20 20 52    GLOB  MATCH  R
c910: 45 47 45 58 50 0a 41 4e 44 20 20 20 0a 4f 52 3c  EGEXP.AND   .OR<
c920: 2f 66 6f 6e 74 3e 0a 3c 2f 70 72 65 3e 3c 2f 62  /font>.</pre></b
c930: 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70 3e 53  lockquote>..<p>S
c940: 75 70 70 6f 72 74 65 64 20 75 6e 61 72 79 20 70  upported unary p
c950: 72 65 66 69 78 20 6f 70 65 72 61 74 6f 72 73 20  refix operators 
c960: 61 72 65 20 74 68 65 73 65 3a 3c 2f 70 3e 0a 0a  are these:</p>..
c970: 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70 72 65  <blockquote><pre
c980: 3e 0a 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 22 23  >.<font color="#
c990: 32 63 32 63 66 30 22 3e 3c 62 69 67 3e 2d 20 20  2c2cf0"><big>-  
c9a0: 20 20 2b 20 20 20 20 7e 20 20 20 20 4e 4f 54 3c    +    ~    NOT<
c9b0: 2f 62 69 67 3e 3c 2f 66 6f 6e 74 3e 0a 3c 2f 70  /big></font>.</p
c9c0: 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e  re></blockquote>
c9d0: 0a 0a 3c 70 3e 54 68 65 20 43 4f 4c 4c 41 54 45  ..<p>The COLLATE
c9e0: 20 6f 70 65 72 61 74 6f 72 20 63 61 6e 20 62 65   operator can be
c9f0: 20 74 68 6f 75 67 68 74 20 6f 66 20 61 73 20 61   thought of as a
ca00: 20 75 6e 61 72 79 20 70 6f 73 74 66 69 78 0a 6f   unary postfix.o
ca10: 70 65 72 61 74 6f 72 2e 20 20 54 68 65 20 43 4f  perator.  The CO
ca20: 4c 4c 41 54 45 20 6f 70 65 72 61 74 6f 72 20 68  LLATE operator h
ca30: 61 73 20 74 68 65 20 68 69 67 68 65 73 74 20 70  as the highest p
ca40: 72 65 63 65 64 65 6e 63 65 2e 0a 49 74 20 61 6c  recedence..It al
ca50: 77 61 79 73 20 62 69 6e 64 73 20 6d 6f 72 65 20  ways binds more 
ca60: 74 69 67 68 74 6c 79 20 74 68 61 6e 20 61 6e 79  tightly than any
ca70: 20 70 72 65 66 69 78 20 75 6e 61 72 79 20 6f 70   prefix unary op
ca80: 65 72 61 74 6f 72 20 6f 72 0a 61 6e 79 20 62 69  erator or.any bi
ca90: 6e 61 72 79 20 6f 70 65 72 61 74 6f 72 2e 3c 2f  nary operator.</
caa0: 70 3e 0a 0a 3c 74 63 6c 3e 68 64 5f 70 75 74 73  p>..<tcl>hd_puts
cab0: 20 22 0a 3c 70 3e 54 68 65 20 75 6e 61 72 79 20   ".<p>The unary 
cac0: 6f 70 65 72 61 74 6f 72 20 5b 4f 70 65 72 61 74  operator [Operat
cad0: 6f 72 20 2b 5d 20 69 73 20 61 20 6e 6f 2d 6f 70  or +] is a no-op
cae0: 2e 20 20 49 74 20 63 61 6e 20 62 65 20 61 70 70  .  It can be app
caf0: 6c 69 65 64 0a 74 6f 20 73 74 72 69 6e 67 73 2c  lied.to strings,
cb00: 20 6e 75 6d 62 65 72 73 2c 20 6f 72 20 62 6c 6f   numbers, or blo
cb10: 62 73 20 61 6e 64 20 69 74 20 61 6c 77 61 79 73  bs and it always
cb20: 20 67 69 76 65 73 20 61 73 20 69 74 73 20 72 65   gives as its re
cb30: 73 75 6c 74 20 74 68 65 0a 76 61 6c 75 65 20 6f  sult the.value o
cb40: 66 20 74 68 65 20 6f 70 65 72 61 6e 64 2e 3c 2f  f the operand.</
cb50: 70 3e 22 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 4e 6f  p>"</tcl>..<p>No
cb60: 74 65 20 74 68 61 74 20 74 68 65 72 65 20 61 72  te that there ar
cb70: 65 20 74 77 6f 20 76 61 72 69 61 74 69 6f 6e 73  e two variations
cb80: 20 6f 66 20 74 68 65 20 65 71 75 61 6c 73 20 61   of the equals a
cb90: 6e 64 20 6e 6f 74 20 65 71 75 61 6c 73 0a 6f 70  nd not equals.op
cba0: 65 72 61 74 6f 72 73 2e 20 20 45 71 75 61 6c 73  erators.  Equals
cbb0: 20 63 61 6e 20 62 65 20 65 69 74 68 65 72 0a 0a   can be either..
cbc0: 3c 74 63 6c 3e 0a 68 64 5f 70 75 74 73 20 22 5b  <tcl>.hd_puts "[
cbd0: 4f 70 65 72 61 74 6f 72 20 3d 5d 20 6f 72 20 5b  Operator =] or [
cbe0: 4f 70 65 72 61 74 6f 72 20 3d 3d 5d 2e 0a 54 68  Operator ==]..Th
cbf0: 65 20 6e 6f 6e 2d 65 71 75 61 6c 73 20 6f 70 65  e non-equals ope
cc00: 72 61 74 6f 72 20 63 61 6e 20 62 65 20 65 69 74  rator can be eit
cc10: 68 65 72 0a 5b 4f 70 65 72 61 74 6f 72 20 21 3d  her.[Operator !=
cc20: 5d 20 6f 72 20 5b 4f 70 65 72 61 74 6f 72 20 7b  ] or [Operator {
cc30: 26 6c 74 3b 26 67 74 3b 7d 5d 2e 0a 54 68 65 20  &lt;&gt;}]..The 
cc40: 5b 4f 70 65 72 61 74 6f 72 20 7c 7c 5d 20 6f 70  [Operator ||] op
cc50: 65 72 61 74 6f 72 20 69 73 20 5c 22 63 6f 6e 63  erator is \"conc
cc60: 61 74 65 6e 61 74 65 5c 22 20 2d 20 69 74 20 6a  atenate\" - it j
cc70: 6f 69 6e 73 20 74 6f 67 65 74 68 65 72 0a 74 68  oins together.th
cc80: 65 20 74 77 6f 20 73 74 72 69 6e 67 73 20 6f 66  e two strings of
cc90: 20 69 74 73 20 6f 70 65 72 61 6e 64 73 2e 0a 54   its operands..T
cca0: 68 65 20 6f 70 65 72 61 74 6f 72 20 5b 4f 70 65  he operator [Ope
ccb0: 72 61 74 6f 72 20 25 5d 20 6f 75 74 70 75 74 73  rator %] outputs
ccc0: 20 74 68 65 20 72 65 6d 61 69 6e 64 65 72 20 6f   the remainder o
ccd0: 66 20 69 74 73 20 6c 65 66 74 20 0a 6f 70 65 72  f its left .oper
cce0: 61 6e 64 20 6d 6f 64 75 6c 6f 20 69 74 73 20 72  and modulo its r
ccf0: 69 67 68 74 20 6f 70 65 72 61 6e 64 2e 3c 2f 70  ight operand.</p
cd00: 3e 0a 0a 3c 70 3e 54 68 65 20 72 65 73 75 6c 74  >..<p>The result
cd10: 20 6f 66 20 61 6e 79 20 62 69 6e 61 72 79 20 6f   of any binary o
cd20: 70 65 72 61 74 6f 72 20 69 73 20 61 20 6e 75 6d  perator is a num
cd30: 65 72 69 63 20 76 61 6c 75 65 2c 20 65 78 63 65  eric value, exce
cd40: 70 74 0a 66 6f 72 20 74 68 65 20 5b 4f 70 65 72  pt.for the [Oper
cd50: 61 74 6f 72 20 7c 7c 5d 20 63 6f 6e 63 61 74 65  ator ||] concate
cd60: 6e 61 74 69 6f 6e 20 6f 70 65 72 61 74 6f 72 20  nation operator 
cd70: 77 68 69 63 68 20 67 69 76 65 73 20 61 20 73 74  which gives a st
cd80: 72 69 6e 67 0a 72 65 73 75 6c 74 2e 3c 2f 70 3e  ring.result.</p>
cd90: 22 3c 2f 74 63 6c 3e 0a 0a 3c 74 63 6c 3e 68 64  "</tcl>..<tcl>hd
cda0: 5f 66 72 61 67 6d 65 6e 74 20 6c 69 74 76 61 6c  _fragment litval
cdb0: 75 65 20 7b 6c 69 74 65 72 61 6c 20 76 61 6c 75  ue {literal valu
cdc0: 65 7d 3c 2f 74 63 6c 3e 0a 3c 68 33 3e 4c 69 74  e}</tcl>.<h3>Lit
cdd0: 65 72 61 6c 20 56 61 6c 75 65 73 3c 2f 68 33 3e  eral Values</h3>
cde0: 0a 3c 70 3e 0a 41 20 6c 69 74 65 72 61 6c 20 76  .<p>.A literal v
cdf0: 61 6c 75 65 20 69 73 20 61 20 63 6f 6e 73 74 61  alue is a consta
ce00: 6e 74 20 6f 66 20 73 6f 6d 65 20 6b 69 6e 64 2e  nt of some kind.
ce10: 0a 4c 69 74 65 72 61 6c 20 76 61 6c 75 65 73 20  .Literal values 
ce20: 6d 61 79 20 62 65 20 69 6e 74 65 67 65 72 73 2c  may be integers,
ce30: 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20   floating point 
ce40: 6e 75 6d 62 65 72 73 2c 20 73 74 72 69 6e 67 73  numbers, strings
ce50: 2c 0a 42 4c 4f 42 73 2c 20 6f 72 20 4e 55 4c 4c  ,.BLOBs, or NULL
ce60: 73 2e 0a 53 63 69 65 6e 74 69 66 69 63 20 6e 6f  s..Scientific no
ce70: 74 61 74 69 6f 6e 20 69 73 20 73 75 70 70 6f 72  tation is suppor
ce80: 74 65 64 20 66 6f 72 20 66 6c 6f 61 74 69 6e 67  ted for floating
ce90: 20 70 6f 69 6e 74 20 6c 69 74 65 72 61 6c 20 76   point literal v
cea0: 61 6c 75 65 73 2e 0a 54 68 65 20 22 2e 22 20 63  alues..The "." c
ceb0: 68 61 72 61 63 74 65 72 20 69 73 20 61 6c 77 61  haracter is alwa
cec0: 79 73 20 75 73 65 64 20 0a 61 73 20 74 68 65 20  ys used .as the 
ced0: 64 65 63 69 6d 61 6c 20 70 6f 69 6e 74 20 65 76  decimal point ev
cee0: 65 6e 20 69 66 20 74 68 65 20 6c 6f 63 61 6c 65  en if the locale
cef0: 20 73 65 74 74 69 6e 67 20 73 70 65 63 69 66 69   setting specifi
cf00: 65 73 20 22 2c 22 20 66 6f 72 0a 74 68 69 73 20  es "," for.this 
cf10: 72 6f 6c 65 20 2d 20 74 68 65 20 75 73 65 20 6f  role - the use o
cf20: 66 20 22 2c 22 20 66 6f 72 20 74 68 65 20 64 65  f "," for the de
cf30: 63 69 6d 61 6c 20 70 6f 69 6e 74 20 77 6f 75 6c  cimal point woul
cf40: 64 20 72 65 73 75 6c 74 20 69 6e 0a 73 79 6e 74  d result in.synt
cf50: 61 63 74 69 63 20 61 6d 62 69 67 75 69 74 79 2e  actic ambiguity.
cf60: 20 20 41 20 73 74 72 69 6e 67 20 63 6f 6e 73 74    A string const
cf70: 61 6e 74 20 69 73 20 66 6f 72 6d 65 64 20 62 79  ant is formed by
cf80: 20 65 6e 63 6c 6f 73 69 6e 67 20 74 68 65 0a 73   enclosing the.s
cf90: 74 72 69 6e 67 20 69 6e 20 73 69 6e 67 6c 65 20  tring in single 
cfa0: 71 75 6f 74 65 73 20 28 27 29 2e 20 20 41 20 73  quotes (').  A s
cfb0: 69 6e 67 6c 65 20 71 75 6f 74 65 20 77 69 74 68  ingle quote with
cfc0: 69 6e 20 74 68 65 20 73 74 72 69 6e 67 20 63 61  in the string ca
cfd0: 6e 0a 62 65 20 65 6e 63 6f 64 65 64 20 62 79 20  n.be encoded by 
cfe0: 70 75 74 74 69 6e 67 20 74 77 6f 20 73 69 6e 67  putting two sing
cff0: 6c 65 20 71 75 6f 74 65 73 20 69 6e 20 61 20 72  le quotes in a r
d000: 6f 77 20 2d 20 61 73 20 69 6e 20 50 61 73 63 61  ow - as in Pasca
d010: 6c 2e 0a 43 2d 73 74 79 6c 65 20 65 73 63 61 70  l..C-style escap
d020: 65 73 20 75 73 69 6e 67 20 74 68 65 20 62 61 63  es using the bac
d030: 6b 73 6c 61 73 68 20 63 68 61 72 61 63 74 65 72  kslash character
d040: 20 61 72 65 20 6e 6f 74 20 73 75 70 70 6f 72 74   are not support
d050: 65 64 20 62 65 63 61 75 73 65 0a 74 68 65 79 20  ed because.they 
d060: 61 72 65 20 6e 6f 74 20 73 74 61 6e 64 61 72 64  are not standard
d070: 20 53 51 4c 2e 0a 42 4c 4f 42 20 6c 69 74 65 72   SQL..BLOB liter
d080: 61 6c 73 20 61 72 65 20 73 74 72 69 6e 67 20 6c  als are string l
d090: 69 74 65 72 61 6c 73 20 63 6f 6e 74 61 69 6e 69  iterals containi
d0a0: 6e 67 20 68 65 78 61 64 65 63 69 6d 61 6c 20 64  ng hexadecimal d
d0b0: 61 74 61 20 61 6e 64 0a 70 72 65 63 65 64 65 64  ata and.preceded
d0c0: 20 62 79 20 61 20 73 69 6e 67 6c 65 20 22 78 22   by a single "x"
d0d0: 20 6f 72 20 22 58 22 20 63 68 61 72 61 63 74 65   or "X" characte
d0e0: 72 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c 65 3a  r.  For example:
d0f0: 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74  </p>..<blockquot
d100: 65 3e 3c 70 72 65 3e 0a 58 27 35 33 35 31 34 43  e><pre>.X'53514C
d110: 36 39 37 34 36 35 27 0a 3c 2f 70 72 65 3e 3c 2f  697465'.</pre></
d120: 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70 3e  blockquote>..<p>
d130: 0a 41 20 6c 69 74 65 72 61 6c 20 76 61 6c 75 65  .A literal value
d140: 20 63 61 6e 20 61 6c 73 6f 20 62 65 20 74 68 65   can also be the
d150: 20 74 6f 6b 65 6e 20 22 4e 55 4c 4c 22 2e 0a 3c   token "NULL"..<
d160: 2f 70 3e 0a 0a 3c 74 63 6c 3e 68 64 5f 66 72 61  /p>..<tcl>hd_fra
d170: 67 6d 65 6e 74 20 76 61 72 70 61 72 61 6d 20 70  gment varparam p
d180: 61 72 61 6d 65 74 65 72 20 70 61 72 61 6d 65 74  arameter paramet
d190: 65 72 73 3c 2f 74 63 6c 3e 0a 3c 68 33 3e 50 61  ers</tcl>.<h3>Pa
d1a0: 72 61 6d 65 74 65 72 73 3c 2f 68 33 3e 0a 3c 70  rameters</h3>.<p
d1b0: 3e 0a 41 20 22 76 61 72 69 61 62 6c 65 22 20 6f  >.A "variable" o
d1c0: 72 20 22 70 61 72 61 6d 65 74 65 72 22 20 74 6f  r "parameter" to
d1d0: 6b 65 6e 0a 73 70 65 63 69 66 69 65 73 20 61 20  ken.specifies a 
d1e0: 70 6c 61 63 65 68 6f 6c 64 65 72 20 69 6e 20 74  placeholder in t
d1f0: 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20 66 6f  he expression fo
d200: 72 20 61 20 6c 69 74 65 72 61 6c 0a 76 61 6c 75  r a literal.valu
d210: 65 20 74 68 61 74 20 69 73 20 66 69 6c 6c 65 64  e that is filled
d220: 20 69 6e 20 61 74 20 72 75 6e 74 69 6d 65 20 75   in at runtime u
d230: 73 69 6e 67 20 74 68 65 0a 5b 73 71 6c 69 74 65  sing the.[sqlite
d240: 33 5f 62 69 6e 64 5f 62 6c 6f 62 28 29 20 7c 20  3_bind_blob() | 
d250: 73 71 6c 69 74 65 33 5f 62 69 6e 64 28 29 5d 20  sqlite3_bind()] 
d260: 66 61 6d 69 6c 79 20 6f 66 20 43 2f 43 2b 2b 20  family of C/C++ 
d270: 69 6e 74 65 72 66 61 63 65 73 2e 0a 50 61 72 61  interfaces..Para
d280: 6d 65 74 65 72 73 20 63 61 6e 20 74 61 6b 65 20  meters can take 
d290: 73 65 76 65 72 61 6c 20 66 6f 72 6d 73 3a 0a 3c  several forms:.<
d2a0: 2f 70 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e  /p..<blockquote>
d2b0: 0a 3c 74 61 62 6c 65 3e 0a 3c 74 72 3e 0a 3c 74  .<table>.<tr>.<t
d2c0: 64 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 20  d align="right" 
d2d0: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 3c 62 3e  valign="top"><b>
d2e0: 3f 3c 2f 62 3e 3c 69 3e 4e 4e 4e 3c 2f 69 3e 3c  ?</b><i>NNN</i><
d2f0: 2f 74 64 3e 3c 74 64 20 77 69 64 74 68 3d 22 32  /td><td width="2
d300: 30 22 3e 3c 2f 74 64 3e 0a 3c 74 64 3e 41 20 71  0"></td>.<td>A q
d310: 75 65 73 74 69 6f 6e 20 6d 61 72 6b 20 66 6f 6c  uestion mark fol
d320: 6c 6f 77 65 64 20 62 79 20 61 20 6e 75 6d 62 65  lowed by a numbe
d330: 72 20 3c 69 3e 4e 4e 4e 3c 2f 69 3e 20 68 6f 6c  r <i>NNN</i> hol
d340: 64 73 20 61 20 73 70 6f 74 20 66 6f 72 20 74 68  ds a spot for th
d350: 65 0a 4e 4e 4e 2d 74 68 20 70 61 72 61 6d 65 74  e.NNN-th paramet
d360: 65 72 2e 20 20 4e 4e 4e 20 6d 75 73 74 20 62 65  er.  NNN must be
d370: 20 62 65 74 77 65 65 6e 20 31 20 61 6e 64 20 5b   between 1 and [
d380: 53 51 4c 49 54 45 5f 4d 41 58 5f 56 41 52 49 41  SQLITE_MAX_VARIA
d390: 42 4c 45 5f 4e 55 4d 42 45 52 5d 2e 3c 2f 74 64  BLE_NUMBER].</td
d3a0: 3e 0a 3c 2f 74 72 3e 0a 3c 74 72 3e 0a 3c 74 64  >.</tr>.<tr>.<td
d3b0: 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 20 76   align="right" v
d3c0: 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 3c 62 3e 3f  align="top"><b>?
d3d0: 3c 2f 62 3e 3c 2f 74 64 3e 3c 74 64 20 77 69 64  </b></td><td wid
d3e0: 74 68 3d 22 32 30 22 3e 3c 2f 74 64 3e 0a 3c 74  th="20"></td>.<t
d3f0: 64 3e 41 20 71 75 65 73 74 69 6f 6e 20 6d 61 72  d>A question mar
d400: 6b 20 74 68 61 74 20 69 73 20 6e 6f 74 20 66 6f  k that is not fo
d410: 6c 6c 6f 77 65 64 20 62 79 20 61 20 6e 75 6d 62  llowed by a numb
d420: 65 72 20 68 6f 6c 64 73 20 61 20 73 70 6f 74 20  er holds a spot 
d430: 66 6f 72 0a 74 68 65 20 6e 65 78 74 20 75 6e 75  for.the next unu
d440: 73 65 64 20 70 61 72 61 6d 65 74 65 72 2e 3c 2f  sed parameter.</
d450: 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 74 72 3e 0a 3c  td>.</tr>.<tr>.<
d460: 74 64 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22  td align="right"
d470: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 3c 62   valign="top"><b
d480: 3e 3a 3c 2f 62 3e 3c 69 3e 41 41 41 41 3c 2f 69  >:</b><i>AAAA</i
d490: 3e 3c 2f 74 64 3e 3c 74 64 20 77 69 64 74 68 3d  ></td><td width=
d4a0: 22 32 30 22 3e 3c 2f 74 64 3e 0a 3c 74 64 3e 41  "20"></td>.<td>A
d4b0: 20 63 6f 6c 6f 6e 20 66 6f 6c 6c 6f 77 65 64 20   colon followed 
d4c0: 62 79 20 61 6e 20 69 64 65 6e 74 69 66 69 65 72  by an identifier
d4d0: 20 6e 61 6d 65 20 68 6f 6c 64 73 20 61 20 73 70   name holds a sp
d4e0: 6f 74 20 66 6f 72 20 61 20 6e 61 6d 65 64 0a 70  ot for a named.p
d4f0: 61 72 61 6d 65 74 65 72 20 77 69 74 68 20 74 68  arameter with th
d500: 65 20 6e 61 6d 65 20 41 41 41 41 2e 20 20 4e 61  e name AAAA.  Na
d510: 6d 65 64 20 70 61 72 61 6d 65 74 65 72 73 20 61  med parameters a
d520: 72 65 20 61 6c 73 6f 20 6e 75 6d 62 65 72 65 64  re also numbered
d530: 2e 0a 54 68 65 20 6e 75 6d 62 65 72 20 61 73 73  ..The number ass
d540: 69 67 6e 65 64 20 69 73 20 74 68 65 20 6e 65 78  igned is the nex
d550: 74 20 75 6e 75 73 65 64 20 6e 75 6d 62 65 72 2e  t unused number.
d560: 20 20 54 6f 20 61 76 6f 69 64 20 63 6f 6e 66 75    To avoid confu
d570: 73 69 6f 6e 2c 0a 69 74 20 69 73 20 62 65 73 74  sion,.it is best
d580: 20 74 6f 20 61 76 6f 69 64 20 6d 69 78 69 6e 67   to avoid mixing
d590: 20 6e 61 6d 65 64 20 61 6e 64 20 6e 75 6d 62 65   named and numbe
d5a0: 72 65 64 20 70 61 72 61 6d 65 74 65 72 73 2e 3c  red parameters.<
d5b0: 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 74 72 3e 0a  /td>.</tr>.<tr>.
d5c0: 3c 74 64 20 61 6c 69 67 6e 3d 22 72 69 67 68 74  <td align="right
d5d0: 22 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 3c  " valign="top"><
d5e0: 62 3e 40 3c 2f 62 3e 3c 69 3e 41 41 41 41 3c 2f  b>@</b><i>AAAA</
d5f0: 69 3e 3c 2f 74 64 3e 3c 74 64 20 77 69 64 74 68  i></td><td width
d600: 3d 22 32 30 22 3e 3c 2f 74 64 3e 0a 3c 74 64 3e  ="20"></td>.<td>
d610: 41 6e 20 22 61 74 22 20 73 69 67 6e 20 77 6f 72  An "at" sign wor
d620: 6b 73 20 65 78 61 63 74 6c 79 20 6c 69 6b 65 20  ks exactly like 
d630: 61 20 63 6f 6c 6f 6e 2e 3c 2f 74 64 3e 0a 3c 2f  a colon.</td>.</
d640: 74 72 3e 0a 3c 74 72 3e 0a 3c 74 64 20 61 6c 69  tr>.<tr>.<td ali
d650: 67 6e 3d 22 72 69 67 68 74 22 20 76 61 6c 69 67  gn="right" valig
d660: 6e 3d 22 74 6f 70 22 3e 3c 62 3e 24 3c 2f 62 3e  n="top"><b>$</b>
d670: 3c 69 3e 41 41 41 41 3c 2f 69 3e 3c 2f 74 64 3e  <i>AAAA</i></td>
d680: 3c 74 64 20 77 69 64 74 68 3d 22 32 30 22 3e 3c  <td width="20"><
d690: 2f 74 64 3e 0a 3c 74 64 3e 41 20 64 6f 6c 6c 61  /td>.<td>A dolla
d6a0: 72 2d 73 69 67 6e 20 66 6f 6c 6c 6f 77 65 64 20  r-sign followed 
d6b0: 62 79 20 61 6e 20 69 64 65 6e 74 69 66 69 65 72  by an identifier
d6c0: 20 6e 61 6d 65 20 61 6c 73 6f 20 68 6f 6c 64 73   name also holds
d6d0: 20 61 20 73 70 6f 74 20 66 6f 72 20 61 20 6e 61   a spot for a na
d6e0: 6d 65 64 0a 70 61 72 61 6d 65 74 65 72 20 77 69  med.parameter wi
d6f0: 74 68 20 74 68 65 20 6e 61 6d 65 20 41 41 41 41  th the name AAAA
d700: 2e 20 20 54 68 65 20 69 64 65 6e 74 69 66 69 65  .  The identifie
d710: 72 20 6e 61 6d 65 20 69 6e 20 74 68 69 73 20 63  r name in this c
d720: 61 73 65 20 63 61 6e 20 69 6e 63 6c 75 64 65 0a  ase can include.
d730: 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 6f 63 63 75  one or more occu
d740: 72 61 6e 63 65 73 20 6f 66 20 22 3a 3a 22 20 61  rances of "::" a
d750: 6e 64 20 61 20 73 75 66 66 69 78 20 65 6e 63 6c  nd a suffix encl
d760: 6f 73 65 64 20 69 6e 20 22 28 2e 2e 2e 29 22 20  osed in "(...)" 
d770: 63 6f 6e 74 61 69 6e 69 6e 67 0a 61 6e 79 20 74  containing.any t
d780: 65 78 74 20 61 74 20 61 6c 6c 2e 20 20 54 68 69  ext at all.  Thi
d790: 73 20 73 79 6e 74 61 78 20 69 73 20 74 68 65 20  s syntax is the 
d7a0: 66 6f 72 6d 20 6f 66 20 61 20 76 61 72 69 61 62  form of a variab
d7b0: 6c 65 20 6e 61 6d 65 20 69 6e 20 74 68 65 0a 3c  le name in the.<
d7c0: 61 20 68 72 65 66 3d 22 68 74 74 70 3a 2f 2f 77  a href="http://w
d7d0: 77 77 2e 74 63 6c 2e 74 6b 2f 22 3e 54 63 6c 20  ww.tcl.tk/">Tcl 
d7e0: 70 72 6f 67 72 61 6d 6d 69 6e 67 20 6c 61 6e 67  programming lang
d7f0: 75 61 67 65 3c 2f 61 3e 2e 20 20 54 68 65 20 70  uage</a>.  The p
d800: 72 65 73 65 6e 63 65 0a 6f 66 20 74 68 69 73 20  resence.of this 
d810: 73 79 6e 74 61 78 20 72 65 73 75 6c 74 73 20 66  syntax results f
d820: 72 6f 6d 20 74 68 65 20 66 61 63 74 20 74 68 61  rom the fact tha
d830: 74 20 53 51 4c 69 74 65 20 69 73 20 72 65 61 6c  t SQLite is real
d840: 6c 79 20 61 20 0a 5b 54 63 6c 20 65 78 74 65 6e  ly a .[Tcl exten
d850: 73 69 6f 6e 5d 20 74 68 61 74 20 68 61 73 20 65  sion] that has e
d860: 73 63 61 70 65 64 20 69 6e 74 6f 20 74 68 65 20  scaped into the 
d870: 77 69 6c 64 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e  wild.</td>.</tr>
d880: 0a 3c 2f 74 61 62 6c 65 3e 0a 3c 2f 62 6c 6f 63  .</table>.</bloc
d890: 6b 71 75 6f 74 65 3e 0a 0a 3c 70 3e 50 61 72 61  kquote>..<p>Para
d8a0: 6d 65 74 65 72 73 20 74 68 61 74 20 61 72 65 20  meters that are 
d8b0: 6e 6f 74 20 61 73 73 69 67 6e 65 64 20 76 61 6c  not assigned val
d8c0: 75 65 73 20 75 73 69 6e 67 0a 5b 73 71 6c 69 74  ues using.[sqlit
d8d0: 65 33 5f 62 69 6e 64 5f 62 6c 6f 62 28 29 20 7c  e3_bind_blob() |
d8e0: 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 28 29 5d   sqlite3_bind()]
d8f0: 20 61 72 65 20 74 72 65 61 74 65 64 0a 61 73 20   are treated.as 
d900: 4e 55 4c 4c 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e  NULL.</p>..<tcl>
d910: 68 64 5f 66 72 61 67 6d 65 6e 74 20 6c 69 6b 65  hd_fragment like
d920: 20 4c 49 4b 45 20 45 53 43 41 50 45 3c 2f 74 63   LIKE ESCAPE</tc
d930: 6c 3e 0a 3c 68 33 3e 54 68 65 20 4c 49 4b 45 20  l>.<h3>The LIKE 
d940: 61 6e 64 20 47 4c 4f 42 20 6f 70 65 72 61 74 6f  and GLOB operato
d950: 72 73 3c 2f 68 33 3e 0a 3c 70 3e 54 68 65 20 4c  rs</h3>.<p>The L
d960: 49 4b 45 20 6f 70 65 72 61 74 6f 72 20 64 6f 65  IKE operator doe
d970: 73 20 61 20 70 61 74 74 65 72 6e 20 6d 61 74 63  s a pattern matc
d980: 68 69 6e 67 20 63 6f 6d 70 61 72 69 73 6f 6e 2e  hing comparison.
d990: 20 54 68 65 20 6f 70 65 72 61 6e 64 0a 74 6f 20   The operand.to 
d9a0: 74 68 65 20 72 69 67 68 74 20 63 6f 6e 74 61 69  the right contai
d9b0: 6e 73 20 74 68 65 20 70 61 74 74 65 72 6e 2c 20  ns the pattern, 
d9c0: 74 68 65 20 6c 65 66 74 20 68 61 6e 64 20 6f 70  the left hand op
d9d0: 65 72 61 6e 64 20 63 6f 6e 74 61 69 6e 73 20 74  erand contains t
d9e0: 68 65 0a 73 74 72 69 6e 67 20 74 6f 20 6d 61 74  he.string to mat
d9f0: 63 68 20 61 67 61 69 6e 73 74 20 74 68 65 20 70  ch against the p
da00: 61 74 74 65 72 6e 2e 0a 0a 3c 74 63 6c 3e 68 64  attern...<tcl>hd
da10: 5f 70 75 74 73 20 22 41 20 70 65 72 63 65 6e 74  _puts "A percent
da20: 20 73 79 6d 62 6f 6c 20 28 5c 22 25 5c 22 29 20   symbol (\"%\") 
da30: 69 6e 20 74 68 65 20 70 61 74 74 65 72 6e 20 6d  in the pattern m
da40: 61 74 63 68 65 73 20 61 6e 79 0a 73 65 71 75 65  atches any.seque
da50: 6e 63 65 20 6f 66 20 7a 65 72 6f 20 6f 72 20 6d  nce of zero or m
da60: 6f 72 65 20 63 68 61 72 61 63 74 65 72 73 20 69  ore characters i
da70: 6e 20 74 68 65 20 73 74 72 69 6e 67 2e 20 20 41  n the string.  A
da80: 6e 20 75 6e 64 65 72 73 63 6f 72 65 0a 28 5c 22  n underscore.(\"
da90: 5f 5c 22 29 20 69 6e 20 74 68 65 20 70 61 74 74  _\") in the patt
daa0: 65 72 6e 20 6d 61 74 63 68 65 73 20 61 6e 79 20  ern matches any 
dab0: 73 69 6e 67 6c 65 20 63 68 61 72 61 63 74 65 72  single character
dac0: 20 69 6e 20 74 68 65 0a 73 74 72 69 6e 67 2e 20   in the.string. 
dad0: 20 41 6e 79 20 6f 74 68 65 72 20 63 68 61 72 61   Any other chara
dae0: 63 74 65 72 20 6d 61 74 63 68 65 73 20 69 74 73  cter matches its
daf0: 65 6c 66 20 6f 72 20 69 74 27 73 20 6c 6f 77 65  elf or it's lowe
db00: 72 2f 75 70 70 65 72 20 63 61 73 65 0a 65 71 75  r/upper case.equ
db10: 69 76 61 6c 65 6e 74 20 28 69 2e 65 2e 20 63 61  ivalent (i.e. ca
db20: 73 65 2d 69 6e 73 65 6e 73 69 74 69 76 65 20 6d  se-insensitive m
db30: 61 74 63 68 69 6e 67 29 2e 20 20 28 41 20 62 75  atching).  (A bu
db40: 67 3a 20 53 51 4c 69 74 65 20 6f 6e 6c 79 0a 75  g: SQLite only.u
db50: 6e 64 65 72 73 74 61 6e 64 73 20 75 70 70 65 72  nderstands upper
db60: 2f 6c 6f 77 65 72 20 63 61 73 65 20 66 6f 72 20  /lower case for 
db70: 41 53 43 49 49 20 63 68 61 72 61 63 74 65 72 73  ASCII characters
db80: 2e 20 20 54 68 65 0a 4c 49 4b 45 20 6f 70 65 72  .  The.LIKE oper
db90: 61 74 6f 72 20 69 73 20 63 61 73 65 20 73 65 6e  ator is case sen
dba0: 73 69 74 69 76 65 20 66 6f 72 20 75 6e 69 63 6f  sitive for unico
dbb0: 64 65 20 63 68 61 72 61 63 74 65 72 73 20 74 68  de characters th
dbc0: 61 74 20 61 72 65 20 62 65 79 6f 6e 64 0a 74 68  at are beyond.th
dbd0: 65 20 41 53 43 49 49 20 72 61 6e 67 65 2e 20 20  e ASCII range.  
dbe0: 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 74 68 65  For example, the
dbf0: 20 65 78 70 72 65 73 73 69 6f 6e 20 3c 62 3e 27   expression <b>'
dc00: 61 27 26 6e 62 73 70 3b 4c 49 4b 45 26 6e 62 73  a'&nbsp;LIKE&nbs
dc10: 70 3b 27 41 27 3c 2f 62 3e 0a 69 73 20 54 52 55  p;'A'</b>.is TRU
dc20: 45 20 62 75 74 20 3c 62 3e 27 26 61 65 6c 69 67  E but <b>'&aelig
dc30: 3b 27 26 6e 62 73 70 3b 4c 49 4b 45 26 6e 62 73  ;'&nbsp;LIKE&nbs
dc40: 70 3b 27 26 41 45 6c 69 67 3b 27 3c 2f 62 3e 20  p;'&AElig;'</b> 
dc50: 69 73 20 46 41 4c 53 45 2e 29 2e 3c 2f 70 3e 22  is FALSE.).</p>"
dc60: 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 49 66 20 74 68  </tcl>..<p>If th
dc70: 65 20 6f 70 74 69 6f 6e 61 6c 20 45 53 43 41 50  e optional ESCAP
dc80: 45 20 63 6c 61 75 73 65 20 69 73 20 70 72 65 73  E clause is pres
dc90: 65 6e 74 2c 20 74 68 65 6e 20 74 68 65 20 65 78  ent, then the ex
dca0: 70 72 65 73 73 69 6f 6e 0a 66 6f 6c 6c 6f 77 69  pression.followi
dcb0: 6e 67 20 74 68 65 20 45 53 43 41 50 45 20 6b 65  ng the ESCAPE ke
dcc0: 79 77 6f 72 64 20 6d 75 73 74 20 65 76 61 6c 75  yword must evalu
dcd0: 61 74 65 20 74 6f 20 61 20 73 74 72 69 6e 67 20  ate to a string 
dce0: 63 6f 6e 73 69 73 74 69 6e 67 20 6f 66 0a 61 20  consisting of.a 
dcf0: 73 69 6e 67 6c 65 20 63 68 61 72 61 63 74 65 72  single character
dd00: 2e 20 54 68 69 73 20 63 68 61 72 61 63 74 65 72  . This character
dd10: 20 6d 61 79 20 62 65 20 75 73 65 64 20 69 6e 20   may be used in 
dd20: 74 68 65 20 4c 49 4b 45 20 70 61 74 74 65 72 6e  the LIKE pattern
dd30: 0a 74 6f 20 69 6e 63 6c 75 64 65 20 6c 69 74 65  .to include lite
dd40: 72 61 6c 20 70 65 72 63 65 6e 74 20 6f 72 20 75  ral percent or u
dd50: 6e 64 65 72 73 63 6f 72 65 20 63 68 61 72 61 63  nderscore charac
dd60: 74 65 72 73 2e 20 54 68 65 20 65 73 63 61 70 65  ters. The escape
dd70: 0a 63 68 61 72 61 63 74 65 72 20 66 6f 6c 6c 6f  .character follo
dd80: 77 65 64 20 62 79 20 61 20 70 65 72 63 65 6e 74  wed by a percent
dd90: 20 73 79 6d 62 6f 6c 2c 20 75 6e 64 65 72 73 63   symbol, undersc
dda0: 6f 72 65 20 6f 72 20 69 74 73 65 6c 66 20 6d 61  ore or itself ma
ddb0: 74 63 68 65 73 20 61 0a 6c 69 74 65 72 61 6c 20  tches a.literal 
ddc0: 70 65 72 63 65 6e 74 20 73 79 6d 62 6f 6c 2c 20  percent symbol, 
ddd0: 75 6e 64 65 72 73 63 6f 72 65 20 6f 72 20 65 73  underscore or es
dde0: 63 61 70 65 20 63 68 61 72 61 63 74 65 72 20 69  cape character i
ddf0: 6e 20 74 68 65 20 73 74 72 69 6e 67 2c 0a 72 65  n the string,.re
de00: 73 70 65 63 74 69 76 65 6c 79 2e 0a 0a 3c 70 3e  spectively...<p>
de10: 54 68 65 20 69 6e 66 69 78 20 4c 49 4b 45 20 6f  The infix LIKE o
de20: 70 65 72 61 74 6f 72 20 69 73 20 69 6d 70 6c 65  perator is imple
de30: 6d 65 6e 74 65 64 20 62 79 20 63 61 6c 6c 69 6e  mented by callin
de40: 67 20 74 68 65 0a 61 70 70 6c 69 63 61 74 69 6f  g the.applicatio
de50: 6e 2d 64 65 66 69 6e 65 64 20 53 51 4c 20 66 75  n-defined SQL fu
de60: 6e 63 74 69 6f 6e 73 20 5b 6c 69 6b 65 28 3c 69  nctions [like(<i
de70: 3e 59 3c 2f 69 3e 2c 3c 69 3e 58 3c 2f 69 3e 29  >Y</i>,<i>X</i>)
de80: 5d 20 6f 72 0a 5b 6c 69 6b 65 28 3c 69 3e 59 3c  ] or.[like(<i>Y<
de90: 2f 69 3e 2c 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e  /i>,<i>X</i>,<i>
dea0: 5a 3c 2f 69 3e 29 5d 3c 2f 61 3e 2e 3c 2f 70 3e  Z</i>)]</a>.</p>
deb0: 0a 0a 3c 70 3e 54 68 65 20 4c 49 4b 45 20 6f 70  ..<p>The LIKE op
dec0: 65 72 61 74 6f 72 20 63 61 6e 20 62 65 20 6d 61  erator can be ma
ded0: 64 65 20 63 61 73 65 20 73 65 6e 73 69 74 69 76  de case sensitiv
dee0: 65 20 75 73 69 6e 67 20 74 68 65 0a 5b 63 61 73  e using the.[cas
def0: 65 5f 73 65 6e 73 69 74 69 76 65 5f 6c 69 6b 65  e_sensitive_like
df00: 20 70 72 61 67 6d 61 5d 2e 3c 2f 70 3e 0a 0a 3c   pragma].</p>..<
df10: 74 63 6c 3e 68 64 5f 66 72 61 67 6d 65 6e 74 20  tcl>hd_fragment 
df20: 67 6c 6f 62 20 47 4c 4f 42 3c 2f 74 63 6c 3e 0a  glob GLOB</tcl>.
df30: 3c 70 3e 54 68 65 20 47 4c 4f 42 20 6f 70 65 72  <p>The GLOB oper
df40: 61 74 6f 72 20 69 73 20 73 69 6d 69 6c 61 72 20  ator is similar 
df50: 74 6f 20 4c 49 4b 45 20 62 75 74 20 75 73 65 73  to LIKE but uses
df60: 20 74 68 65 20 55 6e 69 78 0a 66 69 6c 65 20 67   the Unix.file g
df70: 6c 6f 62 62 69 6e 67 20 73 79 6e 74 61 78 20 66  lobbing syntax f
df80: 6f 72 20 69 74 73 20 77 69 6c 64 63 61 72 64 73  or its wildcards
df90: 2e 20 20 41 6c 73 6f 2c 20 47 4c 4f 42 20 69 73  .  Also, GLOB is
dfa0: 20 63 61 73 65 0a 73 65 6e 73 69 74 69 76 65 2c   case.sensitive,
dfb0: 20 75 6e 6c 69 6b 65 20 4c 49 4b 45 2e 20 20 42   unlike LIKE.  B
dfc0: 6f 74 68 20 47 4c 4f 42 20 61 6e 64 20 4c 49 4b  oth GLOB and LIK
dfd0: 45 20 6d 61 79 20 62 65 20 70 72 65 63 65 64 65  E may be precede
dfe0: 64 20 62 79 0a 74 68 65 20 4e 4f 54 20 6b 65 79  d by.the NOT key
dff0: 77 6f 72 64 20 74 6f 20 69 6e 76 65 72 74 20 74  word to invert t
e000: 68 65 20 73 65 6e 73 65 20 6f 66 20 74 68 65 20  he sense of the 
e010: 74 65 73 74 2e 20 20 54 68 65 20 69 6e 66 69 78  test.  The infix
e020: 20 47 4c 4f 42 20 0a 6f 70 65 72 61 74 6f 72 20   GLOB .operator 
e030: 69 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 62  is implemented b
e040: 79 20 63 61 6c 6c 69 6e 67 20 74 68 65 20 66 75  y calling the fu
e050: 6e 63 74 69 6f 6e 0a 5b 67 6c 6f 62 28 3c 69 3e  nction.[glob(<i>
e060: 59 3c 2f 69 3e 2c 3c 69 3e 58 3c 2f 69 3e 29 5d  Y</i>,<i>X</i>)]
e070: 20 61 6e 64 20 63 61 6e 20 62 65 20 6d 6f 64 69   and can be modi
e080: 66 69 65 64 20 62 79 20 6f 76 65 72 72 69 64 69  fied by overridi
e090: 6e 67 0a 74 68 61 74 20 66 75 6e 63 74 69 6f 6e  ng.that function
e0a0: 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 68 64 5f 66  .</p>..<tcl>hd_f
e0b0: 72 61 67 6d 65 6e 74 20 72 65 67 65 78 70 20 52  ragment regexp R
e0c0: 45 47 45 58 50 3c 2f 74 63 6c 3e 0a 3c 70 3e 54  EGEXP</tcl>.<p>T
e0d0: 68 65 20 52 45 47 45 58 50 20 6f 70 65 72 61 74  he REGEXP operat
e0e0: 6f 72 20 69 73 20 61 20 73 70 65 63 69 61 6c 20  or is a special 
e0f0: 73 79 6e 74 61 78 20 66 6f 72 20 74 68 65 20 72  syntax for the r
e100: 65 67 65 78 70 28 29 0a 75 73 65 72 20 66 75 6e  egexp().user fun
e110: 63 74 69 6f 6e 2e 20 20 4e 6f 20 72 65 67 65 78  ction.  No regex
e120: 70 28 29 20 75 73 65 72 20 66 75 6e 63 74 69 6f  p() user functio
e130: 6e 20 69 73 20 64 65 66 69 6e 65 64 20 62 79 20  n is defined by 
e140: 64 65 66 61 75 6c 74 0a 61 6e 64 20 73 6f 20 75  default.and so u
e150: 73 65 20 6f 66 20 74 68 65 20 52 45 47 45 58 50  se of the REGEXP
e160: 20 6f 70 65 72 61 74 6f 72 20 77 69 6c 6c 20 6e   operator will n
e170: 6f 72 6d 61 6c 6c 79 20 72 65 73 75 6c 74 20 69  ormally result i
e180: 6e 20 61 6e 0a 65 72 72 6f 72 20 6d 65 73 73 61  n an.error messa
e190: 67 65 2e 20 20 49 66 20 61 20 75 73 65 72 2d 64  ge.  If a user-d
e1a0: 65 66 69 6e 65 64 20 66 75 6e 63 74 69 6f 6e 20  efined function 
e1b0: 6e 61 6d 65 64 20 22 72 65 67 65 78 70 22 0a 69  named "regexp".i
e1c0: 73 20 61 64 64 65 64 20 61 74 20 72 75 6e 2d 74  s added at run-t
e1d0: 69 6d 65 2c 20 74 68 61 74 20 66 75 6e 63 74 69  ime, that functi
e1e0: 6f 6e 20 77 69 6c 6c 20 62 65 20 63 61 6c 6c 65  on will be calle
e1f0: 64 20 69 6e 20 6f 72 64 65 72 0a 74 6f 20 69 6d  d in order.to im
e200: 70 6c 65 6d 65 6e 74 20 74 68 65 20 52 45 47 45  plement the REGE
e210: 58 50 20 6f 70 65 72 61 74 6f 72 2e 3c 2f 70 3e  XP operator.</p>
e220: 0a 0a 3c 74 63 6c 3e 68 64 5f 66 72 61 67 6d 65  ..<tcl>hd_fragme
e230: 6e 74 20 6d 61 74 63 68 20 4d 41 54 43 48 3c 2f  nt match MATCH</
e240: 74 63 6c 3e 0a 3c 70 3e 54 68 65 20 4d 41 54 43  tcl>.<p>The MATC
e250: 48 20 6f 70 65 72 61 74 6f 72 20 69 73 20 61 20  H operator is a 
e260: 73 70 65 63 69 61 6c 20 73 79 6e 74 61 78 20 66  special syntax f
e270: 6f 72 20 74 68 65 20 6d 61 74 63 68 28 29 0a 75  or the match().u
e280: 73 65 72 20 66 75 6e 63 74 69 6f 6e 2e 20 20 54  ser function.  T
e290: 68 65 20 64 65 66 61 75 6c 74 20 6d 61 74 63 68  he default match
e2a0: 28 29 20 66 75 6e 63 74 69 6f 6e 20 69 6d 70 6c  () function impl
e2b0: 65 6d 65 6e 74 61 74 69 6f 6e 0a 72 61 69 73 65  ementation.raise
e2c0: 73 20 61 6e 64 20 65 78 63 65 70 74 69 6f 6e 20  s and exception 
e2d0: 61 6e 64 20 69 73 20 6e 6f 74 20 72 65 61 6c 6c  and is not reall
e2e0: 79 20 75 73 65 66 75 6c 20 66 6f 72 20 61 6e 79  y useful for any
e2f0: 74 68 69 6e 67 2e 0a 42 75 74 20 65 78 74 65 6e  thing..But exten
e300: 73 69 6f 6e 73 20 63 61 6e 20 6f 76 65 72 72 69  sions can overri
e310: 64 65 20 74 68 65 20 6d 61 74 63 68 28 29 20 66  de the match() f
e320: 75 6e 63 74 69 6f 6e 20 77 69 74 68 20 6d 6f 72  unction with mor
e330: 65 0a 68 65 6c 70 66 75 6c 20 6c 6f 67 69 63 2e  e.helpful logic.
e340: 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 68 64 5f 66 72  </p>..<tcl>hd_fr
e350: 61 67 6d 65 6e 74 20 62 65 74 77 65 65 6e 20 42  agment between B
e360: 45 54 57 45 45 4e 3c 2f 74 63 6c 3e 0a 3c 68 33  ETWEEN</tcl>.<h3
e370: 3e 54 68 65 20 42 45 54 57 45 45 4e 20 6f 70 65  >The BETWEEN ope
e380: 72 61 74 6f 72 3c 2f 68 33 3e 0a 3c 70 3e 54 68  rator</h3>.<p>Th
e390: 65 20 42 45 54 57 45 45 4e 20 6f 70 65 72 61 74  e BETWEEN operat
e3a0: 6f 72 20 69 73 20 65 71 75 69 76 61 6c 65 6e 74  or is equivalent
e3b0: 20 74 6f 20 61 20 70 61 69 72 20 6f 66 20 63 6f   to a pair of co
e3c0: 6d 70 61 72 69 73 6f 6e 73 2e 0a 22 3c 69 3e 61  mparisons.."<i>a
e3d0: 3c 2f 69 3e 20 3c 62 3e 42 45 54 57 45 45 4e 3c  </i> <b>BETWEEN<
e3e0: 2f 62 3e 20 3c 69 3e 62 3c 2f 69 3e 20 3c 62 3e  /b> <i>b</i> <b>
e3f0: 41 4e 44 3c 2f 62 3e 20 3c 69 3e 63 3c 2f 69 3e  AND</b> <i>c</i>
e400: 22 20 69 73 20 0a 65 71 75 69 76 61 6c 65 6e 74  " is .equivalent
e410: 20 74 6f 20 0a 22 3c 69 3e 61 3c 2f 69 3e 3c 62   to ."<i>a</i><b
e420: 3e 26 67 74 3b 3d 3c 2f 62 3e 3c 69 3e 62 3c 2f  >&gt;=</b><i>b</
e430: 69 3e 20 3c 62 3e 41 4e 44 3c 2f 62 3e 20 3c 69  i> <b>AND</b> <i
e440: 3e 61 3c 2f 69 3e 3c 62 3e 26 6c 74 3b 3d 3c 2f  >a</i><b>&lt;=</
e450: 62 3e 3c 69 3e 63 3c 2f 69 3e 22 2e 0a 54 68 65  b><i>c</i>"..The
e460: 20 70 72 65 63 65 64 65 6e 63 65 20 6f 66 20 74   precedence of t
e470: 68 65 20 42 45 54 57 45 45 4e 20 6f 70 65 72 61  he BETWEEN opera
e480: 74 6f 72 20 69 73 20 74 68 65 20 73 61 6d 65 20  tor is the same 
e490: 61 73 20 74 68 65 20 70 72 65 63 65 64 65 6e 63  as the precedenc
e4a0: 65 0a 61 73 20 6f 70 65 72 61 74 6f 72 73 20 3c  e.as operators <
e4b0: 62 3e 3d 3d 3c 2f 62 3e 20 61 6e 64 20 3c 62 3e  b>==</b> and <b>
e4c0: 21 3d 3c 2f 62 3e 20 61 6e 64 20 3c 62 3e 4c 49  !=</b> and <b>LI
e4d0: 4b 45 3c 2f 62 3e 20 61 6e 64 20 67 72 6f 75 70  KE</b> and group
e4e0: 73 20 6c 65 66 74 20 74 6f 20 72 69 67 68 74 2e  s left to right.
e4f0: 0a 0a 3c 68 33 3e 54 61 62 6c 65 20 43 6f 6c 75  ..<h3>Table Colu
e500: 6d 6e 20 4e 61 6d 65 73 3c 2f 68 33 3e 0a 3c 70  mn Names</h3>.<p
e510: 3e 41 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 20 63  >A column name c
e520: 61 6e 20 62 65 20 61 6e 79 20 6f 66 20 74 68 65  an be any of the
e530: 20 6e 61 6d 65 73 20 64 65 66 69 6e 65 64 20 69   names defined i
e540: 6e 20 74 68 65 20 5b 43 52 45 41 54 45 20 54 41  n the [CREATE TA
e550: 42 4c 45 5d 0a 73 74 61 74 65 6d 65 6e 74 20 6f  BLE].statement o
e560: 72 20 6f 6e 65 20 6f 66 20 74 68 65 20 66 6f 6c  r one of the fol
e570: 6c 6f 77 69 6e 67 20 73 70 65 63 69 61 6c 20 69  lowing special i
e580: 64 65 6e 74 69 66 69 65 72 73 3a 20 22 3c 62 3e  dentifiers: "<b>
e590: 52 4f 57 49 44 3c 2f 62 3e 22 2c 0a 22 3c 62 3e  ROWID</b>",."<b>
e5a0: 4f 49 44 3c 2f 62 3e 22 2c 20 6f 72 20 22 3c 62  OID</b>", or "<b
e5b0: 3e 5f 52 4f 57 49 44 5f 3c 2f 62 3e 22 2e 0a 54  >_ROWID_</b>"..T
e5c0: 68 65 73 65 20 73 70 65 63 69 61 6c 20 69 64 65  hese special ide
e5d0: 6e 74 69 66 69 65 72 73 20 61 6c 6c 20 64 65 73  ntifiers all des
e5e0: 63 72 69 62 65 20 74 68 65 0a 75 6e 69 71 75 65  cribe the.unique
e5f0: 20 69 6e 74 65 67 65 72 20 6b 65 79 20 28 74 68   integer key (th
e600: 65 20 5b 72 6f 77 69 64 5d 29 20 61 73 73 6f 63  e [rowid]) assoc
e610: 69 61 74 65 64 20 77 69 74 68 20 65 76 65 72 79  iated with every
e620: 20 0a 72 6f 77 20 6f 66 20 65 76 65 72 79 20 74   .row of every t
e630: 61 62 6c 65 2e 0a 54 68 65 20 73 70 65 63 69 61  able..The specia
e640: 6c 20 69 64 65 6e 74 69 66 69 65 72 73 20 6f 6e  l identifiers on
e650: 6c 79 20 72 65 66 65 72 20 74 6f 20 74 68 65 20  ly refer to the 
e660: 72 6f 77 20 6b 65 79 20 69 66 20 74 68 65 20 5b  row key if the [
e670: 43 52 45 41 54 45 20 54 41 42 4c 45 5d 0a 73 74  CREATE TABLE].st
e680: 61 74 65 6d 65 6e 74 20 64 6f 65 73 20 6e 6f 74  atement does not
e690: 20 64 65 66 69 6e 65 20 61 20 72 65 61 6c 20 63   define a real c
e6a0: 6f 6c 75 6d 6e 20 77 69 74 68 20 74 68 65 20 73  olumn with the s
e6b0: 61 6d 65 20 6e 61 6d 65 2e 20 20 52 6f 77 20 6b  ame name.  Row k
e6c0: 65 79 73 0a 61 63 74 20 6c 69 6b 65 20 72 65 61  eys.act like rea
e6d0: 64 2d 6f 6e 6c 79 20 63 6f 6c 75 6d 6e 73 2e 20  d-only columns. 
e6e0: 20 41 20 72 6f 77 20 6b 65 79 20 63 61 6e 20 62   A row key can b
e6f0: 65 20 75 73 65 64 20 61 6e 79 77 68 65 72 65 20  e used anywhere 
e700: 61 20 72 65 67 75 6c 61 72 0a 63 6f 6c 75 6d 6e  a regular.column
e710: 20 63 61 6e 20 62 65 20 75 73 65 64 2c 20 65 78   can be used, ex
e720: 63 65 70 74 20 74 68 61 74 20 79 6f 75 20 63 61  cept that you ca
e730: 6e 6e 6f 74 20 63 68 61 6e 67 65 20 74 68 65 20  nnot change the 
e740: 76 61 6c 75 65 0a 6f 66 20 61 20 72 6f 77 20 6b  value.of a row k
e750: 65 79 20 69 6e 20 61 6e 20 5b 55 50 44 41 54 45  ey in an [UPDATE
e760: 5d 20 6f 72 20 5b 49 4e 53 45 52 54 5d 20 73 74  ] or [INSERT] st
e770: 61 74 65 6d 65 6e 74 2e 0a 22 53 45 4c 45 43 54  atement.."SELECT
e780: 20 2a 20 2e 2e 2e 22 20 64 6f 65 73 20 6e 6f 74   * ..." does not
e790: 20 72 65 74 75 72 6e 20 74 68 65 20 72 6f 77 20   return the row 
e7a0: 6b 65 79 2e 3c 2f 70 3e 0a 0a 3c 68 33 3e 53 75  key.</p>..<h3>Su
e7b0: 62 71 75 65 72 69 65 73 3c 2f 68 33 3e 0a 3c 70  bqueries</h3>.<p
e7c0: 3e 5b 53 45 4c 45 43 54 5d 20 73 74 61 74 65 6d  >[SELECT] statem
e7d0: 65 6e 74 73 20 63 61 6e 20 61 70 70 65 61 72 20  ents can appear 
e7e0: 69 6e 20 65 78 70 72 65 73 73 69 6f 6e 73 20 61  in expressions a
e7f0: 73 20 65 69 74 68 65 72 20 74 68 65 0a 72 69 67  s either the.rig
e800: 68 74 2d 68 61 6e 64 20 6f 70 65 72 61 6e 64 20  ht-hand operand 
e810: 6f 66 20 74 68 65 20 49 4e 20 6f 70 65 72 61 74  of the IN operat
e820: 6f 72 2c 20 61 73 20 61 20 73 63 61 6c 61 72 20  or, as a scalar 
e830: 71 75 61 6e 74 69 74 79 2c 20 6f 72 0a 61 73 20  quantity, or.as 
e840: 74 68 65 20 6f 70 65 72 61 6e 64 20 6f 66 20 61  the operand of a
e850: 6e 20 45 58 49 53 54 53 20 6f 70 65 72 61 74 6f  n EXISTS operato
e860: 72 2e 0a 41 73 20 61 20 73 63 61 6c 61 72 20 71  r..As a scalar q
e870: 75 61 6e 74 69 74 79 20 6f 72 20 74 68 65 20 6f  uantity or the o
e880: 70 65 72 61 6e 64 20 6f 66 20 61 6e 20 49 4e 20  perand of an IN 
e890: 6f 70 65 72 61 74 6f 72 2c 0a 74 68 65 20 53 45  operator,.the SE
e8a0: 4c 45 43 54 20 73 68 6f 75 6c 64 20 68 61 76 65  LECT should have
e8b0: 20 6f 6e 6c 79 20 61 20 73 69 6e 67 6c 65 20 63   only a single c
e8c0: 6f 6c 75 6d 6e 20 69 6e 20 69 74 73 0a 72 65 73  olumn in its.res
e8d0: 75 6c 74 2e 20 20 43 6f 6d 70 6f 75 6e 64 20 53  ult.  Compound S
e8e0: 45 4c 45 43 54 73 20 28 63 6f 6e 6e 65 63 74 65  ELECTs (connecte
e8f0: 64 20 77 69 74 68 20 6b 65 79 77 6f 72 64 73 20  d with keywords 
e900: 6c 69 6b 65 20 55 4e 49 4f 4e 20 6f 72 0a 45 58  like UNION or.EX
e910: 43 45 50 54 29 20 61 72 65 20 61 6c 6c 6f 77 65  CEPT) are allowe
e920: 64 2e 0a 57 69 74 68 20 74 68 65 20 45 58 49 53  d..With the EXIS
e930: 54 53 20 6f 70 65 72 61 74 6f 72 2c 20 74 68 65  TS operator, the
e940: 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65 20   columns in the 
e950: 72 65 73 75 6c 74 20 73 65 74 20 6f 66 20 74 68  result set of th
e960: 65 20 5b 53 45 4c 45 43 54 5d 20 61 72 65 0a 69  e [SELECT] are.i
e970: 67 6e 6f 72 65 64 20 61 6e 64 20 74 68 65 20 65  gnored and the e
e980: 78 70 72 65 73 73 69 6f 6e 20 72 65 74 75 72 6e  xpression return
e990: 73 20 54 52 55 45 20 69 66 20 6f 6e 65 20 6f 72  s TRUE if one or
e9a0: 20 6d 6f 72 65 20 72 6f 77 73 20 65 78 69 73 74   more rows exist
e9b0: 0a 61 6e 64 20 46 41 4c 53 45 20 69 66 20 74 68  .and FALSE if th
e9c0: 65 20 72 65 73 75 6c 74 20 73 65 74 20 69 73 20  e result set is 
e9d0: 65 6d 70 74 79 2e 0a 49 66 20 6e 6f 20 74 65 72  empty..If no ter
e9e0: 6d 73 20 69 6e 20 74 68 65 20 5b 53 45 4c 45 43  ms in the [SELEC
e9f0: 54 5d 20 65 78 70 72 65 73 73 69 6f 6e 20 72 65  T] expression re
ea00: 66 65 72 20 74 6f 20 76 61 6c 75 65 20 69 6e 20  fer to value in 
ea10: 74 68 65 20 63 6f 6e 74 61 69 6e 69 6e 67 0a 71  the containing.q
ea20: 75 65 72 79 2c 20 74 68 65 6e 20 74 68 65 20 65  uery, then the e
ea30: 78 70 72 65 73 73 69 6f 6e 20 69 73 20 65 76 61  xpression is eva
ea40: 6c 75 61 74 65 64 20 6f 6e 63 65 20 70 72 69 6f  luated once prio
ea50: 72 20 74 6f 20 61 6e 79 20 6f 74 68 65 72 0a 70  r to any other.p
ea60: 72 6f 63 65 73 73 69 6e 67 20 61 6e 64 20 74 68  rocessing and th
ea70: 65 20 72 65 73 75 6c 74 20 69 73 20 72 65 75 73  e result is reus
ea80: 65 64 20 61 73 20 6e 65 63 65 73 73 61 72 79 2e  ed as necessary.
ea90: 20 20 49 66 20 74 68 65 20 5b 53 45 4c 45 43 54    If the [SELECT
eaa0: 5d 20 65 78 70 72 65 73 73 69 6f 6e 0a 64 6f 65  ] expression.doe
eab0: 73 20 63 6f 6e 74 61 69 6e 20 76 61 72 69 61 62  s contain variab
eac0: 6c 65 73 20 66 72 6f 6d 20 74 68 65 20 6f 75 74  les from the out
ead0: 65 72 20 71 75 65 72 79 2c 20 74 68 65 6e 20 74  er query, then t
eae0: 68 65 20 5b 53 45 4c 45 43 54 5d 20 69 73 20 72  he [SELECT] is r
eaf0: 65 65 76 61 6c 75 61 74 65 64 0a 65 76 65 72 79  eevaluated.every
eb00: 20 74 69 6d 65 20 69 74 20 69 73 20 6e 65 65 64   time it is need
eb10: 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 57 68 65 6e  ed.</p>..<p>When
eb20: 20 61 20 53 45 4c 45 43 54 20 69 73 20 74 68 65   a SELECT is the
eb30: 20 72 69 67 68 74 20 6f 70 65 72 61 6e 64 20 6f   right operand o
eb40: 66 20 74 68 65 20 49 4e 20 6f 70 65 72 61 74 6f  f the IN operato
eb50: 72 2c 20 74 68 65 20 49 4e 0a 6f 70 65 72 61 74  r, the IN.operat
eb60: 6f 72 20 72 65 74 75 72 6e 73 20 54 52 55 45 20  or returns TRUE 
eb70: 69 66 20 74 68 65 20 72 65 73 75 6c 74 20 6f 66  if the result of
eb80: 20 74 68 65 20 6c 65 66 74 20 6f 70 65 72 61 6e   the left operan
eb90: 64 20 69 73 20 61 6e 79 20 6f 66 0a 74 68 65 20  d is any of.the 
eba0: 76 61 6c 75 65 73 20 67 65 6e 65 72 61 74 65 64  values generated
ebb0: 20 62 79 20 74 68 65 20 73 65 6c 65 63 74 2e 20   by the select. 
ebc0: 20 54 68 65 20 49 4e 20 6f 70 65 72 61 74 6f 72   The IN operator
ebd0: 20 6d 61 79 20 62 65 20 70 72 65 63 65 64 65 64   may be preceded
ebe0: 0a 62 79 20 74 68 65 20 4e 4f 54 20 6b 65 79 77  .by the NOT keyw
ebf0: 6f 72 64 20 74 6f 20 69 6e 76 65 72 74 20 74 68  ord to invert th
ec00: 65 20 73 65 6e 73 65 20 6f 66 20 74 68 65 20 74  e sense of the t
ec10: 65 73 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 57 68 65  est.</p>..<p>Whe
ec20: 6e 20 61 20 53 45 4c 45 43 54 20 61 70 70 65 61  n a SELECT appea
ec30: 72 73 20 77 69 74 68 69 6e 20 61 6e 20 65 78 70  rs within an exp
ec40: 72 65 73 73 69 6f 6e 20 62 75 74 20 69 73 20 6e  ression but is n
ec50: 6f 74 20 74 68 65 20 72 69 67 68 74 0a 6f 70 65  ot the right.ope
ec60: 72 61 6e 64 20 6f 66 20 61 6e 20 49 4e 20 6f 70  rand of an IN op
ec70: 65 72 61 74 6f 72 2c 20 74 68 65 6e 20 74 68 65  erator, then the
ec80: 20 66 69 72 73 74 20 72 6f 77 20 6f 66 20 74 68   first row of th
ec90: 65 20 72 65 73 75 6c 74 20 6f 66 20 74 68 65 0a  e result of the.
eca0: 53 45 4c 45 43 54 20 62 65 63 6f 6d 65 73 20 74  SELECT becomes t
ecb0: 68 65 20 76 61 6c 75 65 20 75 73 65 64 20 69 6e  he value used in
ecc0: 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 2e   the expression.
ecd0: 20 20 49 66 20 74 68 65 20 53 45 4c 45 43 54 20    If the SELECT 
ece0: 79 69 65 6c 64 73 0a 6d 6f 72 65 20 74 68 61 6e  yields.more than
ecf0: 20 6f 6e 65 20 72 65 73 75 6c 74 20 72 6f 77 2c   one result row,
ed00: 20 61 6c 6c 20 72 6f 77 73 20 61 66 74 65 72 20   all rows after 
ed10: 74 68 65 20 66 69 72 73 74 20 61 72 65 20 69 67  the first are ig
ed20: 6e 6f 72 65 64 2e 20 20 49 66 0a 74 68 65 20 53  nored.  If.the S
ed30: 45 4c 45 43 54 20 79 69 65 6c 64 73 20 6e 6f 20  ELECT yields no 
ed40: 72 6f 77 73 2c 20 74 68 65 6e 20 74 68 65 20 76  rows, then the v
ed50: 61 6c 75 65 20 6f 66 20 74 68 65 20 53 45 4c 45  alue of the SELE
ed60: 43 54 20 69 73 20 4e 55 4c 4c 2e 3c 2f 70 3e 0a  CT is NULL.</p>.
ed70: 0a 3c 68 33 3e 43 41 53 54 20 65 78 70 72 65 73  .<h3>CAST expres
ed80: 73 69 6f 6e 73 3c 2f 68 33 3e 0a 3c 70 3e 41 20  sions</h3>.<p>A 
ed90: 43 41 53 54 20 65 78 70 72 65 73 73 69 6f 6e 20  CAST expression 
eda0: 63 68 61 6e 67 65 73 20 74 68 65 20 5b 64 61 74  changes the [dat
edb0: 61 74 79 70 65 5d 20 6f 66 20 74 68 65 20 3c 65  atype] of the <e
edc0: 78 70 72 3e 20 69 6e 74 6f 20 74 68 65 0a 74 79  xpr> into the.ty
edd0: 70 65 20 73 70 65 63 69 66 69 65 64 20 62 79 20  pe specified by 
ede0: 26 6c 74 3b 74 79 70 65 26 67 74 3b 2e 20 0a 26  &lt;type&gt;. .&
edf0: 6c 74 3b 74 79 70 65 26 67 74 3b 20 63 61 6e 20  lt;type&gt; can 
ee00: 62 65 20 61 6e 79 20 6e 6f 6e 2d 65 6d 70 74 79  be any non-empty
ee10: 20 74 79 70 65 20 6e 61 6d 65 20 74 68 61 74 20   type name that 
ee20: 69 73 20 76 61 6c 69 64 0a 66 6f 72 20 74 68 65  is valid.for the
ee30: 20 74 79 70 65 20 69 6e 20 61 20 63 6f 6c 75 6d   type in a colum
ee40: 6e 20 64 65 66 69 6e 69 74 69 6f 6e 20 6f 66 20  n definition of 
ee50: 61 20 5b 43 52 45 41 54 45 20 54 41 42 4c 45 5d  a [CREATE TABLE]
ee60: 20 73 74 61 74 65 6d 65 6e 74 2e 3c 2f 70 3e 0a   statement.</p>.
ee70: 0a 3c 68 33 3e 46 75 6e 63 74 69 6f 6e 73 3c 2f  .<h3>Functions</
ee80: 68 33 3e 0a 3c 70 3e 42 6f 74 68 20 5b 63 6f 72  h3>.<p>Both [cor
ee90: 65 66 75 6e 63 7c 73 69 6d 70 6c 65 5d 20 61 6e  efunc|simple] an
eea0: 64 20 5b 61 67 67 66 75 6e 63 7c 61 67 67 72 65  d [aggfunc|aggre
eeb0: 67 61 74 65 5d 20 66 75 6e 63 74 69 6f 6e 73 20  gate] functions 
eec0: 61 72 65 20 73 75 70 70 6f 72 74 65 64 2e 0a 28  are supported..(
eed0: 46 6f 72 20 70 72 65 73 65 6e 74 61 74 69 6f 6e  For presentation
eee0: 20 70 75 72 70 6f 73 65 73 2c 20 73 69 6d 70 6c   purposes, simpl
eef0: 65 20 66 75 6e 63 74 69 6f 6e 73 20 61 72 65 20  e functions are 
ef00: 66 75 72 74 68 65 72 20 73 75 62 64 69 76 69 64  further subdivid
ef10: 65 64 20 69 6e 74 6f 0a 5b 63 6f 72 65 66 75 6e  ed into.[corefun
ef20: 63 20 7c 20 63 6f 72 65 20 66 75 6e 63 74 69 6f  c | core functio
ef30: 6e 73 5d 20 61 6e 64 20 5b 64 61 74 65 66 75 6e  ns] and [datefun
ef40: 63 20 7c 20 64 61 74 65 2d 74 69 6d 65 20 66 75  c | date-time fu
ef50: 6e 63 74 69 6f 6e 73 5d 2e 29 0a 41 20 73 69 6d  nctions].).A sim
ef60: 70 6c 65 20 66 75 6e 63 74 69 6f 6e 20 63 61 6e  ple function can
ef70: 20 62 65 20 75 73 65 64 20 69 6e 20 61 6e 79 20   be used in any 
ef80: 65 78 70 72 65 73 73 69 6f 6e 2e 20 20 53 69 6d  expression.  Sim
ef90: 70 6c 65 20 66 75 6e 63 74 69 6f 6e 73 20 72 65  ple functions re
efa0: 74 75 72 6e 0a 61 20 72 65 73 75 6c 74 20 69 6d  turn.a result im
efb0: 6d 65 64 69 61 74 65 6c 79 20 62 61 73 65 64 20  mediately based 
efc0: 6f 6e 20 74 68 65 69 72 20 69 6e 70 75 74 73 2e  on their inputs.
efd0: 20 20 41 67 67 72 65 67 61 74 65 20 66 75 6e 63    Aggregate func
efe0: 74 69 6f 6e 73 0a 6d 61 79 20 6f 6e 6c 79 20 62  tions.may only b
eff0: 65 20 75 73 65 64 20 69 6e 20 61 20 53 45 4c 45  e used in a SELE
f000: 43 54 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 41  CT statement.  A
f010: 67 67 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f  ggregate functio
f020: 6e 73 20 63 6f 6d 70 75 74 65 0a 74 68 65 69 72  ns compute.their
f030: 20 72 65 73 75 6c 74 20 61 63 72 6f 73 73 20 61   result across a
f040: 6c 6c 20 72 6f 77 73 20 6f 66 20 74 68 65 20 72  ll rows of the r
f050: 65 73 75 6c 74 20 73 65 74 2e 3c 2f 70 3e 0a 0a  esult set.</p>..
f060: 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23  <tcl>.##########
f070: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
f080: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
f090: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
f0a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
f0b0: 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b 43 6f  ####.Section {Co
f0c0: 72 65 20 46 75 6e 63 74 69 6f 6e 73 7d 20 63 6f  re Functions} co
f0d0: 72 65 66 75 6e 63 20 7b 63 6f 72 65 66 75 6e 63  refunc {corefunc
f0e0: 7d 0a 70 72 6f 63 20 66 75 6e 63 64 65 66 20 7b  }.proc funcdef {
f0f0: 73 79 6e 74 61 78 20 6b 65 79 77 6f 72 64 73 20  syntax keywords 
f100: 64 65 73 63 7d 20 7b 0a 20 20 68 64 5f 70 75 74  desc} {.  hd_put
f110: 73 20 7b 3c 74 72 3e 7d 0a 20 20 72 65 67 73 75  s {<tr>}.  regsu
f120: 62 20 2d 61 6c 6c 20 7b 5c 73 2b 7d 20 5b 73 74  b -all {\s+} [st
f130: 72 69 6e 67 20 74 72 69 6d 20 24 73 79 6e 74 61  ring trim $synta
f140: 78 5d 20 7b 3c 62 72 3e 3c 2f 62 72 3e 7d 20 73  x] {<br></br>} s
f150: 79 6e 74 61 78 0a 20 20 72 65 67 73 75 62 20 2d  yntax.  regsub -
f160: 61 6c 6c 20 7b 5c 28 28 5b 5e 2a 29 5d 2b 29 5c  all {\(([^*)]+)\
f170: 29 7d 20 24 73 79 6e 74 61 78 20 7b 28 3c 69 3e  )} $syntax {(<i>
f180: 5c 31 3c 2f 69 3e 29 7d 20 73 79 6e 74 61 78 0a  \1</i>)} syntax.
f190: 20 20 72 65 67 73 75 62 20 2d 61 6c 6c 20 7b 2c    regsub -all {,
f1a0: 7d 20 24 73 79 6e 74 61 78 20 7b 3c 2f 69 3e 2c  } $syntax {</i>,
f1b0: 3c 69 3e 7d 20 73 79 6e 74 61 78 0a 20 20 72 65  <i>} syntax.  re
f1c0: 67 73 75 62 20 2d 61 6c 6c 20 7b 3c 69 3e 5c 2e  gsub -all {<i>\.
f1d0: 5c 2e 5c 2e 3c 2f 69 3e 7d 20 24 73 79 6e 74 61  \.\.</i>} $synta
f1e0: 78 20 7b 2e 2e 2e 7d 20 73 79 6e 74 61 78 0a 20  x {...} syntax. 
f1f0: 20 68 64 5f 70 75 74 73 20 22 3c 74 64 20 76 61   hd_puts "<td va
f200: 6c 69 67 6e 3d 5c 22 74 6f 70 5c 22 20 61 6c 69  lign=\"top\" ali
f210: 67 6e 3d 5c 22 72 69 67 68 74 5c 22 20 77 69 64  gn=\"right\" wid
f220: 74 68 3d 5c 22 31 32 30 5c 22 3e 24 73 79 6e 74  th=\"120\">$synt
f230: 61 78 3c 2f 74 64 3e 22 0a 20 20 68 64 5f 70 75  ax</td>".  hd_pu
f240: 74 73 20 7b 3c 74 64 20 76 61 6c 69 67 6e 3d 22  ts {<td valign="
f250: 74 6f 70 22 3e 7d 0a 20 20 69 66 20 7b 5b 6c 6c  top">}.  if {[ll
f260: 65 6e 67 74 68 20 24 6b 65 79 77 6f 72 64 73 5d  ength $keywords]
f270: 3d 3d 30 7d 20 7b 0a 20 20 20 20 72 65 67 65 78  ==0} {.    regex
f280: 70 20 7b 5b 61 2d 7a 5f 5d 2b 7d 20 24 73 79 6e  p {[a-z_]+} $syn
f290: 74 61 78 20 6e 61 6d 65 0a 20 20 20 20 68 64 5f  tax name.    hd_
f2a0: 66 72 61 67 6d 65 6e 74 20 24 6e 61 6d 65 20 24  fragment $name $
f2b0: 6e 61 6d 65 0a 20 20 7d 20 65 6c 73 65 20 7b 0a  name.  } else {.
f2c0: 20 20 20 20 65 76 61 6c 20 68 64 5f 66 72 61 67      eval hd_frag
f2d0: 6d 65 6e 74 20 24 6b 65 79 77 6f 72 64 73 0a 20  ment $keywords. 
f2e0: 20 20 20 68 64 5f 6b 65 79 77 6f 72 64 73 20 24     hd_keywords $
f2f0: 6b 65 79 77 6f 72 64 73 0a 20 20 7d 0a 20 20 68  keywords.  }.  h
f300: 64 5f 72 65 73 6f 6c 76 65 20 24 64 65 73 63 0a  d_resolve $desc.
f310: 20 20 68 64 5f 70 75 74 73 20 7b 3c 2f 74 64 3e    hd_puts {</td>
f320: 3c 2f 74 72 3e 7d 0a 7d 0a 3c 2f 74 63 6c 3e 0a  </tr>}.}.</tcl>.
f330: 0a 3c 70 3e 54 68 65 20 63 6f 72 65 20 66 75 6e  .<p>The core fun
f340: 63 74 69 6f 6e 73 20 73 68 6f 77 6e 20 62 65 6c  ctions shown bel
f350: 6f 77 20 61 72 65 20 61 76 61 69 6c 61 62 6c 65  ow are available
f360: 20 62 79 20 64 65 66 61 75 6c 74 2e 20 0a 5b 64   by default. .[d
f370: 61 74 65 66 75 6e 63 20 7c 20 44 61 74 65 20 26  atefunc | Date &
f380: 61 6d 70 3b 20 54 69 6d 65 20 66 75 6e 63 74 69  amp; Time functi
f390: 6f 6e 73 5d 20 61 6e 64 0a 5b 61 67 67 66 75 6e  ons] and.[aggfun
f3a0: 63 20 7c 20 61 67 67 72 65 67 61 74 65 20 66 75  c | aggregate fu
f3b0: 6e 63 74 69 6f 6e 73 5d 20 61 72 65 20 64 6f 63  nctions] are doc
f3c0: 75 6d 65 6e 74 65 64 20 73 65 70 61 72 61 74 65  umented separate
f3d0: 6c 79 2e 20 20 41 6e 0a 61 70 70 6c 69 63 61 74  ly.  An.applicat
f3e0: 69 6f 6e 20 6d 61 79 20 64 65 66 69 6e 65 20 61  ion may define a
f3f0: 64 64 69 74 69 6f 6e 61 6c 0a 66 75 6e 63 74 69  dditional.functi
f400: 6f 6e 73 20 77 72 69 74 74 65 6e 20 69 6e 20 43  ons written in C
f410: 20 61 6e 64 20 61 64 64 65 64 20 74 6f 20 74 68   and added to th
f420: 65 20 64 61 74 61 62 61 73 65 20 65 6e 67 69 6e  e database engin
f430: 65 20 75 73 69 6e 67 0a 74 68 65 20 5b 73 71 6c  e using.the [sql
f440: 69 74 65 33 5f 63 72 65 61 74 65 5f 66 75 6e 63  ite3_create_func
f450: 74 69 6f 6e 28 29 5d 20 41 50 49 2e 3c 2f 70 3e  tion()] API.</p>
f460: 0a 0a 3c 74 61 62 6c 65 20 62 6f 72 64 65 72 3d  ..<table border=
f470: 30 20 63 65 6c 6c 70 61 64 64 69 6e 67 3d 31 30  0 cellpadding=10
f480: 3e 0a 3c 74 63 6c 3e 0a 66 75 6e 63 64 65 66 20  >.<tcl>.funcdef 
f490: 7b 61 62 73 28 58 29 7d 20 7b 7d 20 7b 0a 20 20  {abs(X)} {} {.  
f4a0: 52 65 74 75 72 6e 20 74 68 65 20 61 62 73 6f 6c  Return the absol
f4b0: 75 74 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65  ute value of the
f4c0: 20 6e 75 6d 65 72 69 63 0a 20 20 61 72 67 75 6d   numeric.  argum
f4d0: 65 6e 74 20 3c 69 3e 58 3c 2f 69 3e 2e 20 20 52  ent <i>X</i>.  R
f4e0: 65 74 75 72 6e 20 4e 55 4c 4c 20 69 66 20 3c 69  eturn NULL if <i
f4f0: 3e 58 3c 2f 69 3e 20 69 73 20 4e 55 4c 4c 2e 20  >X</i> is NULL. 
f500: 20 52 65 74 75 72 6e 20 30 2e 30 20 69 66 0a 20   Return 0.0 if. 
f510: 20 3c 69 3e 58 3c 2f 69 3e 20 69 73 20 6e 6f 74   <i>X</i> is not
f520: 20 61 20 6e 75 6d 65 72 69 63 20 76 61 6c 75 65   a numeric value
f530: 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 63 68  ..}..funcdef {ch
f540: 61 6e 67 65 73 28 29 7d 20 7b 7d 20 7b 0a 20 20  anges()} {} {.  
f550: 52 65 74 75 72 6e 20 74 68 65 20 6e 75 6d 62 65  Return the numbe
f560: 72 20 6f 66 20 64 61 74 61 62 61 73 65 20 72 6f  r of database ro
f570: 77 73 20 74 68 61 74 20 77 65 72 65 20 63 68 61  ws that were cha
f580: 6e 67 65 64 20 6f 72 20 69 6e 73 65 72 74 65 64  nged or inserted
f590: 20 6f 72 0a 20 20 64 65 6c 65 74 65 64 20 62 79   or.  deleted by
f5a0: 20 74 68 65 20 6d 6f 73 74 20 72 65 63 65 6e 74   the most recent
f5b0: 6c 79 20 63 6f 6d 70 6c 65 74 65 20 53 51 4c 2e  ly complete SQL.
f5c0: 20 20 54 68 69 73 20 69 73 20 61 20 77 72 61 70    This is a wrap
f5d0: 70 65 72 20 61 72 6f 75 6e 64 0a 20 20 74 68 65  per around.  the
f5e0: 20 5b 73 71 6c 69 74 65 33 5f 63 68 61 6e 67 65   [sqlite3_change
f5f0: 73 28 29 5d 20 43 2f 43 2b 2b 20 66 75 6e 63 74  s()] C/C++ funct
f600: 69 6f 6e 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20  ion..}..funcdef 
f610: 7b 63 6f 61 6c 65 73 63 65 28 58 2c 59 2c 2e 2e  {coalesce(X,Y,..
f620: 2e 29 7d 20 7b 7d 20 7b 0a 20 20 52 65 74 75 72  .)} {} {.  Retur
f630: 6e 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20  n a copy of the 
f640: 66 69 72 73 74 20 6e 6f 6e 2d 4e 55 4c 4c 20 61  first non-NULL a
f650: 72 67 75 6d 65 6e 74 2e 20 20 49 66 0a 20 20 61  rgument.  If.  a
f660: 6c 6c 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65  ll arguments are
f670: 20 4e 55 4c 4c 20 74 68 65 6e 20 4e 55 4c 4c 20   NULL then NULL 
f680: 69 73 20 72 65 74 75 72 6e 65 64 2e 20 20 54 68  is returned.  Th
f690: 65 72 65 20 6d 75 73 74 20 62 65 20 61 74 20 6c  ere must be at l
f6a0: 65 61 73 74 20 0a 20 20 32 20 61 72 67 75 6d 65  east .  2 argume
f6b0: 6e 74 73 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20  nts..}..funcdef 
f6c0: 7b 67 6c 6f 62 28 58 2c 59 29 7d 20 7b 7d 20 7b  {glob(X,Y)} {} {
f6d0: 0a 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e  .  This function
f6e0: 20 69 73 20 75 73 65 64 20 74 6f 20 69 6d 70 6c   is used to impl
f6f0: 65 6d 65 6e 74 20 74 68 65 0a 20 20 22 3c 62 3e  ement the.  "<b>
f700: 59 20 47 4c 4f 42 20 58 3c 2f 62 3e 22 20 73 79  Y GLOB X</b>" sy
f710: 6e 74 61 78 20 6f 66 20 53 51 4c 69 74 65 2e 0a  ntax of SQLite..
f720: 20 20 4e 6f 74 65 20 74 68 61 74 20 74 68 65 20    Note that the 
f730: 58 20 61 6e 64 20 59 20 61 72 67 75 6d 65 6e 74  X and Y argument
f740: 73 20 61 72 65 20 72 65 76 65 72 73 65 64 20 69  s are reversed i
f750: 6e 20 74 68 65 20 67 6c 6f 62 28 29 20 66 75 6e  n the glob() fun
f760: 63 74 69 6f 6e 0a 20 20 72 65 6c 61 74 69 76 65  ction.  relative
f770: 20 74 6f 20 74 68 65 20 69 6e 66 69 78 20 5b 47   to the infix [G
f780: 4c 4f 42 5d 20 6f 70 65 72 61 74 6f 72 2e 0a 20  LOB] operator.. 
f790: 20 54 68 65 20 5b 73 71 6c 69 74 65 33 5f 63 72   The [sqlite3_cr
f7a0: 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 28 29 5d  eate_function()]
f7b0: 0a 20 20 69 6e 74 65 72 66 61 63 65 20 63 61 6e  .  interface can
f7c0: 0a 20 20 62 65 20 75 73 65 64 20 74 6f 20 6f 76  .  be used to ov
f7d0: 65 72 72 69 64 65 20 74 68 69 73 20 66 75 6e 63  erride this func
f7e0: 74 69 6f 6e 20 61 6e 64 20 74 68 65 72 65 62 79  tion and thereby
f7f0: 20 63 68 61 6e 67 65 20 74 68 65 20 6f 70 65 72   change the oper
f800: 61 74 69 6f 6e 0a 20 20 6f 66 20 74 68 65 20 5b  ation.  of the [
f810: 47 4c 4f 42 5d 20 6f 70 65 72 61 74 6f 72 2e 3c  GLOB] operator.<
f820: 2f 74 64 3e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20  /td>.}..funcdef 
f830: 7b 69 66 6e 75 6c 6c 28 58 2c 59 29 7d 20 7b 7d  {ifnull(X,Y)} {}
f840: 20 7b 0a 20 20 52 65 74 75 72 6e 20 61 20 63 6f   {.  Return a co
f850: 70 79 20 6f 66 20 74 68 65 20 66 69 72 73 74 20  py of the first 
f860: 6e 6f 6e 2d 4e 55 4c 4c 20 61 72 67 75 6d 65 6e  non-NULL argumen
f870: 74 2e 20 20 49 66 0a 20 20 62 6f 74 68 20 61 72  t.  If.  both ar
f880: 67 75 6d 65 6e 74 73 20 61 72 65 20 4e 55 4c 4c  guments are NULL
f890: 20 74 68 65 6e 20 4e 55 4c 4c 20 69 73 20 72 65   then NULL is re
f8a0: 74 75 72 6e 65 64 2e 20 54 68 65 20 69 66 6e 75  turned. The ifnu
f8b0: 6c 6c 28 29 20 66 75 6e 63 74 69 6f 6e 73 20 61  ll() functions a
f8c0: 6e 64 0a 20 20 5b 63 6f 61 6c 65 73 63 65 28 29  nd.  [coalesce()
f8d0: 5d 20 77 69 74 68 20 74 77 6f 20 61 72 67 75 6d  ] with two argum
f8e0: 65 6e 74 73 20 61 72 65 20 69 6e 74 65 72 63 68  ents are interch
f8f0: 61 6e 67 65 61 62 6c 65 2e 3c 2f 74 64 3e 0a 7d  angeable.</td>.}
f900: 0a 0a 66 75 6e 63 64 65 66 20 7b 68 65 78 28 58  ..funcdef {hex(X
f910: 29 7d 20 7b 7d 20 7b 0a 20 20 54 68 65 20 61 72  )} {} {.  The ar
f920: 67 75 6d 65 6e 74 20 69 73 20 69 6e 74 65 72 70  gument is interp
f930: 72 65 74 65 64 20 61 73 20 61 20 42 4c 4f 42 2e  reted as a BLOB.
f940: 20 20 54 68 65 20 72 65 73 75 6c 74 0a 20 20 69    The result.  i
f950: 73 20 61 20 68 65 78 61 64 65 63 69 6d 61 6c 20  s a hexadecimal 
f960: 72 65 6e 64 65 72 69 6e 67 20 6f 66 20 74 68 65  rendering of the
f970: 20 63 6f 6e 74 65 6e 74 20 6f 66 20 74 68 61 74   content of that
f980: 20 62 6c 6f 62 2e 20 20 0a 7d 0a 0a 66 75 6e 63   blob.  .}..func
f990: 64 65 66 20 7b 6c 61 73 74 5f 69 6e 73 65 72 74  def {last_insert
f9a0: 5f 72 6f 77 69 64 28 29 7d 20 7b 7d 20 7b 0a 20  _rowid()} {} {. 
f9b0: 20 52 65 74 75 72 6e 20 74 68 65 20 5b 52 4f 57   Return the [ROW
f9c0: 49 44 5d 0a 20 20 6f 66 20 74 68 65 20 6c 61 73  ID].  of the las
f9d0: 74 20 72 6f 77 20 69 6e 73 65 72 74 20 66 72 6f  t row insert fro
f9e0: 6d 20 74 68 69 73 0a 20 20 63 6f 6e 6e 65 63 74  m this.  connect
f9f0: 69 6f 6e 20 74 6f 20 74 68 65 20 64 61 74 61 62  ion to the datab
fa00: 61 73 65 2e 20 0a 20 20 54 68 69 73 20 69 73 20  ase. .  This is 
fa10: 74 68 65 20 73 61 6d 65 20 76 61 6c 75 65 20 74  the same value t
fa20: 68 61 74 20 77 6f 75 6c 64 20 62 65 20 72 65 74  hat would be ret
fa30: 75 72 6e 65 64 0a 20 20 66 72 6f 6d 20 74 68 65  urned.  from the
fa40: 20 5b 73 71 6c 69 74 65 33 5f 6c 61 73 74 5f 69   [sqlite3_last_i
fa50: 6e 73 65 72 74 5f 72 6f 77 69 64 28 29 5d 20 41  nsert_rowid()] A
fa60: 50 49 20 66 75 6e 63 74 69 6f 6e 2e 0a 7d 0a 0a  PI function..}..
fa70: 66 75 6e 63 64 65 66 20 7b 6c 65 6e 67 74 68 28  funcdef {length(
fa80: 58 29 7d 20 7b 7d 20 7b 0a 20 20 52 65 74 75 72  X)} {} {.  Retur
fa90: 6e 20 74 68 65 20 73 74 72 69 6e 67 20 6c 65 6e  n the string len
faa0: 67 74 68 20 6f 66 20 3c 69 3e 58 3c 2f 69 3e 20  gth of <i>X</i> 
fab0: 69 6e 20 63 68 61 72 61 63 74 65 72 73 20 69 66  in characters if
fac0: 20 3c 69 3e 58 3c 2f 69 3e 20 69 73 20 61 20 73   <i>X</i> is a s
fad0: 74 72 69 6e 67 2c 0a 20 20 6f 72 20 69 6e 20 62  tring,.  or in b
fae0: 79 74 65 73 20 69 66 20 3c 69 3e 58 3c 2f 69 3e  ytes if <i>X</i>
faf0: 20 69 73 20 61 20 62 6c 6f 62 2e 0a 7d 0a 0a 66   is a blob..}..f
fb00: 75 6e 63 64 65 66 20 7b 6c 69 6b 65 28 58 2c 59  uncdef {like(X,Y
fb10: 29 20 6c 69 6b 65 28 58 2c 59 2c 5a 29 7d 20 7b  ) like(X,Y,Z)} {
fb20: 7d 20 7b 0a 20 20 54 68 69 73 20 66 75 6e 63 74  } {.  This funct
fb30: 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f 20 69  ion is used to i
fb40: 6d 70 6c 65 6d 65 6e 74 20 74 68 65 20 22 3c 62  mplement the "<b
fb50: 3e 59 20 4c 49 4b 45 20 58 20 26 23 39 31 3b 45  >Y LIKE X &#91;E
fb60: 53 43 41 50 45 20 5a 26 23 39 33 3b 3c 2f 62 3e  SCAPE Z&#93;</b>
fb70: 22 0a 20 20 73 79 6e 74 61 78 20 6f 66 20 53 51  ".  syntax of SQ
fb80: 4c 2e 20 49 66 20 74 68 65 20 6f 70 74 69 6f 6e  L. If the option
fb90: 61 6c 20 45 53 43 41 50 45 20 63 6c 61 75 73 65  al ESCAPE clause
fba0: 20 69 73 20 70 72 65 73 65 6e 74 2c 20 74 68 65   is present, the
fbb0: 6e 20 74 68 65 0a 20 20 75 73 65 72 2d 66 75 6e  n the.  user-fun
fbc0: 63 74 69 6f 6e 20 69 73 20 69 6e 76 6f 6b 65 64  ction is invoked
fbd0: 20 77 69 74 68 20 74 68 72 65 65 20 61 72 67 75   with three argu
fbe0: 6d 65 6e 74 73 2e 20 4f 74 68 65 72 77 69 73 65  ments. Otherwise
fbf0: 2c 20 69 74 20 69 73 0a 20 20 69 6e 76 6f 6b 65  , it is.  invoke
fc00: 64 20 77 69 74 68 20 74 77 6f 20 61 72 67 75 6d  d with two argum
fc10: 65 6e 74 73 20 6f 6e 6c 79 2e 20 4e 6f 74 65 20  ents only. Note 
fc20: 74 68 61 74 20 74 68 65 20 58 20 61 6e 64 20 59  that the X and Y
fc30: 20 70 61 72 61 6d 65 74 65 72 73 20 61 72 65 0a   parameters are.
fc40: 20 20 72 65 76 65 72 73 65 64 20 69 6e 20 74 68    reversed in th
fc50: 65 20 6c 69 6b 65 28 29 20 66 75 6e 63 74 69 6f  e like() functio
fc60: 6e 20 72 65 6c 61 74 69 76 65 20 74 6f 20 74 68  n relative to th
fc70: 65 20 69 6e 66 69 78 20 5b 4c 49 4b 45 5d 20 6f  e infix [LIKE] o
fc80: 70 65 72 61 74 6f 72 2e 0a 20 20 54 68 65 20 5b  perator..  The [
fc90: 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 66  sqlite3_create_f
fca0: 75 6e 63 74 69 6f 6e 28 29 5d 20 69 6e 74 65 72  unction()] inter
fcb0: 66 61 63 65 20 63 61 6e 20 62 65 20 75 73 65 64  face can be used
fcc0: 20 74 6f 20 6f 76 65 72 72 69 64 65 20 74 68 69   to override thi
fcd0: 73 0a 20 20 66 75 6e 63 74 69 6f 6e 20 61 6e 64  s.  function and
fce0: 20 74 68 65 72 65 62 79 20 63 68 61 6e 67 65 20   thereby change 
fcf0: 74 68 65 20 6f 70 65 72 61 74 69 6f 6e 20 6f 66  the operation of
fd00: 20 74 68 65 0a 20 20 5b 4c 49 4b 45 5d 20 6f 70   the.  [LIKE] op
fd10: 65 72 61 74 6f 72 2e 20 57 68 65 6e 20 64 6f 69  erator. When doi
fd20: 6e 67 20 74 68 69 73 2c 20 69 74 20 6d 61 79 20  ng this, it may 
fd30: 62 65 20 69 6d 70 6f 72 74 61 6e 74 0a 20 20 74  be important.  t
fd40: 6f 20 6f 76 65 72 72 69 64 65 20 62 6f 74 68 20  o override both 
fd50: 74 68 65 20 74 77 6f 20 61 6e 64 20 74 68 72 65  the two and thre
fd60: 65 20 61 72 67 75 6d 65 6e 74 20 76 65 72 73 69  e argument versi
fd70: 6f 6e 73 20 6f 66 20 74 68 65 20 6c 69 6b 65 28  ons of the like(
fd80: 29 20 0a 20 20 66 75 6e 63 74 69 6f 6e 2e 20 4f  ) .  function. O
fd90: 74 68 65 72 77 69 73 65 2c 20 64 69 66 66 65 72  therwise, differ
fda0: 65 6e 74 20 63 6f 64 65 20 6d 61 79 20 62 65 20  ent code may be 
fdb0: 63 61 6c 6c 65 64 20 74 6f 20 69 6d 70 6c 65 6d  called to implem
fdc0: 65 6e 74 20 74 68 65 0a 20 20 5b 4c 49 4b 45 5d  ent the.  [LIKE]
fdd0: 20 6f 70 65 72 61 74 6f 72 20 64 65 70 65 6e 64   operator depend
fde0: 69 6e 67 20 6f 6e 20 77 68 65 74 68 65 72 20 6f  ing on whether o
fdf0: 72 20 6e 6f 74 20 61 6e 20 45 53 43 41 50 45 20  r not an ESCAPE 
fe00: 63 6c 61 75 73 65 20 77 61 73 20 0a 20 20 73 70  clause was .  sp
fe10: 65 63 69 66 69 65 64 2e 0a 7d 0a 0a 66 75 6e 63  ecified..}..func
fe20: 64 65 66 20 7b 6c 6f 61 64 5f 65 78 74 65 6e 73  def {load_extens
fe30: 69 6f 6e 28 58 29 20 6c 6f 61 64 5f 65 78 74 65  ion(X) load_exte
fe40: 6e 73 69 6f 6e 28 58 2c 59 29 7d 20 7b 6c 6f 61  nsion(X,Y)} {loa
fe50: 64 5f 65 78 74 65 6e 73 69 6f 6e 7d 20 7b 0a 20  d_extension} {. 
fe60: 20 4c 6f 61 64 20 53 51 4c 69 74 65 20 65 78 74   Load SQLite ext
fe70: 65 6e 73 69 6f 6e 73 20 6f 75 74 20 6f 66 20 74  ensions out of t
fe80: 68 65 20 73 68 61 72 65 64 20 6c 69 62 72 61 72  he shared librar
fe90: 79 0a 20 20 66 69 6c 65 20 6e 61 6d 65 64 20 3c  y.  file named <
fea0: 69 3e 58 3c 2f 69 3e 20 75 73 69 6e 67 20 74 68  i>X</i> using th
feb0: 65 20 65 6e 74 72 79 20 70 6f 69 6e 74 20 3c 69  e entry point <i
fec0: 3e 59 3c 2f 69 3e 2e 20 20 54 68 65 20 72 65 73  >Y</i>.  The res
fed0: 75 6c 74 0a 20 20 69 73 20 61 20 4e 55 4c 4c 2e  ult.  is a NULL.
fee0: 20 20 49 66 20 3c 69 3e 59 3c 2f 69 3e 20 69 73    If <i>Y</i> is
fef0: 20 6f 6d 69 74 74 65 64 20 74 68 65 6e 20 74 68   omitted then th
ff00: 65 20 64 65 66 61 75 6c 74 20 65 6e 74 72 79 20  e default entry 
ff10: 70 6f 69 6e 74 0a 20 20 6f 66 20 3c 62 3e 73 71  point.  of <b>sq
ff20: 6c 69 74 65 33 5f 65 78 74 65 6e 73 69 6f 6e 5f  lite3_extension_
ff30: 69 6e 69 74 3c 2f 62 3e 20 69 73 20 75 73 65 64  init</b> is used
ff40: 2e 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e  .  This function
ff50: 20 72 61 69 73 65 73 0a 20 20 61 6e 20 65 78 63   raises.  an exc
ff60: 65 70 74 69 6f 6e 20 69 66 20 74 68 65 20 65 78  eption if the ex
ff70: 74 65 6e 73 69 6f 6e 20 66 61 69 6c 73 20 74 6f  tension fails to
ff80: 20 6c 6f 61 64 20 6f 72 20 69 6e 69 74 69 61 6c   load or initial
ff90: 69 7a 65 20 63 6f 72 72 65 63 74 6c 79 2e 0a 0a  ize correctly...
ffa0: 20 20 3c 70 3e 54 68 69 73 20 66 75 6e 63 74 69    <p>This functi
ffb0: 6f 6e 20 77 69 6c 6c 20 66 61 69 6c 20 69 66 20  on will fail if 
ffc0: 74 68 65 20 65 78 74 65 6e 73 69 6f 6e 20 61 74  the extension at
ffd0: 74 65 6d 70 74 73 20 74 6f 20 6d 6f 64 69 66 79  tempts to modify
ffe0: 0a 20 20 6f 72 20 64 65 6c 65 74 65 20 61 20 53  .  or delete a S
fff0: 51 4c 20 66 75 6e 63 74 69 6f 6e 20 6f 72 20 63  QL function or c
10000 6f 6c 6c 61 74 69 6e 67 20 73 65 71 75 65 6e 63  ollating sequenc
10010 65 2e 20 20 54 68 65 0a 20 20 65 78 74 65 6e 73  e.  The.  extens
10020 69 6f 6e 20 63 61 6e 20 61 64 64 20 6e 65 77 20  ion can add new 
10030 66 75 6e 63 74 69 6f 6e 73 20 6f 72 20 63 6f 6c  functions or col
10040 6c 61 74 69 6e 67 20 73 65 71 75 65 6e 63 65 73  lating sequences
10050 2c 20 62 75 74 20 63 61 6e 6e 6f 74 0a 20 20 6d  , but cannot.  m
10060 6f 64 69 66 79 20 6f 72 20 64 65 6c 65 74 65 20  odify or delete 
10070 65 78 69 73 74 69 6e 67 20 66 75 6e 63 74 69 6f  existing functio
10080 6e 73 20 6f 72 20 63 6f 6c 6c 61 74 69 6e 67 20  ns or collating 
10090 73 65 71 75 65 6e 63 65 73 20 62 65 63 61 75 73  sequences becaus
100a0 65 0a 20 20 74 68 6f 73 65 20 66 75 6e 63 74 69  e.  those functi
100b0 6f 6e 73 20 61 6e 64 2f 6f 72 20 63 6f 6c 6c 61  ons and/or colla
100c0 74 69 6e 67 20 73 65 71 75 65 6e 63 65 73 20 6d  ting sequences m
100d0 69 67 68 74 20 62 65 20 75 73 65 64 20 65 6c 73  ight be used els
100e0 65 77 68 65 72 65 0a 20 20 69 6e 20 74 68 65 20  ewhere.  in the 
100f0 63 75 72 72 65 6e 74 6c 79 20 72 75 6e 6e 69 6e  currently runnin
10100 67 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 2e  g SQL statement.
10110 20 20 54 6f 20 6c 6f 61 64 20 61 6e 20 65 78 74    To load an ext
10120 65 6e 73 69 6f 6e 20 74 68 61 74 0a 20 20 63 68  ension that.  ch
10130 61 6e 67 65 73 20 6f 72 20 64 65 6c 65 74 65 73  anges or deletes
10140 20 66 75 6e 63 74 69 6f 6e 73 20 6f 72 20 63 6f   functions or co
10150 6c 6c 61 74 69 6e 67 20 73 65 71 75 65 6e 63 65  llating sequence
10160 73 2c 20 75 73 65 20 74 68 65 0a 20 20 5b 73 71  s, use the.  [sq
10170 6c 69 74 65 33 5f 6c 6f 61 64 5f 65 78 74 65 6e  lite3_load_exten
10180 73 69 6f 6e 28 29 5d 20 43 2d 6c 61 6e 67 75 61  sion()] C-langua
10190 67 65 20 41 50 49 2e 3c 2f 70 3e 0a 7d 0a 0a 66  ge API.</p>.}..f
101a0 75 6e 63 64 65 66 20 7b 6c 6f 77 65 72 28 58 29  uncdef {lower(X)
101b0 7d 20 7b 7d 20 7b 0a 20 20 52 65 74 75 72 6e 20  } {} {.  Return 
101c0 61 20 63 6f 70 79 20 6f 66 20 73 74 72 69 6e 67  a copy of string
101d0 20 3c 69 3e 58 3c 2f 69 3e 20 77 69 74 68 20 61   <i>X</i> with a
101e0 6c 6c 20 41 53 43 49 49 20 63 68 61 72 61 63 74  ll ASCII charact
101f0 65 72 73 0a 20 20 63 6f 6e 76 65 72 74 65 64 20  ers.  converted 
10200 74 6f 20 6c 6f 77 65 72 20 63 61 73 65 2e 20 20  to lower case.  
10210 54 68 65 20 64 65 66 61 75 6c 74 20 62 75 69 6c  The default buil
10220 74 2d 69 6e 20 6c 6f 77 65 72 28 29 20 66 75 6e  t-in lower() fun
10230 63 74 69 6f 6e 20 77 6f 72 6b 73 0a 20 20 66 6f  ction works.  fo
10240 72 20 41 53 43 49 49 20 63 68 61 72 61 63 74 65  r ASCII characte
10250 72 73 20 6f 6e 6c 79 2e 20 20 54 6f 20 64 6f 20  rs only.  To do 
10260 63 61 73 65 20 63 6f 6e 76 65 72 73 69 6f 6e 73  case conversions
10270 20 6f 6e 20 6e 6f 6e 2d 41 53 43 49 49 0a 20 20   on non-ASCII.  
10280 63 68 61 72 61 63 74 65 72 73 2c 20 6c 6f 61 64  characters, load
10290 20 74 68 65 20 49 43 55 20 65 78 74 65 6e 73 69   the ICU extensi
102a0 6f 6e 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b  on..}..funcdef {
102b0 6c 74 72 69 6d 28 58 29 20 6c 74 72 69 6d 28 58  ltrim(X) ltrim(X
102c0 2c 59 29 7d 20 7b 7d 20 7b 0a 20 20 52 65 74 75  ,Y)} {} {.  Retu
102d0 72 6e 20 61 20 73 74 72 69 6e 67 20 66 6f 72 6d  rn a string form
102e0 65 64 20 62 79 20 72 65 6d 6f 76 69 6e 67 20 61  ed by removing a
102f0 6e 79 20 61 6e 64 20 61 6c 6c 0a 20 20 63 68 61  ny and all.  cha
10300 72 61 63 74 65 72 73 20 74 68 61 74 20 61 70 70  racters that app
10310 65 61 72 20 69 6e 20 3c 69 3e 59 3c 2f 69 3e 20  ear in <i>Y</i> 
10320 66 72 6f 6d 20 74 68 65 20 6c 65 66 74 20 73 69  from the left si
10330 64 65 20 6f 66 20 3c 69 3e 58 3c 2f 69 3e 2e 0a  de of <i>X</i>..
10340 20 20 49 66 20 74 68 65 20 3c 69 3e 59 3c 2f 69    If the <i>Y</i
10350 3e 20 61 72 67 75 6d 65 6e 74 20 69 73 20 6f 6d  > argument is om
10360 69 74 74 65 64 2c 20 73 70 61 63 65 73 20 61 72  itted, spaces ar
10370 65 20 72 65 6d 6f 76 65 64 2e 0a 7d 0a 0a 66 75  e removed..}..fu
10380 6e 63 64 65 66 20 7b 6d 61 78 28 58 2c 59 2c 2e  ncdef {max(X,Y,.
10390 2e 2e 29 7d 20 7b 6d 61 78 43 6f 72 65 46 75 6e  ..)} {maxCoreFun
103a0 63 20 6d 61 78 7d 20 7b 0a 20 20 52 65 74 75 72  c max} {.  Retur
103b0 6e 20 74 68 65 20 61 72 67 75 6d 65 6e 74 20 77  n the argument w
103c0 69 74 68 20 74 68 65 20 6d 61 78 69 6d 75 6d 20  ith the maximum 
103d0 76 61 6c 75 65 2e 20 20 4f 72 20 72 65 74 75 72  value.  Or retur
103e0 6e 20 4e 55 4c 4c 20 69 66 20 61 6e 79 20 61 72  n NULL if any ar
103f0 67 75 6d 65 6e 74 0a 20 20 69 73 20 4e 55 4c 4c  gument.  is NULL
10400 2e 0a 20 20 4e 6f 74 65 20 74 68 61 74 20 3c 62  ..  Note that <b
10410 3e 6d 61 78 28 29 3c 2f 62 3e 20 69 73 20 61 20  >max()</b> is a 
10420 73 69 6d 70 6c 65 20 66 75 6e 63 74 69 6f 6e 20  simple function 
10430 77 68 65 6e 0a 20 20 69 74 20 68 61 73 20 32 20  when.  it has 2 
10440 6f 72 20 6d 6f 72 65 20 61 72 67 75 6d 65 6e 74  or more argument
10450 73 20 62 75 74 20 63 6f 6e 76 65 72 74 73 20 74  s but converts t
10460 6f 20 61 6e 20 61 67 67 72 65 67 61 74 65 20 66  o an aggregate f
10470 75 6e 63 74 69 6f 6e 20 69 66 20 67 69 76 65 6e  unction if given
10480 0a 20 20 6f 6e 6c 79 20 61 20 73 69 6e 67 6c 65  .  only a single
10490 20 61 72 67 75 6d 65 6e 74 2e 0a 7d 0a 0a 66 75   argument..}..fu
104a0 6e 63 64 65 66 20 7b 6d 69 6e 28 58 2c 59 2c 2e  ncdef {min(X,Y,.
104b0 2e 2e 29 7d 20 7b 6d 69 6e 43 6f 72 65 46 75 6e  ..)} {minCoreFun
104c0 63 20 6d 69 6e 7d 20 7b 0a 20 20 52 65 74 75 72  c min} {.  Retur
104d0 6e 20 74 68 65 20 61 72 67 75 6d 65 6e 74 20 77  n the argument w
104e0 69 74 68 20 74 68 65 20 6d 69 6e 69 6d 75 6d 20  ith the minimum 
104f0 76 61 6c 75 65 2e 20 0a 20 20 4e 6f 74 65 20 74  value. .  Note t
10500 68 61 74 20 3c 62 3e 6d 69 6e 28 29 3c 2f 62 3e  hat <b>min()</b>
10510 20 69 73 20 61 20 73 69 6d 70 6c 65 20 66 75 6e   is a simple fun
10520 63 74 69 6f 6e 20 77 68 65 6e 0a 20 20 69 74 20  ction when.  it 
10530 68 61 73 20 32 20 6f 72 20 6d 6f 72 65 20 61 72  has 2 or more ar
10540 67 75 6d 65 6e 74 73 20 62 75 74 20 63 6f 6e 76  guments but conv
10550 65 72 74 73 20 74 6f 20 61 6e 20 61 67 67 72 65  erts to an aggre
10560 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 20 69 66  gate function if
10570 20 67 69 76 65 6e 0a 20 20 6f 6e 6c 79 20 61 20   given.  only a 
10580 73 69 6e 67 6c 65 20 61 72 67 75 6d 65 6e 74 2e  single argument.
10590 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 6e 75 6c  .}..funcdef {nul
105a0 6c 69 66 28 58 2c 59 29 7d 20 7b 7d 20 7b 0a 20  lif(X,Y)} {} {. 
105b0 20 52 65 74 75 72 6e 20 74 68 65 20 66 69 72 73   Return the firs
105c0 74 20 61 72 67 75 6d 65 6e 74 20 69 66 20 74 68  t argument if th
105d0 65 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20  e arguments are 
105e0 64 69 66 66 65 72 65 6e 74 2c 20 0a 20 20 6f 74  different, .  ot
105f0 68 65 72 77 69 73 65 20 72 65 74 75 72 6e 20 4e  herwise return N
10600 55 4c 4c 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20  ULL..}..funcdef 
10610 7b 71 75 6f 74 65 28 58 29 7d 20 7b 7d 20 7b 0a  {quote(X)} {} {.
10620 20 20 54 68 69 73 20 72 6f 75 74 69 6e 65 20 72    This routine r
10630 65 74 75 72 6e 73 20 61 20 73 74 72 69 6e 67 20  eturns a string 
10640 77 68 69 63 68 20 69 73 20 74 68 65 20 76 61 6c  which is the val
10650 75 65 20 6f 66 0a 20 20 69 74 73 20 61 72 67 75  ue of.  its argu
10660 6d 65 6e 74 20 73 75 69 74 61 62 6c 65 20 66 6f  ment suitable fo
10670 72 20 69 6e 63 6c 75 73 69 6f 6e 20 69 6e 74 6f  r inclusion into
10680 20 61 6e 6f 74 68 65 72 20 53 51 4c 20 73 74 61   another SQL sta
10690 74 65 6d 65 6e 74 2e 0a 20 20 53 74 72 69 6e 67  tement..  String
106a0 73 20 61 72 65 20 73 75 72 72 6f 75 6e 64 65 64  s are surrounded
106b0 20 62 79 20 73 69 6e 67 6c 65 2d 71 75 6f 74 65   by single-quote
106c0 73 20 77 69 74 68 20 65 73 63 61 70 65 73 20 6f  s with escapes o
106d0 6e 20 69 6e 74 65 72 69 6f 72 20 71 75 6f 74 65  n interior quote
106e0 73 0a 20 20 61 73 20 6e 65 65 64 65 64 2e 20 20  s.  as needed.  
106f0 42 4c 4f 42 73 20 61 72 65 20 65 6e 63 6f 64 65  BLOBs are encode
10700 64 20 61 73 20 68 65 78 61 64 65 63 69 6d 61 6c  d as hexadecimal
10710 20 6c 69 74 65 72 61 6c 73 2e 0a 20 20 53 51 4c   literals..  SQL
10720 69 74 65 20 75 73 65 73 20 74 68 69 73 20 66 75  ite uses this fu
10730 6e 63 74 69 6f 6e 20 69 6e 74 65 72 6e 61 6c 6c  nction internall
10740 79 20 69 6e 20 69 74 73 20 69 6d 70 6c 65 6d 65  y in its impleme
10750 6e 74 61 74 69 6f 6e 20 6f 66 20 5b 56 41 43 55  ntation of [VACU
10760 55 4d 5d 0a 20 20 73 6f 20 69 66 20 74 68 69 73  UM].  so if this
10770 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 6f 76 65   function is ove
10780 72 6c 6f 61 64 69 6e 67 20 74 6f 20 70 72 6f 76  rloading to prov
10790 69 64 65 20 69 6e 63 6f 6d 70 61 74 69 62 6c 65  ide incompatible
107a0 20 62 65 68 61 76 69 6f 72 2c 20 74 68 65 0a 20   behavior, the. 
107b0 20 5b 56 41 43 55 55 4d 5d 20 63 6f 6d 6d 61 6e   [VACUUM] comman
107c0 64 20 77 69 6c 6c 20 6c 69 6b 65 6c 79 20 63 65  d will likely ce
107d0 61 73 65 20 74 6f 20 77 6f 72 6b 2e 0a 7d 0a 0a  ase to work..}..
107e0 66 75 6e 63 64 65 66 20 7b 72 61 6e 64 6f 6d 28  funcdef {random(
107f0 29 7d 20 7b 7d 20 7b 0a 20 20 52 65 74 75 72 6e  )} {} {.  Return
10800 20 61 20 70 73 65 75 64 6f 2d 72 61 6e 64 6f 6d   a pseudo-random
10810 20 69 6e 74 65 67 65 72 0a 20 20 62 65 74 77 65   integer.  betwe
10820 65 6e 20 2d 39 32 32 33 33 37 32 30 33 36 38 35  en -922337203685
10830 34 37 37 35 38 30 38 20 61 6e 64 20 2b 39 32 32  4775808 and +922
10840 33 33 37 32 30 33 36 38 35 34 37 37 35 38 30 37  3372036854775807
10850 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 72 61  ..}..funcdef {ra
10860 6e 64 6f 6d 62 6c 6f 62 28 4e 29 7d 20 7b 7d 20  ndomblob(N)} {} 
10870 7b 0a 20 20 52 65 74 75 72 6e 20 61 6e 20 3c 69  {.  Return an <i
10880 3e 4e 3c 2f 69 3e 2d 62 79 74 65 20 62 6c 6f 62  >N</i>-byte blob
10890 20 63 6f 6e 74 61 69 6e 69 6e 67 20 70 73 65 75   containing pseu
108a0 64 6f 2d 72 61 6e 64 6f 6d 20 62 79 74 65 73 2e  do-random bytes.
108b0 0a 20 20 3c 69 3e 4e 3c 2f 69 3e 20 73 68 6f 75  .  <i>N</i> shou
108c0 6c 64 20 62 65 20 61 20 70 6f 73 74 69 76 65 20  ld be a postive 
108d0 69 6e 74 65 67 65 72 2e 0a 0a 20 20 3c 70 3e 48  integer...  <p>H
108e0 69 6e 74 3a 20 20 61 70 70 6c 69 63 61 74 69 6f  int:  applicatio
108f0 6e 73 20 63 61 6e 20 67 65 6e 65 72 61 74 65 20  ns can generate 
10900 67 6c 6f 62 61 6c 6c 79 20 75 6e 69 71 75 65 20  globally unique 
10910 69 64 65 6e 74 69 66 69 65 72 73 0a 20 20 75 73  identifiers.  us
10920 69 6e 67 20 74 68 69 73 20 66 75 6e 63 74 69 6f  ing this functio
10930 6e 20 74 6f 67 65 74 68 65 72 20 77 69 74 68 20  n together with 
10940 5b 68 65 78 28 29 5d 20 61 6e 64 2f 6f 72 0a 20  [hex()] and/or. 
10950 20 5b 6c 6f 77 65 72 28 29 5d 20 6c 69 6b 65 20   [lower()] like 
10960 74 68 69 73 3a 3c 2f 70 3e 0a 0a 20 20 3c 62 6c  this:</p>..  <bl
10970 6f 63 6b 71 75 6f 74 65 3e 0a 20 20 68 65 78 28  ockquote>.  hex(
10980 72 61 6e 64 6f 6d 62 6c 6f 62 28 31 36 29 29 3c  randomblob(16))<
10990 62 72 3e 3c 2f 62 72 3e 0a 20 20 6c 6f 77 65 72  br></br>.  lower
109a0 28 68 65 78 28 72 61 6e 64 6f 6d 62 6c 6f 62 28  (hex(randomblob(
109b0 31 36 29 29 29 0a 20 20 3c 2f 62 6c 6f 63 6b 71  16))).  </blockq
109c0 75 6f 74 65 3e 0a 7d 0a 0a 66 75 6e 63 64 65 66  uote>.}..funcdef
109d0 20 7b 72 65 70 6c 61 63 65 28 58 2c 59 2c 5a 29   {replace(X,Y,Z)
109e0 7d 20 7b 7d 20 7b 0a 20 20 52 65 74 75 72 6e 20  } {} {.  Return 
109f0 61 20 73 74 72 69 6e 67 20 66 6f 72 6d 65 64 20  a string formed 
10a00 62 79 20 73 75 62 73 74 69 74 75 74 69 6e 67 20  by substituting 
10a10 73 74 72 69 6e 67 20 3c 69 3e 5a 3c 2f 69 3e 20  string <i>Z</i> 
10a20 66 6f 72 0a 20 20 65 76 65 72 79 20 6f 63 63 75  for.  every occu
10a30 72 72 61 6e 63 65 20 6f 66 20 73 74 72 69 6e 67  rrance of string
10a40 20 3c 69 3e 59 3c 2f 69 3e 20 69 6e 20 73 74 72   <i>Y</i> in str
10a50 69 6e 67 20 3c 69 3e 58 3c 2f 69 3e 2e 20 20 54  ing <i>X</i>.  T
10a60 68 65 20 5b 42 49 4e 41 52 59 5d 0a 20 20 63 6f  he [BINARY].  co
10a70 6c 6c 61 74 69 6e 67 20 73 65 71 75 65 6e 63 65  llating sequence
10a80 20 69 73 20 75 73 65 64 20 66 6f 72 20 63 6f 6d   is used for com
10a90 70 61 72 69 73 6f 6e 73 2e 20 20 49 66 20 3c 69  parisons.  If <i
10aa0 3e 59 3c 2f 69 3e 20 69 73 20 61 6e 20 65 6d 70  >Y</i> is an emp
10ab0 74 79 0a 20 20 73 74 72 69 6e 67 20 74 68 65 6e  ty.  string then
10ac0 20 72 65 74 75 72 6e 20 3c 69 3e 58 3c 2f 69 3e   return <i>X</i>
10ad0 20 75 6e 63 68 61 6e 67 65 64 2e 0a 7d 0a 0a 66   unchanged..}..f
10ae0 75 6e 63 64 65 66 20 7b 72 6f 75 6e 64 28 58 29  uncdef {round(X)
10af0 20 72 6f 75 6e 64 28 58 2c 59 29 7d 20 7b 7d 20   round(X,Y)} {} 
10b00 7b 0a 20 20 52 6f 75 6e 64 20 6f 66 66 20 74 68  {.  Round off th
10b10 65 20 6e 75 6d 62 65 72 20 3c 69 3e 58 3c 2f 69  e number <i>X</i
10b20 3e 20 74 6f 20 3c 69 3e 59 3c 2f 69 3e 20 64 69  > to <i>Y</i> di
10b30 67 69 74 73 20 74 6f 20 74 68 65 0a 20 20 72 69  gits to the.  ri
10b40 67 68 74 20 6f 66 20 74 68 65 20 64 65 63 69 6d  ght of the decim
10b50 61 6c 20 70 6f 69 6e 74 2e 20 20 49 66 20 74 68  al point.  If th
10b60 65 20 3c 69 3e 59 3c 2f 69 3e 20 61 72 67 75 6d  e <i>Y</i> argum
10b70 65 6e 74 20 69 73 20 6f 6d 69 74 74 65 64 2c 20  ent is omitted, 
10b80 30 20 69 73 20 0a 20 20 61 73 73 75 6d 65 64 2e  0 is .  assumed.
10b90 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 72 74 72  .}..funcdef {rtr
10ba0 69 6d 28 58 29 20 72 74 72 69 6d 28 58 2c 59 29  im(X) rtrim(X,Y)
10bb0 7d 20 7b 7d 20 7b 0a 20 20 52 65 74 75 72 6e 20  } {} {.  Return 
10bc0 61 20 73 74 72 69 6e 67 20 66 6f 72 6d 65 64 20  a string formed 
10bd0 62 79 20 72 65 6d 6f 76 69 6e 67 20 61 6e 79 20  by removing any 
10be0 61 6e 64 20 61 6c 6c 0a 20 20 63 68 61 72 61 63  and all.  charac
10bf0 74 65 72 73 20 74 68 61 74 20 61 70 70 65 61 72  ters that appear
10c00 20 69 6e 20 3c 69 3e 59 3c 2f 69 3e 20 66 72 6f   in <i>Y</i> fro
10c10 6d 20 74 68 65 20 72 69 67 68 74 20 73 69 64 65  m the right side
10c20 20 6f 66 20 3c 69 3e 58 3c 2f 69 3e 2e 0a 20 20   of <i>X</i>..  
10c30 49 66 20 74 68 65 20 3c 69 3e 59 3c 2f 69 3e 20  If the <i>Y</i> 
10c40 61 72 67 75 6d 65 6e 74 20 69 73 20 6f 6d 69 74  argument is omit
10c50 74 65 64 2c 20 73 70 61 63 65 73 20 61 72 65 20  ted, spaces are 
10c60 72 65 6d 6f 76 65 64 2e 0a 7d 0a 0a 66 75 6e 63  removed..}..func
10c70 64 65 66 20 7b 73 6f 75 6e 64 65 78 28 58 29 7d  def {soundex(X)}
10c80 20 7b 7d 20 7b 0a 20 20 43 6f 6d 70 75 74 65 20   {} {.  Compute 
10c90 74 68 65 20 73 6f 75 6e 64 65 78 20 65 6e 63 6f  the soundex enco
10ca0 64 69 6e 67 20 6f 66 20 74 68 65 20 73 74 72 69  ding of the stri
10cb0 6e 67 20 3c 69 3e 58 3c 2f 69 3e 2e 0a 20 20 54  ng <i>X</i>..  T
10cc0 68 65 20 73 74 72 69 6e 67 20 22 3f 30 30 30 22  he string "?000"
10cd0 20 69 73 20 72 65 74 75 72 6e 65 64 20 69 66 20   is returned if 
10ce0 74 68 65 20 61 72 67 75 6d 65 6e 74 20 69 73 20  the argument is 
10cf0 4e 55 4c 4c 2e 0a 20 20 54 68 69 73 20 66 75 6e  NULL..  This fun
10d00 63 74 69 6f 6e 20 69 73 20 6f 6d 69 74 74 65 64  ction is omitted
10d10 20 66 72 6f 6d 20 53 51 4c 69 74 65 20 62 79 20   from SQLite by 
10d20 64 65 66 61 75 6c 74 2e 0a 20 20 49 74 20 69 73  default..  It is
10d30 20 6f 6e 6c 79 20 61 76 61 69 6c 61 62 6c 65 20   only available 
10d40 74 68 65 20 2d 44 53 51 4c 49 54 45 5f 53 4f 55  the -DSQLITE_SOU
10d50 4e 44 45 58 3d 31 20 63 6f 6d 70 69 6c 65 72 20  NDEX=1 compiler 
10d60 6f 70 74 69 6f 6e 0a 20 20 69 73 20 75 73 65 64  option.  is used
10d70 20 77 68 65 6e 20 53 51 4c 69 74 65 20 69 73 20   when SQLite is 
10d80 62 75 69 6c 74 2e 0a 7d 0a 0a 66 75 6e 63 64 65  built..}..funcde
10d90 66 20 7b 73 71 6c 69 74 65 5f 73 6f 75 72 63 65  f {sqlite_source
10da0 5f 69 64 28 29 7d 20 7b 73 71 6c 69 74 65 5f 73  _id()} {sqlite_s
10db0 6f 75 72 63 65 5f 69 64 7d 20 7b 0a 20 20 52 65  ource_id} {.  Re
10dc0 74 75 72 6e 20 61 20 73 74 72 69 6e 67 20 74 68  turn a string th
10dd0 61 74 20 69 64 65 6e 74 69 66 69 65 73 20 74 68  at identifies th
10de0 65 20 73 70 65 63 69 66 69 63 20 76 65 72 73 69  e specific versi
10df0 6f 6e 20 6f 66 20 74 68 65 20 73 6f 75 72 63 65  on of the source
10e00 20 63 6f 64 65 0a 20 20 74 68 61 74 20 77 61 73   code.  that was
10e10 20 75 73 65 64 20 74 6f 20 62 75 69 6c 64 20 74   used to build t
10e20 68 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72  he SQLite librar
10e30 79 2e 20 20 54 68 65 20 72 65 74 75 72 6e 20 73  y.  The return s
10e40 74 72 69 6e 67 20 62 65 67 69 6e 73 20 77 69 74  tring begins wit
10e50 68 0a 20 20 74 68 65 20 64 61 74 65 20 61 6e 64  h.  the date and
10e60 20 74 69 6d 65 20 74 68 61 74 20 74 68 65 20 73   time that the s
10e70 6f 75 72 63 65 20 63 6f 64 65 20 77 61 73 20 63  ource code was c
10e80 68 65 63 6b 65 64 20 69 6e 20 61 6e 64 20 69 73  hecked in and is
10e90 20 66 6f 6c 6c 6f 77 73 20 62 79 0a 20 20 61 6e   follows by.  an
10ea0 20 53 48 41 31 20 68 61 73 68 20 74 68 61 74 20   SHA1 hash that 
10eb0 75 6e 69 71 75 65 6c 79 20 69 64 65 6e 74 69 66  uniquely identif
10ec0 69 65 73 20 74 68 65 20 73 6f 75 72 63 65 20 74  ies the source t
10ed0 72 65 65 2e 20 20 54 68 69 73 20 66 75 6e 63 74  ree.  This funct
10ee0 69 6f 6e 20 69 73 0a 20 20 61 6e 20 53 51 4c 20  ion is.  an SQL 
10ef0 77 72 61 70 70 65 72 20 61 72 6f 75 6e 64 20 74  wrapper around t
10f00 68 65 20 5b 73 71 6c 69 74 65 33 5f 73 6f 75 72  he [sqlite3_sour
10f10 63 65 69 64 28 29 5d 20 43 20 69 6e 74 65 72 66  ceid()] C interf
10f20 61 63 65 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20  ace..}..funcdef 
10f30 7b 73 71 6c 69 74 65 5f 76 65 72 73 69 6f 6e 28  {sqlite_version(
10f40 29 7d 20 7b 73 71 6c 69 74 65 5f 76 65 72 73 69  )} {sqlite_versi
10f50 6f 6e 7d 20 7b 0a 20 20 52 65 74 75 72 6e 20 74  on} {.  Return t
10f60 68 65 20 76 65 72 73 69 6f 6e 20 73 74 72 69 6e  he version strin
10f70 67 20 66 6f 72 20 74 68 65 20 53 51 4c 69 74 65  g for the SQLite
10f80 20 6c 69 62 72 61 72 79 0a 20 20 74 68 61 74 20   library.  that 
10f90 69 73 20 72 75 6e 6e 69 6e 67 2e 20 20 45 78 61  is running.  Exa
10fa0 6d 70 6c 65 3a 20 20 22 33 2e 35 2e 39 22 2e 20  mple:  "3.5.9". 
10fb0 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69   This function i
10fc0 73 20 61 6e 20 53 51 4c 0a 20 20 77 72 61 70 70  s an SQL.  wrapp
10fd0 65 72 20 61 72 6f 75 6e 64 20 74 68 65 20 5b 73  er around the [s
10fe0 71 6c 69 74 65 33 5f 6c 69 62 76 65 72 73 69 6f  qlite3_libversio
10ff0 6e 28 29 5d 20 43 2d 69 6e 74 65 72 66 61 63 65  n()] C-interface
11000 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 73 75  ..}..funcdef {su
11010 62 73 74 72 28 58 2c 59 2c 5a 29 20 73 75 62 73  bstr(X,Y,Z) subs
11020 74 72 28 58 2c 59 29 7d 20 7b 7d 20 7b 0a 20 20  tr(X,Y)} {} {.  
11030 52 65 74 75 72 6e 20 61 20 73 75 62 73 74 72 69  Return a substri
11040 6e 67 20 6f 66 20 69 6e 70 75 74 20 73 74 72 69  ng of input stri
11050 6e 67 20 3c 69 3e 58 3c 2f 69 3e 20 74 68 61 74  ng <i>X</i> that
11060 20 62 65 67 69 6e 73 0a 20 20 77 69 74 68 20 74   begins.  with t
11070 68 65 20 3c 69 3e 59 3c 2f 69 3e 2d 74 68 20 63  he <i>Y</i>-th c
11080 68 61 72 61 63 74 65 72 20 61 6e 64 20 77 68 69  haracter and whi
11090 63 68 20 69 73 20 3c 69 3e 5a 3c 2f 69 3e 20 63  ch is <i>Z</i> c
110a0 68 61 72 61 63 74 65 72 73 20 6c 6f 6e 67 2e 0a  haracters long..
110b0 20 20 49 66 20 3c 69 3e 5a 3c 2f 69 3e 20 69 73    If <i>Z</i> is
110c0 20 6f 6d 69 74 74 65 64 20 74 68 65 6e 20 61 6c   omitted then al
110d0 6c 20 63 68 61 72 61 63 74 65 72 20 74 68 72 6f  l character thro
110e0 75 67 68 20 74 68 65 20 65 6e 64 20 6f 66 20 74  ugh the end of t
110f0 68 65 20 73 74 72 69 6e 67 0a 20 20 61 72 65 20  he string.  are 
11100 72 65 74 75 72 6e 65 64 2e 0a 20 20 54 68 65 20  returned..  The 
11110 6c 65 66 74 2d 6d 6f 73 74 20 63 68 61 72 61 63  left-most charac
11120 74 65 72 20 6f 66 20 3c 69 3e 58 3c 2f 69 3e 20  ter of <i>X</i> 
11130 69 73 20 6e 75 6d 62 65 72 20 31 2e 20 20 49 66  is number 1.  If
11140 20 3c 69 3e 59 3c 2f 69 3e 20 69 73 20 6e 65 67   <i>Y</i> is neg
11150 61 74 69 76 65 0a 20 20 74 68 65 20 74 68 65 20  ative.  the the 
11160 66 69 72 73 74 20 63 68 61 72 61 63 74 65 72 20  first character 
11170 6f 66 20 74 68 65 20 73 75 62 73 74 72 69 6e 67  of the substring
11180 20 69 73 20 66 6f 75 6e 64 20 62 79 20 63 6f 75   is found by cou
11190 6e 74 69 6e 67 20 66 72 6f 6d 20 74 68 65 0a 20  nting from the. 
111a0 20 72 69 67 68 74 20 72 61 74 68 65 72 20 74 68   right rather th
111b0 61 6e 20 74 68 65 20 6c 65 66 74 2e 20 20 49 66  an the left.  If
111c0 20 3c 69 3e 58 3c 2f 69 3e 20 69 73 20 73 74 72   <i>X</i> is str
111d0 69 6e 67 0a 20 20 74 68 65 6e 20 63 68 61 72 61  ing.  then chara
111e0 63 74 65 72 73 20 69 6e 64 69 63 65 73 20 72 65  cters indices re
111f0 66 65 72 20 74 6f 20 61 63 74 75 61 6c 20 55 54  fer to actual UT
11200 46 2d 38 20 63 68 61 72 61 63 74 65 72 73 2e 20  F-8 characters. 
11210 20 49 66 0a 20 20 3c 69 3e 58 3c 2f 69 3e 20 69   If.  <i>X</i> i
11220 73 20 61 20 42 4c 4f 42 20 74 68 65 6e 20 74 68  s a BLOB then th
11230 65 20 69 6e 64 69 63 65 73 20 72 65 66 65 72 20  e indices refer 
11240 74 6f 20 62 79 74 65 73 2e 0a 7d 0a 0a 66 75 6e  to bytes..}..fun
11250 63 64 65 66 20 7b 74 6f 74 61 6c 5f 63 68 61 6e  cdef {total_chan
11260 67 65 73 28 29 7d 20 7b 7d 20 7b 0a 20 20 52 65  ges()} {} {.  Re
11270 74 75 72 6e 20 74 68 65 20 6e 75 6d 62 65 72 20  turn the number 
11280 6f 66 20 72 6f 77 20 63 68 61 6e 67 65 73 20 63  of row changes c
11290 61 75 73 65 64 20 62 79 20 49 4e 53 45 52 54 2c  aused by INSERT,
112a0 20 55 50 44 41 54 45 20 6f 72 20 44 45 4c 45 54   UPDATE or DELET
112b0 45 0a 20 20 73 74 61 74 65 6d 65 6e 74 73 20 73  E.  statements s
112c0 69 6e 63 65 20 74 68 65 20 63 75 72 72 65 6e 74  ince the current
112d0 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
112e0 74 69 6f 6e 20 77 61 73 20 6f 70 65 6e 65 64 2e  tion was opened.
112f0 0a 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e  .  This function
11300 20 69 73 20 61 20 77 72 61 70 70 65 72 20 61 72   is a wrapper ar
11310 6f 75 6e 64 20 74 68 65 20 5b 73 71 6c 69 74 65  ound the [sqlite
11320 33 5f 74 6f 74 61 6c 5f 63 68 61 6e 67 65 73 28  3_total_changes(
11330 29 5d 0a 20 20 43 2f 43 2b 2b 20 69 6e 74 65 72  )].  C/C++ inter
11340 66 61 63 65 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66  face..}..funcdef
11350 20 7b 74 72 69 6d 28 58 29 20 74 72 69 6d 28 58   {trim(X) trim(X
11360 2c 59 29 7d 20 7b 7d 20 7b 0a 20 20 52 65 74 75  ,Y)} {} {.  Retu
11370 72 6e 20 61 20 73 74 72 69 6e 67 20 66 6f 72 6d  rn a string form
11380 65 64 20 62 79 20 72 65 6d 6f 76 69 6e 67 20 61  ed by removing a
11390 6e 79 20 61 6e 64 20 61 6c 6c 0a 20 20 63 68 61  ny and all.  cha
113a0 72 61 63 74 65 72 73 20 74 68 61 74 20 61 70 70  racters that app
113b0 65 61 72 20 69 6e 20 3c 69 3e 59 3c 2f 69 3e 20  ear in <i>Y</i> 
113c0 66 72 6f 6d 20 62 6f 74 68 20 65 6e 64 73 20 6f  from both ends o
113d0 66 20 3c 69 3e 58 3c 2f 69 3e 2e 0a 20 20 49 66  f <i>X</i>..  If
113e0 20 74 68 65 20 3c 69 3e 59 3c 2f 69 3e 20 61 72   the <i>Y</i> ar
113f0 67 75 6d 65 6e 74 20 69 73 20 6f 6d 69 74 74 65  gument is omitte
11400 64 2c 20 73 70 61 63 65 73 20 61 72 65 20 72 65  d, spaces are re
11410 6d 6f 76 65 64 2e 0a 7d 0a 0a 66 75 6e 63 64 65  moved..}..funcde
11420 66 20 7b 74 79 70 65 6f 66 28 58 29 7d 20 7b 7d  f {typeof(X)} {}
11430 20 7b 0a 20 20 52 65 74 75 72 6e 20 74 68 65 20   {.  Return the 
11440 5b 64 61 74 61 74 79 70 65 5d 20 6f 66 20 74 68  [datatype] of th
11450 65 20 65 78 70 72 65 73 73 69 6f 6e 20 3c 69 3e  e expression <i>
11460 58 3c 2f 69 3e 2e 20 20 54 68 65 20 6f 6e 6c 79  X</i>.  The only
11470 20 0a 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65   .  return value
11480 73 20 61 72 65 20 22 6e 75 6c 6c 22 2c 20 22 69  s are "null", "i
11490 6e 74 65 67 65 72 22 2c 20 22 72 65 61 6c 22 2c  nteger", "real",
114a0 20 22 74 65 78 74 22 2c 20 61 6e 64 20 22 62 6c   "text", and "bl
114b0 6f 62 22 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20  ob"..}..funcdef 
114c0 7b 75 70 70 65 72 28 58 29 7d 20 7b 7d 20 7b 0a  {upper(X)} {} {.
114d0 20 20 52 65 74 75 72 6e 20 61 20 63 6f 70 79 20    Return a copy 
114e0 6f 66 20 69 6e 70 75 74 20 73 74 72 69 6e 67 20  of input string 
114f0 3c 69 3e 58 3c 2f 69 3e 20 63 6f 6e 76 65 72 74  <i>X</i> convert
11500 65 64 20 74 6f 20 61 6c 6c 0a 20 20 75 70 70 65  ed to all.  uppe
11510 72 2d 63 61 73 65 20 6c 65 74 74 65 72 73 2e 20  r-case letters. 
11520 20 54 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74   The implementat
11530 69 6f 6e 20 6f 66 20 74 68 69 73 20 66 75 6e 63  ion of this func
11540 74 69 6f 6e 20 75 73 65 73 20 74 68 65 20 43 20  tion uses the C 
11550 6c 69 62 72 61 72 79 0a 20 20 72 6f 75 74 69 6e  library.  routin
11560 65 20 3c 62 3e 74 6f 75 70 70 65 72 28 29 3c 2f  e <b>toupper()</
11570 62 3e 20 77 68 69 63 68 20 6d 65 61 6e 73 20 69  b> which means i
11580 74 20 6d 61 79 20 6e 6f 74 20 77 6f 72 6b 20 63  t may not work c
11590 6f 72 72 65 63 74 6c 79 20 6f 6e 20 0a 20 20 6e  orrectly on .  n
115a0 6f 6e 2d 41 53 43 49 49 20 55 54 46 2d 38 20 73  on-ASCII UTF-8 s
115b0 74 72 69 6e 67 73 2e 0a 7d 0a 0a 66 75 6e 63 64  trings..}..funcd
115c0 65 66 20 7b 7a 65 72 6f 62 6c 6f 62 28 4e 29 7d  ef {zeroblob(N)}
115d0 20 7b 7d 20 7b 0a 20 20 52 65 74 75 72 6e 20 61   {} {.  Return a
115e0 20 42 4c 4f 42 20 63 6f 6e 73 69 73 74 69 6e 67   BLOB consisting
115f0 20 6f 66 20 4e 20 62 79 74 65 73 20 6f 66 20 30   of N bytes of 0
11600 78 30 30 2e 20 20 53 51 4c 69 74 65 0a 20 20 6d  x00.  SQLite.  m
11610 61 6e 61 67 65 73 20 74 68 65 73 65 20 7a 65 72  anages these zer
11620 6f 62 6c 6f 62 73 20 76 65 72 79 20 65 66 66 69  oblobs very effi
11630 63 69 65 6e 74 6c 79 2e 20 20 5a 65 72 6f 62 6c  ciently.  Zerobl
11640 6f 62 73 20 63 61 6e 20 62 65 20 75 73 65 64 20  obs can be used 
11650 74 6f 0a 20 20 72 65 73 65 72 76 65 20 73 70 61  to.  reserve spa
11660 63 65 20 66 6f 72 20 61 20 42 4c 4f 42 20 74 68  ce for a BLOB th
11670 61 74 20 69 73 20 6c 61 74 65 72 20 77 72 69 74  at is later writ
11680 74 65 6e 20 75 73 69 6e 67 20 0a 20 20 5b 73 71  ten using .  [sq
11690 6c 69 74 65 33 5f 62 6c 6f 62 5f 6f 70 65 6e 28  lite3_blob_open(
116a0 29 20 7c 20 69 6e 63 72 65 6d 65 6e 74 61 6c 20  ) | incremental 
116b0 42 4c 4f 42 20 49 2f 4f 5d 2e 0a 20 20 54 68 69  BLOB I/O]..  Thi
116c0 73 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 20 69  s SQL function i
116d0 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 75 73  s implemented us
116e0 69 6e 67 20 74 68 65 20 5b 73 71 6c 69 74 65 33  ing the [sqlite3
116f0 5f 72 65 73 75 6c 74 5f 7a 65 72 6f 62 6c 6f 62  _result_zeroblob
11700 28 29 5d 0a 20 20 72 6f 75 74 69 6e 65 20 66 72  ()].  routine fr
11710 6f 6d 20 74 68 65 20 43 2f 43 2b 2b 20 69 6e 74  om the C/C++ int
11720 65 72 66 61 63 65 2e 0a 7d 0a 3c 2f 74 63 6c 3e  erface..}.</tcl>
11730 0a 3c 2f 74 61 62 6c 65 3e 0a 0a 3c 74 63 6c 3e  .</table>..<tcl>
11740 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  .###############
11750 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
11760 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
11770 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
11780 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a  ###############.
11790 53 65 63 74 69 6f 6e 20 7b 44 61 74 65 20 41 6e  Section {Date An
117a0 64 20 54 69 6d 65 20 46 75 6e 63 74 69 6f 6e 73  d Time Functions
117b0 7d 20 64 61 74 65 66 75 6e 63 20 7b 64 61 74 65  } datefunc {date
117c0 66 75 6e 63 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70  func}.</tcl>..<p
117d0 3e 0a 53 51 4c 69 74 65 20 73 75 70 70 6f 72 74  >.SQLite support
117e0 73 20 66 69 76 65 20 64 61 74 65 20 61 6e 64 20  s five date and 
117f0 74 69 6d 65 20 66 75 6e 63 74 69 6f 6e 73 20 61  time functions a
11800 73 20 66 6f 6c 6c 6f 77 73 3a 0a 3c 2f 70 3e 0a  s follows:.</p>.
11810 0a 3c 70 3e 0a 3c 6f 6c 3e 0a 3c 6c 69 3e 20 3c  .<p>.<ol>.<li> <
11820 62 3e 64 61 74 65 28 3c 2f 62 3e 3c 69 3e 74 69  b>date(</b><i>ti
11830 6d 65 73 74 72 69 6e 67 2c 20 6d 6f 64 69 66 69  mestring, modifi
11840 65 72 2c 20 6d 6f 64 69 66 69 65 72 2c 20 2e 2e  er, modifier, ..
11850 2e 3c 2f 69 3e 3c 62 3e 29 3c 2f 62 3e 20 3c 2f  .</i><b>)</b> </
11860 6c 69 3e 0a 3c 6c 69 3e 20 3c 62 3e 74 69 6d 65  li>.<li> <b>time
11870 28 3c 2f 62 3e 3c 69 3e 74 69 6d 65 73 74 72 69  (</b><i>timestri
11880 6e 67 2c 20 6d 6f 64 69 66 69 65 72 2c 20 6d 6f  ng, modifier, mo
11890 64 69 66 69 65 72 2c 20 2e 2e 2e 3c 2f 69 3e 3c  difier, ...</i><
118a0 62 3e 29 3c 2f 62 3e 20 3c 2f 6c 69 3e 0a 3c 6c  b>)</b> </li>.<l
118b0 69 3e 20 3c 62 3e 64 61 74 65 74 69 6d 65 28 3c  i> <b>datetime(<
118c0 2f 62 3e 3c 69 3e 74 69 6d 65 73 74 72 69 6e 67  /b><i>timestring
118d0 2c 20 6d 6f 64 69 66 69 65 72 2c 20 6d 6f 64 69  , modifier, modi
118e0 66 69 65 72 2c 20 2e 2e 2e 3c 2f 69 3e 3c 62 3e  fier, ...</i><b>
118f0 29 3c 2f 62 3e 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e  )</b> </li>.<li>
11900 20 3c 62 3e 6a 75 6c 69 61 6e 64 61 79 28 3c 2f   <b>julianday(</
11910 62 3e 3c 69 3e 74 69 6d 65 73 74 72 69 6e 67 2c  b><i>timestring,
11920 20 6d 6f 64 69 66 69 65 72 2c 20 6d 6f 64 69 66   modifier, modif
11930 69 65 72 2c 20 2e 2e 2e 3c 2f 69 3e 3c 62 3e 29  ier, ...</i><b>)
11940 3c 2f 62 3e 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20  </b> </li>.<li> 
11950 3c 62 3e 73 74 72 66 74 69 6d 65 28 3c 2f 62 3e  <b>strftime(</b>
11960 3c 69 3e 66 6f 72 6d 61 74 2c 20 74 69 6d 65 73  <i>format, times
11970 74 72 69 6e 67 2c 20 6d 6f 64 69 66 69 65 72 2c  tring, modifier,
11980 20 6d 6f 64 69 66 69 65 72 2c 20 2e 2e 2e 3c 2f   modifier, ...</
11990 69 3e 3c 62 3e 29 3c 2f 62 3e 20 3c 2f 6c 69 3e  i><b>)</b> </li>
119a0 0a 3c 2f 6f 6c 3e 0a 0a 3c 70 3e 0a 41 6c 6c 20  .</ol>..<p>.All 
119b0 66 69 76 65 20 66 75 6e 63 74 69 6f 6e 73 20 74  five functions t
119c0 61 6b 65 20 61 20 74 69 6d 65 20 73 74 72 69 6e  ake a time strin
119d0 67 20 61 73 20 61 6e 20 61 72 67 75 6d 65 6e 74  g as an argument
119e0 2e 20 54 68 65 20 74 69 6d 65 20 73 74 72 69 6e  . The time strin
119f0 67 0a 69 73 20 66 6f 6c 6c 6f 77 65 64 20 62 79  g.is followed by
11a00 20 7a 65 72 6f 20 6f 72 20 6d 6f 72 65 20 6d 6f   zero or more mo
11a10 64 69 66 69 65 72 73 2e 20 0a 54 68 65 20 73 74  difiers. .The st
11a20 72 66 74 69 6d 65 28 29 20 66 75 6e 63 74 69 6f  rftime() functio
11a30 6e 20 61 6c 73 6f 20 74 61 6b 65 73 20 61 20 66  n also takes a f
11a40 6f 72 6d 61 74 20 73 74 72 69 6e 67 20 61 73 20  ormat string as 
11a50 69 74 73 20 66 69 72 73 74 20 61 72 67 75 6d 65  its first argume
11a60 6e 74 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 54 68  nt..</p>..<p>.Th
11a70 65 20 64 61 74 65 28 29 20 66 75 6e 63 74 69 6f  e date() functio
11a80 6e 20 72 65 74 75 72 6e 73 20 74 68 65 20 64 61  n returns the da
11a90 74 65 20 69 6e 20 74 68 69 73 20 66 6f 72 6d 61  te in this forma
11aa0 74 3a 20 59 59 59 59 2d 4d 4d 2d 44 44 2e 20 0a  t: YYYY-MM-DD. .
11ab0 54 68 65 20 74 69 6d 65 28 29 20 66 75 6e 63 74  The time() funct
11ac0 69 6f 6e 20 72 65 74 75 72 6e 73 20 74 68 65 20  ion returns the 
11ad0 74 69 6d 65 20 61 73 20 48 48 3a 4d 4d 3a 53 53  time as HH:MM:SS
11ae0 2e 20 0a 54 68 65 20 64 61 74 65 74 69 6d 65 28  . .The datetime(
11af0 29 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72  ) function retur
11b00 6e 73 20 22 59 59 59 59 2d 4d 4d 2d 44 44 20 48  ns "YYYY-MM-DD H
11b10 48 3a 4d 4d 3a 53 53 22 2e 20 0a 54 68 65 20 6a  H:MM:SS". .The j
11b20 75 6c 69 61 6e 64 61 79 28 29 20 66 75 6e 63 74  ulianday() funct
11b30 69 6f 6e 20 72 65 74 75 72 6e 73 20 74 68 65 20  ion returns the 
11b40 0a 3c 61 20 68 72 65 66 3d 22 68 74 74 70 3a 2f  .<a href="http:/
11b50 2f 65 6e 2e 77 69 6b 69 70 65 64 69 61 2e 6f 72  /en.wikipedia.or
11b60 67 2f 77 69 6b 69 2f 4a 75 6c 69 61 6e 5f 64 61  g/wiki/Julian_da
11b70 79 22 3e 4a 75 6c 69 61 6e 20 64 61 79 3c 2f 61  y">Julian day</a
11b80 3e 20 2d 20 0a 6e 75 6d 62 65 72 20 6f 66 20 64  > - .number of d
11b90 61 79 73 20 73 69 6e 63 65 20 6e 6f 6f 6e 20 69  ays since noon i
11ba0 6e 20 47 72 65 65 6e 77 69 63 68 20 6f 6e 20 4e  n Greenwich on N
11bb0 6f 76 65 6d 62 65 72 20 32 34 2c 20 34 37 31 34  ovember 24, 4714
11bc0 20 42 2e 43 2e 20 0a 28 3c 61 20 68 72 65 66 3d   B.C. .(<a href=
11bd0 22 68 74 74 70 3a 2f 2f 65 6e 2e 77 69 6b 69 70  "http://en.wikip
11be0 65 64 69 61 2e 6f 72 67 2f 77 69 6b 69 2f 50 72  edia.org/wiki/Pr
11bf0 6f 6c 65 70 74 69 63 5f 47 72 65 67 6f 72 69 61  oleptic_Gregoria
11c00 6e 5f 63 61 6c 65 6e 64 61 72 22 3e 50 72 6f 6c  n_calendar">Prol
11c10 65 70 74 69 63 0a 47 72 65 67 6f 72 69 61 6e 20  eptic.Gregorian 
11c20 63 61 6c 65 6e 64 61 72 3c 2f 61 3e 29 2e 20 0a  calendar</a>). .
11c30 54 68 65 20 73 74 72 66 74 69 6d 65 28 29 20 72  The strftime() r
11c40 6f 75 74 69 6e 65 20 72 65 74 75 72 6e 73 20 74  outine returns t
11c50 68 65 20 64 61 74 65 20 66 6f 72 6d 61 74 74 65  he date formatte
11c60 64 20 61 63 63 6f 72 64 69 6e 67 20 74 6f 20 0a  d according to .
11c70 74 68 65 20 66 6f 72 6d 61 74 20 73 74 72 69 6e  the format strin
11c80 67 20 73 70 65 63 69 66 69 65 64 20 61 73 20 74  g specified as t
11c90 68 65 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e  he first argumen
11ca0 74 2e 0a 54 68 65 20 66 6f 72 6d 61 74 20 73 74  t..The format st
11cb0 72 69 6e 67 20 73 75 70 70 6f 72 74 73 20 74 68  ring supports th
11cc0 65 20 6d 6f 73 74 20 63 6f 6d 6d 6f 6e 20 73 75  e most common su
11cd0 62 73 74 69 74 75 74 69 6f 6e 73 20 66 6f 75 6e  bstitutions foun
11ce0 64 20 69 6e 20 74 68 65 20 0a 3c 61 20 68 72 65  d in the .<a hre
11cf0 66 3d 22 68 74 74 70 3a 2f 2f 6f 70 65 6e 67 72  f="http://opengr
11d00 6f 75 70 2e 6f 72 67 2f 6f 6e 6c 69 6e 65 70 75  oup.org/onlinepu
11d10 62 73 2f 30 30 37 39 30 38 37 39 39 2f 78 73 68  bs/007908799/xsh
11d20 2f 73 74 72 66 74 69 6d 65 2e 68 74 6d 6c 22 3e  /strftime.html">
11d30 0a 73 74 72 66 74 69 6d 65 28 29 20 66 75 6e 63  .strftime() func
11d40 74 69 6f 6e 3c 2f 61 3e 20 66 72 6f 6d 20 0a 74  tion</a> from .t
11d50 68 65 20 73 74 61 6e 64 61 72 64 20 43 20 6c 69  he standard C li
11d60 62 72 61 72 79 20 70 6c 75 73 20 74 77 6f 20 6e  brary plus two n
11d70 65 77 20 73 75 62 73 74 69 74 75 74 69 6f 6e 73  ew substitutions
11d80 2c 20 25 66 20 61 6e 64 20 25 4a 2e 0a 54 68 65  , %f and %J..The
11d90 20 66 6f 6c 6c 6f 77 69 6e 67 20 69 73 20 61 20   following is a 
11da0 63 6f 6d 70 6c 65 74 65 20 6c 69 73 74 20 6f 66  complete list of
11db0 20 76 61 6c 69 64 20 73 74 72 66 74 69 6d 65 28   valid strftime(
11dc0 29 20 73 75 62 73 74 69 74 75 74 69 6f 6e 73 3a  ) substitutions:
11dd0 0a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f  .</p>..<blockquo
11de0 74 65 3e 0a 3c 74 61 62 6c 65 20 62 6f 72 64 65  te>.<table borde
11df0 72 3d 22 30 22 20 63 65 6c 6c 70 61 64 64 69 6e  r="0" cellpaddin
11e00 67 3d 22 30 22 20 63 65 6c 6c 73 70 61 63 69 6e  g="0" cellspacin
11e10 67 3d 22 30 22 3e 0a 3c 74 72 3e 3c 74 64 3e 3c  g="0">.<tr><td><
11e20 74 64 20 77 69 64 74 68 3d 22 31 30 22 3e 3c 74  td width="10"><t
11e30 64 3e 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 3c 74 64  d></tr>..<tr><td
11e40 3e 20 25 64 20 3c 74 64 3e 3c 74 64 3e 20 64 61  > %d <td><td> da
11e50 79 20 6f 66 20 6d 6f 6e 74 68 3a 20 30 30 0a 3c  y of month: 00.<
11e60 74 72 3e 3c 74 64 3e 20 25 66 20 3c 74 64 3e 3c  tr><td> %f <td><
11e70 74 64 3e 20 66 72 61 63 74 69 6f 6e 61 6c 20 73  td> fractional s
11e80 65 63 6f 6e 64 73 3a 20 53 53 2e 53 53 53 0a 3c  econds: SS.SSS.<
11e90 74 72 3e 3c 74 64 3e 20 25 48 20 3c 74 64 3e 3c  tr><td> %H <td><
11ea0 74 64 3e 20 68 6f 75 72 3a 20 30 30 2d 32 34 20  td> hour: 00-24 
11eb0 0a 3c 74 72 3e 3c 74 64 3e 20 25 6a 20 3c 74 64  .<tr><td> %j <td
11ec0 3e 3c 74 64 3e 20 64 61 79 20 6f 66 20 79 65 61  ><td> day of yea
11ed0 72 3a 20 30 30 31 2d 33 36 36 0a 3c 74 72 3e 3c  r: 001-366.<tr><
11ee0 74 64 3e 20 25 4a 20 3c 74 64 3e 3c 74 64 3e 20  td> %J <td><td> 
11ef0 4a 75 6c 69 61 6e 20 64 61 79 20 6e 75 6d 62 65  Julian day numbe
11f00 72 0a 3c 74 72 3e 3c 74 64 3e 20 25 6d 20 3c 74  r.<tr><td> %m <t
11f10 64 3e 3c 74 64 3e 20 6d 6f 6e 74 68 3a 20 30 31  d><td> month: 01
11f20 2d 31 32 0a 3c 74 72 3e 3c 74 64 3e 20 25 4d 20  -12.<tr><td> %M 
11f30 3c 74 64 3e 3c 74 64 3e 20 6d 69 6e 75 74 65 3a  <td><td> minute:
11f40 20 30 30 2d 35 39 0a 3c 74 72 3e 3c 74 64 3e 20   00-59.<tr><td> 
11f50 25 73 20 3c 74 64 3e 3c 74 64 3e 20 73 65 63 6f  %s <td><td> seco
11f60 6e 64 73 20 73 69 6e 63 65 20 31 39 37 30 2d 30  nds since 1970-0
11f70 31 2d 30 31 0a 3c 74 72 3e 3c 74 64 3e 20 25 53  1-01.<tr><td> %S
11f80 20 3c 74 64 3e 3c 74 64 3e 20 73 65 63 6f 6e 64   <td><td> second
11f90 73 3a 20 30 30 2d 35 39 0a 3c 74 72 3e 3c 74 64  s: 00-59.<tr><td
11fa0 3e 20 25 77 20 3c 74 64 3e 3c 74 64 3e 20 64 61  > %w <td><td> da
11fb0 79 20 6f 66 20 77 65 65 6b 20 30 2d 36 20 77 69  y of week 0-6 wi
11fc0 74 68 20 73 75 6e 64 61 79 3d 3d 30 0a 3c 74 72  th sunday==0.<tr
11fd0 3e 3c 74 64 3e 20 25 57 20 3c 74 64 3e 3c 74 64  ><td> %W <td><td
11fe0 3e 20 77 65 65 6b 20 6f 66 20 79 65 61 72 3a 20  > week of year: 
11ff0 30 30 2d 35 33 0a 3c 74 72 3e 3c 74 64 3e 20 25  00-53.<tr><td> %
12000 59 20 3c 74 64 3e 3c 74 64 3e 20 79 65 61 72 3a  Y <td><td> year:
12010 20 30 30 30 30 2d 39 39 39 39 0a 3c 74 72 3e 3c   0000-9999.<tr><
12020 74 64 3e 20 25 25 20 3c 74 64 3e 3c 74 64 3e 20  td> %% <td><td> 
12030 25 0a 3c 2f 74 61 62 6c 65 3e 0a 3c 2f 62 6c 6f  %.</table>.</blo
12040 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70 3e 0a 4e 6f  ckquote>..<p>.No
12050 74 69 63 65 20 74 68 61 74 20 61 6c 6c 20 6f 74  tice that all ot
12060 68 65 72 20 64 61 74 65 20 61 6e 64 20 74 69 6d  her date and tim
12070 65 20 66 75 6e 63 74 69 6f 6e 73 20 63 61 6e 20  e functions can 
12080 62 65 20 65 78 70 72 65 73 73 65 64 0a 69 6e 20  be expressed.in 
12090 74 65 72 6d 73 20 6f 66 20 73 74 72 66 74 69 6d  terms of strftim
120a0 65 28 29 3a 0a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63  e():.</p>..<bloc
120b0 6b 71 75 6f 74 65 3e 0a 3c 74 61 62 6c 65 20 62  kquote>.<table b
120c0 6f 72 64 65 72 3d 22 30 22 20 63 65 6c 6c 70 61  order="0" cellpa
120d0 64 64 69 6e 67 3d 22 30 22 20 63 65 6c 6c 73 70  dding="0" cellsp
120e0 61 63 69 6e 67 3d 22 30 22 3e 0a 3c 74 72 3e 3c  acing="0">.<tr><
120f0 74 64 3e 3c 62 3e 46 75 6e 63 74 69 6f 6e 3c 2f  td><b>Function</
12100 62 3e 3c 74 64 20 77 69 64 74 68 3d 22 33 30 22  b><td width="30"
12110 3e 3c 74 64 3e 3c 62 3e 45 71 75 69 76 61 6c 65  ><td><b>Equivale
12120 6e 74 20 73 74 72 66 74 69 6d 65 28 29 3c 2f 62  nt strftime()</b
12130 3e 0a 3c 74 72 3e 3c 74 64 3e 20 20 20 64 61 74  >.<tr><td>   dat
12140 65 28 2e 2e 2e 29 20 20 20 20 20 20 3c 74 64 3e  e(...)      <td>
12150 3c 74 64 3e 20 20 73 74 72 66 74 69 6d 65 28 27  <td>  strftime('
12160 25 59 2d 25 6d 2d 25 64 27 2c 20 2e 2e 2e 29 0a  %Y-%m-%d', ...).
12170 3c 74 72 3e 3c 74 64 3e 20 20 20 74 69 6d 65 28  <tr><td>   time(
12180 2e 2e 2e 29 20 20 20 20 20 20 3c 74 64 3e 3c 74  ...)      <td><t
12190 64 3e 20 20 73 74 72 66 74 69 6d 65 28 27 25 48  d>  strftime('%H
121a0 3a 25 4d 3a 25 53 27 2c 20 2e 2e 2e 29 0a 3c 74  :%M:%S', ...).<t
121b0 72 3e 3c 74 64 3e 20 20 20 64 61 74 65 74 69 6d  r><td>   datetim
121c0 65 28 2e 2e 2e 29 20 20 3c 74 64 3e 3c 74 64 3e  e(...)  <td><td>
121d0 20 20 73 74 72 66 74 69 6d 65 28 27 25 59 2d 25    strftime('%Y-%
121e0 6d 2d 25 64 20 25 48 3a 25 4d 3a 25 53 27 2c 20  m-%d %H:%M:%S', 
121f0 2e 2e 2e 29 0a 3c 74 72 3e 3c 74 64 3e 20 20 20  ...).<tr><td>   
12200 6a 75 6c 69 61 6e 64 61 79 28 2e 2e 2e 29 20 3c  julianday(...) <
12210 74 64 3e 3c 74 64 3e 20 20 73 74 72 66 74 69 6d  td><td>  strftim
12220 65 28 27 25 4a 27 2c 20 2e 2e 2e 29 0a 3c 2f 74  e('%J', ...).</t
12230 61 62 6c 65 3e 0a 3c 2f 62 6c 6f 63 6b 71 75 6f  able>.</blockquo
12240 74 65 3e 0a 0a 3c 70 3e 0a 54 68 65 20 6f 6e 6c  te>..<p>.The onl
12250 79 20 72 65 61 73 6f 6e 73 20 66 6f 72 20 70 72  y reasons for pr
12260 6f 76 69 64 69 6e 67 20 66 75 6e 63 74 69 6f 6e  oviding function
12270 73 20 6f 74 68 65 72 20 74 68 61 6e 20 73 74 72  s other than str
12280 66 74 69 6d 65 28 29 20 69 73 0a 66 6f 72 20 63  ftime() is.for c
12290 6f 6e 76 65 6e 69 65 6e 63 65 20 61 6e 64 20 66  onvenience and f
122a0 6f 72 20 65 66 66 69 63 69 65 6e 63 79 2e 0a 3c  or efficiency..<
122b0 2f 70 3e 0a 0a 3c 68 33 3e 54 69 6d 65 20 53 74  /p>..<h3>Time St
122c0 72 69 6e 67 73 3c 2f 68 33 3e 0a 0a 3c 70 3e 41  rings</h3>..<p>A
122d0 20 74 69 6d 65 20 73 74 72 69 6e 67 20 63 61 6e   time string can
122e0 20 62 65 20 69 6e 20 61 6e 79 20 6f 66 20 74 68   be in any of th
122f0 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 66 6f 72 6d  e following form
12300 61 74 73 3a 3c 2f 70 3e 0a 0a 3c 6f 6c 3e 0a 3c  ats:</p>..<ol>.<
12310 6c 69 3e 20 3c 69 3e 59 59 59 59 2d 4d 4d 2d 44  li> <i>YYYY-MM-D
12320 44 3c 2f 69 3e 0a 3c 6c 69 3e 20 3c 69 3e 59 59  D</i>.<li> <i>YY
12330 59 59 2d 4d 4d 2d 44 44 20 48 48 3a 4d 4d 3c 2f  YY-MM-DD HH:MM</
12340 69 3e 0a 3c 6c 69 3e 20 3c 69 3e 59 59 59 59 2d  i>.<li> <i>YYYY-
12350 4d 4d 2d 44 44 20 48 48 3a 4d 4d 3a 53 53 3c 2f  MM-DD HH:MM:SS</
12360 69 3e 0a 3c 6c 69 3e 20 3c 69 3e 59 59 59 59 2d  i>.<li> <i>YYYY-
12370 4d 4d 2d 44 44 20 48 48 3a 4d 4d 3a 53 53 2e 53  MM-DD HH:MM:SS.S
12380 53 53 3c 2f 69 3e 0a 3c 6c 69 3e 20 3c 69 3e 59  SS</i>.<li> <i>Y
12390 59 59 59 2d 4d 4d 2d 44 44 3c 2f 69 3e 3c 62 3e  YYY-MM-DD</i><b>
123a0 54 3c 2f 62 3e 3c 69 3e 48 48 3a 4d 4d 3c 2f 69  T</b><i>HH:MM</i
123b0 3e 0a 3c 6c 69 3e 20 3c 69 3e 59 59 59 59 2d 4d  >.<li> <i>YYYY-M
123c0 4d 2d 44 44 3c 2f 69 3e 3c 62 3e 54 3c 2f 62 3e  M-DD</i><b>T</b>
123d0 3c 69 3e 48 48 3a 4d 4d 3a 53 53 3c 2f 69 3e 0a  <i>HH:MM:SS</i>.
123e0 3c 6c 69 3e 20 3c 69 3e 59 59 59 59 2d 4d 4d 2d  <li> <i>YYYY-MM-
123f0 44 44 3c 2f 69 3e 3c 62 3e 54 3c 2f 62 3e 3c 69  DD</i><b>T</b><i
12400 3e 48 48 3a 4d 4d 3a 53 53 2e 53 53 53 3c 2f 69  >HH:MM:SS.SSS</i
12410 3e 0a 3c 6c 69 3e 20 3c 69 3e 48 48 3a 4d 4d 3c  >.<li> <i>HH:MM<
12420 2f 69 3e 0a 3c 6c 69 3e 20 3c 69 3e 48 48 3a 4d  /i>.<li> <i>HH:M
12430 4d 3a 53 53 3c 2f 69 3e 0a 3c 6c 69 3e 20 3c 69  M:SS</i>.<li> <i
12440 3e 48 48 3a 4d 4d 3a 53 53 2e 53 53 53 3c 2f 69  >HH:MM:SS.SSS</i
12450 3e 0a 3c 6c 69 3e 20 3c 62 3e 6e 6f 77 3c 2f 62  >.<li> <b>now</b
12460 3e 0a 3c 6c 69 3e 20 3c 69 3e 44 44 44 44 44 44  >.<li> <i>DDDDDD
12470 44 44 44 44 3c 2f 69 3e 0a 3c 2f 6f 6c 3e 0a 0a  DDDD</i>.</ol>..
12480 3c 70 3e 0a 49 6e 20 66 6f 72 6d 61 74 73 20 35  <p>.In formats 5
12490 20 74 68 72 6f 75 67 68 20 37 2c 20 74 68 65 20   through 7, the 
124a0 22 54 22 20 69 73 20 61 20 6c 69 74 65 72 61 6c  "T" is a literal
124b0 20 63 68 61 72 61 63 74 65 72 20 73 65 70 61 72   character separ
124c0 61 74 69 6e 67 20 0a 74 68 65 20 64 61 74 65 20  ating .the date 
124d0 61 6e 64 20 74 68 65 20 74 69 6d 65 2c 20 61 73  and the time, as
124e0 20 72 65 71 75 69 72 65 64 20 62 79 20 0a 3c 61   required by .<a
124f0 20 68 72 65 66 3d 22 68 74 74 70 3a 2f 2f 77 77   href="http://ww
12500 77 2e 77 33 63 2e 6f 72 67 2f 54 52 2f 4e 4f 54  w.w3c.org/TR/NOT
12510 45 2d 64 61 74 65 74 69 6d 65 22 3e 49 53 4f 2d  E-datetime">ISO-
12520 38 36 30 31 3c 2f 61 3e 2e 20 0a 46 6f 72 6d 61  8601</a>. .Forma
12530 74 73 20 38 20 74 68 72 6f 75 67 68 20 31 30 20  ts 8 through 10 
12540 74 68 61 74 20 73 70 65 63 69 66 79 20 6f 6e 6c  that specify onl
12550 79 20 61 20 74 69 6d 65 20 61 73 73 75 6d 65 20  y a time assume 
12560 61 20 64 61 74 65 20 6f 66 20 0a 32 30 30 30 2d  a date of .2000-
12570 30 31 2d 30 31 2e 20 46 6f 72 6d 61 74 20 31 31  01-01. Format 11
12580 2c 20 74 68 65 20 73 74 72 69 6e 67 20 27 6e 6f  , the string 'no
12590 77 27 2c 20 69 73 20 63 6f 6e 76 65 72 74 65 64  w', is converted
125a0 20 69 6e 74 6f 20 74 68 65 20 0a 63 75 72 72 65   into the .curre
125b0 6e 74 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65  nt date and time
125c0 20 61 73 20 6f 62 74 61 69 6e 65 64 20 66 72 6f   as obtained fro
125d0 6d 20 74 68 65 20 78 43 75 72 72 65 6e 74 54 69  m the xCurrentTi
125e0 6d 65 20 6d 65 74 68 6f 64 0a 6f 66 20 74 68 65  me method.of the
125f0 20 5b 73 71 6c 69 74 65 33 5f 76 66 73 5d 20 6f   [sqlite3_vfs] o
12600 62 6a 65 63 74 20 69 6e 20 75 73 65 2e 0a 3c 61  bject in use..<a
12610 20 68 72 65 66 3d 22 68 74 74 70 3a 2f 2f 65 6e   href="http://en
12620 2e 77 69 6b 69 70 65 64 69 61 2e 6f 72 67 2f 77  .wikipedia.org/w
12630 69 6b 69 2f 43 6f 6f 72 64 69 6e 61 74 65 64 5f  iki/Coordinated_
12640 55 6e 69 76 65 72 73 61 6c 5f 54 69 6d 65 22 3e  Universal_Time">
12650 0a 55 6e 69 76 65 72 73 61 6c 20 43 6f 6f 72 64  .Universal Coord
12660 69 6e 61 74 65 64 20 54 69 6d 65 20 28 55 54 43  inated Time (UTC
12670 29 3c 2f 61 3e 20 69 73 20 75 73 65 64 2e 20 0a  )</a> is used. .
12680 46 6f 72 6d 61 74 20 31 32 20 69 73 20 74 68 65  Format 12 is the
12690 20 0a 3c 61 20 68 72 65 66 3d 22 68 74 74 70 3a   .<a href="http:
126a0 2f 2f 65 6e 2e 77 69 6b 69 70 65 64 69 61 2e 6f  //en.wikipedia.o
126b0 72 67 2f 77 69 6b 69 2f 4a 75 6c 69 61 6e 5f 64  rg/wiki/Julian_d
126c0 61 79 22 3e 4a 75 6c 69 61 6e 20 64 61 79 20 6e  ay">Julian day n
126d0 75 6d 62 65 72 3c 2f 61 3e 0a 65 78 70 72 65 73  umber</a>.expres
126e0 73 65 64 20 61 73 20 61 20 66 6c 6f 61 74 69 6e  sed as a floatin
126f0 67 20 70 6f 69 6e 74 20 76 61 6c 75 65 2e 0a 3c  g point value..<
12700 2f 70 3e 0a 0a 3c 68 33 3e 4d 6f 64 69 66 69 65  /p>..<h3>Modifie
12710 72 73 3c 2f 68 33 3e 0a 0a 3c 70 3e 54 68 65 20  rs</h3>..<p>The 
12720 74 69 6d 65 20 73 74 72 69 6e 67 20 63 61 6e 20  time string can 
12730 62 65 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 7a  be followed by z
12740 65 72 6f 20 6f 72 20 6d 6f 72 65 20 6d 6f 64 69  ero or more modi
12750 66 69 65 72 73 20 74 68 61 74 20 0a 61 6c 74 65  fiers that .alte
12760 72 20 74 68 65 20 64 61 74 65 20 61 6e 64 20 74  r the date and t
12770 69 6d 65 20 73 74 72 69 6e 67 2e 20 20 45 61 63  ime string.  Eac
12780 68 20 6d 6f 64 69 66 69 65 72 0a 69 73 20 61 20  h modifier.is a 
12790 74 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 20 74  transformation t
127a0 68 61 74 20 69 73 20 61 70 70 6c 69 65 64 20 74  hat is applied t
127b0 6f 20 74 68 65 20 74 69 6d 65 20 73 74 72 69 6e  o the time strin
127c0 67 20 74 6f 20 69 74 73 20 6c 65 66 74 2e 0a 4d  g to its left..M
127d0 6f 64 69 66 69 65 72 73 20 61 72 65 20 61 70 70  odifiers are app
127e0 6c 69 65 64 20 66 72 6f 6d 20 6c 65 66 74 20 74  lied from left t
127f0 6f 20 72 69 67 68 74 3b 20 6f 72 64 65 72 20 69  o right; order i
12800 73 20 69 6d 70 6f 72 74 61 6e 74 2e 0a 54 68 65  s important..The
12810 20 61 76 61 69 6c 61 62 6c 65 20 6d 6f 64 69 66   available modif
12820 69 65 72 73 20 61 72 65 20 61 73 20 66 6f 6c 6c  iers are as foll
12830 6f 77 73 2e 3c 2f 70 3e 0a 0a 3c 6f 6c 3e 0a 3c  ows.</p>..<ol>.<
12840 6c 69 3e 20 4e 4e 4e 20 64 61 79 73 0a 3c 6c 69  li> NNN days.<li
12850 3e 20 4e 4e 4e 20 68 6f 75 72 73 0a 3c 6c 69 3e  > NNN hours.<li>
12860 20 4e 4e 4e 20 6d 69 6e 75 74 65 73 0a 3c 6c 69   NNN minutes.<li
12870 3e 20 4e 4e 4e 2e 4e 4e 4e 4e 20 73 65 63 6f 6e  > NNN.NNNN secon
12880 64 73 0a 3c 6c 69 3e 20 4e 4e 4e 20 6d 6f 6e 74  ds.<li> NNN mont
12890 68 73 0a 3c 6c 69 3e 20 4e 4e 4e 20 79 65 61 72  hs.<li> NNN year
128a0 73 0a 3c 6c 69 3e 20 73 74 61 72 74 20 6f 66 20  s.<li> start of 
128b0 6d 6f 6e 74 68 0a 3c 6c 69 3e 20 73 74 61 72 74  month.<li> start
128c0 20 6f 66 20 79 65 61 72 0a 3c 6c 69 3e 20 73 74   of year.<li> st
128d0 61 72 74 20 6f 66 20 64 61 79 0a 3c 6c 69 3e 20  art of day.<li> 
128e0 77 65 65 6b 64 61 79 20 4e 0a 3c 6c 69 3e 20 75  weekday N.<li> u
128f0 6e 69 78 65 70 6f 63 68 0a 3c 6c 69 3e 20 6c 6f  nixepoch.<li> lo
12900 63 61 6c 74 69 6d 65 0a 3c 6c 69 3e 20 75 74 63  caltime.<li> utc
12910 20 0a 3c 2f 6f 6c 3e 0a 0a 3c 70 3e 54 68 65 20   .</ol>..<p>The 
12920 66 69 72 73 74 20 73 69 78 20 6d 6f 64 69 66 69  first six modifi
12930 65 72 73 20 28 31 20 74 68 72 6f 75 67 68 20 36  ers (1 through 6
12940 29 20 0a 73 69 6d 70 6c 79 20 61 64 64 20 74 68  ) .simply add th
12950 65 20 73 70 65 63 69 66 69 65 64 20 61 6d 6f 75  e specified amou
12960 6e 74 20 6f 66 20 74 69 6d 65 20 74 6f 20 74 68  nt of time to th
12970 65 20 64 61 74 65 20 0a 73 70 65 63 69 66 69 65  e date .specifie
12980 64 20 62 79 20 74 68 65 20 70 72 65 63 65 64 69  d by the precedi
12990 6e 67 20 74 69 6d 65 73 74 72 69 6e 67 2e 0a 4e  ng timestring..N
129a0 6f 74 65 20 74 68 61 74 20 22 26 70 6c 75 73 6d  ote that "&plusm
129b0 6e 3b 4e 4e 4e 20 6d 6f 6e 74 68 73 22 20 77 6f  n;NNN months" wo
129c0 72 6b 73 20 62 79 20 72 65 6e 64 65 72 69 6e 67  rks by rendering
129d0 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 64 61   the original da
129e0 74 65 20 69 6e 74 6f 0a 74 68 65 20 59 59 59 59  te into.the YYYY
129f0 2d 4d 4d 2d 44 44 20 66 6f 72 6d 61 74 2c 20 61  -MM-DD format, a
12a00 64 64 69 6e 67 20 74 68 65 20 26 70 6c 75 73 6d  dding the &plusm
12a10 6e 3b 4e 4e 4e 20 74 6f 20 74 68 65 20 4d 4d 20  n;NNN to the MM 
12a20 6d 6f 6e 74 68 20 76 61 6c 75 65 2c 20 74 68 65  month value, the
12a30 6e 0a 6e 6f 72 6d 61 6c 69 7a 69 6e 67 20 74 68  n.normalizing th
12a40 65 20 72 65 73 75 6c 74 2e 20 20 54 68 75 73 2c  e result.  Thus,
12a50 20 66 6f 72 20 65 78 61 6d 70 6c 65 2c 20 74 68   for example, th
12a60 65 20 64 61 74 61 20 32 30 30 31 2d 30 33 2d 33  e data 2001-03-3
12a70 31 20 6d 6f 64 69 66 69 65 64 0a 62 79 20 27 2b  1 modified.by '+
12a80 31 20 6d 6f 6e 74 68 27 20 69 6e 69 74 69 61 6c  1 month' initial
12a90 6c 79 20 79 69 65 6c 64 73 20 32 30 30 31 2d 30  ly yields 2001-0
12aa0 34 2d 33 31 2c 20 62 75 74 20 41 70 72 69 6c 20  4-31, but April 
12ab0 6f 6e 6c 79 20 68 61 73 20 33 30 20 64 61 79 73  only has 30 days
12ac0 0a 73 6f 20 74 68 65 20 64 61 74 65 20 69 73 20  .so the date is 
12ad0 6e 6f 72 6d 61 6c 69 7a 65 64 20 74 6f 20 32 30  normalized to 20
12ae0 30 31 2d 30 35 2d 30 31 2e 20 20 41 20 73 69 6d  01-05-01.  A sim
12af0 69 6c 61 72 20 65 66 66 65 63 74 20 6f 63 63 75  ilar effect occu
12b00 72 73 20 77 68 65 6e 0a 74 68 65 20 6f 72 69 67  rs when.the orig
12b10 69 6e 61 6c 20 64 61 74 65 20 69 73 20 46 65 62  inal date is Feb
12b20 72 75 61 72 79 20 32 39 20 6f 66 20 61 20 6c 65  ruary 29 of a le
12b30 61 70 79 65 61 72 20 61 6e 64 20 74 68 65 20 6d  apyear and the m
12b40 6f 64 69 66 69 65 72 20 69 73 0a 26 70 6c 75 73  odifier is.&plus
12b50 6d 6e 3b 4e 20 79 65 61 72 73 20 77 68 65 72 65  mn;N years where
12b60 20 4e 20 69 73 20 6e 6f 74 20 61 20 6d 75 6c 74   N is not a mult
12b70 69 70 6c 65 20 6f 66 20 66 6f 75 72 2e 3c 2f 70  iple of four.</p
12b80 3e 0a 0a 3c 70 3e 54 68 65 20 22 73 74 61 72 74  >..<p>The "start
12b90 20 6f 66 22 20 6d 6f 64 69 66 69 65 72 73 20 28   of" modifiers (
12ba0 37 20 74 68 72 6f 75 67 68 20 39 29 20 73 68 69  7 through 9) shi
12bb0 66 74 20 74 68 65 20 64 61 74 65 20 62 61 63 6b  ft the date back
12bc0 77 61 72 64 73 20 0a 74 6f 20 74 68 65 20 62 65  wards .to the be
12bd0 67 69 6e 6e 69 6e 67 20 6f 66 20 74 68 65 20 63  ginning of the c
12be0 75 72 72 65 6e 74 20 6d 6f 6e 74 68 2c 20 79 65  urrent month, ye
12bf0 61 72 20 6f 72 20 64 61 79 2e 3c 2f 70 3e 0a 0a  ar or day.</p>..
12c00 3c 70 3e 54 68 65 20 22 77 65 65 6b 64 61 79 22  <p>The "weekday"
12c10 20 6d 6f 64 69 66 69 65 72 20 61 64 76 61 6e 63   modifier advanc
12c20 65 73 20 74 68 65 20 64 61 74 65 20 66 6f 72 77  es the date forw
12c30 61 72 64 20 74 6f 20 74 68 65 20 6e 65 78 74 20  ard to the next 
12c40 64 61 74 65 20 0a 77 68 65 72 65 20 74 68 65 20  date .where the 
12c50 77 65 65 6b 64 61 79 20 6e 75 6d 62 65 72 20 69  weekday number i
12c60 73 20 4e 2e 20 53 75 6e 64 61 79 20 69 73 20 30  s N. Sunday is 0
12c70 2c 20 4d 6f 6e 64 61 79 20 69 73 20 31 2c 20 61  , Monday is 1, a
12c80 6e 64 20 73 6f 20 66 6f 72 74 68 2e 3c 2f 70 3e  nd so forth.</p>
12c90 0a 0a 3c 70 3e 54 68 65 20 22 75 6e 69 78 65 70  ..<p>The "unixep
12ca0 6f 63 68 22 20 6d 6f 64 69 66 69 65 72 20 28 31  och" modifier (1
12cb0 31 29 20 6f 6e 6c 79 20 77 6f 72 6b 73 20 69 66  1) only works if
12cc0 20 69 74 20 69 6d 6d 65 64 69 61 74 65 6c 79 20   it immediately 
12cd0 66 6f 6c 6c 6f 77 73 20 0a 61 20 74 69 6d 65 73  follows .a times
12ce0 74 72 69 6e 67 20 69 6e 20 74 68 65 20 44 44 44  tring in the DDD
12cf0 44 44 44 44 44 44 44 20 66 6f 72 6d 61 74 2e 20  DDDDDDD format. 
12d00 0a 54 68 69 73 20 6d 6f 64 69 66 69 65 72 20 63  .This modifier c
12d10 61 75 73 65 73 20 74 68 65 20 44 44 44 44 44 44  auses the DDDDDD
12d20 44 44 44 44 20 74 6f 20 62 65 20 69 6e 74 65 72  DDDD to be inter
12d30 70 72 65 74 65 64 20 6e 6f 74 20 0a 61 73 20 61  preted not .as a
12d40 20 4a 75 6c 69 61 6e 20 64 61 79 20 6e 75 6d 62   Julian day numb
12d50 65 72 20 61 73 20 69 74 20 6e 6f 72 6d 61 6c 6c  er as it normall
12d60 79 20 77 6f 75 6c 64 20 62 65 2c 20 62 75 74 20  y would be, but 
12d70 61 73 0a 3c 61 20 68 72 65 66 3d 22 68 74 74 70  as.<a href="http
12d80 3a 2f 2f 65 6e 2e 77 69 6b 69 70 65 64 69 61 2e  ://en.wikipedia.
12d90 6f 72 67 2f 77 69 6b 69 2f 55 6e 69 78 5f 74 69  org/wiki/Unix_ti
12da0 6d 65 22 3e 55 6e 69 78 20 54 69 6d 65 3c 2f 61  me">Unix Time</a
12db0 3e 20 2d 20 74 68 65 20 0a 6e 75 6d 62 65 72 20  > - the .number 
12dc0 6f 66 20 73 65 63 6f 6e 64 73 20 73 69 6e 63 65  of seconds since
12dd0 20 31 39 37 30 2e 20 20 49 66 20 74 68 65 20 22   1970.  If the "
12de0 75 6e 69 78 65 70 6f 63 68 22 20 6d 6f 64 69 66  unixepoch" modif
12df0 69 65 72 20 64 6f 65 73 20 6e 6f 74 0a 66 6f 6c  ier does not.fol
12e00 6c 6f 77 20 61 20 74 69 6d 65 73 74 72 69 6e 67  low a timestring
12e10 20 6f 66 20 74 68 65 20 66 6f 72 6d 20 44 44 44   of the form DDD
12e20 44 44 44 44 44 44 44 20 77 68 69 63 68 20 65 78  DDDDDDD which ex
12e30 70 72 65 73 73 65 73 20 74 68 65 20 6e 75 6d 62  presses the numb
12e40 65 72 0a 6f 66 20 73 65 63 6f 6e 64 73 20 73 69  er.of seconds si
12e50 6e 63 65 20 31 39 37 30 20 6f 72 20 69 66 20 6f  nce 1970 or if o
12e60 74 68 65 72 20 6d 6f 64 69 66 69 65 72 73 0a 73  ther modifiers.s
12e70 65 70 61 72 61 74 65 20 74 68 65 20 22 75 6e 69  eparate the "uni
12e80 78 65 70 6f 63 68 22 20 6d 6f 64 69 66 69 65 72  xepoch" modifier
12e90 20 66 72 6f 6d 20 70 72 69 6f 72 20 44 44 44 44   from prior DDDD
12ea0 44 44 44 44 44 44 20 74 68 65 6e 20 74 68 65 0a  DDDDDD then the.
12eb0 62 65 68 61 76 69 6f 72 20 69 73 20 75 6e 64 65  behavior is unde
12ec0 66 69 6e 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54  fined.</p>..<p>T
12ed0 68 65 20 22 6c 6f 63 61 6c 74 69 6d 65 22 20 6d  he "localtime" m
12ee0 6f 64 69 66 69 65 72 20 28 31 32 29 20 61 73 73  odifier (12) ass
12ef0 75 6d 65 73 20 74 68 65 20 74 69 6d 65 20 73 74  umes the time st
12f00 72 69 6e 67 20 74 6f 20 69 74 73 20 6c 65 66 74  ring to its left
12f10 20 69 73 20 69 6e 0a 55 6e 69 76 65 72 73 61 6c   is in.Universal
12f20 20 43 6f 6f 72 64 69 6e 61 74 65 64 20 54 69 6d   Coordinated Tim
12f30 65 20 28 55 54 43 29 20 61 6e 64 20 61 64 6a 75  e (UTC) and adju
12f40 73 74 73 20 74 68 65 20 74 69 6d 65 0a 73 74 72  sts the time.str
12f50 69 6e 67 20 73 6f 20 74 68 61 74 20 69 74 20 64  ing so that it d
12f60 69 73 70 6c 61 79 73 20 6c 6f 63 61 6c 74 69 6d  isplays localtim
12f70 65 2e 20 20 49 66 20 22 6c 6f 63 61 6c 74 69 6d  e.  If "localtim
12f80 65 22 0a 66 6f 6c 6c 6f 77 73 20 61 20 74 69 6d  e".follows a tim
12f90 65 20 74 68 61 74 20 69 73 20 6e 6f 74 20 55 54  e that is not UT
12fa0 43 2c 20 74 68 65 6e 20 74 68 65 20 62 65 68 61  C, then the beha
12fb0 76 69 6f 72 20 69 73 20 75 6e 64 65 66 69 6e 65  vior is undefine
12fc0 64 2e 0a 54 68 65 20 22 75 74 63 22 20 69 73 20  d..The "utc" is 
12fd0 74 68 65 20 6f 70 70 6f 73 69 74 65 20 6f 66 20  the opposite of 
12fe0 22 6c 6f 63 61 6c 74 69 6d 65 22 2e 20 20 22 75  "localtime".  "u
12ff0 74 63 22 20 61 73 73 75 6d 65 73 20 74 68 61 74  tc" assumes that
13000 20 74 68 65 20 73 74 72 69 6e 67 0a 74 6f 20 69   the string.to i
13010 74 73 20 6c 65 66 74 20 69 73 20 69 6e 20 74 68  ts left is in th
13020 65 20 6c 6f 63 61 6c 20 74 69 6d 65 7a 6f 6e 65  e local timezone
13030 20 61 6e 64 20 61 64 6a 75 73 74 73 20 74 68 61   and adjusts tha
13040 74 20 73 74 72 69 6e 67 20 74 6f 20 62 65 20 69  t string to be i
13050 6e 20 55 54 43 2e 0a 49 66 20 74 68 65 20 70 72  n UTC..If the pr
13060 69 6f 72 20 73 74 72 69 6e 67 20 69 73 20 6e 6f  ior string is no
13070 74 20 69 6e 20 6c 6f 63 61 6c 74 69 6d 65 2c 20  t in localtime, 
13080 74 68 65 6e 20 74 68 65 20 72 65 73 75 6c 74 20  then the result 
13090 6f 66 20 22 75 74 63 22 20 69 73 0a 75 6e 64 65  of "utc" is.unde
130a0 66 69 6e 65 64 2e 3c 2f 70 3e 0a 0a 3c 68 33 3e  fined.</p>..<h3>
130b0 45 78 61 6d 70 6c 65 73 3c 2f 68 33 3e 0a 0a 3c  Examples</h3>..<
130c0 70 3e 43 6f 6d 70 75 74 65 20 74 68 65 20 63 75  p>Compute the cu
130d0 72 72 65 6e 74 20 64 61 74 65 2e 3c 70 3e 0a 0a  rrent date.<p>..
130e0 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 53 45 4c 45  <blockquote>SELE
130f0 43 54 20 64 61 74 65 28 27 6e 6f 77 27 29 3b 3c  CT date('now');<
13100 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70  /blockquote>..<p
13110 3e 43 6f 6d 70 75 74 65 20 74 68 65 20 6c 61 73  >Compute the las
13120 74 20 64 61 79 20 6f 66 20 74 68 65 20 63 75 72  t day of the cur
13130 72 65 6e 74 20 6d 6f 6e 74 68 2e 3c 2f 70 3e 0a  rent month.</p>.
13140 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 53 45 4c  .<blockquote>SEL
13150 45 43 54 20 64 61 74 65 28 27 6e 6f 77 27 2c 27  ECT date('now','
13160 73 74 61 72 74 20 6f 66 20 6d 6f 6e 74 68 27 2c  start of month',
13170 27 2b 31 20 6d 6f 6e 74 68 27 2c 27 2d 31 20 64  '+1 month','-1 d
13180 61 79 27 29 3b 0a 3c 2f 62 6c 6f 63 6b 71 75 6f  ay');.</blockquo
13190 74 65 3e 0a 0a 3c 70 3e 43 6f 6d 70 75 74 65 20  te>..<p>Compute 
131a0 74 68 65 20 64 61 74 65 20 61 6e 64 20 74 69 6d  the date and tim
131b0 65 20 67 69 76 65 6e 20 61 20 75 6e 69 78 20 74  e given a unix t
131c0 69 6d 65 73 74 61 6d 70 20 31 30 39 32 39 34 31  imestamp 1092941
131d0 34 36 36 2e 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b  466.</p>..<block
131e0 71 75 6f 74 65 3e 0a 20 20 20 20 53 45 4c 45 43  quote>.    SELEC
131f0 54 20 64 61 74 65 74 69 6d 65 28 31 30 39 32 39  T datetime(10929
13200 34 31 34 36 36 2c 20 27 75 6e 69 78 65 70 6f 63  41466, 'unixepoc
13210 68 27 29 3b 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74  h');.</blockquot
13220 65 3e 0a 0a 3c 70 3e 43 6f 6d 70 75 74 65 20 74  e>..<p>Compute t
13230 68 65 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65  he date and time
13240 20 67 69 76 65 6e 20 61 20 75 6e 69 78 20 74 69   given a unix ti
13250 6d 65 73 74 61 6d 70 20 31 30 39 32 39 34 31 34  mestamp 10929414
13260 36 36 2c 20 61 6e 64 20 0a 63 6f 6d 70 65 6e 73  66, and .compens
13270 61 74 65 20 66 6f 72 20 79 6f 75 72 20 6c 6f 63  ate for your loc
13280 61 6c 20 74 69 6d 65 7a 6f 6e 65 2e 3c 2f 70 3e  al timezone.</p>
13290 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 20  ..<blockquote>. 
132a0 20 53 45 4c 45 43 54 20 64 61 74 65 74 69 6d 65   SELECT datetime
132b0 28 31 30 39 32 39 34 31 34 36 36 2c 20 27 75 6e  (1092941466, 'un
132c0 69 78 65 70 6f 63 68 27 2c 20 27 6c 6f 63 61 6c  ixepoch', 'local
132d0 74 69 6d 65 27 29 3b 0a 3c 2f 62 6c 6f 63 6b 71  time');.</blockq
132e0 75 6f 74 65 3e 0a 0a 3c 70 3e 43 6f 6d 70 75 74  uote>..<p>Comput
132f0 65 20 74 68 65 20 63 75 72 72 65 6e 74 20 75 6e  e the current un
13300 69 78 20 74 69 6d 65 73 74 61 6d 70 2e 3c 2f 70  ix timestamp.</p
13310 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a  >..<blockquote>.
13320 20 20 53 45 4c 45 43 54 20 73 74 72 66 74 69 6d    SELECT strftim
13330 65 28 27 25 73 27 2c 27 6e 6f 77 27 29 3b 0a 3c  e('%s','now');.<
13340 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70  /blockquote>..<p
13350 3e 43 6f 6d 70 75 74 65 20 74 68 65 20 6e 75 6d  >Compute the num
13360 62 65 72 20 6f 66 20 64 61 79 73 20 73 69 6e 63  ber of days sinc
13370 65 20 74 68 65 20 73 69 67 6e 69 6e 67 20 6f 66  e the signing of
13380 20 74 68 65 20 55 53 20 44 65 63 6c 61 72 61 74   the US Declarat
13390 69 6f 6e 0a 6f 66 20 49 6e 64 65 70 65 6e 64 65  ion.of Independe
133a0 6e 74 2e 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71  nt.</p>..<blockq
133b0 75 6f 74 65 3e 0a 20 20 53 45 4c 45 43 54 20 6a  uote>.  SELECT j
133c0 75 6c 69 61 6e 64 61 79 28 27 6e 6f 77 27 29 20  ulianday('now') 
133d0 2d 20 6a 75 6c 69 61 6e 64 61 79 28 27 31 37 37  - julianday('177
133e0 36 2d 30 37 2d 30 34 27 29 3b 0a 3c 2f 62 6c 6f  6-07-04');.</blo
133f0 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70 3e 43 6f 6d  ckquote>..<p>Com
13400 70 75 74 65 20 74 68 65 20 6e 75 6d 62 65 72 20  pute the number 
13410 6f 66 20 73 65 63 6f 6e 64 73 20 73 69 6e 63 65  of seconds since
13420 20 61 20 70 61 72 74 69 63 75 6c 61 72 20 6d 6f   a particular mo
13430 6d 65 6e 74 20 69 6e 20 32 30 30 34 3a 3c 2f 70  ment in 2004:</p
13440 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a  >..<blockquote>.
13450 20 20 53 45 4c 45 43 54 20 73 74 72 66 74 69 6d    SELECT strftim
13460 65 28 27 25 73 27 2c 27 6e 6f 77 27 29 20 2d 20  e('%s','now') - 
13470 73 74 72 66 74 69 6d 65 28 27 25 73 27 2c 27 32  strftime('%s','2
13480 30 30 34 2d 30 31 2d 30 31 20 30 32 3a 33 34 3a  004-01-01 02:34:
13490 35 36 27 29 3b 0a 3c 2f 62 6c 6f 63 6b 71 75 6f  56');.</blockquo
134a0 74 65 3e 0a 0a 3c 70 3e 0a 43 6f 6d 70 75 74 65  te>..<p>.Compute
134b0 20 74 68 65 20 64 61 74 65 20 6f 66 20 74 68 65   the date of the
134c0 20 66 69 72 73 74 20 54 75 65 73 64 61 79 20 69   first Tuesday i
134d0 6e 20 4f 63 74 6f 62 65 72 0a 66 6f 72 20 74 68  n October.for th
134e0 65 20 63 75 72 72 65 6e 74 20 79 65 61 72 2e 0a  e current year..
134f0 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74  </p>..<blockquot
13500 65 3e 0a 20 20 53 45 4c 45 43 54 20 64 61 74 65  e>.  SELECT date
13510 28 27 6e 6f 77 27 2c 27 73 74 61 72 74 20 6f 66  ('now','start of
13520 20 79 65 61 72 27 2c 27 2b 39 20 6d 6f 6e 74 68   year','+9 month
13530 73 27 2c 27 77 65 65 6b 64 61 79 20 32 27 29 3b  s','weekday 2');
13540 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a  .</blockquote>..
13550 3c 70 3e 43 6f 6d 70 75 74 65 20 74 68 65 20 74  <p>Compute the t
13560 69 6d 65 20 73 69 6e 63 65 20 74 68 65 20 75 6e  ime since the un
13570 69 78 20 65 70 6f 63 68 20 69 6e 20 73 65 63 6f  ix epoch in seco
13580 6e 64 73 20 0a 28 6c 69 6b 65 20 73 74 72 66 74  nds .(like strft
13590 69 6d 65 28 27 25 73 27 2c 27 6e 6f 77 27 29 20  ime('%s','now') 
135a0 65 78 63 65 70 74 20 69 6e 63 6c 75 64 65 73 20  except includes 
135b0 66 72 61 63 74 69 6f 6e 61 6c 20 70 61 72 74 29  fractional part)
135c0 3a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f  :</p>..<blockquo
135d0 74 65 3e 0a 20 20 53 45 4c 45 43 54 20 28 6a 75  te>.  SELECT (ju
135e0 6c 69 61 6e 64 61 79 28 27 6e 6f 77 27 29 20 2d  lianday('now') -
135f0 20 32 34 34 30 35 38 37 2e 35 29 2a 38 36 34 30   2440587.5)*8640
13600 30 2e 30 3b 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74  0.0;.</blockquot
13610 65 3e 0a 0a 3c 68 33 3e 43 61 76 65 61 74 73 20  e>..<h3>Caveats 
13620 41 6e 64 20 42 75 67 73 3c 2f 68 33 3e 0a 0a 3c  And Bugs</h3>..<
13630 70 3e 54 68 65 20 63 6f 6d 70 75 74 61 74 69 6f  p>The computatio
13640 6e 20 6f 66 20 6c 6f 63 61 6c 20 74 69 6d 65 20  n of local time 
13650 64 65 70 65 6e 64 73 20 68 65 61 76 69 6c 79 20  depends heavily 
13660 6f 6e 20 74 68 65 20 77 68 69 6d 20 0a 6f 66 20  on the whim .of 
13670 70 6f 6c 69 74 69 63 69 61 6e 73 20 61 6e 64 20  politicians and 
13680 69 73 20 74 68 75 73 20 64 69 66 66 69 63 75 6c  is thus difficul
13690 74 20 74 6f 20 67 65 74 20 63 6f 72 72 65 63 74  t to get correct
136a0 20 66 6f 72 20 0a 61 6c 6c 20 6c 6f 63 61 6c 65   for .all locale
136b0 73 2e 20 49 6e 20 74 68 69 73 20 69 6d 70 6c 65  s. In this imple
136c0 6d 65 6e 74 61 74 69 6f 6e 2c 20 74 68 65 20 73  mentation, the s
136d0 74 61 6e 64 61 72 64 20 43 20 6c 69 62 72 61 72  tandard C librar
136e0 79 20 0a 66 75 6e 63 74 69 6f 6e 20 6c 6f 63 61  y .function loca
136f0 6c 74 69 6d 65 5f 72 28 29 20 69 73 20 75 73 65  ltime_r() is use
13700 64 20 74 6f 20 61 73 73 69 73 74 20 69 6e 20 74  d to assist in t
13710 68 65 20 63 61 6c 63 75 6c 61 74 69 6f 6e 20 6f  he calculation o
13720 66 20 0a 6c 6f 63 61 6c 20 74 69 6d 65 2e 20 20  f .local time.  
13730 54 68 65 20 0a 6c 6f 63 61 6c 74 69 6d 65 5f 72  The .localtime_r
13740 28 29 20 43 20 66 75 6e 63 74 69 6f 6e 20 6e 6f  () C function no
13750 72 6d 61 6c 6c 79 20 6f 6e 6c 79 20 77 6f 72 6b  rmally only work
13760 73 20 66 6f 72 20 79 65 61 72 73 0a 62 65 74 77  s for years.betw
13770 65 65 6e 20 31 39 37 30 20 61 6e 64 20 32 30 33  een 1970 and 203
13780 37 2e 20 46 6f 72 20 64 61 74 65 73 20 6f 75 74  7. For dates out
13790 73 69 64 65 20 74 68 69 73 20 72 61 6e 67 65 2c  side this range,
137a0 20 53 51 4c 69 74 65 20 0a 61 74 74 65 6d 70 74   SQLite .attempt
137b0 73 20 74 6f 20 6d 61 70 20 74 68 65 20 79 65 61  s to map the yea
137c0 72 20 69 6e 74 6f 20 61 6e 20 65 71 75 69 76 61  r into an equiva
137d0 6c 65 6e 74 20 79 65 61 72 20 77 69 74 68 69 6e  lent year within
137e0 20 0a 74 68 69 73 20 72 61 6e 67 65 2c 20 64 6f   .this range, do
137f0 20 74 68 65 20 63 61 6c 63 75 6c 61 74 69 6f 6e   the calculation
13800 2c 20 74 68 65 6e 20 6d 61 70 20 74 68 65 20 79  , then map the y
13810 65 61 72 20 62 61 63 6b 2e 3c 2f 70 3e 0a 0a 0a  ear back.</p>...
13820 3c 70 3e 44 61 74 65 20 63 6f 6d 70 75 74 61 74  <p>Date computat
13830 69 6f 6e 73 20 64 6f 20 6e 6f 74 20 67 69 76 65  ions do not give
13840 20 63 6f 72 72 65 63 74 20 72 65 73 75 6c 74 73   correct results
13850 20 66 6f 72 20 64 61 74 65 73 20 0a 62 65 66 6f   for dates .befo
13860 72 65 20 4a 75 6c 69 61 6e 20 64 61 79 20 6e 75  re Julian day nu
13870 6d 62 65 72 20 30 20 28 2d 34 37 31 33 2d 31 31  mber 0 (-4713-11
13880 2d 32 34 20 31 32 3a 30 30 3a 30 30 29 2e 3c 2f  -24 12:00:00).</
13890 70 3e 0a 0a 3c 70 3e 4e 6f 6e 2d 56 69 73 74 61  p>..<p>Non-Vista
138a0 20 57 69 6e 64 6f 77 73 20 70 6c 61 74 66 6f 72   Windows platfor
138b0 6d 73 20 6f 6e 6c 79 20 73 75 70 70 6f 72 74 20  ms only support 
138c0 6f 6e 65 20 73 65 74 20 6f 66 20 44 53 54 20 72  one set of DST r
138d0 75 6c 65 73 2e 20 0a 56 69 73 74 61 20 6f 6e 6c  ules. .Vista onl
138e0 79 20 73 75 70 70 6f 72 74 73 20 74 77 6f 2e 20  y supports two. 
138f0 54 68 65 72 65 66 6f 72 65 2c 20 6f 6e 20 74 68  Therefore, on th
13900 65 73 65 20 70 6c 61 74 66 6f 72 6d 73 2c 20 0a  ese platforms, .
13910 68 69 73 74 6f 72 69 63 61 6c 20 44 53 54 20 63  historical DST c
13920 61 6c 63 75 6c 61 74 69 6f 6e 73 20 77 69 6c 6c  alculations will
13930 20 62 65 20 69 6e 63 6f 72 72 65 63 74 2e 20 0a   be incorrect. .
13940 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 69 6e 20  For example, in 
13950 74 68 65 20 55 53 2c 20 69 6e 20 32 30 30 37 20  the US, in 2007 
13960 74 68 65 20 44 53 54 20 72 75 6c 65 73 20 63 68  the DST rules ch
13970 61 6e 67 65 64 2e 20 0a 4e 6f 6e 2d 56 69 73 74  anged. .Non-Vist
13980 61 20 57 69 6e 64 6f 77 73 20 70 6c 61 74 66 6f  a Windows platfo
13990 72 6d 73 20 61 70 70 6c 79 20 74 68 65 20 6e 65  rms apply the ne
139a0 77 20 32 30 30 37 20 44 53 54 20 72 75 6c 65 73  w 2007 DST rules
139b0 20 0a 74 6f 20 61 6c 6c 20 70 72 65 76 69 6f 75   .to all previou
139c0 73 20 79 65 61 72 73 20 61 73 20 77 65 6c 6c 2e  s years as well.
139d0 20 56 69 73 74 61 20 64 6f 65 73 20 73 6f 6d 65   Vista does some
139e0 77 68 61 74 20 62 65 74 74 65 72 0a 67 65 74 74  what better.gett
139f0 69 6e 67 20 72 65 73 75 6c 74 73 20 63 6f 72 72  ing results corr
13a00 65 63 74 20 62 61 63 6b 20 74 6f 20 31 39 38 36  ect back to 1986
13a10 2c 20 77 68 65 6e 20 74 68 65 20 72 75 6c 65 73  , when the rules
13a20 20 77 65 72 65 20 61 6c 73 6f 20 63 68 61 6e 67   were also chang
13a30 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41 6c 6c 20  ed.</p>..<p>All 
13a40 69 6e 74 65 72 6e 61 6c 20 63 6f 6d 70 75 74 61  internal computa
13a50 74 69 6f 6e 73 20 61 73 73 75 6d 65 20 74 68 65  tions assume the
13a60 20 0a 3c 61 20 68 72 65 66 3d 22 68 74 74 70 3a   .<a href="http:
13a70 2f 2f 65 6e 2e 77 69 6b 69 70 65 64 69 61 2e 6f  //en.wikipedia.o
13a80 72 67 2f 77 69 6b 69 2f 47 72 65 67 6f 72 69 61  rg/wiki/Gregoria
13a90 6e 5f 63 61 6c 65 6e 64 61 72 22 3e 0a 47 72 65  n_calendar">.Gre
13aa0 67 6f 72 69 61 6e 20 63 61 6c 65 6e 64 61 72 3c  gorian calendar<
13ab0 2f 61 3e 20 73 79 73 74 65 6d 2e 20 20 49 74 20  /a> system.  It 
13ac0 69 73 20 61 6c 73 6f 20 61 73 73 75 6d 65 64 20  is also assumed 
13ad0 74 68 61 74 20 65 76 65 72 79 0a 64 61 79 20 69  that every.day i
13ae0 73 20 65 78 61 63 74 6c 79 20 38 36 34 30 30 20  s exactly 86400 
13af0 73 65 63 6f 6e 64 73 20 69 6e 20 64 75 72 61 74  seconds in durat
13b00 69 6f 6e 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a  ion.</p>..<tcl>.
13b10 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
13b20 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
13b30 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
13b40 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
13b50 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 53  ##############.S
13b60 65 63 74 69 6f 6e 20 7b 41 67 67 72 65 67 61 74  ection {Aggregat
13b70 65 20 46 75 6e 63 74 69 6f 6e 73 7d 20 61 67 67  e Functions} agg
13b80 66 75 6e 63 20 7b 61 67 67 66 75 6e 63 7d 0a 3c  func {aggfunc}.<
13b90 2f 74 63 6c 3e 0a 0a 3c 70 3e 0a 54 68 65 20 61  /tcl>..<p>.The a
13ba0 67 67 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f  ggregate functio
13bb0 6e 73 20 73 68 6f 77 6e 20 62 65 6c 6f 77 20 61  ns shown below a
13bc0 72 65 20 61 76 61 69 6c 61 62 6c 65 20 62 79 20  re available by 
13bd0 64 65 66 61 75 6c 74 2e 20 20 41 64 64 69 74 69  default.  Additi
13be0 6f 6e 61 6c 0a 61 67 67 72 65 67 61 74 65 20 66  onal.aggregate f
13bf0 75 6e 63 74 69 6f 6e 73 20 77 72 69 74 74 65 6e  unctions written
13c00 20 69 6e 20 43 20 6d 61 79 20 62 65 20 61 64 64   in C may be add
13c10 65 64 20 75 73 69 6e 67 20 74 68 65 20 0a 5b 73  ed using the .[s
13c20 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 66 75  qlite3_create_fu
13c30 6e 63 74 69 6f 6e 28 29 5d 3c 2f 61 3e 0a 41 50  nction()]</a>.AP
13c40 49 2e 3c 2f 70 3e 0a 0a 3c 70 3e 0a 49 6e 20 61  I.</p>..<p>.In a
13c50 6e 79 20 61 67 67 72 65 67 61 74 65 20 66 75 6e  ny aggregate fun
13c60 63 74 69 6f 6e 20 74 68 61 74 20 74 61 6b 65 73  ction that takes
13c70 20 61 20 73 69 6e 67 6c 65 20 61 72 67 75 6d 65   a single argume
13c80 6e 74 2c 20 74 68 61 74 20 61 72 67 75 6d 65 6e  nt, that argumen
13c90 74 0a 63 61 6e 20 62 65 20 70 72 65 63 65 64 65  t.can be precede
13ca0 64 20 62 79 20 74 68 65 20 6b 65 79 77 6f 72 64  d by the keyword
13cb0 20 44 49 53 54 49 4e 43 54 2e 20 20 49 6e 20 73   DISTINCT.  In s
13cc0 75 63 68 20 63 61 73 65 73 2c 20 64 75 70 6c 69  uch cases, dupli
13cd0 63 61 74 65 0a 65 6c 65 6d 65 6e 74 73 20 61 72  cate.elements ar
13ce0 65 20 66 69 6c 74 65 72 65 64 20 62 65 66 6f 72  e filtered befor
13cf0 65 20 62 65 69 6e 67 20 70 61 73 73 65 64 20 69  e being passed i
13d00 6e 74 6f 20 74 68 65 20 61 67 67 72 65 67 61 74  nto the aggregat
13d10 65 20 66 75 6e 63 74 69 6f 6e 2e 0a 46 6f 72 20  e function..For 
13d20 65 78 61 6d 70 6c 65 2c 20 74 68 65 20 66 75 6e  example, the fun
13d30 63 74 69 6f 6e 20 22 63 6f 75 6e 74 28 64 69 73  ction "count(dis
13d40 74 69 6e 63 74 20 58 29 22 20 77 69 6c 6c 20 72  tinct X)" will r
13d50 65 74 75 72 6e 20 74 68 65 20 6e 75 6d 62 65 72  eturn the number
13d60 0a 6f 66 20 64 69 73 74 69 6e 63 74 20 76 61 6c  .of distinct val
13d70 75 65 73 20 6f 66 20 63 6f 6c 75 6d 6e 20 58 20  ues of column X 
13d80 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20 74  instead of the t
13d90 6f 74 61 6c 20 6e 75 6d 62 65 72 20 6f 66 20 6e  otal number of n
13da0 6f 6e 2d 6e 75 6c 6c 0a 76 61 6c 75 65 73 20 69  on-null.values i
13db0 6e 20 63 6f 6c 75 6d 6e 20 58 2e 0a 3c 2f 70 3e  n column X..</p>
13dc0 0a 0a 3c 74 61 62 6c 65 20 62 6f 72 64 65 72 3d  ..<table border=
13dd0 30 20 63 65 6c 6c 70 61 64 64 69 6e 67 3d 31 30  0 cellpadding=10
13de0 3e 0a 3c 74 63 6c 3e 0a 66 75 6e 63 64 65 66 20  >.<tcl>.funcdef 
13df0 7b 61 76 67 28 58 29 7d 20 7b 7d 20 7b 0a 20 20  {avg(X)} {} {.  
13e00 52 65 74 75 72 6e 20 74 68 65 20 61 76 65 72 61  Return the avera
13e10 67 65 20 76 61 6c 75 65 20 6f 66 20 61 6c 6c 20  ge value of all 
13e20 6e 6f 6e 2d 4e 55 4c 4c 20 3c 69 3e 58 3c 2f 69  non-NULL <i>X</i
13e30 3e 20 77 69 74 68 69 6e 20 61 0a 20 20 67 72 6f  > within a.  gro
13e40 75 70 2e 20 20 53 74 72 69 6e 67 20 61 6e 64 20  up.  String and 
13e50 42 4c 4f 42 20 76 61 6c 75 65 73 20 74 68 61 74  BLOB values that
13e60 20 64 6f 20 6e 6f 74 20 6c 6f 6f 6b 20 6c 69 6b   do not look lik
13e70 65 20 6e 75 6d 62 65 72 73 20 61 72 65 0a 20 20  e numbers are.  
13e80 69 6e 74 65 72 70 72 65 74 65 64 20 61 73 20 30  interpreted as 0
13e90 2e 0a 20 20 54 68 65 20 72 65 73 75 6c 74 20 6f  ..  The result o
13ea0 66 20 61 76 67 28 29 20 69 73 20 61 6c 77 61 79  f avg() is alway
13eb0 73 20 61 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69  s a floating poi
13ec0 6e 74 20 76 61 6c 75 65 20 61 73 20 6c 6f 6e 67  nt value as long
13ed0 20 61 73 0a 20 20 61 74 20 74 68 65 72 65 20 69   as.  at there i
13ee0 73 20 61 74 20 6c 65 61 73 74 20 6f 6e 65 20 6e  s at least one n
13ef0 6f 6e 2d 4e 55 4c 4c 20 69 6e 70 75 74 20 65 76  on-NULL input ev
13f00 65 6e 20 69 66 20 61 6c 6c 0a 20 20 69 6e 70 75  en if all.  inpu
13f10 74 73 20 61 72 65 20 69 6e 74 65 67 65 72 73 2e  ts are integers.
13f20 20 20 54 68 65 20 72 65 73 75 6c 74 20 6f 66 20    The result of 
13f30 61 76 67 28 29 20 4e 55 4c 4c 20 69 66 20 61 6e  avg() NULL if an
13f40 64 20 6f 6e 6c 79 20 69 66 0a 20 20 74 68 65 72  d only if.  ther
13f50 65 20 61 72 65 20 6e 6f 20 6e 6f 6e 2d 4e 55 4c  e are no non-NUL
13f60 4c 20 69 6e 70 75 74 73 2e 20 20 0a 7d 0a 0a 66  L inputs.  .}..f
13f70 75 6e 63 64 65 66 20 7b 63 6f 75 6e 74 28 58 29  uncdef {count(X)
13f80 20 63 6f 75 6e 74 28 2a 29 7d 20 7b 7d 20 7b 0a   count(*)} {} {.
13f90 20 20 54 68 65 20 66 69 72 73 74 20 66 6f 72 6d    The first form
13fa0 20 72 65 74 75 72 6e 20 61 20 63 6f 75 6e 74 20   return a count 
13fb0 6f 66 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  of the number of
13fc0 20 74 69 6d 65 73 0a 20 20 74 68 61 74 20 3c 69   times.  that <i
13fd0 3e 58 3c 2f 69 3e 20 69 73 20 6e 6f 74 20 4e 55  >X</i> is not NU
13fe0 4c 4c 20 69 6e 20 61 20 67 72 6f 75 70 2e 20 20  LL in a group.  
13ff0 54 68 65 20 73 65 63 6f 6e 64 20 66 6f 72 6d 20  The second form 
14000 28 77 69 74 68 20 6e 6f 20 61 72 67 75 6d 65 6e  (with no argumen
14010 74 29 0a 20 20 72 65 74 75 72 6e 73 20 74 68 65  t).  returns the
14020 20 74 6f 74 61 6c 20 6e 75 6d 62 65 72 20 6f 66   total number of
14030 20 72 6f 77 73 20 69 6e 20 74 68 65 20 67 72 6f   rows in the gro
14040 75 70 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b  up..}..funcdef {
14050 67 72 6f 75 70 5f 63 6f 6e 63 61 74 28 58 29 20  group_concat(X) 
14060 67 72 6f 75 70 5f 63 6f 6e 63 61 74 28 58 2c 59  group_concat(X,Y
14070 29 7d 20 7b 7d 20 7b 0a 20 20 54 68 65 20 72 65  )} {} {.  The re
14080 73 75 6c 74 20 69 73 20 61 20 73 74 72 69 6e 67  sult is a string
14090 20 77 68 69 63 68 20 69 73 20 74 68 65 20 63 6f   which is the co
140a0 6e 63 61 74 65 6e 61 74 69 6f 6e 20 6f 66 0a 20  ncatenation of. 
140b0 20 61 6c 6c 20 6e 6f 6e 2d 4e 55 4c 4c 20 76 61   all non-NULL va
140c0 6c 75 65 73 20 6f 66 20 3c 69 3e 58 3c 2f 69 3e  lues of <i>X</i>
140d0 2e 20 20 49 66 20 70 61 72 61 6d 65 74 65 72 20  .  If parameter 
140e0 3c 69 3e 59 3c 2f 69 3e 20 69 73 20 74 68 65 20  <i>Y</i> is the 
140f0 73 65 70 61 72 61 74 6f 72 0a 20 20 62 65 74 77  separator.  betw
14100 65 65 6e 20 69 6e 73 74 61 6e 63 65 73 20 6f 66  een instances of
14110 20 3c 69 3e 58 3c 2f 69 3e 2e 20 20 41 20 63 6f   <i>X</i>.  A co
14120 6d 6d 61 20 28 22 2c 22 29 20 69 73 20 75 73 65  mma (",") is use
14130 64 20 61 73 20 74 68 65 20 73 65 70 61 72 61 74  d as the separat
14140 6f 72 0a 20 20 69 66 20 3c 69 3e 59 3c 2f 69 3e  or.  if <i>Y</i>
14150 20 69 73 20 6f 6d 69 74 74 65 64 2e 20 20 54 68   is omitted.  Th
14160 65 20 6f 72 64 65 72 20 6f 66 20 74 68 65 20 63  e order of the c
14170 6f 6e 63 61 74 65 6e 61 74 65 64 20 65 6c 65 6d  oncatenated elem
14180 65 6e 74 73 20 69 73 0a 20 20 61 72 62 69 74 72  ents is.  arbitr
14190 61 72 79 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20  ary..}..funcdef 
141a0 7b 6d 61 78 28 58 29 7d 20 7b 6d 61 78 41 67 67  {max(X)} {maxAgg
141b0 46 75 6e 63 20 61 67 67 5f 6d 61 78 7d 20 7b 0a  Func agg_max} {.
141c0 20 20 52 65 74 75 72 6e 20 74 68 65 20 6d 61 78    Return the max
141d0 69 6d 75 6d 20 76 61 6c 75 65 20 6f 66 20 61 6c  imum value of al
141e0 6c 20 76 61 6c 75 65 73 20 69 6e 20 74 68 65 20  l values in the 
141f0 67 72 6f 75 70 2e 0a 20 20 54 68 65 20 6d 61 78  group..  The max
14200 69 6d 75 6d 20 76 61 6c 75 65 20 69 73 20 74 68  imum value is th
14210 65 20 76 61 6c 75 65 20 74 68 61 74 20 77 6f 75  e value that wou
14220 6c 64 20 62 65 20 72 65 74 75 72 6e 65 64 20 6c  ld be returned l
14230 61 73 74 20 69 6e 20 61 6e 0a 20 20 4f 52 44 45  ast in an.  ORDE
14240 52 20 42 59 20 6f 6e 20 74 68 65 20 73 61 6d 65  R BY on the same
14250 20 63 6f 6c 75 6d 6e 2e 20 20 4e 55 4c 4c 20 69   column.  NULL i
14260 73 20 72 65 74 75 72 6e 65 64 20 69 66 20 61 6e  s returned if an
14270 64 20 6f 6e 6c 79 20 69 66 20 74 68 65 72 65 20  d only if there 
14280 61 72 65 0a 20 20 6e 6f 20 6e 6f 6e 2d 4e 55 4c  are.  no non-NUL
14290 4c 20 76 61 6c 75 65 73 20 69 6e 20 74 68 65 20  L values in the 
142a0 67 72 6f 75 70 2e 0a 7d 0a 0a 66 75 6e 63 64 65  group..}..funcde
142b0 66 20 7b 6d 69 6e 28 58 29 7d 20 7b 6d 69 6e 41  f {min(X)} {minA
142c0 67 67 46 75 6e 63 20 61 67 67 5f 6d 69 6e 7d 20  ggFunc agg_min} 
142d0 7b 0a 20 20 52 65 74 75 72 6e 20 74 68 65 20 6d  {.  Return the m
142e0 69 6e 69 6d 75 6d 20 6e 6f 6e 2d 4e 55 4c 4c 20  inimum non-NULL 
142f0 76 61 6c 75 65 20 6f 66 20 61 6c 6c 20 76 61 6c  value of all val
14300 75 65 73 20 69 6e 20 74 68 65 20 67 72 6f 75 70  ues in the group
14310 2e 0a 20 20 54 68 65 20 6d 69 6e 69 6d 75 6d 20  ..  The minimum 
14320 76 61 6c 75 65 20 69 73 20 74 68 65 20 66 69 72  value is the fir
14330 73 74 20 6e 6f 6e 2d 4e 55 4c 4c 20 76 61 6c 75  st non-NULL valu
14340 65 20 74 68 61 74 20 77 6f 75 6c 64 20 61 70 70  e that would app
14350 65 61 72 0a 20 20 69 6e 20 61 6e 20 4f 52 44 45  ear.  in an ORDE
14360 52 20 42 59 20 6f 66 20 74 68 65 20 63 6f 6c 75  R BY of the colu
14370 6d 6e 2e 0a 20 20 4e 55 4c 4c 20 69 73 20 6f 6e  mn..  NULL is on
14380 6c 79 20 72 65 74 75 72 6e 65 64 20 69 66 20 61  ly returned if a
14390 6e 64 20 6f 6e 6c 79 20 69 66 20 74 68 65 72 65  nd only if there
143a0 20 61 72 65 20 6e 6f 20 6e 6f 6e 2d 4e 55 4c 4c   are no non-NULL
143b0 20 76 61 6c 75 65 73 20 69 6e 20 74 68 65 20 0a   values in the .
143c0 20 20 67 72 6f 75 70 2e 0a 7d 0a 0a 66 75 6e 63    group..}..func
143d0 64 65 66 20 7b 73 75 6d 28 58 29 20 74 6f 74 61  def {sum(X) tota
143e0 6c 28 58 29 7d 20 7b 73 75 6d 46 75 6e 63 20 73  l(X)} {sumFunc s
143f0 75 6d 20 74 6f 74 61 6c 7d 20 7b 0a 20 20 52 65  um total} {.  Re
14400 74 75 72 6e 20 74 68 65 20 6e 75 6d 65 72 69 63  turn the numeric
14410 20 73 75 6d 20 6f 66 20 61 6c 6c 20 6e 6f 6e 2d   sum of all non-
14420 4e 55 4c 4c 20 76 61 6c 75 65 73 20 69 6e 20 74  NULL values in t
14430 68 65 20 67 72 6f 75 70 2e 0a 20 20 49 66 20 74  he group..  If t
14440 68 65 72 65 20 61 72 65 20 6e 6f 20 6e 6f 6e 2d  here are no non-
14450 4e 55 4c 4c 20 69 6e 70 75 74 20 72 6f 77 73 20  NULL input rows 
14460 74 68 65 6e 20 73 75 6d 28 29 20 72 65 74 75 72  then sum() retur
14470 6e 73 0a 20 20 4e 55 4c 4c 20 62 75 74 20 74 6f  ns.  NULL but to
14480 74 61 6c 28 29 20 72 65 74 75 72 6e 73 20 30 2e  tal() returns 0.
14490 30 2e 0a 20 20 4e 55 4c 4c 20 69 73 20 6e 6f 74  0..  NULL is not
144a0 20 6e 6f 72 6d 61 6c 6c 79 20 61 20 68 65 6c 70   normally a help
144b0 66 75 6c 20 72 65 73 75 6c 74 20 66 6f 72 20 74  ful result for t
144c0 68 65 20 73 75 6d 20 6f 66 20 6e 6f 20 72 6f 77  he sum of no row
144d0 73 0a 20 20 62 75 74 20 74 68 65 20 53 51 4c 20  s.  but the SQL 
144e0 73 74 61 6e 64 61 72 64 20 72 65 71 75 69 72 65  standard require
144f0 73 20 69 74 20 61 6e 64 20 6d 6f 73 74 20 6f 74  s it and most ot
14500 68 65 72 0a 20 20 53 51 4c 20 64 61 74 61 62 61  her.  SQL databa
14510 73 65 20 65 6e 67 69 6e 65 73 20 69 6d 70 6c 65  se engines imple
14520 6d 65 6e 74 20 73 75 6d 28 29 20 74 68 61 74 20  ment sum() that 
14530 77 61 79 20 73 6f 20 53 51 4c 69 74 65 20 64 6f  way so SQLite do
14540 65 73 20 69 74 20 69 6e 20 74 68 65 0a 20 20 73  es it in the.  s
14550 61 6d 65 20 77 61 79 20 69 6e 20 6f 72 64 65 72  ame way in order
14560 20 74 6f 20 62 65 20 63 6f 6d 70 61 74 69 62 6c   to be compatibl
14570 65 2e 20 20 20 54 68 65 20 6e 6f 6e 2d 73 74 61  e.   The non-sta
14580 6e 64 61 72 64 20 74 6f 74 61 6c 28 29 20 66 75  ndard total() fu
14590 6e 63 74 69 6f 6e 0a 20 20 69 73 20 70 72 6f 76  nction.  is prov
145a0 69 64 65 64 20 61 73 20 61 20 63 6f 6e 76 65 6e  ided as a conven
145b0 69 65 6e 74 20 77 61 79 20 74 6f 20 77 6f 72 6b  ient way to work
145c0 20 61 72 6f 75 6e 64 20 74 68 69 73 20 64 65 73   around this des
145d0 69 67 6e 20 70 72 6f 62 6c 65 6d 0a 20 20 69 6e  ign problem.  in
145e0 20 74 68 65 20 53 51 4c 20 6c 61 6e 67 75 61 67   the SQL languag
145f0 65 2e 3c 2f 70 3e 0a 0a 20 20 3c 70 3e 54 68 65  e.</p>..  <p>The
14600 20 72 65 73 75 6c 74 20 6f 66 20 74 6f 74 61 6c   result of total
14610 28 29 20 69 73 20 61 6c 77 61 79 73 20 61 20 66  () is always a f
14620 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20 76 61  loating point va
14630 6c 75 65 2e 0a 20 20 54 68 65 20 72 65 73 75 6c  lue..  The resul
14640 74 20 6f 66 20 73 75 6d 28 29 20 69 73 20 61 6e  t of sum() is an
14650 20 69 6e 74 65 67 65 72 20 76 61 6c 75 65 20 69   integer value i
14660 66 20 61 6c 6c 20 6e 6f 6e 2d 4e 55 4c 4c 20 69  f all non-NULL i
14670 6e 70 75 74 73 20 61 72 65 20 69 6e 74 65 67 65  nputs are intege
14680 72 73 2e 0a 20 20 49 66 20 61 6e 79 20 69 6e 70  rs..  If any inp
14690 75 74 20 74 6f 20 73 75 6d 28 29 20 69 73 20 6e  ut to sum() is n
146a0 65 69 74 68 65 72 20 61 6e 20 69 6e 74 65 67 65  either an intege
146b0 72 20 6f 72 20 61 20 4e 55 4c 4c 0a 20 20 74 68  r or a NULL.  th
146c0 65 6e 20 73 75 6d 28 29 20 72 65 74 75 72 6e 73  en sum() returns
146d0 20 61 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e   a floating poin
146e0 74 20 76 61 6c 75 65 0a 20 20 77 68 69 63 68 20  t value.  which 
146f0 6d 69 67 68 74 20 62 65 20 61 6e 20 61 70 70 72  might be an appr
14700 6f 78 69 6d 61 74 69 6f 6e 20 74 6f 20 74 68 65  oximation to the
14710 20 74 72 75 65 20 73 75 6d 2e 3c 2f 70 3e 0a 0a   true sum.</p>..
14720 20 20 3c 70 3e 53 75 6d 28 29 20 77 69 6c 6c 20    <p>Sum() will 
14730 74 68 72 6f 77 20 61 6e 20 22 69 6e 74 65 67 65  throw an "intege
14740 72 20 6f 76 65 72 66 6c 6f 77 22 20 65 78 63 65  r overflow" exce
14750 70 74 69 6f 6e 20 69 66 20 61 6c 6c 20 69 6e 70  ption if all inp
14760 75 74 73 0a 20 20 61 72 65 20 69 6e 74 65 67 65  uts.  are intege
14770 72 73 20 6f 72 20 4e 55 4c 4c 0a 20 20 61 6e 64  rs or NULL.  and
14780 20 61 6e 20 69 6e 74 65 67 65 72 20 6f 76 65 72   an integer over
14790 66 6c 6f 77 20 6f 63 63 75 72 73 20 61 74 20 61  flow occurs at a
147a0 6e 79 20 70 6f 69 6e 74 20 64 75 72 69 6e 67 20  ny point during 
147b0 74 68 65 20 63 6f 6d 70 75 74 61 74 69 6f 6e 2e  the computation.
147c0 0a 20 20 54 6f 74 61 6c 28 29 20 6e 65 76 65 72  .  Total() never
147d0 20 74 68 72 6f 77 73 20 61 6e 64 20 69 6e 74 65   throws and inte
147e0 67 65 72 20 6f 76 65 72 66 6c 6f 77 2e 0a 7d 0a  ger overflow..}.
147f0 3c 2f 74 63 6c 3e 0a 3c 2f 74 61 62 6c 65 3e 0a  </tcl>.</table>.
14800 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23  .<tcl>.#########
14810 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14820 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14830 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14840 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14850 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 49 4e  #####.Section IN
14860 53 45 52 54 20 69 6e 73 65 72 74 20 7b 49 4e 53  SERT insert {INS
14870 45 52 54 20 49 4e 53 45 52 54 73 7d 0a 0a 42 75  ERT INSERTs}..Bu
14880 62 62 6c 65 44 69 61 67 72 61 6d 20 69 6e 73 65  bbleDiagram inse
14890 72 74 2d 73 74 6d 74 20 31 0a 3c 2f 74 63 6c 3e  rt-stmt 1.</tcl>
148a0 0a 0a 3c 70 3e 54 68 65 20 49 4e 53 45 52 54 20  ..<p>The INSERT 
148b0 73 74 61 74 65 6d 65 6e 74 20 63 6f 6d 65 73 20  statement comes 
148c0 69 6e 20 74 77 6f 20 62 61 73 69 63 20 66 6f 72  in two basic for
148d0 6d 73 2e 20 20 54 68 65 20 66 69 72 73 74 20 66  ms.  The first f
148e0 6f 72 6d 0a 28 77 69 74 68 20 74 68 65 20 22 56  orm.(with the "V
148f0 41 4c 55 45 53 22 20 6b 65 79 77 6f 72 64 29 20  ALUES" keyword) 
14900 63 72 65 61 74 65 73 20 61 20 73 69 6e 67 6c 65  creates a single
14910 20 6e 65 77 20 72 6f 77 20 69 6e 20 61 6e 20 65   new row in an e
14920 78 69 73 74 69 6e 67 20 74 61 62 6c 65 2e 0a 49  xisting table..I
14930 66 20 6e 6f 20 63 6f 6c 75 6d 6e 2d 6c 69 73 74  f no column-list
14940 20 69 73 20 73 70 65 63 69 66 69 65 64 20 74 68   is specified th
14950 65 6e 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  en the number of
14960 20 76 61 6c 75 65 73 20 6d 75 73 74 0a 62 65 20   values must.be 
14970 74 68 65 20 73 61 6d 65 20 61 73 20 74 68 65 20  the same as the 
14980 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e  number of column
14990 73 20 69 6e 20 74 68 65 20 74 61 62 6c 65 2e 20  s in the table. 
149a0 20 49 66 20 61 20 63 6f 6c 75 6d 6e 2d 6c 69 73   If a column-lis
149b0 74 0a 69 73 20 73 70 65 63 69 66 69 65 64 2c 20  t.is specified, 
149c0 74 68 65 6e 20 74 68 65 20 6e 75 6d 62 65 72 20  then the number 
149d0 6f 66 20 76 61 6c 75 65 73 20 6d 75 73 74 20 6d  of values must m
149e0 61 74 63 68 20 74 68 65 20 6e 75 6d 62 65 72 20  atch the number 
149f0 6f 66 0a 73 70 65 63 69 66 69 65 64 20 63 6f 6c  of.specified col
14a00 75 6d 6e 73 2e 20 20 43 6f 6c 75 6d 6e 73 20 6f  umns.  Columns o
14a10 66 20 74 68 65 20 74 61 62 6c 65 20 74 68 61 74  f the table that
14a20 20 64 6f 20 6e 6f 74 20 61 70 70 65 61 72 20 69   do not appear i
14a30 6e 20 74 68 65 0a 63 6f 6c 75 6d 6e 20 6c 69 73  n the.column lis
14a40 74 20 61 72 65 20 66 69 6c 6c 65 64 20 77 69 74  t are filled wit
14a50 68 20 74 68 65 20 64 65 66 61 75 6c 74 20 76 61  h the default va
14a60 6c 75 65 2c 20 6f 72 20 77 69 74 68 20 4e 55 4c  lue, or with NUL
14a70 4c 20 69 66 20 6e 6f 0a 64 65 66 61 75 6c 74 20  L if no.default 
14a80 76 61 6c 75 65 20 69 73 20 73 70 65 63 69 66 69  value is specifi
14a90 65 64 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  ed..</p>..<p>The
14aa0 20 73 65 63 6f 6e 64 20 66 6f 72 6d 20 6f 66 20   second form of 
14ab0 74 68 65 20 49 4e 53 45 52 54 20 73 74 61 74 65  the INSERT state
14ac0 6d 65 6e 74 20 74 61 6b 65 73 20 69 74 73 20 64  ment takes its d
14ad0 61 74 61 20 66 72 6f 6d 20 61 0a 53 45 4c 45 43  ata from a.SELEC
14ae0 54 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 54 68  T statement.  Th
14af0 65 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75  e number of colu
14b00 6d 6e 73 20 69 6e 20 74 68 65 20 72 65 73 75 6c  mns in the resul
14b10 74 20 6f 66 20 74 68 65 0a 53 45 4c 45 43 54 20  t of the.SELECT 
14b20 6d 75 73 74 20 65 78 61 63 74 6c 79 20 6d 61 74  must exactly mat
14b30 63 68 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  ch the number of
14b40 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65 20   columns in the 
14b50 74 61 62 6c 65 20 69 66 0a 6e 6f 20 63 6f 6c 75  table if.no colu
14b60 6d 6e 20 6c 69 73 74 20 69 73 20 73 70 65 63 69  mn list is speci
14b70 66 69 65 64 2c 20 6f 72 20 69 74 20 6d 75 73 74  fied, or it must
14b80 20 6d 61 74 63 68 20 74 68 65 20 6e 75 6d 62 65   match the numbe
14b90 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 0a 6e 61 6d  r of columns.nam
14ba0 65 20 69 6e 20 74 68 65 20 63 6f 6c 75 6d 6e 20  e in the column 
14bb0 6c 69 73 74 2e 20 20 41 20 6e 65 77 20 65 6e 74  list.  A new ent
14bc0 72 79 20 69 73 20 6d 61 64 65 20 69 6e 20 74 68  ry is made in th
14bd0 65 20 74 61 62 6c 65 0a 66 6f 72 20 65 76 65 72  e table.for ever
14be0 79 20 72 6f 77 20 6f 66 20 74 68 65 20 53 45 4c  y row of the SEL
14bf0 45 43 54 20 72 65 73 75 6c 74 2e 20 20 54 68 65  ECT result.  The
14c00 20 53 45 4c 45 43 54 20 6d 61 79 20 62 65 20 73   SELECT may be s
14c10 69 6d 70 6c 65 0a 6f 72 20 63 6f 6d 70 6f 75 6e  imple.or compoun
14c20 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 6f  d.</p>..<p>The o
14c30 70 74 69 6f 6e 61 6c 20 63 6f 6e 66 6c 69 63 74  ptional conflict
14c40 2d 63 6c 61 75 73 65 20 61 6c 6c 6f 77 73 20 74  -clause allows t
14c50 68 65 20 73 70 65 63 69 66 69 63 61 74 69 6f 6e  he specification
14c60 20 6f 66 20 61 6e 20 61 6c 74 65 72 6e 61 74 69   of an alternati
14c70 76 65 0a 63 6f 6e 73 74 72 61 69 6e 74 20 63 6f  ve.constraint co
14c80 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f  nflict resolutio
14c90 6e 20 61 6c 67 6f 72 69 74 68 6d 20 74 6f 20 75  n algorithm to u
14ca0 73 65 20 64 75 72 69 6e 67 20 74 68 69 73 20 6f  se during this o
14cb0 6e 65 20 63 6f 6d 6d 61 6e 64 2e 0a 53 65 65 20  ne command..See 
14cc0 74 68 65 20 73 65 63 74 69 6f 6e 20 74 69 74 6c  the section titl
14cd0 65 64 0a 5b 4f 4e 20 43 4f 4e 46 4c 49 43 54 5d  ed.[ON CONFLICT]
14ce0 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20   for additional 
14cf0 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a 46 6f 72  information..For
14d00 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 77   compatibility w
14d10 69 74 68 20 4d 79 53 51 4c 2c 20 74 68 65 20 70  ith MySQL, the p
14d20 61 72 73 65 72 20 61 6c 6c 6f 77 73 20 74 68 65  arser allows the
14d30 20 75 73 65 20 6f 66 20 74 68 65 0a 73 69 6e 67   use of the.sing
14d40 6c 65 20 6b 65 79 77 6f 72 64 20 3c 61 20 68 72  le keyword <a hr
14d50 65 66 3d 22 6c 61 6e 67 5f 72 65 70 6c 61 63 65  ef="lang_replace
14d60 2e 68 74 6d 6c 22 3e 52 45 50 4c 41 43 45 3c 2f  .html">REPLACE</
14d70 61 3e 20 61 73 20 61 6e 20 0a 61 6c 69 61 73 20  a> as an .alias 
14d80 66 6f 72 20 22 49 4e 53 45 52 54 20 4f 52 20 52  for "INSERT OR R
14d90 45 50 4c 41 43 45 22 2e 0a 3c 2f 70 3e 0a 0a 3c  EPLACE"..</p>..<
14da0 70 3e 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20 22  p>The optional "
14db0 3c 69 3e 64 61 74 61 62 61 73 65 2d 6e 61 6d 65  <i>database-name
14dc0 3c 2f 69 3e 3c 62 3e 2e 3c 2f 62 3e 22 20 70 72  </i><b>.</b>" pr
14dd0 65 66 69 78 20 6f 6e 20 74 68 65 20 3c 69 3e 74  efix on the <i>t
14de0 61 62 6c 65 2d 6e 61 6d 65 3c 2f 69 3e 0a 69 73  able-name</i>.is
14df0 20 73 75 70 70 6f 72 74 20 66 6f 72 20 74 6f 70   support for top
14e00 2d 6c 65 76 65 6c 20 49 4e 53 45 52 54 20 73 74  -level INSERT st
14e10 61 74 65 6d 65 6e 74 73 20 6f 6e 6c 79 2e 20 20  atements only.  
14e20 54 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 20 6d  The table name m
14e30 75 73 74 20 62 65 0a 75 6e 71 75 61 6c 69 66 69  ust be.unqualifi
14e40 65 64 20 66 6f 72 20 49 4e 53 45 52 54 20 73 74  ed for INSERT st
14e50 61 74 65 6d 65 6e 74 73 20 74 68 61 74 20 6f 63  atements that oc
14e60 63 75 72 20 77 69 74 68 69 6e 20 5b 43 52 45 41  cur within [CREA
14e70 54 45 20 54 52 49 47 47 45 52 5d 20 73 74 61 74  TE TRIGGER] stat
14e80 65 6d 65 6e 74 73 2e 0a 4c 69 6b 65 6c 79 2c 20  ements..Likely, 
14e90 74 68 65 20 22 44 45 46 41 55 4c 54 20 56 41 4c  the "DEFAULT VAL
14ea0 55 45 53 22 20 66 6f 72 6d 20 6f 66 20 74 68 65  UES" form of the
14eb0 20 49 4e 53 45 52 54 20 73 74 61 74 65 6d 65 6e   INSERT statemen
14ec0 74 20 69 73 20 73 75 70 70 6f 72 74 20 66 6f 72  t is support for
14ed0 0a 74 6f 70 2d 6c 65 76 65 6c 20 49 4e 53 45 52  .top-level INSER
14ee0 54 20 73 74 61 74 65 6d 65 6e 74 73 20 6f 6e 6c  T statements onl
14ef0 79 20 61 6e 64 20 6e 6f 74 20 66 6f 72 20 49 4e  y and not for IN
14f00 53 45 52 54 20 73 74 61 74 65 6d 65 6e 74 73 20  SERT statements 
14f10 77 69 74 68 69 6e 0a 74 72 69 67 67 65 72 73 2e  within.triggers.
14f20 0a 3c 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23  .<p>..<tcl>.####
14f30 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14f40 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14f50 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14f60 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14f70 23 23 23 23 23 23 23 23 23 23 0a 53 65 63 74 69  ##########.Secti
14f80 6f 6e 20 7b 4f 4e 20 43 4f 4e 46 4c 49 43 54 20  on {ON CONFLICT 
14f90 63 6c 61 75 73 65 7d 20 63 6f 6e 66 6c 69 63 74  clause} conflict
14fa0 20 7b 7b 63 6f 6e 66 6c 69 63 74 20 63 6c 61 75   {{conflict clau
14fb0 73 65 7d 20 7b 4f 4e 20 43 4f 4e 46 4c 49 43 54  se} {ON CONFLICT
14fc0 7d 7d 0a 0a 42 75 62 62 6c 65 44 69 61 67 72 61  }}..BubbleDiagra
14fd0 6d 20 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73  m conflict-claus
14fe0 65 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 65  e.</tcl>..<p>The
14ff0 20 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 63 6c 61   ON CONFLICT cla
15000 75 73 65 20 69 73 20 6e 6f 74 20 61 20 73 65 70  use is not a sep
15010 61 72 61 74 65 20 53 51 4c 20 63 6f 6d 6d 61 6e  arate SQL comman
15020 64 2e 20 20 49 74 20 69 73 20 61 0a 6e 6f 6e 2d  d.  It is a.non-
15030 73 74 61 6e 64 61 72 64 20 63 6c 61 75 73 65 20  standard clause 
15040 74 68 61 74 20 63 61 6e 20 61 70 70 65 61 72 20  that can appear 
15050 69 6e 20 6d 61 6e 79 20 6f 74 68 65 72 20 53 51  in many other SQ
15060 4c 20 63 6f 6d 6d 61 6e 64 73 2e 0a 49 74 20 69  L commands..It i
15070 73 20 67 69 76 65 6e 20 69 74 73 20 6f 77 6e 20  s given its own 
15080 73 65 63 74 69 6f 6e 20 69 6e 20 74 68 69 73 20  section in this 
15090 64 6f 63 75 6d 65 6e 74 20 62 65 63 61 75 73 65  document because
150a0 20 69 74 20 69 73 20 6e 6f 74 0a 70 61 72 74 20   it is not.part 
150b0 6f 66 20 73 74 61 6e 64 61 72 64 20 53 51 4c 20  of standard SQL 
150c0 61 6e 64 20 74 68 65 72 65 66 6f 72 65 20 6d 69  and therefore mi
150d0 67 68 74 20 6e 6f 74 20 62 65 20 66 61 6d 69 6c  ght not be famil
150e0 69 61 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  iar.</p>..<p>The
150f0 20 73 79 6e 74 61 78 20 66 6f 72 20 74 68 65 20   syntax for the 
15100 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 63 6c 61 75  ON CONFLICT clau
15110 73 65 20 69 73 20 61 73 20 73 68 6f 77 6e 20 61  se is as shown a
15120 62 6f 76 65 20 66 6f 72 0a 74 68 65 20 43 52 45  bove for.the CRE
15130 41 54 45 20 54 41 42 4c 45 20 63 6f 6d 6d 61 6e  ATE TABLE comman
15140 64 2e 20 20 46 6f 72 20 74 68 65 20 49 4e 53 45  d.  For the INSE
15150 52 54 20 61 6e 64 0a 55 50 44 41 54 45 20 63 6f  RT and.UPDATE co
15160 6d 6d 61 6e 64 73 2c 20 74 68 65 20 6b 65 79 77  mmands, the keyw
15170 6f 72 64 73 20 22 4f 4e 20 43 4f 4e 46 4c 49 43  ords "ON CONFLIC
15180 54 22 20 61 72 65 20 72 65 70 6c 61 63 65 64 20  T" are replaced 
15190 62 79 20 22 4f 52 22 2c 20 74 6f 20 6d 61 6b 65  by "OR", to make
151a0 0a 74 68 65 20 73 79 6e 74 61 78 20 73 65 65 6d  .the syntax seem
151b0 20 6d 6f 72 65 20 6e 61 74 75 72 61 6c 2e 20 20   more natural.  
151c0 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 69 6e 73  For example, ins
151d0 74 65 61 64 20 6f 66 0a 22 49 4e 53 45 52 54 20  tead of."INSERT 
151e0 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 49 47 4e 4f  ON CONFLICT IGNO
151f0 52 45 22 20 77 65 20 68 61 76 65 20 22 49 4e 53  RE" we have "INS
15200 45 52 54 20 4f 52 20 49 47 4e 4f 52 45 22 2e 0a  ERT OR IGNORE"..
15210 54 68 65 20 6b 65 79 77 6f 72 64 73 20 63 68 61  The keywords cha
15220 6e 67 65 20 62 75 74 20 74 68 65 20 6d 65 61 6e  nge but the mean
15230 69 6e 67 20 6f 66 20 74 68 65 20 63 6c 61 75 73  ing of the claus
15240 65 20 69 73 20 74 68 65 20 73 61 6d 65 0a 65 69  e is the same.ei
15250 74 68 65 72 20 77 61 79 2e 3c 2f 70 3e 0a 0a 3c  ther way.</p>..<
15260 70 3e 54 68 65 20 4f 4e 20 43 4f 4e 46 4c 49 43  p>The ON CONFLIC
15270 54 20 63 6c 61 75 73 65 20 73 70 65 63 69 66 69  T clause specifi
15280 65 73 20 61 6e 20 61 6c 67 6f 72 69 74 68 6d 20  es an algorithm 
15290 75 73 65 64 20 74 6f 20 72 65 73 6f 6c 76 65 0a  used to resolve.
152a0 63 6f 6e 73 74 72 61 69 6e 74 20 63 6f 6e 66 6c  constraint confl
152b0 69 63 74 73 2e 20 20 54 68 65 72 65 20 61 72 65  icts.  There are
152c0 20 66 69 76 65 20 63 68 6f 69 63 65 73 3a 20 52   five choices: R
152d0 4f 4c 4c 42 41 43 4b 2c 20 41 42 4f 52 54 2c 0a  OLLBACK, ABORT,.
152e0 46 41 49 4c 2c 20 49 47 4e 4f 52 45 2c 20 61 6e  FAIL, IGNORE, an
152f0 64 20 52 45 50 4c 41 43 45 2e 20 54 68 65 20 64  d REPLACE. The d
15300 65 66 61 75 6c 74 20 61 6c 67 6f 72 69 74 68 6d  efault algorithm
15310 20 69 73 20 41 42 4f 52 54 2e 20 20 54 68 69 73   is ABORT.  This
15320 0a 69 73 20 77 68 61 74 20 74 68 65 79 20 6d 65  .is what they me
15330 61 6e 3a 3c 2f 70 3e 0a 0a 3c 64 6c 3e 0a 3c 64  an:</p>..<dl>.<d
15340 74 3e 3c 62 3e 52 4f 4c 4c 42 41 43 4b 3c 2f 62  t><b>ROLLBACK</b
15350 3e 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 57 68  ></dt>.<dd><p>Wh
15360 65 6e 20 61 20 63 6f 6e 73 74 72 61 69 6e 74 20  en a constraint 
15370 76 69 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72 73  violation occurs
15380 2c 20 61 6e 20 69 6d 6d 65 64 69 61 74 65 20 52  , an immediate R
15390 4f 4c 4c 42 41 43 4b 0a 6f 63 63 75 72 73 2c 20  OLLBACK.occurs, 
153a0 74 68 75 73 20 65 6e 64 69 6e 67 20 74 68 65 20  thus ending the 
153b0 63 75 72 72 65 6e 74 20 74 72 61 6e 73 61 63 74  current transact
153c0 69 6f 6e 2c 20 61 6e 64 20 74 68 65 20 63 6f 6d  ion, and the com
153d0 6d 61 6e 64 20 61 62 6f 72 74 73 0a 77 69 74 68  mand aborts.with
153e0 20 61 20 72 65 74 75 72 6e 20 63 6f 64 65 20 6f   a return code o
153f0 66 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41  f SQLITE_CONSTRA
15400 49 4e 54 2e 20 20 49 66 20 6e 6f 20 74 72 61 6e  INT.  If no tran
15410 73 61 63 74 69 6f 6e 20 69 73 0a 61 63 74 69 76  saction is.activ
15420 65 20 28 6f 74 68 65 72 20 74 68 61 6e 20 74 68  e (other than th
15430 65 20 69 6d 70 6c 69 65 64 20 74 72 61 6e 73 61  e implied transa
15440 63 74 69 6f 6e 20 74 68 61 74 20 69 73 20 63 72  ction that is cr
15450 65 61 74 65 64 20 6f 6e 20 65 76 65 72 79 0a 63  eated on every.c
15460 6f 6d 6d 61 6e 64 29 20 74 68 65 6e 20 74 68 69  ommand) then thi
15470 73 20 61 6c 67 6f 72 69 74 68 6d 20 77 6f 72 6b  s algorithm work
15480 73 20 74 68 65 20 73 61 6d 65 20 61 73 20 41 42  s the same as AB
15490 4f 52 54 2e 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a 3c  ORT.</p></dd>..<
154a0 64 74 3e 3c 62 3e 41 42 4f 52 54 3c 2f 62 3e 3c  dt><b>ABORT</b><
154b0 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 57 68 65 6e  /dt>.<dd><p>When
154c0 20 61 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69   a constraint vi
154d0 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72 73 2c 20  olation occurs, 
154e0 74 68 65 20 63 6f 6d 6d 61 6e 64 20 62 61 63 6b  the command back
154f0 73 20 6f 75 74 0a 61 6e 79 20 70 72 69 6f 72 20  s out.any prior 
15500 63 68 61 6e 67 65 73 20 69 74 20 6d 69 67 68 74  changes it might
15510 20 68 61 76 65 20 6d 61 64 65 20 61 6e 64 20 61   have made and a
15520 62 6f 72 74 73 20 77 69 74 68 20 61 20 72 65 74  borts with a ret
15530 75 72 6e 20 63 6f 64 65 0a 6f 66 20 53 51 4c 49  urn code.of SQLI
15540 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 2e 20 20  TE_CONSTRAINT.  
15550 42 75 74 20 6e 6f 20 52 4f 4c 4c 42 41 43 4b 20  But no ROLLBACK 
15560 69 73 20 65 78 65 63 75 74 65 64 20 73 6f 20 63  is executed so c
15570 68 61 6e 67 65 73 0a 66 72 6f 6d 20 70 72 69 6f  hanges.from prio
15580 72 20 63 6f 6d 6d 61 6e 64 73 20 77 69 74 68 69  r commands withi
15590 6e 20 74 68 65 20 73 61 6d 65 20 74 72 61 6e 73  n the same trans
155a0 61 63 74 69 6f 6e 0a 61 72 65 20 70 72 65 73 65  action.are prese
155b0 72 76 65 64 2e 20 20 54 68 69 73 20 69 73 20 74  rved.  This is t
155c0 68 65 20 64 65 66 61 75 6c 74 20 62 65 68 61 76  he default behav
155d0 69 6f 72 2e 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a 3c  ior.</p></dd>..<
155e0 64 74 3e 3c 62 3e 46 41 49 4c 3c 2f 62 3e 3c 2f  dt><b>FAIL</b></
155f0 64 74 3e 0a 3c 64 64 3e 3c 70 3e 57 68 65 6e 20  dt>.<dd><p>When 
15600 61 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f  a constraint vio
15610 6c 61 74 69 6f 6e 20 6f 63 63 75 72 73 2c 20 74  lation occurs, t
15620 68 65 20 63 6f 6d 6d 61 6e 64 20 61 62 6f 72 74  he command abort
15630 73 20 77 69 74 68 20 61 0a 72 65 74 75 72 6e 20  s with a.return 
15640 63 6f 64 65 20 53 51 4c 49 54 45 5f 43 4f 4e 53  code SQLITE_CONS
15650 54 52 41 49 4e 54 2e 20 20 42 75 74 20 61 6e 79  TRAINT.  But any
15660 20 63 68 61 6e 67 65 73 20 74 6f 20 74 68 65 20   changes to the 
15670 64 61 74 61 62 61 73 65 20 74 68 61 74 0a 74 68  database that.th
15680 65 20 63 6f 6d 6d 61 6e 64 20 6d 61 64 65 20 70  e command made p
15690 72 69 6f 72 20 74 6f 20 65 6e 63 6f 75 6e 74 65  rior to encounte
156a0 72 69 6e 67 20 74 68 65 20 63 6f 6e 73 74 72 61  ring the constra
156b0 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 0a 61 72  int violation.ar
156c0 65 20 70 72 65 73 65 72 76 65 64 20 61 6e 64 20  e preserved and 
156d0 61 72 65 20 6e 6f 74 20 62 61 63 6b 65 64 20 6f  are not backed o
156e0 75 74 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c 65  ut.  For example
156f0 2c 20 69 66 20 61 6e 20 55 50 44 41 54 45 0a 73  , if an UPDATE.s
15700 74 61 74 65 6d 65 6e 74 20 65 6e 63 6f 75 6e 74  tatement encount
15710 65 72 65 64 20 61 20 63 6f 6e 73 74 72 61 69 6e  ered a constrain
15720 74 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 6e 20 74  t violation on t
15730 68 65 20 31 30 30 74 68 20 72 6f 77 20 74 68 61  he 100th row tha
15740 74 0a 69 74 20 61 74 74 65 6d 70 74 73 20 74 6f  t.it attempts to
15750 20 75 70 64 61 74 65 2c 20 74 68 65 6e 20 74 68   update, then th
15760 65 20 66 69 72 73 74 20 39 39 20 72 6f 77 20 63  e first 99 row c
15770 68 61 6e 67 65 73 20 61 72 65 20 70 72 65 73 65  hanges are prese
15780 72 76 65 64 0a 62 75 74 20 63 68 61 6e 67 65 73  rved.but changes
15790 20 74 6f 20 72 6f 77 73 20 31 30 30 20 61 6e 64   to rows 100 and
157a0 20 62 65 79 6f 6e 64 20 6e 65 76 65 72 20 6f 63   beyond never oc
157b0 63 75 72 2e 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a 3c  cur.</p></dd>..<
157c0 64 74 3e 3c 62 3e 49 47 4e 4f 52 45 3c 2f 62 3e  dt><b>IGNORE</b>
157d0 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 57 68 65  </dt>.<dd><p>Whe
157e0 6e 20 61 20 63 6f 6e 73 74 72 61 69 6e 74 20 76  n a constraint v
157f0 69 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72 73 2c  iolation occurs,
15800 20 74 68 65 20 6f 6e 65 20 72 6f 77 20 74 68 61   the one row tha
15810 74 20 63 6f 6e 74 61 69 6e 73 0a 74 68 65 20 63  t contains.the c
15820 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74  onstraint violat
15830 69 6f 6e 20 69 73 20 6e 6f 74 20 69 6e 73 65 72  ion is not inser
15840 74 65 64 20 6f 72 20 63 68 61 6e 67 65 64 2e 20  ted or changed. 
15850 20 42 75 74 20 74 68 65 20 63 6f 6d 6d 61 6e 64   But the command
15860 0a 63 6f 6e 74 69 6e 75 65 73 20 65 78 65 63 75  .continues execu
15870 74 69 6e 67 20 6e 6f 72 6d 61 6c 6c 79 2e 20 20  ting normally.  
15880 4f 74 68 65 72 20 72 6f 77 73 20 62 65 66 6f 72  Other rows befor
15890 65 20 61 6e 64 20 61 66 74 65 72 20 74 68 65 20  e and after the 
158a0 72 6f 77 20 74 68 61 74 0a 63 6f 6e 74 61 69 6e  row that.contain
158b0 65 64 20 74 68 65 20 63 6f 6e 73 74 72 61 69 6e  ed the constrain
158c0 74 20 76 69 6f 6c 61 74 69 6f 6e 20 63 6f 6e 74  t violation cont
158d0 69 6e 75 65 20 74 6f 20 62 65 20 69 6e 73 65 72  inue to be inser
158e0 74 65 64 20 6f 72 20 75 70 64 61 74 65 64 0a 6e  ted or updated.n
158f0 6f 72 6d 61 6c 6c 79 2e 20 20 4e 6f 20 65 72 72  ormally.  No err
15900 6f 72 20 69 73 20 72 65 74 75 72 6e 65 64 2e 3c  or is returned.<
15910 2f 70 3e 3c 2f 64 64 3e 0a 0a 3c 64 74 3e 3c 62  /p></dd>..<dt><b
15920 3e 52 45 50 4c 41 43 45 3c 2f 62 3e 3c 2f 64 74  >REPLACE</b></dt
15930 3e 0a 3c 64 64 3e 3c 70 3e 57 68 65 6e 20 61 20  >.<dd><p>When a 
15940 55 4e 49 51 55 45 20 63 6f 6e 73 74 72 61 69 6e  UNIQUE constrain
15950 74 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 63 63 75  t violation occu
15960 72 73 2c 20 74 68 65 20 70 72 65 2d 65 78 69 73  rs, the pre-exis
15970 74 69 6e 67 20 72 6f 77 73 0a 74 68 61 74 20 61  ting rows.that a
15980 72 65 20 63 61 75 73 69 6e 67 20 74 68 65 20 63  re causing the c
15990 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74  onstraint violat
159a0 69 6f 6e 20 61 72 65 20 72 65 6d 6f 76 65 64 20  ion are removed 
159b0 70 72 69 6f 72 20 74 6f 20 69 6e 73 65 72 74 69  prior to inserti
159c0 6e 67 0a 6f 72 20 75 70 64 61 74 69 6e 67 20 74  ng.or updating t
159d0 68 65 20 63 75 72 72 65 6e 74 20 72 6f 77 2e 20  he current row. 
159e0 20 54 68 75 73 20 74 68 65 20 69 6e 73 65 72 74   Thus the insert
159f0 20 6f 72 20 75 70 64 61 74 65 20 61 6c 77 61 79   or update alway
15a00 73 20 6f 63 63 75 72 73 2e 0a 54 68 65 20 63 6f  s occurs..The co
15a10 6d 6d 61 6e 64 20 63 6f 6e 74 69 6e 75 65 73 20  mmand continues 
15a20 65 78 65 63 75 74 69 6e 67 20 6e 6f 72 6d 61 6c  executing normal
15a30 6c 79 2e 20 20 4e 6f 20 65 72 72 6f 72 20 69 73  ly.  No error is
15a40 20 72 65 74 75 72 6e 65 64 2e 0a 49 66 20 61 20   returned..If a 
15a50 4e 4f 54 20 4e 55 4c 4c 20 63 6f 6e 73 74 72 61  NOT NULL constra
15a60 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 63  int violation oc
15a70 63 75 72 73 2c 20 74 68 65 20 4e 55 4c 4c 20 76  curs, the NULL v
15a80 61 6c 75 65 20 69 73 20 72 65 70 6c 61 63 65 64  alue is replaced
15a90 0a 62 79 20 74 68 65 20 64 65 66 61 75 6c 74 20  .by the default 
15aa0 76 61 6c 75 65 20 66 6f 72 20 74 68 61 74 20 63  value for that c
15ab0 6f 6c 75 6d 6e 2e 20 20 49 66 20 74 68 65 20 63  olumn.  If the c
15ac0 6f 6c 75 6d 6e 20 68 61 73 20 6e 6f 20 64 65 66  olumn has no def
15ad0 61 75 6c 74 0a 76 61 6c 75 65 2c 20 74 68 65 6e  ault.value, then
15ae0 20 74 68 65 20 41 42 4f 52 54 20 61 6c 67 6f 72   the ABORT algor
15af0 69 74 68 6d 20 69 73 20 75 73 65 64 2e 20 20 49  ithm is used.  I
15b00 66 20 61 20 43 48 45 43 4b 20 63 6f 6e 73 74 72  f a CHECK constr
15b10 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 0a 6f  aint violation.o
15b20 63 63 75 72 73 20 74 68 65 6e 20 74 68 65 20 49  ccurs then the I
15b30 47 4e 4f 52 45 20 61 6c 67 6f 72 69 74 68 6d 20  GNORE algorithm 
15b40 69 73 20 75 73 65 64 2e 3c 2f 70 3e 0a 0a 3c 70  is used.</p>..<p
15b50 3e 57 68 65 6e 20 74 68 69 73 20 63 6f 6e 66 6c  >When this confl
15b60 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20 73  ict resolution s
15b70 74 72 61 74 65 67 79 20 64 65 6c 65 74 65 73 20  trategy deletes 
15b80 72 6f 77 73 20 69 6e 20 6f 72 64 65 72 20 74 6f  rows in order to
15b90 0a 73 61 74 69 73 66 79 20 61 20 63 6f 6e 73 74  .satisfy a const
15ba0 72 61 69 6e 74 2c 20 69 74 20 64 6f 65 73 20 6e  raint, it does n
15bb0 6f 74 20 69 6e 76 6f 6b 65 20 5b 43 52 45 41 54  ot invoke [CREAT
15bc0 45 20 54 52 49 47 47 45 52 20 7c 20 64 65 6c 65  E TRIGGER | dele
15bd0 74 65 20 74 72 69 67 67 65 72 73 5d 0a 6f 6e 20  te triggers].on 
15be0 74 68 6f 73 65 20 72 6f 77 73 2e 20 20 4e 6f 72  those rows.  Nor
15bf0 20 69 73 20 74 68 65 20 5b 73 71 6c 69 74 65 33   is the [sqlite3
15c00 5f 75 70 64 61 74 65 5f 68 6f 6f 6b 20 7c 20 75  _update_hook | u
15c10 70 64 61 74 65 20 68 6f 6f 6b 5d 20 69 6e 76 6f  pdate hook] invo
15c20 6b 65 64 2e 0a 54 68 65 20 65 78 63 65 70 74 69  ked..The excepti
15c30 6f 6e 61 6c 20 62 65 68 61 76 69 6f 72 73 20 64  onal behaviors d
15c40 65 66 69 6e 65 64 20 69 6e 20 74 68 69 73 20 70  efined in this p
15c50 61 72 61 67 72 61 70 68 20 6d 69 67 68 74 20 63  aragraph might c
15c60 68 61 6e 67 65 20 0a 69 6e 20 61 20 66 75 74 75  hange .in a futu
15c70 72 65 20 72 65 6c 65 61 73 65 2e 3c 2f 70 3e 0a  re release.</p>.
15c80 3c 2f 64 6c 3e 0a 0a 3c 70 3e 54 68 65 20 61 6c  </dl>..<p>The al
15c90 67 6f 72 69 74 68 6d 20 73 70 65 63 69 66 69 65  gorithm specifie
15ca0 64 20 69 6e 20 74 68 65 20 4f 52 20 63 6c 61 75  d in the OR clau
15cb0 73 65 20 6f 66 20 61 20 49 4e 53 45 52 54 20 6f  se of a INSERT o
15cc0 72 20 55 50 44 41 54 45 0a 6f 76 65 72 72 69 64  r UPDATE.overrid
15cd0 65 73 20 61 6e 79 20 61 6c 67 6f 72 69 74 68 6d  es any algorithm
15ce0 20 73 70 65 63 69 66 69 65 64 20 69 6e 20 61 20   specified in a 
15cf0 43 52 45 41 54 45 20 54 41 42 4c 45 2e 0a 49 66  CREATE TABLE..If
15d00 20 6e 6f 20 61 6c 67 6f 72 69 74 68 6d 20 69 73   no algorithm is
15d10 20 73 70 65 63 69 66 69 65 64 20 61 6e 79 77 68   specified anywh
15d20 65 72 65 2c 20 74 68 65 20 41 42 4f 52 54 20 61  ere, the ABORT a
15d30 6c 67 6f 72 69 74 68 6d 20 69 73 20 75 73 65 64  lgorithm is used
15d40 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23  .</p>..<tcl>.###
15d50 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15d60 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15d70 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15d80 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15d90 23 23 23 23 23 23 23 23 23 23 23 0a 53 65 63 74  ###########.Sect
15da0 69 6f 6e 20 52 45 49 4e 44 45 58 20 72 65 69 6e  ion REINDEX rein
15db0 64 65 78 20 52 45 49 4e 44 45 58 0a 0a 42 75 62  dex REINDEX..Bub
15dc0 62 6c 65 44 69 61 67 72 61 6d 20 72 65 69 6e 64  bleDiagram reind
15dd0 65 78 2d 73 74 6d 74 20 31 0a 3c 2f 74 63 6c 3e  ex-stmt 1.</tcl>
15de0 0a 0a 3c 70 3e 54 68 65 20 52 45 49 4e 44 45 58  ..<p>The REINDEX
15df0 20 63 6f 6d 6d 61 6e 64 20 69 73 20 75 73 65 64   command is used
15e00 20 74 6f 20 64 65 6c 65 74 65 20 61 6e 64 20 72   to delete and r
15e10 65 63 72 65 61 74 65 20 69 6e 64 69 63 65 73 20  ecreate indices 
15e20 66 72 6f 6d 20 73 63 72 61 74 63 68 2e 0a 54 68  from scratch..Th
15e30 69 73 20 69 73 20 75 73 65 66 75 6c 20 77 68 65  is is useful whe
15e40 6e 20 74 68 65 20 64 65 66 69 6e 69 74 69 6f 6e  n the definition
15e50 20 6f 66 20 61 20 63 6f 6c 6c 61 74 69 6f 6e 20   of a collation 
15e60 73 65 71 75 65 6e 63 65 20 68 61 73 20 63 68 61  sequence has cha
15e70 6e 67 65 64 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 49  nged..</p>..<p>I
15e80 6e 20 74 68 65 20 66 69 72 73 74 20 66 6f 72 6d  n the first form
15e90 2c 20 61 6c 6c 20 69 6e 64 69 63 65 73 20 69 6e  , all indices in
15ea0 20 61 6c 6c 20 61 74 74 61 63 68 65 64 20 64 61   all attached da
15eb0 74 61 62 61 73 65 73 20 74 68 61 74 20 75 73 65  tabases that use
15ec0 20 74 68 65 0a 6e 61 6d 65 64 20 63 6f 6c 6c 61   the.named colla
15ed0 74 69 6f 6e 20 73 65 71 75 65 6e 63 65 20 61 72  tion sequence ar
15ee0 65 20 72 65 63 72 65 61 74 65 64 2e 20 49 6e 20  e recreated. In 
15ef0 74 68 65 20 73 65 63 6f 6e 64 20 66 6f 72 6d 2c  the second form,
15f00 20 69 66 20 0a 3c 69 3e 26 23 39 31 3b 64 61 74   if .<i>&#91;dat
15f10 61 62 61 73 65 2d 6e 61 6d 65 2e 26 23 39 33 3b  abase-name.&#93;
15f20 74 61 62 6c 65 2f 69 6e 64 65 78 2d 6e 61 6d 65  table/index-name
15f30 3c 2f 69 3e 20 69 64 65 6e 74 69 66 69 65 73 20  </i> identifies 
15f40 61 20 74 61 62 6c 65 2c 0a 74 68 65 6e 20 61 6c  a table,.then al
15f50 6c 20 69 6e 64 69 63 65 73 0a 61 73 73 6f 63 69  l indices.associ
15f60 61 74 65 64 20 77 69 74 68 20 74 68 65 20 74 61  ated with the ta
15f70 62 6c 65 20 61 72 65 20 72 65 62 75 69 6c 74 2e  ble are rebuilt.
15f80 20 49 66 20 61 6e 20 69 6e 64 65 78 20 69 73 20   If an index is 
15f90 69 64 65 6e 74 69 66 69 65 64 2c 20 74 68 65 6e  identified, then
15fa0 20 6f 6e 6c 79 0a 74 68 69 73 20 73 70 65 63 69   only.this speci
15fb0 66 69 63 20 69 6e 64 65 78 20 69 73 20 64 65 6c  fic index is del
15fc0 65 74 65 64 20 61 6e 64 20 72 65 63 72 65 61 74  eted and recreat
15fd0 65 64 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20  ed..</p>..<p>If 
15fe0 6e 6f 20 3c 69 3e 64 61 74 61 62 61 73 65 2d 6e  no <i>database-n
15ff0 61 6d 65 3c 2f 69 3e 20 69 73 20 73 70 65 63 69  ame</i> is speci
16000 66 69 65 64 20 61 6e 64 20 74 68 65 72 65 20 65  fied and there e
16010 78 69 73 74 73 20 62 6f 74 68 20 61 20 74 61 62  xists both a tab
16020 6c 65 20 6f 72 0a 69 6e 64 65 78 20 61 6e 64 20  le or.index and 
16030 61 20 63 6f 6c 6c 61 74 69 6f 6e 20 73 65 71 75  a collation sequ
16040 65 6e 63 65 20 6f 66 20 74 68 65 20 73 70 65 63  ence of the spec
16050 69 66 69 65 64 20 6e 61 6d 65 2c 20 74 68 65 6e  ified name, then
16060 20 69 6e 64 69 63 65 73 20 61 73 73 6f 63 69 61   indices associa
16070 74 65 64 0a 77 69 74 68 20 74 68 65 20 63 6f 6c  ted.with the col
16080 6c 61 74 69 6f 6e 20 73 65 71 75 65 6e 63 65 20  lation sequence 
16090 6f 6e 6c 79 20 61 72 65 20 72 65 63 6f 6e 73 74  only are reconst
160a0 72 75 63 74 65 64 2e 20 54 68 69 73 20 61 6d 62  ructed. This amb
160b0 69 67 75 69 74 79 20 6d 61 79 20 62 65 0a 64 69  iguity may be.di
160c0 73 70 65 6c 6c 65 64 20 62 79 20 61 6c 77 61 79  spelled by alway
160d0 73 20 73 70 65 63 69 66 79 69 6e 67 20 61 20 3c  s specifying a <
160e0 69 3e 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3c  i>database-name<
160f0 2f 69 3e 20 77 68 65 6e 20 72 65 69 6e 64 65 78  /i> when reindex
16100 69 6e 67 20 61 0a 73 70 65 63 69 66 69 63 20 74  ing a.specific t
16110 61 62 6c 65 20 6f 72 20 69 6e 64 65 78 2e 0a 0a  able or index...
16120 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23  <tcl>.##########
16130 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
16140 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
16150 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
16160 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
16170 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 52 45  #####.Section RE
16180 50 4c 41 43 45 20 72 65 70 6c 61 63 65 20 52 45  PLACE replace RE
16190 50 4c 41 43 45 0a 0a 3c 2f 74 63 6c 3e 0a 0a 3c  PLACE..</tcl>..<
161a0 70 3e 54 68 65 20 52 45 50 4c 41 43 45 20 63 6f  p>The REPLACE co
161b0 6d 6d 61 6e 64 20 69 73 20 61 6e 20 61 6c 69 61  mmand is an alia
161c0 73 20 66 6f 72 20 74 68 65 20 22 49 4e 53 45 52  s for the "INSER
161d0 54 20 4f 52 20 52 45 50 4c 41 43 45 22 20 76 61  T OR REPLACE" va
161e0 72 69 61 6e 74 0a 6f 66 20 74 68 65 20 3c 61 20  riant.of the <a 
161f0 68 72 65 66 3d 22 6c 61 6e 67 5f 69 6e 73 65 72  href="lang_inser
16200 74 2e 68 74 6d 6c 22 3e 49 4e 53 45 52 54 3c 2f  t.html">INSERT</
16210 61 3e 20 63 6f 6d 6d 61 6e 64 2e 20 20 0a 54 68  a> command.  .Th
16220 69 73 20 61 6c 69 61 73 20 69 73 20 70 72 6f 76  is alias is prov
16230 69 64 65 64 20 66 6f 72 0a 63 6f 6d 70 61 74 69  ided for.compati
16240 62 69 6c 69 74 79 20 77 69 74 68 20 4d 79 53 51  bility with MySQ
16250 4c 2e 20 20 53 65 65 20 74 68 65 20 0a 3c 61 20  L.  See the .<a 
16260 68 72 65 66 3d 22 6c 61 6e 67 5f 69 6e 73 65 72  href="lang_inser
16270 74 2e 68 74 6d 6c 22 3e 49 4e 53 45 52 54 3c 2f  t.html">INSERT</
16280 61 3e 20 63 6f 6d 6d 61 6e 64 20 64 6f 63 75 6d  a> command docum
16290 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 61 64 64  entation for add
162a0 69 74 69 6f 6e 61 6c 0a 69 6e 66 6f 72 6d 61 74  itional.informat
162b0 69 6f 6e 2e 3c 2f 70 3e 20 20 0a 0a 3c 74 63 6c  ion.</p>  ..<tcl
162c0 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23  >.##############
162d0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
162e0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
162f0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
16300 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
16310 23 0a 53 65 63 74 69 6f 6e 20 53 45 4c 45 43 54  #.Section SELECT
16320 20 73 65 6c 65 63 74 20 7b 53 45 4c 45 43 54 20   select {SELECT 
16330 71 75 65 72 79 7d 0a 0a 42 75 62 62 6c 65 44 69  query}..BubbleDi
16340 61 67 72 61 6d 20 73 65 6c 65 63 74 2d 73 74 6d  agram select-stm
16350 74 20 31 0a 42 75 62 62 6c 65 44 69 61 67 72 61  t 1.BubbleDiagra
16360 6d 20 73 65 6c 65 63 74 2d 63 6f 72 65 0a 42 75  m select-core.Bu
16370 62 62 6c 65 44 69 61 67 72 61 6d 20 72 65 73 75  bbleDiagram resu
16380 6c 74 2d 63 6f 6c 75 6d 6e 0a 42 75 62 62 6c 65  lt-column.Bubble
16390 44 69 61 67 72 61 6d 20 6a 6f 69 6e 2d 73 6f 75  Diagram join-sou
163a0 72 63 65 0a 42 75 62 62 6c 65 44 69 61 67 72 61  rce.BubbleDiagra
163b0 6d 20 73 69 6e 67 6c 65 2d 73 6f 75 72 63 65 0a  m single-source.
163c0 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 6a 6f  BubbleDiagram jo
163d0 69 6e 2d 6f 70 0a 42 75 62 62 6c 65 44 69 61 67  in-op.BubbleDiag
163e0 72 61 6d 20 6a 6f 69 6e 2d 63 6f 6e 73 74 72 61  ram join-constra
163f0 69 6e 74 0a 42 75 62 62 6c 65 44 69 61 67 72 61  int.BubbleDiagra
16400 6d 20 6f 72 64 65 72 69 6e 67 2d 74 65 72 6d 0a  m ordering-term.
16410 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 63 6f  BubbleDiagram co
16420 6d 70 6f 75 6e 64 2d 6f 70 65 72 61 74 6f 72 0a  mpound-operator.
16430 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20 53  </tcl>..<p>The S
16440 45 4c 45 43 54 20 73 74 61 74 65 6d 65 6e 74 20  ELECT statement 
16450 69 73 20 75 73 65 64 20 74 6f 20 71 75 65 72 79  is used to query
16460 20 74 68 65 20 64 61 74 61 62 61 73 65 2e 20 20   the database.  
16470 54 68 65 0a 72 65 73 75 6c 74 20 6f 66 20 61 20  The.result of a 
16480 53 45 4c 45 43 54 20 69 73 20 7a 65 72 6f 20 6f  SELECT is zero o
16490 72 20 6d 6f 72 65 20 72 6f 77 73 20 6f 66 20 64  r more rows of d
164a0 61 74 61 20 77 68 65 72 65 20 65 61 63 68 20 72  ata where each r
164b0 6f 77 0a 68 61 73 20 61 20 66 69 78 65 64 20 6e  ow.has a fixed n
164c0 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73  umber of columns
164d0 2e 20 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66  .  The number of
164e0 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65 0a   columns in the.
164f0 72 65 73 75 6c 74 20 69 73 20 73 70 65 63 69 66  result is specif
16500 69 65 64 20 62 79 20 74 68 65 20 65 78 70 72 65  ied by the expre
16510 73 73 69 6f 6e 20 6c 69 73 74 20 69 6e 20 62 65  ssion list in be
16520 74 77 65 65 6e 20 74 68 65 0a 53 45 4c 45 43 54  tween the.SELECT
16530 20 61 6e 64 20 46 52 4f 4d 20 6b 65 79 77 6f 72   and FROM keywor
16540 64 73 2e 20 20 41 6e 79 20 61 72 62 69 74 72 61  ds.  Any arbitra
16550 72 79 20 65 78 70 72 65 73 73 69 6f 6e 20 63 61  ry expression ca
16560 6e 20 62 65 20 75 73 65 64 0a 61 73 20 61 20 72  n be used.as a r
16570 65 73 75 6c 74 2e 20 20 49 66 20 61 20 72 65 73  esult.  If a res
16580 75 6c 74 20 65 78 70 72 65 73 73 69 6f 6e 20 69  ult expression i
16590 73 20 7d 0a 68 64 5f 70 75 74 73 20 22 5b 4f 70  s }.hd_puts "[Op
165a0 65 72 61 74 6f 72 20 2a 5d 20 74 68 65 6e 20 61  erator *] then a
165b0 6c 6c 20 63 6f 6c 75 6d 6e 73 20 6f 66 20 61 6c  ll columns of al
165c0 6c 20 74 61 62 6c 65 73 20 61 72 65 20 73 75 62  l tables are sub
165d0 73 74 69 74 75 74 65 64 5c 6e 22 0a 68 64 5f 70  stituted\n".hd_p
165e0 75 74 73 20 22 66 6f 72 20 74 68 61 74 20 6f 6e  uts "for that on
165f0 65 20 65 78 70 72 65 73 73 69 6f 6e 2e 20 20 49  e expression.  I
16600 66 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e  f the expression
16610 20 69 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 5c   is the name of\
16620 6e 22 0a 68 64 5f 70 75 74 73 20 22 61 20 74 61  n".hd_puts "a ta
16630 62 6c 65 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20  ble followed by 
16640 5b 4f 70 65 72 61 74 6f 72 20 2e 2a 5d 20 74 68  [Operator .*] th
16650 65 6e 20 74 68 65 20 72 65 73 75 6c 74 20 69 73  en the result is
16660 20 61 6c 6c 20 63 6f 6c 75 6d 6e 73 5c 6e 22 0a   all columns\n".
16670 68 64 5f 70 75 74 73 20 7b 69 6e 20 74 68 61 74  hd_puts {in that
16680 20 6f 6e 65 20 74 61 62 6c 65 2e 3c 2f 70 3e 0a   one table.</p>.
16690 0a 3c 70 3e 54 68 65 20 44 49 53 54 49 4e 43 54  .<p>The DISTINCT
166a0 20 6b 65 79 77 6f 72 64 20 63 61 75 73 65 73 20   keyword causes 
166b0 61 20 73 75 62 73 65 74 20 6f 66 20 72 65 73 75  a subset of resu
166c0 6c 74 20 72 6f 77 73 20 74 6f 20 62 65 20 72 65  lt rows to be re
166d0 74 75 72 6e 65 64 2c 20 0a 69 6e 20 77 68 69 63  turned, .in whic
166e0 68 20 65 61 63 68 20 72 65 73 75 6c 74 20 72 6f  h each result ro
166f0 77 20 69 73 20 64 69 66 66 65 72 65 6e 74 2e 20  w is different. 
16700 20 4e 55 4c 4c 20 76 61 6c 75 65 73 20 61 72 65   NULL values are
16710 20 6e 6f 74 20 74 72 65 61 74 65 64 20 61 73 20   not treated as 
16720 0a 64 69 73 74 69 6e 63 74 20 66 72 6f 6d 20 65  .distinct from e
16730 61 63 68 20 6f 74 68 65 72 2e 20 20 54 68 65 20  ach other.  The 
16740 64 65 66 61 75 6c 74 20 62 65 68 61 76 69 6f 72  default behavior
16750 20 69 73 20 74 68 61 74 20 61 6c 6c 20 72 65 73   is that all res
16760 75 6c 74 20 72 6f 77 73 20 0a 62 65 20 72 65 74  ult rows .be ret
16770 75 72 6e 65 64 2c 20 77 68 69 63 68 20 63 61 6e  urned, which can
16780 20 62 65 20 6d 61 64 65 20 65 78 70 6c 69 63 69   be made explici
16790 74 20 77 69 74 68 20 74 68 65 20 6b 65 79 77 6f  t with the keywo
167a0 72 64 20 41 4c 4c 2e 3c 2f 70 3e 0a 0a 3c 70 3e  rd ALL.</p>..<p>
167b0 54 68 65 20 71 75 65 72 79 20 69 73 20 65 78 65  The query is exe
167c0 63 75 74 65 64 20 61 67 61 69 6e 73 74 20 6f 6e  cuted against on
167d0 65 20 6f 72 20 6d 6f 72 65 20 74 61 62 6c 65 73  e or more tables
167e0 20 73 70 65 63 69 66 69 65 64 20 61 66 74 65 72   specified after
167f0 0a 74 68 65 20 46 52 4f 4d 20 6b 65 79 77 6f 72  .the FROM keywor
16800 64 2e 20 20 49 66 20 6d 75 6c 74 69 70 6c 65 20  d.  If multiple 
16810 74 61 62 6c 65 73 20 6e 61 6d 65 73 20 61 72 65  tables names are
16820 20 73 65 70 61 72 61 74 65 64 20 62 79 20 63 6f   separated by co
16830 6d 6d 61 73 2c 0a 74 68 65 6e 20 74 68 65 20 71  mmas,.then the q
16840 75 65 72 79 20 69 73 20 61 67 61 69 6e 73 74 20  uery is against 
16850 74 68 65 20 63 72 6f 73 73 20 6a 6f 69 6e 20 6f  the cross join o
16860 66 20 74 68 65 20 76 61 72 69 6f 75 73 20 74 61  f the various ta
16870 62 6c 65 73 2e 0a 54 68 65 20 66 75 6c 6c 20 53  bles..The full S
16880 51 4c 2d 39 32 20 6a 6f 69 6e 20 73 79 6e 74 61  QL-92 join synta
16890 78 20 63 61 6e 20 61 6c 73 6f 20 62 65 20 75 73  x can also be us
168a0 65 64 20 74 6f 20 73 70 65 63 69 66 79 20 6a 6f  ed to specify jo
168b0 69 6e 73 2e 0a 41 20 73 75 62 2d 71 75 65 72 79  ins..A sub-query
168c0 0a 69 6e 20 70 61 72 65 6e 74 68 65 73 65 73 20  .in parentheses 
168d0 6d 61 79 20 62 65 20 73 75 62 73 74 69 74 75 74  may be substitut
168e0 65 64 20 66 6f 72 20 61 6e 79 20 74 61 62 6c 65  ed for any table
168f0 20 6e 61 6d 65 20 69 6e 20 74 68 65 20 46 52 4f   name in the FRO
16900 4d 20 63 6c 61 75 73 65 2e 0a 54 68 65 20 65 6e  M clause..The en
16910 74 69 72 65 20 46 52 4f 4d 20 63 6c 61 75 73 65  tire FROM clause
16920 20 6d 61 79 20 62 65 20 6f 6d 69 74 74 65 64 2c   may be omitted,
16930 20 69 6e 20 77 68 69 63 68 20 63 61 73 65 20 74   in which case t
16940 68 65 20 72 65 73 75 6c 74 20 69 73 20 61 0a 73  he result is a.s
16950 69 6e 67 6c 65 20 72 6f 77 20 63 6f 6e 73 69 73  ingle row consis
16960 74 69 6e 67 20 6f 66 20 74 68 65 20 76 61 6c 75  ting of the valu
16970 65 73 20 6f 66 20 74 68 65 20 65 78 70 72 65 73  es of the expres
16980 73 69 6f 6e 20 6c 69 73 74 2e 0a 3c 2f 70 3e 0a  sion list..</p>.
16990 0a 3c 70 3e 54 68 65 20 57 48 45 52 45 20 63 6c  .<p>The WHERE cl
169a0 61 75 73 65 20 63 61 6e 20 62 65 20 75 73 65 64  ause can be used
169b0 20 74 6f 20 6c 69 6d 69 74 20 74 68 65 20 6e 75   to limit the nu
169c0 6d 62 65 72 20 6f 66 20 72 6f 77 73 20 6f 76 65  mber of rows ove
169d0 72 0a 77 68 69 63 68 20 74 68 65 20 71 75 65 72  r.which the quer
169e0 79 20 6f 70 65 72 61 74 65 73 2e 3c 2f 70 3e 0a  y operates.</p>.
169f0 0a 3c 70 3e 54 68 65 20 47 52 4f 55 50 20 42 59  .<p>The GROUP BY
16a00 20 63 6c 61 75 73 65 20 63 61 75 73 65 73 20 6f   clause causes o
16a10 6e 65 20 6f 72 20 6d 6f 72 65 20 72 6f 77 73 20  ne or more rows 
16a20 6f 66 20 74 68 65 20 72 65 73 75 6c 74 20 74 6f  of the result to
16a30 0a 62 65 20 63 6f 6d 62 69 6e 65 64 20 69 6e 74  .be combined int
16a40 6f 20 61 20 73 69 6e 67 6c 65 20 72 6f 77 20 6f  o a single row o
16a50 66 20 6f 75 74 70 75 74 2e 20 20 54 68 69 73 20  f output.  This 
16a60 69 73 20 65 73 70 65 63 69 61 6c 6c 79 20 75 73  is especially us
16a70 65 66 75 6c 0a 77 68 65 6e 20 74 68 65 20 72 65  eful.when the re
16a80 73 75 6c 74 20 63 6f 6e 74 61 69 6e 73 20 61 67  sult contains ag
16a90 67 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e  gregate function
16aa0 73 2e 20 20 54 68 65 20 65 78 70 72 65 73 73 69  s.  The expressi
16ab0 6f 6e 73 20 69 6e 0a 74 68 65 20 47 52 4f 55 50  ons in.the GROUP
16ac0 20 42 59 20 63 6c 61 75 73 65 20 64 6f 20 3c 65   BY clause do <e
16ad0 6d 3e 6e 6f 74 3c 2f 65 6d 3e 20 68 61 76 65 20  m>not</em> have 
16ae0 74 6f 20 62 65 20 65 78 70 72 65 73 73 69 6f 6e  to be expression
16af0 73 20 74 68 61 74 0a 61 70 70 65 61 72 20 69 6e  s that.appear in
16b00 20 74 68 65 20 72 65 73 75 6c 74 2e 20 20 54 68   the result.  Th
16b10 65 20 48 41 56 49 4e 47 20 63 6c 61 75 73 65 20  e HAVING clause 
16b20 69 73 20 73 69 6d 69 6c 61 72 20 74 6f 20 57 48  is similar to WH
16b30 45 52 45 20 65 78 63 65 70 74 0a 74 68 61 74 20  ERE except.that 
16b40 48 41 56 49 4e 47 20 61 70 70 6c 69 65 73 20 61  HAVING applies a
16b50 66 74 65 72 20 67 72 6f 75 70 69 6e 67 20 68 61  fter grouping ha
16b60 73 20 6f 63 63 75 72 72 65 64 2e 20 20 54 68 65  s occurred.  The
16b70 20 48 41 56 49 4e 47 20 65 78 70 72 65 73 73 69   HAVING expressi
16b80 6f 6e 0a 6d 61 79 20 72 65 66 65 72 20 74 6f 20  on.may refer to 
16b90 76 61 6c 75 65 73 2c 20 65 76 65 6e 20 61 67 67  values, even agg
16ba0 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 73  regate functions
16bb0 2c 20 74 68 61 74 20 61 72 65 20 6e 6f 74 20 69  , that are not i
16bc0 6e 20 74 68 65 20 72 65 73 75 6c 74 2e 3c 2f 70  n the result.</p
16bd0 3e 0a 0a 3c 70 3e 54 68 65 20 4f 52 44 45 52 20  >..<p>The ORDER 
16be0 42 59 20 63 6c 61 75 73 65 20 63 61 75 73 65 73  BY clause causes
16bf0 20 74 68 65 20 6f 75 74 70 75 74 20 72 6f 77 73   the output rows
16c00 20 74 6f 20 62 65 20 73 6f 72 74 65 64 2e 20 20   to be sorted.  
16c10 0a 54 68 65 20 61 72 67 75 6d 65 6e 74 20 74 6f  .The argument to
16c20 20 4f 52 44 45 52 20 42 59 20 69 73 20 61 20 6c   ORDER BY is a l
16c30 69 73 74 20 6f 66 20 65 78 70 72 65 73 73 69 6f  ist of expressio
16c40 6e 73 20 74 68 61 74 20 61 72 65 20 75 73 65 64  ns that are used
16c50 20 61 73 20 74 68 65 0a 6b 65 79 20 66 6f 72 20   as the.key for 
16c60 74 68 65 20 73 6f 72 74 2e 20 20 54 68 65 20 65  the sort.  The e
16c70 78 70 72 65 73 73 69 6f 6e 73 20 64 6f 20 6e 6f  xpressions do no
16c80 74 20 68 61 76 65 20 74 6f 20 62 65 20 70 61 72  t have to be par
16c90 74 20 6f 66 20 74 68 65 0a 72 65 73 75 6c 74 20  t of the.result 
16ca0 66 6f 72 20 61 20 73 69 6d 70 6c 65 20 53 45 4c  for a simple SEL
16cb0 45 43 54 2c 20 62 75 74 20 69 6e 20 61 20 63 6f  ECT, but in a co
16cc0 6d 70 6f 75 6e 64 20 53 45 4c 45 43 54 20 65 61  mpound SELECT ea
16cd0 63 68 20 73 6f 72 74 0a 65 78 70 72 65 73 73 69  ch sort.expressi
16ce0 6f 6e 20 6d 75 73 74 20 65 78 61 63 74 6c 79 20  on must exactly 
16cf0 6d 61 74 63 68 20 6f 6e 65 20 6f 66 20 74 68 65  match one of the
16d00 20 72 65 73 75 6c 74 20 63 6f 6c 75 6d 6e 73 2e   result columns.
16d10 20 20 45 61 63 68 0a 73 6f 72 74 20 65 78 70 72    Each.sort expr
16d20 65 73 73 69 6f 6e 20 6d 61 79 20 62 65 20 6f 70  ession may be op
16d30 74 69 6f 6e 61 6c 6c 79 20 66 6f 6c 6c 6f 77 65  tionally followe
16d40 64 20 62 79 20 61 20 43 4f 4c 4c 41 54 45 20 6b  d by a COLLATE k
16d50 65 79 77 6f 72 64 20 61 6e 64 0a 74 68 65 20 6e  eyword and.the n
16d60 61 6d 65 20 6f 66 20 61 20 63 6f 6c 6c 61 74 69  ame of a collati
16d70 6e 67 20 66 75 6e 63 74 69 6f 6e 20 75 73 65 64  ng function used
16d80 20 66 6f 72 20 6f 72 64 65 72 69 6e 67 20 74 65   for ordering te
16d90 78 74 20 61 6e 64 2f 6f 72 0a 6b 65 79 77 6f 72  xt and/or.keywor
16da0 64 73 20 41 53 43 20 6f 72 20 44 45 53 43 20 74  ds ASC or DESC t
16db0 6f 20 73 70 65 63 69 66 79 20 74 68 65 20 73 6f  o specify the so
16dc0 72 74 20 6f 72 64 65 72 2e 3c 2f 70 3e 0a 0a 3c  rt order.</p>..<
16dd0 70 3e 45 61 63 68 20 74 65 72 6d 20 6f 66 20 61  p>Each term of a
16de0 6e 20 4f 52 44 45 52 20 42 59 20 65 78 70 72 65  n ORDER BY expre
16df0 73 73 69 6f 6e 20 69 73 20 70 72 6f 63 65 73 73  ssion is process
16e00 65 64 20 61 73 20 66 6f 6c 6c 6f 77 73 3a 3c 2f  ed as follows:</
16e10 70 3e 0a 0a 3c 6f 6c 3e 0a 3c 6c 69 3e 3c 70 3e  p>..<ol>.<li><p>
16e20 49 66 20 74 68 65 20 4f 52 44 45 52 20 42 59 20  If the ORDER BY 
16e30 65 78 70 72 65 73 73 69 6f 6e 20 69 73 20 61 20  expression is a 
16e40 63 6f 6e 73 74 61 6e 74 20 69 6e 74 65 67 65 72  constant integer
16e50 20 4b 20 74 68 65 6e 20 74 68 65 0a 6f 75 74 70   K then the.outp
16e60 75 74 20 69 73 20 6f 72 64 65 72 65 64 20 62 79  ut is ordered by
16e70 20 74 68 65 20 4b 2d 74 68 20 63 6f 6c 75 6d 6e   the K-th column
16e80 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74 20 73   of the result s
16e90 65 74 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a 3c 6c 69  et.</p></li>.<li
16ea0 3e 3c 70 3e 49 66 20 74 68 65 20 4f 52 44 45 52  ><p>If the ORDER
16eb0 20 42 59 20 65 78 70 72 65 73 73 69 6f 6e 20 69   BY expression i
16ec0 73 20 61 6e 20 69 64 65 6e 74 69 66 69 65 72 20  s an identifier 
16ed0 61 6e 64 20 6f 6e 65 20 6f 66 20 74 68 65 0a 6f  and one of the.o
16ee0 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 20 68 61  utput columns ha
16ef0 73 20 61 6e 20 61 6c 69 61 73 20 62 79 20 74 68  s an alias by th
16f00 65 20 73 61 6d 65 20 6e 61 6d 65 2c 20 74 68 65  e same name, the
16f10 6e 20 74 68 65 20 6f 75 74 70 75 74 20 69 73 0a  n the output is.
16f20 6f 72 64 65 72 65 64 20 62 79 20 74 68 65 20 69  ordered by the i
16f30 64 65 6e 74 69 66 69 65 64 20 63 6f 6c 75 6d 6e  dentified column
16f40 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c  .</p></li>.<li><
16f50 70 3e 4f 74 68 65 72 77 69 73 65 2c 20 74 68 65  p>Otherwise, the
16f60 20 4f 52 44 45 52 20 42 59 20 65 78 70 72 65 73   ORDER BY expres
16f70 73 69 6f 6e 20 69 73 20 65 76 61 6c 75 61 74 65  sion is evaluate
16f80 64 20 61 6e 64 20 74 68 65 20 6f 75 74 70 75 74  d and the output
16f90 20 0a 69 73 20 6f 72 64 65 72 65 64 20 62 79 20   .is ordered by 
16fa0 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 61  the value of tha
16fb0 74 20 65 78 70 72 65 73 73 69 6f 6e 2e 3c 2f 70  t expression.</p
16fc0 3e 3c 2f 6c 69 3e 0a 3c 2f 6f 6c 3e 0a 0a 3c 70  ></li>.</ol>..<p
16fd0 3e 49 6e 20 61 20 63 6f 6d 70 6f 75 6e 64 20 53  >In a compound S
16fe0 45 4c 45 43 54 20 73 74 61 74 65 6d 65 6e 74 2c  ELECT statement,
16ff0 20 74 68 65 20 74 68 69 72 64 20 4f 52 44 45 52   the third ORDER
17000 20 42 59 20 6d 61 74 63 68 69 6e 67 20 72 75 6c   BY matching rul
17010 65 0a 72 65 71 75 69 72 65 73 20 74 68 61 74 20  e.requires that 
17020 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20 62  the expression b
17030 65 20 69 64 65 6e 74 69 63 61 6c 20 74 6f 20 6f  e identical to o
17040 6e 65 20 6f 66 20 74 68 65 20 63 6f 6c 75 6d 6e  ne of the column
17050 73 20 69 6e 0a 74 68 65 20 72 65 73 75 6c 74 20  s in.the result 
17060 73 65 74 2e 20 20 54 68 65 20 74 68 72 65 65 20  set.  The three 
17070 72 75 6c 65 73 20 61 72 65 20 66 69 72 73 74 20  rules are first 
17080 61 70 70 6c 69 65 64 20 74 6f 20 74 68 65 20 6c  applied to the l
17090 65 66 74 2d 6d 6f 73 74 0a 53 45 4c 45 43 54 20  eft-most.SELECT 
170a0 69 6e 20 74 68 65 20 63 6f 6d 70 6f 75 6e 64 2e  in the compound.
170b0 20 20 49 66 20 61 20 6d 61 74 63 68 20 69 73 20    If a match is 
170c0 66 6f 75 6e 64 2c 20 74 68 65 20 73 65 61 72 63  found, the searc
170d0 68 20 73 74 6f 70 73 2e 20 20 4f 74 68 65 72 77  h stops.  Otherw
170e0 69 73 65 2c 0a 74 68 65 20 6e 65 78 74 20 53 45  ise,.the next SE
170f0 4c 45 43 54 20 74 6f 20 74 68 65 20 72 69 67 68  LECT to the righ
17100 74 20 69 73 20 74 72 69 65 64 2e 20 20 54 68 69  t is tried.  Thi
17110 73 20 63 6f 6e 74 69 6e 75 65 73 20 75 6e 74 69  s continues unti
17120 6c 20 61 20 6d 61 74 63 68 0a 69 73 20 66 6f 75  l a match.is fou
17130 6e 64 2e 20 20 45 61 63 68 20 74 65 72 6d 20 6f  nd.  Each term o
17140 66 20 74 68 65 20 4f 52 44 45 52 20 42 59 20 63  f the ORDER BY c
17150 6c 61 75 73 65 20 69 73 20 70 72 6f 63 65 73 73  lause is process
17160 65 64 20 73 65 70 61 72 61 74 65 6c 79 20 0a 61  ed separately .a
17170 6e 64 20 6d 61 79 20 63 6f 6d 65 20 66 72 6f 6d  nd may come from
17180 20 64 69 66 66 65 72 65 6e 74 20 53 45 4c 45 43   different SELEC
17190 54 20 73 74 61 74 65 6d 65 6e 74 73 20 69 6e 20  T statements in 
171a0 74 68 65 20 63 6f 6d 70 6f 75 6e 64 2e 3c 2f 70  the compound.</p
171b0 3e 0a 0a 3c 70 3e 54 68 65 20 4c 49 4d 49 54 20  >..<p>The LIMIT 
171c0 63 6c 61 75 73 65 20 70 6c 61 63 65 73 20 61 6e  clause places an
171d0 20 75 70 70 65 72 20 62 6f 75 6e 64 20 6f 6e 20   upper bound on 
171e0 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 72 6f  the number of ro
171f0 77 73 0a 72 65 74 75 72 6e 65 64 20 69 6e 20 74  ws.returned in t
17200 68 65 20 72 65 73 75 6c 74 2e 20 20 41 20 6e 65  he result.  A ne
17210 67 61 74 69 76 65 20 4c 49 4d 49 54 20 69 6e 64  gative LIMIT ind
17220 69 63 61 74 65 73 20 6e 6f 20 75 70 70 65 72 20  icates no upper 
17230 62 6f 75 6e 64 2e 0a 54 68 65 20 6f 70 74 69 6f  bound..The optio
17240 6e 61 6c 20 4f 46 46 53 45 54 20 66 6f 6c 6c 6f  nal OFFSET follo
17250 77 69 6e 67 20 4c 49 4d 49 54 20 73 70 65 63 69  wing LIMIT speci
17260 66 69 65 73 20 68 6f 77 20 6d 61 6e 79 0a 72 6f  fies how many.ro
17270 77 73 20 74 6f 20 73 6b 69 70 20 61 74 20 74 68  ws to skip at th
17280 65 20 62 65 67 69 6e 6e 69 6e 67 20 6f 66 20 74  e beginning of t
17290 68 65 20 72 65 73 75 6c 74 20 73 65 74 2e 0a 49  he result set..I
172a0 6e 20 61 20 63 6f 6d 70 6f 75 6e 64 20 71 75 65  n a compound que
172b0 72 79 2c 20 74 68 65 20 4c 49 4d 49 54 20 63 6c  ry, the LIMIT cl
172c0 61 75 73 65 20 6d 61 79 20 6f 6e 6c 79 20 61 70  ause may only ap
172d0 70 65 61 72 20 6f 6e 20 74 68 65 0a 66 69 6e 61  pear on the.fina
172e0 6c 20 53 45 4c 45 43 54 20 73 74 61 74 65 6d 65  l SELECT stateme
172f0 6e 74 2e 0a 54 68 65 20 6c 69 6d 69 74 20 69 73  nt..The limit is
17300 20 61 70 70 6c 69 65 64 20 74 6f 20 74 68 65 20   applied to the 
17310 65 6e 74 69 72 65 20 71 75 65 72 79 20 6e 6f 74  entire query not
17320 0a 74 6f 20 74 68 65 20 69 6e 64 69 76 69 64 75  .to the individu
17330 61 6c 20 53 45 4c 45 43 54 20 73 74 61 74 65 6d  al SELECT statem
17340 65 6e 74 20 74 6f 20 77 68 69 63 68 20 69 74 20  ent to which it 
17350 69 73 20 61 74 74 61 63 68 65 64 2e 0a 4e 6f 74  is attached..Not
17360 65 20 74 68 61 74 20 69 66 20 74 68 65 20 4f 46  e that if the OF
17370 46 53 45 54 20 6b 65 79 77 6f 72 64 20 69 73 20  FSET keyword is 
17380 75 73 65 64 20 69 6e 20 74 68 65 20 4c 49 4d 49  used in the LIMI
17390 54 20 63 6c 61 75 73 65 2c 20 74 68 65 6e 20 74  T clause, then t
173a0 68 65 0a 6c 69 6d 69 74 20 69 73 20 74 68 65 20  he.limit is the 
173b0 66 69 72 73 74 20 6e 75 6d 62 65 72 20 61 6e 64  first number and
173c0 20 74 68 65 20 6f 66 66 73 65 74 20 69 73 20 74   the offset is t
173d0 68 65 20 73 65 63 6f 6e 64 20 6e 75 6d 62 65 72  he second number
173e0 2e 20 20 49 66 20 61 0a 63 6f 6d 6d 61 20 69 73  .  If a.comma is
173f0 20 75 73 65 64 20 69 6e 73 74 65 61 64 20 6f 66   used instead of
17400 20 74 68 65 20 4f 46 46 53 45 54 20 6b 65 79 77   the OFFSET keyw
17410 6f 72 64 2c 20 74 68 65 6e 20 74 68 65 20 6f 66  ord, then the of
17420 66 73 65 74 20 69 73 20 74 68 65 0a 66 69 72 73  fset is the.firs
17430 74 20 6e 75 6d 62 65 72 20 61 6e 64 20 74 68 65  t number and the
17440 20 6c 69 6d 69 74 20 69 73 20 74 68 65 20 73 65   limit is the se
17450 63 6f 6e 64 20 6e 75 6d 62 65 72 2e 20 20 54 68  cond number.  Th
17460 69 73 20 73 65 65 6d 69 6e 67 0a 63 6f 6e 74 72  is seeming.contr
17470 61 64 69 74 69 6f 6e 20 69 73 20 69 6e 74 65 6e  adition is inten
17480 74 69 6f 6e 61 6c 20 2d 20 69 74 20 6d 61 78 69  tional - it maxi
17490 6d 69 7a 65 73 20 63 6f 6d 70 61 74 69 62 69 6c  mizes compatibil
174a0 69 74 79 20 77 69 74 68 20 6c 65 67 61 63 79 0a  ity with legacy.
174b0 53 51 4c 20 64 61 74 61 62 61 73 65 20 73 79 73  SQL database sys
174c0 74 65 6d 73 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 41  tems..</p>..<p>A
174d0 20 63 6f 6d 70 6f 75 6e 64 20 53 45 4c 45 43 54   compound SELECT
174e0 20 69 73 20 66 6f 72 6d 65 64 20 66 72 6f 6d 20   is formed from 
174f0 74 77 6f 20 6f 72 20 6d 6f 72 65 20 73 69 6d 70  two or more simp
17500 6c 65 20 53 45 4c 45 43 54 73 20 63 6f 6e 6e 65  le SELECTs conne
17510 63 74 65 64 0a 62 79 20 6f 6e 65 20 6f 66 20 74  cted.by one of t
17520 68 65 20 6f 70 65 72 61 74 6f 72 73 20 55 4e 49  he operators UNI
17530 4f 4e 2c 20 55 4e 49 4f 4e 20 41 4c 4c 2c 20 49  ON, UNION ALL, I
17540 4e 54 45 52 53 45 43 54 2c 20 6f 72 20 45 58 43  NTERSECT, or EXC
17550 45 50 54 2e 20 20 49 6e 0a 61 20 63 6f 6d 70 6f  EPT.  In.a compo
17560 75 6e 64 20 53 45 4c 45 43 54 2c 20 61 6c 6c 20  und SELECT, all 
17570 74 68 65 20 63 6f 6e 73 74 69 74 75 65 6e 74 20  the constituent 
17580 53 45 4c 45 43 54 73 20 6d 75 73 74 20 73 70 65  SELECTs must spe
17590 63 69 66 79 20 74 68 65 0a 73 61 6d 65 20 6e 75  cify the.same nu
175a0 6d 62 65 72 20 6f 66 20 72 65 73 75 6c 74 20 63  mber of result c
175b0 6f 6c 75 6d 6e 73 2e 20 20 54 68 65 72 65 20 6d  olumns.  There m
175c0 61 79 20 62 65 20 6f 6e 6c 79 20 61 20 73 69 6e  ay be only a sin
175d0 67 6c 65 20 4f 52 44 45 52 20 42 59 0a 63 6c 61  gle ORDER BY.cla
175e0 75 73 65 20 61 74 20 74 68 65 20 65 6e 64 20 6f  use at the end o
175f0 66 20 74 68 65 20 63 6f 6d 70 6f 75 6e 64 20 53  f the compound S
17600 45 4c 45 43 54 2e 20 20 54 68 65 20 55 4e 49 4f  ELECT.  The UNIO
17610 4e 20 61 6e 64 20 55 4e 49 4f 4e 20 41 4c 4c 0a  N and UNION ALL.
17620 6f 70 65 72 61 74 6f 72 73 20 63 6f 6d 62 69 6e  operators combin
17630 65 20 74 68 65 20 72 65 73 75 6c 74 73 20 6f 66  e the results of
17640 20 74 68 65 20 53 45 4c 45 43 54 73 20 74 6f 20   the SELECTs to 
17650 74 68 65 20 72 69 67 68 74 20 61 6e 64 20 6c 65  the right and le
17660 66 74 20 69 6e 74 6f 0a 61 20 73 69 6e 67 6c 65  ft into.a single
17670 20 62 69 67 20 74 61 62 6c 65 2e 20 20 54 68 65   big table.  The
17680 20 64 69 66 66 65 72 65 6e 63 65 20 69 73 20 74   difference is t
17690 68 61 74 20 69 6e 20 55 4e 49 4f 4e 20 61 6c 6c  hat in UNION all
176a0 20 72 65 73 75 6c 74 20 72 6f 77 73 0a 61 72 65   result rows.are
176b0 20 64 69 73 74 69 6e 63 74 20 77 68 65 72 65 20   distinct where 
176c0 69 6e 20 55 4e 49 4f 4e 20 41 4c 4c 20 74 68 65  in UNION ALL the
176d0 72 65 20 6d 61 79 20 62 65 20 64 75 70 6c 69 63  re may be duplic
176e0 61 74 65 73 2e 0a 54 68 65 20 49 4e 54 45 52 53  ates..The INTERS
176f0 45 43 54 20 6f 70 65 72 61 74 6f 72 20 74 61 6b  ECT operator tak
17700 65 73 20 74 68 65 20 69 6e 74 65 72 73 65 63 74  es the intersect
17710 69 6f 6e 20 6f 66 20 74 68 65 20 72 65 73 75 6c  ion of the resul
17720 74 73 20 6f 66 20 74 68 65 0a 6c 65 66 74 20 61  ts of the.left a
17730 6e 64 20 72 69 67 68 74 20 53 45 4c 45 43 54 73  nd right SELECTs
17740 2e 20 20 45 58 43 45 50 54 20 74 61 6b 65 73 20  .  EXCEPT takes 
17750 74 68 65 20 72 65 73 75 6c 74 20 6f 66 20 6c 65  the result of le
17760 66 74 20 53 45 4c 45 43 54 20 61 66 74 65 72 0a  ft SELECT after.
17770 72 65 6d 6f 76 69 6e 67 20 74 68 65 20 72 65 73  removing the res
17780 75 6c 74 73 20 6f 66 20 74 68 65 20 72 69 67 68  ults of the righ
17790 74 20 53 45 4c 45 43 54 2e 20 20 57 68 65 6e 20  t SELECT.  When 
177a0 74 68 72 65 65 20 6f 72 20 6d 6f 72 65 20 53 45  three or more SE
177b0 4c 45 43 54 73 0a 61 72 65 20 63 6f 6e 6e 65 63  LECTs.are connec
177c0 74 65 64 20 69 6e 74 6f 20 61 20 63 6f 6d 70 6f  ted into a compo
177d0 75 6e 64 2c 20 74 68 65 79 20 67 72 6f 75 70 20  und, they group 
177e0 66 72 6f 6d 20 6c 65 66 74 20 74 6f 20 72 69 67  from left to rig
177f0 68 74 2e 3c 2f 70 3e 0a 0a 0a 3c 74 63 6c 3e 0a  ht.</p>...<tcl>.
17800 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17810 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17820 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17830 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17840 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 53  ##############.S
17850 65 63 74 69 6f 6e 20 55 50 44 41 54 45 20 75 70  ection UPDATE up
17860 64 61 74 65 20 7b 55 50 44 41 54 45 20 55 50 44  date {UPDATE UPD
17870 41 54 45 73 7d 0a 0a 42 75 62 62 6c 65 44 69 61  ATEs}..BubbleDia
17880 67 72 61 6d 20 75 70 64 61 74 65 2d 73 74 6d 74  gram update-stmt
17890 20 31 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d   1.BubbleDiagram
178a0 20 71 75 61 6c 69 66 69 65 64 2d 74 61 62 6c 65   qualified-table
178b0 2d 6e 61 6d 65 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70  -name.</tcl>..<p
178c0 3e 54 68 65 20 55 50 44 41 54 45 20 73 74 61 74  >The UPDATE stat
178d0 65 6d 65 6e 74 20 69 73 20 75 73 65 64 20 74 6f  ement is used to
178e0 20 63 68 61 6e 67 65 20 74 68 65 20 76 61 6c 75   change the valu
178f0 65 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20  e of columns in 
17900 0a 73 65 6c 65 63 74 65 64 20 72 6f 77 73 20 6f  .selected rows o
17910 66 20 61 20 74 61 62 6c 65 2e 20 20 45 61 63 68  f a table.  Each
17920 20 61 73 73 69 67 6e 6d 65 6e 74 20 69 6e 20 61   assignment in a
17930 6e 20 55 50 44 41 54 45 20 73 70 65 63 69 66 69  n UPDATE specifi
17940 65 73 0a 61 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65  es.a column name
17950 20 74 6f 20 74 68 65 20 6c 65 66 74 20 6f 66 20   to the left of 
17960 74 68 65 20 65 71 75 61 6c 73 20 73 69 67 6e 20  the equals sign 
17970 61 6e 64 20 61 6e 20 61 72 62 69 74 72 61 72 79  and an arbitrary
17980 20 65 78 70 72 65 73 73 69 6f 6e 0a 74 6f 20 74   expression.to t
17990 68 65 20 72 69 67 68 74 2e 20 20 54 68 65 20 65  he right.  The e
179a0 78 70 72 65 73 73 69 6f 6e 73 20 6d 61 79 20 75  xpressions may u
179b0 73 65 20 74 68 65 20 76 61 6c 75 65 73 20 6f 66  se the values of
179c0 20 6f 74 68 65 72 20 63 6f 6c 75 6d 6e 73 2e 0a   other columns..
179d0 41 6c 6c 20 65 78 70 72 65 73 73 69 6f 6e 73 20  All expressions 
179e0 61 72 65 20 65 76 61 6c 75 61 74 65 64 20 62 65  are evaluated be
179f0 66 6f 72 65 20 61 6e 79 20 61 73 73 69 67 6e 6d  fore any assignm
17a00 65 6e 74 73 20 61 72 65 20 6d 61 64 65 2e 0a 41  ents are made..A
17a10 20 57 48 45 52 45 20 63 6c 61 75 73 65 20 63 61   WHERE clause ca
17a20 6e 20 62 65 20 75 73 65 64 20 74 6f 20 72 65 73  n be used to res
17a30 74 72 69 63 74 20 77 68 69 63 68 20 72 6f 77 73  trict which rows
17a40 20 61 72 65 20 75 70 64 61 74 65 64 2e 3c 2f 70   are updated.</p
17a50 3e 0a 0a 3c 70 3e 54 68 65 20 6f 70 74 69 6f 6e  >..<p>The option
17a60 61 6c 20 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75  al conflict-clau
17a70 73 65 20 61 6c 6c 6f 77 73 20 74 68 65 20 73 70  se allows the sp
17a80 65 63 69 66 69 63 61 74 69 6f 6e 20 6f 66 20 61  ecification of a
17a90 6e 20 61 6c 74 65 72 6e 61 74 69 76 65 0a 63 6f  n alternative.co
17aa0 6e 73 74 72 61 69 6e 74 20 63 6f 6e 66 6c 69 63  nstraint conflic
17ab0 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67  t resolution alg
17ac0 6f 72 69 74 68 6d 20 74 6f 20 75 73 65 20 64 75  orithm to use du
17ad0 72 69 6e 67 20 74 68 69 73 20 6f 6e 65 20 63 6f  ring this one co
17ae0 6d 6d 61 6e 64 2e 0a 53 65 65 20 74 68 65 20 73  mmand..See the s
17af0 65 63 74 69 6f 6e 20 74 69 74 6c 65 64 0a 5b 4f  ection titled.[O
17b00 4e 20 43 4f 4e 46 4c 49 43 54 5d 20 66 6f 72 20  N CONFLICT] for 
17b10 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72  additional infor
17b20 6d 61 74 69 6f 6e 2e 3c 2f 70 3e 0a 0a 3c 68 33  mation.</p>..<h3
17b30 3e 52 65 73 74 72 69 63 74 69 6f 6e 73 20 6f 6e  >Restrictions on
17b40 20 55 50 44 41 54 45 20 53 74 61 74 65 6d 65 6e   UPDATE Statemen
17b50 74 73 20 57 69 74 68 69 6e 20 43 52 45 41 54 45  ts Within CREATE
17b60 20 54 52 49 47 47 45 52 3c 2f 68 33 3e 0a 0a 3c   TRIGGER</h3>..<
17b70 70 3e 54 68 65 72 65 20 61 72 65 20 61 64 64 69  p>There are addi
17b80 74 69 6f 6e 61 6c 20 73 79 6e 74 61 78 20 72 65  tional syntax re
17b90 73 74 72 69 63 74 69 6f 6e 73 20 6f 6e 20 55 50  strictions on UP
17ba0 44 41 54 45 20 73 74 61 74 65 6d 65 6e 74 73 20  DATE statements 
17bb0 74 68 61 74 0a 6f 63 63 75 72 20 77 69 74 68 69  that.occur withi
17bc0 6e 20 74 68 65 20 62 6f 64 79 20 6f 66 20 61 20  n the body of a 
17bd0 5b 43 52 45 41 54 45 20 54 52 49 47 47 45 52 5d  [CREATE TRIGGER]
17be0 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 54 68 65   statement.  The
17bf0 20 3c 69 3e 74 61 62 6c 65 2d 6e 61 6d 65 3c 2f   <i>table-name</
17c00 69 3e 0a 6d 75 73 74 20 62 65 20 75 6e 71 75 61  i>.must be unqua
17c10 6c 69 66 69 65 64 2e 20 0a 49 6e 20 6f 74 68 65  lified. .In othe
17c20 72 20 77 6f 72 64 73 2c 20 74 68 65 20 3c 69 3e  r words, the <i>
17c30 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3c 2f 69  database-name</i
17c40 3e 3c 62 3e 2e 3c 2f 62 3e 20 70 72 65 66 69 78  ><b>.</b> prefix
17c50 0a 6f 6e 20 74 68 65 20 74 61 62 6c 65 20 6e 61  .on the table na
17c60 6d 65 20 69 73 20 6e 6f 74 20 61 6c 6c 6f 77 65  me is not allowe
17c70 64 20 77 69 74 68 69 6e 20 74 72 69 67 67 65 72  d within trigger
17c80 73 2e 20 0a 54 68 65 20 74 61 62 6c 65 20 74 6f  s. .The table to
17c90 20 62 65 20 6d 6f 64 69 66 69 65 64 20 6d 75 73   be modified mus
17ca0 74 20 62 65 20 69 6e 20 74 68 65 20 73 61 6d 65  t be in the same
17cb0 0a 64 61 74 61 62 61 73 65 20 61 73 20 74 68 65  .database as the
17cc0 20 74 61 62 6c 65 20 74 6f 20 77 68 69 63 68 20   table to which 
17cd0 74 68 65 20 74 72 69 67 67 65 72 20 69 73 20 61  the trigger is a
17ce0 74 74 61 63 68 65 64 2e 3c 2f 70 3e 0a 0a 3c 70  ttached.</p>..<p
17cf0 3e 54 68 65 20 49 4e 44 45 58 45 44 20 42 59 20  >The INDEXED BY 
17d00 61 6e 64 20 4e 4f 54 20 49 4e 44 45 58 45 44 20  and NOT INDEXED 
17d10 63 6c 61 75 73 65 73 20 61 72 65 20 6e 6f 74 20  clauses are not 
17d20 61 6c 6c 6f 77 65 64 20 6f 6e 20 55 50 44 41 54  allowed on UPDAT
17d30 45 0a 73 74 61 74 65 6d 65 6e 74 73 20 77 69 74  E.statements wit
17d40 68 69 6e 20 74 72 69 67 67 65 72 73 2e 3c 2f 70  hin triggers.</p
17d50 3e 0a 0a 3c 70 3e 54 68 65 20 4c 49 4d 49 54 20  >..<p>The LIMIT 
17d60 63 6c 61 75 73 65 20 28 64 65 73 63 72 69 62 65  clause (describe
17d70 64 20 62 65 6c 6f 77 29 20 69 73 20 75 6e 73 75  d below) is unsu
17d80 70 70 6f 72 74 65 64 20 77 69 74 68 69 6e 20 74  pported within t
17d90 72 69 67 67 65 72 73 2e 3c 2f 70 3e 0a 0a 3c 68  riggers.</p>..<h
17da0 33 3e 4f 70 74 69 6f 6e 61 6c 20 4c 49 4d 49 54  3>Optional LIMIT
17db0 20 61 6e 64 20 4f 52 44 45 52 20 42 59 20 43 6c   and ORDER BY Cl
17dc0 61 75 73 65 73 3c 2f 68 33 3e 0a 0a 3c 70 3e 49  auses</h3>..<p>I
17dd0 66 20 53 51 4c 69 74 65 20 69 73 20 62 75 69 6c  f SQLite is buil
17de0 74 20 77 69 74 68 20 74 68 65 20 5b 53 51 4c 49  t with the [SQLI
17df0 54 45 5f 45 4e 41 42 4c 45 5f 55 50 44 41 54 45  TE_ENABLE_UPDATE
17e00 5f 44 45 4c 45 54 45 5f 4c 49 4d 49 54 5d 0a 63  _DELETE_LIMIT].c
17e10 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
17e20 6f 6e 20 74 68 65 6e 20 74 68 65 20 73 79 6e 74  on then the synt
17e30 61 78 20 6f 66 20 74 68 65 20 55 50 44 41 54 45  ax of the UPDATE
17e40 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 65 78   statement is ex
17e50 74 65 6e 64 65 64 0a 77 69 74 68 20 6f 70 74 69  tended.with opti
17e60 6f 6e 61 6c 20 4f 52 44 45 52 20 42 59 20 61 6e  onal ORDER BY an
17e70 64 20 4c 49 4d 49 54 20 63 6c 61 75 73 65 73 20  d LIMIT clauses 
17e80 61 73 20 66 6f 6c 6c 6f 77 73 3a 3c 2f 70 3e 0a  as follows:</p>.
17e90 0a 3c 74 63 6c 3e 42 75 62 62 6c 65 44 69 61 67  .<tcl>BubbleDiag
17ea0 72 61 6d 20 75 70 64 61 74 65 2d 73 74 6d 74 2d  ram update-stmt-
17eb0 6c 69 6d 69 74 65 64 3c 2f 74 63 6c 3e 0a 0a 3c  limited</tcl>..<
17ec0 70 3e 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20 4c  p>The optional L
17ed0 49 4d 49 54 20 63 6c 61 75 73 65 20 63 61 6e 20  IMIT clause can 
17ee0 62 65 20 75 73 65 64 20 74 6f 20 6c 69 6d 69 74  be used to limit
17ef0 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 0a 72   the number of.r
17f00 6f 77 73 20 6d 6f 64 69 66 65 64 2c 20 61 6e 64  ows modifed, and
17f10 20 74 68 65 72 65 62 79 20 6c 69 6d 69 74 20 74   thereby limit t
17f20 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20 74  he size of the t
17f30 72 61 6e 73 61 63 74 69 6f 6e 2e 0a 54 68 65 20  ransaction..The 
17f40 4f 52 44 45 52 20 42 59 20 63 6c 61 75 73 65 20  ORDER BY clause 
17f50 69 73 20 75 73 65 64 20 6f 6e 6c 79 20 74 6f 20  is used only to 
17f60 64 65 74 65 72 6d 69 6e 65 20 77 68 69 63 68 20  determine which 
17f70 72 6f 77 73 20 66 61 6c 6c 0a 77 69 74 68 69 6e  rows fall.within
17f80 20 74 68 65 20 4c 49 4d 49 54 2e 20 20 54 68 65   the LIMIT.  The
17f90 20 6f 72 64 65 72 20 69 6e 20 77 68 69 63 68 20   order in which 
17fa0 72 6f 77 73 20 61 72 65 20 6d 6f 64 69 66 69 65  rows are modifie
17fb0 64 20 69 73 20 61 72 62 69 74 72 61 72 79 0a 61  d is arbitrary.a
17fc0 6e 64 20 69 73 20 6e 6f 74 20 64 65 74 65 72 6d  nd is not determ
17fd0 69 6e 65 64 20 62 79 20 74 68 65 20 4f 52 44 45  ined by the ORDE
17fe0 52 20 42 59 20 63 6c 61 75 73 65 2e 3c 2f 70 3e  R BY clause.</p>
17ff0 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23  ..<tcl>.########
18000 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18010 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18020 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18030 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18040 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 56  ######.Section V
18050 41 43 55 55 4d 20 76 61 63 75 75 6d 20 56 41 43  ACUUM vacuum VAC
18060 55 55 4d 0a 0a 42 75 62 62 6c 65 44 69 61 67 72  UUM..BubbleDiagr
18070 61 6d 20 76 61 63 75 75 6d 2d 73 74 6d 74 20 31  am vacuum-stmt 1
18080 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 57 68 65 6e  .</tcl>..<p>When
18090 20 61 6e 20 6f 62 6a 65 63 74 20 28 74 61 62 6c   an object (tabl
180a0 65 2c 20 69 6e 64 65 78 2c 20 6f 72 20 74 72 69  e, index, or tri
180b0 67 67 65 72 29 20 69 73 20 64 72 6f 70 70 65 64  gger) is dropped
180c0 20 66 72 6f 6d 20 74 68 65 20 0a 64 61 74 61 62   from the .datab
180d0 61 73 65 2c 20 69 74 20 6c 65 61 76 65 73 20 62  ase, it leaves b
180e0 65 68 69 6e 64 20 65 6d 70 74 79 20 73 70 61 63  ehind empty spac
180f0 65 2e 20 0a 54 68 69 73 20 65 6d 70 74 79 20 73  e. .This empty s
18100 70 61 63 65 20 77 69 6c 6c 20 62 65 20 72 65 75  pace will be reu
18110 73 65 64 20 74 68 65 20 6e 65 78 74 20 74 69 6d  sed the next tim
18120 65 20 6e 65 77 20 69 6e 66 6f 72 6d 61 74 69 6f  e new informatio
18130 6e 20 69 73 0a 61 64 64 65 64 20 74 6f 20 74 68  n is.added to th
18140 65 20 64 61 74 61 62 61 73 65 2e 20 20 42 75 74  e database.  But
18150 20 69 6e 20 74 68 65 20 6d 65 61 6e 74 69 6d 65   in the meantime
18160 2c 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66  , the database f
18170 69 6c 65 20 6d 69 67 68 74 0a 62 65 20 6c 61 72  ile might.be lar
18180 67 65 72 20 74 68 61 6e 20 73 74 72 69 63 74 6c  ger than strictl
18190 79 20 6e 65 63 65 73 73 61 72 79 2e 20 20 41 6c  y necessary.  Al
181a0 73 6f 2c 20 66 72 65 71 75 65 6e 74 20 69 6e 73  so, frequent ins
181b0 65 72 74 73 2c 20 75 70 64 61 74 65 73 2c 0a 61  erts, updates,.a
181c0 6e 64 20 64 65 6c 65 74 65 73 20 63 61 6e 20 63  nd deletes can c
181d0 61 75 73 65 20 74 68 65 20 69 6e 66 6f 72 6d 61  ause the informa
181e0 74 69 6f 6e 20 69 6e 20 74 68 65 20 64 61 74 61  tion in the data
181f0 62 61 73 65 20 74 6f 20 62 65 63 6f 6d 65 0a 66  base to become.f
18200 72 61 67 6d 65 6e 74 65 64 20 2d 20 73 63 72 61  ragmented - scra
18210 74 74 65 72 65 64 20 6f 75 74 20 61 6c 6c 20 61  ttered out all a
18220 63 72 6f 73 73 20 74 68 65 20 64 61 74 61 62 61  cross the databa
18230 73 65 20 66 69 6c 65 20 72 61 74 68 65 72 0a 74  se file rather.t
18240 68 61 6e 20 63 6c 75 73 74 65 72 65 64 20 74 6f  han clustered to
18250 67 65 74 68 65 72 20 69 6e 20 6f 6e 65 20 70 6c  gether in one pl
18260 61 63 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  ace.</p>..<p>The
18270 20 56 41 43 55 55 4d 20 63 6f 6d 6d 61 6e 64 20   VACUUM command 
18280 63 6c 65 61 6e 73 0a 74 68 65 20 6d 61 69 6e 20  cleans.the main 
18290 64 61 74 61 62 61 73 65 20 62 79 20 63 6f 70 79  database by copy
182a0 69 6e 67 20 69 74 73 20 63 6f 6e 74 65 6e 74 73  ing its contents
182b0 20 74 6f 20 61 20 74 65 6d 70 6f 72 61 72 79 20   to a temporary 
182c0 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 61 6e  database file an
182d0 64 20 0a 72 65 6c 6f 61 64 69 6e 67 20 74 68 65  d .reloading the
182e0 20 6f 72 69 67 69 6e 61 6c 20 64 61 74 61 62 61   original databa
182f0 73 65 20 66 69 6c 65 20 66 72 6f 6d 20 74 68 65  se file from the
18300 20 63 6f 70 79 2e 20 20 54 68 69 73 20 65 6c 69   copy.  This eli
18310 6d 69 6e 61 74 65 73 20 0a 66 72 65 65 20 70 61  minates .free pa
18320 67 65 73 2c 20 20 61 6c 69 67 6e 73 20 74 61 62  ges,  aligns tab
18330 6c 65 20 64 61 74 61 20 74 6f 20 62 65 20 63 6f  le data to be co
18340 6e 74 69 67 75 6f 75 73 2c 20 61 6e 64 20 6f 74  ntiguous, and ot
18350 68 65 72 77 69 73 65 20 63 6c 65 61 6e 73 20 0a  herwise cleans .
18360 75 70 20 74 68 65 20 64 61 74 61 62 61 73 65 20  up the database 
18370 66 69 6c 65 20 73 74 72 75 63 74 75 72 65 2e 3c  file structure.<
18380 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 56 41 43 55  /p>..<p>The VACU
18390 55 4d 20 63 6f 6d 6d 61 6e 64 20 6d 61 79 20 63  UM command may c
183a0 68 61 6e 67 65 20 74 68 65 20 0a 5b 52 4f 57 49  hange the .[ROWI
183b0 44 20 7c 20 52 4f 57 49 44 73 5d 20 6f 66 20 65  D | ROWIDs] of e
183c0 6e 74 72 69 65 73 20 69 6e 20 74 61 62 6c 65 73  ntries in tables
183d0 20 74 68 61 74 20 64 6f 0a 6e 6f 74 20 68 61 76   that do.not hav
183e0 65 20 61 6e 20 65 78 70 6c 69 63 69 74 20 5b 49  e an explicit [I
183f0 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b  NTEGER PRIMARY K
18400 45 59 5d 2e 3c 2f 70 3e 0a 0a 3c 70 3e 56 41 43  EY].</p>..<p>VAC
18410 55 55 4d 20 6f 6e 6c 79 20 77 6f 72 6b 73 20 6f  UUM only works o
18420 6e 20 74 68 65 20 6d 61 69 6e 20 64 61 74 61 62  n the main datab
18430 61 73 65 2e 0a 49 74 20 69 73 20 6e 6f 74 20 70  ase..It is not p
18440 6f 73 73 69 62 6c 65 20 74 6f 20 56 41 43 55 55  ossible to VACUU
18450 4d 20 61 6e 20 61 74 74 61 63 68 65 64 20 64 61  M an attached da
18460 74 61 62 61 73 65 20 66 69 6c 65 2e 3c 2f 70 3e  tabase file.</p>
18470 0a 0a 3c 70 3e 54 68 65 20 56 41 43 55 55 4d 20  ..<p>The VACUUM 
18480 63 6f 6d 6d 61 6e 64 20 77 69 6c 6c 20 66 61 69  command will fai
18490 6c 20 69 66 20 74 68 65 72 65 20 69 73 20 61 6e  l if there is an
184a0 20 61 63 74 69 76 65 20 74 72 61 6e 73 61 63 74   active transact
184b0 69 6f 6e 2e 0a 54 68 65 20 56 41 43 55 55 4d 20  ion..The VACUUM 
184c0 63 6f 6d 6d 61 6e 64 20 69 73 20 61 20 6e 6f 2d  command is a no-
184d0 6f 70 20 66 6f 72 20 69 6e 2d 6d 65 6d 6f 72 79  op for in-memory
184e0 20 64 61 74 61 62 61 73 65 73 2e 3c 2f 70 3e 0a   databases.</p>.
184f0 0a 3c 70 3e 41 73 20 6f 66 20 53 51 4c 69 74 65  .<p>As of SQLite
18500 20 76 65 72 73 69 6f 6e 20 33 2e 31 2c 20 61 6e   version 3.1, an
18510 20 61 6c 74 65 72 6e 61 74 69 76 65 20 74 6f 20   alternative to 
18520 75 73 69 6e 67 20 74 68 65 20 56 41 43 55 55 4d  using the VACUUM
18530 20 63 6f 6d 6d 61 6e 64 0a 69 73 20 61 75 74 6f   command.is auto
18540 2d 76 61 63 75 75 6d 20 6d 6f 64 65 2c 20 65 6e  -vacuum mode, en
18550 61 62 6c 65 64 20 75 73 69 6e 67 20 74 68 65 20  abled using the 
18560 0a 5b 61 75 74 6f 5f 76 61 63 75 75 6d 5d 20 70  .[auto_vacuum] p
18570 72 61 67 6d 61 2e 20 20 57 68 65 6e 20 5b 61 75  ragma.  When [au
18580 74 6f 5f 76 61 63 75 75 6d 5d 20 69 73 20 65 6e  to_vacuum] is en
18590 61 62 6c 65 64 20 66 6f 72 20 61 20 64 61 74 61  abled for a data
185a0 62 61 73 65 2c 20 0a 6c 61 72 67 65 20 64 65 6c  base, .large del
185b0 65 74 65 73 20 63 61 75 73 65 0a 74 68 65 20 73  etes cause.the s
185c0 69 7a 65 20 6f 66 20 74 68 65 20 64 61 74 61 62  ize of the datab
185d0 61 73 65 20 66 69 6c 65 20 74 6f 20 73 68 72 69  ase file to shri
185e0 6e 6b 2e 20 20 48 6f 77 65 76 65 72 2c 20 5b 61  nk.  However, [a
185f0 75 74 6f 5f 76 61 63 75 75 6d 5d 0a 61 6c 73 6f  uto_vacuum].also
18600 20 63 61 75 73 65 73 20 65 78 63 65 73 73 20 66   causes excess f
18610 72 61 67 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20  ragmentation of 
18620 74 68 65 20 64 61 74 61 62 61 73 65 20 66 69 6c  the database fil
18630 65 2e 20 20 41 6e 64 20 5b 61 75 74 6f 5f 76 61  e.  And [auto_va
18640 63 75 75 6d 5d 0a 64 6f 65 73 20 6e 6f 74 20 63  cuum].does not c
18650 6f 6d 70 61 63 74 20 70 61 72 74 69 61 6c 6c 79  ompact partially
18660 20 66 69 6c 6c 65 64 20 70 61 67 65 73 20 6f 66   filled pages of
18670 20 74 68 65 20 64 61 74 61 62 61 73 65 20 61 73   the database as
18680 20 56 41 43 55 55 4d 0a 64 6f 65 73 2e 3c 2f 70   VACUUM.does.</p
18690 3e 0a 0a 3c 70 3e 54 68 65 20 5b 70 61 67 65 5f  >..<p>The [page_
186a0 73 69 7a 65 5d 20 61 6e 64 2f 6f 72 20 5b 61 75  size] and/or [au
186b0 74 6f 5f 76 61 63 75 75 6d 5d 20 6d 6f 64 65 20  to_vacuum] mode 
186c0 6f 66 20 61 20 64 61 74 61 62 61 73 65 20 63 61  of a database ca
186d0 6e 20 62 65 20 63 68 61 6e 67 65 64 0a 62 79 20  n be changed.by 
186e0 69 6e 76 6f 6b 69 6e 67 20 74 68 65 20 5b 70 61  invoking the [pa
186f0 67 65 5f 73 69 7a 65 20 70 72 61 67 6d 61 5d 20  ge_size pragma] 
18700 61 6e 64 2f 6f 72 20 5b 61 75 74 6f 5f 76 61 63  and/or [auto_vac
18710 75 75 6d 20 70 72 61 67 6d 61 5d 20 61 6e 64 20  uum pragma] and 
18720 74 68 65 6e 0a 69 6d 6d 65 64 69 61 74 65 6c 79  then.immediately
18730 20 56 41 43 55 55 4d 69 6e 67 20 74 68 65 20 64   VACUUMing the d
18740 61 74 61 62 61 73 65 2e 3c 2f 70 3e 0a 0a 3c 74  atabase.</p>..<t
18750 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23  cl>.############
18760 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18770 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18780 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18790 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
187a0 23 23 0a 53 65 63 74 69 6f 6e 20 7b 49 4e 44 45  ##.Section {INDE
187b0 58 45 44 20 42 59 7d 20 69 6e 64 65 78 65 64 62  XED BY} indexedb
187c0 79 20 7b 7b 49 4e 44 45 58 45 44 20 42 59 7d 20  y {{INDEXED BY} 
187d0 7b 4e 4f 54 20 49 4e 44 45 58 45 44 7d 7d 0a 0a  {NOT INDEXED}}..
187e0 3c 2f 74 63 6c 3e 0a 3c 70 3e 54 68 65 20 49 4e  </tcl>.<p>The IN
187f0 44 45 58 45 44 20 42 59 20 70 68 72 61 73 65 20  DEXED BY phrase 
18800 69 73 20 61 20 53 51 4c 20 65 78 74 65 6e 73 69  is a SQL extensi
18810 6f 6e 20 66 6f 75 6e 64 20 6f 6e 6c 79 20 69 6e  on found only in
18820 20 53 51 4c 69 74 65 20 77 68 69 63 68 20 63 61   SQLite which ca
18830 6e 0a 62 65 20 75 73 65 64 20 74 6f 20 76 65 72  n.be used to ver
18840 69 66 79 20 74 68 61 74 20 74 68 65 20 63 6f 72  ify that the cor
18850 72 65 63 74 20 69 6e 64 69 63 65 73 20 61 72 65  rect indices are
18860 20 62 65 69 6e 67 20 75 73 65 64 20 6f 6e 20 61   being used on a
18870 20 5b 44 45 4c 45 54 45 5d 2c 0a 5b 53 45 4c 45   [DELETE],.[SELE
18880 43 54 5d 2c 20 6f 72 20 5b 55 50 44 41 54 45 5d  CT], or [UPDATE]
18890 20 73 74 61 74 65 6d 65 6e 74 2e 0a 54 68 65 20   statement..The 
188a0 49 4e 44 45 58 45 44 20 42 59 20 70 68 72 61 73  INDEXED BY phras
188b0 65 20 61 6c 77 61 79 73 20 66 6f 6c 6c 6f 77 73  e always follows
188c0 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 61 20 74   the name of a t
188d0 61 62 6c 65 20 74 68 61 74 20 53 51 4c 69 74 65  able that SQLite
188e0 20 77 69 6c 6c 0a 62 65 20 72 65 61 64 69 6e 67   will.be reading
188f0 2e 20 20 54 68 65 20 49 4e 44 45 58 45 44 20 42  .  The INDEXED B
18900 59 20 70 68 72 61 73 65 20 63 61 6e 20 62 65 20  Y phrase can be 
18910 73 65 65 6e 20 69 6e 20 74 68 65 20 66 6f 6c 6c  seen in the foll
18920 6f 77 69 6e 67 20 73 79 6e 74 61 78 0a 64 69 61  owing syntax.dia
18930 67 72 61 6d 73 3a 3c 2f 70 3e 0a 0a 3c 74 63 6c  grams:</p>..<tcl
18940 3e 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20  >.BubbleDiagram 
18950 71 75 61 6c 69 66 69 65 64 2d 74 61 62 6c 65 2d  qualified-table-
18960 6e 61 6d 65 0a 42 75 62 62 6c 65 44 69 61 67 72  name.BubbleDiagr
18970 61 6d 20 73 69 6e 67 6c 65 2d 73 6f 75 72 63 65  am single-source
18980 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20  .</tcl>..<p>The 
18990 22 49 4e 44 45 58 45 44 20 42 59 20 69 6e 64 65  "INDEXED BY inde
189a0 78 2d 6e 61 6d 65 22 20 63 6c 61 75 73 65 20 73  x-name" clause s
189b0 70 65 63 69 66 69 65 73 20 74 68 61 74 20 74 68  pecifies that th
189c0 65 20 6e 61 6d 65 64 20 69 6e 64 65 78 0a 6d 75  e named index.mu
189d0 73 74 20 62 65 20 75 73 65 64 20 69 6e 20 6f 72  st be used in or
189e0 64 65 72 20 74 6f 20 6c 6f 6f 6b 20 75 70 20 76  der to look up v
189f0 61 6c 75 65 73 20 6f 6e 20 74 68 65 20 70 72 65  alues on the pre
18a00 63 65 64 69 6e 67 20 74 61 62 6c 65 2e 0a 49 66  ceding table..If
18a10 20 69 6e 64 65 78 2d 6e 61 6d 65 20 64 6f 65 73   index-name does
18a20 20 6e 6f 74 20 65 78 69 73 74 20 6f 72 20 63 61   not exist or ca
18a30 6e 6e 6f 74 20 62 65 20 75 73 65 64 20 66 6f 72  nnot be used for
18a40 20 74 68 65 20 71 75 65 72 79 2c 20 74 68 65 6e   the query, then
18a50 0a 74 68 65 20 70 72 65 70 61 72 61 74 69 6f 6e  .the preparation
18a60 20 6f 66 20 74 68 65 20 53 51 4c 20 73 74 61 74   of the SQL stat
18a70 65 6d 65 6e 74 20 66 61 69 6c 73 2e 0a 54 68 65  ement fails..The
18a80 20 22 4e 4f 54 20 49 4e 44 45 58 45 44 22 20 63   "NOT INDEXED" c
18a90 6c 61 75 73 65 20 73 70 65 63 69 66 69 65 73 20  lause specifies 
18aa0 74 68 61 74 20 6e 6f 20 69 6e 64 65 78 20 73 68  that no index sh
18ab0 61 6c 6c 20 62 65 20 75 73 65 64 20 77 68 65 6e  all be used when
18ac0 0a 61 63 63 65 73 73 69 6e 67 20 74 68 65 20 70  .accessing the p
18ad0 72 65 63 65 64 69 6e 67 20 74 61 62 6c 65 2c 20  receding table, 
18ae0 69 6e 63 6c 75 64 69 6e 67 20 69 6d 70 6c 69 65  including implie
18af0 64 20 69 6e 64 69 63 65 73 20 63 72 65 61 74 65  d indices create
18b00 20 62 79 0a 55 4e 49 51 55 45 20 61 6e 64 20 50   by.UNIQUE and P
18b10 52 49 4d 41 52 59 20 4b 45 59 20 63 6f 6e 73 74  RIMARY KEY const
18b20 72 61 69 6e 74 73 2e 20 20 48 6f 77 65 76 65 72  raints.  However
18b30 2c 20 74 68 65 20 49 4e 54 45 47 45 52 20 50 52  , the INTEGER PR
18b40 49 4d 41 52 59 20 4b 45 59 0a 63 61 6e 20 73 74  IMARY KEY.can st
18b50 69 6c 6c 20 62 65 20 75 73 65 64 20 74 6f 20 6c  ill be used to l
18b60 6f 6f 6b 20 75 70 20 65 6e 74 72 69 65 73 20 65  ook up entries e
18b70 76 65 6e 20 77 68 65 6e 20 22 4e 4f 54 20 49 4e  ven when "NOT IN
18b80 44 45 58 45 44 22 20 69 73 20 73 70 65 63 69 66  DEXED" is specif
18b90 69 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 53 6f 6d  ied.</p>..<p>Som
18ba0 65 20 53 51 4c 20 64 61 74 61 62 61 73 65 20 65  e SQL database e
18bb0 6e 67 69 6e 65 73 20 70 72 6f 76 69 64 65 20 6e  ngines provide n
18bc0 6f 6e 2d 73 74 61 6e 64 61 72 64 20 22 68 69 6e  on-standard "hin
18bd0 74 22 20 6d 65 63 68 61 6e 69 73 6d 73 20 77 68  t" mechanisms wh
18be0 69 63 68 0a 63 61 6e 20 62 65 20 75 73 65 64 20  ich.can be used 
18bf0 74 6f 20 67 69 76 65 20 74 68 65 20 71 75 65 72  to give the quer
18c00 79 20 6f 70 74 69 6d 69 7a 65 72 20 63 6c 75 65  y optimizer clue
18c10 73 20 61 62 6f 75 74 20 77 68 61 74 20 69 6e 64  s about what ind
18c20 69 63 65 73 20 69 74 20 73 68 6f 75 6c 64 0a 75  ices it should.u
18c30 73 65 20 66 6f 72 20 61 20 70 61 72 74 69 63 75  se for a particu
18c40 6c 61 72 20 73 74 61 74 65 6d 65 6e 74 2e 20 20  lar statement.  
18c50 54 68 65 20 49 4e 44 45 58 20 42 59 20 63 6c 61  The INDEX BY cla
18c60 75 73 65 20 6f 66 20 53 51 4c 69 74 65 20 69 73  use of SQLite is
18c70 20 0a 3c 65 6d 3e 6e 6f 74 3c 2f 65 6d 3e 20 61   .<em>not</em> a
18c80 20 68 69 6e 74 69 6e 67 20 6d 65 63 68 61 6e 69   hinting mechani
18c90 73 6d 20 61 6e 64 20 69 74 20 73 68 6f 75 6c 64  sm and it should
18ca0 20 6e 6f 74 20 62 65 20 75 73 65 64 20 61 73 20   not be used as 
18cb0 73 75 63 68 2e 0a 54 68 65 20 49 4e 44 45 58 45  such..The INDEXE
18cc0 44 20 42 59 20 63 6c 61 75 73 65 20 64 6f 65 73  D BY clause does
18cd0 20 6e 6f 74 20 67 69 76 65 20 74 68 65 20 6f 70   not give the op
18ce0 74 69 6d 69 7a 65 72 20 68 69 6e 74 73 20 61 62  timizer hints ab
18cf0 6f 75 74 20 77 68 69 63 68 20 69 6e 64 65 78 0a  out which index.
18d00 74 6f 20 75 73 65 3b 20 69 74 20 67 69 76 65 73  to use; it gives
18d10 20 74 68 65 20 6f 70 74 69 6d 69 7a 65 72 20 61   the optimizer a
18d20 20 72 65 71 75 69 72 65 6d 65 6e 74 20 6f 66 20   requirement of 
18d30 77 68 69 63 68 20 69 6e 64 65 78 20 74 6f 20 75  which index to u
18d40 73 65 2e 0a 49 66 20 74 68 65 20 71 75 65 72 79  se..If the query
18d50 20 6f 70 74 69 6d 69 7a 65 72 20 69 73 20 75 6e   optimizer is un
18d60 61 62 6c 65 20 74 6f 20 75 73 65 20 74 68 65 20  able to use the 
18d70 69 6e 64 65 78 20 73 70 65 63 69 66 69 65 64 20  index specified 
18d80 62 79 20 74 68 65 0a 49 4e 44 45 58 20 42 59 20  by the.INDEX BY 
18d90 63 6c 61 75 73 65 2c 20 74 68 65 6e 20 74 68 65  clause, then the
18da0 20 71 75 65 72 79 20 77 69 6c 6c 20 66 61 69 6c   query will fail
18db0 20 77 69 74 68 20 61 6e 20 65 72 72 6f 72 2e 3c   with an error.<
18dc0 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 49 4e 44 45  /p>..<p>The INDE
18dd0 58 45 44 20 42 59 20 63 6c 61 75 73 65 20 69 73  XED BY clause is
18de0 20 3c 65 6d 3e 6e 6f 74 3c 2f 65 6d 3e 20 69 6e   <em>not</em> in
18df0 74 65 6e 64 65 64 20 66 6f 72 20 75 73 65 20 69  tended for use i
18e00 6e 20 74 75 6e 69 6e 67 0a 74 68 65 20 70 72 65  n tuning.the pre
18e10 66 6f 72 6d 61 6e 63 65 20 6f 66 20 61 20 71 75  formance of a qu
18e20 65 72 79 2e 20 20 54 68 65 20 69 6e 74 65 6e 74  ery.  The intent
18e30 20 6f 66 20 74 68 65 20 49 4e 44 45 58 45 44 20   of the INDEXED 
18e40 42 59 20 63 6c 61 75 73 65 20 69 73 0a 74 6f 20  BY clause is.to 
18e50 72 61 69 73 65 20 61 20 72 75 6e 2d 74 69 6d 65  raise a run-time
18e60 20 65 72 72 6f 72 20 69 66 20 61 20 73 63 68 65   error if a sche
18e70 6d 61 20 63 68 61 6e 67 65 2c 20 73 75 63 68 20  ma change, such 
18e80 61 73 20 64 72 6f 70 70 69 6e 67 20 6f 72 0a 63  as dropping or.c
18e90 72 65 61 74 69 6e 67 20 61 6e 20 69 6e 64 65 78  reating an index
18ea0 2c 20 63 61 75 73 65 73 20 74 68 65 20 71 75 65  , causes the que
18eb0 72 79 20 70 6c 61 6e 20 66 6f 72 20 61 20 74 69  ry plan for a ti
18ec0 6d 65 2d 73 65 6e 73 69 74 69 76 65 20 71 75 65  me-sensitive que
18ed0 72 79 0a 74 6f 20 63 68 61 6e 67 65 2e 20 20 54  ry.to change.  T
18ee0 68 65 20 49 4e 44 45 58 45 44 20 42 59 20 63 6c  he INDEXED BY cl
18ef0 61 75 73 65 20 69 73 20 64 65 73 69 67 6e 65 64  ause is designed
18f00 20 74 6f 20 68 65 6c 70 20 64 65 74 65 63 74 0a   to help detect.
18f10 75 6e 64 65 73 69 72 61 62 6c 65 20 71 75 65 72  undesirable quer
18f20 79 20 70 6c 61 6e 20 63 68 61 6e 67 65 73 20 64  y plan changes d
18f30 75 72 69 6e 67 20 72 65 67 72 65 73 73 69 6f 6e  uring regression
18f40 20 74 65 73 74 69 6e 67 2e 0a 44 65 76 65 6c 6f   testing..Develo
18f50 70 65 72 73 20 61 72 65 20 61 64 6d 6f 6e 69 73  pers are admonis
18f60 68 65 64 20 74 6f 20 6f 6d 69 74 20 61 6c 6c 20  hed to omit all 
18f70 75 73 65 20 6f 66 20 49 4e 44 45 58 45 44 20 42  use of INDEXED B
18f80 59 20 64 75 72 69 6e 67 0a 61 70 70 6c 69 63 61  Y during.applica
18f90 74 69 6f 6e 20 64 65 73 69 67 6e 2c 20 69 6d 70  tion design, imp
18fa0 6c 65 6d 65 6e 74 61 74 69 6f 6e 2c 20 74 65 73  lementation, tes
18fb0 74 69 6e 67 2c 20 61 6e 64 20 74 75 6e 69 6e 67  ting, and tuning
18fc0 2e 20 20 49 66 0a 49 4e 44 45 58 45 44 20 42 59  .  If.INDEXED BY
18fd0 20 69 73 20 74 6f 20 62 65 20 75 73 65 64 20 61   is to be used a
18fe0 74 20 61 6c 6c 2c 20 69 74 20 73 68 6f 75 6c 64  t all, it should
18ff0 20 62 65 20 69 6e 73 65 72 74 65 64 20 61 74 20   be inserted at 
19000 74 68 65 20 76 65 72 79 0a 65 6e 64 20 6f 66 20  the very.end of 
19010 74 68 65 20 64 65 76 65 6c 6f 70 6d 65 6e 74 20  the development 
19020 70 72 6f 63 65 73 73 20 77 68 65 6e 20 22 6c 6f  process when "lo
19030 63 6b 69 6e 67 20 64 6f 77 6e 22 20 61 20 64 65  cking down" a de
19040 73 69 67 6e 2e 3c 2f 70 3e 0a 0a 3c 68 33 3e 53  sign.</p>..<h3>S
19050 65 65 20 41 6c 73 6f 3a 3c 2f 68 33 3e 0a 0a 3c  ee Also:</h3>..<
19060 70 3e 54 68 65 20 5b 73 71 6c 69 74 65 33 5f 73  p>The [sqlite3_s
19070 74 6d 74 5f 73 74 61 74 75 73 28 29 5d 20 43 2f  tmt_status()] C/
19080 43 2b 2b 20 69 6e 74 65 72 66 61 63 65 20 74 6f  C++ interface to
19090 67 65 74 68 65 72 20 77 69 74 68 20 74 68 65 0a  gether with the.
190a0 5b 53 51 4c 49 54 45 5f 53 54 4d 54 53 54 41 54  [SQLITE_STMTSTAT
190b0 55 53 5f 46 55 4c 4c 53 43 41 4e 5f 53 54 45 50  US_FULLSCAN_STEP
190c0 5d 20 61 6e 64 20 5b 53 51 4c 49 54 45 5f 53 54  ] and [SQLITE_ST
190d0 4d 54 53 54 41 54 55 53 5f 53 4f 52 54 5d 20 76  MTSTATUS_SORT] v
190e0 65 72 62 73 0a 63 61 6e 20 62 65 20 75 73 65 64  erbs.can be used
190f0 20 74 6f 20 64 65 74 65 63 74 20 61 74 20 72 75   to detect at ru
19100 6e 2d 74 69 6d 65 20 77 68 65 6e 20 61 6e 20 53  n-time when an S
19110 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20  QL statement is 
19120 6e 6f 74 0a 6d 61 6b 69 6e 67 20 65 66 66 65 63  not.making effec
19130 74 69 76 65 20 75 73 65 20 6f 66 20 69 6e 64 69  tive use of indi
19140 63 65 73 2e 20 20 4d 61 6e 79 20 61 70 70 6c 69  ces.  Many appli
19150 63 61 74 69 6f 6e 73 20 6d 61 79 20 70 72 65 66  cations may pref
19160 65 72 20 74 6f 0a 75 73 65 20 74 68 65 20 5b 73  er to.use the [s
19170 71 6c 69 74 65 33 5f 73 74 6d 74 5f 73 74 61 74  qlite3_stmt_stat
19180 75 73 28 29 5d 20 69 6e 74 65 72 66 61 63 65 20  us()] interface 
19190 74 6f 20 64 65 74 65 63 74 20 69 6e 64 65 78 20  to detect index 
191a0 6d 69 73 75 73 65 0a 72 61 74 68 65 72 20 74 68  misuse.rather th
191b0 61 6e 20 74 68 65 20 49 4e 44 45 58 45 44 20 42  an the INDEXED B
191c0 59 20 70 68 72 61 73 65 20 64 65 73 63 72 69 62  Y phrase describ
191d0 65 64 20 68 65 72 65 2e 3c 2f 70 3e 0a 0a 3c 74  ed here.</p>..<t
191e0 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23  cl>.############
191f0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
19200 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
19210 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
19220 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
19230 23 0a 23 20 41 20 6c 69 73 74 20 6f 66 20 6b 65  #.# A list of ke
19240 79 77 6f 72 64 73 2e 20 20 41 20 61 73 74 65 72  ywords.  A aster
19250 69 73 6b 20 6f 63 63 75 72 73 20 61 66 74 65 72  isk occurs after
19260 20 74 68 65 20 6b 65 79 77 6f 72 64 20 69 66 20   the keyword if 
19270 69 74 20 69 73 20 6f 6e 0a 23 20 74 68 65 20 66  it is on.# the f
19280 61 6c 6c 62 61 63 6b 20 6c 69 73 74 2e 0a 23 0a  allback list..#.
19290 73 65 74 20 6b 65 79 77 6f 72 64 5f 6c 69 73 74  set keyword_list
192a0 20 5b 6c 73 6f 72 74 20 7b 0a 20 20 20 41 42 4f   [lsort {.   ABO
192b0 52 54 2a 0a 20 20 20 41 44 44 0a 20 20 20 41 46  RT*.   ADD.   AF
192c0 54 45 52 2a 0a 20 20 20 41 4c 4c 0a 20 20 20 41  TER*.   ALL.   A
192d0 4c 54 45 52 0a 20 20 20 41 4e 41 4c 59 5a 45 2a  LTER.   ANALYZE*
192e0 0a 20 20 20 41 4e 44 0a 20 20 20 41 53 0a 20 20  .   AND.   AS.  
192f0 20 41 53 43 2a 0a 20 20 20 41 54 54 41 43 48 2a   ASC*.   ATTACH*
19300 0a 20 20 20 41 55 54 4f 49 4e 43 52 45 4d 45 4e  .   AUTOINCREMEN
19310 54 0a 20 20 20 42 45 46 4f 52 45 2a 0a 20 20 20  T.   BEFORE*.   
19320 42 45 47 49 4e 2a 0a 20 20 20 42 45 54 57 45 45  BEGIN*.   BETWEE
19330 4e 0a 20 20 20 42 59 2a 0a 20 20 20 43 41 53 43  N.   BY*.   CASC
19340 41 44 45 2a 0a 20 20 20 43 41 53 45 0a 20 20 20  ADE*.   CASE.   
19350 43 41 53 54 2a 0a 20 20 20 43 48 45 43 4b 0a 20  CAST*.   CHECK. 
19360 20 20 43 4f 4c 4c 41 54 45 0a 20 20 20 43 4f 4c    COLLATE.   COL
19370 55 4d 4e 2a 0a 20 20 20 43 4f 4d 4d 49 54 0a 20  UMN*.   COMMIT. 
19380 20 20 43 4f 4e 46 4c 49 43 54 2a 0a 20 20 20 43    CONFLICT*.   C
19390 4f 4e 53 54 52 41 49 4e 54 0a 20 20 20 43 52 45  ONSTRAINT.   CRE
193a0 41 54 45 0a 20 20 20 43 52 4f 53 53 0a 20 20 20  ATE.   CROSS.   
193b0 43 55 52 52 45 4e 54 5f 44 41 54 45 2a 0a 20 20  CURRENT_DATE*.  
193c0 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 2a 0a 20   CURRENT_TIME*. 
193d0 20 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 53 54    CURRENT_TIMEST
193e0 41 4d 50 2a 0a 20 20 20 44 41 54 41 42 41 53 45  AMP*.   DATABASE
193f0 2a 0a 20 20 20 44 45 46 41 55 4c 54 0a 20 20 20  *.   DEFAULT.   
19400 44 45 46 45 52 52 45 44 2a 0a 20 20 20 44 45 46  DEFERRED*.   DEF
19410 45 52 52 41 42 4c 45 0a 20 20 20 44 45 4c 45 54  ERRABLE.   DELET
19420 45 0a 20 20 20 44 45 53 43 2a 0a 20 20 20 44 45  E.   DESC*.   DE
19430 54 41 43 48 2a 0a 20 20 20 44 49 53 54 49 4e 43  TACH*.   DISTINC
19440 54 0a 20 20 20 44 52 4f 50 0a 20 20 20 45 4e 44  T.   DROP.   END
19450 2a 0a 20 20 20 45 41 43 48 2a 0a 20 20 20 45 4c  *.   EACH*.   EL
19460 53 45 0a 20 20 20 45 53 43 41 50 45 0a 20 20 20  SE.   ESCAPE.   
19470 45 58 43 45 50 54 0a 20 20 20 45 58 43 4c 55 53  EXCEPT.   EXCLUS
19480 49 56 45 2a 0a 20 20 20 45 58 49 53 54 53 0a 20  IVE*.   EXISTS. 
19490 20 20 45 58 50 4c 41 49 4e 2a 0a 20 20 20 46 41    EXPLAIN*.   FA
194a0 49 4c 2a 0a 20 20 20 46 4f 52 2a 0a 20 20 20 46  IL*.   FOR*.   F
194b0 4f 52 45 49 47 4e 0a 20 20 20 46 52 4f 4d 0a 20  OREIGN.   FROM. 
194c0 20 20 46 55 4c 4c 0a 20 20 20 47 4c 4f 42 2a 0a    FULL.   GLOB*.
194d0 20 20 20 47 52 4f 55 50 0a 20 20 20 48 41 56 49     GROUP.   HAVI
194e0 4e 47 0a 20 20 20 49 46 2a 0a 20 20 20 49 47 4e  NG.   IF*.   IGN
194f0 4f 52 45 2a 0a 20 20 20 49 4d 4d 45 44 49 41 54  ORE*.   IMMEDIAT
19500 45 2a 0a 20 20 20 49 4e 0a 20 20 20 49 4e 44 45  E*.   IN.   INDE
19510 58 0a 20 20 20 49 4e 44 45 58 45 44 2a 0a 20 20  X.   INDEXED*.  
19520 20 49 4e 49 54 49 41 4c 4c 59 2a 0a 20 20 20 49   INITIALLY*.   I
19530 4e 4e 45 52 0a 20 20 20 49 4e 53 45 52 54 0a 20  NNER.   INSERT. 
19540 20 20 49 4e 53 54 45 41 44 2a 0a 20 20 20 49 4e    INSTEAD*.   IN
19550 54 45 52 53 45 43 54 0a 20 20 20 49 4e 54 4f 0a  TERSECT.   INTO.
19560 20 20 20 49 53 0a 20 20 20 49 53 4e 55 4c 4c 0a     IS.   ISNULL.
19570 20 20 20 4a 4f 49 4e 0a 20 20 20 4b 45 59 2a 0a     JOIN.   KEY*.
19580 20 20 20 4c 45 46 54 0a 20 20 20 4c 49 4b 45 2a     LEFT.   LIKE*
19590 0a 20 20 20 4c 49 4d 49 54 0a 20 20 20 4d 41 54  .   LIMIT.   MAT
195a0 43 48 2a 0a 20 20 20 4e 41 54 55 52 41 4c 0a 20  CH*.   NATURAL. 
195b0 20 20 4e 4f 54 0a 20 20 20 4e 4f 54 4e 55 4c 4c    NOT.   NOTNULL
195c0 0a 20 20 20 4e 55 4c 4c 0a 20 20 20 4f 46 2a 0a  .   NULL.   OF*.
195d0 20 20 20 4f 46 46 53 45 54 2a 0a 20 20 20 4f 4e     OFFSET*.   ON
195e0 0a 20 20 20 4f 52 0a 20 20 20 4f 52 44 45 52 0a  .   OR.   ORDER.
195f0 20 20 20 4f 55 54 45 52 0a 20 20 20 50 4c 41 4e     OUTER.   PLAN
19600 2a 0a 20 20 20 50 52 41 47 4d 41 2a 0a 20 20 20  *.   PRAGMA*.   
19610 50 52 49 4d 41 52 59 0a 20 20 20 51 55 45 52 59  PRIMARY.   QUERY
19620 2a 0a 20 20 20 52 41 49 53 45 2a 0a 20 20 20 52  *.   RAISE*.   R
19630 45 46 45 52 45 4e 43 45 53 0a 20 20 20 52 45 47  EFERENCES.   REG
19640 45 58 50 2a 0a 20 20 20 52 45 49 4e 44 45 58 2a  EXP*.   REINDEX*
19650 0a 20 20 20 52 45 4c 45 41 53 45 2a 0a 20 20 20  .   RELEASE*.   
19660 52 45 4e 41 4d 45 2a 0a 20 20 20 52 45 50 4c 41  RENAME*.   REPLA
19670 43 45 2a 0a 20 20 20 52 45 53 54 52 49 43 54 2a  CE*.   RESTRICT*
19680 0a 20 20 20 52 49 47 48 54 0a 20 20 20 52 4f 4c  .   RIGHT.   ROL
19690 4c 42 41 43 4b 0a 20 20 20 52 4f 57 2a 0a 20 20  LBACK.   ROW*.  
196a0 20 53 41 56 45 50 4f 49 4e 54 2a 0a 20 20 20 53   SAVEPOINT*.   S
196b0 45 4c 45 43 54 0a 20 20 20 53 45 54 0a 20 20 20  ELECT.   SET.   
196c0 54 41 42 4c 45 0a 20 20 20 54 45 4d 50 2a 0a 20  TABLE.   TEMP*. 
196d0 20 20 54 45 4d 50 4f 52 41 52 59 2a 0a 20 20 20    TEMPORARY*.   
196e0 54 48 45 4e 0a 20 20 20 54 4f 0a 20 20 20 54 52  THEN.   TO.   TR
196f0 41 4e 53 41 43 54 49 4f 4e 0a 20 20 20 54 52 49  ANSACTION.   TRI
19700 47 47 45 52 2a 0a 20 20 20 55 4e 49 4f 4e 0a 20  GGER*.   UNION. 
19710 20 20 55 4e 49 51 55 45 0a 20 20 20 55 50 44 41    UNIQUE.   UPDA
19720 54 45 0a 20 20 20 55 53 49 4e 47 0a 20 20 20 56  TE.   USING.   V
19730 41 43 55 55 4d 2a 0a 20 20 20 56 41 4c 55 45 53  ACUUM*.   VALUES
19740 0a 20 20 20 56 49 45 57 2a 0a 20 20 20 56 49 52  .   VIEW*.   VIR
19750 54 55 41 4c 2a 0a 20 20 20 57 48 45 4e 0a 20 20  TUAL*.   WHEN.  
19760 20 57 48 45 52 45 0a 7d 5d 0a 0a 68 64 5f 70 75   WHERE.}]..hd_pu
19770 74 73 20 7b 3c 44 49 56 20 63 6c 61 73 73 3d 22  ts {<DIV class="
19780 70 64 66 5f 73 65 63 74 69 6f 6e 22 3e 7d 0a 53  pdf_section">}.S
19790 65 63 74 69 6f 6e 20 7b 53 51 4c 69 74 65 20 4b  ection {SQLite K
197a0 65 79 77 6f 72 64 73 7d 20 6b 65 79 77 6f 72 64  eywords} keyword
197b0 73 20 7b 7b 53 51 4c 20 6b 65 79 77 6f 72 64 7d  s {{SQL keyword}
197c0 20 7b 53 51 4c 20 6b 65 79 77 6f 72 64 73 7d 7d   {SQL keywords}}
197d0 0a 68 64 5f 70 75 74 73 20 7b 3c 2f 44 49 56 3e  .hd_puts {</DIV>
197e0 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 65  }.</tcl>..<p>The
197f0 20 53 51 4c 20 73 74 61 6e 64 61 72 64 20 73 70   SQL standard sp
19800 65 63 69 66 69 65 73 20 61 20 68 75 67 65 20 6e  ecifies a huge n
19810 75 6d 62 65 72 20 6f 66 20 6b 65 79 77 6f 72 64  umber of keyword
19820 73 20 77 68 69 63 68 20 6d 61 79 20 6e 6f 74 0a  s which may not.
19830 62 65 20 75 73 65 64 20 61 73 20 74 68 65 20 6e  be used as the n
19840 61 6d 65 73 20 6f 66 20 74 61 62 6c 65 73 2c 20  ames of tables, 
19850 69 6e 64 69 63 65 73 2c 20 63 6f 6c 75 6d 6e 73  indices, columns
19860 2c 20 64 61 74 61 62 61 73 65 73 2c 20 75 73 65  , databases, use
19870 72 2d 64 65 66 69 6e 65 64 0a 66 75 6e 63 74 69  r-defined.functi
19880 6f 6e 73 2c 20 63 6f 6c 6c 61 74 69 6f 6e 73 2c  ons, collations,
19890 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 6d   virtual table m
198a0 6f 64 75 6c 65 73 2c 20 6f 72 20 61 6e 79 20 6f  odules, or any o
198b0 74 68 65 72 20 6e 61 6d 65 64 20 6f 62 6a 65 63  ther named objec
198c0 74 2e 0a 54 68 65 20 6c 69 73 74 20 6f 66 20 6b  t..The list of k
198d0 65 79 77 6f 72 64 73 20 69 73 20 73 6f 20 6c 6f  eywords is so lo
198e0 6e 67 20 74 68 61 74 20 66 65 77 20 70 65 6f 70  ng that few peop
198f0 6c 65 20 63 61 6e 20 72 65 6d 65 6d 62 65 72 20  le can remember 
19900 74 68 65 6d 20 61 6c 6c 2e 0a 46 6f 72 20 6d 6f  them all..For mo
19910 73 74 20 53 51 4c 20 63 6f 64 65 2c 20 79 6f 75  st SQL code, you
19920 72 20 73 61 66 65 73 74 20 62 65 74 20 69 73 20  r safest bet is 
19930 74 6f 20 6e 65 76 65 72 20 75 73 65 20 61 6e 79  to never use any
19940 20 45 6e 67 6c 69 73 68 20 6c 61 6e 67 75 61 67   English languag
19950 65 0a 77 6f 72 64 20 61 73 20 74 68 65 20 6e 61  e.word as the na
19960 6d 65 20 6f 66 20 61 20 75 73 65 72 2d 64 65 66  me of a user-def
19970 69 6e 65 64 20 6f 62 6a 65 63 74 2e 3c 2f 70 3e  ined object.</p>
19980 0a 0a 3c 70 3e 49 66 20 79 6f 75 20 77 61 6e 74  ..<p>If you want
19990 20 74 6f 20 75 73 65 20 61 20 6b 65 79 77 6f 72   to use a keywor
199a0 64 20 61 73 20 61 20 6e 61 6d 65 2c 20 79 6f 75  d as a name, you
199b0 20 6e 65 65 64 20 74 6f 20 71 75 6f 74 65 20 69   need to quote i
199c0 74 2e 20 20 54 68 65 72 65 0a 61 72 65 20 74 68  t.  There.are th
199d0 72 65 65 20 77 61 79 73 20 6f 66 20 71 75 6f 74  ree ways of quot
199e0 69 6e 67 20 6b 65 79 77 6f 72 64 73 20 69 6e 20  ing keywords in 
199f0 53 51 4c 69 74 65 3a 3c 2f 70 3e 0a 0a 3c 70 3e  SQLite:</p>..<p>
19a00 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 3c 74  .<blockquote>.<t
19a10 61 62 6c 65 3e 0a 3c 74 72 3e 09 3c 74 64 20 76  able>.<tr>.<td v
19a20 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 3c 62 3e 27  align="top"><b>'
19a30 6b 65 79 77 6f 72 64 27 3c 2f 62 3e 3c 2f 74 64  keyword'</b></td
19a40 3e 3c 74 64 20 77 69 64 74 68 3d 22 32 30 22 3e  ><td width="20">
19a50 3c 2f 74 64 3e 0a 09 3c 74 64 3e 41 20 6b 65 79  </td>..<td>A key
19a60 77 6f 72 64 20 69 6e 20 73 69 6e 67 6c 65 20 71  word in single q
19a70 75 6f 74 65 73 20 69 73 20 61 20 73 74 72 69 6e  uotes is a strin
19a80 67 20 6c 69 74 65 72 61 6c 2e 3c 2f 74 64 3e 3c  g literal.</td><
19a90 2f 74 72 3e 0a 0a 3c 74 72 3e 09 3c 74 64 20 76  /tr>..<tr>.<td v
19aa0 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 3c 62 3e 22  align="top"><b>"
19ab0 6b 65 79 77 6f 72 64 22 3c 2f 62 3e 3c 2f 74 64  keyword"</b></td
19ac0 3e 3c 74 64 3e 3c 2f 74 64 3e 0a 09 3c 74 64 3e  ><td></td>..<td>
19ad0 41 20 6b 65 79 77 6f 72 64 20 69 6e 20 64 6f 75  A keyword in dou
19ae0 62 6c 65 2d 71 75 6f 74 65 73 20 69 73 20 61 6e  ble-quotes is an
19af0 20 69 64 65 6e 74 69 66 69 65 72 3c 2f 74 64 3e   identifier</td>
19b00 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 09 3c 74 64 20  </tr>..<tr>.<td 
19b10 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 3c 62 3e  valign="top"><b>
19b20 26 23 39 31 3b 6b 65 79 77 6f 72 64 26 23 39 33  &#91;keyword&#93
19b30 3b 3c 2f 62 3e 3c 2f 74 64 3e 3c 74 64 3e 3c 2f  ;</b></td><td></
19b40 74 64 3e 0a 09 3c 74 64 3e 41 20 6b 65 79 77 6f  td>..<td>A keywo
19b50 72 64 20 65 6e 63 6c 6f 73 65 64 20 69 6e 20 73  rd enclosed in s
19b60 71 75 61 72 65 20 62 72 61 63 6b 65 74 73 20 69  quare brackets i
19b70 73 20 0a 20 20 20 20 20 20 20 20 61 6e 20 69 64  s .        an id
19b80 65 6e 74 69 66 69 65 72 2e 20 20 54 68 69 73 20  entifier.  This 
19b90 69 73 20 6e 6f 74 20 73 74 61 6e 64 61 72 64 20  is not standard 
19ba0 53 51 4c 2e 20 20 54 68 69 73 20 71 75 6f 74 69  SQL.  This quoti
19bb0 6e 67 20 6d 65 63 68 61 6e 69 73 6d 0a 20 20 20  ng mechanism.   
19bc0 20 20 20 20 20 69 73 20 75 73 65 64 20 62 79 20       is used by 
19bd0 4d 53 20 41 63 63 65 73 73 20 61 6e 64 20 53 51  MS Access and SQ
19be0 4c 20 53 65 72 76 65 72 20 61 6e 64 20 69 73 20  L Server and is 
19bf0 69 6e 63 6c 75 64 65 64 20 69 6e 20 53 51 4c 69  included in SQLi
19c00 74 65 20 66 6f 72 0a 20 20 20 20 20 20 20 20 63  te for.        c
19c10 6f 6d 70 61 74 69 62 69 6c 69 74 79 2e 3c 2f 74  ompatibility.</t
19c20 64 3e 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 09 3c 74  d></tr>..<tr>.<t
19c30 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 3c  d valign="top"><
19c40 62 3e 26 23 39 36 3b 6b 65 79 77 6f 72 64 26 23  b>&#96;keyword&#
19c50 39 36 3b 3c 2f 62 3e 3c 2f 74 64 3e 3c 74 64 3e  96;</b></td><td>
19c60 3c 2f 74 64 3e 0a 09 3c 74 64 3e 41 20 6b 65 79  </td>..<td>A key
19c70 77 6f 72 64 20 65 6e 63 6c 6f 73 65 64 20 69 6e  word enclosed in
19c80 20 67 72 61 76 65 20 61 63 63 65 6e 74 73 20 28   grave accents (
19c90 41 53 43 49 49 20 63 6f 64 65 20 39 36 29 20 69  ASCII code 96) i
19ca0 73 20 0a 20 20 20 20 20 20 20 20 61 6e 20 69 64  s .        an id
19cb0 65 6e 74 69 66 69 65 72 2e 20 20 54 68 69 73 20  entifier.  This 
19cc0 69 73 20 6e 6f 74 20 73 74 61 6e 64 61 72 64 20  is not standard 
19cd0 53 51 4c 2e 20 20 54 68 69 73 20 71 75 6f 74 69  SQL.  This quoti
19ce0 6e 67 20 6d 65 63 68 61 6e 69 73 6d 0a 20 20 20  ng mechanism.   
19cf0 20 20 20 20 20 69 73 20 75 73 65 64 20 62 79 20       is used by 
19d00 4d 79 53 51 4c 20 61 6e 64 20 69 73 20 69 6e 63  MySQL and is inc
19d10 6c 75 64 65 64 20 69 6e 20 53 51 4c 69 74 65 20  luded in SQLite 
19d20 66 6f 72 0a 20 20 20 20 20 20 20 20 63 6f 6d 70  for.        comp
19d30 61 74 69 62 69 6c 69 74 79 2e 3c 2f 74 64 3e 3c  atibility.</td><
19d40 2f 74 72 3e 0a 3c 2f 74 61 62 6c 65 3e 0a 3c 2f  /tr>.</table>.</
19d50 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 3c 2f 70 3e  blockquote>.</p>
19d60 0a 0a 3c 70 3e 46 6f 72 20 72 65 73 69 6c 69 65  ..<p>For resilie
19d70 6e 63 65 20 77 68 65 6e 20 63 6f 6e 66 72 6f 6e  nce when confron
19d80 74 65 64 20 77 69 74 68 20 68 69 73 74 6f 72 69  ted with histori
19d90 63 61 6c 20 53 51 4c 20 73 74 61 74 65 6d 65 6e  cal SQL statemen
19da0 74 73 2c 20 53 51 4c 69 74 65 0a 77 69 6c 6c 20  ts, SQLite.will 
19db0 73 6f 6d 65 74 69 6d 65 73 20 62 65 6e 64 20 74  sometimes bend t
19dc0 68 65 20 71 75 6f 74 69 6e 67 20 72 75 6c 65 73  he quoting rules
19dd0 20 61 62 6f 76 65 3a 3c 2f 70 3e 0a 0a 3c 75 6c   above:</p>..<ul
19de0 3e 0a 3c 6c 69 3e 3c 70 3e 49 66 20 61 20 6b 65  >.<li><p>If a ke
19df0 79 77 6f 72 64 20 69 6e 20 73 69 6e 67 6c 65 0a  yword in single.
19e00 71 75 6f 74 65 73 20 28 65 78 3a 20 3c 62 3e 27  quotes (ex: <b>'
19e10 6b 65 79 27 3c 2f 62 3e 20 6f 72 20 3c 62 3e 27  key'</b> or <b>'
19e20 67 6c 6f 62 27 3c 2f 62 3e 29 20 69 73 20 75 73  glob'</b>) is us
19e30 65 64 20 69 6e 20 61 20 63 6f 6e 74 65 78 74 20  ed in a context 
19e40 77 68 65 72 65 0a 61 6e 20 69 64 65 6e 74 69 66  where.an identif
19e50 69 65 72 20 69 73 20 61 6c 6c 6f 77 65 64 20 62  ier is allowed b
19e60 75 74 20 77 68 65 72 65 20 61 20 73 74 72 69 6e  ut where a strin
19e70 67 20 6c 69 74 65 72 61 6c 20 69 73 20 6e 6f 74  g literal is not
19e80 20 61 6c 6c 6f 77 65 64 2c 20 74 68 65 6e 0a 74   allowed, then.t
19e90 68 65 20 74 6f 6b 65 6e 20 69 73 20 75 6e 64 65  he token is unde
19ea0 72 73 74 6f 6f 64 20 74 6f 20 62 65 20 61 6e 20  rstood to be an 
19eb0 69 64 65 6e 74 69 66 69 65 72 20 69 6e 73 74 65  identifier inste
19ec0 61 64 20 6f 66 20 61 20 73 74 72 69 6e 67 20 6c  ad of a string l
19ed0 69 74 65 72 61 6c 2e 0a 3c 2f 70 3e 3c 2f 6c 69  iteral..</p></li
19ee0 3e 0a 0a 3c 6c 69 3e 3c 70 3e 49 66 20 61 20 6b  >..<li><p>If a k
19ef0 65 79 77 6f 72 64 20 69 6e 20 64 6f 75 62 6c 65  eyword in double
19f00 0a 71 75 6f 74 65 73 20 28 65 78 3a 20 3c 62 3e  .quotes (ex: <b>
19f10 22 6b 65 79 22 3c 2f 62 3e 20 6f 72 20 3c 62 3e  "key"</b> or <b>
19f20 22 67 6c 6f 62 22 3c 2f 62 3e 29 20 69 73 20 75  "glob"</b>) is u
19f30 73 65 64 20 69 6e 20 61 20 63 6f 6e 74 65 78 74  sed in a context
19f40 20 77 68 65 72 65 0a 69 74 20 63 61 6e 6e 6f 74   where.it cannot
19f50 20 62 65 20 72 65 73 6f 6c 76 65 64 20 74 6f 20   be resolved to 
19f60 61 6e 20 69 64 65 6e 74 69 66 69 65 72 20 62 75  an identifier bu
19f70 74 20 77 68 65 72 65 20 61 20 73 74 72 69 6e 67  t where a string
19f80 20 6c 69 74 65 72 61 6c 0a 69 73 20 61 6c 6c 6f   literal.is allo
19f90 77 65 64 2c 20 74 68 65 6e 20 74 68 65 20 74 6f  wed, then the to
19fa0 6b 65 6e 20 69 73 20 75 6e 64 65 72 73 74 6f 6f  ken is understoo
19fb0 64 20 74 6f 20 62 65 20 61 20 73 74 72 69 6e 67  d to be a string
19fc0 20 6c 69 74 65 72 61 6c 20 69 6e 73 74 65 61 64   literal instead
19fd0 0a 6f 66 20 61 6e 20 69 64 65 6e 74 69 66 65 72  .of an identifer
19fe0 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e  .</p></li>.</ul>
19ff0 0a 0a 3c 70 3e 50 72 6f 67 72 61 6d 6d 65 72 73  ..<p>Programmers
1a000 20 61 72 65 20 63 61 75 74 69 6f 6e 65 64 20 6e   are cautioned n
1a010 6f 74 20 74 6f 20 75 73 65 20 74 68 65 20 74 77  ot to use the tw
1a020 6f 20 65 78 63 65 70 74 69 6f 6e 73 20 64 65 73  o exceptions des
1a030 63 72 69 62 65 64 20 69 6e 0a 74 68 65 20 70 72  cribed in.the pr
1a040 65 76 69 6f 75 73 20 62 75 6c 6c 65 74 73 2e 20  evious bullets. 
1a050 20 57 65 20 65 6d 70 68 61 73 69 7a 65 20 74 68   We emphasize th
1a060 61 74 20 74 68 65 79 20 65 78 69 73 74 20 6f 6e  at they exist on
1a070 6c 79 20 73 6f 20 74 68 61 74 20 6f 6c 64 0a 61  ly so that old.a
1a080 6e 64 20 69 6c 6c 2d 66 6f 72 6d 65 64 20 53 51  nd ill-formed SQ
1a090 4c 20 73 74 61 74 65 6d 65 6e 74 73 20 77 69 6c  L statements wil
1a0a0 6c 20 72 75 6e 20 63 6f 72 72 65 63 74 6c 79 2e  l run correctly.
1a0b0 20 20 46 75 74 75 72 65 20 76 65 72 73 69 6f 6e    Future version
1a0c0 73 20 6f 66 0a 53 51 4c 69 74 65 20 6d 69 67 68  s of.SQLite migh
1a0d0 74 20 63 68 61 6e 67 65 20 74 6f 20 72 61 69 73  t change to rais
1a0e0 65 20 65 72 72 6f 72 73 20 69 6e 73 74 65 61 64  e errors instead
1a0f0 20 6f 66 20 61 63 63 65 70 74 69 6e 67 20 74 68   of accepting th
1a100 65 20 6d 61 6c 66 6f 72 6d 65 64 0a 73 74 61 74  e malformed.stat
1a110 65 6d 65 6e 74 73 20 63 6f 76 65 72 65 64 20 62  ements covered b
1a120 79 20 74 68 65 20 65 78 63 65 70 74 69 6f 6e 73  y the exceptions
1a130 20 61 62 6f 76 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e   above.</p>..<p>
1a140 53 51 4c 69 74 65 20 69 73 20 65 78 74 65 6e 64  SQLite is extend
1a150 65 64 20 74 6f 20 61 6c 6c 6f 77 20 6d 61 6e 79  ed to allow many
1a160 20 6b 65 79 77 6f 72 64 73 20 74 6f 20 62 65 20   keywords to be 
1a170 75 73 65 64 20 75 6e 71 75 6f 74 65 64 0a 61 73  used unquoted.as
1a180 20 74 68 65 20 6e 61 6d 65 73 20 6f 66 20 64 61   the names of da
1a190 74 61 62 61 73 65 73 2c 20 74 61 62 6c 65 73 2c  tabases, tables,
1a1a0 20 69 6e 64 69 63 65 73 2c 20 74 72 69 67 67 65   indices, trigge
1a1b0 72 73 2c 20 76 69 65 77 73 2c 20 63 6f 6c 75 6d  rs, views, colum
1a1c0 6e 73 2c 0a 75 73 65 72 2d 64 65 66 69 6e 65 64  ns,.user-defined
1a1d0 20 66 75 6e 63 74 69 6f 6e 73 2c 20 63 6f 6c 6c   functions, coll
1a1e0 61 74 69 6f 6e 73 2c 20 61 74 74 61 63 68 65 64  ations, attached
1a1f0 20 64 61 74 61 62 61 73 65 73 2c 20 61 6e 64 20   databases, and 
1a200 76 69 72 74 75 61 6c 0a 66 75 6e 63 74 69 6f 6e  virtual.function
1a210 20 6d 6f 64 75 6c 65 73 2e 0a 49 6e 20 74 68 65   modules..In the
1a220 20 6c 69 73 74 20 6f 66 20 6b 65 79 77 6f 72 64   list of keyword
1a230 73 20 74 68 61 74 20 66 6f 6c 6c 6f 77 73 2c 20  s that follows, 
1a240 74 68 6f 73 65 20 74 68 61 74 20 63 61 6e 20 62  those that can b
1a250 65 20 75 73 65 64 20 61 73 20 69 64 65 6e 74 69  e used as identi
1a260 66 69 65 72 73 0a 61 72 65 20 73 68 6f 77 6e 20  fiers.are shown 
1a270 69 6e 20 61 6e 20 69 74 61 6c 69 63 20 66 6f 6e  in an italic fon
1a280 74 2e 20 20 4b 65 79 77 6f 72 64 73 20 74 68 61  t.  Keywords tha
1a290 74 20 6d 75 73 74 20 62 65 20 71 75 6f 74 65 64  t must be quoted
1a2a0 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 62 65 0a   in order to be.
1a2b0 75 73 65 64 20 61 73 20 69 64 65 6e 74 69 66 69  used as identifi
1a2c0 65 72 73 20 61 72 65 20 73 68 6f 77 6e 20 69 6e  ers are shown in
1a2d0 20 62 6f 6c 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 0a   bold.</p>..<p>.
1a2e0 53 51 4c 69 74 65 20 61 64 64 73 20 6e 65 77 20  SQLite adds new 
1a2f0 6b 65 79 77 6f 72 64 73 20 66 72 6f 6d 20 74 69  keywords from ti
1a300 6d 65 20 74 6f 20 74 69 6d 65 20 77 68 65 6e 20  me to time when 
1a310 69 74 20 74 61 6b 65 73 20 6f 6e 20 6e 65 77 20  it takes on new 
1a320 66 65 61 74 75 72 65 73 2e 0a 53 6f 20 74 6f 20  features..So to 
1a330 70 72 65 76 65 6e 74 20 79 6f 75 72 20 63 6f 64  prevent your cod
1a340 65 20 66 72 6f 6d 20 62 65 69 6e 67 20 62 72 6f  e from being bro
1a350 6b 65 6e 20 62 79 20 66 75 74 75 72 65 20 65 6e  ken by future en
1a360 68 61 6e 63 65 6d 65 6e 74 73 2c 20 79 6f 75 20  hancements, you 
1a370 73 68 6f 75 6c 64 0a 6e 6f 72 6d 61 6c 6c 79 20  should.normally 
1a380 71 75 6f 74 65 20 61 6e 79 20 69 64 65 6e 74 69  quote any identi
1a390 66 69 65 72 20 74 68 61 74 20 69 73 20 61 6e 20  fier that is an 
1a3a0 45 6e 67 6c 69 73 68 20 6c 61 6e 67 75 61 67 65  English language
1a3b0 20 77 6f 72 64 2c 20 65 76 65 6e 20 69 66 0a 79   word, even if.y
1a3c0 6f 75 20 64 6f 20 6e 6f 74 20 68 61 76 65 20 74  ou do not have t
1a3d0 6f 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 54 68 65  o..</p>..<p>.The
1a3e0 20 66 6f 6c 6c 6f 77 69 6e 67 20 61 72 65 20 74   following are t
1a3f0 68 65 20 6b 65 79 77 6f 72 64 73 20 63 75 72 72  he keywords curr
1a400 65 6e 74 6c 79 20 72 65 63 6f 67 6e 69 7a 65 64  ently recognized
1a410 20 62 79 20 53 51 4c 69 74 65 3a 0a 3c 2f 70 3e   by SQLite:.</p>
1a420 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 3c  ..<blockquote>.<
1a430 74 61 62 6c 65 20 77 69 64 74 68 3d 22 31 30 30  table width="100
1a440 25 22 20 63 6c 61 73 73 3d 22 70 64 66 5f 6b 65  %" class="pdf_ke
1a450 79 77 6f 72 64 73 22 3e 0a 3c 74 72 3e 0a 3c 74  ywords">.<tr>.<t
1a460 64 20 61 6c 69 67 6e 3d 22 6c 65 66 74 22 20 76  d align="left" v
1a470 61 6c 69 67 6e 3d 22 74 6f 70 22 20 77 69 64 74  align="top" widt
1a480 68 3d 22 32 30 25 22 3e 0a 0a 3c 74 63 6c 3e 0a  h="20%">..<tcl>.
1a490 73 65 74 20 6e 20 5b 6c 6c 65 6e 67 74 68 20 24  set n [llength $
1a4a0 6b 65 79 77 6f 72 64 5f 6c 69 73 74 5d 0a 73 65  keyword_list].se
1a4b0 74 20 6e 43 6f 6c 20 35 0a 73 65 74 20 6e 52 6f  t nCol 5.set nRo
1a4c0 77 20 5b 65 78 70 72 20 7b 28 24 6e 2b 24 6e 43  w [expr {($n+$nC
1a4d0 6f 6c 2d 31 29 2f 24 6e 43 6f 6c 7d 5d 0a 73 65  ol-1)/$nCol}].se
1a4e0 74 20 69 20 30 0a 66 6f 72 65 61 63 68 20 77 6f  t i 0.foreach wo
1a4f0 72 64 20 24 6b 65 79 77 6f 72 64 5f 6c 69 73 74  rd $keyword_list
1a500 20 7b 0a 20 20 69 66 20 7b 5b 73 74 72 69 6e 67   {.  if {[string
1a510 20 69 6e 64 65 78 20 24 77 6f 72 64 20 65 6e 64   index $word end
1a520 5d 3d 3d 22 2a 22 7d 20 7b 0a 20 20 20 20 73 65  ]=="*"} {.    se
1a530 74 20 77 6f 72 64 20 5b 73 74 72 69 6e 67 20 72  t word [string r
1a540 61 6e 67 65 20 24 77 6f 72 64 20 30 20 65 6e 64  ange $word 0 end
1a550 2d 31 5d 0a 20 20 20 20 73 65 74 20 66 6f 6e 74  -1].    set font
1a560 20 69 0a 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20   i.  } else {.  
1a570 20 20 73 65 74 20 66 6f 6e 74 20 62 0a 20 20 7d    set font b.  }
1a580 0a 20 20 69 66 20 7b 24 69 3d 3d 24 6e 52 6f 77  .  if {$i==$nRow
1a590 7d 20 7b 0a 20 20 20 20 68 64 5f 70 75 74 73 20  } {.    hd_puts 
1a5a0 22 3c 2f 74 64 3e 3c 74 64 20 76 61 6c 69 67 6e  "</td><td valign
1a5b0 3d 5c 22 74 6f 70 5c 22 20 61 6c 69 67 6e 3d 5c  =\"top\" align=\
1a5c0 22 6c 65 66 74 5c 22 20 77 69 64 74 68 3d 5c 22  "left\" width=\"
1a5d0 32 30 25 5c 22 3e 22 0a 20 20 20 20 73 65 74 20  20%\">".    set 
1a5e0 69 20 31 0a 20 20 7d 20 65 6c 73 65 20 7b 0a 20  i 1.  } else {. 
1a5f0 20 20 20 69 6e 63 72 20 69 0a 20 20 7d 0a 20 20     incr i.  }.  
1a600 68 64 5f 70 75 74 73 20 22 3c 24 66 6f 6e 74 3e  hd_puts "<$font>
1a610 24 77 6f 72 64 3c 2f 24 66 6f 6e 74 3e 3c 62 72  $word</$font><br
1a620 3e 22 0a 7d 0a 3c 2f 74 63 6c 3e 0a 3c 2f 74 64  >".}.</tcl>.</td
1a630 3e 3c 2f 74 72 3e 3c 2f 74 61 62 6c 65 3e 3c 2f  ></tr></table></
1a640 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c 68 32  blockquote>..<h2
1a650 3e 53 70 65 63 69 61 6c 20 6e 61 6d 65 73 3c 2f  >Special names</
1a660 68 32 3e 0a 0a 3c 70 3e 54 68 65 20 66 6f 6c 6c  h2>..<p>The foll
1a670 6f 77 69 6e 67 20 61 72 65 20 6e 6f 74 20 6b 65  owing are not ke
1a680 79 77 6f 72 64 73 20 69 6e 20 53 51 4c 69 74 65  ywords in SQLite
1a690 2c 20 62 75 74 20 61 72 65 20 75 73 65 64 20 61  , but are used a
1a6a0 73 20 6e 61 6d 65 73 20 6f 66 20 0a 73 79 73 74  s names of .syst
1a6b0 65 6d 20 6f 62 6a 65 63 74 73 2e 20 20 54 68 65  em objects.  The
1a6c0 79 20 63 61 6e 20 62 65 20 75 73 65 64 20 61 73  y can be used as
1a6d0 20 61 6e 20 69 64 65 6e 74 69 66 69 65 72 20 66   an identifier f
1a6e0 6f 72 20 61 20 64 69 66 66 65 72 65 6e 74 20 0a  or a different .
1a6f0 74 79 70 65 20 6f 66 20 6f 62 6a 65 63 74 2e 3c  type of object.<
1a700 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65  /p>..<blockquote
1a710 20 63 6c 61 73 73 3d 22 70 64 66 5f 6b 65 79 77   class="pdf_keyw
1a720 6f 72 64 73 22 3e 3c 62 3e 0a 20 20 5f 52 4f 57  ords"><b>.  _ROW
1a730 49 44 5f 3c 62 72 3e 0a 20 20 4d 41 49 4e 3c 62  ID_<br>.  MAIN<b
1a740 72 3e 0a 20 20 4f 49 44 3c 62 72 3e 0a 20 20 52  r>.  OID<br>.  R
1a750 4f 57 49 44 3c 62 72 3e 0a 20 20 53 51 4c 49 54  OWID<br>.  SQLIT
1a760 45 5f 4d 41 53 54 45 52 3c 62 72 3e 0a 20 20 53  E_MASTER<br>.  S
1a770 51 4c 49 54 45 5f 53 45 51 55 45 4e 43 45 3c 62  QLITE_SEQUENCE<b
1a780 72 3e 0a 20 20 53 51 4c 49 54 45 5f 54 45 4d 50  r>.  SQLITE_TEMP
1a790 5f 4d 41 53 54 45 52 3c 62 72 3e 0a 20 20 54 45  _MASTER<br>.  TE
1a7a0 4d 50 3c 62 72 3e 0a 3c 2f 62 3e 3c 2f 62 6c 6f  MP<br>.</b></blo
1a7b0 63 6b 71 75 6f 74 65 3e 0a                       ckquote>.