Documentation Source Text

Hex Artifact Content
Login

Artifact 779a8fa4040ace83a6d5664b4da333cc6f0ab743:


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 6e 2c 20 72 65 6d 6f  e a column, remo
10b0: 76 65 20 61 20 63 6f 6c 75 6d 6e 2c 20 6f 72 20  ve a column, or 
10c0: 61 64 64 20 6f 72 20 72 65 6d 6f 76 65 20 63 6f  add or remove co
10d0: 6e 73 74 72 61 69 6e 74 73 20 66 72 6f 6d 20 61  nstraints from a
10e0: 20 74 61 62 6c 65 2e 0a 3c 2f 70 3e 0a 0a 3c 70   table..</p>..<p
10f0: 3e 54 68 65 20 52 45 4e 41 4d 45 20 54 4f 20 73  >The RENAME TO s
1100: 79 6e 74 61 78 20 69 73 20 75 73 65 64 20 74 6f  yntax is used to
1110: 20 72 65 6e 61 6d 65 20 74 68 65 20 74 61 62 6c   rename the tabl
1120: 65 20 69 64 65 6e 74 69 66 69 65 64 20 62 79 20  e identified by 
1130: 0a 3c 69 3e 26 23 39 31 3b 64 61 74 61 62 61 73  .<i>&#91;databas
1140: 65 2d 6e 61 6d 65 2e 26 23 39 33 3b 74 61 62 6c  e-name.&#93;tabl
1150: 65 2d 6e 61 6d 65 3c 2f 69 3e 20 74 6f 20 3c 69  e-name</i> to <i
1160: 3e 6e 65 77 2d 74 61 62 6c 65 2d 6e 61 6d 65 3c  >new-table-name<
1170: 2f 69 3e 2e 0a 54 68 69 73 20 63 6f 6d 6d 61 6e  /i>..This comman
1180: 64 20 0a 63 61 6e 6e 6f 74 20 62 65 20 75 73 65  d .cannot be use
1190: 64 20 74 6f 20 6d 6f 76 65 20 61 20 74 61 62 6c  d to move a tabl
11a0: 65 20 62 65 74 77 65 65 6e 20 61 74 74 61 63 68  e between attach
11b0: 65 64 20 64 61 74 61 62 61 73 65 73 2c 20 6f 6e  ed databases, on
11c0: 6c 79 20 74 6f 20 72 65 6e 61 6d 65 20 0a 61 20  ly to rename .a 
11d0: 74 61 62 6c 65 20 77 69 74 68 69 6e 20 74 68 65  table within the
11e0: 20 73 61 6d 65 20 64 61 74 61 62 61 73 65 2e 3c   same database.<
11f0: 2f 70 3e 0a 0a 3c 70 3e 49 66 20 74 68 65 20 74  /p>..<p>If the t
1200: 61 62 6c 65 20 62 65 69 6e 67 20 72 65 6e 61 6d  able being renam
1210: 65 64 20 68 61 73 20 74 72 69 67 67 65 72 73 20  ed has triggers 
1220: 6f 72 20 69 6e 64 69 63 65 73 2c 20 74 68 65 6e  or indices, then
1230: 20 74 68 65 73 65 20 72 65 6d 61 69 6e 0a 61 74   these remain.at
1240: 74 61 63 68 65 64 20 74 6f 20 74 68 65 20 74 61  tached to the ta
1250: 62 6c 65 20 61 66 74 65 72 20 69 74 20 68 61 73  ble after it has
1260: 20 62 65 65 6e 20 72 65 6e 61 6d 65 64 2e 20 48   been renamed. H
1270: 6f 77 65 76 65 72 2c 20 69 66 20 74 68 65 72 65  owever, if there
1280: 20 61 72 65 0a 61 6e 79 20 76 69 65 77 20 64 65   are.any view de
1290: 66 69 6e 69 74 69 6f 6e 73 2c 20 6f 72 20 73 74  finitions, or st
12a0: 61 74 65 6d 65 6e 74 73 20 65 78 65 63 75 74 65  atements execute
12b0: 64 20 62 79 20 74 72 69 67 67 65 72 73 20 74 68  d by triggers th
12c0: 61 74 20 72 65 66 65 72 20 74 6f 0a 74 68 65 20  at refer to.the 
12d0: 74 61 62 6c 65 20 62 65 69 6e 67 20 72 65 6e 61  table being rena
12e0: 6d 65 64 2c 20 74 68 65 73 65 20 61 72 65 20 6e  med, these are n
12f0: 6f 74 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79  ot automatically
1300: 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 75 73 65   modified to use
1310: 20 74 68 65 20 6e 65 77 0a 74 61 62 6c 65 20 6e   the new.table n
1320: 61 6d 65 2e 20 49 66 20 74 68 69 73 20 69 73 20  ame. If this is 
1330: 72 65 71 75 69 72 65 64 2c 20 74 68 65 20 74 72  required, the tr
1340: 69 67 67 65 72 73 20 6f 72 20 76 69 65 77 20 64  iggers or view d
1350: 65 66 69 6e 69 74 69 6f 6e 73 20 6d 75 73 74 20  efinitions must 
1360: 62 65 0a 64 72 6f 70 70 65 64 20 61 6e 64 20 72  be.dropped and r
1370: 65 63 72 65 61 74 65 64 20 74 6f 20 75 73 65 20  ecreated to use 
1380: 74 68 65 20 6e 65 77 20 74 61 62 6c 65 20 6e 61  the new table na
1390: 6d 65 20 62 79 20 68 61 6e 64 2e 20 0a 3c 2f 70  me by hand. .</p
13a0: 3e 0a 0a 3c 70 3e 5e 49 66 20 5b 66 6f 72 65 69  >..<p>^If [forei
13b0: 67 6e 20 6b 65 79 20 63 6f 6e 73 74 72 61 69 6e  gn key constrain
13c0: 74 73 5d 20 61 72 65 20 0a 5b 66 6f 72 65 69 67  ts] are .[foreig
13d0: 6e 5f 6b 65 79 73 20 70 72 61 67 6d 61 20 7c 20  n_keys pragma | 
13e0: 65 6e 61 62 6c 65 64 5d 20 77 68 65 6e 20 61 20  enabled] when a 
13f0: 74 61 62 6c 65 20 69 73 20 72 65 6e 61 6d 65 64  table is renamed
1400: 2c 20 74 68 65 6e 20 61 6e 79 0a 5b 66 6f 72 65  , then any.[fore
1410: 69 67 6e 2d 6b 65 79 2d 63 6c 61 75 73 65 20 7c  ign-key-clause |
1420: 20 52 45 46 45 52 45 4e 43 45 53 20 63 6c 61 75   REFERENCES clau
1430: 73 65 73 5d 20 69 6e 20 61 6e 79 20 74 61 62 6c  ses] in any tabl
1440: 65 20 28 65 69 74 68 65 72 20 74 68 65 0a 74 61  e (either the.ta
1450: 62 6c 65 20 62 65 69 6e 67 20 72 65 6e 61 6d 65  ble being rename
1460: 64 20 6f 72 20 73 6f 6d 65 20 6f 74 68 65 72 20  d or some other 
1470: 74 61 62 6c 65 29 0a 74 68 61 74 20 72 65 66 65  table).that refe
1480: 72 20 74 6f 20 74 68 65 20 74 61 62 6c 65 20 62  r to the table b
1490: 65 69 6e 67 20 72 65 6e 61 6d 65 64 20 61 72 65  eing renamed are
14a0: 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 72 65 66   modified to ref
14b0: 65 72 20 0a 74 6f 20 74 68 65 20 72 65 6e 61 6d  er .to the renam
14c0: 65 64 20 74 61 62 6c 65 20 62 79 20 69 74 73 20  ed table by its 
14d0: 6e 65 77 20 6e 61 6d 65 2e 0a 0a 3c 70 3e 54 68  new name...<p>Th
14e0: 65 20 41 44 44 20 43 4f 4c 55 4d 4e 20 73 79 6e  e ADD COLUMN syn
14f0: 74 61 78 0a 69 73 20 75 73 65 64 20 74 6f 20 61  tax.is used to a
1500: 64 64 20 61 20 6e 65 77 20 63 6f 6c 75 6d 6e 20  dd a new column 
1510: 74 6f 20 61 6e 20 65 78 69 73 74 69 6e 67 20 74  to an existing t
1520: 61 62 6c 65 2e 0a 54 68 65 20 6e 65 77 20 63 6f  able..The new co
1530: 6c 75 6d 6e 20 69 73 20 61 6c 77 61 79 73 20 61  lumn is always a
1540: 70 70 65 6e 64 65 64 20 74 6f 20 74 68 65 20 65  ppended to the e
1550: 6e 64 20 6f 66 20 74 68 65 20 6c 69 73 74 20 6f  nd of the list o
1560: 66 20 65 78 69 73 74 69 6e 67 20 63 6f 6c 75 6d  f existing colum
1570: 6e 73 2e 0a 54 68 65 20 5b 63 6f 6c 75 6d 6e 2d  ns..The [column-
1580: 64 65 66 5d 20 72 75 6c 65 20 64 65 66 69 6e 65  def] rule define
1590: 73 20 74 68 65 20 63 68 61 72 61 63 74 65 72 69  s the characteri
15a0: 73 74 69 63 73 20 6f 66 20 74 68 65 20 6e 65 77  stics of the new
15b0: 20 63 6f 6c 75 6d 6e 2e 0a 54 68 65 20 6e 65 77   column..The new
15c0: 20 63 6f 6c 75 6d 6e 20 6d 61 79 20 74 61 6b 65   column may take
15d0: 20 61 6e 79 20 6f 66 20 74 68 65 20 66 6f 72 6d   any of the form
15e0: 73 20 70 65 72 6d 69 73 73 61 62 6c 65 20 69 6e  s permissable in
15f0: 20 61 20 5b 43 52 45 41 54 45 20 54 41 42 4c 45   a [CREATE TABLE
1600: 5d 0a 73 74 61 74 65 6d 65 6e 74 2c 20 77 69 74  ].statement, wit
1610: 68 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20  h the following 
1620: 72 65 73 74 72 69 63 74 69 6f 6e 73 3a 0a 3c 75  restrictions:.<u
1630: 6c 3e 0a 3c 6c 69 3e 54 68 65 20 63 6f 6c 75 6d  l>.<li>The colum
1640: 6e 20 6d 61 79 20 6e 6f 74 20 68 61 76 65 20 61  n may not have a
1650: 20 50 52 49 4d 41 52 59 20 4b 45 59 20 6f 72 20   PRIMARY KEY or 
1660: 55 4e 49 51 55 45 20 63 6f 6e 73 74 72 61 69 6e  UNIQUE constrain
1670: 74 2e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 54 68 65 20  t.</li>.<li>The 
1680: 63 6f 6c 75 6d 6e 20 6d 61 79 20 6e 6f 74 20 68  column may not h
1690: 61 76 65 20 61 20 64 65 66 61 75 6c 74 20 76 61  ave a default va
16a0: 6c 75 65 20 6f 66 20 43 55 52 52 45 4e 54 5f 54  lue of CURRENT_T
16b0: 49 4d 45 2c 20 43 55 52 52 45 4e 54 5f 44 41 54  IME, CURRENT_DAT
16c0: 45 20 0a 20 20 20 20 6f 72 20 43 55 52 52 45 4e  E .    or CURREN
16d0: 54 5f 54 49 4d 45 53 54 41 4d 50 2e 3c 2f 6c 69  T_TIMESTAMP.</li
16e0: 3e 0a 3c 6c 69 3e 49 66 20 61 20 4e 4f 54 20 4e  >.<li>If a NOT N
16f0: 55 4c 4c 20 63 6f 6e 73 74 72 61 69 6e 74 20 69  ULL constraint i
1700: 73 20 73 70 65 63 69 66 69 65 64 2c 20 74 68 65  s specified, the
1710: 6e 20 74 68 65 20 63 6f 6c 75 6d 6e 20 6d 75 73  n the column mus
1720: 74 20 68 61 76 65 20 61 0a 20 20 20 20 64 65 66  t have a.    def
1730: 61 75 6c 74 20 76 61 6c 75 65 20 6f 74 68 65 72  ault value other
1740: 20 74 68 61 6e 20 4e 55 4c 4c 2e 0a 3c 6c 69 3e   than NULL..<li>
1750: 5e 49 66 20 5b 66 6f 72 65 69 67 6e 20 6b 65 79  ^If [foreign key
1760: 20 63 6f 6e 73 74 72 61 69 6e 74 73 5d 20 61 72   constraints] ar
1770: 65 20 5b 66 6f 72 65 69 67 6e 5f 6b 65 79 73 20  e [foreign_keys 
1780: 70 72 61 67 6d 61 20 7c 20 65 6e 61 62 6c 65 64  pragma | enabled
1790: 5d 20 61 6e 64 0a 20 20 20 20 61 20 63 6f 6c 75  ] and.    a colu
17a0: 6d 6e 20 77 69 74 68 20 61 20 5b 66 6f 72 65 69  mn with a [forei
17b0: 67 6e 2d 6b 65 79 2d 63 6c 61 75 73 65 20 7c 20  gn-key-clause | 
17c0: 52 45 46 45 52 45 4e 43 45 53 20 63 6c 61 75 73  REFERENCES claus
17d0: 65 5d 0a 20 20 20 20 69 73 20 61 64 64 65 64 2c  e].    is added,
17e0: 20 74 68 65 20 63 6f 6c 75 6d 6e 20 6d 75 73 74   the column must
17f0: 20 68 61 76 65 20 61 20 64 65 66 61 75 6c 74 20   have a default 
1800: 76 61 6c 75 65 20 6f 66 20 4e 55 4c 4c 2e 0a 3c  value of NULL..<
1810: 2f 75 6c 3e 0a 0a 3c 70 3e 4e 6f 74 65 20 61 6c  /ul>..<p>Note al
1820: 73 6f 20 74 68 61 74 20 77 68 65 6e 20 61 64 64  so that when add
1830: 69 6e 67 20 61 20 43 48 45 43 4b 20 63 6f 6e 73  ing a CHECK cons
1840: 74 72 61 69 6e 74 2c 20 74 68 65 20 43 48 45 43  traint, the CHEC
1850: 4b 20 63 6f 6e 73 74 72 61 69 6e 74 0a 69 73 20  K constraint.is 
1860: 6e 6f 74 20 74 65 73 74 65 64 20 61 67 61 69 6e  not tested again
1870: 73 74 20 70 72 65 65 78 69 73 74 69 6e 67 20 72  st preexisting r
1880: 6f 77 73 20 6f 66 20 74 68 65 20 74 61 62 6c 65  ows of the table
1890: 2e 0a 54 68 69 73 20 63 61 6e 20 72 65 73 75 6c  ..This can resul
18a0: 74 20 69 6e 20 61 20 74 61 62 6c 65 20 74 68 61  t in a table tha
18b0: 74 20 63 6f 6e 74 61 69 6e 73 20 64 61 74 61 20  t contains data 
18c0: 74 68 61 74 0a 69 73 20 69 6e 20 76 69 6f 6c 61  that.is in viola
18d0: 74 69 6f 6e 20 6f 66 20 74 68 65 20 43 48 45 43  tion of the CHEC
18e0: 4b 20 63 6f 6e 73 74 72 61 69 6e 74 2e 20 20 46  K constraint.  F
18f0: 75 74 75 72 65 20 76 65 72 73 69 6f 6e 73 20 6f  uture versions o
1900: 66 20 53 51 4c 69 74 65 20 6d 69 67 68 74 0a 63  f SQLite might.c
1910: 68 61 6e 67 65 20 74 6f 20 76 61 6c 69 64 61 74  hange to validat
1920: 65 20 43 48 45 43 4b 20 63 6f 6e 73 74 72 61 69  e CHECK constrai
1930: 6e 74 73 20 61 73 20 74 68 65 79 20 61 72 65 20  nts as they are 
1940: 61 64 64 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54  added.</p>..<p>T
1950: 68 65 20 65 78 65 63 75 74 69 6f 6e 20 74 69 6d  he execution tim
1960: 65 20 6f 66 20 74 68 65 20 41 4c 54 45 52 20 54  e of the ALTER T
1970: 41 42 4c 45 20 63 6f 6d 6d 61 6e 64 20 69 73 20  ABLE command is 
1980: 69 6e 64 65 70 65 6e 64 65 6e 74 20 6f 66 0a 74  independent of.t
1990: 68 65 20 61 6d 6f 75 6e 74 20 6f 66 20 64 61 74  he amount of dat
19a0: 61 20 69 6e 20 74 68 65 20 74 61 62 6c 65 2e 20  a in the table. 
19b0: 20 54 68 65 20 41 4c 54 45 52 20 54 41 42 4c 45   The ALTER TABLE
19c0: 20 63 6f 6d 6d 61 6e 64 20 72 75 6e 73 20 61 73   command runs as
19d0: 20 71 75 69 63 6b 6c 79 0a 6f 6e 20 61 20 74 61   quickly.on a ta
19e0: 62 6c 65 20 77 69 74 68 20 31 30 20 6d 69 6c 6c  ble with 10 mill
19f0: 69 6f 6e 20 72 6f 77 73 20 61 73 20 69 74 20 64  ion rows as it d
1a00: 6f 65 73 20 6f 6e 20 61 20 74 61 62 6c 65 20 77  oes on a table w
1a10: 69 74 68 20 31 20 72 6f 77 2e 0a 3c 2f 70 3e 0a  ith 1 row..</p>.
1a20: 0a 3c 70 3e 41 66 74 65 72 20 41 44 44 20 43 4f  .<p>After ADD CO
1a30: 4c 55 4d 4e 20 68 61 73 20 62 65 65 6e 20 72 75  LUMN has been ru
1a40: 6e 20 6f 6e 20 61 20 64 61 74 61 62 61 73 65 2c  n on a database,
1a50: 20 74 68 61 74 20 64 61 74 61 62 61 73 65 20 77   that database w
1a60: 69 6c 6c 20 6e 6f 74 0a 62 65 20 72 65 61 64 61  ill not.be reada
1a70: 62 6c 65 20 62 79 20 53 51 4c 69 74 65 20 76 65  ble by SQLite ve
1a80: 72 73 69 6f 6e 20 33 2e 31 2e 33 20 61 6e 64 20  rsion 3.1.3 and 
1a90: 65 61 72 6c 69 65 72 2e 3c 2f 70 3e 0a 0a 3c 74  earlier.</p>..<t
1aa0: 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23  cl>.############
1ab0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1ac0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1ad0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1ae0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1af0: 23 23 0a 53 65 63 74 69 6f 6e 20 7b 41 4e 41 4c  ##.Section {ANAL
1b00: 59 5a 45 7d 20 61 6e 61 6c 79 7a 65 20 41 4e 41  YZE} analyze ANA
1b10: 4c 59 5a 45 0a 0a 42 75 62 62 6c 65 44 69 61 67  LYZE..BubbleDiag
1b20: 72 61 6d 20 61 6e 61 6c 79 7a 65 2d 73 74 6d 74  ram analyze-stmt
1b30: 20 31 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68   1.</tcl>..<p>Th
1b40: 65 20 41 4e 41 4c 59 5a 45 20 63 6f 6d 6d 61 6e  e ANALYZE comman
1b50: 64 20 67 61 74 68 65 72 73 20 73 74 61 74 69 73  d gathers statis
1b60: 74 69 63 73 20 61 62 6f 75 74 20 69 6e 64 69 63  tics about indic
1b70: 65 73 20 61 6e 64 20 73 74 6f 72 65 73 20 74 68  es and stores th
1b80: 65 6d 0a 69 6e 20 61 20 73 70 65 63 69 61 6c 20  em.in a special 
1b90: 74 61 62 6c 65 73 20 69 6e 20 74 68 65 20 64 61  tables in the da
1ba0: 74 61 62 61 73 65 20 77 68 65 72 65 20 74 68 65  tabase where the
1bb0: 20 71 75 65 72 79 20 6f 70 74 69 6d 69 7a 65 72   query optimizer
1bc0: 20 63 61 6e 20 75 73 65 0a 74 68 65 6d 20 74 6f   can use.them to
1bd0: 20 68 65 6c 70 20 6d 61 6b 65 20 62 65 74 74 65   help make bette
1be0: 72 20 69 6e 64 65 78 20 63 68 6f 69 63 65 73 2e  r index choices.
1bf0: 0a 49 66 20 6e 6f 20 61 72 67 75 6d 65 6e 74 73  .If no arguments
1c00: 20 61 72 65 20 67 69 76 65 6e 2c 20 61 6c 6c 20   are given, all 
1c10: 69 6e 64 69 63 65 73 20 69 6e 20 61 6c 6c 20 61  indices in all a
1c20: 74 74 61 63 68 65 64 20 64 61 74 61 62 61 73 65  ttached database
1c30: 73 20 61 72 65 0a 61 6e 61 6c 79 7a 65 64 2e 20  s are.analyzed. 
1c40: 20 49 66 20 61 20 64 61 74 61 62 61 73 65 20 6e   If a database n
1c50: 61 6d 65 20 69 73 20 67 69 76 65 6e 20 61 73 20  ame is given as 
1c60: 74 68 65 20 61 72 67 75 6d 65 6e 74 2c 20 61 6c  the argument, al
1c70: 6c 20 69 6e 64 69 63 65 73 0a 69 6e 20 74 68 61  l indices.in tha
1c80: 74 20 6f 6e 65 20 64 61 74 61 62 61 73 65 20 61  t one database a
1c90: 72 65 20 61 6e 61 6c 79 7a 65 64 2e 20 20 49 66  re analyzed.  If
1ca0: 20 74 68 65 20 61 72 67 75 6d 65 6e 74 20 69 73   the argument is
1cb0: 20 61 20 74 61 62 6c 65 20 6e 61 6d 65 2c 0a 74   a table name,.t
1cc0: 68 65 6e 20 6f 6e 6c 79 20 69 6e 64 69 63 65 73  hen only indices
1cd0: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
1ce0: 20 74 68 61 74 20 6f 6e 65 20 74 61 62 6c 65 20   that one table 
1cf0: 61 72 65 20 61 6e 61 6c 79 7a 65 64 2e 3c 2f 70  are analyzed.</p
1d00: 3e 0a 0a 3c 70 3e 54 68 65 20 64 65 66 61 75 6c  >..<p>The defaul
1d10: 74 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  t implementation
1d20: 20 73 74 6f 72 65 73 20 61 6c 6c 20 73 74 61 74   stores all stat
1d30: 69 73 74 69 63 73 20 69 6e 20 61 20 73 69 6e 67  istics in a sing
1d40: 6c 65 0a 74 61 62 6c 65 20 6e 61 6d 65 64 20 3c  le.table named <
1d50: 62 3e 73 71 6c 69 74 65 5f 73 74 61 74 31 3c 2f  b>sqlite_stat1</
1d60: 62 3e 2e 20 20 49 66 20 53 51 4c 69 74 65 20 69  b>.  If SQLite i
1d70: 73 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20  s compiled with 
1d80: 74 68 65 0a 5b 53 51 4c 49 54 45 5f 45 4e 41 42  the.[SQLITE_ENAB
1d90: 4c 45 5f 53 54 41 54 32 5d 20 6f 70 74 69 6f 6e  LE_STAT2] option
1da0: 2c 20 74 68 65 6e 20 61 64 64 69 74 69 6f 6e 61  , then additiona
1db0: 6c 20 68 69 73 74 6f 67 72 61 6d 20 64 61 74 61  l histogram data
1dc0: 20 69 73 0a 63 6f 6c 6c 65 63 74 65 64 20 61 6e   is.collected an
1dd0: 64 20 73 74 6f 72 65 64 20 69 6e 20 3c 62 3e 73  d stored in <b>s
1de0: 71 6c 69 74 65 5f 73 74 61 74 32 3c 2f 62 3e 2e  qlite_stat2</b>.
1df0: 0a 46 75 74 75 72 65 20 65 6e 68 61 6e 63 65 6d  .Future enhancem
1e00: 65 6e 74 73 20 6d 61 79 20 63 72 65 61 74 65 0a  ents may create.
1e10: 61 64 64 69 74 69 6f 6e 61 6c 20 74 61 62 6c 65  additional table
1e20: 73 20 77 69 74 68 20 74 68 65 20 73 61 6d 65 20  s with the same 
1e30: 6e 61 6d 65 20 70 61 74 74 65 72 6e 20 65 78 63  name pattern exc
1e40: 65 70 74 20 77 69 74 68 20 74 68 65 20 22 31 22  ept with the "1"
1e50: 0a 6f 72 20 22 32 22 20 63 68 61 6e 67 65 64 20  .or "2" changed 
1e60: 74 6f 20 61 20 64 69 66 66 65 72 65 6e 74 20 64  to a different d
1e70: 69 67 69 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68  igit.</p>..<p>Th
1e80: 65 20 5b 44 52 4f 50 20 54 41 42 4c 45 5d 20 63  e [DROP TABLE] c
1e90: 6f 6d 6d 61 6e 64 20 64 6f 65 73 0a 6e 6f 74 20  ommand does.not 
1ea0: 77 6f 72 6b 20 6f 6e 20 74 68 65 20 3c 62 3e 73  work on the <b>s
1eb0: 71 6c 69 74 65 5f 73 74 61 74 31 3c 2f 62 3e 20  qlite_stat1</b> 
1ec0: 6f 72 20 3c 62 3e 73 71 6c 69 74 65 5f 73 74 61  or <b>sqlite_sta
1ed0: 74 32 3c 2f 62 3e 20 74 61 62 6c 65 73 2c 0a 62  t2</b> tables,.b
1ee0: 75 74 20 61 6c 6c 20 74 68 65 20 63 6f 6e 74 65  ut all the conte
1ef0: 6e 74 20 6f 66 20 74 68 6f 73 65 20 74 61 62 6c  nt of those tabl
1f00: 65 73 20 63 61 6e 20 62 65 20 71 75 65 72 69 65  es can be querie
1f10: 64 20 75 73 69 6e 67 20 5b 53 45 4c 45 43 54 5d  d using [SELECT]
1f20: 0a 61 6e 64 20 63 61 6e 20 62 65 20 64 65 6c 65  .and can be dele
1f30: 74 65 64 2c 20 61 75 67 6d 65 6e 74 65 64 2c 20  ted, augmented, 
1f40: 6f 72 20 6d 6f 64 69 66 69 65 64 20 75 73 69 6e  or modified usin
1f50: 67 20 74 68 65 20 5b 44 45 4c 45 54 45 5d 2c 0a  g the [DELETE],.
1f60: 5b 49 4e 53 45 52 54 5d 2c 20 61 6e 64 20 5b 55  [INSERT], and [U
1f70: 50 44 41 54 45 5d 20 63 6f 6d 6d 61 6e 64 73 2e  PDATE] commands.
1f80: 0a 41 70 70 72 6f 70 72 69 61 74 65 20 63 61 72  .Appropriate car
1f90: 65 20 73 68 6f 75 6c 64 20 62 65 20 75 73 65 64  e should be used
1fa0: 20 77 68 65 6e 20 63 68 61 6e 67 69 6e 67 20 74   when changing t
1fb0: 68 65 20 63 6f 6e 74 65 6e 74 20 6f 66 20 74 68  he content of th
1fc0: 65 20 73 74 61 74 69 73 74 69 63 73 0a 74 61 62  e statistics.tab
1fd0: 6c 65 73 20 61 73 20 69 6e 76 61 6c 69 64 20 63  les as invalid c
1fe0: 6f 6e 74 65 6e 74 20 63 61 6e 20 63 61 75 73 65  ontent can cause
1ff0: 20 53 51 4c 69 74 65 20 74 6f 20 73 65 6c 65 63   SQLite to selec
2000: 74 20 69 6e 65 66 66 69 63 69 65 6e 74 0a 71 75  t inefficient.qu
2010: 65 72 79 20 70 6c 61 6e 73 2e 20 20 47 65 6e 65  ery plans.  Gene
2020: 72 61 6c 6c 79 20 73 70 65 61 6b 69 6e 67 2c 20  rally speaking, 
2030: 6f 6e 65 20 73 68 6f 75 6c 64 20 6e 6f 74 20 6d  one should not m
2040: 6f 64 69 66 79 20 74 68 65 20 63 6f 6e 74 65 6e  odify the conten
2050: 74 20 6f 66 0a 74 68 65 20 73 74 61 74 69 73 74  t of.the statist
2060: 69 63 73 20 74 61 62 6c 65 73 20 62 79 20 61 6e  ics tables by an
2070: 79 20 6d 65 63 68 61 6e 69 73 6d 20 6f 74 68 65  y mechanism othe
2080: 72 20 74 68 61 6e 20 69 6e 76 6f 6b 69 6e 67 20  r than invoking 
2090: 74 68 65 0a 41 4e 41 4c 59 5a 45 20 63 6f 6d 6d  the.ANALYZE comm
20a0: 61 6e 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 53 74 61  and.</p>..<p>Sta
20b0: 74 69 73 74 69 63 73 20 67 61 74 68 65 72 65 64  tistics gathered
20c0: 20 62 79 20 41 4e 41 4c 59 5a 45 20 61 72 65 20   by ANALYZE are 
20d0: 3c 75 3e 6e 6f 74 3c 2f 75 3e 20 61 75 74 6f 6d  <u>not</u> autom
20e0: 61 74 69 63 61 6c 6c 79 20 75 70 64 61 74 65 64  atically updated
20f0: 20 61 73 0a 74 68 65 20 63 6f 6e 74 65 6e 74 20   as.the content 
2100: 6f 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20  of the database 
2110: 63 68 61 6e 67 65 73 2e 20 20 49 66 20 74 68 65  changes.  If the
2120: 20 63 6f 6e 74 65 6e 74 20 6f 66 20 74 68 65 20   content of the 
2130: 64 61 74 61 62 61 73 65 0a 63 68 61 6e 67 65 73  database.changes
2140: 20 73 69 67 6e 69 66 69 63 61 6e 74 6c 79 2c 20   significantly, 
2150: 6f 72 20 69 66 20 74 68 65 20 64 61 74 61 62 61  or if the databa
2160: 73 65 20 73 63 68 65 6d 61 20 63 68 61 6e 67 65  se schema change
2170: 73 2c 20 74 68 65 6e 20 6f 6e 65 20 73 68 6f 75  s, then one shou
2180: 6c 64 0a 63 6f 6e 73 69 64 65 72 20 72 65 72 75  ld.consider reru
2190: 6e 6e 69 6e 67 20 74 68 65 20 41 4e 41 4c 59 5a  nning the ANALYZ
21a0: 45 20 63 6f 6d 6d 61 6e 64 20 69 6e 20 6f 72 64  E command in ord
21b0: 65 72 20 74 6f 20 75 70 64 61 74 65 20 74 68 65  er to update the
21c0: 20 73 74 61 74 69 73 74 69 63 73 2e 3c 2f 70 3e   statistics.</p>
21d0: 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23  ..<tcl>.########
21e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
21f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2200: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2210: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2220: 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b  ######.Section {
2230: 41 54 54 41 43 48 20 44 41 54 41 42 41 53 45 7d  ATTACH DATABASE}
2240: 20 61 74 74 61 63 68 20 41 54 54 41 43 48 0a 0a   attach ATTACH..
2250: 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 61 74  BubbleDiagram at
2260: 74 61 63 68 2d 73 74 6d 74 20 31 0a 3c 2f 74 63  tach-stmt 1.</tc
2270: 6c 3e 0a 0a 3c 70 3e 54 68 65 20 41 54 54 41 43  l>..<p>The ATTAC
2280: 48 20 44 41 54 41 42 41 53 45 20 73 74 61 74 65  H DATABASE state
2290: 6d 65 6e 74 20 61 64 64 73 20 61 6e 6f 74 68 65  ment adds anothe
22a0: 72 20 64 61 74 61 62 61 73 65 20 0a 66 69 6c 65  r database .file
22b0: 20 74 6f 20 74 68 65 20 63 75 72 72 65 6e 74 20   to the current 
22c0: 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
22d0: 69 6f 6e 2e 20 20 49 66 20 74 68 65 20 66 69 6c  ion.  If the fil
22e0: 65 6e 61 6d 65 20 63 6f 6e 74 61 69 6e 73 20 0a  ename contains .
22f0: 70 75 6e 63 74 75 61 74 69 6f 6e 20 63 68 61 72  punctuation char
2300: 61 63 74 65 72 73 20 69 74 20 6d 75 73 74 20 62  acters it must b
2310: 65 20 71 75 6f 74 65 64 2e 20 20 54 68 65 20 64  e quoted.  The d
2320: 61 74 61 62 61 73 65 2d 6e 61 6d 65 73 20 27 6d  atabase-names 'm
2330: 61 69 6e 27 20 61 6e 64 20 0a 27 74 65 6d 70 27  ain' and .'temp'
2340: 20 72 65 66 65 72 20 74 6f 20 74 68 65 20 6d 61   refer to the ma
2350: 69 6e 20 64 61 74 61 62 61 73 65 20 61 6e 64 20  in database and 
2360: 74 68 65 20 64 61 74 61 62 61 73 65 20 75 73 65  the database use
2370: 64 20 66 6f 72 20 0a 74 65 6d 70 6f 72 61 72 79  d for .temporary
2380: 20 74 61 62 6c 65 73 2e 20 20 54 68 65 73 65 20   tables.  These 
2390: 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 61 63 68  cannot be detach
23a0: 65 64 2e 20 20 41 74 74 61 63 68 65 64 20 64 61  ed.  Attached da
23b0: 74 61 62 61 73 65 73 20 0a 61 72 65 20 72 65 6d  tabases .are rem
23c0: 6f 76 65 64 20 75 73 69 6e 67 20 74 68 65 20 5b  oved using the [
23d0: 44 45 54 41 43 48 5d 20 73 74 61 74 65 6d 65 6e  DETACH] statemen
23e0: 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 59 6f 75 20 63  t.</p>..<p>You c
23f0: 61 6e 6e 6f 74 20 63 72 65 61 74 65 20 61 20 6e  annot create a n
2400: 65 77 20 74 61 62 6c 65 20 77 69 74 68 20 74 68  ew table with th
2410: 65 20 73 61 6d 65 20 6e 61 6d 65 20 61 73 20 61  e same name as a
2420: 20 74 61 62 6c 65 20 69 6e 20 0a 61 6e 20 61 74   table in .an at
2430: 74 61 63 68 65 64 20 64 61 74 61 62 61 73 65 2c  tached database,
2440: 20 62 75 74 20 79 6f 75 20 63 61 6e 20 61 74 74   but you can att
2450: 61 63 68 20 61 20 64 61 74 61 62 61 73 65 20 77  ach a database w
2460: 68 69 63 68 20 63 6f 6e 74 61 69 6e 73 0a 74 61  hich contains.ta
2470: 62 6c 65 73 20 77 68 6f 73 65 20 6e 61 6d 65 73  bles whose names
2480: 20 61 72 65 20 64 75 70 6c 69 63 61 74 65 73 20   are duplicates 
2490: 6f 66 20 74 61 62 6c 65 73 20 69 6e 20 74 68 65  of tables in the
24a0: 20 6d 61 69 6e 20 64 61 74 61 62 61 73 65 2e 20   main database. 
24b0: 20 49 74 20 69 73 20 0a 61 6c 73 6f 20 70 65 72   It is .also per
24c0: 6d 69 73 73 69 62 6c 65 20 74 6f 20 61 74 74 61  missible to atta
24d0: 63 68 20 74 68 65 20 73 61 6d 65 20 64 61 74 61  ch the same data
24e0: 62 61 73 65 20 66 69 6c 65 20 6d 75 6c 74 69 70  base file multip
24f0: 6c 65 20 74 69 6d 65 73 2e 3c 2f 70 3e 0a 0a 3c  le times.</p>..<
2500: 70 3e 54 61 62 6c 65 73 20 69 6e 20 61 6e 20 61  p>Tables in an a
2510: 74 74 61 63 68 65 64 20 64 61 74 61 62 61 73 65  ttached database
2520: 20 63 61 6e 20 62 65 20 72 65 66 65 72 72 65 64   can be referred
2530: 20 74 6f 20 75 73 69 6e 67 20 74 68 65 20 73 79   to using the sy
2540: 6e 74 61 78 20 0a 3c 69 3e 64 61 74 61 62 61 73  ntax .<i>databas
2550: 65 2d 6e 61 6d 65 2e 74 61 62 6c 65 2d 6e 61 6d  e-name.table-nam
2560: 65 3c 2f 69 3e 2e 20 20 49 66 20 61 6e 20 61 74  e</i>.  If an at
2570: 74 61 63 68 65 64 20 74 61 62 6c 65 20 64 6f 65  tached table doe
2580: 73 6e 27 74 20 68 61 76 65 20 0a 61 20 64 75 70  sn't have .a dup
2590: 6c 69 63 61 74 65 20 74 61 62 6c 65 20 6e 61 6d  licate table nam
25a0: 65 20 69 6e 20 74 68 65 20 6d 61 69 6e 20 64 61  e in the main da
25b0: 74 61 62 61 73 65 2c 20 69 74 20 64 6f 65 73 20  tabase, it does 
25c0: 6e 6f 74 20 72 65 71 75 69 72 65 20 61 20 0a 3c  not require a .<
25d0: 69 3e 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3c  i>database-name<
25e0: 2f 69 3e 20 70 72 65 66 69 78 2e 20 20 57 68 65  /i> prefix.  Whe
25f0: 6e 20 61 20 64 61 74 61 62 61 73 65 20 69 73 20  n a database is 
2600: 61 74 74 61 63 68 65 64 2c 20 61 6c 6c 20 6f 66  attached, all of
2610: 20 69 74 73 20 0a 74 61 62 6c 65 73 20 77 68 69   its .tables whi
2620: 63 68 20 64 6f 6e 27 74 20 68 61 76 65 20 64 75  ch don't have du
2630: 70 6c 69 63 61 74 65 20 6e 61 6d 65 73 20 62 65  plicate names be
2640: 63 6f 6d 65 20 74 68 65 20 64 65 66 61 75 6c 74  come the default
2650: 20 74 61 62 6c 65 0a 6f 66 20 74 68 61 74 20 6e   table.of that n
2660: 61 6d 65 2e 20 20 41 6e 79 20 74 61 62 6c 65 73  ame.  Any tables
2670: 20 6f 66 20 74 68 61 74 20 6e 61 6d 65 20 61 74   of that name at
2680: 74 61 63 68 65 64 20 61 66 74 65 72 77 61 72 64  tached afterward
2690: 73 20 72 65 71 75 69 72 65 20 74 68 65 0a 64 61  s require the.da
26a0: 74 61 62 61 73 65 20 70 72 65 66 69 78 2e 20 49  tabase prefix. I
26b0: 66 20 74 68 65 20 64 65 66 61 75 6c 74 20 74 61  f the default ta
26c0: 62 6c 65 20 6f 66 20 61 20 67 69 76 65 6e 20 6e  ble of a given n
26d0: 61 6d 65 20 69 73 20 64 65 74 61 63 68 65 64 2c  ame is detached,
26e0: 20 74 68 65 6e 0a 74 68 65 20 6c 61 73 74 20 74   then.the last t
26f0: 61 62 6c 65 20 6f 66 20 74 68 61 74 20 6e 61 6d  able of that nam
2700: 65 20 61 74 74 61 63 68 65 64 20 62 65 63 6f 6d  e attached becom
2710: 65 73 20 74 68 65 20 6e 65 77 20 64 65 66 61 75  es the new defau
2720: 6c 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 0a 54 72 61  lt.</p>..<p>.Tra
2730: 6e 73 61 63 74 69 6f 6e 73 20 69 6e 76 6f 6c 76  nsactions involv
2740: 69 6e 67 20 6d 75 6c 74 69 70 6c 65 20 61 74 74  ing multiple att
2750: 61 63 68 65 64 20 64 61 74 61 62 61 73 65 73 20  ached databases 
2760: 61 72 65 20 61 74 6f 6d 69 63 2c 0a 61 73 73 75  are atomic,.assu
2770: 6d 69 6e 67 20 74 68 61 74 20 74 68 65 20 6d 61  ming that the ma
2780: 69 6e 20 64 61 74 61 62 61 73 65 20 69 73 20 6e  in database is n
2790: 6f 74 20 22 5b 3a 6d 65 6d 6f 72 79 3a 5d 22 2e  ot "[:memory:]".
27a0: 20 20 49 66 20 74 68 65 20 6d 61 69 6e 0a 64 61    If the main.da
27b0: 74 61 62 61 73 65 20 69 73 20 22 3a 6d 65 6d 6f  tabase is ":memo
27c0: 72 79 3a 22 20 74 68 65 6e 20 0a 74 72 61 6e 73  ry:" then .trans
27d0: 61 63 74 69 6f 6e 73 20 63 6f 6e 74 69 6e 75 65  actions continue
27e0: 20 74 6f 20 62 65 20 61 74 6f 6d 69 63 20 77 69   to be atomic wi
27f0: 74 68 69 6e 20 65 61 63 68 20 69 6e 64 69 76 69  thin each indivi
2800: 64 75 61 6c 0a 64 61 74 61 62 61 73 65 20 66 69  dual.database fi
2810: 6c 65 2e 20 42 75 74 20 69 66 20 74 68 65 20 68  le. But if the h
2820: 6f 73 74 20 63 6f 6d 70 75 74 65 72 20 63 72 61  ost computer cra
2830: 73 68 65 73 20 69 6e 20 74 68 65 20 6d 69 64 64  shes in the midd
2840: 6c 65 0a 6f 66 20 61 20 5b 43 4f 4d 4d 49 54 5d  le.of a [COMMIT]
2850: 20 77 68 65 72 65 20 74 77 6f 20 6f 72 20 6d 6f   where two or mo
2860: 72 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  re database file
2870: 73 20 61 72 65 20 75 70 64 61 74 65 64 2c 0a 73  s are updated,.s
2880: 6f 6d 65 20 6f 66 20 74 68 6f 73 65 20 66 69 6c  ome of those fil
2890: 65 73 20 6d 69 67 68 74 20 67 65 74 20 74 68 65  es might get the
28a0: 20 63 68 61 6e 67 65 73 20 77 68 65 72 65 20 6f   changes where o
28b0: 74 68 65 72 73 0a 6d 69 67 68 74 20 6e 6f 74 2e  thers.might not.
28c0: 0a 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 72 65 20  .</p>..<p>There 
28d0: 69 73 20 61 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  is a compile-tim
28e0: 65 20 6c 69 6d 69 74 20 6f 66 20 5b 53 51 4c 49  e limit of [SQLI
28f0: 54 45 5f 4d 41 58 5f 41 54 54 41 43 48 45 44 5d  TE_MAX_ATTACHED]
2900: 0a 61 74 74 61 63 68 65 64 20 64 61 74 61 62 61  .attached databa
2910: 73 65 20 66 69 6c 65 73 2e 3c 2f 70 3e 0a 0a 3c  se files.</p>..<
2920: 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23  tcl>.###########
2930: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2940: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2950: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2960: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2970: 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b 42 45  ####.Section {BE
2980: 47 49 4e 20 54 52 41 4e 53 41 43 54 49 4f 4e 7d  GIN TRANSACTION}
2990: 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 7b 42 45   transaction {BE
29a0: 47 49 4e 20 43 4f 4d 4d 49 54 20 52 4f 4c 4c 42  GIN COMMIT ROLLB
29b0: 41 43 4b 7d 0a 0a 42 75 62 62 6c 65 44 69 61 67  ACK}..BubbleDiag
29c0: 72 61 6d 20 62 65 67 69 6e 2d 73 74 6d 74 0a 42  ram begin-stmt.B
29d0: 75 62 62 6c 65 44 69 61 67 72 61 6d 20 63 6f 6d  ubbleDiagram com
29e0: 6d 69 74 2d 73 74 6d 74 0a 42 75 62 62 6c 65 44  mit-stmt.BubbleD
29f0: 69 61 67 72 61 6d 20 72 6f 6c 6c 62 61 63 6b 2d  iagram rollback-
2a00: 73 74 6d 74 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e  stmt.</tcl>..<p>
2a10: 0a 4e 6f 20 63 68 61 6e 67 65 73 20 63 61 6e 20  .No changes can 
2a20: 62 65 20 6d 61 64 65 20 74 6f 20 74 68 65 20 64  be made to the d
2a30: 61 74 61 62 61 73 65 20 65 78 63 65 70 74 20 77  atabase except w
2a40: 69 74 68 69 6e 20 61 20 74 72 61 6e 73 61 63 74  ithin a transact
2a50: 69 6f 6e 2e 0a 41 6e 79 20 63 6f 6d 6d 61 6e 64  ion..Any command
2a60: 20 74 68 61 74 20 63 68 61 6e 67 65 73 20 74 68   that changes th
2a70: 65 20 64 61 74 61 62 61 73 65 20 28 62 61 73 69  e database (basi
2a80: 63 61 6c 6c 79 2c 20 61 6e 79 20 53 51 4c 20 63  cally, any SQL c
2a90: 6f 6d 6d 61 6e 64 0a 6f 74 68 65 72 20 74 68 61  ommand.other tha
2aa0: 6e 20 5b 53 45 4c 45 43 54 5d 29 20 77 69 6c 6c  n [SELECT]) will
2ab0: 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 73   automatically s
2ac0: 74 61 72 74 20 61 20 74 72 61 6e 73 61 63 74 69  tart a transacti
2ad0: 6f 6e 20 69 66 0a 6f 6e 65 20 69 73 20 6e 6f 74  on if.one is not
2ae0: 20 61 6c 72 65 61 64 79 20 69 6e 20 65 66 66 65   already in effe
2af0: 63 74 2e 20 20 41 75 74 6f 6d 61 74 69 63 61 6c  ct.  Automatical
2b00: 6c 79 20 73 74 61 72 74 65 64 20 74 72 61 6e 73  ly started trans
2b10: 61 63 74 69 6f 6e 73 0a 61 72 65 20 63 6f 6d 6d  actions.are comm
2b20: 69 74 74 65 64 20 77 68 65 6e 20 74 68 65 20 6c  itted when the l
2b30: 61 73 74 20 71 75 65 72 79 20 66 69 6e 69 73 68  ast query finish
2b40: 65 73 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 54 72  es..</p>..<p>.Tr
2b50: 61 6e 73 61 63 74 69 6f 6e 73 20 63 61 6e 20 62  ansactions can b
2b60: 65 20 73 74 61 72 74 65 64 20 6d 61 6e 75 61 6c  e started manual
2b70: 6c 79 20 75 73 69 6e 67 20 74 68 65 20 42 45 47  ly using the BEG
2b80: 49 4e 0a 63 6f 6d 6d 61 6e 64 2e 20 20 53 75 63  IN.command.  Suc
2b90: 68 20 74 72 61 6e 73 61 63 74 69 6f 6e 73 20 75  h transactions u
2ba0: 73 75 61 6c 6c 79 20 70 65 72 73 69 73 74 20 75  sually persist u
2bb0: 6e 74 69 6c 20 74 68 65 20 6e 65 78 74 0a 43 4f  ntil the next.CO
2bc0: 4d 4d 49 54 20 6f 72 20 52 4f 4c 4c 42 41 43 4b  MMIT or ROLLBACK
2bd0: 20 63 6f 6d 6d 61 6e 64 2e 20 20 42 75 74 20 61   command.  But a
2be0: 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 77 69 6c   transaction wil
2bf0: 6c 20 61 6c 73 6f 20 0a 52 4f 4c 4c 42 41 43 4b  l also .ROLLBACK
2c00: 20 69 66 20 74 68 65 20 64 61 74 61 62 61 73 65   if the database
2c10: 20 69 73 20 63 6c 6f 73 65 64 20 6f 72 20 69 66   is closed or if
2c20: 20 61 6e 20 65 72 72 6f 72 20 6f 63 63 75 72 73   an error occurs
2c30: 0a 61 6e 64 20 74 68 65 20 52 4f 4c 4c 42 41 43  .and the ROLLBAC
2c40: 4b 20 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c  K conflict resol
2c50: 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 20  ution algorithm 
2c60: 69 73 20 73 70 65 63 69 66 69 65 64 2e 0a 53 65  is specified..Se
2c70: 65 20 74 68 65 20 64 6f 63 75 6d 65 6e 74 61 74  e the documentat
2c80: 69 6f 6e 20 6f 6e 20 74 68 65 20 5b 4f 4e 20 43  ion on the [ON C
2c90: 4f 4e 46 4c 49 43 54 5d 0a 63 6c 61 75 73 65 20  ONFLICT].clause 
2ca0: 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 69  for additional i
2cb0: 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74  nformation about
2cc0: 20 74 68 65 20 52 4f 4c 4c 42 41 43 4b 0a 63 6f   the ROLLBACK.co
2cd0: 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f  nflict resolutio
2ce0: 6e 20 61 6c 67 6f 72 69 74 68 6d 2e 0a 3c 2f 70  n algorithm..</p
2cf0: 3e 0a 0a 3c 70 3e 0a 45 4e 44 20 54 52 41 4e 53  >..<p>.END TRANS
2d00: 41 43 54 49 4f 4e 20 69 73 20 61 6e 20 61 6c 69  ACTION is an ali
2d10: 61 73 20 66 6f 72 20 43 4f 4d 4d 49 54 2e 0a 3c  as for COMMIT..<
2d20: 2f 70 3e 0a 0a 3c 70 3e 54 72 61 6e 73 61 63 74  /p>..<p>Transact
2d30: 69 6f 6e 73 20 63 72 65 61 74 65 64 20 75 73 69  ions created usi
2d40: 6e 67 20 42 45 47 49 4e 2e 2e 2e 43 4f 4d 4d 49  ng BEGIN...COMMI
2d50: 54 20 64 6f 20 6e 6f 74 20 6e 65 73 74 2e 0a 46  T do not nest..F
2d60: 6f 72 20 6e 65 73 74 65 64 20 74 72 61 6e 73 61  or nested transa
2d70: 63 74 69 6f 6e 73 2c 20 75 73 65 20 74 68 65 20  ctions, use the 
2d80: 5b 53 41 56 45 50 4f 49 4e 54 5d 20 61 6e 64 20  [SAVEPOINT] and 
2d90: 5b 52 45 4c 45 41 53 45 5d 20 63 6f 6d 6d 61 6e  [RELEASE] comman
2da0: 64 73 2e 0a 54 68 65 20 22 54 4f 20 53 41 56 45  ds..The "TO SAVE
2db0: 50 4f 49 4e 54 20 3c 69 3e 6e 61 6d 65 3c 2f 69  POINT <i>name</i
2dc0: 3e 22 20 63 6c 61 75 73 65 20 6f 66 20 74 68 65  >" clause of the
2dd0: 20 52 4f 4c 4c 42 41 43 4b 20 63 6f 6d 6d 61 6e   ROLLBACK comman
2de0: 64 20 73 68 6f 77 6e 0a 69 6e 20 74 68 65 20 73  d shown.in the s
2df0: 79 6e 74 61 78 20 64 69 61 67 72 61 6d 20 61 62  yntax diagram ab
2e00: 6f 76 65 20 69 73 20 6f 6e 6c 79 20 61 70 70 6c  ove is only appl
2e10: 69 63 61 62 6c 65 20 74 6f 20 5b 53 41 56 45 50  icable to [SAVEP
2e20: 4f 49 4e 54 5d 0a 74 72 61 6e 73 61 63 74 69 6f  OINT].transactio
2e30: 6e 73 2e 20 20 41 6e 20 61 74 74 65 6d 70 74 20  ns.  An attempt 
2e40: 74 6f 20 69 6e 76 6f 6b 65 20 74 68 65 20 42 45  to invoke the BE
2e50: 47 49 4e 20 63 6f 6d 6d 61 6e 64 20 77 69 74 68  GIN command with
2e60: 69 6e 0a 61 20 74 72 61 6e 73 61 63 74 69 6f 6e  in.a transaction
2e70: 20 77 69 6c 6c 20 66 61 69 6c 20 77 69 74 68 20   will fail with 
2e80: 61 6e 20 65 72 72 6f 72 2c 20 72 65 67 61 72 64  an error, regard
2e90: 6c 65 73 73 20 6f 66 20 77 68 65 74 68 65 72 0a  less of whether.
2ea0: 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  the transaction 
2eb0: 77 61 73 20 73 74 61 72 74 65 64 20 62 79 20 5b  was started by [
2ec0: 53 41 56 45 50 4f 49 4e 54 5d 20 6f 72 20 61 20  SAVEPOINT] or a 
2ed0: 70 72 69 6f 72 20 42 45 47 49 4e 2e 0a 54 68 65  prior BEGIN..The
2ee0: 20 43 4f 4d 4d 49 54 20 63 6f 6d 6d 61 6e 64 20   COMMIT command 
2ef0: 61 6e 64 20 74 68 65 20 52 4f 4c 4c 42 41 43 4b  and the ROLLBACK
2f00: 20 63 6f 6d 6d 61 6e 64 20 77 69 74 68 6f 75 74   command without
2f10: 20 74 68 65 20 54 4f 20 63 6c 61 75 73 65 0a 77   the TO clause.w
2f20: 6f 72 6b 20 74 68 65 20 73 61 6d 65 20 6f 6e 20  ork the same on 
2f30: 5b 53 41 56 45 50 4f 49 4e 54 5d 20 74 72 61 6e  [SAVEPOINT] tran
2f40: 73 61 63 74 69 6f 6e 73 20 61 73 20 74 68 65 79  sactions as they
2f50: 20 64 6f 20 77 69 74 68 20 74 72 61 6e 73 61 63   do with transac
2f60: 74 69 6f 6e 73 0a 73 74 61 72 74 65 64 20 62 79  tions.started by
2f70: 20 42 45 47 49 4e 2e 3c 2f 70 3e 0a 0a 3c 70 3e   BEGIN.</p>..<p>
2f80: 0a 54 72 61 6e 73 61 63 74 69 6f 6e 73 20 63 61  .Transactions ca
2f90: 6e 20 62 65 20 64 65 66 65 72 72 65 64 2c 20 69  n be deferred, i
2fa0: 6d 6d 65 64 69 61 74 65 2c 20 6f 72 20 65 78 63  mmediate, or exc
2fb0: 6c 75 73 69 76 65 2e 20 20 0a 54 68 65 20 64 65  lusive.  .The de
2fc0: 66 61 75 6c 74 20 74 72 61 6e 73 61 63 74 69 6f  fault transactio
2fd0: 6e 20 62 65 68 61 76 69 6f 72 20 69 73 20 64 65  n behavior is de
2fe0: 66 65 72 72 65 64 2e 0a 44 65 66 65 72 72 65 64  ferred..Deferred
2ff0: 20 6d 65 61 6e 73 20 74 68 61 74 20 6e 6f 20 6c   means that no l
3000: 6f 63 6b 73 20 61 72 65 20 61 63 71 75 69 72 65  ocks are acquire
3010: 64 0a 6f 6e 20 74 68 65 20 64 61 74 61 62 61 73  d.on the databas
3020: 65 20 75 6e 74 69 6c 20 74 68 65 20 64 61 74 61  e until the data
3030: 62 61 73 65 20 69 73 20 66 69 72 73 74 20 61 63  base is first ac
3040: 63 65 73 73 65 64 2e 20 20 54 68 75 73 20 77 69  cessed.  Thus wi
3050: 74 68 20 61 0a 64 65 66 65 72 72 65 64 20 74 72  th a.deferred tr
3060: 61 6e 73 61 63 74 69 6f 6e 2c 20 74 68 65 20 42  ansaction, the B
3070: 45 47 49 4e 20 73 74 61 74 65 6d 65 6e 74 20 69  EGIN statement i
3080: 74 73 65 6c 66 20 64 6f 65 73 20 6e 6f 74 68 69  tself does nothi
3090: 6e 67 2e 20 20 4c 6f 63 6b 73 0a 61 72 65 20 6e  ng.  Locks.are n
30a0: 6f 74 20 61 63 71 75 69 72 65 64 20 75 6e 74 69  ot acquired unti
30b0: 6c 20 74 68 65 20 66 69 72 73 74 20 72 65 61 64  l the first read
30c0: 20 6f 72 20 77 72 69 74 65 20 6f 70 65 72 61 74   or write operat
30d0: 69 6f 6e 2e 20 20 54 68 65 20 66 69 72 73 74 20  ion.  The first 
30e0: 72 65 61 64 0a 6f 70 65 72 61 74 69 6f 6e 20 61  read.operation a
30f0: 67 61 69 6e 73 74 20 61 20 64 61 74 61 62 61 73  gainst a databas
3100: 65 20 63 72 65 61 74 65 73 20 61 20 5b 53 48 41  e creates a [SHA
3110: 52 45 44 5d 20 6c 6f 63 6b 20 61 6e 64 20 74 68  RED] lock and th
3120: 65 20 66 69 72 73 74 0a 77 72 69 74 65 20 6f 70  e first.write op
3130: 65 72 61 74 69 6f 6e 20 63 72 65 61 74 65 73 20  eration creates 
3140: 61 20 5b 52 45 53 45 52 56 45 44 5d 20 6c 6f 63  a [RESERVED] loc
3150: 6b 2e 20 20 20 42 65 63 61 75 73 65 20 74 68 65  k.   Because the
3160: 20 61 63 71 75 69 73 69 74 69 6f 6e 20 6f 66 0a   acquisition of.
3170: 6c 6f 63 6b 73 20 69 73 20 64 65 66 65 72 72 65  locks is deferre
3180: 64 20 75 6e 74 69 6c 20 74 68 65 79 20 61 72 65  d until they are
3190: 20 6e 65 65 64 65 64 2c 20 69 74 20 69 73 20 70   needed, it is p
31a0: 6f 73 73 69 62 6c 65 20 74 68 61 74 20 61 6e 6f  ossible that ano
31b0: 74 68 65 72 0a 74 68 72 65 61 64 20 6f 72 20 70  ther.thread or p
31c0: 72 6f 63 65 73 73 20 63 6f 75 6c 64 20 63 72 65  rocess could cre
31d0: 61 74 65 20 61 20 73 65 70 61 72 61 74 65 20 74  ate a separate t
31e0: 72 61 6e 73 61 63 74 69 6f 6e 20 61 6e 64 20 77  ransaction and w
31f0: 72 69 74 65 20 74 6f 0a 74 68 65 20 64 61 74 61  rite to.the data
3200: 62 61 73 65 20 61 66 74 65 72 20 74 68 65 20 42  base after the B
3210: 45 47 49 4e 20 6f 6e 20 74 68 65 20 63 75 72 72  EGIN on the curr
3220: 65 6e 74 20 74 68 72 65 61 64 20 68 61 73 20 65  ent thread has e
3230: 78 65 63 75 74 65 64 2e 0a 49 66 20 74 68 65 20  xecuted..If the 
3240: 74 72 61 6e 73 61 63 74 69 6f 6e 20 69 73 20 69  transaction is i
3250: 6d 6d 65 64 69 61 74 65 2c 20 74 68 65 6e 20 5b  mmediate, then [
3260: 52 45 53 45 52 56 45 44 5d 20 6c 6f 63 6b 73 0a  RESERVED] locks.
3270: 61 72 65 20 61 63 71 75 69 72 65 64 20 6f 6e 20  are acquired on 
3280: 61 6c 6c 20 64 61 74 61 62 61 73 65 73 20 61 73  all databases as
3290: 20 73 6f 6f 6e 20 61 73 20 74 68 65 20 42 45 47   soon as the BEG
32a0: 49 4e 20 63 6f 6d 6d 61 6e 64 20 69 73 0a 65 78  IN command is.ex
32b0: 65 63 75 74 65 64 2c 20 77 69 74 68 6f 75 74 20  ecuted, without 
32c0: 77 61 69 74 69 6e 67 20 66 6f 72 20 74 68 65 0a  waiting for the.
32d0: 64 61 74 61 62 61 73 65 20 74 6f 20 62 65 20 75  database to be u
32e0: 73 65 64 2e 20 20 41 66 74 65 72 20 61 20 42 45  sed.  After a BE
32f0: 47 49 4e 20 49 4d 4d 45 44 49 41 54 45 2c 20 79  GIN IMMEDIATE, y
3300: 6f 75 20 61 72 65 20 67 75 61 72 61 6e 74 65 65  ou are guarantee
3310: 64 20 74 68 61 74 0a 6e 6f 20 6f 74 68 65 72 20  d that.no other 
3320: 74 68 72 65 61 64 20 6f 72 20 70 72 6f 63 65 73  thread or proces
3330: 73 20 77 69 6c 6c 20 62 65 20 61 62 6c 65 20 74  s will be able t
3340: 6f 20 77 72 69 74 65 20 74 6f 20 74 68 65 20 64  o write to the d
3350: 61 74 61 62 61 73 65 20 6f 72 0a 64 6f 20 61 20  atabase or.do a 
3360: 42 45 47 49 4e 20 49 4d 4d 45 44 49 41 54 45 20  BEGIN IMMEDIATE 
3370: 6f 72 20 42 45 47 49 4e 20 45 58 43 4c 55 53 49  or BEGIN EXCLUSI
3380: 56 45 2e 20 20 4f 74 68 65 72 20 70 72 6f 63 65  VE.  Other proce
3390: 73 73 65 73 20 63 61 6e 20 63 6f 6e 74 69 6e 75  sses can continu
33a0: 65 0a 74 6f 20 72 65 61 64 20 66 72 6f 6d 20 74  e.to read from t
33b0: 68 65 20 64 61 74 61 62 61 73 65 2c 20 68 6f 77  he database, how
33c0: 65 76 65 72 2e 20 20 41 6e 20 65 78 63 6c 75 73  ever.  An exclus
33d0: 69 76 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  ive transaction 
33e0: 63 61 75 73 65 73 0a 5b 45 58 43 4c 55 53 49 56  causes.[EXCLUSIV
33f0: 45 5d 20 6c 6f 63 6b 73 20 74 6f 20 62 65 20 61  E] locks to be a
3400: 63 71 75 69 72 65 64 20 6f 6e 20 61 6c 6c 20 64  cquired on all d
3410: 61 74 61 62 61 73 65 73 2e 20 20 41 66 74 65 72  atabases.  After
3420: 20 61 20 42 45 47 49 4e 0a 45 58 43 4c 55 53 49   a BEGIN.EXCLUSI
3430: 56 45 2c 20 79 6f 75 20 61 72 65 20 67 75 61 72  VE, you are guar
3440: 61 6e 74 65 65 64 20 74 68 61 74 20 6e 6f 20 6f  anteed that no o
3450: 74 68 65 72 20 74 68 72 65 61 64 20 6f 72 20 70  ther thread or p
3460: 72 6f 63 65 73 73 20 77 69 6c 6c 0a 62 65 20 61  rocess will.be a
3470: 62 6c 65 20 74 6f 20 72 65 61 64 20 6f 72 20 77  ble to read or w
3480: 72 69 74 65 20 74 68 65 20 64 61 74 61 62 61 73  rite the databas
3490: 65 20 75 6e 74 69 6c 20 74 68 65 20 74 72 61 6e  e until the tran
34a0: 73 61 63 74 69 6f 6e 20 69 73 0a 63 6f 6d 70 6c  saction is.compl
34b0: 65 74 65 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 41  ete..</p>..<p>.A
34c0: 6e 20 69 6d 70 6c 69 63 69 74 20 74 72 61 6e 73  n implicit trans
34d0: 61 63 74 69 6f 6e 20 28 61 20 74 72 61 6e 73 61  action (a transa
34e0: 63 74 69 6f 6e 20 74 68 61 74 20 69 73 20 73 74  ction that is st
34f0: 61 72 74 65 64 20 61 75 74 6f 6d 61 74 69 63 61  arted automatica
3500: 6c 6c 79 2c 0a 6e 6f 74 20 61 20 74 72 61 6e 73  lly,.not a trans
3510: 61 63 74 69 6f 6e 20 73 74 61 72 74 65 64 20 62  action started b
3520: 79 20 42 45 47 49 4e 29 20 69 73 20 63 6f 6d 6d  y BEGIN) is comm
3530: 69 74 74 65 64 20 61 75 74 6f 6d 61 74 69 63 61  itted automatica
3540: 6c 6c 79 20 77 68 65 6e 0a 74 68 65 20 6c 61 73  lly when.the las
3550: 74 20 61 63 74 69 76 65 20 73 74 61 74 65 6d 65  t active stateme
3560: 6e 74 20 66 69 6e 69 73 68 65 73 2e 20 20 41 20  nt finishes.  A 
3570: 73 74 61 74 65 6d 65 6e 74 20 66 69 6e 69 73 68  statement finish
3580: 65 73 20 77 68 65 6e 20 69 74 73 0a 70 72 65 70  es when its.prep
3590: 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 20 69  ared statement i
35a0: 73 20 5b 73 71 6c 69 74 65 33 5f 72 65 73 65 74  s [sqlite3_reset
35b0: 28 29 20 7c 20 72 65 73 65 74 5d 20 6f 72 0a 5b  () | reset] or.[
35c0: 73 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65  sqlite3_finalize
35d0: 28 29 20 7c 20 66 69 6e 61 6c 69 7a 65 64 5d 2e  () | finalized].
35e0: 20 20 41 6e 20 6f 70 65 6e 20 5b 73 71 6c 69 74    An open [sqlit
35f0: 65 33 5f 62 6c 6f 62 5d 20 75 73 65 64 20 66 6f  e3_blob] used fo
3600: 72 0a 69 6e 63 72 65 6d 65 6e 74 61 6c 20 42 4c  r.incremental BL
3610: 4f 42 20 49 2f 4f 20 63 6f 75 6e 74 73 20 61 73  OB I/O counts as
3620: 20 61 6e 20 75 6e 66 69 6e 69 73 68 65 64 20 73   an unfinished s
3630: 74 61 74 65 6d 65 6e 74 2e 20 20 54 68 65 20 5b  tatement.  The [
3640: 73 71 6c 69 74 65 33 5f 62 6c 6f 62 5d 0a 66 69  sqlite3_blob].fi
3650: 6e 69 73 68 65 73 20 77 68 65 6e 20 69 74 20 69  nishes when it i
3660: 73 20 5b 73 71 6c 69 74 65 33 5f 62 6c 6f 62 5f  s [sqlite3_blob_
3670: 63 6c 6f 73 65 28 29 20 7c 20 63 6c 6f 73 65 64  close() | closed
3680: 5d 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 54 68 65  ]..</p>..<p>.The
3690: 20 65 78 70 6c 69 63 69 74 20 43 4f 4d 4d 49 54   explicit COMMIT
36a0: 20 63 6f 6d 6d 61 6e 64 20 72 75 6e 73 20 69 6d   command runs im
36b0: 6d 65 64 69 61 74 65 6c 79 2c 20 65 76 65 6e 20  mediately, even 
36c0: 69 66 20 74 68 65 72 65 20 61 72 65 0a 70 65 6e  if there are.pen
36d0: 64 69 6e 67 20 5b 53 45 4c 45 43 54 5d 20 73 74  ding [SELECT] st
36e0: 61 74 65 6d 65 6e 74 73 2e 20 20 48 6f 77 65 76  atements.  Howev
36f0: 65 72 2c 20 69 66 20 74 68 65 72 65 20 61 72 65  er, if there are
3700: 20 70 65 6e 64 69 6e 67 0a 77 72 69 74 65 20 6f   pending.write o
3710: 70 65 72 61 74 69 6f 6e 73 2c 20 74 68 65 20 43  perations, the C
3720: 4f 4d 4d 49 54 20 63 6f 6d 6d 61 6e 64 0a 77 69  OMMIT command.wi
3730: 6c 6c 20 66 61 69 6c 20 77 69 74 68 20 61 20 65  ll fail with a e
3740: 72 72 6f 72 20 63 6f 64 65 20 5b 53 51 4c 49 54  rror code [SQLIT
3750: 45 5f 42 55 53 59 5d 2e 0a 3c 2f 70 3e 0a 0a 3c  E_BUSY]..</p>..<
3760: 70 3e 0a 41 6e 20 61 74 74 65 6d 70 74 20 74 6f  p>.An attempt to
3770: 20 65 78 65 63 75 74 65 20 43 4f 4d 4d 49 54 20   execute COMMIT 
3780: 6d 69 67 68 74 20 61 6c 73 6f 20 72 65 73 75 6c  might also resul
3790: 74 20 69 6e 20 61 6e 20 5b 53 51 4c 49 54 45 5f  t in an [SQLITE_
37a0: 42 55 53 59 5d 20 72 65 74 75 72 6e 20 63 6f 64  BUSY] return cod
37b0: 65 0a 69 66 20 61 6e 20 61 6e 6f 74 68 65 72 20  e.if an another 
37c0: 74 68 72 65 61 64 20 6f 72 20 70 72 6f 63 65 73  thread or proces
37d0: 73 20 68 61 73 20 61 20 5b 73 68 61 72 65 64 20  s has a [shared 
37e0: 6c 6f 63 6b 5d 20 6f 6e 20 74 68 65 20 64 61 74  lock] on the dat
37f0: 61 62 61 73 65 0a 74 68 61 74 20 70 72 65 76 65  abase.that preve
3800: 6e 74 65 64 20 74 68 65 20 64 61 74 61 62 61 73  nted the databas
3810: 65 20 66 72 6f 6d 20 62 65 69 6e 67 20 75 70 64  e from being upd
3820: 61 74 65 64 2e 20 20 57 68 65 6e 20 43 4f 4d 4d  ated.  When COMM
3830: 49 54 20 66 61 69 6c 73 20 69 6e 20 74 68 69 73  IT fails in this
3840: 0a 77 61 79 2c 20 74 68 65 20 74 72 61 6e 73 61  .way, the transa
3850: 63 74 69 6f 6e 20 72 65 6d 61 69 6e 73 20 61 63  ction remains ac
3860: 74 69 76 65 20 61 6e 64 20 74 68 65 20 43 4f 4d  tive and the COM
3870: 4d 49 54 20 63 61 6e 20 62 65 20 72 65 74 72 69  MIT can be retri
3880: 65 64 20 6c 61 74 65 72 0a 61 66 74 65 72 20 74  ed later.after t
3890: 68 65 20 72 65 61 64 65 72 20 68 61 73 20 68 61  he reader has ha
38a0: 64 20 61 20 63 68 61 6e 63 65 20 74 6f 20 63 6c  d a chance to cl
38b0: 65 61 72 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 54  ear..</p>..<p>.T
38c0: 68 65 20 52 4f 4c 4c 42 41 43 4b 20 77 69 6c 6c  he ROLLBACK will
38d0: 20 66 61 69 6c 20 77 69 74 68 20 61 6e 20 65 72   fail with an er
38e0: 72 6f 72 20 63 6f 64 65 20 5b 53 51 4c 49 54 45  ror code [SQLITE
38f0: 5f 42 55 53 59 5d 20 69 66 20 74 68 65 72 65 0a  _BUSY] if there.
3900: 61 72 65 20 61 6e 79 20 70 65 6e 64 69 6e 67 20  are any pending 
3910: 71 75 65 72 69 65 73 2e 20 20 42 6f 74 68 20 72  queries.  Both r
3920: 65 61 64 2d 6f 6e 6c 79 20 61 6e 64 20 72 65 61  ead-only and rea
3930: 64 2f 77 72 69 74 65 20 71 75 65 72 69 65 73 20  d/write queries 
3940: 77 69 6c 6c 0a 63 61 75 73 65 20 61 20 52 4f 4c  will.cause a ROL
3950: 4c 42 41 43 4b 20 74 6f 20 66 61 69 6c 2e 20 20  LBACK to fail.  
3960: 41 20 52 4f 4c 4c 42 41 43 4b 20 6d 75 73 74 20  A ROLLBACK must 
3970: 66 61 69 6c 20 69 66 20 74 68 65 72 65 20 61 72  fail if there ar
3980: 65 20 70 65 6e 64 69 6e 67 0a 72 65 61 64 20 6f  e pending.read o
3990: 70 65 72 61 74 69 6f 6e 73 20 28 75 6e 6c 69 6b  perations (unlik
39a0: 65 20 43 4f 4d 4d 49 54 20 77 68 69 63 68 20 63  e COMMIT which c
39b0: 61 6e 20 73 75 63 63 65 65 64 29 20 62 65 63 61  an succeed) beca
39c0: 75 73 65 20 62 61 64 20 74 68 69 6e 67 73 0a 77  use bad things.w
39d0: 69 6c 6c 20 68 61 70 70 65 6e 20 69 66 20 74 68  ill happen if th
39e0: 65 20 69 6e 2d 6d 65 6d 6f 72 79 20 69 6d 61 67  e in-memory imag
39f0: 65 20 6f 66 20 74 68 65 20 64 61 74 61 62 61 73  e of the databas
3a00: 65 20 69 73 20 63 68 61 6e 67 65 64 20 6f 75 74  e is changed out
3a10: 20 66 72 6f 6d 20 75 6e 64 65 72 0a 61 6e 20 61   from under.an a
3a20: 63 74 69 76 65 20 71 75 65 72 79 2e 0a 3c 2f 70  ctive query..</p
3a30: 3e 0a 0a 3c 70 3e 0a 49 66 20 5b 50 52 41 47 4d  >..<p>.If [PRAGM
3a40: 41 20 6a 6f 75 72 6e 61 6c 5f 6d 6f 64 65 5d 20  A journal_mode] 
3a50: 69 73 20 73 65 74 20 74 6f 20 4f 46 46 20 28 74  is set to OFF (t
3a60: 68 75 73 20 64 69 73 61 62 6c 69 6e 67 20 74 68  hus disabling th
3a70: 65 20 72 6f 6c 6c 62 61 63 6b 20 6a 6f 75 72 6e  e rollback journ
3a80: 61 6c 0a 66 69 6c 65 29 20 74 68 65 6e 20 74 68  al.file) then th
3a90: 65 20 62 65 68 61 76 69 6f 72 20 6f 66 20 74 68  e behavior of th
3aa0: 65 20 52 4f 4c 4c 42 41 43 4b 20 63 6f 6d 6d 61  e ROLLBACK comma
3ab0: 6e 64 20 69 73 20 75 6e 64 65 66 69 6e 65 64 2e  nd is undefined.
3ac0: 0a 3c 2f 70 3e 0a 0a 3c 68 33 3e 52 65 73 70 6f  .</p>..<h3>Respo
3ad0: 6e 73 65 20 54 6f 20 45 72 72 6f 72 73 20 57 69  nse To Errors Wi
3ae0: 74 68 69 6e 20 41 20 54 72 61 6e 73 61 63 74 69  thin A Transacti
3af0: 6f 6e 3c 2f 68 33 3e 0a 0a 3c 70 3e 49 66 20 63  on</h3>..<p>If c
3b00: 65 72 74 61 69 6e 20 6b 69 6e 64 73 20 6f 66 20  ertain kinds of 
3b10: 65 72 72 6f 72 73 20 6f 63 63 75 72 20 77 69 74  errors occur wit
3b20: 68 69 6e 20 61 20 74 72 61 6e 73 61 63 74 69 6f  hin a transactio
3b30: 6e 2c 20 74 68 65 0a 74 72 61 6e 73 61 63 74 69  n, the.transacti
3b40: 6f 6e 20 6d 61 79 20 6f 72 20 6d 61 79 20 6e 6f  on may or may no
3b50: 74 20 62 65 20 72 6f 6c 6c 65 64 20 62 61 63 6b  t be rolled back
3b60: 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2e 20   automatically. 
3b70: 20 54 68 65 0a 65 72 72 6f 72 73 20 74 68 61 74   The.errors that
3b80: 20 63 61 75 73 65 20 74 68 65 20 62 65 68 61 76   cause the behav
3b90: 69 6f 72 20 69 6e 63 6c 75 64 65 3a 3c 2f 70 3e  ior include:</p>
3ba0: 0a 0a 3c 75 6c 3e 0a 3c 6c 69 3e 20 5b 53 51 4c  ..<ul>.<li> [SQL
3bb0: 49 54 45 5f 46 55 4c 4c 5d 3a 20 64 61 74 61 62  ITE_FULL]: datab
3bc0: 61 73 65 20 6f 72 20 64 69 73 6b 20 66 75 6c 6c  ase or disk full
3bd0: 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 49 4f  .<li> [SQLITE_IO
3be0: 45 52 52 5d 3a 20 64 69 73 6b 20 49 2f 4f 20 65  ERR]: disk I/O e
3bf0: 72 72 6f 72 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54  rror.<li> [SQLIT
3c00: 45 5f 42 55 53 59 5d 3a 20 64 61 74 61 62 61 73  E_BUSY]: databas
3c10: 65 20 69 6e 20 75 73 65 20 62 79 20 61 6e 6f 74  e in use by anot
3c20: 68 65 72 20 70 72 6f 63 65 73 73 0a 3c 6c 69 3e  her process.<li>
3c30: 20 5b 53 51 4c 49 54 45 5f 4e 4f 4d 45 4d 5d 3a   [SQLITE_NOMEM]:
3c40: 20 6f 75 74 20 6f 72 20 6d 65 6d 6f 72 79 0a 3c   out or memory.<
3c50: 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 49 4e 54 45  li> [SQLITE_INTE
3c60: 52 52 55 50 54 5d 3a 20 70 72 6f 63 65 73 73 69  RRUPT]: processi
3c70: 6e 67 20 5b 73 71 6c 69 74 65 33 5f 69 6e 74 65  ng [sqlite3_inte
3c80: 72 72 75 70 74 7c 69 6e 74 65 72 72 75 70 74 65  rrupt|interrupte
3c90: 64 5d 0a 20 20 20 20 20 62 79 20 61 70 70 6c 69  d].     by appli
3ca0: 63 61 74 69 6f 6e 20 72 65 71 75 65 73 74 0a 3c  cation request.<
3cb0: 2f 75 6c 3e 0a 0a 3c 70 3e 0a 46 6f 72 20 61 6c  /ul>..<p>.For al
3cc0: 6c 20 6f 66 20 74 68 65 73 65 20 65 72 72 6f 72  l of these error
3cd0: 73 2c 20 53 51 4c 69 74 65 20 61 74 74 65 6d 70  s, SQLite attemp
3ce0: 74 73 20 74 6f 20 75 6e 64 6f 20 6a 75 73 74 20  ts to undo just 
3cf0: 74 68 65 20 6f 6e 65 20 73 74 61 74 65 6d 65 6e  the one statemen
3d00: 74 0a 69 74 20 77 61 73 20 77 6f 72 6b 69 6e 67  t.it was working
3d10: 20 6f 6e 20 61 6e 64 20 6c 65 61 76 65 20 63 68   on and leave ch
3d20: 61 6e 67 65 73 20 66 72 6f 6d 20 70 72 69 6f 72  anges from prior
3d30: 20 73 74 61 74 65 6d 65 6e 74 73 20 77 69 74 68   statements with
3d40: 69 6e 20 74 68 65 0a 73 61 6d 65 20 74 72 61 6e  in the.same tran
3d50: 73 61 63 74 69 6f 6e 20 69 6e 74 61 63 74 20 61  saction intact a
3d60: 6e 64 20 63 6f 6e 74 69 6e 75 65 20 77 69 74 68  nd continue with
3d70: 20 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e   the transaction
3d80: 2e 20 20 48 6f 77 65 76 65 72 2c 20 0a 64 65 70  .  However, .dep
3d90: 65 6e 64 69 6e 67 20 6f 6e 20 74 68 65 20 73 74  ending on the st
3da0: 61 74 65 6d 65 6e 74 20 62 65 69 6e 67 20 65 76  atement being ev
3db0: 61 6c 75 61 74 65 64 20 61 6e 64 20 74 68 65 20  aluated and the 
3dc0: 70 6f 69 6e 74 20 61 74 20 77 68 69 63 68 20 74  point at which t
3dd0: 68 65 0a 65 72 72 6f 72 20 6f 63 63 75 72 73 2c  he.error occurs,
3de0: 20 69 74 20 6d 69 67 68 74 20 62 65 20 6e 65 63   it might be nec
3df0: 65 73 73 61 72 79 20 66 6f 72 20 53 51 4c 69 74  essary for SQLit
3e00: 65 20 74 6f 20 72 6f 6c 6c 62 61 63 6b 20 61 6e  e to rollback an
3e10: 64 0a 63 61 6e 63 65 6c 20 74 68 65 20 65 6e 74  d.cancel the ent
3e20: 69 72 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 2e  ire transaction.
3e30: 20 20 41 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e    An application
3e40: 20 63 61 6e 20 74 65 6c 6c 20 77 68 69 63 68 0a   can tell which.
3e50: 63 6f 75 72 73 65 20 6f 66 20 61 63 74 69 6f 6e  course of action
3e60: 20 53 51 4c 69 74 65 20 74 6f 6f 6b 20 62 79 20   SQLite took by 
3e70: 75 73 69 6e 67 20 74 68 65 0a 5b 73 71 6c 69 74  using the.[sqlit
3e80: 65 33 5f 67 65 74 5f 61 75 74 6f 63 6f 6d 6d 69  e3_get_autocommi
3e90: 74 28 29 5d 20 43 2d 6c 61 6e 67 75 61 67 65 20  t()] C-language 
3ea0: 69 6e 74 65 72 66 61 63 65 2e 3c 2f 70 3e 0a 0a  interface.</p>..
3eb0: 3c 70 3e 49 74 20 69 73 20 72 65 63 6f 6d 6d 65  <p>It is recomme
3ec0: 6e 64 65 64 20 74 68 61 74 20 61 70 70 6c 69 63  nded that applic
3ed0: 61 74 69 6f 6e 73 20 72 65 73 70 6f 6e 64 20 74  ations respond t
3ee0: 6f 20 74 68 65 20 65 72 72 6f 72 73 0a 6c 69 73  o the errors.lis
3ef0: 74 65 64 20 61 62 6f 76 65 20 62 79 20 65 78 70  ted above by exp
3f00: 6c 69 63 69 74 6c 79 20 69 73 73 75 69 6e 67 20  licitly issuing 
3f10: 61 20 52 4f 4c 4c 42 41 43 4b 20 63 6f 6d 6d 61  a ROLLBACK comma
3f20: 6e 64 2e 20 20 49 66 20 74 68 65 20 0a 74 72 61  nd.  If the .tra
3f30: 6e 73 61 63 74 69 6f 6e 20 68 61 73 20 61 6c 72  nsaction has alr
3f40: 65 61 64 79 20 62 65 65 6e 20 72 6f 6c 6c 65 64  eady been rolled
3f50: 20 62 61 63 6b 20 61 75 74 6f 6d 61 74 69 63 61   back automatica
3f60: 6c 6c 79 0a 62 79 20 74 68 65 20 65 72 72 6f 72  lly.by the error
3f70: 20 72 65 73 70 6f 6e 73 65 2c 20 74 68 65 6e 20   response, then 
3f80: 74 68 65 20 52 4f 4c 4c 42 41 43 4b 20 63 6f 6d  the ROLLBACK com
3f90: 6d 61 6e 64 20 77 69 6c 6c 20 66 61 69 6c 20 77  mand will fail w
3fa0: 69 74 68 20 61 6e 0a 65 72 72 6f 72 2c 20 62 75  ith an.error, bu
3fb0: 74 20 6e 6f 20 68 61 72 6d 20 69 73 20 63 61 75  t no harm is cau
3fc0: 73 65 64 20 62 79 20 74 68 69 73 2e 3c 2f 70 3e  sed by this.</p>
3fd0: 0a 0a 3c 70 3e 46 75 74 75 72 65 20 76 65 72 73  ..<p>Future vers
3fe0: 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 20 6d  ions of SQLite m
3ff0: 61 79 20 65 78 74 65 6e 64 20 74 68 65 20 6c 69  ay extend the li
4000: 73 74 20 6f 66 20 65 72 72 6f 72 73 20 77 68 69  st of errors whi
4010: 63 68 0a 6d 69 67 68 74 20 63 61 75 73 65 20 61  ch.might cause a
4020: 75 74 6f 6d 61 74 69 63 20 74 72 61 6e 73 61 63  utomatic transac
4030: 74 69 6f 6e 20 72 6f 6c 6c 62 61 63 6b 2e 20 20  tion rollback.  
4040: 46 75 74 75 72 65 20 76 65 72 73 69 6f 6e 73 20  Future versions 
4050: 6f 66 0a 53 51 4c 69 74 65 20 6d 69 67 68 74 20  of.SQLite might 
4060: 63 68 61 6e 67 65 20 74 68 65 20 65 72 72 6f 72  change the error
4070: 20 72 65 73 70 6f 6e 73 65 2e 20 20 49 6e 20 70   response.  In p
4080: 61 72 74 69 63 75 6c 61 72 2c 20 77 65 20 6d 61  articular, we ma
4090: 79 0a 63 68 6f 6f 73 65 20 74 6f 20 73 69 6d 70  y.choose to simp
40a0: 6c 69 66 79 20 74 68 65 20 69 6e 74 65 72 66 61  lify the interfa
40b0: 63 65 20 69 6e 20 66 75 74 75 72 65 20 76 65 72  ce in future ver
40c0: 73 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 20  sions of SQLite 
40d0: 62 79 0a 63 61 75 73 69 6e 67 20 74 68 65 20 65  by.causing the e
40e0: 72 72 6f 72 73 20 61 62 6f 76 65 20 74 6f 20 66  rrors above to f
40f0: 6f 72 63 65 20 61 6e 20 75 6e 63 6f 6e 64 69 74  orce an uncondit
4100: 69 6f 6e 61 6c 20 72 6f 6c 6c 62 61 63 6b 2e 3c  ional rollback.<
4110: 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23  /p>..<tcl>.#####
4120: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4130: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4140: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4150: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4160: 23 23 23 23 23 23 23 23 23 23 0a 53 65 63 74 69  ##########.Secti
4170: 6f 6e 20 7b 53 41 56 45 50 4f 49 4e 54 7d 20 73  on {SAVEPOINT} s
4180: 61 76 65 70 6f 69 6e 74 20 7b 53 41 56 45 50 4f  avepoint {SAVEPO
4190: 49 4e 54 20 52 45 4c 45 41 53 45 7d 0a 0a 42 75  INT RELEASE}..Bu
41a0: 62 62 6c 65 44 69 61 67 72 61 6d 20 73 61 76 65  bbleDiagram save
41b0: 70 6f 69 6e 74 2d 73 74 6d 74 0a 42 75 62 62 6c  point-stmt.Bubbl
41c0: 65 44 69 61 67 72 61 6d 20 72 65 6c 65 61 73 65  eDiagram release
41d0: 2d 73 74 6d 74 0a 42 75 62 62 6c 65 44 69 61 67  -stmt.BubbleDiag
41e0: 72 61 6d 20 72 6f 6c 6c 62 61 63 6b 2d 73 74 6d  ram rollback-stm
41f0: 74 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 53 41 56  t.</tcl>..<p>SAV
4200: 45 50 4f 49 4e 54 73 20 61 72 65 20 61 20 6d 65  EPOINTs are a me
4210: 74 68 6f 64 20 6f 66 20 63 72 65 61 74 69 6e 67  thod of creating
4220: 20 74 72 61 6e 73 61 63 74 69 6f 6e 73 2c 20 73   transactions, s
4230: 69 6d 69 6c 61 72 20 74 6f 0a 5b 42 45 47 49 4e  imilar to.[BEGIN
4240: 5d 20 61 6e 64 20 5b 43 4f 4d 4d 49 54 5d 2c 20  ] and [COMMIT], 
4250: 65 78 63 65 70 74 20 74 68 61 74 20 74 68 65 20  except that the 
4260: 53 41 56 45 50 4f 49 4e 54 20 61 6e 64 20 52 45  SAVEPOINT and RE
4270: 4c 45 41 53 45 20 63 6f 6d 6d 61 6e 64 73 0a 61  LEASE commands.a
4280: 72 65 20 6e 61 6d 65 64 20 61 6e 64 20 6d 61 79  re named and may
4290: 20 62 65 20 6e 65 73 74 65 64 2e 3c 2f 70 3e 0a   be nested.</p>.
42a0: 0a 3c 70 3e 54 68 65 20 53 41 56 45 50 4f 49 4e  .<p>The SAVEPOIN
42b0: 54 20 63 6f 6d 6d 61 6e 64 20 73 74 61 72 74 73  T command starts
42c0: 20 61 20 6e 65 77 20 74 72 61 6e 73 61 63 74 69   a new transacti
42d0: 6f 6e 20 77 69 74 68 20 61 20 6e 61 6d 65 2e 0a  on with a name..
42e0: 54 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  The transaction 
42f0: 6e 61 6d 65 73 20 6e 65 65 64 20 6e 6f 74 20 62  names need not b
4300: 65 20 75 6e 69 71 75 65 2e 0a 41 20 53 41 56 45  e unique..A SAVE
4310: 50 4f 49 4e 54 20 63 61 6e 20 62 65 20 73 74 61  POINT can be sta
4320: 72 74 65 64 20 65 69 74 68 65 72 20 77 69 74 68  rted either with
4330: 69 6e 20 6f 72 20 6f 75 74 73 69 64 65 20 6f 66  in or outside of
4340: 0a 61 20 5b 42 45 47 49 4e 5d 2e 2e 2e 5b 43 4f  .a [BEGIN]...[CO
4350: 4d 4d 49 54 5d 2e 20 20 57 68 65 6e 20 61 20 53  MMIT].  When a S
4360: 41 56 45 50 4f 49 4e 54 20 69 73 20 74 68 65 20  AVEPOINT is the 
4370: 6f 75 74 65 72 2d 6d 6f 73 74 20 73 61 76 65 70  outer-most savep
4380: 6f 69 6e 74 0a 61 6e 64 20 69 74 20 69 73 20 6e  oint.and it is n
4390: 6f 74 20 77 69 74 68 69 6e 20 61 20 5b 42 45 47  ot within a [BEG
43a0: 49 4e 5d 2e 2e 2e 5b 43 4f 4d 4d 49 54 5d 20 74  IN]...[COMMIT] t
43b0: 68 65 6e 20 74 68 65 20 62 65 68 61 76 69 6f 72  hen the behavior
43c0: 20 69 73 20 74 68 65 0a 73 61 6d 65 20 61 73 20   is the.same as 
43d0: 42 45 47 49 4e 20 44 45 46 45 52 52 45 44 20 54  BEGIN DEFERRED T
43e0: 52 41 4e 53 41 43 54 49 4f 4e 2e 3c 2f 70 3e 0a  RANSACTION.</p>.
43f0: 0a 3c 70 3e 54 68 65 20 52 4f 4c 4c 42 41 43 4b  .<p>The ROLLBACK
4400: 20 54 4f 20 63 6f 6d 6d 61 6e 64 20 72 65 76 65   TO command reve
4410: 72 74 73 20 74 68 65 20 73 74 61 74 65 20 6f 66  rts the state of
4420: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 62 61   the database ba
4430: 63 6b 20 74 6f 20 77 68 61 74 0a 69 74 20 77 61  ck to what.it wa
4440: 73 20 6a 75 73 74 20 61 66 74 65 72 20 74 68 65  s just after the
4450: 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 53   corresponding S
4460: 41 56 45 50 4f 49 4e 54 2e 20 20 4e 6f 74 65 20  AVEPOINT.  Note 
4470: 74 68 61 74 20 75 6e 6c 69 6b 65 20 74 68 61 74  that unlike that
4480: 0a 70 6c 61 69 6e 20 5b 52 4f 4c 4c 42 41 43 4b  .plain [ROLLBACK
4490: 5d 20 63 6f 6d 6d 61 6e 64 20 28 77 69 74 68 6f  ] command (witho
44a0: 75 74 20 74 68 65 20 54 4f 20 6b 65 79 77 6f 72  ut the TO keywor
44b0: 64 29 20 74 68 65 20 52 4f 4c 4c 42 41 43 4b 20  d) the ROLLBACK 
44c0: 54 4f 20 63 6f 6d 6d 61 6e 64 0a 64 6f 65 73 20  TO command.does 
44d0: 6e 6f 74 20 63 61 6e 63 65 6c 20 74 68 65 20 74  not cancel the t
44e0: 72 61 6e 73 61 63 74 69 6f 6e 2e 20 20 49 6e 73  ransaction.  Ins
44f0: 74 65 61 64 20 6f 66 20 63 61 6e 63 65 6c 6c 69  tead of cancelli
4500: 6e 67 20 74 68 65 20 74 72 61 6e 73 61 63 74 69  ng the transacti
4510: 6f 6e 2c 0a 74 68 65 20 52 4f 4c 4c 42 41 43 4b  on,.the ROLLBACK
4520: 20 54 4f 20 63 6f 6d 6d 61 6e 64 20 72 65 73 74   TO command rest
4530: 61 72 74 73 20 74 68 65 20 74 72 61 6e 73 61 63  arts the transac
4540: 74 69 6f 6e 20 61 67 61 69 6e 20 61 74 20 74 68  tion again at th
4550: 65 20 62 65 67 69 6e 6e 69 6e 67 2e 0a 41 6c 6c  e beginning..All
4560: 20 69 6e 74 65 72 76 65 6e 69 6e 67 20 53 41 56   intervening SAV
4570: 45 50 4f 49 4e 54 73 20 61 72 65 20 63 61 6e 63  EPOINTs are canc
4580: 65 6c 6c 65 64 2c 20 68 6f 77 65 76 65 72 2e 3c  elled, however.<
4590: 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 52 45 4c 45  /p>..<p>The RELE
45a0: 41 53 45 20 69 73 20 6c 69 6b 65 20 61 20 5b 43  ASE is like a [C
45b0: 4f 4d 4d 49 54 5d 20 66 6f 72 20 61 20 53 41 56  OMMIT] for a SAV
45c0: 45 50 4f 49 4e 54 2e 0a 54 68 65 20 52 45 4c 45  EPOINT..The RELE
45d0: 41 53 45 20 63 6f 6d 6d 61 6e 64 20 63 61 75 73  ASE command caus
45e0: 65 73 20 61 6c 6c 20 73 61 76 65 70 6f 69 6e 74  es all savepoint
45f0: 73 20 62 61 63 6b 20 74 6f 20 61 6e 64 20 69 6e  s back to and in
4600: 63 6c 75 64 69 6e 67 20 74 68 65 20 66 69 72 73  cluding the firs
4610: 74 0a 73 61 76 65 70 6f 69 6e 74 20 77 69 74 68  t.savepoint with
4620: 20 61 20 6d 61 74 63 68 69 6e 67 20 6e 61 6d 65   a matching name
4630: 20 74 6f 20 62 65 20 72 65 6d 6f 76 65 64 20 66   to be removed f
4640: 72 6f 6d 20 74 68 65 20 74 72 61 6e 73 61 63 74  rom the transact
4650: 69 6f 6e 20 73 74 61 63 6b 2e 20 20 54 68 65 0a  ion stack.  The.
4660: 52 45 4c 45 41 53 45 20 6f 66 20 61 6e 20 69 6e  RELEASE of an in
4670: 6e 65 72 20 74 72 61 6e 73 61 63 74 69 6f 6e 0a  ner transaction.
4680: 64 6f 65 73 20 6e 6f 74 20 63 61 75 73 65 20 61  does not cause a
4690: 6e 79 20 63 68 61 6e 67 65 73 20 74 6f 20 62 65  ny changes to be
46a0: 20 77 72 69 74 74 65 6e 20 74 6f 20 74 68 65 20   written to the 
46b0: 64 61 74 61 62 61 73 65 20 66 69 6c 65 3b 20 69  database file; i
46c0: 74 20 6d 65 72 65 6c 79 0a 72 65 6d 6f 76 65 73  t merely.removes
46d0: 20 73 61 76 65 70 6f 69 6e 74 73 20 66 72 6f 6d   savepoints from
46e0: 20 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e   the transaction
46f0: 20 73 74 61 63 6b 20 73 75 63 68 20 74 68 61 74   stack such that
4700: 20 69 74 20 69 73 0a 6e 6f 20 6c 6f 6e 67 65 72   it is.no longer
4710: 20 70 6f 73 73 69 62 6c 65 20 74 6f 20 52 4f 4c   possible to ROL
4720: 4c 42 41 43 4b 20 54 4f 20 74 68 6f 73 65 20 73  LBACK TO those s
4730: 61 76 65 70 6f 69 6e 74 73 2e 0a 49 66 20 61 20  avepoints..If a 
4740: 52 45 4c 45 41 53 45 20 63 6f 6d 6d 61 6e 64 20  RELEASE command 
4750: 72 65 6c 65 61 73 65 73 20 74 68 65 20 6f 75 74  releases the out
4760: 65 72 6d 6f 73 74 20 73 61 76 65 70 6f 69 6e 74  ermost savepoint
4770: 2c 20 73 6f 0a 74 68 61 74 20 74 68 65 20 74 72  , so.that the tr
4780: 61 6e 73 61 63 74 69 6f 6e 20 73 74 61 63 6b 20  ansaction stack 
4790: 62 65 63 6f 6d 65 73 20 65 6d 70 74 79 2c 20 74  becomes empty, t
47a0: 68 65 6e 20 52 45 4c 45 41 53 45 20 69 73 20 74  hen RELEASE is t
47b0: 68 65 20 73 61 6d 65 0a 61 73 20 5b 43 4f 4d 4d  he same.as [COMM
47c0: 49 54 5d 2e 0a 54 68 65 20 5b 43 4f 4d 4d 49 54  IT]..The [COMMIT
47d0: 5d 20 63 6f 6d 6d 61 6e 64 20 6d 61 79 20 75 73  ] command may us
47e0: 65 64 20 74 6f 20 72 65 6c 65 61 73 65 20 61 6c  ed to release al
47f0: 6c 20 73 61 76 65 70 6f 69 6e 74 73 20 61 6e 64  l savepoints and
4800: 0a 63 6f 6d 6d 69 74 20 74 68 65 20 74 72 61 6e  .commit the tran
4810: 73 61 63 74 69 6f 6e 20 65 76 65 6e 20 69 66 20  saction even if 
4820: 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  the transaction 
4830: 77 61 73 20 6f 72 69 67 69 6e 61 6c 6c 79 20 73  was originally s
4840: 74 61 72 74 65 64 0a 62 79 20 61 20 53 41 56 45  tarted.by a SAVE
4850: 50 4f 49 4e 54 20 63 6f 6d 6d 61 6e 64 20 69 6e  POINT command in
4860: 73 74 65 61 64 20 6f 66 20 61 20 5b 42 45 47 49  stead of a [BEGI
4870: 4e 5d 20 63 6f 6d 6d 61 6e 64 2e 3c 2f 70 3e 0a  N] command.</p>.
4880: 0a 3c 70 3e 49 66 20 74 68 65 20 73 61 76 65 70  .<p>If the savep
4890: 6f 69 6e 74 2d 6e 61 6d 65 20 69 6e 20 61 20 52  oint-name in a R
48a0: 45 4c 45 41 53 45 20 63 6f 6d 6d 61 6e 64 20 64  ELEASE command d
48b0: 6f 65 73 20 6e 6f 74 20 6d 61 74 63 68 20 61 6e  oes not match an
48c0: 79 0a 73 61 76 65 70 6f 69 6e 74 20 63 75 72 72  y.savepoint curr
48d0: 65 6e 74 6c 79 20 69 6e 20 74 68 65 20 74 72 61  ently in the tra
48e0: 6e 61 63 74 69 6f 6e 20 73 74 61 63 6b 2c 20 74  naction stack, t
48f0: 68 65 6e 20 6e 6f 20 73 61 76 65 70 6f 69 6e 74  hen no savepoint
4900: 73 20 61 72 65 0a 72 65 6c 65 61 73 65 64 2c 20  s are.released, 
4910: 74 68 65 20 64 61 74 61 62 61 73 65 20 69 73 20  the database is 
4920: 75 6e 63 68 61 6e 67 65 64 2c 20 61 6e 64 20 74  unchanged, and t
4930: 68 65 20 52 45 4c 45 41 53 45 20 63 6f 6d 6d 61  he RELEASE comma
4940: 6e 64 20 72 65 74 75 72 6e 73 0a 61 6e 20 65 72  nd returns.an er
4950: 72 6f 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 4e 6f 74  ror.</p>..<p>Not
4960: 65 20 74 68 61 74 20 61 6e 20 69 6e 6e 65 72 20  e that an inner 
4970: 74 72 61 6e 73 61 63 74 69 6f 6e 20 6d 69 67 68  transaction migh
4980: 74 20 63 6f 6d 6d 69 74 20 28 75 73 69 6e 67 20  t commit (using 
4990: 74 68 65 20 52 45 4c 45 41 53 45 20 63 6f 6d 6d  the RELEASE comm
49a0: 61 6e 64 29 0a 62 75 74 20 74 68 65 6e 20 6c 61  and).but then la
49b0: 74 65 72 20 68 61 76 65 20 69 74 73 20 77 6f 72  ter have its wor
49c0: 6b 20 75 6e 64 6f 6e 65 20 62 79 20 61 20 52 4f  k undone by a RO
49d0: 4c 4c 42 41 43 4b 20 69 6e 20 61 6e 20 6f 75 74  LLBACK in an out
49e0: 65 72 20 74 72 61 6e 73 61 63 74 69 6f 6e 2e 0a  er transaction..
49f0: 41 20 70 6f 77 65 72 20 66 61 69 6c 75 72 65 20  A power failure 
4a00: 6f 72 20 70 72 6f 67 72 61 6d 20 63 72 61 73 68  or program crash
4a10: 20 6f 72 20 4f 53 20 63 72 61 73 68 20 77 69 6c   or OS crash wil
4a20: 6c 20 63 61 75 73 65 20 74 68 65 20 6f 75 74 65  l cause the oute
4a30: 72 2d 6d 6f 73 74 0a 74 72 61 6e 73 61 63 74 69  r-most.transacti
4a40: 6f 6e 20 74 6f 20 72 6f 6c 6c 62 61 63 6b 2c 20  on to rollback, 
4a50: 75 6e 64 6f 69 6e 67 20 61 6c 6c 20 63 68 61 6e  undoing all chan
4a60: 67 65 73 20 74 68 61 74 20 68 61 76 65 20 6f 63  ges that have oc
4a70: 63 75 72 72 65 64 20 77 69 74 68 69 6e 0a 74 68  curred within.th
4a80: 61 74 20 6f 75 74 65 72 20 74 72 61 6e 73 61 63  at outer transac
4a90: 74 69 6f 6e 2c 20 65 76 65 6e 20 63 68 61 6e 67  tion, even chang
4aa0: 65 73 20 74 68 61 74 20 68 61 76 65 20 73 75 70  es that have sup
4ab0: 70 6f 73 65 64 6c 79 20 62 65 65 6e 20 22 63 6f  posedly been "co
4ac0: 6d 6d 69 74 74 65 64 22 0a 62 79 20 74 68 65 20  mmitted".by the 
4ad0: 52 45 4c 45 41 53 45 20 63 6f 6d 6d 61 6e 64 2e  RELEASE command.
4ae0: 20 20 43 6f 6e 74 65 6e 74 20 69 73 20 6e 6f 74    Content is not
4af0: 20 61 63 74 75 61 6c 6c 79 20 63 6f 6d 6d 69 74   actually commit
4b00: 74 65 64 20 6f 6e 20 74 68 65 20 64 69 73 6b 20  ted on the disk 
4b10: 0a 75 6e 74 69 6c 20 74 68 65 20 6f 75 74 65 72  .until the outer
4b20: 6d 6f 73 74 20 74 72 61 6e 73 61 63 74 69 6f 6e  most transaction
4b30: 20 63 6f 6d 6d 69 74 73 2e 3c 2f 70 3e 0a 0a 3c   commits.</p>..<
4b40: 70 3e 54 68 65 72 65 20 61 72 65 20 73 65 76 65  p>There are seve
4b50: 72 61 6c 20 77 61 79 73 20 6f 66 20 74 68 69 6e  ral ways of thin
4b60: 6b 69 6e 67 20 61 62 6f 75 74 20 74 68 65 20 52  king about the R
4b70: 45 4c 45 41 53 45 20 63 6f 6d 6d 61 6e 64 3a 3c  ELEASE command:<
4b80: 2f 70 3e 0a 0a 3c 75 6c 3e 0a 3c 6c 69 3e 3c 70  /p>..<ul>.<li><p
4b90: 3e 0a 53 6f 6d 65 20 70 65 6f 70 6c 65 20 76 69  >.Some people vi
4ba0: 65 77 20 52 45 4c 45 41 53 45 20 61 73 20 74 68  ew RELEASE as th
4bb0: 65 20 65 71 75 69 76 61 6c 65 6e 74 20 6f 66 20  e equivalent of 
4bc0: 43 4f 4d 4d 49 54 20 66 6f 72 20 61 20 53 41 56  COMMIT for a SAV
4bd0: 45 50 4f 49 4e 54 2e 0a 54 68 69 73 20 69 73 20  EPOINT..This is 
4be0: 61 6e 20 61 63 63 65 70 74 61 62 6c 65 20 70 6f  an acceptable po
4bf0: 69 6e 74 20 6f 66 20 76 69 65 77 20 61 73 20 6c  int of view as l
4c00: 6f 6e 67 20 61 73 20 6f 6e 65 20 72 65 6d 65 6d  ong as one remem
4c10: 62 65 72 73 20 74 68 61 74 20 74 68 65 0a 63 68  bers that the.ch
4c20: 61 6e 67 65 73 20 63 6f 6d 6d 69 74 74 65 64 20  anges committed 
4c30: 62 79 20 61 6e 20 69 6e 6e 65 72 20 74 72 61 6e  by an inner tran
4c40: 73 61 63 74 69 6f 6e 20 6d 69 67 68 74 20 6c 61  saction might la
4c50: 74 65 72 20 62 65 20 75 6e 64 6f 6e 65 20 62 79  ter be undone by
4c60: 20 61 0a 72 6f 6c 6c 62 61 63 6b 20 69 6e 20 61   a.rollback in a
4c70: 6e 20 6f 75 74 65 72 20 74 72 61 6e 73 61 63 74  n outer transact
4c80: 69 6f 6e 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a 0a 3c  ion.</p></li>..<
4c90: 6c 69 3e 3c 70 3e 0a 41 6e 6f 74 68 65 72 20 76  li><p>.Another v
4ca0: 69 65 77 20 6f 66 20 52 45 4c 45 41 53 45 20 69  iew of RELEASE i
4cb0: 73 20 74 68 61 74 20 69 74 20 6d 65 72 67 65 73  s that it merges
4cc0: 20 61 20 6e 61 6d 65 64 20 74 72 61 6e 73 61 63   a named transac
4cd0: 74 69 6f 6e 20 69 6e 74 6f 20 69 74 73 0a 70 61  tion into its.pa
4ce0: 72 65 6e 74 20 74 72 61 6e 73 61 63 74 69 6f 6e  rent transaction
4cf0: 2c 20 73 6f 20 74 68 61 74 20 74 68 65 20 6e 61  , so that the na
4d00: 6d 65 64 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  med transaction 
4d10: 61 6e 64 20 69 74 73 20 70 61 72 65 6e 74 20 62  and its parent b
4d20: 65 63 6f 6d 65 0a 74 68 65 20 73 61 6d 65 20 74  ecome.the same t
4d30: 72 61 6e 73 61 63 74 69 6f 6e 2e 20 20 41 66 74  ransaction.  Aft
4d40: 65 72 20 52 45 4c 45 41 53 45 2c 20 74 68 65 20  er RELEASE, the 
4d50: 6e 61 6d 65 64 20 74 72 61 6e 73 61 63 74 69 6f  named transactio
4d60: 6e 20 61 6e 64 20 69 74 73 20 70 61 72 65 6e 74  n and its parent
4d70: 0a 77 69 6c 6c 20 63 6f 6d 6d 69 74 20 6f 72 20  .will commit or 
4d80: 72 6f 6c 6c 62 61 63 6b 20 74 6f 67 65 74 68 65  rollback togethe
4d90: 72 2c 20 77 68 61 74 65 76 65 72 20 74 68 65 69  r, whatever thei
4da0: 72 20 66 61 74 65 20 6d 61 79 20 62 65 2e 0a 3c  r fate may be..<
4db0: 2f 70 3e 3c 2f 6c 69 3e 0a 0a 3c 6c 69 3e 3c 70  /p></li>..<li><p
4dc0: 3e 0a 4f 6e 65 20 63 61 6e 20 61 6c 73 6f 20 74  >.One can also t
4dd0: 68 69 6e 6b 20 6f 66 20 73 61 76 65 70 6f 69 6e  hink of savepoin
4de0: 74 73 20 61 73 0a 22 6d 61 72 6b 73 22 20 69 6e  ts as."marks" in
4df0: 20 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e   the transaction
4e00: 20 74 69 6d 65 6c 69 6e 65 2e 20 20 49 6e 20 74   timeline.  In t
4e10: 68 69 73 20 76 69 65 77 2c 20 74 68 65 20 53 41  his view, the SA
4e20: 56 45 50 4f 49 4e 54 20 63 6f 6d 6d 61 6e 64 0a  VEPOINT command.
4e30: 63 72 65 61 74 65 73 20 61 20 6e 65 77 20 6d 61  creates a new ma
4e40: 72 6b 2c 20 74 68 65 20 52 4f 4c 4c 42 41 43 4b  rk, the ROLLBACK
4e50: 20 54 4f 20 63 6f 6d 6d 61 6e 64 20 72 65 77 69   TO command rewi
4e60: 6e 64 73 20 74 68 65 20 74 69 6d 65 6c 69 6e 65  nds the timeline
4e70: 20 62 61 63 6b 0a 74 6f 20 61 20 70 6f 69 6e 74   back.to a point
4e80: 20 6a 75 73 74 20 61 66 74 65 72 20 74 68 65 20   just after the 
4e90: 6e 61 6d 65 64 20 6d 61 72 6b 2c 20 61 6e 64 20  named mark, and 
4ea0: 74 68 65 20 52 45 4c 45 41 53 45 20 63 6f 6d 6d  the RELEASE comm
4eb0: 61 6e 64 0a 65 72 61 73 65 73 20 6d 61 72 6b 73  and.erases marks
4ec0: 20 66 72 6f 6d 20 74 68 65 20 74 69 6d 65 6c 69   from the timeli
4ed0: 6e 65 20 77 69 74 68 6f 75 74 20 61 63 74 75 61  ne without actua
4ee0: 6c 6c 79 20 6d 61 6b 69 6e 67 20 61 6e 79 0a 63  lly making any.c
4ef0: 68 61 6e 67 65 73 20 74 6f 20 74 68 65 20 64 61  hanges to the da
4f00: 74 61 62 61 73 65 2e 0a 3c 2f 70 3e 3c 2f 6c 69  tabase..</p></li
4f10: 3e 0a 3c 2f 75 6c 3e 0a 0a 0a 0a 3c 68 33 3e 54  >.</ul>....<h3>T
4f20: 72 61 6e 73 61 63 74 69 6f 6e 20 4e 65 73 74 69  ransaction Nesti
4f30: 6e 67 20 52 75 6c 65 73 3c 2f 68 33 3e 0a 0a 3c  ng Rules</h3>..<
4f40: 70 3e 54 72 61 6e 73 61 63 74 69 6f 6e 73 20 73  p>Transactions s
4f50: 74 61 63 6b 2e 20 20 54 68 65 20 6c 61 73 74 20  tack.  The last 
4f60: 74 72 61 6e 73 61 63 74 69 6f 6e 20 73 74 61 72  transaction star
4f70: 74 65 64 20 77 69 6c 6c 20 62 65 20 74 68 65 20  ted will be the 
4f80: 66 69 72 73 74 0a 74 72 61 6e 73 61 63 74 69 6f  first.transactio
4f90: 6e 20 63 6f 6d 6d 69 74 74 65 64 20 6f 72 20 72  n committed or r
4fa0: 6f 6c 6c 65 64 20 62 61 63 6b 2e 3c 2f 70 3e 0a  olled back.</p>.
4fb0: 0a 3c 70 3e 54 68 65 20 5b 42 45 47 49 4e 5d 20  .<p>The [BEGIN] 
4fc0: 63 6f 6d 6d 61 6e 64 20 6f 6e 6c 79 20 77 6f 72  command only wor
4fd0: 6b 73 20 69 66 20 74 68 65 20 74 72 61 6e 73 61  ks if the transa
4fe0: 63 74 69 6f 6e 20 73 74 61 63 6b 20 69 73 20 65  ction stack is e
4ff0: 6d 70 74 79 2c 20 6f 72 0a 69 6e 20 6f 74 68 65  mpty, or.in othe
5000: 72 20 77 6f 72 64 73 20 69 66 20 74 68 65 72 65  r words if there
5010: 20 61 72 65 20 6e 6f 20 70 65 6e 64 69 6e 67 20   are no pending 
5020: 74 72 61 6e 73 61 63 74 69 6f 6e 73 2e 20 20 49  transactions.  I
5030: 66 20 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f  f the transactio
5040: 6e 0a 73 74 61 63 6b 20 69 73 20 6e 6f 74 20 65  n.stack is not e
5050: 6d 70 74 79 20 77 68 65 6e 20 74 68 65 20 5b 42  mpty when the [B
5060: 45 47 49 4e 5d 20 63 6f 6d 6d 61 6e 64 20 69 73  EGIN] command is
5070: 20 69 6e 76 6f 6b 65 64 2c 20 74 68 65 6e 20 74   invoked, then t
5080: 68 65 20 63 6f 6d 6d 61 6e 64 0a 66 61 69 6c 73  he command.fails
5090: 20 77 69 74 68 20 61 6e 20 65 72 72 6f 72 2e 3c   with an error.<
50a0: 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 5b 43 4f 4d  /p>..<p>The [COM
50b0: 4d 49 54 5d 20 63 6f 6d 6d 61 6e 64 20 63 6f 6d  MIT] command com
50c0: 6d 69 74 73 20 61 6c 6c 20 6f 75 74 73 74 61 6e  mits all outstan
50d0: 64 69 6e 67 20 74 72 61 6e 73 61 63 74 69 6f 6e  ding transaction
50e0: 73 20 61 6e 64 20 6c 65 61 76 65 73 0a 74 68 65  s and leaves.the
50f0: 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 73 74 61   transaction sta
5100: 63 6b 20 65 6d 70 74 79 2e 3c 2f 70 3e 0a 0a 3c  ck empty.</p>..<
5110: 70 3e 54 68 65 20 52 45 4c 45 41 53 45 20 63 6f  p>The RELEASE co
5120: 6d 6d 61 6e 64 20 73 74 61 72 74 73 20 77 69 74  mmand starts wit
5130: 68 20 74 68 65 20 6d 6f 73 74 20 72 65 63 65 6e  h the most recen
5140: 74 20 61 64 64 69 74 69 6f 6e 20 74 6f 20 74 68  t addition to th
5150: 65 0a 74 72 61 6e 73 61 63 74 69 6f 6e 20 73 74  e.transaction st
5160: 61 63 6b 20 61 6e 64 20 72 65 6c 65 61 73 65 73  ack and releases
5170: 20 73 61 76 65 70 6f 69 6e 74 73 20 62 61 63 6b   savepoints back
5180: 77 61 72 64 73 20 0a 69 6e 20 74 69 6d 65 20 75  wards .in time u
5190: 6e 74 69 6c 20 69 74 20 72 65 6c 65 61 73 65 73  ntil it releases
51a0: 20 61 20 73 61 76 65 70 6f 69 6e 74 20 6d 61 72   a savepoint mar
51b0: 6b 20 77 69 74 68 20 61 20 6d 61 74 63 68 69 6e  k with a matchin
51c0: 67 20 73 61 76 65 70 6f 69 6e 74 2d 6e 61 6d 65  g savepoint-name
51d0: 2e 0a 50 72 69 6f 72 20 73 61 76 65 70 6f 69 6e  ..Prior savepoin
51e0: 74 73 2c 20 65 76 65 6e 20 73 61 76 65 70 6f 69  ts, even savepoi
51f0: 6e 74 73 20 77 69 74 68 20 6d 61 74 63 68 69 6e  nts with matchin
5200: 67 20 73 61 76 65 70 6f 69 6e 74 2d 6e 61 6d 65  g savepoint-name
5210: 73 2c 20 61 72 65 0a 75 6e 63 68 61 6e 67 65 64  s, are.unchanged
5220: 2e 0a 49 66 20 74 68 65 20 52 45 4c 45 41 53 45  ..If the RELEASE
5230: 20 63 6f 6d 6d 61 6e 64 20 63 61 75 73 65 73 20   command causes 
5240: 74 68 65 0a 74 72 61 6e 73 61 63 74 69 6f 6e 20  the.transaction 
5250: 73 74 61 63 6b 20 74 6f 20 62 65 63 6f 6d 65 20  stack to become 
5260: 65 6d 70 74 79 20 28 69 66 20 74 68 65 20 52 45  empty (if the RE
5270: 4c 45 41 53 45 20 63 6f 6d 6d 61 6e 64 20 72 65  LEASE command re
5280: 6c 65 61 73 65 73 20 74 68 65 0a 6f 75 74 65 72  leases the.outer
5290: 6d 6f 73 74 20 74 72 61 6e 73 61 63 74 69 6f 6e  most transaction
52a0: 20 66 72 6f 6d 20 74 68 65 20 73 74 61 63 6b 29   from the stack)
52b0: 20 74 68 65 6e 20 74 68 65 20 74 72 61 6e 73 61   then the transa
52c0: 63 74 69 6f 6e 20 63 6f 6d 6d 69 74 73 2e 3c 2f  ction commits.</
52d0: 70 3e 0a 0a 3c 70 3e 54 68 65 20 5b 52 4f 4c 4c  p>..<p>The [ROLL
52e0: 42 41 43 4b 5d 20 63 6f 6d 6d 61 6e 64 20 77 69  BACK] command wi
52f0: 74 68 6f 75 74 20 61 20 54 4f 20 63 6c 61 75 73  thout a TO claus
5300: 65 20 72 6f 6c 6c 73 20 62 61 63 6b 73 20 61 6c  e rolls backs al
5310: 6c 20 74 72 61 6e 73 61 63 74 69 6f 6e 73 0a 61  l transactions.a
5320: 6e 64 20 6c 65 61 76 65 73 20 74 68 65 20 74 72  nd leaves the tr
5330: 61 6e 73 61 63 74 69 6f 6e 20 73 74 61 63 6b 20  ansaction stack 
5340: 65 6d 70 74 79 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54  empty.</p>..<p>T
5350: 68 65 20 52 4f 4c 4c 42 41 43 4b 20 63 6f 6d 6d  he ROLLBACK comm
5360: 61 6e 64 20 77 69 74 68 20 61 20 54 4f 20 63 6c  and with a TO cl
5370: 61 75 73 65 20 72 6f 6c 6c 73 20 62 61 63 6b 20  ause rolls back 
5380: 74 72 61 6e 73 61 63 74 69 6f 6e 73 20 67 6f 69  transactions goi
5390: 6e 67 0a 62 61 63 6b 77 61 72 64 73 20 69 6e 20  ng.backwards in 
53a0: 74 69 6d 65 20 62 61 63 6b 20 74 6f 20 74 68 65  time back to the
53b0: 20 6d 6f 73 74 20 72 65 63 65 6e 74 20 53 41 56   most recent SAV
53c0: 45 50 4f 49 4e 54 20 77 69 74 68 20 61 20 6d 61  EPOINT with a ma
53d0: 74 63 68 69 6e 67 20 6e 61 6d 65 2e 0a 54 68 65  tching name..The
53e0: 20 53 41 56 45 50 4f 49 4e 54 20 77 69 74 68 20   SAVEPOINT with 
53f0: 74 68 65 20 6d 61 74 63 68 69 6e 67 20 6e 61 6d  the matching nam
5400: 65 20 72 65 6d 61 69 6e 73 20 6f 6e 20 74 68 65  e remains on the
5410: 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 73 74 61   transaction sta
5420: 63 6b 2c 0a 62 75 74 20 61 6c 6c 20 64 61 74 61  ck,.but all data
5430: 62 61 73 65 20 63 68 61 6e 67 65 73 20 74 68 61  base changes tha
5440: 74 20 6f 63 63 75 72 72 65 64 20 61 66 74 65 72  t occurred after
5450: 20 74 68 61 74 20 53 41 56 45 50 4f 49 4e 54 20   that SAVEPOINT 
5460: 77 61 73 20 63 72 65 61 74 65 64 0a 61 72 65 20  was created.are 
5470: 72 6f 6c 6c 65 64 20 62 61 63 6b 2e 20 20 49 66  rolled back.  If
5480: 20 74 68 65 20 73 61 76 65 70 6f 69 6e 74 2d 6e   the savepoint-n
5490: 61 6d 65 20 69 6e 20 61 20 52 4f 4c 4c 42 41 43  ame in a ROLLBAC
54a0: 4b 20 54 4f 20 63 6f 6d 6d 61 6e 64 20 64 6f 65  K TO command doe
54b0: 73 20 6e 6f 74 0a 6d 61 74 63 68 20 61 6e 79 20  s not.match any 
54c0: 53 41 56 45 50 4f 49 4e 54 20 6f 6e 20 74 68 65  SAVEPOINT on the
54d0: 20 73 74 61 63 6b 2c 20 74 68 65 6e 20 74 68 65   stack, then the
54e0: 20 52 4f 4c 4c 42 41 43 4b 20 63 6f 6d 6d 61 6e   ROLLBACK comman
54f0: 64 20 66 61 69 6c 73 20 77 69 74 68 20 61 6e 0a  d fails with an.
5500: 65 72 72 6f 72 20 61 6e 64 20 6c 65 61 76 65 73  error and leaves
5510: 20 74 68 65 20 73 74 61 74 65 20 6f 66 20 74 68   the state of th
5520: 65 20 64 61 74 61 62 61 73 65 20 75 6e 63 68 61  e database uncha
5530: 6e 67 65 64 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e  nged.</p>..<tcl>
5540: 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  .###############
5550: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5560: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5570: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5580: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5590: 0a 53 65 63 74 69 6f 6e 20 63 6f 6d 6d 65 6e 74  .Section comment
55a0: 20 63 6f 6d 6d 65 6e 74 20 7b 63 6f 6d 6d 65 6e   comment {commen
55b0: 74 20 63 6f 6d 6d 65 6e 74 73 7d 0a 0a 42 75 62  t comments}..Bub
55c0: 62 6c 65 44 69 61 67 72 61 6d 20 63 6f 6d 6d 65  bleDiagram comme
55d0: 6e 74 2d 73 79 6e 74 61 78 0a 3c 2f 74 63 6c 3e  nt-syntax.</tcl>
55e0: 0a 0a 3c 70 3e 43 6f 6d 6d 65 6e 74 73 20 61 72  ..<p>Comments ar
55f0: 65 6e 27 74 20 53 51 4c 20 63 6f 6d 6d 61 6e 64  en't SQL command
5600: 73 2c 20 62 75 74 20 63 61 6e 20 6f 63 63 75 72  s, but can occur
5610: 20 77 69 74 68 69 6e 20 74 68 65 20 74 65 78 74   within the text
5620: 20 6f 66 0a 53 51 4c 20 71 75 65 72 69 65 73 20   of.SQL queries 
5630: 70 61 73 73 65 64 20 74 6f 20 5b 73 71 6c 69 74  passed to [sqlit
5640: 65 33 5f 70 72 65 70 61 72 65 5f 76 32 28 29 5d  e3_prepare_v2()]
5650: 20 61 6e 64 20 72 65 6c 61 74 65 64 20 69 6e 74   and related int
5660: 65 72 66 61 63 65 73 2e 2e 0a 43 6f 6d 6d 65 6e  erfaces...Commen
5670: 74 73 20 61 72 65 20 0a 74 72 65 61 74 65 64 20  ts are .treated 
5680: 61 73 20 77 68 69 74 65 73 70 61 63 65 20 62 79  as whitespace by
5690: 20 74 68 65 20 70 61 72 73 65 72 2e 20 20 54 68   the parser.  Th
56a0: 65 79 20 63 61 6e 20 62 65 67 69 6e 20 61 6e 79  ey can begin any
56b0: 77 68 65 72 65 20 77 68 69 74 65 73 70 61 63 65  where whitespace
56c0: 20 0a 63 61 6e 20 62 65 20 66 6f 75 6e 64 2c 20   .can be found, 
56d0: 69 6e 63 6c 75 64 69 6e 67 20 69 6e 73 69 64 65  including inside
56e0: 20 65 78 70 72 65 73 73 69 6f 6e 73 20 74 68 61   expressions tha
56f0: 74 20 73 70 61 6e 20 6d 75 6c 74 69 70 6c 65 20  t span multiple 
5700: 6c 69 6e 65 73 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e  lines..</p>..<p>
5710: 20 53 51 4c 20 63 6f 6d 6d 65 6e 74 73 20 62 65   SQL comments be
5720: 67 69 6e 20 77 69 74 68 20 74 77 6f 20 63 6f 6e  gin with two con
5730: 73 65 63 75 74 69 76 65 20 22 2d 22 20 63 68 61  secutive "-" cha
5740: 72 61 63 74 65 72 73 20 28 41 53 43 49 49 20 30  racters (ASCII 0
5750: 78 32 64 29 0a 61 6e 64 20 65 78 74 65 6e 64 20  x2d).and extend 
5760: 75 70 20 74 6f 20 61 6e 64 20 69 6e 63 6c 75 64  up to and includ
5770: 69 6e 67 20 74 68 65 20 6e 65 78 74 20 6e 65 77  ing the next new
5780: 6c 69 6e 65 20 63 68 61 72 61 63 74 65 72 20 28  line character (
5790: 41 53 43 49 49 20 30 78 30 61 29 0a 6f 72 20 75  ASCII 0x0a).or u
57a0: 6e 74 69 6c 20 74 68 65 20 65 6e 64 20 6f 66 20  ntil the end of 
57b0: 69 6e 70 75 74 2c 20 77 68 69 63 68 65 76 65 72  input, whichever
57c0: 20 63 6f 6d 65 73 20 66 69 72 73 74 2e 3c 2f 70   comes first.</p
57d0: 3e 0a 0a 3c 70 3e 20 43 20 63 6f 6d 6d 65 6e 74  >..<p> C comment
57e0: 73 20 63 61 6e 20 73 70 61 6e 20 61 6e 79 20 6e  s can span any n
57f0: 75 6d 62 65 72 20 6f 66 20 6c 69 6e 65 73 2e 20  umber of lines. 
5800: 20 43 2d 73 74 79 6c 65 20 63 6f 6d 6d 65 6e 74   C-style comment
5810: 73 20 62 65 67 69 6e 0a 77 69 74 68 20 22 2f 2a  s begin.with "/*
5820: 22 20 61 6e 64 20 65 78 74 65 6e 64 20 75 70 20  " and extend up 
5830: 74 6f 20 61 6e 64 20 69 6e 63 6c 75 64 69 6e 67  to and including
5840: 20 74 68 65 20 6e 65 78 74 20 22 2a 2f 22 20 63   the next "*/" c
5850: 68 61 72 61 63 74 65 72 20 70 61 69 72 0a 6f 72  haracter pair.or
5860: 20 75 6e 74 69 6c 20 74 68 65 20 65 6e 64 20 6f   until the end o
5870: 66 20 69 6e 70 75 74 2c 20 77 68 69 63 68 65 76  f input, whichev
5880: 65 72 20 63 6f 6d 65 73 20 66 69 72 73 74 2e 20  er comes first. 
5890: 20 43 2d 73 74 79 6c 65 20 63 6f 6d 6d 65 6e 74   C-style comment
58a0: 73 0a 63 61 6e 20 73 70 61 6e 20 6d 75 6c 74 69  s.can span multi
58b0: 70 6c 65 20 6c 69 6e 65 73 2e 20 3c 2f 70 3e 0a  ple lines. </p>.
58c0: 0a 3c 70 3e 20 43 6f 6d 6d 65 6e 74 73 20 63 61  .<p> Comments ca
58d0: 6e 20 61 70 70 65 61 72 20 61 6e 79 77 68 65 72  n appear anywher
58e0: 65 20 77 68 69 74 65 73 70 61 63 65 20 63 61 6e  e whitespace can
58f0: 20 6f 63 63 75 72 2c 0a 69 6e 63 6c 75 64 69 6e   occur,.includin
5900: 67 20 69 6e 73 69 64 65 20 65 78 70 72 65 73 73  g inside express
5910: 69 6f 6e 73 20 61 6e 64 20 69 6e 20 74 68 65 20  ions and in the 
5920: 6d 69 64 64 6c 65 20 6f 66 20 6f 74 68 65 72 20  middle of other 
5930: 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 2e 0a  SQL statements..
5940: 43 6f 6d 6d 65 6e 74 73 20 64 6f 20 6e 6f 74 20  Comments do not 
5950: 6e 65 73 74 2e 0a 3c 2f 70 3e 0a 0a 0a 3c 74 63  nest..</p>...<tc
5960: 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23 23  l>.#############
5970: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5980: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5990: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
59a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
59b0: 23 0a 53 65 63 74 69 6f 6e 20 7b 43 52 45 41 54  #.Section {CREAT
59c0: 45 20 49 4e 44 45 58 7d 20 63 72 65 61 74 65 69  E INDEX} createi
59d0: 6e 64 65 78 20 7b 7b 43 52 45 41 54 45 20 49 4e  ndex {{CREATE IN
59e0: 44 45 58 7d 7d 0a 0a 42 75 62 62 6c 65 44 69 61  DEX}}..BubbleDia
59f0: 67 72 61 6d 20 63 72 65 61 74 65 2d 69 6e 64 65  gram create-inde
5a00: 78 2d 73 74 6d 74 20 31 0a 42 75 62 62 6c 65 44  x-stmt 1.BubbleD
5a10: 69 61 67 72 61 6d 20 69 6e 64 65 78 65 64 2d 63  iagram indexed-c
5a20: 6f 6c 75 6d 6e 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70  olumn.</tcl>..<p
5a30: 3e 54 68 65 20 43 52 45 41 54 45 20 49 4e 44 45  >The CREATE INDE
5a40: 58 20 63 6f 6d 6d 61 6e 64 20 63 6f 6e 73 69 73  X command consis
5a50: 74 73 20 6f 66 20 74 68 65 20 6b 65 79 77 6f 72  ts of the keywor
5a60: 64 73 20 22 43 52 45 41 54 45 20 49 4e 44 45 58  ds "CREATE INDEX
5a70: 22 20 66 6f 6c 6c 6f 77 65 64 0a 62 79 20 74 68  " followed.by th
5a80: 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 6e 65  e name of the ne
5a90: 77 20 69 6e 64 65 78 2c 20 74 68 65 20 6b 65 79  w index, the key
5aa0: 77 6f 72 64 20 22 4f 4e 22 2c 20 74 68 65 20 6e  word "ON", the n
5ab0: 61 6d 65 20 6f 66 20 61 20 70 72 65 76 69 6f 75  ame of a previou
5ac0: 73 6c 79 0a 63 72 65 61 74 65 64 20 74 61 62 6c  sly.created tabl
5ad0: 65 20 74 68 61 74 20 69 73 20 74 6f 20 62 65 20  e that is to be 
5ae0: 69 6e 64 65 78 65 64 2c 20 61 6e 64 20 61 20 70  indexed, and a p
5af0: 61 72 65 6e 74 68 65 73 69 7a 65 64 20 6c 69 73  arenthesized lis
5b00: 74 20 6f 66 20 6e 61 6d 65 73 20 6f 66 0a 63 6f  t of names of.co
5b10: 6c 75 6d 6e 73 20 69 6e 20 74 68 65 20 74 61 62  lumns in the tab
5b20: 6c 65 20 74 68 61 74 20 61 72 65 20 75 73 65 64  le that are used
5b30: 20 66 6f 72 20 74 68 65 20 69 6e 64 65 78 20 6b   for the index k
5b40: 65 79 2e 3c 2f 70 3e 0a 0a 3c 70 3e 45 61 63 68  ey.</p>..<p>Each
5b50: 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 20 63 61 6e   column name can
5b60: 20 62 65 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20   be followed by 
5b70: 6f 6e 65 20 6f 66 20 74 68 65 20 22 41 53 43 22  one of the "ASC"
5b80: 20 6f 72 20 22 44 45 53 43 22 20 6b 65 79 77 6f   or "DESC" keywo
5b90: 72 64 73 0a 74 6f 20 69 6e 64 69 63 61 74 65 20  rds.to indicate 
5ba0: 73 6f 72 74 20 6f 72 64 65 72 2e 20 20 54 68 65  sort order.  The
5bb0: 20 73 6f 72 74 20 6f 72 64 65 72 20 6d 61 79 20   sort order may 
5bc0: 6f 72 20 6d 61 79 20 6e 6f 74 20 62 65 20 69 67  or may not be ig
5bd0: 6e 6f 72 65 64 20 64 65 70 65 6e 64 69 6e 67 0a  nored depending.
5be0: 6f 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20  on the database 
5bf0: 66 69 6c 65 20 66 6f 72 6d 61 74 2e 20 20 54 68  file format.  Th
5c00: 65 20 22 6c 65 67 61 63 79 22 20 66 69 6c 65 20  e "legacy" file 
5c10: 66 6f 72 6d 61 74 20 69 67 6e 6f 72 65 73 20 69  format ignores i
5c20: 6e 64 65 78 0a 73 6f 72 74 20 6f 72 64 65 72 2e  ndex.sort order.
5c30: 20 20 54 68 65 20 64 65 73 63 65 6e 64 69 6e 67    The descending
5c40: 20 69 6e 64 65 78 20 66 69 6c 65 20 66 6f 72 6d   index file form
5c50: 61 74 20 74 61 6b 65 73 20 69 6e 64 65 78 20 73  at takes index s
5c60: 6f 72 74 20 6f 72 64 65 72 0a 69 6e 74 6f 20 61  ort order.into a
5c70: 63 63 6f 75 6e 74 2e 20 20 4f 6e 6c 79 20 63 6f  ccount.  Only co
5c80: 70 69 65 73 20 6f 66 20 53 51 4c 69 74 65 20 6e  pies of SQLite n
5c90: 65 77 65 72 20 74 68 61 6e 20 5b 76 65 72 73 69  ewer than [versi
5ca0: 6f 6e 20 33 2e 33 2e 30 5d 20 0a 28 72 65 6c 65  on 3.3.0] .(rele
5cb0: 61 73 65 64 20 6f 6e 20 32 30 30 36 2d 30 31 2d  ased on 2006-01-
5cc0: 31 30 29 20 61 72 65 20 61 62 6c 65 20 74 6f 20  10) are able to 
5cd0: 75 6e 64 65 72 73 74 61 6e 64 20 74 68 65 20 6e  understand the n
5ce0: 65 77 65 72 20 64 65 73 63 65 6e 64 69 6e 67 0a  ewer descending.
5cf0: 69 6e 64 65 78 20 66 69 6c 65 20 66 6f 72 6d 61  index file forma
5d00: 74 20 61 6e 64 20 73 6f 20 66 6f 72 20 63 6f 6d  t and so for com
5d10: 70 61 74 69 62 69 6c 69 74 79 20 77 69 74 68 20  patibility with 
5d20: 6f 6c 64 65 72 20 76 65 72 73 69 6f 6e 73 20 6f  older versions o
5d30: 66 0a 53 51 4c 69 74 65 2c 20 74 68 65 20 6c 65  f.SQLite, the le
5d40: 67 61 63 79 20 66 69 6c 65 20 66 6f 72 6d 61 74  gacy file format
5d50: 20 69 73 20 67 65 6e 65 72 61 74 65 64 20 62 79   is generated by
5d60: 20 64 65 66 61 75 6c 74 2e 20 20 55 73 65 20 74   default.  Use t
5d70: 68 65 0a 5b 6c 65 67 61 63 79 5f 66 69 6c 65 5f  he.[legacy_file_
5d80: 66 6f 72 6d 61 74 5d 20 70 72 61 67 6d 61 20 74  format] pragma t
5d90: 6f 20 6d 6f 64 69 66 79 20 74 68 69 73 20 62 65  o modify this be
5da0: 68 61 76 69 6f 72 20 61 6e 64 20 67 65 6e 65 72  havior and gener
5db0: 61 74 65 0a 64 61 74 61 62 61 73 65 73 20 74 68  ate.databases th
5dc0: 61 74 20 75 73 65 20 74 68 65 20 6e 65 77 65 72  at use the newer
5dd0: 20 66 69 6c 65 20 66 6f 72 6d 61 74 2e 20 20 46   file format.  F
5de0: 75 74 75 72 65 20 76 65 72 73 69 6f 6e 73 20 6f  uture versions o
5df0: 66 20 53 51 4c 69 74 65 0a 6d 61 79 20 62 65 67  f SQLite.may beg
5e00: 69 6e 20 74 6f 20 67 65 6e 65 72 61 74 65 20 74  in to generate t
5e10: 68 65 20 6e 65 77 65 72 20 66 69 6c 65 20 66 6f  he newer file fo
5e20: 72 6d 61 74 20 62 79 20 64 65 66 61 75 6c 74 2e  rmat by default.
5e30: 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 43 4f 4c  </p>..<p>The COL
5e40: 4c 41 54 45 20 63 6c 61 75 73 65 20 66 6f 6c 6c  LATE clause foll
5e50: 6f 77 69 6e 67 20 65 61 63 68 20 63 6f 6c 75 6d  owing each colum
5e60: 6e 20 6e 61 6d 65 20 64 65 66 69 6e 65 73 20 61  n name defines a
5e70: 20 63 6f 6c 6c 61 74 69 6e 67 0a 73 65 71 75 65   collating.seque
5e80: 6e 63 65 20 75 73 65 64 20 66 6f 72 20 74 65 78  nce used for tex
5e90: 74 20 65 6e 74 72 69 65 73 20 69 6e 20 74 68 61  t entries in tha
5ea0: 74 20 63 6f 6c 75 6d 6e 2e 20 20 54 68 65 20 64  t column.  The d
5eb0: 65 66 61 75 6c 74 20 63 6f 6c 6c 61 74 69 6e 67  efault collating
5ec0: 0a 73 65 71 75 65 6e 63 65 20 69 73 20 74 68 65  .sequence is the
5ed0: 20 63 6f 6c 6c 61 74 69 6e 67 20 73 65 71 75 65   collating seque
5ee0: 6e 63 65 20 64 65 66 69 6e 65 64 20 66 6f 72 20  nce defined for 
5ef0: 74 68 61 74 20 63 6f 6c 75 6d 6e 20 69 6e 20 74  that column in t
5f00: 68 65 0a 5b 43 52 45 41 54 45 20 54 41 42 4c 45  he.[CREATE TABLE
5f10: 5d 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 4f 72  ] statement.  Or
5f20: 20 69 66 20 6e 6f 20 63 6f 6c 6c 61 74 69 6e 67   if no collating
5f30: 20 73 65 71 75 65 6e 63 65 20 69 73 20 6f 74 68   sequence is oth
5f40: 65 72 77 69 73 65 20 64 65 66 69 6e 65 64 2c 0a  erwise defined,.
5f50: 74 68 65 20 62 75 69 6c 74 2d 69 6e 20 42 49 4e  the built-in BIN
5f60: 41 52 59 20 63 6f 6c 6c 61 74 69 6e 67 20 73 65  ARY collating se
5f70: 71 75 65 6e 63 65 20 69 73 20 75 73 65 64 2e 3c  quence is used.<
5f80: 2f 70 3e 0a 0a 3c 70 3e 54 68 65 72 65 20 61 72  /p>..<p>There ar
5f90: 65 20 6e 6f 20 61 72 62 69 74 72 61 72 79 20 6c  e no arbitrary l
5fa0: 69 6d 69 74 73 20 6f 6e 20 74 68 65 20 6e 75 6d  imits on the num
5fb0: 62 65 72 20 6f 66 20 69 6e 64 69 63 65 73 20 74  ber of indices t
5fc0: 68 61 74 20 63 61 6e 20 62 65 0a 61 74 74 61 63  hat can be.attac
5fd0: 68 65 64 20 74 6f 20 61 20 73 69 6e 67 6c 65 20  hed to a single 
5fe0: 74 61 62 6c 65 2e 20 20 54 68 65 20 6e 75 6d 62  table.  The numb
5ff0: 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e  er of columns in
6000: 20 61 6e 20 69 6e 64 65 78 20 69 73 20 0a 6c 69   an index is .li
6010: 6d 69 74 65 64 20 74 6f 20 5b 53 51 4c 49 54 45  mited to [SQLITE
6020: 5f 4d 41 58 5f 43 4f 4c 55 4d 4e 5d 2e 3c 2f 70  _MAX_COLUMN].</p
6030: 3e 0a 0a 3c 70 3e 49 66 20 74 68 65 20 55 4e 49  >..<p>If the UNI
6040: 51 55 45 20 6b 65 79 77 6f 72 64 20 61 70 70 65  QUE keyword appe
6050: 61 72 73 20 62 65 74 77 65 65 6e 20 43 52 45 41  ars between CREA
6060: 54 45 20 61 6e 64 20 49 4e 44 45 58 20 74 68 65  TE and INDEX the
6070: 6e 20 64 75 70 6c 69 63 61 74 65 0a 69 6e 64 65  n duplicate.inde
6080: 78 20 65 6e 74 72 69 65 73 20 61 72 65 20 6e 6f  x entries are no
6090: 74 20 61 6c 6c 6f 77 65 64 2e 20 20 41 6e 79 20  t allowed.  Any 
60a0: 61 74 74 65 6d 70 74 20 74 6f 20 69 6e 73 65 72  attempt to inser
60b0: 74 20 61 20 64 75 70 6c 69 63 61 74 65 20 65 6e  t a duplicate en
60c0: 74 72 79 0a 77 69 6c 6c 20 72 65 73 75 6c 74 20  try.will result 
60d0: 69 6e 20 61 6e 20 65 72 72 6f 72 2e 20 20 46 6f  in an error.  Fo
60e0: 72 20 74 68 65 20 70 75 72 70 6f 73 65 73 20 6f  r the purposes o
60f0: 66 20 75 6e 69 71 75 65 20 69 6e 64 69 63 65 73  f unique indices
6100: 2c 20 61 6c 6c 20 4e 55 4c 4c 20 76 61 6c 75 65  , all NULL value
6110: 73 0a 61 72 65 20 63 6f 6e 73 69 64 65 72 65 64  s.are considered
6120: 20 74 6f 20 64 69 66 66 65 72 65 6e 74 20 66 72   to different fr
6130: 6f 6d 20 61 6c 6c 20 6f 74 68 65 72 20 4e 55 4c  om all other NUL
6140: 4c 20 76 61 6c 75 65 73 20 61 6e 64 20 61 72 65  L values and are
6150: 20 74 68 75 73 20 75 6e 69 71 75 65 2e 0a 54 68   thus unique..Th
6160: 69 73 20 69 73 20 6f 6e 65 20 6f 66 20 74 68 65  is is one of the
6170: 20 74 77 6f 20 70 6f 73 73 69 62 6c 65 20 69 6e   two possible in
6180: 74 65 72 70 72 65 74 61 74 69 6f 6e 73 20 6f 66  terpretations of
6190: 20 74 68 65 20 53 51 4c 2d 39 32 20 73 74 61 6e   the SQL-92 stan
61a0: 64 61 72 64 0a 28 74 68 65 20 6c 61 6e 67 75 61  dard.(the langua
61b0: 67 65 20 69 6e 20 74 68 65 20 73 74 61 6e 64 61  ge in the standa
61c0: 72 64 20 69 73 20 61 6d 62 69 67 75 69 6f 75 73  rd is ambiguious
61d0: 29 20 61 6e 64 20 69 73 20 74 68 65 20 69 6e 74  ) and is the int
61e0: 65 72 70 72 65 74 61 74 69 6f 6e 0a 66 6f 6c 6c  erpretation.foll
61f0: 6f 77 65 64 20 62 79 20 50 6f 73 74 67 72 65 53  owed by PostgreS
6200: 51 4c 2c 20 4d 79 53 51 4c 2c 20 46 69 72 65 62  QL, MySQL, Fireb
6210: 69 72 64 2c 20 61 6e 64 20 4f 72 61 63 6c 65 2e  ird, and Oracle.
6220: 20 20 49 6e 66 6f 72 6d 69 78 20 61 6e 64 0a 4d    Informix and.M
6230: 69 63 72 6f 73 6f 66 74 20 53 51 4c 20 53 65 72  icrosoft SQL Ser
6240: 76 65 72 20 66 6f 6c 6c 6f 77 20 74 68 65 20 6f  ver follow the o
6250: 74 68 65 72 20 69 6e 74 65 72 70 72 65 74 61 74  ther interpretat
6260: 69 6f 6e 20 6f 66 20 74 68 65 20 73 74 61 6e 64  ion of the stand
6270: 61 72 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20  ard.</p>..<p>If 
6280: 74 68 65 20 6f 70 74 69 6f 6e 61 6c 20 49 46 20  the optional IF 
6290: 4e 4f 54 20 45 58 49 53 54 53 20 63 6c 61 75 73  NOT EXISTS claus
62a0: 65 20 69 73 20 70 72 65 73 65 6e 74 20 61 6e 64  e is present and
62b0: 20 61 6e 6f 74 68 65 72 20 69 6e 64 65 78 0a 77   another index.w
62c0: 69 74 68 20 74 68 65 20 73 61 6d 65 20 6e 61 6d  ith the same nam
62d0: 65 20 61 6c 65 61 64 79 20 65 78 69 73 74 73 2c  e aleady exists,
62e0: 20 74 68 65 6e 20 74 68 69 73 20 63 6f 6d 6d 61   then this comma
62f0: 6e 64 20 62 65 63 6f 6d 65 73 20 61 20 6e 6f 2d  nd becomes a no-
6300: 6f 70 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 6e 64 65  op.</p>..<p>Inde
6310: 78 65 73 20 61 72 65 20 72 65 6d 6f 76 65 64 20  xes are removed 
6320: 77 69 74 68 20 74 68 65 20 3c 61 20 68 72 65 66  with the <a href
6330: 3d 22 6c 61 6e 67 5f 64 72 6f 70 69 6e 64 65 78  ="lang_dropindex
6340: 2e 68 74 6d 6c 22 3e 44 52 4f 50 20 49 4e 44 45  .html">DROP INDE
6350: 58 3c 2f 61 3e 20 0a 63 6f 6d 6d 61 6e 64 2e 3c  X</a> .command.<
6360: 2f 70 3e 0a 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23  /p>...<tcl>.####
6370: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
6380: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
6390: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
63a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
63b0: 23 23 23 23 23 23 23 23 23 23 0a 53 65 63 74 69  ##########.Secti
63c0: 6f 6e 20 7b 43 52 45 41 54 45 20 54 41 42 4c 45  on {CREATE TABLE
63d0: 7d 20 7b 63 72 65 61 74 65 74 61 62 6c 65 7d 20  } {createtable} 
63e0: 7b 7b 43 52 45 41 54 45 20 54 41 42 4c 45 7d 7d  {{CREATE TABLE}}
63f0: 0a 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20  ..BubbleDiagram 
6400: 63 72 65 61 74 65 2d 74 61 62 6c 65 2d 73 74 6d  create-table-stm
6410: 74 20 31 0a 42 75 62 62 6c 65 44 69 61 67 72 61  t 1.BubbleDiagra
6420: 6d 20 63 6f 6c 75 6d 6e 2d 64 65 66 0a 42 75 62  m column-def.Bub
6430: 62 6c 65 44 69 61 67 72 61 6d 20 74 79 70 65 2d  bleDiagram type-
6440: 6e 61 6d 65 0a 42 75 62 62 6c 65 44 69 61 67 72  name.BubbleDiagr
6450: 61 6d 20 63 6f 6c 75 6d 6e 2d 63 6f 6e 73 74 72  am column-constr
6460: 61 69 6e 74 0a 42 75 62 62 6c 65 44 69 61 67 72  aint.BubbleDiagr
6470: 61 6d 20 74 61 62 6c 65 2d 63 6f 6e 73 74 72 61  am table-constra
6480: 69 6e 74 0a 42 75 62 62 6c 65 44 69 61 67 72 61  int.BubbleDiagra
6490: 6d 20 66 6f 72 65 69 67 6e 2d 6b 65 79 2d 63 6c  m foreign-key-cl
64a0: 61 75 73 65 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e  ause.</tcl>..<p>
64b0: 41 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 73  A CREATE TABLE s
64c0: 74 61 74 65 6d 65 6e 74 20 69 73 20 62 61 73 69  tatement is basi
64d0: 63 61 6c 6c 79 20 74 68 65 20 6b 65 79 77 6f 72  cally the keywor
64e0: 64 73 20 22 43 52 45 41 54 45 20 54 41 42 4c 45  ds "CREATE TABLE
64f0: 22 0a 66 6f 6c 6c 6f 77 65 64 20 62 79 20 74 68  ".followed by th
6500: 65 20 6e 61 6d 65 20 6f 66 20 61 20 6e 65 77 20  e name of a new 
6510: 74 61 62 6c 65 20 61 6e 64 20 61 20 70 61 72 65  table and a pare
6520: 6e 74 68 65 73 69 7a 65 64 20 6c 69 73 74 20 6f  nthesized list o
6530: 66 20 63 6f 6c 75 6d 6e 0a 64 65 66 69 6e 69 74  f column.definit
6540: 69 6f 6e 73 20 61 6e 64 20 63 6f 6e 73 74 72 61  ions and constra
6550: 69 6e 74 73 2e 20 20 0a 54 61 62 6c 65 73 20 6e  ints.  .Tables n
6560: 61 6d 65 73 20 74 68 61 74 20 62 65 67 69 6e 20  ames that begin 
6570: 77 69 74 68 20 22 3c 62 3e 73 71 6c 69 74 65 5f  with "<b>sqlite_
6580: 3c 2f 62 3e 22 20 61 72 65 20 72 65 73 65 72 76  </b>" are reserv
6590: 65 64 0a 66 6f 72 20 75 73 65 20 62 79 20 53 51  ed.for use by SQ
65a0: 4c 69 74 65 20 69 74 73 65 6c 66 20 61 6e 64 20  Lite itself and 
65b0: 63 61 6e 6e 6f 74 20 61 70 70 65 61 72 73 20 69  cannot appears i
65c0: 6e 20 61 20 43 52 45 41 54 45 20 54 41 42 4c 45  n a CREATE TABLE
65d0: 20 73 74 61 74 65 6d 65 6e 74 2e 3c 2f 70 3e 0a   statement.</p>.
65e0: 0a 3c 70 3e 45 61 63 68 20 63 6f 6c 75 6d 6e 20  .<p>Each column 
65f0: 64 65 66 69 6e 69 74 69 6f 6e 20 69 73 20 74 68  definition is th
6600: 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 63 6f  e name of the co
6610: 6c 75 6d 6e 20 6f 70 74 69 6f 6e 61 6c 6c 79 20  lumn optionally 
6620: 66 6f 6c 6c 6f 77 65 64 20 62 79 20 74 68 65 0a  followed by the.
6630: 5b 64 61 74 61 74 79 70 65 5d 20 66 6f 72 20 74  [datatype] for t
6640: 68 61 74 20 63 6f 6c 75 6d 6e 2c 20 74 68 65 6e  hat column, then
6650: 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 6f 70 74   one or more opt
6660: 69 6f 6e 61 6c 20 63 6f 6c 75 6d 6e 20 63 6f 6e  ional column con
6670: 73 74 72 61 69 6e 74 73 2e 0a 53 51 4c 69 74 65  straints..SQLite
6680: 20 75 73 65 73 20 5b 64 79 6e 61 6d 69 63 20 74   uses [dynamic t
6690: 79 70 69 6e 67 5d 3b 20 0a 74 68 65 20 64 61 74  yping]; .the dat
66a0: 61 74 79 70 65 20 66 6f 72 20 74 68 65 20 63 6f  atype for the co
66b0: 6c 75 6d 6e 20 64 6f 65 73 20 6e 6f 74 20 72 65  lumn does not re
66c0: 73 74 72 69 63 74 20 77 68 61 74 20 64 61 74 61  strict what data
66d0: 20 6d 61 79 20 62 65 20 70 75 74 0a 69 6e 20 74   may be put.in t
66e0: 68 61 74 20 63 6f 6c 75 6d 6e 2e 0a 54 68 65 20  hat column..The 
66f0: 55 4e 49 51 55 45 20 63 6f 6e 73 74 72 61 69 6e  UNIQUE constrain
6700: 74 20 63 61 75 73 65 73 20 61 6e 20 75 6e 69 71  t causes an uniq
6710: 75 65 20 69 6e 64 65 78 20 74 6f 20 62 65 20 63  ue index to be c
6720: 72 65 61 74 65 64 20 6f 6e 20 74 68 65 20 73 70  reated on the sp
6730: 65 63 69 66 69 65 64 0a 63 6f 6c 75 6d 6e 73 2e  ecified.columns.
6740: 20 20 41 6c 6c 20 4e 55 4c 4c 20 76 61 6c 75 65    All NULL value
6750: 73 20 61 72 65 20 63 6f 6e 73 69 64 65 72 65 64  s are considered
6760: 20 64 69 66 66 65 72 65 6e 74 20 66 72 6f 6d 20   different from 
6770: 65 61 63 68 20 6f 74 68 65 72 20 61 6e 64 20 66  each other and f
6780: 72 6f 6d 0a 61 6c 6c 20 6f 74 68 65 72 20 76 61  rom.all other va
6790: 6c 75 65 73 20 66 6f 72 20 74 68 65 20 70 75 72  lues for the pur
67a0: 70 6f 73 65 20 6f 66 20 64 65 74 65 72 6d 69 6e  pose of determin
67b0: 69 6e 67 20 75 6e 69 71 75 65 6e 65 73 73 2c 20  ing uniqueness, 
67c0: 68 65 6e 63 65 20 61 20 55 4e 49 51 55 45 0a 63  hence a UNIQUE.c
67d0: 6f 6c 75 6d 6e 20 6d 61 79 20 63 6f 6e 74 61 69  olumn may contai
67e0: 6e 20 6d 75 6c 74 69 70 6c 65 20 65 6e 74 72 69  n multiple entri
67f0: 65 73 20 77 69 74 68 20 74 68 65 20 76 61 6c 75  es with the valu
6800: 65 20 6f 66 20 4e 55 4c 4c 2e 0a 54 68 65 20 43  e of NULL..The C
6810: 4f 4c 4c 41 54 45 20 63 6c 61 75 73 65 20 73 70  OLLATE clause sp
6820: 65 63 69 66 69 65 73 20 77 68 61 74 20 74 65 78  ecifies what tex
6830: 74 20 0a 5b 63 6f 6c 6c 61 74 69 6e 67 20 66 75  t .[collating fu
6840: 6e 63 74 69 6f 6e 5d 20 74 6f 20 75 73 65 20 77  nction] to use w
6850: 68 65 6e 20 63 6f 6d 70 61 72 69 6e 67 20 74 65  hen comparing te
6860: 78 74 20 65 6e 74 72 69 65 73 20 66 6f 72 20 74  xt entries for t
6870: 68 65 20 63 6f 6c 75 6d 6e 2e 20 20 0a 54 68 65  he column.  .The
6880: 20 62 75 69 6c 74 2d 69 6e 20 5b 42 49 4e 41 52   built-in [BINAR
6890: 59 5d 20 63 6f 6c 6c 61 74 69 6e 67 20 66 75 6e  Y] collating fun
68a0: 63 74 69 6f 6e 20 69 73 20 75 73 65 64 20 62 79  ction is used by
68b0: 20 64 65 66 61 75 6c 74 2e 0a 3c 70 3e 0a 54 68   default..<p>.Th
68c0: 65 20 44 45 46 41 55 4c 54 20 63 6f 6e 73 74 72  e DEFAULT constr
68d0: 61 69 6e 74 20 73 70 65 63 69 66 69 65 73 20 61  aint specifies a
68e0: 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 74   default value t
68f0: 6f 20 75 73 65 20 77 68 65 6e 20 64 6f 69 6e 67  o use when doing
6900: 20 61 6e 20 5b 49 4e 53 45 52 54 5d 2e 0a 54 68   an [INSERT]..Th
6910: 65 20 76 61 6c 75 65 20 6d 61 79 20 62 65 20 4e  e value may be N
6920: 55 4c 4c 2c 20 61 20 73 74 72 69 6e 67 20 63 6f  ULL, a string co
6930: 6e 73 74 61 6e 74 2c 20 61 20 6e 75 6d 62 65 72  nstant, a number
6940: 2c 20 6f 72 20 61 20 63 6f 6e 73 74 61 6e 74 20  , or a constant 
6950: 65 78 70 72 65 73 73 69 6f 6e 0a 65 6e 63 6c 6f  expression.enclo
6960: 73 65 64 20 69 6e 20 70 61 72 65 6e 74 68 65 73  sed in parenthes
6970: 65 73 2e 0a 54 68 65 20 64 65 66 61 75 6c 74 20  es..The default 
6980: 76 61 6c 75 65 20 6d 61 79 20 61 6c 73 6f 20 62  value may also b
6990: 65 20 6f 6e 65 20 6f 66 20 74 68 65 20 73 70 65  e one of the spe
69a0: 63 69 61 6c 20 63 61 73 65 2d 69 6e 64 65 70 65  cial case-indepe
69b0: 6e 64 61 6e 74 0a 6b 65 79 77 6f 72 64 73 20 43  ndant.keywords C
69c0: 55 52 52 45 4e 54 5f 54 49 4d 45 2c 20 43 55 52  URRENT_TIME, CUR
69d0: 52 45 4e 54 5f 44 41 54 45 20 6f 72 20 43 55 52  RENT_DATE or CUR
69e0: 52 45 4e 54 5f 54 49 4d 45 53 54 41 4d 50 2e 20  RENT_TIMESTAMP. 
69f0: 49 66 20 74 68 65 20 76 61 6c 75 65 20 69 73 0a  If the value is.
6a00: 4e 55 4c 4c 2c 20 61 20 73 74 72 69 6e 67 20 63  NULL, a string c
6a10: 6f 6e 73 74 61 6e 74 20 6f 72 20 6e 75 6d 62 65  onstant or numbe
6a20: 72 2c 20 69 74 20 69 73 20 6c 69 74 65 72 61 6c  r, it is literal
6a30: 6c 79 20 69 6e 73 65 72 74 65 64 20 69 6e 74 6f  ly inserted into
6a40: 20 74 68 65 20 63 6f 6c 75 6d 6e 0a 77 68 65 6e   the column.when
6a50: 65 76 65 72 20 61 6e 20 49 4e 53 45 52 54 20 73  ever an INSERT s
6a60: 74 61 74 65 6d 65 6e 74 20 74 68 61 74 20 64 6f  tatement that do
6a70: 65 73 20 6e 6f 74 20 73 70 65 63 69 66 79 20 61  es not specify a
6a80: 20 76 61 6c 75 65 20 66 6f 72 20 74 68 65 20 63   value for the c
6a90: 6f 6c 75 6d 6e 20 69 73 0a 65 78 65 63 75 74 65  olumn is.execute
6aa0: 64 2e 20 49 66 20 74 68 65 20 76 61 6c 75 65 20  d. If the value 
6ab0: 69 73 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 2c  is CURRENT_TIME,
6ac0: 20 43 55 52 52 45 4e 54 5f 44 41 54 45 20 6f 72   CURRENT_DATE or
6ad0: 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 53 54 41   CURRENT_TIMESTA
6ae0: 4d 50 2c 20 74 68 65 6e 0a 74 68 65 20 63 75 72  MP, then.the cur
6af0: 72 65 6e 74 20 55 54 43 20 64 61 74 65 20 61 6e  rent UTC date an
6b00: 64 2f 6f 72 20 74 69 6d 65 20 69 73 20 69 6e 73  d/or time is ins
6b10: 65 72 74 65 64 20 69 6e 74 6f 20 74 68 65 20 63  erted into the c
6b20: 6f 6c 75 6d 6e 73 2e 20 46 6f 72 0a 43 55 52 52  olumns. For.CURR
6b30: 45 4e 54 5f 54 49 4d 45 2c 20 74 68 65 20 66 6f  ENT_TIME, the fo
6b40: 72 6d 61 74 20 69 73 20 48 48 3a 4d 4d 3a 53 53  rmat is HH:MM:SS
6b50: 2e 20 46 6f 72 20 43 55 52 52 45 4e 54 5f 44 41  . For CURRENT_DA
6b60: 54 45 2c 20 59 59 59 59 2d 4d 4d 2d 44 44 2e 20  TE, YYYY-MM-DD. 
6b70: 54 68 65 20 66 6f 72 6d 61 74 0a 66 6f 72 20 43  The format.for C
6b80: 55 52 52 45 4e 54 5f 54 49 4d 45 53 54 41 4d 50  URRENT_TIMESTAMP
6b90: 20 69 73 20 22 59 59 59 59 2d 4d 4d 2d 44 44 20   is "YYYY-MM-DD 
6ba0: 48 48 3a 4d 4d 3a 53 53 22 2e 0a 3c 2f 70 3e 0a  HH:MM:SS"..</p>.
6bb0: 0a 3c 70 3e 54 68 65 20 50 52 49 4d 41 52 59 20  .<p>The PRIMARY 
6bc0: 4b 45 59 20 61 74 74 72 69 62 75 74 65 20 6e 6f  KEY attribute no
6bd0: 72 6d 61 6c 6c 79 20 63 72 65 61 74 65 73 20 61  rmally creates a
6be0: 20 55 4e 49 51 55 45 20 69 6e 64 65 78 20 6f 6e   UNIQUE index on
6bf0: 0a 74 68 65 20 63 6f 6c 75 6d 6e 20 6f 72 20 63  .the column or c
6c00: 6f 6c 75 6d 6e 73 20 74 68 61 74 20 61 72 65 20  olumns that are 
6c10: 73 70 65 63 69 66 69 65 64 20 61 73 20 74 68 65  specified as the
6c20: 20 50 52 49 4d 41 52 59 20 4b 45 59 2e 20 20 54   PRIMARY KEY.  T
6c30: 68 65 20 6f 6e 6c 79 0a 65 78 63 65 70 74 69 6f  he only.exceptio
6c40: 6e 20 74 6f 20 74 68 69 73 20 62 65 68 61 76 69  n to this behavi
6c50: 6f 72 20 69 73 20 73 70 65 63 69 61 6c 20 5b 49  or is special [I
6c60: 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b  NTEGER PRIMARY K
6c70: 45 59 5d 20 63 6f 6c 75 6d 6e 2c 0a 64 65 73 63  EY] column,.desc
6c80: 72 69 62 65 64 20 62 65 6c 6f 77 2e 0a 41 63 63  ribed below..Acc
6c90: 6f 72 64 69 6e 67 20 74 6f 20 74 68 65 20 53 51  ording to the SQ
6ca0: 4c 20 73 74 61 6e 64 61 72 64 2c 20 50 52 49 4d  L standard, PRIM
6cb0: 41 52 59 20 4b 45 59 20 73 68 6f 75 6c 64 20 69  ARY KEY should i
6cc0: 6d 70 6c 79 20 4e 4f 54 20 4e 55 4c 4c 2e 0a 55  mply NOT NULL..U
6cd0: 6e 66 6f 72 74 75 6e 61 74 65 6c 79 2c 20 64 75  nfortunately, du
6ce0: 65 20 74 6f 20 61 20 6c 6f 6e 67 2d 73 74 61 6e  e to a long-stan
6cf0: 64 69 6e 67 20 63 6f 64 69 6e 67 20 6f 76 65 72  ding coding over
6d00: 73 69 67 68 74 2c 20 74 68 69 73 20 69 73 20 6e  sight, this is n
6d10: 6f 74 20 0a 74 68 65 20 63 61 73 65 20 69 6e 20  ot .the case in 
6d20: 53 51 4c 69 74 65 2e 20 20 53 51 4c 69 74 65 20  SQLite.  SQLite 
6d30: 61 6c 6c 6f 77 73 20 4e 55 4c 4c 20 76 61 6c 75  allows NULL valu
6d40: 65 73 0a 69 6e 20 61 20 50 52 49 4d 41 52 59 20  es.in a PRIMARY 
6d50: 4b 45 59 20 63 6f 6c 75 6d 6e 2e 20 20 57 65 20  KEY column.  We 
6d60: 63 6f 75 6c 64 20 63 68 61 6e 67 65 20 53 51 4c  could change SQL
6d70: 69 74 65 20 74 6f 20 63 6f 6e 66 6f 72 6d 20 74  ite to conform t
6d80: 6f 20 74 68 65 0a 73 74 61 6e 64 61 72 64 20 28  o the.standard (
6d90: 61 6e 64 20 77 65 20 6d 69 67 68 74 20 64 6f 20  and we might do 
6da0: 73 6f 20 69 6e 20 74 68 65 20 66 75 74 75 72 65  so in the future
6db0: 29 2c 20 62 75 74 20 62 79 20 74 68 65 20 74 69  ), but by the ti
6dc0: 6d 65 20 74 68 65 0a 6f 76 65 72 73 69 67 68 74  me the.oversight
6dd0: 20 77 61 73 20 64 69 73 63 6f 76 65 72 65 64 2c   was discovered,
6de0: 20 53 51 4c 69 74 65 20 77 61 73 20 69 6e 20 73   SQLite was in s
6df0: 75 63 68 20 77 69 64 65 20 75 73 65 20 74 68 61  uch wide use tha
6e00: 74 20 77 65 20 66 65 61 72 65 64 0a 62 72 65 61  t we feared.brea
6e10: 6b 69 6e 67 20 6c 65 67 61 63 79 20 63 6f 64 65  king legacy code
6e20: 20 69 66 20 77 65 20 66 69 78 65 64 20 74 68 65   if we fixed the
6e30: 20 70 72 6f 62 6c 65 6d 2e 20 20 53 6f 20 66 6f   problem.  So fo
6e40: 72 20 6e 6f 77 20 77 65 20 68 61 76 65 0a 63 68  r now we have.ch
6e50: 6f 73 65 6e 20 74 6f 20 63 6f 6e 74 69 6e 75 65  osen to continue
6e60: 20 61 6c 6c 6f 77 69 6e 67 20 4e 55 4c 4c 73 20   allowing NULLs 
6e70: 69 6e 20 50 52 49 4d 41 52 59 20 4b 45 59 20 63  in PRIMARY KEY c
6e80: 6f 6c 75 6d 6e 73 2e 0a 44 65 76 65 6c 6f 70 65  olumns..Develope
6e90: 72 73 20 73 68 6f 75 6c 64 20 62 65 20 61 77 61  rs should be awa
6ea0: 72 65 2c 20 68 6f 77 65 76 65 72 2c 20 74 68 61  re, however, tha
6eb0: 74 20 77 65 20 6d 61 79 20 63 68 61 6e 67 65 20  t we may change 
6ec0: 53 51 4c 69 74 65 20 74 6f 0a 63 6f 6e 66 6f 72  SQLite to.confor
6ed0: 6d 20 74 6f 20 74 68 65 20 53 51 4c 20 73 74 61  m to the SQL sta
6ee0: 6e 64 61 72 64 20 69 6e 20 66 75 74 75 72 65 20  ndard in future 
6ef0: 61 6e 64 20 73 68 6f 75 6c 64 20 64 65 73 69 67  and should desig
6f00: 6e 20 6e 65 77 20 70 72 6f 67 72 61 6d 73 0a 61  n new programs.a
6f10: 63 63 6f 72 64 69 6e 67 6c 79 2e 3c 2f 70 3e 0a  ccordingly.</p>.
6f20: 0a 3c 70 3e 53 51 4c 69 74 65 20 75 73 65 73 20  .<p>SQLite uses 
6f30: 5b 64 79 6e 61 6d 69 63 20 74 79 70 69 6e 67 5d  [dynamic typing]
6f40: 20 69 6e 73 74 65 61 64 20 6f 66 20 73 74 61 74   instead of stat
6f50: 69 63 20 74 79 70 69 6e 67 2e 20 20 45 78 63 65  ic typing.  Exce
6f60: 70 74 20 66 6f 72 20 74 68 65 0a 73 70 65 63 69  pt for the.speci
6f70: 61 6c 20 63 61 73 65 20 6f 66 20 5b 49 4e 54 45  al case of [INTE
6f80: 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 5d  GER PRIMARY KEY]
6f90: 2c 20 53 51 4c 69 74 65 20 77 69 6c 6c 20 61 6c  , SQLite will al
6fa0: 6c 6f 77 20 76 61 6c 75 65 73 20 6f 66 20 61 6e  low values of an
6fb0: 79 0a 74 79 70 65 20 74 6f 20 62 65 20 73 74 6f  y.type to be sto
6fc0: 72 65 64 20 69 6e 20 61 6e 79 20 63 6f 6c 75 6d  red in any colum
6fd0: 6e 20 72 65 67 61 72 64 6c 65 73 73 20 6f 66 20  n regardless of 
6fe0: 74 68 65 20 64 65 63 6c 61 72 65 64 20 64 61 74  the declared dat
6ff0: 61 74 79 70 65 20 6f 66 0a 74 68 61 74 20 63 6f  atype of.that co
7000: 6c 75 6d 6e 2e 20 20 54 68 65 20 64 65 63 6c 61  lumn.  The decla
7010: 72 65 64 20 64 61 74 61 74 79 70 65 20 69 73 20  red datatype is 
7020: 61 20 5b 61 66 66 69 6e 69 74 79 20 7c 20 74 79  a [affinity | ty
7030: 70 65 20 61 66 66 69 6e 69 74 79 5d 20 74 68 61  pe affinity] tha
7040: 74 0a 53 51 4c 69 74 65 20 61 74 74 65 6d 70 74  t.SQLite attempt
7050: 73 20 74 6f 20 63 6f 6d 70 6c 79 20 77 69 74 68  s to comply with
7060: 2c 20 62 75 74 20 74 68 65 20 6f 70 65 72 61 74  , but the operat
7070: 69 6f 6e 20 77 69 6c 6c 20 70 72 6f 63 65 65 64  ion will proceed
7080: 20 65 76 65 6e 20 69 66 0a 63 6f 6d 70 6c 69 61   even if.complia
7090: 6e 63 65 20 69 73 20 6e 6f 74 20 70 6f 73 73 69  nce is not possi
70a0: 62 6c 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20  ble.</p>..<p>If 
70b0: 74 68 65 20 22 54 45 4d 50 22 20 6f 72 20 22 54  the "TEMP" or "T
70c0: 45 4d 50 4f 52 41 52 59 22 20 6b 65 79 77 6f 72  EMPORARY" keywor
70d0: 64 20 6f 63 63 75 72 73 20 69 6e 20 62 65 74 77  d occurs in betw
70e0: 65 65 6e 20 22 43 52 45 41 54 45 22 0a 61 6e 64  een "CREATE".and
70f0: 20 22 54 41 42 4c 45 22 20 74 68 65 6e 20 74 68   "TABLE" then th
7100: 65 20 74 61 62 6c 65 20 74 68 61 74 20 69 73 20  e table that is 
7110: 63 72 65 61 74 65 64 20 69 73 20 6f 6e 6c 79 20  created is only 
7120: 76 69 73 69 62 6c 65 0a 77 69 74 68 69 6e 20 74  visible.within t
7130: 68 61 74 20 73 61 6d 65 20 64 61 74 61 62 61 73  hat same databas
7140: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 0a 61 6e 64  e connection.and
7150: 20 69 73 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c   is automaticall
7160: 79 20 64 65 6c 65 74 65 64 20 77 68 65 6e 0a 74  y deleted when.t
7170: 68 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  he database conn
7180: 65 63 74 69 6f 6e 20 69 73 20 63 6c 6f 73 65 64  ection is closed
7190: 2e 20 20 41 6e 79 20 69 6e 64 69 63 65 73 20 63  .  Any indices c
71a0: 72 65 61 74 65 64 20 6f 6e 20 61 20 74 65 6d 70  reated on a temp
71b0: 6f 72 61 72 79 20 74 61 62 6c 65 0a 61 72 65 20  orary table.are 
71c0: 61 6c 73 6f 20 74 65 6d 70 6f 72 61 72 79 2e 20  also temporary. 
71d0: 20 54 65 6d 70 6f 72 61 72 79 20 74 61 62 6c 65   Temporary table
71e0: 73 20 61 6e 64 20 69 6e 64 69 63 65 73 20 61 72  s and indices ar
71f0: 65 20 73 74 6f 72 65 64 20 69 6e 20 61 0a 73 65  e stored in a.se
7200: 70 61 72 61 74 65 20 66 69 6c 65 20 64 69 73 74  parate file dist
7210: 69 6e 63 74 20 66 72 6f 6d 20 74 68 65 20 6d 61  inct from the ma
7220: 69 6e 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  in database file
7230: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 20 49 66 20 61 20  .</p>..<p> If a 
7240: 26 6c 74 3b 64 61 74 61 62 61 73 65 2d 6e 61 6d  &lt;database-nam
7250: 65 26 67 74 3b 20 69 73 20 73 70 65 63 69 66 69  e&gt; is specifi
7260: 65 64 2c 20 74 68 65 6e 20 74 68 65 20 74 61 62  ed, then the tab
7270: 6c 65 20 69 73 20 63 72 65 61 74 65 64 20 69 6e  le is created in
7280: 20 0a 74 68 65 20 6e 61 6d 65 64 20 64 61 74 61   .the named data
7290: 62 61 73 65 2e 20 49 74 20 69 73 20 61 6e 20 65  base. It is an e
72a0: 72 72 6f 72 20 74 6f 20 73 70 65 63 69 66 79 20  rror to specify 
72b0: 62 6f 74 68 20 61 20 26 6c 74 3b 64 61 74 61 62  both a &lt;datab
72c0: 61 73 65 2d 6e 61 6d 65 26 67 74 3b 0a 61 6e 64  ase-name&gt;.and
72d0: 20 74 68 65 20 54 45 4d 50 20 6b 65 79 77 6f 72   the TEMP keywor
72e0: 64 2c 20 75 6e 6c 65 73 73 20 74 68 65 20 26 6c  d, unless the &l
72f0: 74 3b 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 26  t;database-name&
7300: 67 74 3b 20 69 73 20 22 74 65 6d 70 22 2e 20 49  gt; is "temp". I
7310: 66 20 6e 6f 0a 64 61 74 61 62 61 73 65 20 6e 61  f no.database na
7320: 6d 65 20 69 73 20 73 70 65 63 69 66 69 65 64 2c  me is specified,
7330: 20 61 6e 64 20 74 68 65 20 54 45 4d 50 20 6b 65   and the TEMP ke
7340: 79 77 6f 72 64 20 69 73 20 6e 6f 74 20 70 72 65  yword is not pre
7350: 73 65 6e 74 2c 0a 74 68 65 20 74 61 62 6c 65 20  sent,.the table 
7360: 69 73 20 63 72 65 61 74 65 64 20 69 6e 20 74 68  is created in th
7370: 65 20 6d 61 69 6e 20 64 61 74 61 62 61 73 65 2e  e main database.
7380: 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 6f 70 74  </p>..<p>The opt
7390: 69 6f 6e 61 6c 20 5b 63 6f 6e 66 6c 69 63 74 20  ional [conflict 
73a0: 63 6c 61 75 73 65 5d 20 66 6f 6c 6c 6f 77 69 6e  clause] followin
73b0: 67 20 65 61 63 68 20 63 6f 6e 73 74 72 61 69 6e  g each constrain
73c0: 74 0a 61 6c 6c 6f 77 73 20 74 68 65 20 73 70 65  t.allows the spe
73d0: 63 69 66 69 63 61 74 69 6f 6e 20 6f 66 20 61 6e  cification of an
73e0: 20 61 6c 74 65 72 6e 61 74 69 76 65 20 64 65 66   alternative def
73f0: 61 75 6c 74 0a 63 6f 6e 73 74 72 61 69 6e 74 20  ault.constraint 
7400: 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75 74  conflict resolut
7410: 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 20 66 6f  ion algorithm fo
7420: 72 20 74 68 61 74 20 63 6f 6e 73 74 72 61 69 6e  r that constrain
7430: 74 2e 0a 49 66 20 6e 6f 20 63 6f 6e 66 6c 69 63  t..If no conflic
7440: 74 20 63 6c 61 75 73 65 20 69 73 20 73 70 65 63  t clause is spec
7450: 69 66 69 65 64 2c 20 74 68 65 20 41 42 4f 52 54  ified, the ABORT
7460: 20 61 6c 67 6f 72 69 74 68 6d 20 69 73 20 75 73   algorithm is us
7470: 65 64 2e 0a 44 69 66 66 65 72 65 6e 74 20 63 6f  ed..Different co
7480: 6e 73 74 72 61 69 6e 74 73 20 77 69 74 68 69 6e  nstraints within
7490: 20 74 68 65 20 73 61 6d 65 0a 74 61 62 6c 65 20   the same.table 
74a0: 6d 61 79 20 68 61 76 65 20 64 69 66 66 65 72 65  may have differe
74b0: 6e 74 20 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f  nt conflict reso
74c0: 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d  lution algorithm
74d0: 73 2e 0a 49 66 20 61 6e 20 5b 49 4e 53 45 52 54  s..If an [INSERT
74e0: 5d 20 6f 72 20 5b 55 50 44 41 54 45 5d 20 73 74  ] or [UPDATE] st
74f0: 61 74 65 6d 65 6e 74 20 73 70 65 63 69 66 69 65  atement specifie
7500: 73 20 61 20 63 6f 6e 66 6c 69 63 74 0a 72 65 73  s a conflict.res
7510: 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68  olution algorith
7520: 6d 2c 20 74 68 65 6e 20 74 68 65 20 61 6c 67 6f  m, then the algo
7530: 72 69 74 68 6d 20 73 70 65 63 69 66 69 65 64 20  rithm specified 
7540: 6f 6e 20 74 68 65 20 49 4e 53 45 52 54 20 6f 72  on the INSERT or
7550: 0a 55 50 44 41 54 45 20 73 74 61 74 65 6d 65 6e  .UPDATE statemen
7560: 74 20 6f 76 65 72 72 69 64 65 73 20 74 68 65 20  t overrides the 
7570: 61 6c 67 6f 72 69 74 68 6d 20 73 70 65 63 69 66  algorithm specif
7580: 69 65 64 20 69 6e 20 74 68 65 20 0a 43 52 45 41  ied in the .CREA
7590: 54 45 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65  TE TABLE stateme
75a0: 6e 74 2e 0a 53 65 65 20 74 68 65 20 73 65 63 74  nt..See the sect
75b0: 69 6f 6e 20 74 69 74 6c 65 64 0a 5b 4f 4e 20 43  ion titled.[ON C
75c0: 4f 4e 46 4c 49 43 54 5d 20 66 6f 72 20 61 64 64  ONFLICT] for add
75d0: 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74  itional informat
75e0: 69 6f 6e 2e 3c 2f 70 3e 0a 0a 3c 70 3e 43 48 45  ion.</p>..<p>CHE
75f0: 43 4b 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 61  CK constraints a
7600: 72 65 20 73 75 70 70 6f 72 74 65 64 20 61 73 20  re supported as 
7610: 6f 66 20 5b 76 65 72 73 69 6f 6e 20 33 2e 33 2e  of [version 3.3.
7620: 30 5d 2e 20 20 50 72 69 6f 72 0a 74 6f 20 76 65  0].  Prior.to ve
7630: 72 73 69 6f 6e 20 33 2e 33 2e 30 2c 20 43 48 45  rsion 3.3.0, CHE
7640: 43 4b 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 77  CK constraints w
7650: 65 72 65 20 70 61 72 73 65 64 20 62 75 74 20 6e  ere parsed but n
7660: 6f 74 20 65 6e 66 6f 72 63 65 64 2e 3c 2f 70 3e  ot enforced.</p>
7670: 0a 0a 3c 70 3e 54 68 65 20 6e 75 6d 62 65 72 20  ..<p>The number 
7680: 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 61 20  of columns in a 
7690: 74 61 62 6c 65 20 69 73 20 6c 69 6d 69 74 65 64  table is limited
76a0: 20 62 79 20 74 68 65 0a 5b 53 51 4c 49 54 45 5f   by the.[SQLITE_
76b0: 4d 41 58 5f 43 4f 4c 55 4d 4e 5d 20 63 6f 6d 70  MAX_COLUMN] comp
76c0: 69 6c 65 2d 74 69 6d 65 20 70 61 72 61 6d 65 74  ile-time paramet
76d0: 65 72 2e 0a 41 20 73 69 6e 67 6c 65 20 72 6f 77  er..A single row
76e0: 20 6f 66 20 61 20 74 61 62 6c 65 20 63 61 6e 6e   of a table cann
76f0: 6f 74 20 73 74 6f 72 65 20 6d 6f 72 65 20 74 68  ot store more th
7700: 61 6e 0a 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 4c  an.[SQLITE_MAX_L
7710: 45 4e 47 54 48 5d 20 62 79 74 65 73 20 6f 66 20  ENGTH] bytes of 
7720: 64 61 74 61 2e 0a 42 6f 74 68 20 6f 66 20 74 68  data..Both of th
7730: 65 73 65 20 6c 69 6d 69 74 73 20 63 61 6e 20 62  ese limits can b
7740: 65 20 6c 6f 77 65 72 65 64 20 61 74 20 72 75 6e  e lowered at run
7750: 74 69 6d 65 20 75 73 69 6e 67 20 74 68 65 0a 5b  time using the.[
7760: 73 71 6c 69 74 65 33 5f 6c 69 6d 69 74 28 29 5d  sqlite3_limit()]
7770: 20 43 2f 43 2b 2b 20 69 6e 74 65 72 66 61 63 65   C/C++ interface
7780: 2e 3c 2f 70 3e 0a 0a 0a 3c 70 3e 54 68 65 20 43  .</p>...<p>The C
7790: 52 45 41 54 45 20 54 41 42 4c 45 20 41 53 20 66  REATE TABLE AS f
77a0: 6f 72 6d 20 64 65 66 69 6e 65 73 20 74 68 65 20  orm defines the 
77b0: 74 61 62 6c 65 20 74 6f 20 62 65 0a 74 68 65 20  table to be.the 
77c0: 72 65 73 75 6c 74 20 73 65 74 20 6f 66 20 61 20  result set of a 
77d0: 71 75 65 72 79 2e 20 20 54 68 65 20 6e 61 6d 65  query.  The name
77e0: 73 20 6f 66 20 74 68 65 20 74 61 62 6c 65 20 63  s of the table c
77f0: 6f 6c 75 6d 6e 73 20 61 72 65 0a 74 68 65 20 6e  olumns are.the n
7800: 61 6d 65 73 20 6f 66 20 74 68 65 20 63 6f 6c 75  ames of the colu
7810: 6d 6e 73 20 69 6e 20 74 68 65 20 72 65 73 75 6c  mns in the resul
7820: 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 74 68  t.</p>..<p>If th
7830: 65 20 6f 70 74 69 6f 6e 61 6c 20 49 46 20 4e 4f  e optional IF NO
7840: 54 20 45 58 49 53 54 53 20 63 6c 61 75 73 65 20  T EXISTS clause 
7850: 69 73 20 70 72 65 73 65 6e 74 20 61 6e 64 20 61  is present and a
7860: 6e 6f 74 68 65 72 20 74 61 62 6c 65 0a 77 69 74  nother table.wit
7870: 68 20 74 68 65 20 73 61 6d 65 20 6e 61 6d 65 20  h the same name 
7880: 61 6c 65 61 64 79 20 65 78 69 73 74 73 2c 20 74  aleady exists, t
7890: 68 65 6e 20 74 68 69 73 20 63 6f 6d 6d 61 6e 64  hen this command
78a0: 20 62 65 63 6f 6d 65 73 20 61 20 6e 6f 2d 6f 70   becomes a no-op
78b0: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 61 62 6c 65 73  .</p>..<p>Tables
78c0: 20 61 72 65 20 72 65 6d 6f 76 65 64 20 75 73 69   are removed usi
78d0: 6e 67 20 74 68 65 20 3c 61 20 68 72 65 66 3d 22  ng the <a href="
78e0: 6c 61 6e 67 5f 64 72 6f 70 74 61 62 6c 65 2e 68  lang_droptable.h
78f0: 74 6d 6c 22 3e 44 52 4f 50 20 54 41 42 4c 45 3c  tml">DROP TABLE<
7900: 2f 61 3e 20 0a 73 74 61 74 65 6d 65 6e 74 2e 20  /a> .statement. 
7910: 20 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 68 64 5f 66   </p>..<tcl>hd_f
7920: 72 61 67 6d 65 6e 74 20 72 6f 77 69 64 20 7b 49  ragment rowid {I
7930: 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b  NTEGER PRIMARY K
7940: 45 59 7d 20 52 4f 57 49 44 20 72 6f 77 69 64 3c  EY} ROWID rowid<
7950: 2f 74 63 6c 3e 0a 3c 68 33 3e 52 4f 57 49 44 73  /tcl>.<h3>ROWIDs
7960: 20 61 6e 64 20 74 68 65 20 49 4e 54 45 47 45 52   and the INTEGER
7970: 20 50 52 49 4d 41 52 59 20 4b 45 59 3c 2f 68 33   PRIMARY KEY</h3
7980: 3e 0a 0a 3c 70 3e 45 76 65 72 79 20 72 6f 77 20  >..<p>Every row 
7990: 6f 66 20 65 76 65 72 79 20 53 51 4c 69 74 65 20  of every SQLite 
79a0: 74 61 62 6c 65 20 68 61 73 20 61 20 36 34 2d 62  table has a 64-b
79b0: 69 74 20 73 69 67 6e 65 64 20 69 6e 74 65 67 65  it signed intege
79c0: 72 20 6b 65 79 20 0a 74 68 61 74 20 69 73 20 75  r key .that is u
79d0: 6e 69 71 75 65 20 77 69 74 68 69 6e 20 74 68 65  nique within the
79e0: 20 73 61 6d 65 20 74 61 62 6c 65 2e 0a 54 68 69   same table..Thi
79f0: 73 20 69 6e 74 65 67 65 72 20 69 73 20 75 73 75  s integer is usu
7a00: 61 6c 6c 79 20 63 61 6c 6c 65 64 20 74 68 65 20  ally called the 
7a10: 22 72 6f 77 69 64 22 2e 20 20 54 68 65 20 72 6f  "rowid".  The ro
7a20: 77 69 64 20 69 73 20 74 68 65 20 61 63 74 75 61  wid is the actua
7a30: 6c 20 6b 65 79 20 75 73 65 64 0a 69 6e 20 74 68  l key used.in th
7a40: 65 20 42 2d 54 72 65 65 20 74 68 61 74 20 69 6d  e B-Tree that im
7a50: 70 6c 65 6d 65 6e 74 73 20 61 6e 20 53 51 4c 69  plements an SQLi
7a60: 74 65 20 74 61 62 6c 65 2e 20 20 52 6f 77 73 20  te table.  Rows 
7a70: 61 72 65 20 73 74 6f 72 65 64 20 69 6e 0a 72 6f  are stored in.ro
7a80: 77 69 64 20 6f 72 64 65 72 2e 20 54 68 65 0a 72  wid order. The.r
7a90: 6f 77 69 64 20 76 61 6c 75 65 20 63 61 6e 20 62  owid value can b
7aa0: 65 20 61 63 63 65 73 73 65 64 20 75 73 69 6e 67  e accessed using
7ab0: 20 6f 6e 65 20 6f 66 20 74 68 65 20 73 70 65 63   one of the spec
7ac0: 69 61 6c 20 6e 61 6d 65 73 0a 22 3c 62 3e 52 4f  ial names."<b>RO
7ad0: 57 49 44 3c 2f 62 3e 22 2c 20 22 3c 62 3e 4f 49  WID</b>", "<b>OI
7ae0: 44 3c 2f 62 3e 22 2c 20 6f 72 20 22 3c 62 3e 5f  D</b>", or "<b>_
7af0: 52 4f 57 49 44 5f 3c 2f 62 3e 22 2e 3c 2f 70 3e  ROWID_</b>".</p>
7b00: 0a 0a 3c 70 3e 0a 49 66 20 61 20 63 6f 6c 75 6d  ..<p>.If a colum
7b10: 6e 20 69 73 20 64 65 63 6c 61 72 65 64 20 74 6f  n is declared to
7b20: 20 62 65 20 61 6e 20 49 4e 54 45 47 45 52 20 50   be an INTEGER P
7b30: 52 49 4d 41 52 59 20 4b 45 59 2c 20 74 68 65 6e  RIMARY KEY, then
7b40: 20 74 68 61 74 20 63 6f 6c 75 6d 6e 20 69 73 20   that column is 
7b50: 6e 6f 74 0a 61 20 22 72 65 61 6c 22 20 64 61 74  not.a "real" dat
7b60: 61 62 61 73 65 20 63 6f 6c 75 6d 6e 20 62 75 74  abase column but
7b70: 20 69 6e 73 74 65 61 64 20 62 65 63 6f 6d 65 73   instead becomes
7b80: 0a 61 6e 20 61 6c 69 61 73 20 66 6f 72 20 74 68  .an alias for th
7b90: 65 20 72 6f 77 69 64 2e 20 20 55 6e 6c 69 6b 65  e rowid.  Unlike
7ba0: 20 6e 6f 72 6d 61 6c 20 53 51 4c 69 74 65 20 63   normal SQLite c
7bb0: 6f 6c 75 6d 6e 73 2c 20 74 68 65 20 72 6f 77 69  olumns, the rowi
7bc0: 64 0a 6d 75 73 74 20 62 65 20 61 20 6e 6f 6e 2d  d.must be a non-
7bd0: 4e 55 4c 4c 20 69 6e 74 65 67 65 72 20 76 61 6c  NULL integer val
7be0: 75 65 2e 20 20 54 68 65 20 72 6f 77 69 64 20 69  ue.  The rowid i
7bf0: 73 20 6e 6f 74 20 61 62 6c 65 20 74 6f 20 68 6f  s not able to ho
7c00: 6c 64 0a 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e  ld.floating poin
7c10: 74 20 76 61 6c 75 65 73 2c 20 73 74 72 69 6e 67  t values, string
7c20: 73 2c 20 42 4c 4f 42 73 2c 20 6f 72 20 4e 55 4c  s, BLOBs, or NUL
7c30: 4c 73 2e 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71  Ls.</p>..<blockq
7c40: 75 6f 74 65 3e 3c 69 3e 0a 41 6e 20 49 4e 54 45  uote><i>.An INTE
7c50: 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 20  GER PRIMARY KEY 
7c60: 63 6f 6c 75 6d 6e 20 69 73 20 61 6e 20 61 6c 69  column is an ali
7c70: 61 73 20 66 6f 72 20 74 68 65 20 36 34 2d 62 69  as for the 64-bi
7c80: 74 20 73 69 67 6e 65 64 20 69 6e 74 65 67 65 72  t signed integer
7c90: 20 72 6f 77 69 64 2e 0a 3c 2f 69 3e 3c 2f 62 6c   rowid..</i></bl
7ca0: 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70 3e 41 6e  ockquote>..<p>An
7cb0: 20 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59   INTEGER PRIMARY
7cc0: 20 4b 45 59 20 63 6f 6c 75 6d 6e 20 63 61 6e 20   KEY column can 
7cd0: 61 6c 73 6f 20 69 6e 63 6c 75 64 65 20 74 68 65  also include the
7ce0: 0a 6b 65 79 77 6f 72 64 20 5b 41 55 54 4f 49 4e  .keyword [AUTOIN
7cf0: 43 52 45 4d 45 4e 54 5d 2e 20 20 54 68 65 20 5b  CREMENT].  The [
7d00: 41 55 54 4f 49 4e 43 52 45 4d 45 4e 54 5d 20 6b  AUTOINCREMENT] k
7d10: 65 79 77 6f 72 64 20 6d 6f 64 69 66 69 65 64 20  eyword modified 
7d20: 74 68 65 20 77 61 79 0a 74 68 61 74 20 42 2d 54  the way.that B-T
7d30: 72 65 65 20 6b 65 79 73 20 61 72 65 20 61 75 74  ree keys are aut
7d40: 6f 6d 61 74 69 63 61 6c 6c 79 20 67 65 6e 65 72  omatically gener
7d50: 61 74 65 64 2e 20 20 41 64 64 69 74 69 6f 6e 61  ated.  Additiona
7d60: 6c 20 64 65 74 61 69 6c 0a 6f 6e 20 61 75 74 6f  l detail.on auto
7d70: 6d 61 74 69 63 20 42 2d 54 72 65 65 20 6b 65 79  matic B-Tree key
7d80: 20 67 65 6e 65 72 61 74 69 6f 6e 20 69 73 20 61   generation is a
7d90: 76 61 69 6c 61 62 6c 65 0a 3c 61 20 68 72 65 66  vailable.<a href
7da0: 3d 22 61 75 74 6f 69 6e 63 2e 68 74 6d 6c 22 3e  ="autoinc.html">
7db0: 73 65 70 61 72 61 74 65 6c 79 3c 2f 61 3e 2e 3c  separately</a>.<
7dc0: 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 73 70 65 63  /p>..<p>The spec
7dd0: 69 61 6c 20 62 65 68 61 76 69 6f 72 20 6f 66 20  ial behavior of 
7de0: 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59 20  INTEGER PRIMARY 
7df0: 4b 45 59 0a 69 73 20 6f 6e 6c 79 20 61 76 61 69  KEY.is only avai
7e00: 6c 61 62 6c 65 20 69 66 20 74 68 65 20 74 79 70  lable if the typ
7e10: 65 20 6e 61 6d 65 20 69 73 20 65 78 61 63 74 6c  e name is exactl
7e20: 79 20 22 49 4e 54 45 47 45 52 22 20 28 69 6e 20  y "INTEGER" (in 
7e30: 61 6e 79 20 6d 69 78 74 75 72 65 0a 6f 66 20 75  any mixture.of u
7e40: 70 70 65 72 20 61 6e 64 20 6c 6f 77 65 72 20 63  pper and lower c
7e50: 61 73 65 2e 29 20 20 4f 74 68 65 72 20 69 6e 74  ase.)  Other int
7e60: 65 67 65 72 20 74 79 70 65 20 6e 61 6d 65 73 0a  eger type names.
7e70: 6c 69 6b 65 20 22 49 4e 54 22 20 6f 72 20 22 42  like "INT" or "B
7e80: 49 47 49 4e 54 22 20 6f 72 20 22 53 48 4f 52 54  IGINT" or "SHORT
7e90: 20 49 4e 54 45 47 45 52 22 20 6f 72 20 22 55 4e   INTEGER" or "UN
7ea0: 53 49 47 4e 45 44 20 49 4e 54 45 47 45 52 22 0a  SIGNED INTEGER".
7eb0: 63 61 75 73 65 73 20 74 68 65 20 70 72 69 6d 61  causes the prima
7ec0: 72 79 20 6b 65 79 20 63 6f 6c 75 6d 6e 20 74 6f  ry key column to
7ed0: 20 62 65 68 61 76 65 20 61 73 20 61 6e 20 6f 72   behave as an or
7ee0: 64 69 6e 61 72 79 20 74 61 62 6c 65 20 63 6f 6c  dinary table col
7ef0: 75 6d 6e 20 77 69 74 68 0a 69 6e 74 65 67 65 72  umn with.integer
7f00: 20 5b 61 66 66 69 6e 69 74 79 5d 20 61 6e 64 20   [affinity] and 
7f10: 61 20 75 6e 69 71 75 65 20 69 6e 64 65 78 2c 20  a unique index, 
7f20: 6e 6f 74 20 61 73 20 61 6e 20 61 6c 69 61 73 20  not as an alias 
7f30: 66 6f 72 20 74 68 65 20 72 6f 77 69 64 2e 0a 54  for the rowid..T
7f40: 68 65 20 73 70 65 63 69 61 6c 20 62 65 68 61 76  he special behav
7f50: 69 6f 72 20 6f 66 20 49 4e 54 45 47 45 52 20 50  ior of INTEGER P
7f60: 52 49 4d 41 52 59 20 4b 45 59 20 69 73 20 6f 6e  RIMARY KEY is on
7f70: 6c 79 20 61 76 61 69 6c 61 62 6c 65 20 69 66 20  ly available if 
7f80: 74 68 65 0a 70 72 69 6d 61 72 79 20 6b 65 79 20  the.primary key 
7f90: 69 73 20 61 20 73 69 6e 67 6c 65 20 63 6f 6c 75  is a single colu
7fa0: 6d 6e 2e 20 20 4d 75 6c 74 69 2d 63 6f 6c 75 6d  mn.  Multi-colum
7fb0: 6e 20 70 72 69 6d 61 72 79 20 6b 65 79 73 20 64  n primary keys d
7fc0: 6f 20 6e 6f 74 20 62 65 63 6f 6d 65 0a 61 6c 69  o not become.ali
7fd0: 61 73 65 73 20 66 6f 72 20 74 68 65 20 72 6f 77  ases for the row
7fe0: 69 64 2e 0a 54 68 65 20 41 55 54 4f 49 4e 43 52  id..The AUTOINCR
7ff0: 45 4d 45 4e 54 20 6b 65 79 77 6f 72 64 20 6f 6e  EMENT keyword on
8000: 6c 79 20 77 6f 72 6b 73 20 6f 6e 20 61 20 63 6f  ly works on a co
8010: 6c 75 6d 6e 20 74 68 61 74 20 69 73 20 61 6e 20  lumn that is an 
8020: 61 6c 69 61 73 0a 66 6f 72 20 74 68 65 20 72 6f  alias.for the ro
8030: 77 69 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 4e 6f 74  wid.</p>..<p>Not
8040: 65 20 74 68 61 74 20 73 65 61 72 63 68 65 73 20  e that searches 
8050: 61 67 61 69 6e 73 74 20 61 20 72 6f 77 69 64 20  against a rowid 
8060: 61 72 65 20 67 65 6e 65 72 61 6c 6c 79 20 61 62  are generally ab
8070: 6f 75 74 20 74 77 69 63 65 20 61 73 0a 66 61 73  out twice as.fas
8080: 74 20 61 73 20 73 65 61 72 63 68 65 73 20 61 67  t as searches ag
8090: 61 69 6e 73 74 20 61 6e 79 20 6f 74 68 65 72 20  ainst any other 
80a0: 50 52 49 4d 41 52 59 20 4b 45 59 20 6f 72 20 69  PRIMARY KEY or i
80b0: 6e 64 65 78 65 64 20 76 61 6c 75 65 2e 0a 3c 2f  ndexed value..</
80c0: 70 3e 0a 0a 3c 70 3e 3c 62 3e 47 6f 6f 66 79 20  p>..<p><b>Goofy 
80d0: 62 65 68 61 76 69 6f 72 20 61 6c 65 72 74 3a 3c  behavior alert:<
80e0: 2f 62 3e 20 20 54 68 65 20 66 6f 6c 6c 6f 77 69  /b>  The followi
80f0: 6e 67 20 74 68 72 65 65 20 64 65 63 6c 61 72 61  ng three declara
8100: 74 69 6f 6e 73 20 61 6c 6c 20 63 61 75 73 65 0a  tions all cause.
8110: 74 68 65 20 63 6f 6c 75 6d 6e 20 22 78 22 20 62  the column "x" b
8120: 65 20 61 6e 20 61 6c 69 61 73 20 66 6f 72 20 74  e an alias for t
8130: 68 65 20 72 6f 77 69 64 3a 3c 2f 70 3e 0a 0a 3c  he rowid:</p>..<
8140: 75 6c 3e 0a 3c 6c 69 3e 3c 74 74 3e 43 52 45 41  ul>.<li><tt>CREA
8150: 54 45 20 54 41 42 4c 45 20 74 28 78 20 49 4e 54  TE TABLE t(x INT
8160: 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59  EGER PRIMARY KEY
8170: 20 41 53 43 2c 20 79 2c 20 7a 29 3b 3c 2f 74 74   ASC, y, z);</tt
8180: 3e 0a 3c 6c 69 3e 3c 74 74 3e 43 52 45 41 54 45  >.<li><tt>CREATE
8190: 20 54 41 42 4c 45 20 74 28 78 20 49 4e 54 45 47   TABLE t(x INTEG
81a0: 45 52 2c 20 79 2c 20 7a 2c 20 50 52 49 4d 41 52  ER, y, z, PRIMAR
81b0: 59 20 4b 45 59 28 78 20 41 53 43 29 29 3b 3c 2f  Y KEY(x ASC));</
81c0: 74 74 3e 0a 3c 6c 69 3e 3c 74 74 3e 43 52 45 41  tt>.<li><tt>CREA
81d0: 54 45 20 54 41 42 4c 45 20 74 28 78 20 49 4e 54  TE TABLE t(x INT
81e0: 45 47 45 52 2c 20 79 2c 20 7a 2c 20 50 52 49 4d  EGER, y, z, PRIM
81f0: 41 52 59 20 4b 45 59 28 78 20 44 45 53 43 29 29  ARY KEY(x DESC))
8200: 3b 3c 2f 74 74 3e 0a 3c 2f 75 6c 3e 0a 0a 3c 70  ;</tt>.</ul>..<p
8210: 3e 42 75 74 2c 20 69 6e 20 63 6f 6e 74 72 61 73  >But, in contras
8220: 74 2c 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  t, the following
8230: 20 64 65 63 6c 61 72 61 74 69 6f 6e 20 64 6f 65   declaration doe
8240: 73 20 3c 75 3e 6e 6f 74 3c 2f 75 3e 20 72 65 73  s <u>not</u> res
8250: 75 6c 74 20 69 6e 0a 22 78 22 20 62 65 69 6e 67  ult in."x" being
8260: 20 61 6e 20 61 6c 69 61 73 20 66 6f 72 20 74 68   an alias for th
8270: 65 20 72 6f 77 69 64 3a 3c 2f 70 3e 0a 0a 3c 75  e rowid:</p>..<u
8280: 6c 3e 0a 3c 6c 69 3e 3c 74 74 3e 43 52 45 41 54  l>.<li><tt>CREAT
8290: 45 20 54 41 42 4c 45 20 74 28 78 20 49 4e 54 45  E TABLE t(x INTE
82a0: 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 20  GER PRIMARY KEY 
82b0: 44 45 53 43 2c 20 79 2c 20 7a 29 3b 3c 2f 74 74  DESC, y, z);</tt
82c0: 3e 0a 3c 2f 75 6c 3e 0a 0a 3c 70 3e 54 68 69 73  >.</ul>..<p>This
82d0: 20 61 73 79 6d 6d 65 74 72 69 63 61 6c 20 62 65   asymmetrical be
82e0: 68 61 76 69 6f 72 20 69 73 20 75 6e 66 6f 72 74  havior is unfort
82f0: 75 6e 61 74 65 20 61 6e 64 20 69 73 20 72 65 61  unate and is rea
8300: 6c 6c 79 20 64 75 65 20 74 6f 20 61 20 62 75 67  lly due to a bug
8310: 0a 69 6e 20 74 68 65 20 70 61 72 73 65 72 20 69  .in the parser i
8320: 6e 20 65 61 72 6c 79 20 76 65 72 73 69 6f 6e 73  n early versions
8330: 20 6f 66 20 53 51 4c 69 74 65 2e 20 20 42 75 74   of SQLite.  But
8340: 20 66 69 78 69 6e 67 20 74 68 65 20 62 75 67 20   fixing the bug 
8350: 77 6f 75 6c 64 0a 72 65 73 75 6c 74 20 69 6e 20  would.result in 
8360: 76 65 72 79 20 73 65 72 69 6f 75 73 20 62 61 63  very serious bac
8370: 6b 77 61 72 64 73 20 69 6e 63 6f 6d 70 61 74 69  kwards incompati
8380: 62 69 6c 69 74 69 65 73 2e 20 20 54 68 65 20 53  bilities.  The S
8390: 51 4c 69 74 65 20 64 65 76 65 6c 6f 70 65 72 73  QLite developers
83a0: 0a 66 65 65 6c 20 74 68 61 74 20 67 6f 6f 66 79  .feel that goofy
83b0: 20 62 65 68 61 76 69 6f 72 20 69 6e 20 61 6e 20   behavior in an 
83c0: 63 6f 72 6e 65 72 20 63 61 73 65 20 69 73 20 66  corner case is f
83d0: 61 72 20 62 65 74 74 65 72 20 74 68 61 6e 0a 61  ar better than.a
83e0: 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 62   compatibility b
83f0: 72 65 61 6b 2c 20 73 6f 20 74 68 65 20 6f 72 69  reak, so the ori
8400: 67 69 6e 61 6c 20 62 65 68 61 76 69 6f 72 20 69  ginal behavior i
8410: 73 20 72 65 74 61 69 6e 65 64 2e 3c 2f 70 3e 0a  s retained.</p>.
8420: 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23  .<tcl>.#########
8430: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8440: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8450: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8460: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8470: 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b 43  #####.Section {C
8480: 52 45 41 54 45 20 54 52 49 47 47 45 52 7d 20 63  REATE TRIGGER} c
8490: 72 65 61 74 65 74 72 69 67 67 65 72 20 7b 7b 43  reatetrigger {{C
84a0: 52 45 41 54 45 20 54 52 49 47 47 45 52 7d 7d 0a  REATE TRIGGER}}.
84b0: 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 63  .BubbleDiagram c
84c0: 72 65 61 74 65 2d 74 72 69 67 67 65 72 2d 73 74  reate-trigger-st
84d0: 6d 74 20 31 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e  mt 1.</tcl>..<p>
84e0: 54 68 65 20 43 52 45 41 54 45 20 54 52 49 47 47  The CREATE TRIGG
84f0: 45 52 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20  ER statement is 
8500: 75 73 65 64 20 74 6f 20 61 64 64 20 74 72 69 67  used to add trig
8510: 67 65 72 73 20 74 6f 20 74 68 65 20 0a 64 61 74  gers to the .dat
8520: 61 62 61 73 65 20 73 63 68 65 6d 61 2e 20 54 72  abase schema. Tr
8530: 69 67 67 65 72 73 20 61 72 65 20 64 61 74 61 62  iggers are datab
8540: 61 73 65 20 6f 70 65 72 61 74 69 6f 6e 73 20 0a  ase operations .
8550: 74 68 61 74 20 61 72 65 20 61 75 74 6f 6d 61 74  that are automat
8560: 69 63 61 6c 6c 79 20 70 65 72 66 6f 72 6d 65 64  ically performed
8570: 20 77 68 65 6e 20 61 20 73 70 65 63 69 66 69 65   when a specifie
8580: 64 20 64 61 74 61 62 61 73 65 20 65 76 65 6e 74  d database event
8590: 0a 6f 63 63 75 72 73 2e 20 20 3c 2f 70 3e 0a 0a  .occurs.  </p>..
85a0: 3c 70 3e 41 20 74 72 69 67 67 65 72 20 6d 61 79  <p>A trigger may
85b0: 20 62 65 20 73 70 65 63 69 66 69 65 64 20 74 6f   be specified to
85c0: 20 66 69 72 65 20 77 68 65 6e 65 76 65 72 20 61   fire whenever a
85d0: 20 5b 44 45 4c 45 54 45 5d 2c 20 5b 49 4e 53 45   [DELETE], [INSE
85e0: 52 54 5d 2c 0a 6f 72 20 5b 55 50 44 41 54 45 5d  RT],.or [UPDATE]
85f0: 20 6f 66 20 61 0a 70 61 72 74 69 63 75 6c 61 72   of a.particular
8600: 20 64 61 74 61 62 61 73 65 20 74 61 62 6c 65 20   database table 
8610: 6f 63 63 75 72 73 2c 20 6f 72 20 77 68 65 6e 65  occurs, or whene
8620: 76 65 72 20 61 6e 20 5b 55 50 44 41 54 45 5d 20  ver an [UPDATE] 
8630: 6f 63 63 75 72 73 20 6f 6e 0a 6f 6e 20 6f 6e 65  occurs on.on one
8640: 20 6f 72 20 6d 6f 72 65 20 73 70 65 63 69 66 69   or more specifi
8650: 65 64 20 63 6f 6c 75 6d 6e 73 20 6f 66 20 61 20  ed columns of a 
8660: 74 61 62 6c 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41  table.</p>..<p>A
8670: 74 20 74 68 69 73 20 74 69 6d 65 20 53 51 4c 69  t this time SQLi
8680: 74 65 20 73 75 70 70 6f 72 74 73 20 6f 6e 6c 79  te supports only
8690: 20 46 4f 52 20 45 41 43 48 20 52 4f 57 20 74 72   FOR EACH ROW tr
86a0: 69 67 67 65 72 73 2c 20 6e 6f 74 20 46 4f 52 20  iggers, not FOR 
86b0: 45 41 43 48 0a 53 54 41 54 45 4d 45 4e 54 20 74  EACH.STATEMENT t
86c0: 72 69 67 67 65 72 73 2e 20 48 65 6e 63 65 20 65  riggers. Hence e
86d0: 78 70 6c 69 63 69 74 6c 79 20 73 70 65 63 69 66  xplicitly specif
86e0: 79 69 6e 67 20 46 4f 52 20 45 41 43 48 20 52 4f  ying FOR EACH RO
86f0: 57 20 69 73 20 6f 70 74 69 6f 6e 61 6c 2e 20 20  W is optional.  
8700: 46 4f 52 0a 45 41 43 48 20 52 4f 57 20 69 6d 70  FOR.EACH ROW imp
8710: 6c 69 65 73 20 74 68 61 74 20 74 68 65 20 53 51  lies that the SQ
8720: 4c 20 73 74 61 74 65 6d 65 6e 74 73 20 73 70 65  L statements spe
8730: 63 69 66 69 65 64 20 69 6e 20 74 68 65 20 74 72  cified in the tr
8740: 69 67 67 65 72 0a 6d 61 79 20 62 65 20 65 78 65  igger.may be exe
8750: 63 75 74 65 64 20 28 64 65 70 65 6e 64 69 6e 67  cuted (depending
8760: 20 6f 6e 20 74 68 65 20 57 48 45 4e 20 63 6c 61   on the WHEN cla
8770: 75 73 65 29 20 66 6f 72 20 65 61 63 68 20 64 61  use) for each da
8780: 74 61 62 61 73 65 20 72 6f 77 20 62 65 69 6e 67  tabase row being
8790: 0a 69 6e 73 65 72 74 65 64 2c 20 75 70 64 61 74  .inserted, updat
87a0: 65 64 20 6f 72 20 64 65 6c 65 74 65 64 20 62 79  ed or deleted by
87b0: 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74 20 63   the statement c
87c0: 61 75 73 69 6e 67 20 74 68 65 20 74 72 69 67 67  ausing the trigg
87d0: 65 72 20 74 6f 20 66 69 72 65 2e 3c 2f 70 3e 0a  er to fire.</p>.
87e0: 0a 3c 70 3e 42 6f 74 68 20 74 68 65 20 57 48 45  .<p>Both the WHE
87f0: 4e 20 63 6c 61 75 73 65 20 61 6e 64 20 74 68 65  N clause and the
8800: 20 74 72 69 67 67 65 72 20 61 63 74 69 6f 6e 73   trigger actions
8810: 20 6d 61 79 20 61 63 63 65 73 73 20 65 6c 65 6d   may access elem
8820: 65 6e 74 73 20 6f 66 20 0a 74 68 65 20 72 6f 77  ents of .the row
8830: 20 62 65 69 6e 67 20 69 6e 73 65 72 74 65 64 2c   being inserted,
8840: 20 64 65 6c 65 74 65 64 20 6f 72 20 75 70 64 61   deleted or upda
8850: 74 65 64 20 75 73 69 6e 67 20 72 65 66 65 72 65  ted using refere
8860: 6e 63 65 73 20 6f 66 20 74 68 65 20 66 6f 72 6d  nces of the form
8870: 20 0a 22 4e 45 57 2e 3c 69 3e 63 6f 6c 75 6d 6e   ."NEW.<i>column
8880: 2d 6e 61 6d 65 3c 2f 69 3e 22 20 61 6e 64 20 22  -name</i>" and "
8890: 4f 4c 44 2e 3c 69 3e 63 6f 6c 75 6d 6e 2d 6e 61  OLD.<i>column-na
88a0: 6d 65 3c 2f 69 3e 22 2c 20 77 68 65 72 65 0a 3c  me</i>", where.<
88b0: 69 3e 63 6f 6c 75 6d 6e 2d 6e 61 6d 65 3c 2f 69  i>column-name</i
88c0: 3e 20 69 73 20 74 68 65 20 6e 61 6d 65 20 6f 66  > is the name of
88d0: 20 61 20 63 6f 6c 75 6d 6e 20 66 72 6f 6d 20 74   a column from t
88e0: 68 65 20 74 61 62 6c 65 20 74 68 61 74 20 74 68  he table that th
88f0: 65 20 74 72 69 67 67 65 72 0a 69 73 20 61 73 73  e trigger.is ass
8900: 6f 63 69 61 74 65 64 20 77 69 74 68 2e 20 4f 4c  ociated with. OL
8910: 44 20 61 6e 64 20 4e 45 57 20 72 65 66 65 72 65  D and NEW refere
8920: 6e 63 65 73 20 6d 61 79 20 6f 6e 6c 79 20 62 65  nces may only be
8930: 20 75 73 65 64 20 69 6e 20 74 72 69 67 67 65 72   used in trigger
8940: 73 20 6f 6e 0a 65 76 65 6e 74 73 20 66 6f 72 20  s on.events for 
8950: 77 68 69 63 68 20 74 68 65 79 20 61 72 65 20 72  which they are r
8960: 65 6c 65 76 61 6e 74 2c 20 61 73 20 66 6f 6c 6c  elevant, as foll
8970: 6f 77 73 3a 3c 2f 70 3e 0a 0a 3c 74 61 62 6c 65  ows:</p>..<table
8980: 20 62 6f 72 64 65 72 3d 30 20 63 65 6c 6c 70 61   border=0 cellpa
8990: 64 64 69 6e 67 3d 31 30 3e 0a 3c 74 72 3e 0a 3c  dding=10>.<tr>.<
89a0: 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20  td valign="top" 
89b0: 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 20 77 69  align="right" wi
89c0: 64 74 68 3d 31 32 30 3e 3c 69 3e 49 4e 53 45 52  dth=120><i>INSER
89d0: 54 3c 2f 69 3e 3c 2f 74 64 3e 0a 3c 74 64 20 76  T</i></td>.<td v
89e0: 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 4e 45 57 20  align="top">NEW 
89f0: 72 65 66 65 72 65 6e 63 65 73 20 61 72 65 20 76  references are v
8a00: 61 6c 69 64 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a  alid</td>.</tr>.
8a10: 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  <tr>.<td valign=
8a20: 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67  "top" align="rig
8a30: 68 74 22 20 77 69 64 74 68 3d 31 32 30 3e 3c 69  ht" width=120><i
8a40: 3e 55 50 44 41 54 45 3c 2f 69 3e 3c 2f 74 64 3e  >UPDATE</i></td>
8a50: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
8a60: 22 3e 4e 45 57 20 61 6e 64 20 4f 4c 44 20 72 65  ">NEW and OLD re
8a70: 66 65 72 65 6e 63 65 73 20 61 72 65 20 76 61 6c  ferences are val
8a80: 69 64 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 74  id</td>.</tr>.<t
8a90: 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  r>.<td valign="t
8aa0: 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74  op" align="right
8ab0: 22 20 77 69 64 74 68 3d 31 32 30 3e 3c 69 3e 44  " width=120><i>D
8ac0: 45 4c 45 54 45 3c 2f 69 3e 3c 2f 74 64 3e 0a 3c  ELETE</i></td>.<
8ad0: 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e  td valign="top">
8ae0: 4f 4c 44 20 72 65 66 65 72 65 6e 63 65 73 20 61  OLD references a
8af0: 72 65 20 76 61 6c 69 64 3c 2f 74 64 3e 0a 3c 2f  re valid</td>.</
8b00: 74 72 3e 0a 3c 2f 74 61 62 6c 65 3e 0a 3c 2f 70  tr>.</table>.</p
8b10: 3e 0a 0a 3c 70 3e 49 66 20 61 20 57 48 45 4e 20  >..<p>If a WHEN 
8b20: 63 6c 61 75 73 65 20 69 73 20 73 75 70 70 6c 69  clause is suppli
8b30: 65 64 2c 20 74 68 65 20 53 51 4c 20 73 74 61 74  ed, the SQL stat
8b40: 65 6d 65 6e 74 73 20 73 70 65 63 69 66 69 65 64  ements specified
8b50: 0a 61 72 65 20 6f 6e 6c 79 20 65 78 65 63 75 74  .are only execut
8b60: 65 64 20 66 6f 72 20 72 6f 77 73 20 66 6f 72 20  ed for rows for 
8b70: 77 68 69 63 68 20 74 68 65 20 57 48 45 4e 0a 63  which the WHEN.c
8b80: 6c 61 75 73 65 20 69 73 20 74 72 75 65 2e 20 49  lause is true. I
8b90: 66 20 6e 6f 20 57 48 45 4e 20 63 6c 61 75 73 65  f no WHEN clause
8ba0: 20 69 73 20 73 75 70 70 6c 69 65 64 2c 20 74 68   is supplied, th
8bb0: 65 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73  e SQL statements
8bc0: 0a 61 72 65 20 65 78 65 63 75 74 65 64 20 66 6f  .are executed fo
8bd0: 72 20 61 6c 6c 20 72 6f 77 73 2e 3c 2f 70 3e 0a  r all rows.</p>.
8be0: 0a 3c 70 3e 54 68 65 20 42 45 46 4f 52 45 20 6f  .<p>The BEFORE o
8bf0: 72 20 41 46 54 45 52 20 6b 65 79 77 6f 72 64 20  r AFTER keyword 
8c00: 64 65 74 65 72 6d 69 6e 65 73 20 77 68 65 6e 20  determines when 
8c10: 74 68 65 20 74 72 69 67 67 65 72 20 61 63 74 69  the trigger acti
8c20: 6f 6e 73 0a 77 69 6c 6c 20 62 65 20 65 78 65 63  ons.will be exec
8c30: 75 74 65 64 20 72 65 6c 61 74 69 76 65 20 74 6f  uted relative to
8c40: 20 74 68 65 20 69 6e 73 65 72 74 69 6f 6e 2c 20   the insertion, 
8c50: 6d 6f 64 69 66 69 63 61 74 69 6f 6e 20 6f 72 20  modification or 
8c60: 72 65 6d 6f 76 61 6c 20 6f 66 20 74 68 65 0a 61  removal of the.a
8c70: 73 73 6f 63 69 61 74 65 64 20 72 6f 77 2e 3c 2f  ssociated row.</
8c80: 70 3e 0a 0a 3c 70 3e 41 6e 20 5b 4f 4e 20 43 4f  p>..<p>An [ON CO
8c90: 4e 46 4c 49 43 54 5d 20 63 6c 61 75 73 65 20 6d  NFLICT] clause m
8ca0: 61 79 20 62 65 20 73 70 65 63 69 66 69 65 64 20  ay be specified 
8cb0: 61 73 20 70 61 72 74 20 6f 66 20 61 6e 20 5b 55  as part of an [U
8cc0: 50 44 41 54 45 5d 20 6f 72 20 5b 49 4e 53 45 52  PDATE] or [INSER
8cd0: 54 5d 0a 61 63 74 69 6f 6e 20 77 69 74 68 69 6e  T].action within
8ce0: 20 74 68 65 20 62 6f 64 79 20 6f 66 20 74 68 65   the body of the
8cf0: 20 74 72 69 67 67 65 72 2e 0a 48 6f 77 65 76 65   trigger..Howeve
8d00: 72 20 69 66 20 61 6e 20 5b 4f 4e 20 43 4f 4e 46  r if an [ON CONF
8d10: 4c 49 43 54 5d 20 63 6c 61 75 73 65 20 69 73 20  LICT] clause is 
8d20: 73 70 65 63 69 66 69 65 64 20 61 73 20 70 61 72  specified as par
8d30: 74 20 6f 66 20 0a 74 68 65 20 73 74 61 74 65 6d  t of .the statem
8d40: 65 6e 74 20 63 61 75 73 69 6e 67 20 74 68 65 20  ent causing the 
8d50: 74 72 69 67 67 65 72 20 74 6f 20 66 69 72 65 2c  trigger to fire,
8d60: 20 74 68 65 6e 20 63 6f 6e 66 6c 69 63 74 20 68   then conflict h
8d70: 61 6e 64 6c 69 6e 67 0a 70 6f 6c 69 63 79 20 6f  andling.policy o
8d80: 66 20 74 68 65 20 6f 75 74 65 72 20 73 74 61 74  f the outer stat
8d90: 65 6d 65 6e 74 20 69 73 20 75 73 65 64 20 69 6e  ement is used in
8da0: 73 74 65 61 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54  stead.</p>..<p>T
8db0: 72 69 67 67 65 72 73 20 61 72 65 20 61 75 74 6f  riggers are auto
8dc0: 6d 61 74 69 63 61 6c 6c 79 20 5b 44 52 4f 50 20  matically [DROP 
8dd0: 54 52 49 47 47 45 52 20 7c 20 64 72 6f 70 70 65  TRIGGER | droppe
8de0: 64 5d 0a 77 68 65 6e 20 74 68 65 20 74 61 62 6c  d].when the tabl
8df0: 65 20 74 68 61 74 20 74 68 65 79 20 61 72 65 20  e that they are 
8e00: 0a 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68  .associated with
8e10: 20 28 74 68 65 20 3c 69 3e 74 61 62 6c 65 2d 6e   (the <i>table-n
8e20: 61 6d 65 3c 2f 69 3e 20 74 61 62 6c 65 29 20 69  ame</i> table) i
8e30: 73 20 0a 5b 44 52 4f 50 20 54 41 42 4c 45 20 7c  s .[DROP TABLE |
8e40: 20 64 72 6f 70 70 65 64 5d 2e 20 20 48 6f 77 65   dropped].  Howe
8e50: 76 65 72 20 69 66 20 74 68 65 20 74 68 65 20 74  ver if the the t
8e60: 72 69 67 67 65 72 20 61 63 74 69 6f 6e 73 20 72  rigger actions r
8e70: 65 66 65 72 65 6e 63 65 0a 6f 74 68 65 72 20 74  eference.other t
8e80: 61 62 6c 65 73 2c 20 74 68 65 20 74 72 69 67 67  ables, the trigg
8e90: 65 72 20 69 73 20 6e 6f 74 20 64 72 6f 70 70 65  er is not droppe
8ea0: 64 20 6f 72 20 6d 6f 64 69 66 69 65 64 20 69 66  d or modified if
8eb0: 20 74 68 6f 73 65 20 6f 74 68 65 72 0a 74 61 62   those other.tab
8ec0: 6c 65 73 20 61 72 65 20 5b 44 52 4f 50 20 54 41  les are [DROP TA
8ed0: 42 4c 45 20 7c 20 64 72 6f 70 70 65 64 5d 20 6f  BLE | dropped] o
8ee0: 72 20 5b 41 4c 54 45 52 20 54 41 42 4c 45 20 7c  r [ALTER TABLE |
8ef0: 20 6d 6f 64 69 66 69 65 64 5d 2e 3c 2f 70 3e 0a   modified].</p>.
8f00: 0a 3c 70 3e 54 72 69 67 67 65 72 73 20 61 72 65  .<p>Triggers are
8f10: 20 72 65 6d 6f 76 65 64 20 75 73 69 6e 67 20 74   removed using t
8f20: 68 65 20 5b 44 52 4f 50 20 54 52 49 47 47 45 52  he [DROP TRIGGER
8f30: 5d 20 73 74 61 74 65 6d 65 6e 74 2e 3c 2f 70 3e  ] statement.</p>
8f40: 0a 0a 3c 68 33 3e 53 79 6e 74 61 78 20 52 65 73  ..<h3>Syntax Res
8f50: 74 72 69 63 74 69 6f 6e 73 20 4f 6e 20 55 50 44  trictions On UPD
8f60: 41 54 45 2c 20 44 45 4c 45 54 45 2c 20 61 6e 64  ATE, DELETE, and
8f70: 20 49 4e 53 45 52 54 20 53 74 61 74 65 6d 65 6e   INSERT Statemen
8f80: 74 73 20 57 69 74 68 69 6e 0a 20 20 20 20 54 72  ts Within.    Tr
8f90: 69 67 67 65 72 73 3c 2f 68 33 3e 0a 0a 3c 70 3e  iggers</h3>..<p>
8fa0: 54 68 65 20 5b 55 50 44 41 54 45 5d 2c 20 5b 44  The [UPDATE], [D
8fb0: 45 4c 45 54 45 5d 2c 20 61 6e 64 20 5b 49 4e 53  ELETE], and [INS
8fc0: 45 52 54 5d 0a 73 74 61 74 65 6d 65 6e 74 73 20  ERT].statements 
8fd0: 77 69 74 68 69 6e 20 74 72 69 67 67 65 72 73 20  within triggers 
8fe0: 64 6f 20 6e 6f 74 20 73 75 70 70 6f 72 74 0a 74  do not support.t
8ff0: 68 65 20 66 75 6c 6c 20 73 79 6e 74 61 78 20 66  he full syntax f
9000: 6f 72 20 5b 55 50 44 41 54 45 5d 2c 20 5b 44 45  or [UPDATE], [DE
9010: 4c 45 54 45 5d 2c 20 61 6e 64 20 5b 49 4e 53 45  LETE], and [INSE
9020: 52 54 5d 20 73 74 61 74 65 6d 65 6e 74 73 2e 20  RT] statements. 
9030: 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 0a 72   The following.r
9040: 65 73 74 72 69 63 74 69 6f 6e 73 20 61 70 70 6c  estrictions appl
9050: 79 3a 3c 2f 70 3e 0a 0a 3c 75 6c 3e 0a 3c 6c 69  y:</p>..<ul>.<li
9060: 3e 3c 70 3e 0a 20 20 54 68 65 20 6e 61 6d 65 20  ><p>.  The name 
9070: 6f 66 20 74 68 65 20 74 61 62 6c 65 20 74 6f 20  of the table to 
9080: 62 65 20 6d 6f 64 69 66 69 65 64 20 69 6e 20 61  be modified in a
9090: 6e 20 5b 55 50 44 41 54 45 5d 2c 20 5b 44 45 4c  n [UPDATE], [DEL
90a0: 45 54 45 5d 2c 20 6f 72 20 5b 49 4e 53 45 52 54  ETE], or [INSERT
90b0: 5d 0a 20 20 73 74 61 74 65 6d 65 6e 74 20 6d 75  ].  statement mu
90c0: 73 74 20 62 65 20 61 6e 20 75 6e 71 75 61 6c 69  st be an unquali
90d0: 66 69 65 64 20 74 61 62 6c 65 20 6e 61 6d 65 2e  fied table name.
90e0: 20 20 49 6e 20 6f 74 68 65 72 20 77 6f 72 64 73    In other words
90f0: 2c 20 6f 6e 65 20 6d 75 73 74 0a 20 20 75 73 65  , one must.  use
9100: 20 6a 75 73 74 20 22 3c 69 3e 74 61 62 6c 65 6e   just "<i>tablen
9110: 61 6d 65 3c 2f 69 3e 22 20 6e 6f 74 20 22 3c 69  ame</i>" not "<i
9120: 3e 64 61 74 61 62 61 73 65 3c 2f 69 3e 3c 62 3e  >database</i><b>
9130: 2e 3c 2f 62 3e 3c 69 3e 74 61 62 6c 65 6e 61 6d  .</b><i>tablenam
9140: 65 3c 2f 69 3e 22 0a 20 20 77 68 65 6e 20 73 70  e</i>".  when sp
9150: 65 63 69 66 79 69 6e 67 20 74 68 65 20 74 61 62  ecifying the tab
9160: 6c 65 2e 20 20 54 68 65 20 74 61 62 6c 65 20 74  le.  The table t
9170: 6f 20 62 65 20 6d 6f 64 69 66 69 65 64 20 6d 75  o be modified mu
9180: 73 74 20 65 78 69 73 74 20 69 6e 20 74 68 65 0a  st exist in the.
9190: 20 20 73 61 6d 65 20 64 61 74 61 62 61 73 65 20    same database 
91a0: 61 73 20 74 68 65 20 74 61 62 6c 65 20 6f 72 20  as the table or 
91b0: 76 69 65 77 20 74 6f 20 77 68 69 63 68 20 74 68  view to which th
91c0: 65 20 74 72 69 67 67 65 72 20 69 73 20 61 74 74  e trigger is att
91d0: 61 63 68 65 64 2e 0a 20 20 3c 2f 70 3e 3c 2f 6c  ached..  </p></l
91e0: 69 3e 0a 0a 3c 6c 69 3e 3c 70 3e 0a 20 20 54 68  i>..<li><p>.  Th
91f0: 65 20 22 49 4e 53 45 52 54 20 49 4e 54 4f 20 3c  e "INSERT INTO <
9200: 69 3e 74 61 62 6c 65 3c 2f 69 3e 20 44 45 46 41  i>table</i> DEFA
9210: 55 4c 54 20 56 41 4c 55 45 53 22 20 66 6f 72 6d  ULT VALUES" form
9220: 20 6f 66 20 74 68 65 20 5b 49 4e 53 45 52 54 5d   of the [INSERT]
9230: 20 73 74 61 74 65 6d 65 6e 74 0a 20 20 69 73 20   statement.  is 
9240: 6e 6f 74 20 73 75 70 70 6f 72 74 65 64 2e 0a 20  not supported.. 
9250: 20 3c 2f 70 3e 3c 2f 6c 69 3e 0a 0a 3c 6c 69 3e   </p></li>..<li>
9260: 3c 70 3e 0a 20 20 54 68 65 20 49 4e 44 45 58 45  <p>.  The INDEXE
9270: 44 20 42 59 20 61 6e 64 20 4e 4f 54 20 49 4e 44  D BY and NOT IND
9280: 45 58 45 44 20 63 6c 61 75 73 65 73 20 61 72 65  EXED clauses are
9290: 20 6e 6f 74 20 73 75 70 70 6f 72 74 65 64 20 66   not supported f
92a0: 6f 72 20 5b 55 50 44 41 54 45 5d 20 61 6e 64 0a  or [UPDATE] and.
92b0: 20 20 5b 44 45 4c 45 54 45 5d 20 73 74 61 74 65    [DELETE] state
92c0: 6d 65 6e 74 73 2e 0a 20 20 3c 2f 70 3e 3c 2f 6c  ments..  </p></l
92d0: 69 3e 0a 0a 3c 6c 69 3e 3c 70 3e 0a 20 20 54 68  i>..<li><p>.  Th
92e0: 65 20 4f 52 44 45 52 20 42 59 20 61 6e 64 20 4c  e ORDER BY and L
92f0: 49 4d 49 54 20 63 6c 61 75 73 65 73 20 6f 6e 20  IMIT clauses on 
9300: 5b 55 50 44 41 54 45 5d 20 61 6e 64 20 5b 44 45  [UPDATE] and [DE
9310: 4c 45 54 45 5d 20 73 74 61 74 65 6d 65 6e 74 73  LETE] statements
9320: 20 61 72 65 20 6e 6f 74 0a 20 20 73 75 70 70 6f   are not.  suppo
9330: 72 74 65 64 2e 20 20 4f 52 44 45 52 20 42 59 20  rted.  ORDER BY 
9340: 61 6e 64 20 4c 49 4d 49 54 20 61 72 65 20 6e 6f  and LIMIT are no
9350: 74 20 6e 6f 72 6d 61 6c 6c 79 20 73 75 70 70 6f  t normally suppo
9360: 72 74 65 64 20 66 6f 72 20 5b 55 50 44 41 54 45  rted for [UPDATE
9370: 5d 20 6f 72 0a 20 20 5b 44 45 4c 45 54 45 5d 20  ] or.  [DELETE] 
9380: 69 6e 20 61 6e 79 20 63 6f 6e 74 65 78 74 20 62  in any context b
9390: 75 74 20 63 61 6e 20 62 65 20 65 6e 61 62 6c 65  ut can be enable
93a0: 64 20 66 6f 72 20 74 6f 70 2d 6c 65 76 65 6c 20  d for top-level 
93b0: 73 74 61 74 65 6d 65 6e 74 73 0a 20 20 75 73 69  statements.  usi
93c0: 6e 67 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 45  ng the [SQLITE_E
93d0: 4e 41 42 4c 45 5f 55 50 44 41 54 45 5f 44 45 4c  NABLE_UPDATE_DEL
93e0: 45 54 45 5f 4c 49 4d 49 54 5d 20 63 6f 6d 70 69  ETE_LIMIT] compi
93f0: 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 2e 20  le-time option. 
9400: 20 48 6f 77 65 76 65 72 2c 0a 20 20 74 68 61 74   However,.  that
9410: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70   compile-time op
9420: 74 69 6f 6e 20 6f 6e 6c 79 20 61 70 70 6c 69 65  tion only applie
9430: 73 20 74 6f 20 74 6f 70 2d 6c 65 76 65 6c 20 5b  s to top-level [
9440: 55 50 44 41 54 45 5d 20 61 6e 64 20 5b 44 45 4c  UPDATE] and [DEL
9450: 45 54 45 5d 0a 20 20 73 74 61 74 65 6d 65 6e 74  ETE].  statement
9460: 73 2c 20 6e 6f 74 20 5b 55 50 44 41 54 45 5d 20  s, not [UPDATE] 
9470: 61 6e 64 20 5b 44 45 4c 45 54 45 5d 20 73 74 61  and [DELETE] sta
9480: 74 65 6d 65 6e 74 73 20 77 69 74 68 69 6e 20 74  tements within t
9490: 72 69 67 67 65 72 73 2e 0a 20 20 3c 2f 70 3e 3c  riggers..  </p><
94a0: 2f 6c 69 3e 0a 3c 2f 75 6c 3e 0a 0a 3c 74 63 6c  /li>.</ul>..<tcl
94b0: 3e 68 64 5f 66 72 61 67 6d 65 6e 74 20 69 6e 73  >hd_fragment ins
94c0: 74 65 61 64 5f 6f 66 5f 74 72 69 67 67 65 72 20  tead_of_trigger 
94d0: 7b 49 4e 53 54 45 41 44 20 4f 46 7d 20 7b 49 4e  {INSTEAD OF} {IN
94e0: 53 54 45 41 44 20 4f 46 20 74 72 69 67 67 65 72  STEAD OF trigger
94f0: 7d 3c 2f 74 63 6c 3e 0a 3c 68 33 3e 49 4e 53 54  }</tcl>.<h3>INST
9500: 45 41 44 20 4f 46 20 74 72 69 67 67 65 72 3c 2f  EAD OF trigger</
9510: 68 33 3e 0a 0a 3c 70 3e 54 72 69 67 67 65 72 73  h3>..<p>Triggers
9520: 20 6d 61 79 20 62 65 20 63 72 65 61 74 65 64 20   may be created 
9530: 6f 6e 20 5b 76 69 65 77 73 5d 2c 20 61 73 20 77  on [views], as w
9540: 65 6c 6c 20 61 73 20 6f 72 64 69 6e 61 72 79 20  ell as ordinary 
9550: 74 61 62 6c 65 73 2c 20 62 79 0a 73 70 65 63 69  tables, by.speci
9560: 66 79 69 6e 67 20 49 4e 53 54 45 41 44 20 4f 46  fying INSTEAD OF
9570: 20 69 6e 20 74 68 65 20 43 52 45 41 54 45 20 54   in the CREATE T
9580: 52 49 47 47 45 52 20 73 74 61 74 65 6d 65 6e 74  RIGGER statement
9590: 2e 20 0a 49 66 20 6f 6e 65 20 6f 72 20 6d 6f 72  . .If one or mor
95a0: 65 20 4f 4e 20 49 4e 53 45 52 54 2c 20 4f 4e 20  e ON INSERT, ON 
95b0: 44 45 4c 45 54 45 0a 6f 72 20 4f 4e 20 55 50 44  DELETE.or ON UPD
95c0: 41 54 45 20 74 72 69 67 67 65 72 73 20 61 72 65  ATE triggers are
95d0: 20 64 65 66 69 6e 65 64 20 6f 6e 20 61 20 76 69   defined on a vi
95e0: 65 77 2c 20 74 68 65 6e 20 69 74 20 69 73 20 6e  ew, then it is n
95f0: 6f 74 20 61 6e 0a 65 72 72 6f 72 20 74 6f 20 65  ot an.error to e
9600: 78 65 63 75 74 65 20 61 6e 20 49 4e 53 45 52 54  xecute an INSERT
9610: 2c 20 44 45 4c 45 54 45 20 6f 72 20 55 50 44 41  , DELETE or UPDA
9620: 54 45 20 73 74 61 74 65 6d 65 6e 74 20 6f 6e 20  TE statement on 
9630: 74 68 65 20 76 69 65 77 2c 20 0a 72 65 73 70 65  the view, .respe
9640: 63 74 69 76 65 6c 79 2e 20 54 68 65 72 65 61 66  ctively. Thereaf
9650: 74 65 72 2c 0a 65 78 65 63 75 74 69 6e 67 20 61  ter,.executing a
9660: 6e 20 49 4e 53 45 52 54 2c 20 44 45 4c 45 54 45  n INSERT, DELETE
9670: 20 6f 72 20 55 50 44 41 54 45 20 6f 6e 20 74 68   or UPDATE on th
9680: 65 20 76 69 65 77 20 63 61 75 73 65 73 20 74 68  e view causes th
9690: 65 20 61 73 73 6f 63 69 61 74 65 64 0a 74 72 69  e associated.tri
96a0: 67 67 65 72 73 20 74 6f 20 66 69 72 65 2e 20 54  ggers to fire. T
96b0: 68 65 20 72 65 61 6c 20 74 61 62 6c 65 73 20 75  he real tables u
96c0: 6e 64 65 72 6c 79 69 6e 67 20 74 68 65 20 76 69  nderlying the vi
96d0: 65 77 20 61 72 65 20 6e 6f 74 20 6d 6f 64 69 66  ew are not modif
96e0: 69 65 64 0a 28 65 78 63 65 70 74 20 70 6f 73 73  ied.(except poss
96f0: 69 62 6c 79 20 65 78 70 6c 69 63 69 74 6c 79 2c  ibly explicitly,
9700: 20 62 79 20 61 20 74 72 69 67 67 65 72 20 70 72   by a trigger pr
9710: 6f 67 72 61 6d 29 2e 3c 2f 70 3e 0a 0a 3c 70 3e  ogram).</p>..<p>
9720: 4e 6f 74 65 20 74 68 61 74 20 74 68 65 20 5b 73  Note that the [s
9730: 71 6c 69 74 65 33 5f 63 68 61 6e 67 65 73 28 29  qlite3_changes()
9740: 5d 20 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f 74  ] and [sqlite3_t
9750: 6f 74 61 6c 5f 63 68 61 6e 67 65 73 28 29 5d 20  otal_changes()] 
9760: 69 6e 74 65 72 66 61 63 65 73 0a 64 6f 20 6e 6f  interfaces.do no
9770: 74 20 63 6f 75 6e 74 20 49 4e 53 54 45 41 44 20  t count INSTEAD 
9780: 4f 46 20 74 72 69 67 67 65 72 20 66 69 72 69 6e  OF trigger firin
9790: 67 73 2c 20 62 75 74 20 74 68 65 0a 5b 63 6f 75  gs, but the.[cou
97a0: 6e 74 5f 63 68 61 6e 67 65 73 20 70 72 61 67 6d  nt_changes pragm
97b0: 61 5d 20 64 6f 65 73 20 63 6f 75 6e 74 20 49 4e  a] does count IN
97c0: 53 54 45 41 44 20 4f 46 20 74 72 69 67 67 65 72  STEAD OF trigger
97d0: 20 66 69 72 69 6e 67 2e 3c 2f 70 3e 0a 0a 3c 68   firing.</p>..<h
97e0: 33 3e 45 78 61 6d 70 6c 65 73 3c 2f 68 33 3e 0a  3>Examples</h3>.
97f0: 0a 3c 70 3e 41 73 73 75 6d 69 6e 67 20 74 68 61  .<p>Assuming tha
9800: 74 20 63 75 73 74 6f 6d 65 72 20 72 65 63 6f 72  t customer recor
9810: 64 73 20 61 72 65 20 73 74 6f 72 65 64 20 69 6e  ds are stored in
9820: 20 74 68 65 20 22 63 75 73 74 6f 6d 65 72 73 22   the "customers"
9830: 20 74 61 62 6c 65 2c 20 61 6e 64 0a 74 68 61 74   table, and.that
9840: 20 6f 72 64 65 72 20 72 65 63 6f 72 64 73 20 61   order records a
9850: 72 65 20 73 74 6f 72 65 64 20 69 6e 20 74 68 65  re stored in the
9860: 20 22 6f 72 64 65 72 73 22 20 74 61 62 6c 65 2c   "orders" table,
9870: 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 74   the following t
9880: 72 69 67 67 65 72 0a 65 6e 73 75 72 65 73 20 74  rigger.ensures t
9890: 68 61 74 20 61 6c 6c 20 61 73 73 6f 63 69 61 74  hat all associat
98a0: 65 64 20 6f 72 64 65 72 73 20 61 72 65 20 72 65  ed orders are re
98b0: 64 69 72 65 63 74 65 64 20 77 68 65 6e 20 61 20  directed when a 
98c0: 63 75 73 74 6f 6d 65 72 20 63 68 61 6e 67 65 73  customer changes
98d0: 0a 68 69 73 20 6f 72 20 68 65 72 20 61 64 64 72  .his or her addr
98e0: 65 73 73 3a 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 45  ess:</p>..<tcl>E
98f0: 78 61 6d 70 6c 65 20 7b 0a 43 52 45 41 54 45 20  xample {.CREATE 
9900: 54 52 49 47 47 45 52 20 75 70 64 61 74 65 5f 63  TRIGGER update_c
9910: 75 73 74 6f 6d 65 72 5f 61 64 64 72 65 73 73 20  ustomer_address 
9920: 55 50 44 41 54 45 20 4f 46 20 61 64 64 72 65 73  UPDATE OF addres
9930: 73 20 4f 4e 20 63 75 73 74 6f 6d 65 72 73 20 0a  s ON customers .
9940: 20 20 42 45 47 49 4e 0a 20 20 20 20 55 50 44 41    BEGIN.    UPDA
9950: 54 45 20 6f 72 64 65 72 73 20 53 45 54 20 61 64  TE orders SET ad
9960: 64 72 65 73 73 20 3d 20 6e 65 77 2e 61 64 64 72  dress = new.addr
9970: 65 73 73 20 57 48 45 52 45 20 63 75 73 74 6f 6d  ess WHERE custom
9980: 65 72 5f 6e 61 6d 65 20 3d 20 6f 6c 64 2e 6e 61  er_name = old.na
9990: 6d 65 3b 0a 20 20 45 4e 44 3b 0a 7d 3c 2f 74 63  me;.  END;.}</tc
99a0: 6c 3e 0a 0a 3c 70 3e 57 69 74 68 20 74 68 69 73  l>..<p>With this
99b0: 20 74 72 69 67 67 65 72 20 69 6e 73 74 61 6c 6c   trigger install
99c0: 65 64 2c 20 65 78 65 63 75 74 69 6e 67 20 74 68  ed, executing th
99d0: 65 20 73 74 61 74 65 6d 65 6e 74 3a 3c 2f 70 3e  e statement:</p>
99e0: 0a 0a 3c 74 63 6c 3e 45 78 61 6d 70 6c 65 20 7b  ..<tcl>Example {
99f0: 0a 55 50 44 41 54 45 20 63 75 73 74 6f 6d 65 72  .UPDATE customer
9a00: 73 20 53 45 54 20 61 64 64 72 65 73 73 20 3d 20  s SET address = 
9a10: 27 31 20 4d 61 69 6e 20 53 74 2e 27 20 57 48 45  '1 Main St.' WHE
9a20: 52 45 20 6e 61 6d 65 20 3d 20 27 4a 61 63 6b 20  RE name = 'Jack 
9a30: 4a 6f 6e 65 73 27 3b 0a 7d 3c 2f 74 63 6c 3e 0a  Jones';.}</tcl>.
9a40: 0a 3c 70 3e 63 61 75 73 65 73 20 74 68 65 20 66  .<p>causes the f
9a50: 6f 6c 6c 6f 77 69 6e 67 20 74 6f 20 62 65 20 61  ollowing to be a
9a60: 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 65 78 65  utomatically exe
9a70: 63 75 74 65 64 3a 3c 2f 70 3e 0a 0a 3c 74 63 6c  cuted:</p>..<tcl
9a80: 3e 45 78 61 6d 70 6c 65 20 7b 0a 55 50 44 41 54  >Example {.UPDAT
9a90: 45 20 6f 72 64 65 72 73 20 53 45 54 20 61 64 64  E orders SET add
9aa0: 72 65 73 73 20 3d 20 27 31 20 4d 61 69 6e 20 53  ress = '1 Main S
9ab0: 74 2e 27 20 57 48 45 52 45 20 63 75 73 74 6f 6d  t.' WHERE custom
9ac0: 65 72 5f 6e 61 6d 65 20 3d 20 27 4a 61 63 6b 20  er_name = 'Jack 
9ad0: 4a 6f 6e 65 73 27 3b 0a 7d 3c 2f 74 63 6c 3e 0a  Jones';.}</tcl>.
9ae0: 0a 3c 74 63 6c 3e 68 64 5f 66 72 61 67 6d 65 6e  .<tcl>hd_fragmen
9af0: 74 20 75 6e 64 65 66 5f 62 65 66 6f 72 65 20 7b  t undef_before {
9b00: 75 6e 64 65 66 69 6e 65 64 20 42 45 46 4f 52 45  undefined BEFORE
9b10: 20 74 72 69 67 67 65 72 20 62 65 68 61 76 69 6f   trigger behavio
9b20: 72 7d 3c 2f 74 63 6c 3e 0a 3c 68 33 3e 43 61 75  r}</tcl>.<h3>Cau
9b30: 74 69 6f 6e 73 20 4f 6e 20 54 68 65 20 55 73 65  tions On The Use
9b40: 20 4f 66 20 42 45 46 4f 52 45 20 74 72 69 67 67   Of BEFORE trigg
9b50: 65 72 73 3c 2f 68 33 3e 0a 0a 3c 70 3e 49 66 20  ers</h3>..<p>If 
9b60: 61 20 42 45 46 4f 52 45 20 55 50 44 41 54 45 20  a BEFORE UPDATE 
9b70: 6f 72 20 42 45 46 4f 52 45 20 44 45 4c 45 54 45  or BEFORE DELETE
9b80: 20 74 72 69 67 67 65 72 20 6d 6f 64 69 66 69 65   trigger modifie
9b90: 73 20 6f 72 20 64 65 6c 65 74 65 73 20 61 20 72  s or deletes a r
9ba0: 6f 77 0a 74 68 61 74 20 77 61 73 20 74 6f 20 68  ow.that was to h
9bb0: 61 76 65 20 62 65 65 6e 20 75 70 64 61 74 65 64  ave been updated
9bc0: 20 6f 72 20 64 65 6c 65 74 65 64 2c 20 74 68 65   or deleted, the
9bd0: 6e 20 74 68 65 20 72 65 73 75 6c 74 20 6f 66 20  n the result of 
9be0: 74 68 65 20 73 75 62 73 65 71 75 65 6e 74 0a 75  the subsequent.u
9bf0: 70 64 61 74 65 20 6f 72 20 64 65 6c 65 74 65 20  pdate or delete 
9c00: 6f 70 65 72 61 74 69 6f 6e 20 69 73 20 75 6e 64  operation is und
9c10: 65 66 69 6e 65 64 2e 20 20 46 75 72 74 68 65 72  efined.  Further
9c20: 6d 6f 72 65 2c 20 69 66 20 61 20 42 45 46 4f 52  more, if a BEFOR
9c30: 45 20 74 72 69 67 67 65 72 0a 6d 6f 64 69 66 69  E trigger.modifi
9c40: 65 73 20 6f 72 20 64 65 6c 65 74 65 73 20 61 20  es or deletes a 
9c50: 72 6f 77 2c 20 74 68 65 6e 20 69 74 20 69 73 20  row, then it is 
9c60: 75 6e 64 65 66 69 6e 65 64 20 77 68 65 74 68 65  undefined whethe
9c70: 72 20 6f 72 20 6e 6f 74 20 41 46 54 45 52 20 74  r or not AFTER t
9c80: 72 69 67 67 65 72 73 0a 74 68 61 74 20 77 6f 75  riggers.that wou
9c90: 6c 64 20 68 61 76 65 20 6f 74 68 65 72 77 69 73  ld have otherwis
9ca0: 65 20 72 75 6e 20 6f 6e 20 74 68 6f 73 65 20 72  e run on those r
9cb0: 6f 77 73 20 77 69 6c 6c 20 69 6e 20 66 61 63 74  ows will in fact
9cc0: 20 72 75 6e 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 54   run..</p>..<p>T
9cd0: 68 65 20 76 61 6c 75 65 20 6f 66 20 4e 45 57 2e  he value of NEW.
9ce0: 72 6f 77 69 64 20 69 73 20 75 6e 64 65 66 69 6e  rowid is undefin
9cf0: 65 64 20 69 6e 20 61 20 42 45 46 4f 52 45 20 49  ed in a BEFORE I
9d00: 4e 53 45 52 54 20 74 72 69 67 67 65 72 20 69 6e  NSERT trigger in
9d10: 20 77 68 69 63 68 0a 74 68 65 20 72 6f 77 69 64   which.the rowid
9d20: 20 69 73 20 6e 6f 74 20 65 78 70 6c 69 63 69 74   is not explicit
9d30: 6c 79 20 73 65 74 20 74 6f 20 61 6e 20 69 6e 74  ly set to an int
9d40: 65 67 65 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 42 65  eger.</p>..<p>Be
9d50: 63 61 75 73 65 20 6f 66 20 74 68 65 20 62 65 68  cause of the beh
9d60: 61 76 69 6f 72 73 20 64 65 73 63 72 69 62 65 64  aviors described
9d70: 20 61 62 6f 76 65 2c 20 70 72 6f 67 72 61 6d 6d   above, programm
9d80: 65 72 73 20 61 72 65 20 65 6e 63 6f 75 72 61 67  ers are encourag
9d90: 65 64 20 74 6f 0a 70 72 65 66 65 72 20 41 46 54  ed to.prefer AFT
9da0: 45 52 20 74 72 69 67 67 65 72 73 20 6f 76 65 72  ER triggers over
9db0: 20 42 45 46 4f 52 45 20 74 72 69 67 67 65 72 73   BEFORE triggers
9dc0: 2e 3c 2f 70 3e 0a 0a 3c 68 33 3e 54 68 65 20 52  .</p>..<h3>The R
9dd0: 41 49 53 45 28 29 20 66 75 6e 63 74 69 6f 6e 3c  AISE() function<
9de0: 2f 68 33 3e 0a 0a 3c 70 3e 41 20 73 70 65 63 69  /h3>..<p>A speci
9df0: 61 6c 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 20  al SQL function 
9e00: 52 41 49 53 45 28 29 20 6d 61 79 20 62 65 20 75  RAISE() may be u
9e10: 73 65 64 20 77 69 74 68 69 6e 20 61 20 74 72 69  sed within a tri
9e20: 67 67 65 72 2d 70 72 6f 67 72 61 6d 2c 0a 77 69  gger-program,.wi
9e30: 74 68 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  th the following
9e40: 20 73 79 6e 74 61 78 3c 2f 70 3e 20 0a 0a 3c 74   syntax</p> ..<t
9e50: 63 6c 3e 42 75 62 62 6c 65 44 69 61 67 72 61 6d  cl>BubbleDiagram
9e60: 20 72 61 69 73 65 2d 66 75 6e 63 74 69 6f 6e 3c   raise-function<
9e70: 2f 74 63 6c 3e 0a 0a 3c 70 3e 57 68 65 6e 20 6f  /tcl>..<p>When o
9e80: 6e 65 20 6f 66 20 74 68 65 20 66 69 72 73 74 20  ne of the first 
9e90: 74 68 72 65 65 20 66 6f 72 6d 73 20 69 73 20 63  three forms is c
9ea0: 61 6c 6c 65 64 20 64 75 72 69 6e 67 20 74 72 69  alled during tri
9eb0: 67 67 65 72 2d 70 72 6f 67 72 61 6d 0a 65 78 65  gger-program.exe
9ec0: 63 75 74 69 6f 6e 2c 20 74 68 65 20 73 70 65 63  cution, the spec
9ed0: 69 66 69 65 64 20 5b 4f 4e 20 43 4f 4e 46 4c 49  ified [ON CONFLI
9ee0: 43 54 5d 20 70 72 6f 63 65 73 73 69 6e 67 20 69  CT] processing i
9ef0: 73 20 70 65 72 66 6f 72 6d 65 64 0a 28 65 69 74  s performed.(eit
9f00: 68 65 72 20 41 42 4f 52 54 2c 20 46 41 49 4c 20  her ABORT, FAIL 
9f10: 6f 72 20 52 4f 4c 4c 42 41 43 4b 29 20 61 6e 64  or ROLLBACK) and
9f20: 20 74 68 65 20 63 75 72 72 65 6e 74 20 71 75 65   the current que
9f30: 72 79 20 74 65 72 6d 69 6e 61 74 65 73 2e 0a 41  ry terminates..A
9f40: 6e 20 65 72 72 6f 72 20 63 6f 64 65 20 6f 66 20  n error code of 
9f50: 5b 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49  [SQLITE_CONSTRAI
9f60: 4e 54 5d 20 69 73 20 72 65 74 75 72 6e 65 64 20  NT] is returned 
9f70: 74 6f 20 74 68 65 20 61 70 70 6c 69 63 61 74 69  to the applicati
9f80: 6f 6e 2c 0a 61 6c 6f 6e 67 20 77 69 74 68 20 74  on,.along with t
9f90: 68 65 20 73 70 65 63 69 66 69 65 64 20 65 72 72  he specified err
9fa0: 6f 72 20 6d 65 73 73 61 67 65 2e 3c 2f 70 3e 0a  or message.</p>.
9fb0: 0a 3c 70 3e 57 68 65 6e 20 52 41 49 53 45 28 49  .<p>When RAISE(I
9fc0: 47 4e 4f 52 45 29 20 69 73 20 63 61 6c 6c 65 64  GNORE) is called
9fd0: 2c 20 74 68 65 20 72 65 6d 61 69 6e 64 65 72 20  , the remainder 
9fe0: 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 74  of the current t
9ff0: 72 69 67 67 65 72 20 70 72 6f 67 72 61 6d 2c 0a  rigger program,.
a000: 74 68 65 20 73 74 61 74 65 6d 65 6e 74 20 74 68  the statement th
a010: 61 74 20 63 61 75 73 65 64 20 74 68 65 20 74 72  at caused the tr
a020: 69 67 67 65 72 20 70 72 6f 67 72 61 6d 20 74 6f  igger program to
a030: 20 65 78 65 63 75 74 65 20 61 6e 64 20 61 6e 79   execute and any
a040: 20 73 75 62 73 65 71 75 65 6e 74 0a 74 72 69 67   subsequent.trig
a050: 67 65 72 20 70 72 6f 67 72 61 6d 73 20 74 68 61  ger programs tha
a060: 74 20 77 6f 75 6c 64 20 6f 66 20 62 65 65 6e 20  t would of been 
a070: 65 78 65 63 75 74 65 64 20 61 72 65 20 61 62 61  executed are aba
a080: 6e 64 6f 6e 65 64 2e 20 4e 6f 20 64 61 74 61 62  ndoned. No datab
a090: 61 73 65 0a 63 68 61 6e 67 65 73 20 61 72 65 20  ase.changes are 
a0a0: 72 6f 6c 6c 65 64 20 62 61 63 6b 2e 20 20 49 66  rolled back.  If
a0b0: 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74 20 74   the statement t
a0c0: 68 61 74 20 63 61 75 73 65 64 20 74 68 65 20 74  hat caused the t
a0d0: 72 69 67 67 65 72 20 70 72 6f 67 72 61 6d 0a 74  rigger program.t
a0e0: 6f 20 65 78 65 63 75 74 65 20 69 73 20 69 74 73  o execute is its
a0f0: 65 6c 66 20 70 61 72 74 20 6f 66 20 61 20 74 72  elf part of a tr
a100: 69 67 67 65 72 20 70 72 6f 67 72 61 6d 2c 20 74  igger program, t
a110: 68 65 6e 20 74 68 61 74 20 74 72 69 67 67 65 72  hen that trigger
a120: 20 70 72 6f 67 72 61 6d 0a 72 65 73 75 6d 65 73   program.resumes
a130: 20 65 78 65 63 75 74 69 6f 6e 20 61 74 20 74 68   execution at th
a140: 65 20 62 65 67 69 6e 6e 69 6e 67 20 6f 66 20 74  e beginning of t
a150: 68 65 20 6e 65 78 74 20 73 74 65 70 2e 0a 3c 2f  he next step..</
a160: 70 3e 0a 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23  p>...<tcl>.#####
a170: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a180: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a190: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a1a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a1b0: 23 23 23 23 23 23 23 23 23 23 0a 53 65 63 74 69  ##########.Secti
a1c0: 6f 6e 20 7b 43 52 45 41 54 45 20 56 49 45 57 7d  on {CREATE VIEW}
a1d0: 20 7b 63 72 65 61 74 65 76 69 65 77 7d 20 7b 7b   {createview} {{
a1e0: 43 52 45 41 54 45 20 56 49 45 57 7d 20 76 69 65  CREATE VIEW} vie
a1f0: 77 20 76 69 65 77 73 7d 0a 0a 42 75 62 62 6c 65  w views}..Bubble
a200: 44 69 61 67 72 61 6d 20 63 72 65 61 74 65 2d 76  Diagram create-v
a210: 69 65 77 2d 73 74 6d 74 20 31 0a 3c 2f 74 63 6c  iew-stmt 1.</tcl
a220: 3e 0a 0a 3c 70 3e 54 68 65 20 43 52 45 41 54 45  >..<p>The CREATE
a230: 20 56 49 45 57 20 63 6f 6d 6d 61 6e 64 20 61 73   VIEW command as
a240: 73 69 67 6e 73 20 61 20 6e 61 6d 65 20 74 6f 20  signs a name to 
a250: 61 20 70 72 65 2d 70 61 63 6b 61 67 65 64 20 0a  a pre-packaged .
a260: 3c 61 20 68 72 65 66 3d 22 6c 61 6e 67 5f 73 65  <a href="lang_se
a270: 6c 65 63 74 2e 68 74 6d 6c 22 3e 53 45 4c 45 43  lect.html">SELEC
a280: 54 3c 2f 61 3e 0a 73 74 61 74 65 6d 65 6e 74 2e  T</a>.statement.
a290: 20 20 4f 6e 63 65 20 74 68 65 20 76 69 65 77 20    Once the view 
a2a0: 69 73 20 63 72 65 61 74 65 64 2c 20 69 74 20 63  is created, it c
a2b0: 61 6e 20 62 65 20 75 73 65 64 20 69 6e 20 74 68  an be used in th
a2c0: 65 20 46 52 4f 4d 20 63 6c 61 75 73 65 0a 6f 66  e FROM clause.of
a2d0: 20 61 6e 6f 74 68 65 72 20 5b 53 45 4c 45 43 54   another [SELECT
a2e0: 5d 20 69 6e 20 70 6c 61 63 65 20 6f 66 20 61 20  ] in place of a 
a2f0: 74 61 62 6c 65 20 6e 61 6d 65 2e 0a 3c 2f 70 3e  table name..</p>
a300: 0a 0a 3c 70 3e 49 66 20 74 68 65 20 22 54 45 4d  ..<p>If the "TEM
a310: 50 22 20 6f 72 20 22 54 45 4d 50 4f 52 41 52 59  P" or "TEMPORARY
a320: 22 20 6b 65 79 77 6f 72 64 20 6f 63 63 75 72 73  " keyword occurs
a330: 20 69 6e 20 62 65 74 77 65 65 6e 20 22 43 52 45   in between "CRE
a340: 41 54 45 22 0a 61 6e 64 20 22 56 49 45 57 22 20  ATE".and "VIEW" 
a350: 74 68 65 6e 20 74 68 65 20 76 69 65 77 20 74 68  then the view th
a360: 61 74 20 69 73 20 63 72 65 61 74 65 64 20 69 73  at is created is
a370: 20 6f 6e 6c 79 20 76 69 73 69 62 6c 65 20 74 6f   only visible to
a380: 20 74 68 65 0a 70 72 6f 63 65 73 73 20 74 68 61   the.process tha
a390: 74 20 6f 70 65 6e 65 64 20 74 68 65 20 64 61 74  t opened the dat
a3a0: 61 62 61 73 65 20 61 6e 64 20 69 73 20 61 75 74  abase and is aut
a3b0: 6f 6d 61 74 69 63 61 6c 6c 79 20 64 65 6c 65 74  omatically delet
a3c0: 65 64 20 77 68 65 6e 0a 74 68 65 20 64 61 74 61  ed when.the data
a3d0: 62 61 73 65 20 69 73 20 63 6c 6f 73 65 64 2e 3c  base is closed.<
a3e0: 2f 70 3e 0a 0a 3c 70 3e 20 49 66 20 61 20 26 6c  /p>..<p> If a &l
a3f0: 74 3b 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 26  t;database-name&
a400: 67 74 3b 20 69 73 20 73 70 65 63 69 66 69 65 64  gt; is specified
a410: 2c 20 74 68 65 6e 20 74 68 65 20 76 69 65 77 20  , then the view 
a420: 69 73 20 63 72 65 61 74 65 64 20 69 6e 20 0a 74  is created in .t
a430: 68 65 20 6e 61 6d 65 64 20 64 61 74 61 62 61 73  he named databas
a440: 65 2e 20 49 74 20 69 73 20 61 6e 20 65 72 72 6f  e. It is an erro
a450: 72 20 74 6f 20 73 70 65 63 69 66 79 20 62 6f 74  r to specify bot
a460: 68 20 61 20 26 6c 74 3b 64 61 74 61 62 61 73 65  h a &lt;database
a470: 2d 6e 61 6d 65 26 67 74 3b 0a 61 6e 64 20 74 68  -name&gt;.and th
a480: 65 20 54 45 4d 50 20 6b 65 79 77 6f 72 64 2c 20  e TEMP keyword, 
a490: 75 6e 6c 65 73 73 20 74 68 65 20 26 6c 74 3b 64  unless the &lt;d
a4a0: 61 74 61 62 61 73 65 2d 6e 61 6d 65 26 67 74 3b  atabase-name&gt;
a4b0: 20 69 73 20 22 74 65 6d 70 22 2e 20 49 66 20 6e   is "temp". If n
a4c0: 6f 0a 64 61 74 61 62 61 73 65 20 6e 61 6d 65 20  o.database name 
a4d0: 69 73 20 73 70 65 63 69 66 69 65 64 2c 20 61 6e  is specified, an
a4e0: 64 20 74 68 65 20 54 45 4d 50 20 6b 65 79 77 6f  d the TEMP keywo
a4f0: 72 64 20 69 73 20 6e 6f 74 20 70 72 65 73 65 6e  rd is not presen
a500: 74 2c 0a 74 68 65 20 74 61 62 6c 65 20 69 73 20  t,.the table is 
a510: 63 72 65 61 74 65 64 20 69 6e 20 74 68 65 20 6d  created in the m
a520: 61 69 6e 20 64 61 74 61 62 61 73 65 2e 3c 2f 70  ain database.</p
a530: 3e 0a 0a 3c 70 3e 59 6f 75 20 63 61 6e 6e 6f 74  >..<p>You cannot
a540: 20 5b 44 45 4c 45 54 45 5d 2c 20 5b 49 4e 53 45   [DELETE], [INSE
a550: 52 54 5d 2c 20 6f 72 20 5b 55 50 44 41 54 45 5d  RT], or [UPDATE]
a560: 20 61 20 76 69 65 77 2e 20 20 56 69 65 77 73 20   a view.  Views 
a570: 61 72 65 20 72 65 61 64 2d 6f 6e 6c 79 20 0a 69  are read-only .i
a580: 6e 20 53 51 4c 69 74 65 2e 20 20 48 6f 77 65 76  n SQLite.  Howev
a590: 65 72 2c 20 69 6e 20 6d 61 6e 79 20 63 61 73 65  er, in many case
a5a0: 73 20 79 6f 75 20 63 61 6e 20 75 73 65 20 61 6e  s you can use an
a5b0: 0a 5b 49 4e 53 54 45 41 44 20 4f 46 20 74 72 69  .[INSTEAD OF tri
a5c0: 67 67 65 72 5d 20 6f 6e 20 74 68 65 20 76 69 65  gger] on the vie
a5d0: 77 20 74 6f 20 61 63 63 6f 6d 70 6c 69 73 68 20  w to accomplish 
a5e0: 0a 74 68 65 20 73 61 6d 65 20 74 68 69 6e 67 2e  .the same thing.
a5f0: 20 20 56 69 65 77 73 20 61 72 65 20 72 65 6d 6f    Views are remo
a600: 76 65 64 20 0a 77 69 74 68 20 74 68 65 20 5b 44  ved .with the [D
a610: 52 4f 50 20 56 49 45 57 5d 20 63 6f 6d 6d 61 6e  ROP VIEW] comman
a620: 64 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23  d.</p>..<tcl>.##
a630: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a640: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a650: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a660: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a670: 23 23 23 23 23 23 23 23 23 23 23 23 0a 53 65 63  ############.Sec
a680: 74 69 6f 6e 20 7b 43 52 45 41 54 45 20 56 49 52  tion {CREATE VIR
a690: 54 55 41 4c 20 54 41 42 4c 45 7d 20 7b 63 72 65  TUAL TABLE} {cre
a6a0: 61 74 65 76 74 61 62 7d 20 7b 7b 43 52 45 41 54  atevtab} {{CREAT
a6b0: 45 20 56 49 52 54 55 41 4c 20 54 41 42 4c 45 7d  E VIRTUAL TABLE}
a6c0: 7d 0a 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d  }..BubbleDiagram
a6d0: 20 63 72 65 61 74 65 2d 76 69 72 74 75 61 6c 2d   create-virtual-
a6e0: 74 61 62 6c 65 2d 73 74 6d 74 20 31 0a 3c 2f 74  table-stmt 1.</t
a6f0: 63 6c 3e 0a 0a 3c 70 3e 41 20 5b 76 69 72 74 75  cl>..<p>A [virtu
a700: 61 6c 20 74 61 62 6c 65 5d 20 69 73 20 61 6e 20  al table] is an 
a710: 69 6e 74 65 72 66 61 63 65 20 74 6f 20 61 6e 20  interface to an 
a720: 65 78 74 65 72 6e 61 6c 20 73 74 6f 72 61 67 65  external storage
a730: 20 6f 72 20 63 6f 6d 70 75 74 61 74 69 6f 6e 0a   or computation.
a740: 65 6e 67 69 6e 65 20 74 68 61 74 20 61 70 70 65  engine that appe
a750: 61 72 73 20 74 6f 20 62 65 20 61 20 74 61 62 6c  ars to be a tabl
a760: 65 20 62 75 74 20 64 6f 65 73 20 6e 6f 74 20 61  e but does not a
a770: 63 74 75 61 6c 6c 79 20 73 74 6f 72 65 20 69 6e  ctually store in
a780: 66 6f 72 6d 61 74 69 6f 6e 0a 69 6e 20 74 68 65  formation.in the
a790: 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 2e 3c   database file.<
a7a0: 2f 70 3e 0a 0a 3c 70 3e 49 6e 20 67 65 6e 65 72  /p>..<p>In gener
a7b0: 61 6c 2c 20 79 6f 75 20 63 61 6e 20 64 6f 20 61  al, you can do a
a7c0: 6e 79 74 68 69 6e 67 20 77 69 74 68 20 61 20 5b  nything with a [
a7d0: 76 69 72 74 75 61 6c 20 74 61 62 6c 65 5d 20 74  virtual table] t
a7e0: 68 61 74 20 63 61 6e 20 62 65 20 64 6f 6e 65 0a  hat can be done.
a7f0: 77 69 74 68 20 61 6e 20 6f 72 64 69 6e 61 72 79  with an ordinary
a800: 20 74 61 62 6c 65 2c 20 65 78 63 65 70 74 20 74   table, except t
a810: 68 61 74 20 79 6f 75 20 63 61 6e 6e 6f 74 20 63  hat you cannot c
a820: 72 65 61 74 65 20 69 6e 64 69 63 65 73 20 6f 72  reate indices or
a830: 20 74 72 69 67 67 65 72 73 20 6f 6e 20 61 0a 76   triggers on a.v
a840: 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 20 20 53  irtual table.  S
a850: 6f 6d 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c  ome virtual tabl
a860: 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  e implementation
a870: 73 20 6d 69 67 68 74 20 69 6d 70 6f 73 65 20 61  s might impose a
a880: 64 64 69 74 69 6f 6e 61 6c 0a 72 65 73 74 72 69  dditional.restri
a890: 63 74 69 6f 6e 73 2e 20 20 46 6f 72 20 65 78 61  ctions.  For exa
a8a0: 6d 70 6c 65 2c 20 6d 61 6e 79 20 76 69 72 74 75  mple, many virtu
a8b0: 61 6c 20 74 61 62 6c 65 73 20 61 72 65 20 72 65  al tables are re
a8c0: 61 64 2d 6f 6e 6c 79 2e 3c 2f 70 3e 0a 0a 3c 70  ad-only.</p>..<p
a8d0: 3e 54 68 65 20 26 6c 74 3b 6d 6f 64 75 6c 65 2d  >The &lt;module-
a8e0: 6e 61 6d 65 26 67 74 3b 20 69 73 20 74 68 65 20  name&gt; is the 
a8f0: 6e 61 6d 65 20 6f 66 20 61 6e 20 6f 62 6a 65 63  name of an objec
a900: 74 20 74 68 61 74 20 69 6d 70 6c 65 6d 65 6e 74  t that implement
a910: 73 0a 74 68 65 20 76 69 72 74 75 61 6c 20 74 61  s.the virtual ta
a920: 62 6c 65 2e 20 20 54 68 65 20 26 6c 74 3b 6d 6f  ble.  The &lt;mo
a930: 64 75 6c 65 2d 6e 61 6d 65 26 67 74 3b 20 6d 75  dule-name&gt; mu
a940: 73 74 20 62 65 20 72 65 67 69 73 74 65 72 65 64  st be registered
a950: 20 77 69 74 68 0a 74 68 65 20 53 51 4c 69 74 65   with.the SQLite
a960: 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
a970: 74 69 6f 6e 20 75 73 69 6e 67 0a 5b 73 71 6c 69  tion using.[sqli
a980: 74 65 33 5f 63 72 65 61 74 65 5f 6d 6f 64 75 6c  te3_create_modul
a990: 65 28 29 5d 20 6f 72 20 5b 73 71 6c 69 74 65 33  e()] or [sqlite3
a9a0: 5f 63 72 65 61 74 65 5f 6d 6f 64 75 6c 65 5f 76  _create_module_v
a9b0: 32 28 29 5d 0a 70 72 69 6f 72 20 74 6f 20 69 73  2()].prior to is
a9c0: 73 75 69 6e 67 20 74 68 65 20 43 52 45 41 54 45  suing the CREATE
a9d0: 20 56 49 52 54 55 41 4c 20 54 41 42 4c 45 20 73   VIRTUAL TABLE s
a9e0: 74 61 74 65 6d 65 6e 74 2e 0a 54 68 65 20 6d 6f  tatement..The mo
a9f0: 64 75 6c 65 20 74 61 6b 65 73 20 7a 65 72 6f 20  dule takes zero 
aa00: 6f 72 20 6d 6f 72 65 20 63 6f 6d 6d 61 2d 73 65  or more comma-se
aa10: 70 61 72 61 74 65 64 20 61 72 67 75 6d 65 6e 74  parated argument
aa20: 73 2e 0a 54 68 65 20 61 72 67 75 6d 65 6e 74 73  s..The arguments
aa30: 20 63 61 6e 20 62 65 20 6a 75 73 74 20 61 62 6f   can be just abo
aa40: 75 74 20 61 6e 79 20 74 65 78 74 20 61 73 20 6c  ut any text as l
aa50: 6f 6e 67 20 61 73 20 69 74 20 68 61 73 20 62 61  ong as it has ba
aa60: 6c 61 6e 63 65 64 0a 70 61 72 65 6e 74 68 65 73  lanced.parenthes
aa70: 65 73 2e 20 20 54 68 65 20 61 72 67 75 6d 65 6e  es.  The argumen
aa80: 74 20 73 79 6e 74 61 78 20 69 73 20 73 75 66 66  t syntax is suff
aa90: 69 63 69 65 6e 74 6c 79 20 67 65 6e 65 72 61 6c  iciently general
aaa0: 20 74 68 61 74 20 74 68 65 0a 61 72 67 75 6d 65   that the.argume
aab0: 6e 74 73 20 63 61 6e 20 62 65 20 6d 61 64 65 20  nts can be made 
aac0: 74 6f 20 61 70 70 65 61 72 20 61 73 20 63 6f 6c  to appear as col
aad0: 75 6d 6e 20 64 65 66 69 6e 69 74 69 6f 6e 73 20  umn definitions 
aae0: 69 6e 20 61 20 74 72 61 64 69 74 69 6f 6e 61 6c  in a traditional
aaf0: 0a 5b 43 52 45 41 54 45 20 54 41 42 4c 45 5d 20  .[CREATE TABLE] 
ab00: 73 74 61 74 65 6d 65 6e 74 2e 20 20 0a 53 51 4c  statement.  .SQL
ab10: 69 74 65 20 70 61 73 73 65 73 20 74 68 65 20 6d  ite passes the m
ab20: 6f 64 75 6c 65 20 61 72 67 75 6d 65 6e 74 73 20  odule arguments 
ab30: 64 69 72 65 63 74 6c 79 0a 74 6f 20 74 68 65 20  directly.to the 
ab40: 5b 78 43 72 65 61 74 65 5d 20 61 6e 64 20 5b 78  [xCreate] and [x
ab50: 43 6f 6e 6e 65 63 74 5d 20 6d 65 74 68 6f 64 73  Connect] methods
ab60: 20 6f 66 20 74 68 65 20 6d 6f 64 75 6c 65 20 69   of the module i
ab70: 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 0a 77 69  mplementation.wi
ab80: 74 68 6f 75 74 20 61 6e 79 20 69 6e 74 65 72 70  thout any interp
ab90: 72 65 74 61 74 69 6f 6e 2e 20 20 49 74 20 69 73  retation.  It is
aba0: 20 74 68 65 20 72 65 73 70 6f 6e 73 69 62 69 6c   the responsibil
abb0: 69 74 79 0a 6f 66 20 74 68 65 20 6d 6f 64 75 6c  ity.of the modul
abc0: 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  e implementation
abd0: 20 74 6f 20 70 61 72 73 65 20 61 6e 64 20 69 6e   to parse and in
abe0: 74 65 72 70 72 65 74 20 69 74 73 20 6f 77 6e 20  terpret its own 
abf0: 61 72 67 75 6d 65 6e 74 73 2e 3c 2f 70 3e 0a 0a  arguments.</p>..
ac00: 3c 70 3e 41 20 76 69 72 74 75 61 6c 20 74 61 62  <p>A virtual tab
ac10: 6c 65 20 69 73 20 64 65 73 74 72 6f 79 65 64 20  le is destroyed 
ac20: 75 73 69 6e 67 20 74 68 65 20 6f 72 64 69 6e 61  using the ordina
ac30: 72 79 0a 5b 44 52 4f 50 20 54 41 42 4c 45 5d 20  ry.[DROP TABLE] 
ac40: 73 74 61 74 65 6d 65 6e 74 2e 20 20 54 68 65 72  statement.  Ther
ac50: 65 20 69 73 20 6e 6f 0a 44 52 4f 50 20 56 49 52  e is no.DROP VIR
ac60: 54 55 41 4c 20 54 41 42 4c 45 20 73 74 61 74 65  TUAL TABLE state
ac70: 6d 65 6e 74 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e  ment.</p>..<tcl>
ac80: 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  .###############
ac90: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
aca0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
acb0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
acc0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a  ###############.
acd0: 53 65 63 74 69 6f 6e 20 44 45 4c 45 54 45 20 64  Section DELETE d
ace0: 65 6c 65 74 65 20 7b 44 45 4c 45 54 45 20 44 45  elete {DELETE DE
acf0: 4c 45 54 45 73 7d 0a 0a 42 75 62 62 6c 65 44 69  LETEs}..BubbleDi
ad00: 61 67 72 61 6d 20 64 65 6c 65 74 65 2d 73 74 6d  agram delete-stm
ad10: 74 20 31 0a 42 75 62 62 6c 65 44 69 61 67 72 61  t 1.BubbleDiagra
ad20: 6d 20 71 75 61 6c 69 66 69 65 64 2d 74 61 62 6c  m qualified-tabl
ad30: 65 2d 6e 61 6d 65 0a 3c 2f 74 63 6c 3e 0a 0a 3c  e-name.</tcl>..<
ad40: 70 3e 54 68 65 20 44 45 4c 45 54 45 20 63 6f 6d  p>The DELETE com
ad50: 6d 61 6e 64 20 69 73 20 75 73 65 64 20 74 6f 20  mand is used to 
ad60: 72 65 6d 6f 76 65 20 72 65 63 6f 72 64 73 20 66  remove records f
ad70: 72 6f 6d 20 61 20 74 61 62 6c 65 2e 0a 54 68 65  rom a table..The
ad80: 20 63 6f 6d 6d 61 6e 64 20 63 6f 6e 73 69 73 74   command consist
ad90: 73 20 6f 66 20 74 68 65 20 22 44 45 4c 45 54 45  s of the "DELETE
ada0: 20 46 52 4f 4d 22 20 6b 65 79 77 6f 72 64 73 20   FROM" keywords 
adb0: 66 6f 6c 6c 6f 77 65 64 20 62 79 0a 74 68 65 20  followed by.the 
adc0: 6e 61 6d 65 20 6f 66 20 74 68 65 20 74 61 62 6c  name of the tabl
add0: 65 20 66 72 6f 6d 20 77 68 69 63 68 20 72 65 63  e from which rec
ade0: 6f 72 64 73 20 61 72 65 20 74 6f 20 62 65 20 72  ords are to be r
adf0: 65 6d 6f 76 65 64 2e 0a 3c 2f 70 3e 0a 0a 3c 70  emoved..</p>..<p
ae00: 3e 57 69 74 68 6f 75 74 20 61 20 57 48 45 52 45  >Without a WHERE
ae10: 20 63 6c 61 75 73 65 2c 20 61 6c 6c 20 72 6f 77   clause, all row
ae20: 73 20 6f 66 20 74 68 65 20 74 61 62 6c 65 20 61  s of the table a
ae30: 72 65 20 72 65 6d 6f 76 65 64 2e 0a 49 66 20 61  re removed..If a
ae40: 20 57 48 45 52 45 20 63 6c 61 75 73 65 20 69 73   WHERE clause is
ae50: 20 73 75 70 70 6c 69 65 64 2c 20 74 68 65 6e 20   supplied, then 
ae60: 6f 6e 6c 79 20 74 68 6f 73 65 20 72 6f 77 73 20  only those rows 
ae70: 74 68 61 74 20 6d 61 74 63 68 0a 74 68 65 20 65  that match.the e
ae80: 78 70 72 65 73 73 69 6f 6e 20 61 72 65 20 72 65  xpression are re
ae90: 6d 6f 76 65 64 2e 3c 2f 70 3e 0a 0a 3c 68 33 3e  moved.</p>..<h3>
aea0: 52 65 73 74 72 69 63 74 69 6f 6e 73 20 6f 6e 20  Restrictions on 
aeb0: 44 45 4c 45 54 45 20 53 74 61 74 65 6d 65 6e 74  DELETE Statement
aec0: 73 20 57 69 74 68 69 6e 20 43 52 45 41 54 45 20  s Within CREATE 
aed0: 54 52 49 47 47 45 52 3c 2f 68 33 3e 0a 0a 3c 70  TRIGGER</h3>..<p
aee0: 3e 54 68 65 72 65 20 61 72 65 20 61 64 64 69 74  >There are addit
aef0: 69 6f 6e 61 6c 20 73 79 6e 74 61 78 20 72 65 73  ional syntax res
af00: 74 72 69 63 74 69 6f 6e 73 20 6f 6e 20 44 45 4c  trictions on DEL
af10: 45 54 45 20 73 74 61 74 65 6d 65 6e 74 73 20 74  ETE statements t
af20: 68 61 74 0a 6f 63 63 75 72 20 77 69 74 68 69 6e  hat.occur within
af30: 20 74 68 65 20 62 6f 64 79 20 6f 66 20 61 20 5b   the body of a [
af40: 43 52 45 41 54 45 20 54 52 49 47 47 45 52 5d 20  CREATE TRIGGER] 
af50: 73 74 61 74 65 6d 65 6e 74 2e 20 20 54 68 65 20  statement.  The 
af60: 3c 69 3e 74 61 62 6c 65 2d 6e 61 6d 65 3c 2f 69  <i>table-name</i
af70: 3e 0a 6d 75 73 74 20 62 65 20 75 6e 71 75 61 6c  >.must be unqual
af80: 69 66 69 65 64 2e 20 0a 49 6e 20 6f 74 68 65 72  ified. .In other
af90: 20 77 6f 72 64 73 2c 20 74 68 65 20 3c 69 3e 64   words, the <i>d
afa0: 61 74 61 62 61 73 65 2d 6e 61 6d 65 3c 2f 69 3e  atabase-name</i>
afb0: 3c 62 3e 2e 3c 2f 62 3e 20 70 72 65 66 69 78 0a  <b>.</b> prefix.
afc0: 6f 6e 20 74 68 65 20 74 61 62 6c 65 20 6e 61 6d  on the table nam
afd0: 65 20 69 73 20 6e 6f 74 20 61 6c 6c 6f 77 65 64  e is not allowed
afe0: 20 77 69 74 68 69 6e 20 74 72 69 67 67 65 72 73   within triggers
aff0: 2e 20 0a 54 68 65 20 74 61 62 6c 65 20 66 72 6f  . .The table fro
b000: 6d 20 77 68 69 63 68 20 74 6f 20 64 65 6c 65 74  m which to delet
b010: 65 20 6d 75 73 74 20 62 65 20 69 6e 20 74 68 65  e must be in the
b020: 20 73 61 6d 65 0a 64 61 74 61 62 61 73 65 20 61   same.database a
b030: 73 20 74 68 65 20 74 61 62 6c 65 20 74 6f 20 77  s the table to w
b040: 68 69 63 68 20 74 68 65 20 74 72 69 67 67 65 72  hich the trigger
b050: 20 69 73 20 61 74 74 61 63 68 65 64 2e 3c 2f 70   is attached.</p
b060: 3e 0a 0a 3c 70 3e 54 68 65 20 49 4e 44 45 58 45  >..<p>The INDEXE
b070: 44 20 42 59 20 61 6e 64 20 4e 4f 54 20 49 4e 44  D BY and NOT IND
b080: 45 58 45 44 20 63 6c 61 75 73 65 73 20 61 72 65  EXED clauses are
b090: 20 6e 6f 74 20 61 6c 6c 6f 77 65 64 20 6f 6e 20   not allowed on 
b0a0: 44 45 4c 45 54 45 0a 73 74 61 74 65 6d 65 6e 74  DELETE.statement
b0b0: 73 20 77 69 74 68 69 6e 20 74 72 69 67 67 65 72  s within trigger
b0c0: 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 4c  s.</p>..<p>The L
b0d0: 49 4d 49 54 20 63 6c 61 75 73 65 20 28 64 65 73  IMIT clause (des
b0e0: 63 72 69 62 65 64 20 62 65 6c 6f 77 29 20 69 73  cribed below) is
b0f0: 20 75 6e 73 75 70 70 6f 72 74 65 64 20 77 69 74   unsupported wit
b100: 68 69 6e 20 74 72 69 67 67 65 72 73 2e 3c 2f 70  hin triggers.</p
b110: 3e 0a 0a 3c 74 63 6c 3e 68 64 5f 66 72 61 67 6d  >..<tcl>hd_fragm
b120: 65 6e 74 20 74 72 75 63 61 74 65 6f 70 74 20 7b  ent trucateopt {
b130: 74 72 75 6e 63 61 74 65 20 6f 70 74 69 6d 69 7a  truncate optimiz
b140: 61 74 69 6f 6e 7d 3c 2f 74 63 6c 3e 0a 3c 68 33  ation}</tcl>.<h3
b150: 3e 54 68 65 20 54 72 75 6e 63 61 74 65 20 4f 70  >The Truncate Op
b160: 74 69 6d 69 7a 61 74 69 6f 6e 3c 2f 68 33 3e 0a  timization</h3>.
b170: 0a 3c 70 3e 57 68 65 6e 20 74 68 65 20 57 48 45  .<p>When the WHE
b180: 52 45 20 69 73 20 6f 6d 69 74 74 65 64 20 66 72  RE is omitted fr
b190: 6f 6d 20 61 20 44 45 4c 45 54 45 20 73 74 61 74  om a DELETE stat
b1a0: 65 6d 65 6e 74 20 61 6e 64 20 74 68 65 20 74 61  ement and the ta
b1b0: 62 6c 65 0a 62 65 69 6e 67 20 64 65 6c 65 74 65  ble.being delete
b1c0: 64 20 68 61 73 20 6e 6f 20 74 72 69 67 67 65 72  d has no trigger
b1d0: 73 2c 0a 53 51 4c 69 74 65 20 75 73 65 73 20 61  s,.SQLite uses a
b1e0: 6e 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20 74  n optimization t
b1f0: 6f 20 65 72 61 73 65 20 74 68 65 20 65 6e 74 69  o erase the enti
b200: 72 65 20 74 61 62 6c 65 20 63 6f 6e 74 65 6e 74  re table content
b210: 0a 77 69 74 68 6f 75 74 20 68 61 76 69 6e 67 20  .without having 
b220: 74 6f 20 76 69 73 69 74 20 65 61 63 68 20 72 6f  to visit each ro
b230: 77 20 6f 66 20 74 68 65 20 74 61 62 6c 65 20 69  w of the table i
b240: 6e 64 69 76 69 64 75 61 6c 2e 0a 54 68 69 73 20  ndividual..This 
b250: 22 74 72 75 6e 63 61 74 65 22 20 6f 70 74 69 6d  "truncate" optim
b260: 69 7a 61 74 69 6f 6e 20 6d 61 6b 65 73 20 74 68  ization makes th
b270: 65 20 64 65 6c 65 74 65 20 72 75 6e 20 6d 75 63  e delete run muc
b280: 68 20 66 61 73 74 65 72 2e 0a 50 72 69 6f 72 20  h faster..Prior 
b290: 74 6f 20 53 51 4c 69 74 65 20 5b 76 65 72 73 69  to SQLite [versi
b2a0: 6f 6e 20 33 2e 36 2e 35 5d 2c 20 74 68 65 20 74  on 3.6.5], the t
b2b0: 72 75 6e 63 61 74 65 20 6f 70 74 69 6d 69 7a 61  runcate optimiza
b2c0: 74 69 6f 6e 0a 61 6c 73 6f 20 6d 65 61 6e 74 20  tion.also meant 
b2d0: 74 68 61 74 20 74 68 65 20 5b 73 71 6c 69 74 65  that the [sqlite
b2e0: 33 5f 63 68 61 6e 67 65 73 28 29 5d 20 61 6e 64  3_changes()] and
b2f0: 0a 5b 73 71 6c 69 74 65 33 5f 74 6f 74 61 6c 5f  .[sqlite3_total_
b300: 63 68 61 6e 67 65 73 28 29 5d 20 69 6e 74 65 72  changes()] inter
b310: 66 61 63 65 73 0a 61 6e 64 20 74 68 65 20 5b 63  faces.and the [c
b320: 6f 75 6e 74 5f 63 68 61 6e 67 65 73 20 70 72 61  ount_changes pra
b330: 67 6d 61 5d 0a 77 69 6c 6c 20 6e 6f 74 20 61 63  gma].will not ac
b340: 74 75 61 6c 6c 79 20 72 65 74 75 72 6e 20 74 68  tually return th
b350: 65 20 6e 75 6d 62 65 72 20 6f 66 20 64 65 6c 65  e number of dele
b360: 74 65 64 20 72 6f 77 73 2e 20 20 0a 54 68 61 74  ted rows.  .That
b370: 20 70 72 6f 62 6c 65 6d 20 68 61 73 20 62 65 65   problem has bee
b380: 6e 20 66 69 78 65 64 20 61 73 20 6f 66 20 5b 76  n fixed as of [v
b390: 65 72 73 69 6f 6e 20 33 2e 36 2e 35 5d 2e 0a 0a  ersion 3.6.5]...
b3a0: 3c 70 3e 54 68 65 20 74 72 75 6e 63 61 74 65 20  <p>The truncate 
b3b0: 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20 63 61 6e  optimization can
b3c0: 20 62 65 20 70 65 72 6d 61 6e 65 6e 74 6c 79 20   be permanently 
b3d0: 64 69 73 61 62 6c 65 64 20 66 6f 72 20 61 6c 6c  disabled for all
b3e0: 20 71 75 65 72 69 65 73 0a 62 79 20 72 65 63 6f   queries.by reco
b3f0: 6d 70 69 6c 69 6e 67 0a 53 51 4c 69 74 65 20 77  mpiling.SQLite w
b400: 69 74 68 20 74 68 65 20 5b 53 51 4c 49 54 45 5f  ith the [SQLITE_
b410: 4f 4d 49 54 5f 54 52 55 4e 43 41 54 45 5f 4f 50  OMIT_TRUNCATE_OP
b420: 54 49 4d 49 5a 41 54 49 4f 4e 5d 20 63 6f 6d 70  TIMIZATION] comp
b430: 69 6c 65 2d 74 69 6d 65 20 73 77 69 74 63 68 2e  ile-time switch.
b440: 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 74 72 75  </p>..<p>The tru
b450: 6e 63 61 74 65 20 6f 70 74 69 6d 69 7a 61 74 69  ncate optimizati
b460: 6f 6e 20 63 61 6e 20 61 6c 73 6f 20 62 65 20 64  on can also be d
b470: 69 73 61 62 6c 65 64 20 61 74 20 72 75 6e 74 69  isabled at runti
b480: 6d 65 20 75 73 69 6e 67 0a 74 68 65 20 5b 73 71  me using.the [sq
b490: 6c 69 74 65 33 5f 73 65 74 5f 61 75 74 68 6f 72  lite3_set_author
b4a0: 69 7a 65 72 28 29 5d 20 69 6e 74 65 72 66 61 63  izer()] interfac
b4b0: 65 2e 20 20 49 66 20 61 6e 20 61 75 74 68 6f 72  e.  If an author
b4c0: 69 7a 65 72 20 63 61 6c 6c 62 61 63 6b 0a 72 65  izer callback.re
b4d0: 74 75 72 6e 73 20 5b 53 51 4c 49 54 45 5f 49 47  turns [SQLITE_IG
b4e0: 4e 4f 52 45 5d 20 66 6f 72 20 61 6e 20 5b 53 51  NORE] for an [SQ
b4f0: 4c 49 54 45 5f 44 45 4c 45 54 45 5d 20 61 63 74  LITE_DELETE] act
b500: 69 6f 6e 20 63 6f 64 65 2c 20 74 68 65 6e 0a 74  ion code, then.t
b510: 68 65 20 44 45 4c 45 54 45 20 6f 70 65 72 61 74  he DELETE operat
b520: 69 6f 6e 20 77 69 6c 6c 20 70 72 6f 63 65 65 64  ion will proceed
b530: 20 62 75 74 20 74 68 65 20 74 72 75 6e 63 61 74   but the truncat
b540: 65 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20 77  e optimization w
b550: 69 6c 6c 0a 62 65 20 62 79 70 61 73 73 65 64 20  ill.be bypassed 
b560: 61 6e 64 20 72 6f 77 73 20 77 69 6c 6c 20 62 65  and rows will be
b570: 20 64 65 6c 65 74 65 64 20 6f 6e 65 20 62 79 20   deleted one by 
b580: 6f 6e 65 2e 3c 2f 70 3e 0a 0a 3c 68 33 3e 55 73  one.</p>..<h3>Us
b590: 65 20 4f 66 20 4c 49 4d 49 54 3c 2f 68 33 3e 0a  e Of LIMIT</h3>.
b5a0: 0a 3c 70 3e 49 66 20 53 51 4c 69 74 65 20 69 73  .<p>If SQLite is
b5b0: 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 74   compiled with t
b5c0: 68 65 20 5b 53 51 4c 49 54 45 5f 45 4e 41 42 4c  he [SQLITE_ENABL
b5d0: 45 5f 55 50 44 41 54 45 5f 44 45 4c 45 54 45 5f  E_UPDATE_DELETE_
b5e0: 4c 49 4d 49 54 5d 0a 63 6f 6d 70 69 6c 65 2d 74  LIMIT].compile-t
b5f0: 69 6d 65 20 6f 70 74 69 6f 6e 2c 20 74 68 65 6e  ime option, then
b600: 20 74 68 65 20 73 79 6e 74 61 78 20 6f 66 20 74   the syntax of t
b610: 68 65 20 44 45 4c 45 54 45 20 73 74 61 74 65 6d  he DELETE statem
b620: 65 6e 74 20 69 73 0a 65 78 74 65 6e 64 65 64 20  ent is.extended 
b630: 62 79 20 74 68 65 20 61 64 64 69 74 69 6f 6e 20  by the addition 
b640: 6f 66 20 6f 70 74 69 6f 6e 61 6c 20 4f 52 44 45  of optional ORDE
b650: 52 20 42 59 20 61 6e 64 20 4c 49 4d 49 54 20 63  R BY and LIMIT c
b660: 6c 61 75 73 65 73 3a 3c 2f 70 3e 0a 0a 3c 74 63  lauses:</p>..<tc
b670: 6c 3e 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20  l>BubbleDiagram 
b680: 64 65 6c 65 74 65 2d 73 74 6d 74 2d 6c 69 6d 69  delete-stmt-limi
b690: 74 65 64 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68  ted</tcl>..<p>Th
b6a0: 65 20 6f 70 74 69 6f 6e 61 6c 20 4c 49 4d 49 54  e optional LIMIT
b6b0: 20 63 6c 61 75 73 65 20 63 61 6e 20 62 65 20 75   clause can be u
b6c0: 73 65 64 20 74 6f 20 6c 69 6d 69 74 20 74 68 65  sed to limit the
b6d0: 20 6e 75 6d 62 65 72 20 6f 66 0a 72 6f 77 73 20   number of.rows 
b6e0: 64 65 6c 65 74 65 64 2c 20 61 6e 64 20 74 68 65  deleted, and the
b6f0: 72 65 62 79 20 6c 69 6d 69 74 20 74 68 65 20 73  reby limit the s
b700: 69 7a 65 20 6f 66 20 74 68 65 20 74 72 61 6e 73  ize of the trans
b710: 61 63 74 69 6f 6e 2e 0a 54 68 65 20 4f 52 44 45  action..The ORDE
b720: 52 20 42 59 20 63 6c 61 75 73 65 20 69 73 20 75  R BY clause is u
b730: 73 65 64 20 6f 6e 6c 79 20 74 6f 20 64 65 74 65  sed only to dete
b740: 72 6d 69 6e 65 20 77 68 69 63 68 20 72 6f 77 73  rmine which rows
b750: 20 66 61 6c 6c 0a 77 69 74 68 69 6e 20 74 68 65   fall.within the
b760: 20 4c 49 4d 49 54 2e 20 20 54 68 65 20 6f 72 64   LIMIT.  The ord
b770: 65 72 20 69 6e 20 77 68 69 63 68 20 72 6f 77 73  er in which rows
b780: 20 61 72 65 20 64 65 6c 65 74 65 64 20 69 73 20   are deleted is 
b790: 61 72 62 69 74 72 61 72 79 0a 61 6e 64 20 69 73  arbitrary.and is
b7a0: 20 6e 6f 74 20 64 65 74 65 72 6d 69 6e 65 64 20   not determined 
b7b0: 62 79 20 74 68 65 20 4f 52 44 45 52 20 42 59 20  by the ORDER BY 
b7c0: 63 6c 61 75 73 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e  clause.</p>..<p>
b7d0: 54 68 65 20 70 72 65 73 65 6e 63 65 20 6f 66 20  The presence of 
b7e0: 61 20 4c 49 4d 49 54 20 63 6c 61 75 73 65 20 64  a LIMIT clause d
b7f0: 65 66 65 61 74 73 20 74 68 65 20 74 72 75 6e 63  efeats the trunc
b800: 61 74 65 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e  ate optimization
b810: 0a 63 61 75 73 69 6e 67 20 61 6c 6c 20 72 6f 77  .causing all row
b820: 73 20 62 65 69 6e 67 20 64 65 6c 65 74 65 64 20  s being deleted 
b830: 74 6f 20 62 65 20 76 69 73 69 74 65 64 2e 3c 2f  to be visited.</
b840: 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23  p>..<tcl>.######
b850: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
b860: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
b870: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
b880: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
b890: 23 23 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f  #########.Sectio
b8a0: 6e 20 7b 44 45 54 41 43 48 20 44 41 54 41 42 41  n {DETACH DATABA
b8b0: 53 45 7d 20 64 65 74 61 63 68 20 44 45 54 41 43  SE} detach DETAC
b8c0: 48 0a 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d  H..BubbleDiagram
b8d0: 20 64 65 74 61 63 68 2d 73 74 6d 74 20 31 0a 3c   detach-stmt 1.<
b8e0: 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 69 73 20 73  /tcl>..<p>This s
b8f0: 74 61 74 65 6d 65 6e 74 20 64 65 74 61 63 68 65  tatement detache
b900: 73 20 61 6e 20 61 64 64 69 74 69 6f 6e 61 6c 20  s an additional 
b910: 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
b920: 69 6f 6e 20 70 72 65 76 69 6f 75 73 6c 79 20 0a  ion previously .
b930: 61 74 74 61 63 68 65 64 20 75 73 69 6e 67 20 74  attached using t
b940: 68 65 20 5b 41 54 54 41 43 48 5d 20 73 74 61 74  he [ATTACH] stat
b950: 65 6d 65 6e 74 2e 20 20 0a 49 74 20 69 73 20 70  ement.  .It is p
b960: 6f 73 73 69 62 6c 65 20 74 6f 20 68 61 76 65 20  ossible to have 
b970: 74 68 65 20 73 61 6d 65 20 64 61 74 61 62 61 73  the same databas
b980: 65 20 66 69 6c 65 20 61 74 74 61 63 68 65 64 20  e file attached 
b990: 6d 75 6c 74 69 70 6c 65 20 74 69 6d 65 73 20 75  multiple times u
b9a0: 73 69 6e 67 20 0a 64 69 66 66 65 72 65 6e 74 20  sing .different 
b9b0: 6e 61 6d 65 73 2c 20 61 6e 64 20 64 65 74 61 63  names, and detac
b9c0: 68 69 6e 67 20 6f 6e 65 20 63 6f 6e 6e 65 63 74  hing one connect
b9d0: 69 6f 6e 20 74 6f 20 61 20 66 69 6c 65 20 77 69  ion to a file wi
b9e0: 6c 6c 20 6c 65 61 76 65 20 74 68 65 20 0a 6f 74  ll leave the .ot
b9f0: 68 65 72 73 20 69 6e 74 61 63 74 2e 3c 2f 70 3e  hers intact.</p>
ba00: 0a 0a 3c 70 3e 54 68 69 73 20 73 74 61 74 65 6d  ..<p>This statem
ba10: 65 6e 74 20 77 69 6c 6c 20 66 61 69 6c 20 69 66  ent will fail if
ba20: 20 53 51 4c 69 74 65 20 69 73 20 69 6e 20 74 68   SQLite is in th
ba30: 65 20 6d 69 64 64 6c 65 20 6f 66 20 61 20 74 72  e middle of a tr
ba40: 61 6e 73 61 63 74 69 6f 6e 2e 3c 2f 70 3e 0a 0a  ansaction.</p>..
ba50: 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23  .<tcl>.#########
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 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
baa0: 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b 44  #####.Section {D
bab0: 52 4f 50 20 49 4e 44 45 58 7d 20 64 72 6f 70 69  ROP INDEX} dropi
bac0: 6e 64 65 78 20 7b 7b 44 52 4f 50 20 49 4e 44 45  ndex {{DROP INDE
bad0: 58 7d 7d 0a 0a 42 75 62 62 6c 65 44 69 61 67 72  X}}..BubbleDiagr
bae0: 61 6d 20 64 72 6f 70 2d 69 6e 64 65 78 2d 73 74  am drop-index-st
baf0: 6d 74 20 31 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e  mt 1.</tcl>..<p>
bb00: 54 68 65 20 44 52 4f 50 20 49 4e 44 45 58 20 73  The DROP INDEX s
bb10: 74 61 74 65 6d 65 6e 74 20 72 65 6d 6f 76 65 73  tatement removes
bb20: 20 61 6e 20 69 6e 64 65 78 20 61 64 64 65 64 0a   an index added.
bb30: 77 69 74 68 20 74 68 65 20 5b 43 52 45 41 54 45  with the [CREATE
bb40: 20 49 4e 44 45 58 5d 20 73 74 61 74 65 6d 65 6e   INDEX] statemen
bb50: 74 2e 20 20 54 68 65 20 69 6e 64 65 78 20 6e 61  t.  The index na
bb60: 6d 65 64 20 69 73 20 63 6f 6d 70 6c 65 74 65 6c  med is completel
bb70: 79 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d 0a 74  y removed from.t
bb80: 68 65 20 64 69 73 6b 2e 20 20 54 68 65 20 6f 6e  he disk.  The on
bb90: 6c 79 20 77 61 79 20 74 6f 20 72 65 63 6f 76 65  ly way to recove
bba0: 72 20 74 68 65 20 69 6e 64 65 78 20 69 73 20 74  r the index is t
bbb0: 6f 20 72 65 65 6e 74 65 72 20 74 68 65 0a 61 70  o reenter the.ap
bbc0: 70 72 6f 70 72 69 61 74 65 20 5b 43 52 45 41 54  propriate [CREAT
bbd0: 45 20 49 4e 44 45 58 5d 20 63 6f 6d 6d 61 6e 64  E INDEX] command
bbe0: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 44 52  .</p>..<p>The DR
bbf0: 4f 50 20 49 4e 44 45 58 20 73 74 61 74 65 6d 65  OP INDEX stateme
bc00: 6e 74 20 64 6f 65 73 20 6e 6f 74 20 72 65 64 75  nt does not redu
bc10: 63 65 20 74 68 65 20 73 69 7a 65 20 6f 66 20 74  ce the size of t
bc20: 68 65 20 64 61 74 61 62 61 73 65 20 0a 66 69 6c  he database .fil
bc30: 65 20 69 6e 20 74 68 65 20 64 65 66 61 75 6c 74  e in the default
bc40: 20 6d 6f 64 65 2e 0a 45 6d 70 74 79 20 73 70 61   mode..Empty spa
bc50: 63 65 20 69 6e 20 74 68 65 20 64 61 74 61 62 61  ce in the databa
bc60: 73 65 20 69 73 20 72 65 74 61 69 6e 65 64 20 66  se is retained f
bc70: 6f 72 20 6c 61 74 65 72 20 5b 49 4e 53 45 52 54  or later [INSERT
bc80: 5d 20 73 74 61 74 65 6d 65 6e 74 73 2e 20 20 54  ] statements.  T
bc90: 6f 20 0a 72 65 6d 6f 76 65 20 66 72 65 65 20 73  o .remove free s
bca0: 70 61 63 65 20 69 6e 20 74 68 65 20 64 61 74 61  pace in the data
bcb0: 62 61 73 65 2c 20 75 73 65 20 74 68 65 20 5b 56  base, use the [V
bcc0: 41 43 55 55 4d 5d 0a 63 6f 6d 6d 61 6e 64 2e 20  ACUUM].command. 
bcd0: 20 49 66 20 5b 61 75 74 6f 5f 76 61 63 75 75 6d   If [auto_vacuum
bce0: 5d 20 6d 6f 64 65 20 69 73 20 65 6e 61 62 6c 65  ] mode is enable
bcf0: 64 20 66 6f 72 20 61 20 64 61 74 61 62 61 73 65  d for a database
bd00: 20 74 68 65 6e 20 73 70 61 63 65 0a 77 69 6c 6c   then space.will
bd10: 20 62 65 20 66 72 65 65 64 20 61 75 74 6f 6d 61   be freed automa
bd20: 74 69 63 61 6c 6c 79 20 62 79 20 44 52 4f 50 20  tically by DROP 
bd30: 49 4e 44 45 58 2e 3c 2f 70 3e 0a 0a 0a 3c 74 63  INDEX.</p>...<tc
bd40: 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23 23  l>.#############
bd50: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
bd60: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
bd70: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
bd80: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
bd90: 23 0a 53 65 63 74 69 6f 6e 20 7b 44 52 4f 50 20  #.Section {DROP 
bda0: 54 41 42 4c 45 7d 20 64 72 6f 70 74 61 62 6c 65  TABLE} droptable
bdb0: 20 7b 7b 44 52 4f 50 20 54 41 42 4c 45 7d 7d 0a   {{DROP TABLE}}.
bdc0: 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 64  .BubbleDiagram d
bdd0: 72 6f 70 2d 74 61 62 6c 65 2d 73 74 6d 74 20 31  rop-table-stmt 1
bde0: 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20  .</tcl>..<p>The 
bdf0: 44 52 4f 50 20 54 41 42 4c 45 20 73 74 61 74 65  DROP TABLE state
be00: 6d 65 6e 74 20 72 65 6d 6f 76 65 73 20 61 20 74  ment removes a t
be10: 61 62 6c 65 20 61 64 64 65 64 20 77 69 74 68 20  able added with 
be20: 74 68 65 0a 5b 43 52 45 41 54 45 20 54 41 42 4c  the.[CREATE TABL
be30: 45 5d 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 54  E] statement.  T
be40: 68 65 20 6e 61 6d 65 20 73 70 65 63 69 66 69 65  he name specifie
be50: 64 20 69 73 20 74 68 65 0a 74 61 62 6c 65 20 6e  d is the.table n
be60: 61 6d 65 2e 20 20 49 74 20 69 73 20 63 6f 6d 70  ame.  It is comp
be70: 6c 65 74 65 6c 79 20 72 65 6d 6f 76 65 64 20 66  letely removed f
be80: 72 6f 6d 20 74 68 65 20 64 61 74 61 62 61 73 65  rom the database
be90: 20 73 63 68 65 6d 61 20 61 6e 64 20 74 68 65 20   schema and the 
bea0: 0a 64 69 73 6b 20 66 69 6c 65 2e 20 20 54 68 65  .disk file.  The
beb0: 20 74 61 62 6c 65 20 63 61 6e 20 6e 6f 74 20 62   table can not b
bec0: 65 20 72 65 63 6f 76 65 72 65 64 2e 20 20 41 6c  e recovered.  Al
bed0: 6c 20 69 6e 64 69 63 65 73 20 61 6e 64 20 74 72  l indices and tr
bee0: 69 67 67 65 72 73 0a 61 73 73 6f 63 69 61 74 65  iggers.associate
bef0: 64 20 77 69 74 68 20 74 68 65 20 74 61 62 6c 65  d with the table
bf00: 20 61 72 65 20 61 6c 73 6f 20 64 65 6c 65 74 65   are also delete
bf10: 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 44  d.</p>..<p>The D
bf20: 52 4f 50 20 54 41 42 4c 45 20 73 74 61 74 65 6d  ROP TABLE statem
bf30: 65 6e 74 20 64 6f 65 73 20 6e 6f 74 20 72 65 64  ent does not red
bf40: 75 63 65 20 74 68 65 20 73 69 7a 65 20 6f 66 20  uce the size of 
bf50: 74 68 65 20 64 61 74 61 62 61 73 65 20 0a 66 69  the database .fi
bf60: 6c 65 20 69 6e 20 74 68 65 20 64 65 66 61 75 6c  le in the defaul
bf70: 74 20 6d 6f 64 65 2e 20 20 45 6d 70 74 79 20 73  t mode.  Empty s
bf80: 70 61 63 65 20 69 6e 20 74 68 65 20 64 61 74 61  pace in the data
bf90: 62 61 73 65 20 69 73 20 72 65 74 61 69 6e 65 64  base is retained
bfa0: 20 66 6f 72 0a 6c 61 74 65 72 20 5b 49 4e 53 45   for.later [INSE
bfb0: 52 54 5d 20 73 74 61 74 65 6d 65 6e 74 73 2e 20  RT] statements. 
bfc0: 20 54 6f 20 0a 72 65 6d 6f 76 65 20 66 72 65 65   To .remove free
bfd0: 20 73 70 61 63 65 20 69 6e 20 74 68 65 20 64 61   space in the da
bfe0: 74 61 62 61 73 65 2c 20 0a 75 73 65 20 74 68 65  tabase, .use the
bff0: 20 5b 56 41 43 55 55 4d 5d 20 73 74 61 74 65 6d   [VACUUM] statem
c000: 65 6e 74 2e 0a 49 66 20 5b 61 75 74 6f 5f 76 61  ent..If [auto_va
c010: 63 75 75 6d 5d 20 6d 6f 64 65 20 69 73 20 65 6e  cuum] mode is en
c020: 61 62 6c 65 64 20 66 6f 72 20 61 20 64 61 74 61  abled for a data
c030: 62 61 73 65 20 74 68 65 6e 20 73 70 61 63 65 0a  base then space.
c040: 77 69 6c 6c 20 62 65 20 66 72 65 65 64 20 61 75  will be freed au
c050: 74 6f 6d 61 74 69 63 61 6c 6c 79 20 62 79 20 44  tomatically by D
c060: 52 4f 50 20 54 41 42 4c 45 2e 3c 2f 70 3e 0a 0a  ROP TABLE.</p>..
c070: 3c 70 3e 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20  <p>The optional 
c080: 49 46 20 45 58 49 53 54 53 20 63 6c 61 75 73 65  IF EXISTS clause
c090: 20 73 75 70 70 72 65 73 73 65 73 20 74 68 65 20   suppresses the 
c0a0: 65 72 72 6f 72 20 74 68 61 74 20 77 6f 75 6c 64  error that would
c0b0: 20 6e 6f 72 6d 61 6c 6c 79 0a 72 65 73 75 6c 74   normally.result
c0c0: 20 69 66 20 74 68 65 20 74 61 62 6c 65 20 64 6f   if the table do
c0d0: 65 73 20 6e 6f 74 20 65 78 69 73 74 2e 3c 2f 70  es not exist.</p
c0e0: 3e 0a 0a 3c 70 3e 5e 49 66 20 5b 66 6f 72 65 69  >..<p>^If [forei
c0f0: 67 6e 20 6b 65 79 20 63 6f 6e 73 74 72 61 69 6e  gn key constrain
c100: 74 73 5d 20 61 72 65 20 65 6e 61 62 6c 65 64 2c  ts] are enabled,
c110: 20 61 20 44 52 4f 50 20 54 41 42 4c 45 20 63 6f   a DROP TABLE co
c120: 6d 6d 61 6e 64 20 70 65 72 66 6f 72 6d 73 20 61  mmand performs a
c130: 6e 0a 69 6d 70 6c 69 63 69 74 20 5b 44 45 4c 45  n.implicit [DELE
c140: 54 45 20 7c 20 44 45 4c 45 54 45 20 46 52 4f 4d  TE | DELETE FROM
c150: 20 26 6c 74 3b 74 62 6c 26 67 74 3b 5d 20 63 6f   &lt;tbl&gt;] co
c160: 6d 6d 61 6e 64 20 62 65 66 6f 72 65 20 72 65 6d  mmand before rem
c170: 6f 76 69 6e 67 20 74 68 65 0a 74 61 62 6c 65 20  oving the.table 
c180: 66 72 6f 6d 20 74 68 65 20 64 61 74 61 62 61 73  from the databas
c190: 65 20 73 63 68 65 6d 61 2e 20 5e 41 6e 79 20 74  e schema. ^Any t
c1a0: 72 69 67 67 65 72 73 20 61 74 74 61 63 68 65 64  riggers attached
c1b0: 20 74 6f 20 74 68 65 20 74 61 62 6c 65 20 61 72   to the table ar
c1c0: 65 0a 64 72 6f 70 70 65 64 20 66 72 6f 6d 20 74  e.dropped from t
c1d0: 68 65 20 64 61 74 61 62 61 73 65 20 73 63 68 65  he database sche
c1e0: 6d 61 20 62 65 66 6f 72 65 20 74 68 65 20 69 6d  ma before the im
c1f0: 70 6c 69 63 69 74 20 44 45 4c 45 54 45 20 46 52  plicit DELETE FR
c200: 4f 4d 20 26 6c 74 3b 74 62 6c 26 67 74 3b 20 0a  OM &lt;tbl&gt; .
c210: 69 73 20 65 78 65 63 75 74 65 64 2c 20 73 6f 20  is executed, so 
c220: 74 68 69 73 20 63 61 6e 6e 6f 74 20 63 61 75 73  this cannot caus
c230: 65 20 61 6e 79 20 74 72 69 67 67 65 72 73 20 74  e any triggers t
c240: 6f 20 66 69 72 65 2e 20 42 79 20 63 6f 6e 74 72  o fire. By contr
c250: 61 73 74 2c 20 5e 61 6e 0a 69 6d 70 6c 69 63 69  ast, ^an.implici
c260: 74 20 44 45 4c 45 54 45 20 46 52 4f 4d 20 26 6c  t DELETE FROM &l
c270: 74 3b 74 62 6c 26 67 74 3b 20 64 6f 65 73 20 63  t;tbl&gt; does c
c280: 61 75 73 65 20 61 6e 79 20 63 6f 6e 66 69 67 75  ause any configu
c290: 72 65 64 0a 5b 66 6f 72 65 69 67 6e 20 6b 65 79  red.[foreign key
c2a0: 20 61 63 74 69 6f 6e 73 5d 20 74 6f 20 74 61 6b   actions] to tak
c2b0: 65 20 70 6c 61 63 65 2e 20 0a 5e 49 66 20 74 68  e place. .^If th
c2c0: 65 20 69 6d 70 6c 69 63 69 74 20 44 45 4c 45 54  e implicit DELET
c2d0: 45 20 46 52 4f 4d 20 26 6c 74 3b 74 62 6c 26 67  E FROM &lt;tbl&g
c2e0: 74 3b 20 65 78 65 63 75 74 65 64 0a 61 73 20 70  t; executed.as p
c2f0: 61 72 74 20 6f 66 20 61 20 44 52 4f 50 20 54 41  art of a DROP TA
c300: 42 4c 45 20 63 6f 6d 6d 61 6e 64 20 76 69 6f 6c  BLE command viol
c310: 61 74 65 73 20 61 6e 79 20 69 6d 6d 65 64 69 61  ates any immedia
c320: 74 65 20 66 6f 72 65 69 67 6e 20 6b 65 79 20 63  te foreign key c
c330: 6f 6e 73 74 72 61 69 6e 74 73 2c 0a 61 6e 20 65  onstraints,.an e
c340: 72 72 6f 72 20 69 73 20 72 65 74 75 72 6e 65 64  rror is returned
c350: 20 61 6e 64 20 74 68 65 20 74 61 62 6c 65 20 69   and the table i
c360: 73 20 6e 6f 74 20 64 72 6f 70 70 65 64 2e 20 5e  s not dropped. ^
c370: 49 66 20 0a 74 68 65 20 69 6d 70 6c 69 63 69 74  If .the implicit
c380: 20 44 45 4c 45 54 45 20 46 52 4f 4d 20 26 6c 74   DELETE FROM &lt
c390: 3b 74 62 6c 26 67 74 3b 20 63 61 75 73 65 73 20  ;tbl&gt; causes 
c3a0: 61 6e 79 20 0a 64 65 66 65 72 72 65 64 20 66 6f  any .deferred fo
c3b0: 72 65 69 67 6e 20 6b 65 79 20 63 6f 6e 73 74 72  reign key constr
c3c0: 61 69 6e 74 73 20 74 6f 20 62 65 20 76 69 6f 6c  aints to be viol
c3d0: 61 74 65 64 2c 20 61 6e 64 20 74 68 65 20 76 69  ated, and the vi
c3e0: 6f 6c 61 74 69 6f 6e 73 20 73 74 69 6c 6c 0a 65  olations still.e
c3f0: 78 69 73 74 20 77 68 65 6e 20 74 68 65 20 74 72  xist when the tr
c400: 61 6e 73 61 63 74 69 6f 6e 20 69 73 20 63 6f 6d  ansaction is com
c410: 6d 69 74 74 65 64 2c 20 61 6e 20 65 72 72 6f 72  mitted, an error
c420: 20 69 73 20 72 65 74 75 72 6e 65 64 20 61 74 20   is returned at 
c430: 74 68 65 20 74 69 6d 65 0a 6f 66 20 63 6f 6d 6d  the time.of comm
c440: 69 74 2e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23  it...<tcl>.#####
c450: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c460: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c470: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c480: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c490: 23 23 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f  #########.Sectio
c4a0: 6e 20 7b 44 52 4f 50 20 54 52 49 47 47 45 52 7d  n {DROP TRIGGER}
c4b0: 20 64 72 6f 70 74 72 69 67 67 65 72 20 7b 7b 44   droptrigger {{D
c4c0: 52 4f 50 20 54 52 49 47 47 45 52 7d 7d 0a 0a 42  ROP TRIGGER}}..B
c4d0: 75 62 62 6c 65 44 69 61 67 72 61 6d 20 64 72 6f  ubbleDiagram dro
c4e0: 70 2d 74 72 69 67 67 65 72 2d 73 74 6d 74 20 31  p-trigger-stmt 1
c4f0: 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20  .</tcl>..<p>The 
c500: 44 52 4f 50 20 54 52 49 47 47 45 52 20 73 74 61  DROP TRIGGER sta
c510: 74 65 6d 65 6e 74 20 72 65 6d 6f 76 65 73 20 61  tement removes a
c520: 20 74 72 69 67 67 65 72 20 63 72 65 61 74 65 64   trigger created
c530: 20 62 79 20 74 68 65 20 0a 5b 43 52 45 41 54 45   by the .[CREATE
c540: 20 54 52 49 47 47 45 52 5d 20 73 74 61 74 65 6d   TRIGGER] statem
c550: 65 6e 74 2e 20 20 54 68 65 20 74 72 69 67 67 65  ent.  The trigge
c560: 72 20 69 73 20 0a 64 65 6c 65 74 65 64 20 66 72  r is .deleted fr
c570: 6f 6d 20 74 68 65 20 64 61 74 61 62 61 73 65 20  om the database 
c580: 73 63 68 65 6d 61 2e 20 4e 6f 74 65 20 74 68 61  schema. Note tha
c590: 74 20 74 72 69 67 67 65 72 73 20 61 72 65 20 61  t triggers are a
c5a0: 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 0a 64 72  utomatically .dr
c5b0: 6f 70 70 65 64 20 77 68 65 6e 20 74 68 65 20 61  opped when the a
c5c0: 73 73 6f 63 69 61 74 65 64 20 74 61 62 6c 65 20  ssociated table 
c5d0: 69 73 20 64 72 6f 70 70 65 64 2e 3c 2f 70 3e 0a  is dropped.</p>.
c5e0: 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23  .<tcl>.#########
c5f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c600: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c610: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c620: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c630: 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b 44  #####.Section {D
c640: 52 4f 50 20 56 49 45 57 7d 20 64 72 6f 70 76 69  ROP VIEW} dropvi
c650: 65 77 20 7b 7b 44 52 4f 50 20 56 49 45 57 7d 7d  ew {{DROP VIEW}}
c660: 0a 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20  ..BubbleDiagram 
c670: 64 72 6f 70 2d 76 69 65 77 2d 73 74 6d 74 20 31  drop-view-stmt 1
c680: 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20  .</tcl>..<p>The 
c690: 44 52 4f 50 20 56 49 45 57 20 73 74 61 74 65 6d  DROP VIEW statem
c6a0: 65 6e 74 20 72 65 6d 6f 76 65 73 20 61 20 76 69  ent removes a vi
c6b0: 65 77 20 63 72 65 61 74 65 64 20 62 79 20 74 68  ew created by th
c6c0: 65 0a 5b 43 52 45 41 54 45 20 56 49 45 57 5d 20  e.[CREATE VIEW] 
c6d0: 73 74 61 74 65 6d 65 6e 74 2e 20 20 54 68 65 20  statement.  The 
c6e0: 6e 61 6d 65 20 73 70 65 63 69 66 69 65 64 20 69  name specified i
c6f0: 73 20 74 68 65 20 0a 76 69 65 77 20 6e 61 6d 65  s the .view name
c700: 2e 20 20 49 74 20 69 73 20 72 65 6d 6f 76 65 64  .  It is removed
c710: 20 66 72 6f 6d 20 74 68 65 20 64 61 74 61 62 61   from the databa
c720: 73 65 20 73 63 68 65 6d 61 2c 20 62 75 74 20 6e  se schema, but n
c730: 6f 20 61 63 74 75 61 6c 20 64 61 74 61 20 0a 69  o actual data .i
c740: 6e 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67  n the underlying
c750: 20 62 61 73 65 20 74 61 62 6c 65 73 20 69 73 20   base tables is 
c760: 6d 6f 64 69 66 69 65 64 2e 3c 2f 70 3e 0a 0a 3c  modified.</p>..<
c770: 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23  tcl>.###########
c780: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c790: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c7a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c7b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c7c0: 23 23 23 0a 53 65 63 74 69 6f 6e 20 45 58 50 4c  ###.Section EXPL
c7d0: 41 49 4e 20 65 78 70 6c 61 69 6e 20 45 58 50 4c  AIN explain EXPL
c7e0: 41 49 4e 0a 0a 42 75 62 62 6c 65 44 69 61 67 72  AIN..BubbleDiagr
c7f0: 61 6d 20 73 71 6c 2d 73 74 6d 74 0a 3c 2f 74 63  am sql-stmt.</tc
c800: 6c 3e 0a 0a 3c 70 3e 41 6e 20 53 51 4c 20 73 74  l>..<p>An SQL st
c810: 61 74 65 6d 65 6e 74 20 63 61 6e 20 62 65 20 70  atement can be p
c820: 72 65 63 65 64 65 64 20 62 79 20 74 68 65 20 6b  receded by the k
c830: 65 79 77 6f 72 64 20 22 45 58 50 4c 41 49 4e 22  eyword "EXPLAIN"
c840: 20 6f 72 0a 62 79 20 74 68 65 20 70 68 72 61 73   or.by the phras
c850: 65 20 22 45 58 50 4c 41 49 4e 20 51 55 45 52 59  e "EXPLAIN QUERY
c860: 20 50 4c 41 4e 22 2e 20 20 45 69 74 68 65 72 20   PLAN".  Either 
c870: 6d 6f 64 69 66 69 63 61 74 69 6f 6e 20 63 61 75  modification cau
c880: 73 65 73 20 74 68 65 0a 53 51 4c 20 73 74 61 74  ses the.SQL stat
c890: 65 6d 65 6e 74 20 74 6f 20 62 65 68 61 76 65 20  ement to behave 
c8a0: 61 73 20 61 20 71 75 65 72 79 20 61 6e 64 20 74  as a query and t
c8b0: 6f 20 72 65 74 75 72 6e 20 69 6e 66 6f 72 6d 61  o return informa
c8c0: 74 69 6f 6e 20 61 62 6f 75 74 0a 68 6f 77 20 74  tion about.how t
c8d0: 68 65 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74  he SQL statement
c8e0: 20 77 6f 75 6c 64 20 68 61 76 65 20 6f 70 65 72   would have oper
c8f0: 61 74 65 64 20 69 66 20 74 68 65 20 45 58 50 4c  ated if the EXPL
c900: 41 49 4e 20 6b 65 79 77 6f 72 64 20 6f 72 0a 70  AIN keyword or.p
c910: 68 72 61 73 65 20 68 61 64 20 62 65 65 6e 20 6f  hrase had been o
c920: 6d 69 74 74 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e  mitted.</p>..<p>
c930: 57 68 65 6e 20 74 68 65 20 45 58 50 4c 41 49 4e  When the EXPLAIN
c940: 20 6b 65 79 77 6f 72 64 20 61 70 70 65 61 72 73   keyword appears
c950: 20 62 79 20 69 74 73 65 6c 66 20 69 74 20 63 61   by itself it ca
c960: 75 73 65 73 20 74 68 65 20 73 74 61 74 65 6d 65  uses the stateme
c970: 6e 74 0a 74 6f 20 62 65 68 61 76 65 20 61 73 20  nt.to behave as 
c980: 61 20 71 75 65 72 79 20 74 68 61 74 20 72 65 74  a query that ret
c990: 75 72 6e 73 20 74 68 65 20 73 65 71 75 65 6e 63  urns the sequenc
c9a0: 65 20 6f 66 20 0a 3c 61 20 68 72 65 66 3d 22 6f  e of .<a href="o
c9b0: 70 63 6f 64 65 2e 68 74 6d 6c 22 3e 76 69 72 74  pcode.html">virt
c9c0: 75 61 6c 20 6d 61 63 68 69 6e 65 20 69 6e 73 74  ual machine inst
c9d0: 72 75 63 74 69 6f 6e 73 3c 2f 61 3e 20 69 74 20  ructions</a> it 
c9e0: 77 6f 75 6c 64 20 68 61 76 65 0a 75 73 65 64 20  would have.used 
c9f0: 74 6f 20 65 78 65 63 75 74 65 20 74 68 65 20 63  to execute the c
ca00: 6f 6d 6d 61 6e 64 20 68 61 64 20 74 68 65 20 45  ommand had the E
ca10: 58 50 4c 41 49 4e 20 6b 65 79 77 6f 72 64 20 6e  XPLAIN keyword n
ca20: 6f 74 20 62 65 65 6e 20 70 72 65 73 65 6e 74 2e  ot been present.
ca30: 0a 57 68 65 6e 20 74 68 65 20 45 58 50 4c 41 49  .When the EXPLAI
ca40: 4e 20 51 55 45 52 59 20 50 4c 41 4e 20 70 68 72  N QUERY PLAN phr
ca50: 61 73 65 20 61 70 70 65 61 72 73 2c 20 74 68 65  ase appears, the
ca60: 20 73 74 61 74 65 6d 65 6e 74 20 72 65 74 75 72   statement retur
ca70: 6e 73 0a 68 69 67 68 2d 6c 65 76 65 6c 20 69 6e  ns.high-level in
ca80: 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20  formation about 
ca90: 77 68 61 74 20 69 6e 64 69 63 65 73 20 77 6f 75  what indices wou
caa0: 6c 64 20 68 61 76 65 20 62 65 65 6e 20 75 73 65  ld have been use
cab0: 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 6f  d.</p>..<p>The o
cac0: 75 74 70 75 74 20 66 72 6f 6d 20 45 58 50 4c 41  utput from EXPLA
cad0: 49 4e 20 61 6e 64 20 45 58 50 4c 41 49 4e 20 51  IN and EXPLAIN Q
cae0: 55 45 52 59 20 50 4c 41 4e 20 69 73 20 69 6e 74  UERY PLAN is int
caf0: 65 6e 64 65 64 20 66 6f 72 0a 69 6e 74 65 72 61  ended for.intera
cb00: 63 74 69 76 65 20 61 6e 61 6c 79 73 69 73 20 61  ctive analysis a
cb10: 6e 64 20 74 72 6f 75 62 6c 65 73 68 6f 6f 74 69  nd troubleshooti
cb20: 6e 67 20 6f 6e 6c 79 2e 20 20 54 68 65 20 64 65  ng only.  The de
cb30: 74 61 69 6c 73 20 6f 66 20 74 68 65 20 0a 6f 75  tails of the .ou
cb40: 74 70 75 74 20 66 6f 72 6d 61 74 20 61 72 65 20  tput format are 
cb50: 73 75 62 6a 65 63 74 20 74 6f 20 63 68 61 6e 67  subject to chang
cb60: 65 20 66 72 6f 6d 20 6f 6e 65 20 72 65 6c 65 61  e from one relea
cb70: 73 65 20 6f 66 20 53 51 4c 69 74 65 20 74 6f 20  se of SQLite to 
cb80: 74 68 65 20 6e 65 78 74 2e 0a 41 70 70 6c 69 63  the next..Applic
cb90: 61 74 69 6f 6e 73 20 73 68 6f 75 6c 64 20 6e 6f  ations should no
cba0: 74 20 75 73 65 20 45 58 50 4c 41 49 4e 20 6f 72  t use EXPLAIN or
cbb0: 20 45 58 50 4c 41 49 4e 20 51 55 45 52 59 20 50   EXPLAIN QUERY P
cbc0: 4c 41 4e 20 73 69 6e 63 65 0a 74 68 65 69 72 20  LAN since.their 
cbd0: 62 65 68 61 76 69 6f 72 20 69 73 20 75 6e 64 6f  behavior is undo
cbe0: 63 75 6d 65 6e 74 65 64 2c 20 75 6e 73 70 65 63  cumented, unspec
cbf0: 69 66 69 65 64 2c 20 61 6e 64 20 76 61 72 69 61  ified, and varia
cc00: 62 6c 65 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a  ble.</p>..<tcl>.
cc10: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
cc20: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
cc30: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
cc40: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
cc50: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 53  ##############.S
cc60: 65 63 74 69 6f 6e 20 65 78 70 72 65 73 73 69 6f  ection expressio
cc70: 6e 20 65 78 70 72 20 7b 65 78 70 72 65 73 73 69  n expr {expressi
cc80: 6f 6e 20 7b 65 78 70 72 65 73 73 69 6f 6e 20 73  on {expression s
cc90: 79 6e 74 61 78 7d 7d 0a 0a 42 75 62 62 6c 65 44  yntax}}..BubbleD
cca0: 69 61 67 72 61 6d 20 65 78 70 72 20 31 0a 42 75  iagram expr 1.Bu
ccb0: 62 62 6c 65 44 69 61 67 72 61 6d 20 6c 69 74 65  bbleDiagram lite
ccc0: 72 61 6c 2d 76 61 6c 75 65 0a 42 75 62 62 6c 65  ral-value.Bubble
ccd0: 44 69 61 67 72 61 6d 20 73 69 67 6e 65 64 2d 6e  Diagram signed-n
cce0: 75 6d 62 65 72 0a 42 75 62 62 6c 65 44 69 61 67  umber.BubbleDiag
ccf0: 72 61 6d 20 72 61 69 73 65 2d 66 75 6e 63 74 69  ram raise-functi
cd00: 6f 6e 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68  on.</tcl>..<p>Th
cd10: 69 73 20 73 65 63 74 69 6f 6e 20 69 73 20 64 69  is section is di
cd20: 66 66 65 72 65 6e 74 20 66 72 6f 6d 20 74 68 65  fferent from the
cd30: 20 6f 74 68 65 72 73 2e 20 20 4d 6f 73 74 20 6f   others.  Most o
cd40: 74 68 65 72 20 73 65 63 74 69 6f 6e 73 20 6f 66  ther sections of
cd50: 0a 74 68 69 73 20 64 6f 63 75 6d 65 6e 74 20 74  .this document t
cd60: 61 6c 6b 73 20 61 62 6f 75 74 20 61 20 70 61 72  alks about a par
cd70: 74 69 63 75 6c 61 72 20 53 51 4c 20 63 6f 6d 6d  ticular SQL comm
cd80: 61 6e 64 2e 20 20 54 68 69 73 20 73 65 63 74 69  and.  This secti
cd90: 6f 6e 20 64 6f 65 73 0a 6e 6f 74 20 74 61 6c 6b  on does.not talk
cda0: 20 61 62 6f 75 74 20 61 20 73 74 61 6e 64 61 6c   about a standal
cdb0: 6f 6e 65 20 63 6f 6d 6d 61 6e 64 20 62 75 74 20  one command but 
cdc0: 61 62 6f 75 74 20 22 65 78 70 72 65 73 73 69 6f  about "expressio
cdd0: 6e 73 22 20 77 68 69 63 68 20 61 72 65 20 0a 73  ns" which are .s
cde0: 75 62 63 6f 6d 70 6f 6e 65 6e 74 73 20 6f 66 20  ubcomponents of 
cdf0: 6d 6f 73 74 20 6f 74 68 65 72 20 63 6f 6d 6d 61  most other comma
ce00: 6e 64 73 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 68  nds.</p>..<tcl>h
ce10: 64 5f 66 72 61 67 6d 65 6e 74 20 62 69 6e 61 72  d_fragment binar
ce20: 79 6f 70 73 20 7b 62 69 6e 61 72 79 20 6f 70 65  yops {binary ope
ce30: 72 61 74 6f 72 73 7d 3c 2f 74 63 6c 3e 0a 3c 68  rators}</tcl>.<h
ce40: 33 3e 4f 70 65 72 61 74 6f 72 73 3c 2f 68 33 3e  3>Operators</h3>
ce50: 0a 3c 70 3e 53 51 4c 69 74 65 20 75 6e 64 65 72  .<p>SQLite under
ce60: 73 74 61 6e 64 73 20 74 68 65 20 66 6f 6c 6c 6f  stands the follo
ce70: 77 69 6e 67 20 62 69 6e 61 72 79 20 6f 70 65 72  wing binary oper
ce80: 61 74 6f 72 73 2c 20 69 6e 20 6f 72 64 65 72 20  ators, in order 
ce90: 66 72 6f 6d 0a 68 69 67 68 65 73 74 20 74 6f 20  from.highest to 
cea0: 6c 6f 77 65 73 74 20 70 72 65 63 65 64 65 6e 63  lowest precedenc
ceb0: 65 3a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75  e:</p>..<blockqu
cec0: 6f 74 65 3e 3c 70 72 65 3e 0a 3c 66 6f 6e 74 20  ote><pre>.<font 
ced0: 63 6f 6c 6f 72 3d 22 23 32 63 32 63 66 30 22 3e  color="#2c2cf0">
cee0: 3c 62 69 67 3e 7c 7c 0a 2a 20 20 20 20 2f 20 20  <big>||.*    /  
cef0: 20 20 25 0a 2b 20 20 20 20 2d 0a 26 6c 74 3b 26    %.+    -.&lt;&
cf00: 6c 74 3b 20 20 20 26 67 74 3b 26 67 74 3b 20 20  lt;   &gt;&gt;  
cf10: 20 26 61 6d 70 3b 20 20 20 20 7c 0a 26 6c 74 3b   &amp;    |.&lt;
cf20: 20 20 20 20 26 6c 74 3b 3d 20 20 20 26 67 74 3b      &lt;=   &gt;
cf30: 20 20 20 20 26 67 74 3b 3d 0a 3d 20 20 20 20 3d      &gt;=.=    =
cf40: 3d 20 20 20 21 3d 20 20 20 26 6c 74 3b 26 67 74  =   !=   &lt;&gt
cf50: 3b 20 20 20 3c 2f 62 69 67 3e 49 53 20 20 49 4e  ;   </big>IS  IN
cf60: 20 20 4c 49 4b 45 20 20 47 4c 4f 42 20 20 4d 41    LIKE  GLOB  MA
cf70: 54 43 48 20 20 52 45 47 45 58 50 0a 41 4e 44 20  TCH  REGEXP.AND 
cf80: 20 20 0a 4f 52 3c 2f 66 6f 6e 74 3e 0a 3c 2f 70    .OR</font>.</p
cf90: 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e  re></blockquote>
cfa0: 0a 0a 3c 70 3e 53 75 70 70 6f 72 74 65 64 20 75  ..<p>Supported u
cfb0: 6e 61 72 79 20 70 72 65 66 69 78 20 6f 70 65 72  nary prefix oper
cfc0: 61 74 6f 72 73 20 61 72 65 20 74 68 65 73 65 3a  ators are these:
cfd0: 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74  </p>..<blockquot
cfe0: 65 3e 3c 70 72 65 3e 0a 3c 66 6f 6e 74 20 63 6f  e><pre>.<font co
cff0: 6c 6f 72 3d 22 23 32 63 32 63 66 30 22 3e 3c 62  lor="#2c2cf0"><b
d000: 69 67 3e 2d 20 20 20 20 2b 20 20 20 20 7e 20 20  ig>-    +    ~  
d010: 20 20 4e 4f 54 3c 2f 62 69 67 3e 3c 2f 66 6f 6e    NOT</big></fon
d020: 74 3e 0a 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b  t>.</pre></block
d030: 71 75 6f 74 65 3e 0a 0a 3c 70 3e 54 68 65 20 43  quote>..<p>The C
d040: 4f 4c 4c 41 54 45 20 6f 70 65 72 61 74 6f 72 20  OLLATE operator 
d050: 63 61 6e 20 62 65 20 74 68 6f 75 67 68 74 20 6f  can be thought o
d060: 66 20 61 73 20 61 20 75 6e 61 72 79 20 70 6f 73  f as a unary pos
d070: 74 66 69 78 0a 6f 70 65 72 61 74 6f 72 2e 20 20  tfix.operator.  
d080: 54 68 65 20 43 4f 4c 4c 41 54 45 20 6f 70 65 72  The COLLATE oper
d090: 61 74 6f 72 20 68 61 73 20 74 68 65 20 68 69 67  ator has the hig
d0a0: 68 65 73 74 20 70 72 65 63 65 64 65 6e 63 65 2e  hest precedence.
d0b0: 0a 49 74 20 61 6c 77 61 79 73 20 62 69 6e 64 73  .It always binds
d0c0: 20 6d 6f 72 65 20 74 69 67 68 74 6c 79 20 74 68   more tightly th
d0d0: 61 6e 20 61 6e 79 20 70 72 65 66 69 78 20 75 6e  an any prefix un
d0e0: 61 72 79 20 6f 70 65 72 61 74 6f 72 20 6f 72 0a  ary operator or.
d0f0: 61 6e 79 20 62 69 6e 61 72 79 20 6f 70 65 72 61  any binary opera
d100: 74 6f 72 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 68  tor.</p>..<tcl>h
d110: 64 5f 70 75 74 73 20 22 0a 3c 70 3e 54 68 65 20  d_puts ".<p>The 
d120: 75 6e 61 72 79 20 6f 70 65 72 61 74 6f 72 20 5b  unary operator [
d130: 4f 70 65 72 61 74 6f 72 20 2b 5d 20 69 73 20 61  Operator +] is a
d140: 20 6e 6f 2d 6f 70 2e 20 20 49 74 20 63 61 6e 20   no-op.  It can 
d150: 62 65 20 61 70 70 6c 69 65 64 0a 74 6f 20 73 74  be applied.to st
d160: 72 69 6e 67 73 2c 20 6e 75 6d 62 65 72 73 2c 20  rings, numbers, 
d170: 6f 72 20 62 6c 6f 62 73 20 61 6e 64 20 69 74 20  or blobs and it 
d180: 61 6c 77 61 79 73 20 67 69 76 65 73 20 61 73 20  always gives as 
d190: 69 74 73 20 72 65 73 75 6c 74 20 74 68 65 0a 76  its result the.v
d1a0: 61 6c 75 65 20 6f 66 20 74 68 65 20 6f 70 65 72  alue of the oper
d1b0: 61 6e 64 2e 3c 2f 70 3e 22 3c 2f 74 63 6c 3e 0a  and.</p>"</tcl>.
d1c0: 0a 3c 70 3e 4e 6f 74 65 20 74 68 61 74 20 74 68  .<p>Note that th
d1d0: 65 72 65 20 61 72 65 20 74 77 6f 20 76 61 72 69  ere are two vari
d1e0: 61 74 69 6f 6e 73 20 6f 66 20 74 68 65 20 65 71  ations of the eq
d1f0: 75 61 6c 73 20 61 6e 64 20 6e 6f 74 20 65 71 75  uals and not equ
d200: 61 6c 73 0a 6f 70 65 72 61 74 6f 72 73 2e 20 20  als.operators.  
d210: 45 71 75 61 6c 73 20 63 61 6e 20 62 65 20 65 69  Equals can be ei
d220: 74 68 65 72 0a 0a 3c 74 63 6c 3e 0a 68 64 5f 70  ther..<tcl>.hd_p
d230: 75 74 73 20 22 5b 4f 70 65 72 61 74 6f 72 20 3d  uts "[Operator =
d240: 5d 20 6f 72 20 5b 4f 70 65 72 61 74 6f 72 20 3d  ] or [Operator =
d250: 3d 5d 2e 0a 54 68 65 20 6e 6f 6e 2d 65 71 75 61  =]..The non-equa
d260: 6c 73 20 6f 70 65 72 61 74 6f 72 20 63 61 6e 20  ls operator can 
d270: 62 65 20 65 69 74 68 65 72 0a 5b 4f 70 65 72 61  be either.[Opera
d280: 74 6f 72 20 21 3d 5d 20 6f 72 20 5b 4f 70 65 72  tor !=] or [Oper
d290: 61 74 6f 72 20 7b 26 6c 74 3b 26 67 74 3b 7d 5d  ator {&lt;&gt;}]
d2a0: 2e 0a 54 68 65 20 5b 4f 70 65 72 61 74 6f 72 20  ..The [Operator 
d2b0: 7c 7c 5d 20 6f 70 65 72 61 74 6f 72 20 69 73 20  ||] operator is 
d2c0: 5c 22 63 6f 6e 63 61 74 65 6e 61 74 65 5c 22 20  \"concatenate\" 
d2d0: 2d 20 69 74 20 6a 6f 69 6e 73 20 74 6f 67 65 74  - it joins toget
d2e0: 68 65 72 0a 74 68 65 20 74 77 6f 20 73 74 72 69  her.the two stri
d2f0: 6e 67 73 20 6f 66 20 69 74 73 20 6f 70 65 72 61  ngs of its opera
d300: 6e 64 73 2e 0a 54 68 65 20 6f 70 65 72 61 74 6f  nds..The operato
d310: 72 20 5b 4f 70 65 72 61 74 6f 72 20 25 5d 20 6f  r [Operator %] o
d320: 75 74 70 75 74 73 20 74 68 65 20 72 65 6d 61 69  utputs the remai
d330: 6e 64 65 72 20 6f 66 20 69 74 73 20 6c 65 66 74  nder of its left
d340: 20 0a 6f 70 65 72 61 6e 64 20 6d 6f 64 75 6c 6f   .operand modulo
d350: 20 69 74 73 20 72 69 67 68 74 20 6f 70 65 72 61   its right opera
d360: 6e 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20  nd.</p>..<p>The 
d370: 72 65 73 75 6c 74 20 6f 66 20 61 6e 79 20 62 69  result of any bi
d380: 6e 61 72 79 20 6f 70 65 72 61 74 6f 72 20 69 73  nary operator is
d390: 20 61 20 6e 75 6d 65 72 69 63 20 76 61 6c 75 65   a numeric value
d3a0: 2c 20 65 78 63 65 70 74 0a 66 6f 72 20 74 68 65  , except.for the
d3b0: 20 5b 4f 70 65 72 61 74 6f 72 20 7c 7c 5d 20 63   [Operator ||] c
d3c0: 6f 6e 63 61 74 65 6e 61 74 69 6f 6e 20 6f 70 65  oncatenation ope
d3d0: 72 61 74 6f 72 20 77 68 69 63 68 20 67 69 76 65  rator which give
d3e0: 73 20 61 20 73 74 72 69 6e 67 0a 72 65 73 75 6c  s a string.resul
d3f0: 74 2e 3c 2f 70 3e 22 0a 0a 68 64 5f 66 72 61 67  t.</p>"..hd_frag
d400: 6d 65 6e 74 20 7b 69 73 69 73 6e 6f 74 7d 20 7b  ment {isisnot} {
d410: 49 53 20 6f 70 65 72 61 74 6f 72 7d 20 7b 49 53  IS operator} {IS
d420: 20 4e 4f 54 20 6f 70 65 72 61 74 6f 72 7d 0a 0a   NOT operator}..
d430: 68 64 5f 70 75 74 73 20 22 3c 70 3e 54 68 65 20  hd_puts "<p>The 
d440: 5b 4f 70 65 72 61 74 6f 72 20 49 53 5d 20 61 6e  [Operator IS] an
d450: 64 20 5b 4f 70 65 72 61 74 6f 72 20 7b 49 53 20  d [Operator {IS 
d460: 4e 4f 54 7d 5d 20 6f 70 65 72 61 74 6f 72 73 20  NOT}] operators 
d470: 77 6f 72 6b 0a 6c 69 6b 65 20 5b 4f 70 65 72 61  work.like [Opera
d480: 74 6f 72 20 3d 5d 20 61 6e 64 20 5b 4f 70 65 72  tor =] and [Oper
d490: 61 74 6f 72 20 21 3d 5d 20 65 78 63 65 70 74 20  ator !=] except 
d4a0: 74 68 61 74 20 4e 55 4c 4c 20 76 61 6c 75 65 73  that NULL values
d4b0: 20 63 6f 6d 70 61 72 65 0a 65 71 75 61 6c 20 74   compare.equal t
d4c0: 6f 20 6f 6e 65 20 61 6e 6f 74 68 65 72 2e 20 20  o one another.  
d4d0: 5b 4f 70 65 72 61 74 6f 72 20 49 53 5d 20 61 6e  [Operator IS] an
d4e0: 64 20 5b 4f 70 65 72 61 74 6f 72 20 7b 49 53 20  d [Operator {IS 
d4f0: 4e 4f 54 7d 5d 0a 68 61 76 65 20 74 68 65 20 73  NOT}].have the s
d500: 61 6d 65 20 70 72 65 63 65 64 65 6e 63 65 20 61  ame precedence a
d510: 73 20 5b 4f 70 65 72 61 74 6f 72 20 3d 5d 2e 22  s [Operator =]."
d520: 0a 0a 3c 74 63 6c 3e 68 64 5f 66 72 61 67 6d 65  ..<tcl>hd_fragme
d530: 6e 74 20 6c 69 74 76 61 6c 75 65 20 7b 6c 69 74  nt litvalue {lit
d540: 65 72 61 6c 20 76 61 6c 75 65 7d 3c 2f 74 63 6c  eral value}</tcl
d550: 3e 0a 3c 68 33 3e 4c 69 74 65 72 61 6c 20 56 61  >.<h3>Literal Va
d560: 6c 75 65 73 3c 2f 68 33 3e 0a 3c 70 3e 0a 41 20  lues</h3>.<p>.A 
d570: 6c 69 74 65 72 61 6c 20 76 61 6c 75 65 20 69 73  literal value is
d580: 20 61 20 63 6f 6e 73 74 61 6e 74 20 6f 66 20 73   a constant of s
d590: 6f 6d 65 20 6b 69 6e 64 2e 0a 4c 69 74 65 72 61  ome kind..Litera
d5a0: 6c 20 76 61 6c 75 65 73 20 6d 61 79 20 62 65 20  l values may be 
d5b0: 69 6e 74 65 67 65 72 73 2c 20 66 6c 6f 61 74 69  integers, floati
d5c0: 6e 67 20 70 6f 69 6e 74 20 6e 75 6d 62 65 72 73  ng point numbers
d5d0: 2c 20 73 74 72 69 6e 67 73 2c 0a 42 4c 4f 42 73  , strings,.BLOBs
d5e0: 2c 20 6f 72 20 4e 55 4c 4c 73 2e 0a 53 63 69 65  , or NULLs..Scie
d5f0: 6e 74 69 66 69 63 20 6e 6f 74 61 74 69 6f 6e 20  ntific notation 
d600: 69 73 20 73 75 70 70 6f 72 74 65 64 20 66 6f 72  is supported for
d610: 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20   floating point 
d620: 6c 69 74 65 72 61 6c 20 76 61 6c 75 65 73 2e 0a  literal values..
d630: 54 68 65 20 22 2e 22 20 63 68 61 72 61 63 74 65  The "." characte
d640: 72 20 69 73 20 61 6c 77 61 79 73 20 75 73 65 64  r is always used
d650: 20 0a 61 73 20 74 68 65 20 64 65 63 69 6d 61 6c   .as the decimal
d660: 20 70 6f 69 6e 74 20 65 76 65 6e 20 69 66 20 74   point even if t
d670: 68 65 20 6c 6f 63 61 6c 65 20 73 65 74 74 69 6e  he locale settin
d680: 67 20 73 70 65 63 69 66 69 65 73 20 22 2c 22 20  g specifies "," 
d690: 66 6f 72 0a 74 68 69 73 20 72 6f 6c 65 20 2d 20  for.this role - 
d6a0: 74 68 65 20 75 73 65 20 6f 66 20 22 2c 22 20 66  the use of "," f
d6b0: 6f 72 20 74 68 65 20 64 65 63 69 6d 61 6c 20 70  or the decimal p
d6c0: 6f 69 6e 74 20 77 6f 75 6c 64 20 72 65 73 75 6c  oint would resul
d6d0: 74 20 69 6e 0a 73 79 6e 74 61 63 74 69 63 20 61  t in.syntactic a
d6e0: 6d 62 69 67 75 69 74 79 2e 20 20 41 20 73 74 72  mbiguity.  A str
d6f0: 69 6e 67 20 63 6f 6e 73 74 61 6e 74 20 69 73 20  ing constant is 
d700: 66 6f 72 6d 65 64 20 62 79 20 65 6e 63 6c 6f 73  formed by enclos
d710: 69 6e 67 20 74 68 65 0a 73 74 72 69 6e 67 20 69  ing the.string i
d720: 6e 20 73 69 6e 67 6c 65 20 71 75 6f 74 65 73 20  n single quotes 
d730: 28 27 29 2e 20 20 41 20 73 69 6e 67 6c 65 20 71  (').  A single q
d740: 75 6f 74 65 20 77 69 74 68 69 6e 20 74 68 65 20  uote within the 
d750: 73 74 72 69 6e 67 20 63 61 6e 0a 62 65 20 65 6e  string can.be en
d760: 63 6f 64 65 64 20 62 79 20 70 75 74 74 69 6e 67  coded by putting
d770: 20 74 77 6f 20 73 69 6e 67 6c 65 20 71 75 6f 74   two single quot
d780: 65 73 20 69 6e 20 61 20 72 6f 77 20 2d 20 61 73  es in a row - as
d790: 20 69 6e 20 50 61 73 63 61 6c 2e 0a 43 2d 73 74   in Pascal..C-st
d7a0: 79 6c 65 20 65 73 63 61 70 65 73 20 75 73 69 6e  yle escapes usin
d7b0: 67 20 74 68 65 20 62 61 63 6b 73 6c 61 73 68 20  g the backslash 
d7c0: 63 68 61 72 61 63 74 65 72 20 61 72 65 20 6e 6f  character are no
d7d0: 74 20 73 75 70 70 6f 72 74 65 64 20 62 65 63 61  t supported beca
d7e0: 75 73 65 0a 74 68 65 79 20 61 72 65 20 6e 6f 74  use.they are not
d7f0: 20 73 74 61 6e 64 61 72 64 20 53 51 4c 2e 0a 42   standard SQL..B
d800: 4c 4f 42 20 6c 69 74 65 72 61 6c 73 20 61 72 65  LOB literals are
d810: 20 73 74 72 69 6e 67 20 6c 69 74 65 72 61 6c 73   string literals
d820: 20 63 6f 6e 74 61 69 6e 69 6e 67 20 68 65 78 61   containing hexa
d830: 64 65 63 69 6d 61 6c 20 64 61 74 61 20 61 6e 64  decimal data and
d840: 0a 70 72 65 63 65 64 65 64 20 62 79 20 61 20 73  .preceded by a s
d850: 69 6e 67 6c 65 20 22 78 22 20 6f 72 20 22 58 22  ingle "x" or "X"
d860: 20 63 68 61 72 61 63 74 65 72 2e 20 20 46 6f 72   character.  For
d870: 20 65 78 61 6d 70 6c 65 3a 3c 2f 70 3e 0a 0a 3c   example:</p>..<
d880: 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70 72 65 3e  blockquote><pre>
d890: 0a 58 27 35 33 35 31 34 43 36 39 37 34 36 35 27  .X'53514C697465'
d8a0: 0a 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75  .</pre></blockqu
d8b0: 6f 74 65 3e 0a 0a 3c 70 3e 0a 41 20 6c 69 74 65  ote>..<p>.A lite
d8c0: 72 61 6c 20 76 61 6c 75 65 20 63 61 6e 20 61 6c  ral value can al
d8d0: 73 6f 20 62 65 20 74 68 65 20 74 6f 6b 65 6e 20  so be the token 
d8e0: 22 4e 55 4c 4c 22 2e 0a 3c 2f 70 3e 0a 0a 3c 74  "NULL"..</p>..<t
d8f0: 63 6c 3e 68 64 5f 66 72 61 67 6d 65 6e 74 20 76  cl>hd_fragment v
d900: 61 72 70 61 72 61 6d 20 70 61 72 61 6d 65 74 65  arparam paramete
d910: 72 20 70 61 72 61 6d 65 74 65 72 73 3c 2f 74 63  r parameters</tc
d920: 6c 3e 0a 3c 68 33 3e 50 61 72 61 6d 65 74 65 72  l>.<h3>Parameter
d930: 73 3c 2f 68 33 3e 0a 3c 70 3e 0a 41 20 22 76 61  s</h3>.<p>.A "va
d940: 72 69 61 62 6c 65 22 20 6f 72 20 22 70 61 72 61  riable" or "para
d950: 6d 65 74 65 72 22 20 74 6f 6b 65 6e 0a 73 70 65  meter" token.spe
d960: 63 69 66 69 65 73 20 61 20 70 6c 61 63 65 68 6f  cifies a placeho
d970: 6c 64 65 72 20 69 6e 20 74 68 65 20 65 78 70 72  lder in the expr
d980: 65 73 73 69 6f 6e 20 66 6f 72 20 61 20 6c 69 74  ession for a lit
d990: 65 72 61 6c 0a 76 61 6c 75 65 20 74 68 61 74 20  eral.value that 
d9a0: 69 73 20 66 69 6c 6c 65 64 20 69 6e 20 61 74 20  is filled in at 
d9b0: 72 75 6e 74 69 6d 65 20 75 73 69 6e 67 20 74 68  runtime using th
d9c0: 65 0a 5b 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  e.[sqlite3_bind_
d9d0: 62 6c 6f 62 28 29 20 7c 20 73 71 6c 69 74 65 33  blob() | sqlite3
d9e0: 5f 62 69 6e 64 28 29 5d 20 66 61 6d 69 6c 79 20  _bind()] family 
d9f0: 6f 66 20 43 2f 43 2b 2b 20 69 6e 74 65 72 66 61  of C/C++ interfa
da00: 63 65 73 2e 0a 50 61 72 61 6d 65 74 65 72 73 20  ces..Parameters 
da10: 63 61 6e 20 74 61 6b 65 20 73 65 76 65 72 61 6c  can take several
da20: 20 66 6f 72 6d 73 3a 0a 3c 2f 70 0a 0a 3c 62 6c   forms:.</p..<bl
da30: 6f 63 6b 71 75 6f 74 65 3e 0a 3c 74 61 62 6c 65  ockquote>.<table
da40: 3e 0a 3c 74 72 3e 0a 3c 74 64 20 61 6c 69 67 6e  >.<tr>.<td align
da50: 3d 22 72 69 67 68 74 22 20 76 61 6c 69 67 6e 3d  ="right" valign=
da60: 22 74 6f 70 22 3e 3c 62 3e 3f 3c 2f 62 3e 3c 69  "top"><b>?</b><i
da70: 3e 4e 4e 4e 3c 2f 69 3e 3c 2f 74 64 3e 3c 74 64  >NNN</i></td><td
da80: 20 77 69 64 74 68 3d 22 32 30 22 3e 3c 2f 74 64   width="20"></td
da90: 3e 0a 3c 74 64 3e 41 20 71 75 65 73 74 69 6f 6e  >.<td>A question
daa0: 20 6d 61 72 6b 20 66 6f 6c 6c 6f 77 65 64 20 62   mark followed b
dab0: 79 20 61 20 6e 75 6d 62 65 72 20 3c 69 3e 4e 4e  y a number <i>NN
dac0: 4e 3c 2f 69 3e 20 68 6f 6c 64 73 20 61 20 73 70  N</i> holds a sp
dad0: 6f 74 20 66 6f 72 20 74 68 65 0a 4e 4e 4e 2d 74  ot for the.NNN-t
dae0: 68 20 70 61 72 61 6d 65 74 65 72 2e 20 20 4e 4e  h parameter.  NN
daf0: 4e 20 6d 75 73 74 20 62 65 20 62 65 74 77 65 65  N must be betwee
db00: 6e 20 31 20 61 6e 64 20 5b 53 51 4c 49 54 45 5f  n 1 and [SQLITE_
db10: 4d 41 58 5f 56 41 52 49 41 42 4c 45 5f 4e 55 4d  MAX_VARIABLE_NUM
db20: 42 45 52 5d 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e  BER].</td>.</tr>
db30: 0a 3c 74 72 3e 0a 3c 74 64 20 61 6c 69 67 6e 3d  .<tr>.<td align=
db40: 22 72 69 67 68 74 22 20 76 61 6c 69 67 6e 3d 22  "right" valign="
db50: 74 6f 70 22 3e 3c 62 3e 3f 3c 2f 62 3e 3c 2f 74  top"><b>?</b></t
db60: 64 3e 3c 74 64 20 77 69 64 74 68 3d 22 32 30 22  d><td width="20"
db70: 3e 3c 2f 74 64 3e 0a 3c 74 64 3e 41 20 71 75 65  ></td>.<td>A que
db80: 73 74 69 6f 6e 20 6d 61 72 6b 20 74 68 61 74 20  stion mark that 
db90: 69 73 20 6e 6f 74 20 66 6f 6c 6c 6f 77 65 64 20  is not followed 
dba0: 62 79 20 61 20 6e 75 6d 62 65 72 20 68 6f 6c 64  by a number hold
dbb0: 73 20 61 20 73 70 6f 74 20 66 6f 72 0a 74 68 65  s a spot for.the
dbc0: 20 6e 65 78 74 20 75 6e 75 73 65 64 20 70 61 72   next unused par
dbd0: 61 6d 65 74 65 72 2e 3c 2f 74 64 3e 0a 3c 2f 74  ameter.</td>.</t
dbe0: 72 3e 0a 3c 74 72 3e 0a 3c 74 64 20 61 6c 69 67  r>.<tr>.<td alig
dbf0: 6e 3d 22 72 69 67 68 74 22 20 76 61 6c 69 67 6e  n="right" valign
dc00: 3d 22 74 6f 70 22 3e 3c 62 3e 3a 3c 2f 62 3e 3c  ="top"><b>:</b><
dc10: 69 3e 41 41 41 41 3c 2f 69 3e 3c 2f 74 64 3e 3c  i>AAAA</i></td><
dc20: 74 64 20 77 69 64 74 68 3d 22 32 30 22 3e 3c 2f  td width="20"></
dc30: 74 64 3e 0a 3c 74 64 3e 41 20 63 6f 6c 6f 6e 20  td>.<td>A colon 
dc40: 66 6f 6c 6c 6f 77 65 64 20 62 79 20 61 6e 20 69  followed by an i
dc50: 64 65 6e 74 69 66 69 65 72 20 6e 61 6d 65 20 68  dentifier name h
dc60: 6f 6c 64 73 20 61 20 73 70 6f 74 20 66 6f 72 20  olds a spot for 
dc70: 61 20 6e 61 6d 65 64 0a 70 61 72 61 6d 65 74 65  a named.paramete
dc80: 72 20 77 69 74 68 20 74 68 65 20 6e 61 6d 65 20  r with the name 
dc90: 41 41 41 41 2e 20 20 4e 61 6d 65 64 20 70 61 72  AAAA.  Named par
dca0: 61 6d 65 74 65 72 73 20 61 72 65 20 61 6c 73 6f  ameters are also
dcb0: 20 6e 75 6d 62 65 72 65 64 2e 0a 54 68 65 20 6e   numbered..The n
dcc0: 75 6d 62 65 72 20 61 73 73 69 67 6e 65 64 20 69  umber assigned i
dcd0: 73 20 74 68 65 20 6e 65 78 74 20 75 6e 75 73 65  s the next unuse
dce0: 64 20 6e 75 6d 62 65 72 2e 20 20 54 6f 20 61 76  d number.  To av
dcf0: 6f 69 64 20 63 6f 6e 66 75 73 69 6f 6e 2c 0a 69  oid confusion,.i
dd00: 74 20 69 73 20 62 65 73 74 20 74 6f 20 61 76 6f  t is best to avo
dd10: 69 64 20 6d 69 78 69 6e 67 20 6e 61 6d 65 64 20  id mixing named 
dd20: 61 6e 64 20 6e 75 6d 62 65 72 65 64 20 70 61 72  and numbered par
dd30: 61 6d 65 74 65 72 73 2e 3c 2f 74 64 3e 0a 3c 2f  ameters.</td>.</
dd40: 74 72 3e 0a 3c 74 72 3e 0a 3c 74 64 20 61 6c 69  tr>.<tr>.<td ali
dd50: 67 6e 3d 22 72 69 67 68 74 22 20 76 61 6c 69 67  gn="right" valig
dd60: 6e 3d 22 74 6f 70 22 3e 3c 62 3e 40 3c 2f 62 3e  n="top"><b>@</b>
dd70: 3c 69 3e 41 41 41 41 3c 2f 69 3e 3c 2f 74 64 3e  <i>AAAA</i></td>
dd80: 3c 74 64 20 77 69 64 74 68 3d 22 32 30 22 3e 3c  <td width="20"><
dd90: 2f 74 64 3e 0a 3c 74 64 3e 41 6e 20 22 61 74 22  /td>.<td>An "at"
dda0: 20 73 69 67 6e 20 77 6f 72 6b 73 20 65 78 61 63   sign works exac
ddb0: 74 6c 79 20 6c 69 6b 65 20 61 20 63 6f 6c 6f 6e  tly like a colon
ddc0: 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 74 72  .</td>.</tr>.<tr
ddd0: 3e 0a 3c 74 64 20 61 6c 69 67 6e 3d 22 72 69 67  >.<td align="rig
dde0: 68 74 22 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  ht" valign="top"
ddf0: 3e 3c 62 3e 24 3c 2f 62 3e 3c 69 3e 41 41 41 41  ><b>$</b><i>AAAA
de00: 3c 2f 69 3e 3c 2f 74 64 3e 3c 74 64 20 77 69 64  </i></td><td wid
de10: 74 68 3d 22 32 30 22 3e 3c 2f 74 64 3e 0a 3c 74  th="20"></td>.<t
de20: 64 3e 41 20 64 6f 6c 6c 61 72 2d 73 69 67 6e 20  d>A dollar-sign 
de30: 66 6f 6c 6c 6f 77 65 64 20 62 79 20 61 6e 20 69  followed by an i
de40: 64 65 6e 74 69 66 69 65 72 20 6e 61 6d 65 20 61  dentifier name a
de50: 6c 73 6f 20 68 6f 6c 64 73 20 61 20 73 70 6f 74  lso holds a spot
de60: 20 66 6f 72 20 61 20 6e 61 6d 65 64 0a 70 61 72   for a named.par
de70: 61 6d 65 74 65 72 20 77 69 74 68 20 74 68 65 20  ameter with the 
de80: 6e 61 6d 65 20 41 41 41 41 2e 20 20 54 68 65 20  name AAAA.  The 
de90: 69 64 65 6e 74 69 66 69 65 72 20 6e 61 6d 65 20  identifier name 
dea0: 69 6e 20 74 68 69 73 20 63 61 73 65 20 63 61 6e  in this case can
deb0: 20 69 6e 63 6c 75 64 65 0a 6f 6e 65 20 6f 72 20   include.one or 
dec0: 6d 6f 72 65 20 6f 63 63 75 72 61 6e 63 65 73 20  more occurances 
ded0: 6f 66 20 22 3a 3a 22 20 61 6e 64 20 61 20 73 75  of "::" and a su
dee0: 66 66 69 78 20 65 6e 63 6c 6f 73 65 64 20 69 6e  ffix enclosed in
def0: 20 22 28 2e 2e 2e 29 22 20 63 6f 6e 74 61 69 6e   "(...)" contain
df00: 69 6e 67 0a 61 6e 79 20 74 65 78 74 20 61 74 20  ing.any text at 
df10: 61 6c 6c 2e 20 20 54 68 69 73 20 73 79 6e 74 61  all.  This synta
df20: 78 20 69 73 20 74 68 65 20 66 6f 72 6d 20 6f 66  x is the form of
df30: 20 61 20 76 61 72 69 61 62 6c 65 20 6e 61 6d 65   a variable name
df40: 20 69 6e 20 74 68 65 0a 5b 68 74 74 70 3a 2f 2f   in the.[http://
df50: 77 77 77 2e 74 63 6c 2e 74 6b 2f 20 7c 20 54 63  www.tcl.tk/ | Tc
df60: 6c 20 70 72 6f 67 72 61 6d 6d 69 6e 67 20 6c 61  l programming la
df70: 6e 67 75 61 67 65 5d 2e 20 20 54 68 65 20 70 72  nguage].  The pr
df80: 65 73 65 6e 63 65 0a 6f 66 20 74 68 69 73 20 73  esence.of this s
df90: 79 6e 74 61 78 20 72 65 73 75 6c 74 73 20 66 72  yntax results fr
dfa0: 6f 6d 20 74 68 65 20 66 61 63 74 20 74 68 61 74  om the fact that
dfb0: 20 53 51 4c 69 74 65 20 69 73 20 72 65 61 6c 6c   SQLite is reall
dfc0: 79 20 61 20 0a 5b 54 63 6c 20 65 78 74 65 6e 73  y a .[Tcl extens
dfd0: 69 6f 6e 5d 20 74 68 61 74 20 68 61 73 20 65 73  ion] that has es
dfe0: 63 61 70 65 64 20 69 6e 74 6f 20 74 68 65 20 77  caped into the w
dff0: 69 6c 64 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a  ild.</td>.</tr>.
e000: 3c 2f 74 61 62 6c 65 3e 0a 3c 2f 62 6c 6f 63 6b  </table>.</block
e010: 71 75 6f 74 65 3e 0a 0a 3c 70 3e 50 61 72 61 6d  quote>..<p>Param
e020: 65 74 65 72 73 20 74 68 61 74 20 61 72 65 20 6e  eters that are n
e030: 6f 74 20 61 73 73 69 67 6e 65 64 20 76 61 6c 75  ot assigned valu
e040: 65 73 20 75 73 69 6e 67 0a 5b 73 71 6c 69 74 65  es using.[sqlite
e050: 33 5f 62 69 6e 64 5f 62 6c 6f 62 28 29 20 7c 20  3_bind_blob() | 
e060: 73 71 6c 69 74 65 33 5f 62 69 6e 64 28 29 5d 20  sqlite3_bind()] 
e070: 61 72 65 20 74 72 65 61 74 65 64 0a 61 73 20 4e  are treated.as N
e080: 55 4c 4c 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 68  ULL.</p>..<tcl>h
e090: 64 5f 66 72 61 67 6d 65 6e 74 20 6c 69 6b 65 20  d_fragment like 
e0a0: 4c 49 4b 45 20 45 53 43 41 50 45 3c 2f 74 63 6c  LIKE ESCAPE</tcl
e0b0: 3e 0a 3c 68 33 3e 54 68 65 20 4c 49 4b 45 20 61  >.<h3>The LIKE a
e0c0: 6e 64 20 47 4c 4f 42 20 6f 70 65 72 61 74 6f 72  nd GLOB operator
e0d0: 73 3c 2f 68 33 3e 0a 3c 70 3e 54 68 65 20 4c 49  s</h3>.<p>The LI
e0e0: 4b 45 20 6f 70 65 72 61 74 6f 72 20 64 6f 65 73  KE operator does
e0f0: 20 61 20 70 61 74 74 65 72 6e 20 6d 61 74 63 68   a pattern match
e100: 69 6e 67 20 63 6f 6d 70 61 72 69 73 6f 6e 2e 20  ing comparison. 
e110: 54 68 65 20 6f 70 65 72 61 6e 64 0a 74 6f 20 74  The operand.to t
e120: 68 65 20 72 69 67 68 74 20 63 6f 6e 74 61 69 6e  he right contain
e130: 73 20 74 68 65 20 70 61 74 74 65 72 6e 2c 20 74  s the pattern, t
e140: 68 65 20 6c 65 66 74 20 68 61 6e 64 20 6f 70 65  he left hand ope
e150: 72 61 6e 64 20 63 6f 6e 74 61 69 6e 73 20 74 68  rand contains th
e160: 65 0a 73 74 72 69 6e 67 20 74 6f 20 6d 61 74 63  e.string to matc
e170: 68 20 61 67 61 69 6e 73 74 20 74 68 65 20 70 61  h against the pa
e180: 74 74 65 72 6e 2e 0a 0a 3c 74 63 6c 3e 68 64 5f  ttern...<tcl>hd_
e190: 70 75 74 73 20 22 41 20 70 65 72 63 65 6e 74 20  puts "A percent 
e1a0: 73 79 6d 62 6f 6c 20 28 5c 22 25 5c 22 29 20 69  symbol (\"%\") i
e1b0: 6e 20 74 68 65 20 70 61 74 74 65 72 6e 20 6d 61  n the pattern ma
e1c0: 74 63 68 65 73 20 61 6e 79 0a 73 65 71 75 65 6e  tches any.sequen
e1d0: 63 65 20 6f 66 20 7a 65 72 6f 20 6f 72 20 6d 6f  ce of zero or mo
e1e0: 72 65 20 63 68 61 72 61 63 74 65 72 73 20 69 6e  re characters in
e1f0: 20 74 68 65 20 73 74 72 69 6e 67 2e 20 20 41 6e   the string.  An
e200: 20 75 6e 64 65 72 73 63 6f 72 65 0a 28 5c 22 5f   underscore.(\"_
e210: 5c 22 29 20 69 6e 20 74 68 65 20 70 61 74 74 65  \") in the patte
e220: 72 6e 20 6d 61 74 63 68 65 73 20 61 6e 79 20 73  rn matches any s
e230: 69 6e 67 6c 65 20 63 68 61 72 61 63 74 65 72 20  ingle character 
e240: 69 6e 20 74 68 65 0a 73 74 72 69 6e 67 2e 20 20  in the.string.  
e250: 41 6e 79 20 6f 74 68 65 72 20 63 68 61 72 61 63  Any other charac
e260: 74 65 72 20 6d 61 74 63 68 65 73 20 69 74 73 65  ter matches itse
e270: 6c 66 20 6f 72 20 69 74 27 73 20 6c 6f 77 65 72  lf or it's lower
e280: 2f 75 70 70 65 72 20 63 61 73 65 0a 65 71 75 69  /upper case.equi
e290: 76 61 6c 65 6e 74 20 28 69 2e 65 2e 20 63 61 73  valent (i.e. cas
e2a0: 65 2d 69 6e 73 65 6e 73 69 74 69 76 65 20 6d 61  e-insensitive ma
e2b0: 74 63 68 69 6e 67 29 2e 20 20 28 41 20 62 75 67  tching).  (A bug
e2c0: 3a 20 53 51 4c 69 74 65 20 6f 6e 6c 79 0a 75 6e  : SQLite only.un
e2d0: 64 65 72 73 74 61 6e 64 73 20 75 70 70 65 72 2f  derstands upper/
e2e0: 6c 6f 77 65 72 20 63 61 73 65 20 66 6f 72 20 41  lower case for A
e2f0: 53 43 49 49 20 63 68 61 72 61 63 74 65 72 73 2e  SCII characters.
e300: 20 20 54 68 65 0a 4c 49 4b 45 20 6f 70 65 72 61    The.LIKE opera
e310: 74 6f 72 20 69 73 20 63 61 73 65 20 73 65 6e 73  tor is case sens
e320: 69 74 69 76 65 20 66 6f 72 20 75 6e 69 63 6f 64  itive for unicod
e330: 65 20 63 68 61 72 61 63 74 65 72 73 20 74 68 61  e characters tha
e340: 74 20 61 72 65 20 62 65 79 6f 6e 64 0a 74 68 65  t are beyond.the
e350: 20 41 53 43 49 49 20 72 61 6e 67 65 2e 20 20 46   ASCII range.  F
e360: 6f 72 20 65 78 61 6d 70 6c 65 2c 20 74 68 65 20  or example, the 
e370: 65 78 70 72 65 73 73 69 6f 6e 20 3c 62 3e 27 61  expression <b>'a
e380: 27 26 6e 62 73 70 3b 4c 49 4b 45 26 6e 62 73 70  '&nbsp;LIKE&nbsp
e390: 3b 27 41 27 3c 2f 62 3e 0a 69 73 20 54 52 55 45  ;'A'</b>.is TRUE
e3a0: 20 62 75 74 20 3c 62 3e 27 26 61 65 6c 69 67 3b   but <b>'&aelig;
e3b0: 27 26 6e 62 73 70 3b 4c 49 4b 45 26 6e 62 73 70  '&nbsp;LIKE&nbsp
e3c0: 3b 27 26 41 45 6c 69 67 3b 27 3c 2f 62 3e 20 69  ;'&AElig;'</b> i
e3d0: 73 20 46 41 4c 53 45 2e 29 2e 3c 2f 70 3e 22 3c  s FALSE.).</p>"<
e3e0: 2f 74 63 6c 3e 0a 0a 3c 70 3e 49 66 20 74 68 65  /tcl>..<p>If the
e3f0: 20 6f 70 74 69 6f 6e 61 6c 20 45 53 43 41 50 45   optional ESCAPE
e400: 20 63 6c 61 75 73 65 20 69 73 20 70 72 65 73 65   clause is prese
e410: 6e 74 2c 20 74 68 65 6e 20 74 68 65 20 65 78 70  nt, then the exp
e420: 72 65 73 73 69 6f 6e 0a 66 6f 6c 6c 6f 77 69 6e  ression.followin
e430: 67 20 74 68 65 20 45 53 43 41 50 45 20 6b 65 79  g the ESCAPE key
e440: 77 6f 72 64 20 6d 75 73 74 20 65 76 61 6c 75 61  word must evalua
e450: 74 65 20 74 6f 20 61 20 73 74 72 69 6e 67 20 63  te to a string c
e460: 6f 6e 73 69 73 74 69 6e 67 20 6f 66 0a 61 20 73  onsisting of.a s
e470: 69 6e 67 6c 65 20 63 68 61 72 61 63 74 65 72 2e  ingle character.
e480: 20 54 68 69 73 20 63 68 61 72 61 63 74 65 72 20   This character 
e490: 6d 61 79 20 62 65 20 75 73 65 64 20 69 6e 20 74  may be used in t
e4a0: 68 65 20 4c 49 4b 45 20 70 61 74 74 65 72 6e 0a  he LIKE pattern.
e4b0: 74 6f 20 69 6e 63 6c 75 64 65 20 6c 69 74 65 72  to include liter
e4c0: 61 6c 20 70 65 72 63 65 6e 74 20 6f 72 20 75 6e  al percent or un
e4d0: 64 65 72 73 63 6f 72 65 20 63 68 61 72 61 63 74  derscore charact
e4e0: 65 72 73 2e 20 54 68 65 20 65 73 63 61 70 65 0a  ers. The escape.
e4f0: 63 68 61 72 61 63 74 65 72 20 66 6f 6c 6c 6f 77  character follow
e500: 65 64 20 62 79 20 61 20 70 65 72 63 65 6e 74 20  ed by a percent 
e510: 73 79 6d 62 6f 6c 2c 20 75 6e 64 65 72 73 63 6f  symbol, undersco
e520: 72 65 20 6f 72 20 69 74 73 65 6c 66 20 6d 61 74  re or itself mat
e530: 63 68 65 73 20 61 0a 6c 69 74 65 72 61 6c 20 70  ches a.literal p
e540: 65 72 63 65 6e 74 20 73 79 6d 62 6f 6c 2c 20 75  ercent symbol, u
e550: 6e 64 65 72 73 63 6f 72 65 20 6f 72 20 65 73 63  nderscore or esc
e560: 61 70 65 20 63 68 61 72 61 63 74 65 72 20 69 6e  ape character in
e570: 20 74 68 65 20 73 74 72 69 6e 67 2c 0a 72 65 73   the string,.res
e580: 70 65 63 74 69 76 65 6c 79 2e 0a 0a 3c 70 3e 54  pectively...<p>T
e590: 68 65 20 69 6e 66 69 78 20 4c 49 4b 45 20 6f 70  he infix LIKE op
e5a0: 65 72 61 74 6f 72 20 69 73 20 69 6d 70 6c 65 6d  erator is implem
e5b0: 65 6e 74 65 64 20 62 79 20 63 61 6c 6c 69 6e 67  ented by calling
e5c0: 20 74 68 65 0a 61 70 70 6c 69 63 61 74 69 6f 6e   the.application
e5d0: 2d 64 65 66 69 6e 65 64 20 53 51 4c 20 66 75 6e  -defined SQL fun
e5e0: 63 74 69 6f 6e 73 20 5b 6c 69 6b 65 28 3c 69 3e  ctions [like(<i>
e5f0: 59 3c 2f 69 3e 2c 3c 69 3e 58 3c 2f 69 3e 29 5d  Y</i>,<i>X</i>)]
e600: 20 6f 72 0a 5b 6c 69 6b 65 28 3c 69 3e 59 3c 2f   or.[like(<i>Y</
e610: 69 3e 2c 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e 5a  i>,<i>X</i>,<i>Z
e620: 3c 2f 69 3e 29 5d 3c 2f 61 3e 2e 3c 2f 70 3e 0a  </i>)]</a>.</p>.
e630: 0a 3c 70 3e 54 68 65 20 4c 49 4b 45 20 6f 70 65  .<p>The LIKE ope
e640: 72 61 74 6f 72 20 63 61 6e 20 62 65 20 6d 61 64  rator can be mad
e650: 65 20 63 61 73 65 20 73 65 6e 73 69 74 69 76 65  e case sensitive
e660: 20 75 73 69 6e 67 20 74 68 65 0a 5b 63 61 73 65   using the.[case
e670: 5f 73 65 6e 73 69 74 69 76 65 5f 6c 69 6b 65 20  _sensitive_like 
e680: 70 72 61 67 6d 61 5d 2e 3c 2f 70 3e 0a 0a 3c 74  pragma].</p>..<t
e690: 63 6c 3e 68 64 5f 66 72 61 67 6d 65 6e 74 20 67  cl>hd_fragment g
e6a0: 6c 6f 62 20 47 4c 4f 42 3c 2f 74 63 6c 3e 0a 3c  lob GLOB</tcl>.<
e6b0: 70 3e 54 68 65 20 47 4c 4f 42 20 6f 70 65 72 61  p>The GLOB opera
e6c0: 74 6f 72 20 69 73 20 73 69 6d 69 6c 61 72 20 74  tor is similar t
e6d0: 6f 20 4c 49 4b 45 20 62 75 74 20 75 73 65 73 20  o LIKE but uses 
e6e0: 74 68 65 20 55 6e 69 78 0a 66 69 6c 65 20 67 6c  the Unix.file gl
e6f0: 6f 62 62 69 6e 67 20 73 79 6e 74 61 78 20 66 6f  obbing syntax fo
e700: 72 20 69 74 73 20 77 69 6c 64 63 61 72 64 73 2e  r its wildcards.
e710: 20 20 41 6c 73 6f 2c 20 47 4c 4f 42 20 69 73 20    Also, GLOB is 
e720: 63 61 73 65 0a 73 65 6e 73 69 74 69 76 65 2c 20  case.sensitive, 
e730: 75 6e 6c 69 6b 65 20 4c 49 4b 45 2e 20 20 42 6f  unlike LIKE.  Bo
e740: 74 68 20 47 4c 4f 42 20 61 6e 64 20 4c 49 4b 45  th GLOB and LIKE
e750: 20 6d 61 79 20 62 65 20 70 72 65 63 65 64 65 64   may be preceded
e760: 20 62 79 0a 74 68 65 20 4e 4f 54 20 6b 65 79 77   by.the NOT keyw
e770: 6f 72 64 20 74 6f 20 69 6e 76 65 72 74 20 74 68  ord to invert th
e780: 65 20 73 65 6e 73 65 20 6f 66 20 74 68 65 20 74  e sense of the t
e790: 65 73 74 2e 20 20 54 68 65 20 69 6e 66 69 78 20  est.  The infix 
e7a0: 47 4c 4f 42 20 0a 6f 70 65 72 61 74 6f 72 20 69  GLOB .operator i
e7b0: 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 62 79  s implemented by
e7c0: 20 63 61 6c 6c 69 6e 67 20 74 68 65 20 66 75 6e   calling the fun
e7d0: 63 74 69 6f 6e 0a 5b 67 6c 6f 62 28 3c 69 3e 59  ction.[glob(<i>Y
e7e0: 3c 2f 69 3e 2c 3c 69 3e 58 3c 2f 69 3e 29 5d 20  </i>,<i>X</i>)] 
e7f0: 61 6e 64 20 63 61 6e 20 62 65 20 6d 6f 64 69 66  and can be modif
e800: 69 65 64 20 62 79 20 6f 76 65 72 72 69 64 69 6e  ied by overridin
e810: 67 0a 74 68 61 74 20 66 75 6e 63 74 69 6f 6e 2e  g.that function.
e820: 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 68 64 5f 66 72  </p>..<tcl>hd_fr
e830: 61 67 6d 65 6e 74 20 72 65 67 65 78 70 20 52 45  agment regexp RE
e840: 47 45 58 50 3c 2f 74 63 6c 3e 0a 3c 70 3e 54 68  GEXP</tcl>.<p>Th
e850: 65 20 52 45 47 45 58 50 20 6f 70 65 72 61 74 6f  e REGEXP operato
e860: 72 20 69 73 20 61 20 73 70 65 63 69 61 6c 20 73  r is a special s
e870: 79 6e 74 61 78 20 66 6f 72 20 74 68 65 20 72 65  yntax for the re
e880: 67 65 78 70 28 29 0a 75 73 65 72 20 66 75 6e 63  gexp().user func
e890: 74 69 6f 6e 2e 20 20 4e 6f 20 72 65 67 65 78 70  tion.  No regexp
e8a0: 28 29 20 75 73 65 72 20 66 75 6e 63 74 69 6f 6e  () user function
e8b0: 20 69 73 20 64 65 66 69 6e 65 64 20 62 79 20 64   is defined by d
e8c0: 65 66 61 75 6c 74 0a 61 6e 64 20 73 6f 20 75 73  efault.and so us
e8d0: 65 20 6f 66 20 74 68 65 20 52 45 47 45 58 50 20  e of the REGEXP 
e8e0: 6f 70 65 72 61 74 6f 72 20 77 69 6c 6c 20 6e 6f  operator will no
e8f0: 72 6d 61 6c 6c 79 20 72 65 73 75 6c 74 20 69 6e  rmally result in
e900: 20 61 6e 0a 65 72 72 6f 72 20 6d 65 73 73 61 67   an.error messag
e910: 65 2e 20 20 49 66 20 61 20 75 73 65 72 2d 64 65  e.  If a user-de
e920: 66 69 6e 65 64 20 66 75 6e 63 74 69 6f 6e 20 6e  fined function n
e930: 61 6d 65 64 20 22 72 65 67 65 78 70 22 0a 69 73  amed "regexp".is
e940: 20 61 64 64 65 64 20 61 74 20 72 75 6e 2d 74 69   added at run-ti
e950: 6d 65 2c 20 74 68 61 74 20 66 75 6e 63 74 69 6f  me, that functio
e960: 6e 20 77 69 6c 6c 20 62 65 20 63 61 6c 6c 65 64  n will be called
e970: 20 69 6e 20 6f 72 64 65 72 0a 74 6f 20 69 6d 70   in order.to imp
e980: 6c 65 6d 65 6e 74 20 74 68 65 20 52 45 47 45 58  lement the REGEX
e990: 50 20 6f 70 65 72 61 74 6f 72 2e 3c 2f 70 3e 0a  P operator.</p>.
e9a0: 0a 3c 74 63 6c 3e 68 64 5f 66 72 61 67 6d 65 6e  .<tcl>hd_fragmen
e9b0: 74 20 6d 61 74 63 68 20 4d 41 54 43 48 3c 2f 74  t match MATCH</t
e9c0: 63 6c 3e 0a 3c 70 3e 54 68 65 20 4d 41 54 43 48  cl>.<p>The MATCH
e9d0: 20 6f 70 65 72 61 74 6f 72 20 69 73 20 61 20 73   operator is a s
e9e0: 70 65 63 69 61 6c 20 73 79 6e 74 61 78 20 66 6f  pecial syntax fo
e9f0: 72 20 74 68 65 20 6d 61 74 63 68 28 29 0a 75 73  r the match().us
ea00: 65 72 20 66 75 6e 63 74 69 6f 6e 2e 20 20 54 68  er function.  Th
ea10: 65 20 64 65 66 61 75 6c 74 20 6d 61 74 63 68 28  e default match(
ea20: 29 20 66 75 6e 63 74 69 6f 6e 20 69 6d 70 6c 65  ) function imple
ea30: 6d 65 6e 74 61 74 69 6f 6e 0a 72 61 69 73 65 73  mentation.raises
ea40: 20 61 6e 20 65 78 63 65 70 74 69 6f 6e 20 61 6e   an exception an
ea50: 64 20 69 73 20 6e 6f 74 20 72 65 61 6c 6c 79 20  d is not really 
ea60: 75 73 65 66 75 6c 20 66 6f 72 20 61 6e 79 74 68  useful for anyth
ea70: 69 6e 67 2e 0a 42 75 74 20 65 78 74 65 6e 73 69  ing..But extensi
ea80: 6f 6e 73 20 63 61 6e 20 6f 76 65 72 72 69 64 65  ons can override
ea90: 20 74 68 65 20 6d 61 74 63 68 28 29 20 66 75 6e   the match() fun
eaa0: 63 74 69 6f 6e 20 77 69 74 68 20 6d 6f 72 65 0a  ction with more.
eab0: 68 65 6c 70 66 75 6c 20 6c 6f 67 69 63 2e 3c 2f  helpful logic.</
eac0: 70 3e 0a 0a 3c 74 63 6c 3e 68 64 5f 66 72 61 67  p>..<tcl>hd_frag
ead0: 6d 65 6e 74 20 62 65 74 77 65 65 6e 20 42 45 54  ment between BET
eae0: 57 45 45 4e 3c 2f 74 63 6c 3e 0a 3c 68 33 3e 54  WEEN</tcl>.<h3>T
eaf0: 68 65 20 42 45 54 57 45 45 4e 20 6f 70 65 72 61  he BETWEEN opera
eb00: 74 6f 72 3c 2f 68 33 3e 0a 3c 70 3e 54 68 65 20  tor</h3>.<p>The 
eb10: 42 45 54 57 45 45 4e 20 6f 70 65 72 61 74 6f 72  BETWEEN operator
eb20: 20 69 73 20 65 71 75 69 76 61 6c 65 6e 74 20 74   is equivalent t
eb30: 6f 20 61 20 70 61 69 72 20 6f 66 20 63 6f 6d 70  o a pair of comp
eb40: 61 72 69 73 6f 6e 73 2e 0a 22 3c 69 3e 61 3c 2f  arisons.."<i>a</
eb50: 69 3e 20 3c 62 3e 42 45 54 57 45 45 4e 3c 2f 62  i> <b>BETWEEN</b
eb60: 3e 20 3c 69 3e 62 3c 2f 69 3e 20 3c 62 3e 41 4e  > <i>b</i> <b>AN
eb70: 44 3c 2f 62 3e 20 3c 69 3e 63 3c 2f 69 3e 22 20  D</b> <i>c</i>" 
eb80: 69 73 20 0a 65 71 75 69 76 61 6c 65 6e 74 20 74  is .equivalent t
eb90: 6f 20 0a 22 3c 69 3e 61 3c 2f 69 3e 3c 62 3e 26  o ."<i>a</i><b>&
eba0: 67 74 3b 3d 3c 2f 62 3e 3c 69 3e 62 3c 2f 69 3e  gt;=</b><i>b</i>
ebb0: 20 3c 62 3e 41 4e 44 3c 2f 62 3e 20 3c 69 3e 61   <b>AND</b> <i>a
ebc0: 3c 2f 69 3e 3c 62 3e 26 6c 74 3b 3d 3c 2f 62 3e  </i><b>&lt;=</b>
ebd0: 3c 69 3e 63 3c 2f 69 3e 22 2e 0a 54 68 65 20 70  <i>c</i>"..The p
ebe0: 72 65 63 65 64 65 6e 63 65 20 6f 66 20 74 68 65  recedence of the
ebf0: 20 42 45 54 57 45 45 4e 20 6f 70 65 72 61 74 6f   BETWEEN operato
ec00: 72 20 69 73 20 74 68 65 20 73 61 6d 65 20 61 73  r is the same as
ec10: 20 74 68 65 20 70 72 65 63 65 64 65 6e 63 65 0a   the precedence.
ec20: 61 73 20 6f 70 65 72 61 74 6f 72 73 20 3c 62 3e  as operators <b>
ec30: 3d 3d 3c 2f 62 3e 20 61 6e 64 20 3c 62 3e 21 3d  ==</b> and <b>!=
ec40: 3c 2f 62 3e 20 61 6e 64 20 3c 62 3e 4c 49 4b 45  </b> and <b>LIKE
ec50: 3c 2f 62 3e 20 61 6e 64 20 67 72 6f 75 70 73 20  </b> and groups 
ec60: 6c 65 66 74 20 74 6f 20 72 69 67 68 74 2e 0a 0a  left to right...
ec70: 3c 68 33 3e 54 61 62 6c 65 20 43 6f 6c 75 6d 6e  <h3>Table Column
ec80: 20 4e 61 6d 65 73 3c 2f 68 33 3e 0a 3c 70 3e 41   Names</h3>.<p>A
ec90: 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 20 63 61 6e   column name can
eca0: 20 62 65 20 61 6e 79 20 6f 66 20 74 68 65 20 6e   be any of the n
ecb0: 61 6d 65 73 20 64 65 66 69 6e 65 64 20 69 6e 20  ames defined in 
ecc0: 74 68 65 20 5b 43 52 45 41 54 45 20 54 41 42 4c  the [CREATE TABL
ecd0: 45 5d 0a 73 74 61 74 65 6d 65 6e 74 20 6f 72 20  E].statement or 
ece0: 6f 6e 65 20 6f 66 20 74 68 65 20 66 6f 6c 6c 6f  one of the follo
ecf0: 77 69 6e 67 20 73 70 65 63 69 61 6c 20 69 64 65  wing special ide
ed00: 6e 74 69 66 69 65 72 73 3a 20 22 3c 62 3e 52 4f  ntifiers: "<b>RO
ed10: 57 49 44 3c 2f 62 3e 22 2c 0a 22 3c 62 3e 4f 49  WID</b>",."<b>OI
ed20: 44 3c 2f 62 3e 22 2c 20 6f 72 20 22 3c 62 3e 5f  D</b>", or "<b>_
ed30: 52 4f 57 49 44 5f 3c 2f 62 3e 22 2e 0a 54 68 65  ROWID_</b>"..The
ed40: 73 65 20 73 70 65 63 69 61 6c 20 69 64 65 6e 74  se special ident
ed50: 69 66 69 65 72 73 20 61 6c 6c 20 64 65 73 63 72  ifiers all descr
ed60: 69 62 65 20 74 68 65 0a 75 6e 69 71 75 65 20 69  ibe the.unique i
ed70: 6e 74 65 67 65 72 20 6b 65 79 20 28 74 68 65 20  nteger key (the 
ed80: 5b 72 6f 77 69 64 5d 29 20 61 73 73 6f 63 69 61  [rowid]) associa
ed90: 74 65 64 20 77 69 74 68 20 65 76 65 72 79 20 0a  ted with every .
eda0: 72 6f 77 20 6f 66 20 65 76 65 72 79 20 74 61 62  row of every tab
edb0: 6c 65 2e 0a 54 68 65 20 73 70 65 63 69 61 6c 20  le..The special 
edc0: 69 64 65 6e 74 69 66 69 65 72 73 20 6f 6e 6c 79  identifiers only
edd0: 20 72 65 66 65 72 20 74 6f 20 74 68 65 20 72 6f   refer to the ro
ede0: 77 20 6b 65 79 20 69 66 20 74 68 65 20 5b 43 52  w key if the [CR
edf0: 45 41 54 45 20 54 41 42 4c 45 5d 0a 73 74 61 74  EATE TABLE].stat
ee00: 65 6d 65 6e 74 20 64 6f 65 73 20 6e 6f 74 20 64  ement does not d
ee10: 65 66 69 6e 65 20 61 20 72 65 61 6c 20 63 6f 6c  efine a real col
ee20: 75 6d 6e 20 77 69 74 68 20 74 68 65 20 73 61 6d  umn with the sam
ee30: 65 20 6e 61 6d 65 2e 0a 54 68 65 20 72 6f 77 69  e name..The rowi
ee40: 64 20 63 61 6e 20 62 65 20 75 73 65 64 20 61 6e  d can be used an
ee50: 79 77 68 65 72 65 20 61 20 72 65 67 75 6c 61 72  ywhere a regular
ee60: 0a 63 6f 6c 75 6d 6e 20 63 61 6e 20 62 65 20 75  .column can be u
ee70: 73 65 64 2e 3c 2f 70 3e 0a 0a 3c 68 33 3e 53 75  sed.</p>..<h3>Su
ee80: 62 71 75 65 72 69 65 73 3c 2f 68 33 3e 0a 3c 70  bqueries</h3>.<p
ee90: 3e 5b 53 45 4c 45 43 54 5d 20 73 74 61 74 65 6d  >[SELECT] statem
eea0: 65 6e 74 73 20 63 61 6e 20 61 70 70 65 61 72 20  ents can appear 
eeb0: 69 6e 20 65 78 70 72 65 73 73 69 6f 6e 73 20 61  in expressions a
eec0: 73 20 65 69 74 68 65 72 20 74 68 65 0a 72 69 67  s either the.rig
eed0: 68 74 2d 68 61 6e 64 20 6f 70 65 72 61 6e 64 20  ht-hand operand 
eee0: 6f 66 20 74 68 65 20 49 4e 20 6f 70 65 72 61 74  of the IN operat
eef0: 6f 72 2c 20 61 73 20 61 20 73 63 61 6c 61 72 20  or, as a scalar 
ef00: 71 75 61 6e 74 69 74 79 2c 20 6f 72 0a 61 73 20  quantity, or.as 
ef10: 74 68 65 20 6f 70 65 72 61 6e 64 20 6f 66 20 61  the operand of a
ef20: 6e 20 45 58 49 53 54 53 20 6f 70 65 72 61 74 6f  n EXISTS operato
ef30: 72 2e 0a 41 73 20 61 20 73 63 61 6c 61 72 20 71  r..As a scalar q
ef40: 75 61 6e 74 69 74 79 20 6f 72 20 74 68 65 20 6f  uantity or the o
ef50: 70 65 72 61 6e 64 20 6f 66 20 61 6e 20 49 4e 20  perand of an IN 
ef60: 6f 70 65 72 61 74 6f 72 2c 0a 74 68 65 20 53 45  operator,.the SE
ef70: 4c 45 43 54 20 73 68 6f 75 6c 64 20 68 61 76 65  LECT should have
ef80: 20 6f 6e 6c 79 20 61 20 73 69 6e 67 6c 65 20 63   only a single c
ef90: 6f 6c 75 6d 6e 20 69 6e 20 69 74 73 0a 72 65 73  olumn in its.res
efa0: 75 6c 74 2e 20 20 43 6f 6d 70 6f 75 6e 64 20 53  ult.  Compound S
efb0: 45 4c 45 43 54 73 20 28 63 6f 6e 6e 65 63 74 65  ELECTs (connecte
efc0: 64 20 77 69 74 68 20 6b 65 79 77 6f 72 64 73 20  d with keywords 
efd0: 6c 69 6b 65 20 55 4e 49 4f 4e 20 6f 72 0a 45 58  like UNION or.EX
efe0: 43 45 50 54 29 20 61 72 65 20 61 6c 6c 6f 77 65  CEPT) are allowe
eff0: 64 2e 0a 57 69 74 68 20 74 68 65 20 45 58 49 53  d..With the EXIS
f000: 54 53 20 6f 70 65 72 61 74 6f 72 2c 20 74 68 65  TS operator, the
f010: 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65 20   columns in the 
f020: 72 65 73 75 6c 74 20 73 65 74 20 6f 66 20 74 68  result set of th
f030: 65 20 5b 53 45 4c 45 43 54 5d 20 61 72 65 0a 69  e [SELECT] are.i
f040: 67 6e 6f 72 65 64 20 61 6e 64 20 74 68 65 20 65  gnored and the e
f050: 78 70 72 65 73 73 69 6f 6e 20 72 65 74 75 72 6e  xpression return
f060: 73 20 54 52 55 45 20 69 66 20 6f 6e 65 20 6f 72  s TRUE if one or
f070: 20 6d 6f 72 65 20 72 6f 77 73 20 65 78 69 73 74   more rows exist
f080: 0a 61 6e 64 20 46 41 4c 53 45 20 69 66 20 74 68  .and FALSE if th
f090: 65 20 72 65 73 75 6c 74 20 73 65 74 20 69 73 20  e result set is 
f0a0: 65 6d 70 74 79 2e 0a 49 66 20 6e 6f 20 74 65 72  empty..If no ter
f0b0: 6d 73 20 69 6e 20 74 68 65 20 5b 53 45 4c 45 43  ms in the [SELEC
f0c0: 54 5d 20 65 78 70 72 65 73 73 69 6f 6e 20 72 65  T] expression re
f0d0: 66 65 72 20 74 6f 20 76 61 6c 75 65 73 20 69 6e  fer to values in
f0e0: 20 74 68 65 20 63 6f 6e 74 61 69 6e 69 6e 67 0a   the containing.
f0f0: 71 75 65 72 79 2c 20 74 68 65 6e 20 74 68 65 20  query, then the 
f100: 65 78 70 72 65 73 73 69 6f 6e 20 69 73 20 65 76  expression is ev
f110: 61 6c 75 61 74 65 64 20 6f 6e 63 65 20 70 72 69  aluated once pri
f120: 6f 72 20 74 6f 20 61 6e 79 20 6f 74 68 65 72 0a  or to any other.
f130: 70 72 6f 63 65 73 73 69 6e 67 20 61 6e 64 20 74  processing and t
f140: 68 65 20 72 65 73 75 6c 74 20 69 73 20 72 65 75  he result is reu
f150: 73 65 64 20 61 73 20 6e 65 63 65 73 73 61 72 79  sed as necessary
f160: 2e 20 20 49 66 20 74 68 65 20 5b 53 45 4c 45 43  .  If the [SELEC
f170: 54 5d 20 65 78 70 72 65 73 73 69 6f 6e 0a 64 6f  T] expression.do
f180: 65 73 20 63 6f 6e 74 61 69 6e 20 76 61 72 69 61  es contain varia
f190: 62 6c 65 73 20 66 72 6f 6d 20 74 68 65 20 6f 75  bles from the ou
f1a0: 74 65 72 20 71 75 65 72 79 2c 20 74 68 65 6e 20  ter query, then 
f1b0: 74 68 65 20 5b 53 45 4c 45 43 54 5d 20 69 73 20  the [SELECT] is 
f1c0: 72 65 65 76 61 6c 75 61 74 65 64 0a 65 76 65 72  reevaluated.ever
f1d0: 79 20 74 69 6d 65 20 69 74 20 69 73 20 6e 65 65  y time it is nee
f1e0: 64 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 57 68 65  ded.</p>..<p>Whe
f1f0: 6e 20 61 20 53 45 4c 45 43 54 20 69 73 20 74 68  n a SELECT is th
f200: 65 20 72 69 67 68 74 20 6f 70 65 72 61 6e 64 20  e right operand 
f210: 6f 66 20 74 68 65 20 49 4e 20 6f 70 65 72 61 74  of the IN operat
f220: 6f 72 2c 20 74 68 65 20 49 4e 0a 6f 70 65 72 61  or, the IN.opera
f230: 74 6f 72 20 72 65 74 75 72 6e 73 20 54 52 55 45  tor returns TRUE
f240: 20 69 66 20 74 68 65 20 72 65 73 75 6c 74 20 6f   if the result o
f250: 66 20 74 68 65 20 6c 65 66 74 20 6f 70 65 72 61  f the left opera
f260: 6e 64 20 69 73 20 61 6e 79 20 6f 66 0a 74 68 65  nd is any of.the
f270: 20 76 61 6c 75 65 73 20 67 65 6e 65 72 61 74 65   values generate
f280: 64 20 62 79 20 74 68 65 20 73 65 6c 65 63 74 2e  d by the select.
f290: 20 20 54 68 65 20 49 4e 20 6f 70 65 72 61 74 6f    The IN operato
f2a0: 72 20 6d 61 79 20 62 65 20 70 72 65 63 65 64 65  r may be precede
f2b0: 64 0a 62 79 20 74 68 65 20 4e 4f 54 20 6b 65 79  d.by the NOT key
f2c0: 77 6f 72 64 20 74 6f 20 69 6e 76 65 72 74 20 74  word to invert t
f2d0: 68 65 20 73 65 6e 73 65 20 6f 66 20 74 68 65 20  he sense of the 
f2e0: 74 65 73 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 57 68  test.</p>..<p>Wh
f2f0: 65 6e 20 61 20 53 45 4c 45 43 54 20 61 70 70 65  en a SELECT appe
f300: 61 72 73 20 77 69 74 68 69 6e 20 61 6e 20 65 78  ars within an ex
f310: 70 72 65 73 73 69 6f 6e 20 62 75 74 20 69 73 20  pression but is 
f320: 6e 6f 74 20 74 68 65 20 72 69 67 68 74 0a 6f 70  not the right.op
f330: 65 72 61 6e 64 20 6f 66 20 61 6e 20 49 4e 20 6f  erand of an IN o
f340: 70 65 72 61 74 6f 72 2c 20 74 68 65 6e 20 74 68  perator, then th
f350: 65 20 66 69 72 73 74 20 72 6f 77 20 6f 66 20 74  e first row of t
f360: 68 65 20 72 65 73 75 6c 74 20 6f 66 20 74 68 65  he result of the
f370: 0a 53 45 4c 45 43 54 20 62 65 63 6f 6d 65 73 20  .SELECT becomes 
f380: 74 68 65 20 76 61 6c 75 65 20 75 73 65 64 20 69  the value used i
f390: 6e 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e  n the expression
f3a0: 2e 20 20 49 66 20 74 68 65 20 53 45 4c 45 43 54  .  If the SELECT
f3b0: 20 79 69 65 6c 64 73 0a 6d 6f 72 65 20 74 68 61   yields.more tha
f3c0: 6e 20 6f 6e 65 20 72 65 73 75 6c 74 20 72 6f 77  n one result row
f3d0: 2c 20 61 6c 6c 20 72 6f 77 73 20 61 66 74 65 72  , all rows after
f3e0: 20 74 68 65 20 66 69 72 73 74 20 61 72 65 20 69   the first are i
f3f0: 67 6e 6f 72 65 64 2e 20 20 49 66 0a 74 68 65 20  gnored.  If.the 
f400: 53 45 4c 45 43 54 20 79 69 65 6c 64 73 20 6e 6f  SELECT yields no
f410: 20 72 6f 77 73 2c 20 74 68 65 6e 20 74 68 65 20   rows, then the 
f420: 76 61 6c 75 65 20 6f 66 20 74 68 65 20 53 45 4c  value of the SEL
f430: 45 43 54 20 69 73 20 4e 55 4c 4c 2e 3c 2f 70 3e  ECT is NULL.</p>
f440: 0a 0a 3c 68 33 3e 43 41 53 54 20 65 78 70 72 65  ..<h3>CAST expre
f450: 73 73 69 6f 6e 73 3c 2f 68 33 3e 0a 3c 70 3e 41  ssions</h3>.<p>A
f460: 20 43 41 53 54 20 65 78 70 72 65 73 73 69 6f 6e   CAST expression
f470: 20 63 68 61 6e 67 65 73 20 74 68 65 20 5b 64 61   changes the [da
f480: 74 61 74 79 70 65 5d 20 6f 66 20 74 68 65 20 3c  tatype] of the <
f490: 65 78 70 72 3e 20 69 6e 74 6f 20 74 68 65 0a 74  expr> into the.t
f4a0: 79 70 65 20 73 70 65 63 69 66 69 65 64 20 62 79  ype specified by
f4b0: 20 26 6c 74 3b 74 79 70 65 26 67 74 3b 2e 20 0a   &lt;type&gt;. .
f4c0: 26 6c 74 3b 74 79 70 65 26 67 74 3b 20 63 61 6e  &lt;type&gt; can
f4d0: 20 62 65 20 61 6e 79 20 6e 6f 6e 2d 65 6d 70 74   be any non-empt
f4e0: 79 20 74 79 70 65 20 6e 61 6d 65 20 74 68 61 74  y type name that
f4f0: 20 69 73 20 76 61 6c 69 64 0a 66 6f 72 20 74 68   is valid.for th
f500: 65 20 74 79 70 65 20 69 6e 20 61 20 63 6f 6c 75  e type in a colu
f510: 6d 6e 20 64 65 66 69 6e 69 74 69 6f 6e 20 6f 66  mn definition of
f520: 20 61 20 5b 43 52 45 41 54 45 20 54 41 42 4c 45   a [CREATE TABLE
f530: 5d 20 73 74 61 74 65 6d 65 6e 74 2e 3c 2f 70 3e  ] statement.</p>
f540: 0a 0a 3c 68 33 3e 46 75 6e 63 74 69 6f 6e 73 3c  ..<h3>Functions<
f550: 2f 68 33 3e 0a 3c 70 3e 42 6f 74 68 20 5b 63 6f  /h3>.<p>Both [co
f560: 72 65 66 75 6e 63 7c 73 69 6d 70 6c 65 5d 20 61  refunc|simple] a
f570: 6e 64 20 5b 61 67 67 66 75 6e 63 7c 61 67 67 72  nd [aggfunc|aggr
f580: 65 67 61 74 65 5d 20 66 75 6e 63 74 69 6f 6e 73  egate] functions
f590: 20 61 72 65 20 73 75 70 70 6f 72 74 65 64 2e 0a   are supported..
f5a0: 28 46 6f 72 20 70 72 65 73 65 6e 74 61 74 69 6f  (For presentatio
f5b0: 6e 20 70 75 72 70 6f 73 65 73 2c 20 73 69 6d 70  n purposes, simp
f5c0: 6c 65 20 66 75 6e 63 74 69 6f 6e 73 20 61 72 65  le functions are
f5d0: 20 66 75 72 74 68 65 72 20 73 75 62 64 69 76 69   further subdivi
f5e0: 64 65 64 20 69 6e 74 6f 0a 5b 63 6f 72 65 66 75  ded into.[corefu
f5f0: 6e 63 20 7c 20 63 6f 72 65 20 66 75 6e 63 74 69  nc | core functi
f600: 6f 6e 73 5d 20 61 6e 64 20 5b 64 61 74 65 66 75  ons] and [datefu
f610: 6e 63 20 7c 20 64 61 74 65 2d 74 69 6d 65 20 66  nc | date-time f
f620: 75 6e 63 74 69 6f 6e 73 5d 2e 29 0a 41 20 73 69  unctions].).A si
f630: 6d 70 6c 65 20 66 75 6e 63 74 69 6f 6e 20 63 61  mple function ca
f640: 6e 20 62 65 20 75 73 65 64 20 69 6e 20 61 6e 79  n be used in any
f650: 20 65 78 70 72 65 73 73 69 6f 6e 2e 20 20 53 69   expression.  Si
f660: 6d 70 6c 65 20 66 75 6e 63 74 69 6f 6e 73 20 72  mple functions r
f670: 65 74 75 72 6e 0a 61 20 72 65 73 75 6c 74 20 69  eturn.a result i
f680: 6d 6d 65 64 69 61 74 65 6c 79 20 62 61 73 65 64  mmediately based
f690: 20 6f 6e 20 74 68 65 69 72 20 69 6e 70 75 74 73   on their inputs
f6a0: 2e 20 20 41 67 67 72 65 67 61 74 65 20 66 75 6e  .  Aggregate fun
f6b0: 63 74 69 6f 6e 73 0a 6d 61 79 20 6f 6e 6c 79 20  ctions.may only 
f6c0: 62 65 20 75 73 65 64 20 69 6e 20 61 20 53 45 4c  be used in a SEL
f6d0: 45 43 54 20 73 74 61 74 65 6d 65 6e 74 2e 20 20  ECT statement.  
f6e0: 41 67 67 72 65 67 61 74 65 20 66 75 6e 63 74 69  Aggregate functi
f6f0: 6f 6e 73 20 63 6f 6d 70 75 74 65 0a 74 68 65 69  ons compute.thei
f700: 72 20 72 65 73 75 6c 74 20 61 63 72 6f 73 73 20  r result across 
f710: 61 6c 6c 20 72 6f 77 73 20 6f 66 20 74 68 65 20  all rows of the 
f720: 72 65 73 75 6c 74 20 73 65 74 2e 3c 2f 70 3e 0a  result set.</p>.
f730: 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23  .<tcl>.#########
f740: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
f750: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
f760: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
f770: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
f780: 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b 43  #####.Section {C
f790: 6f 72 65 20 46 75 6e 63 74 69 6f 6e 73 7d 20 63  ore Functions} c
f7a0: 6f 72 65 66 75 6e 63 20 7b 63 6f 72 65 66 75 6e  orefunc {corefun
f7b0: 63 7d 0a 70 72 6f 63 20 66 75 6e 63 64 65 66 20  c}.proc funcdef 
f7c0: 7b 73 79 6e 74 61 78 20 6b 65 79 77 6f 72 64 73  {syntax keywords
f7d0: 20 64 65 73 63 7d 20 7b 0a 20 20 68 64 5f 70 75   desc} {.  hd_pu
f7e0: 74 73 20 7b 3c 74 72 3e 7d 0a 20 20 72 65 67 73  ts {<tr>}.  regs
f7f0: 75 62 20 2d 61 6c 6c 20 7b 5c 73 2b 7d 20 5b 73  ub -all {\s+} [s
f800: 74 72 69 6e 67 20 74 72 69 6d 20 24 73 79 6e 74  tring trim $synt
f810: 61 78 5d 20 7b 3c 62 72 3e 3c 2f 62 72 3e 7d 20  ax] {<br></br>} 
f820: 73 79 6e 74 61 78 0a 20 20 72 65 67 73 75 62 20  syntax.  regsub 
f830: 2d 61 6c 6c 20 7b 5c 28 28 5b 5e 2a 29 5d 2b 29  -all {\(([^*)]+)
f840: 5c 29 7d 20 24 73 79 6e 74 61 78 20 7b 28 3c 69  \)} $syntax {(<i
f850: 3e 5c 31 3c 2f 69 3e 29 7d 20 73 79 6e 74 61 78  >\1</i>)} syntax
f860: 0a 20 20 72 65 67 73 75 62 20 2d 61 6c 6c 20 7b  .  regsub -all {
f870: 2c 7d 20 24 73 79 6e 74 61 78 20 7b 3c 2f 69 3e  ,} $syntax {</i>
f880: 2c 3c 69 3e 7d 20 73 79 6e 74 61 78 0a 20 20 72  ,<i>} syntax.  r
f890: 65 67 73 75 62 20 2d 61 6c 6c 20 7b 3c 69 3e 5c  egsub -all {<i>\
f8a0: 2e 5c 2e 5c 2e 3c 2f 69 3e 7d 20 24 73 79 6e 74  .\.\.</i>} $synt
f8b0: 61 78 20 7b 2e 2e 2e 7d 20 73 79 6e 74 61 78 0a  ax {...} syntax.
f8c0: 20 20 68 64 5f 70 75 74 73 20 22 3c 74 64 20 76    hd_puts "<td v
f8d0: 61 6c 69 67 6e 3d 5c 22 74 6f 70 5c 22 20 61 6c  align=\"top\" al
f8e0: 69 67 6e 3d 5c 22 72 69 67 68 74 5c 22 20 77 69  ign=\"right\" wi
f8f0: 64 74 68 3d 5c 22 31 32 30 5c 22 3e 24 73 79 6e  dth=\"120\">$syn
f900: 74 61 78 3c 2f 74 64 3e 22 0a 20 20 68 64 5f 70  tax</td>".  hd_p
f910: 75 74 73 20 7b 3c 74 64 20 76 61 6c 69 67 6e 3d  uts {<td valign=
f920: 22 74 6f 70 22 3e 7d 0a 20 20 69 66 20 7b 5b 6c  "top">}.  if {[l
f930: 6c 65 6e 67 74 68 20 24 6b 65 79 77 6f 72 64 73  length $keywords
f940: 5d 3d 3d 30 7d 20 7b 0a 20 20 20 20 72 65 67 65  ]==0} {.    rege
f950: 78 70 20 7b 5b 61 2d 7a 5f 5d 2b 7d 20 24 73 79  xp {[a-z_]+} $sy
f960: 6e 74 61 78 20 6e 61 6d 65 0a 20 20 20 20 68 64  ntax name.    hd
f970: 5f 66 72 61 67 6d 65 6e 74 20 24 6e 61 6d 65 20  _fragment $name 
f980: 24 6e 61 6d 65 0a 20 20 7d 20 65 6c 73 65 20 7b  $name.  } else {
f990: 0a 20 20 20 20 65 76 61 6c 20 68 64 5f 66 72 61  .    eval hd_fra
f9a0: 67 6d 65 6e 74 20 24 6b 65 79 77 6f 72 64 73 0a  gment $keywords.
f9b0: 20 20 20 20 68 64 5f 6b 65 79 77 6f 72 64 73 20      hd_keywords 
f9c0: 24 6b 65 79 77 6f 72 64 73 0a 20 20 7d 0a 20 20  $keywords.  }.  
f9d0: 68 64 5f 72 65 73 6f 6c 76 65 20 24 64 65 73 63  hd_resolve $desc
f9e0: 0a 20 20 68 64 5f 70 75 74 73 20 7b 3c 2f 74 64  .  hd_puts {</td
f9f0: 3e 3c 2f 74 72 3e 7d 0a 7d 0a 3c 2f 74 63 6c 3e  ></tr>}.}.</tcl>
fa00: 0a 0a 3c 70 3e 54 68 65 20 63 6f 72 65 20 66 75  ..<p>The core fu
fa10: 6e 63 74 69 6f 6e 73 20 73 68 6f 77 6e 20 62 65  nctions shown be
fa20: 6c 6f 77 20 61 72 65 20 61 76 61 69 6c 61 62 6c  low are availabl
fa30: 65 20 62 79 20 64 65 66 61 75 6c 74 2e 20 0a 5b  e by default. .[
fa40: 64 61 74 65 66 75 6e 63 20 7c 20 44 61 74 65 20  datefunc | Date 
fa50: 26 61 6d 70 3b 20 54 69 6d 65 20 66 75 6e 63 74  &amp; Time funct
fa60: 69 6f 6e 73 5d 20 61 6e 64 0a 5b 61 67 67 66 75  ions] and.[aggfu
fa70: 6e 63 20 7c 20 61 67 67 72 65 67 61 74 65 20 66  nc | aggregate f
fa80: 75 6e 63 74 69 6f 6e 73 5d 20 61 72 65 20 64 6f  unctions] are do
fa90: 63 75 6d 65 6e 74 65 64 20 73 65 70 61 72 61 74  cumented separat
faa0: 65 6c 79 2e 20 20 41 6e 0a 61 70 70 6c 69 63 61  ely.  An.applica
fab0: 74 69 6f 6e 20 6d 61 79 20 64 65 66 69 6e 65 20  tion may define 
fac0: 61 64 64 69 74 69 6f 6e 61 6c 0a 66 75 6e 63 74  additional.funct
fad0: 69 6f 6e 73 20 77 72 69 74 74 65 6e 20 69 6e 20  ions written in 
fae0: 43 20 61 6e 64 20 61 64 64 65 64 20 74 6f 20 74  C and added to t
faf0: 68 65 20 64 61 74 61 62 61 73 65 20 65 6e 67 69  he database engi
fb00: 6e 65 20 75 73 69 6e 67 0a 74 68 65 20 5b 73 71  ne using.the [sq
fb10: 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 66 75 6e  lite3_create_fun
fb20: 63 74 69 6f 6e 28 29 5d 20 41 50 49 2e 3c 2f 70  ction()] API.</p
fb30: 3e 0a 0a 3c 74 61 62 6c 65 20 62 6f 72 64 65 72  >..<table border
fb40: 3d 30 20 63 65 6c 6c 70 61 64 64 69 6e 67 3d 31  =0 cellpadding=1
fb50: 30 3e 0a 3c 74 63 6c 3e 0a 66 75 6e 63 64 65 66  0>.<tcl>.funcdef
fb60: 20 7b 61 62 73 28 58 29 7d 20 7b 7d 20 7b 0a 20   {abs(X)} {} {. 
fb70: 20 5e 52 65 74 75 72 6e 20 74 68 65 20 61 62 73   ^Return the abs
fb80: 6f 6c 75 74 65 20 76 61 6c 75 65 20 6f 66 20 74  olute value of t
fb90: 68 65 20 6e 75 6d 65 72 69 63 0a 20 20 61 72 67  he numeric.  arg
fba0: 75 6d 65 6e 74 20 3c 69 3e 58 3c 2f 69 3e 2e 20  ument <i>X</i>. 
fbb0: 20 5e 52 65 74 75 72 6e 20 4e 55 4c 4c 20 69 66   ^Return NULL if
fbc0: 20 3c 69 3e 58 3c 2f 69 3e 20 69 73 20 4e 55 4c   <i>X</i> is NUL
fbd0: 4c 2e 20 20 5e 52 65 74 75 72 6e 20 30 2e 30 20  L.  ^Return 0.0 
fbe0: 69 66 0a 20 20 3c 69 3e 58 3c 2f 69 3e 20 69 73  if.  <i>X</i> is
fbf0: 20 6e 6f 74 20 61 20 6e 75 6d 65 72 69 63 20 76   not a numeric v
fc00: 61 6c 75 65 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66  alue..}..funcdef
fc10: 20 7b 63 68 61 6e 67 65 73 28 29 7d 20 7b 7d 20   {changes()} {} 
fc20: 7b 0a 20 20 52 65 74 75 72 6e 20 74 68 65 20 6e  {.  Return the n
fc30: 75 6d 62 65 72 20 6f 66 20 64 61 74 61 62 61 73  umber of databas
fc40: 65 20 72 6f 77 73 20 74 68 61 74 20 77 65 72 65  e rows that were
fc50: 20 63 68 61 6e 67 65 64 20 6f 72 20 69 6e 73 65   changed or inse
fc60: 72 74 65 64 20 6f 72 0a 20 20 64 65 6c 65 74 65  rted or.  delete
fc70: 64 20 62 79 20 74 68 65 20 6d 6f 73 74 20 72 65  d by the most re
fc80: 63 65 6e 74 6c 79 20 63 6f 6d 70 6c 65 74 65 20  cently complete 
fc90: 53 51 4c 2e 20 20 54 68 69 73 20 69 73 20 61 20  SQL.  This is a 
fca0: 77 72 61 70 70 65 72 20 61 72 6f 75 6e 64 0a 20  wrapper around. 
fcb0: 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 63 68   the [sqlite3_ch
fcc0: 61 6e 67 65 73 28 29 5d 20 43 2f 43 2b 2b 20 66  anges()] C/C++ f
fcd0: 75 6e 63 74 69 6f 6e 2e 0a 7d 0a 0a 66 75 6e 63  unction..}..func
fce0: 64 65 66 20 7b 63 6f 61 6c 65 73 63 65 28 58 2c  def {coalesce(X,
fcf0: 59 2c 2e 2e 2e 29 7d 20 7b 7d 20 7b 0a 20 20 52  Y,...)} {} {.  R
fd00: 65 74 75 72 6e 20 61 20 63 6f 70 79 20 6f 66 20  eturn a copy of 
fd10: 74 68 65 20 66 69 72 73 74 20 6e 6f 6e 2d 4e 55  the first non-NU
fd20: 4c 4c 20 61 72 67 75 6d 65 6e 74 2e 20 20 49 66  LL argument.  If
fd30: 0a 20 20 61 6c 6c 20 61 72 67 75 6d 65 6e 74 73  .  all arguments
fd40: 20 61 72 65 20 4e 55 4c 4c 20 74 68 65 6e 20 4e   are NULL then N
fd50: 55 4c 4c 20 69 73 20 72 65 74 75 72 6e 65 64 2e  ULL is returned.
fd60: 20 20 54 68 65 72 65 20 6d 75 73 74 20 62 65 20    There must be 
fd70: 61 74 20 6c 65 61 73 74 20 0a 20 20 32 20 61 72  at least .  2 ar
fd80: 67 75 6d 65 6e 74 73 2e 0a 7d 0a 0a 66 75 6e 63  guments..}..func
fd90: 64 65 66 20 7b 67 6c 6f 62 28 58 2c 59 29 7d 20  def {glob(X,Y)} 
fda0: 7b 7d 20 7b 0a 20 20 54 68 69 73 20 66 75 6e 63  {} {.  This func
fdb0: 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f 20  tion is used to 
fdc0: 69 6d 70 6c 65 6d 65 6e 74 20 74 68 65 0a 20 20  implement the.  
fdd0: 22 3c 62 3e 59 20 47 4c 4f 42 20 58 3c 2f 62 3e  "<b>Y GLOB X</b>
fde0: 22 20 73 79 6e 74 61 78 20 6f 66 20 53 51 4c 69  " syntax of SQLi
fdf0: 74 65 2e 0a 20 20 4e 6f 74 65 20 74 68 61 74 20  te..  Note that 
fe00: 74 68 65 20 58 20 61 6e 64 20 59 20 61 72 67 75  the X and Y argu
fe10: 6d 65 6e 74 73 20 61 72 65 20 72 65 76 65 72 73  ments are revers
fe20: 65 64 20 69 6e 20 74 68 65 20 67 6c 6f 62 28 29  ed in the glob()
fe30: 20 66 75 6e 63 74 69 6f 6e 0a 20 20 72 65 6c 61   function.  rela
fe40: 74 69 76 65 20 74 6f 20 74 68 65 20 69 6e 66 69  tive to the infi
fe50: 78 20 5b 47 4c 4f 42 5d 20 6f 70 65 72 61 74 6f  x [GLOB] operato
fe60: 72 2e 0a 20 20 54 68 65 20 5b 73 71 6c 69 74 65  r..  The [sqlite
fe70: 33 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f  3_create_functio
fe80: 6e 28 29 5d 0a 20 20 69 6e 74 65 72 66 61 63 65  n()].  interface
fe90: 20 63 61 6e 0a 20 20 62 65 20 75 73 65 64 20 74   can.  be used t
fea0: 6f 20 6f 76 65 72 72 69 64 65 20 74 68 69 73 20  o override this 
feb0: 66 75 6e 63 74 69 6f 6e 20 61 6e 64 20 74 68 65  function and the
fec0: 72 65 62 79 20 63 68 61 6e 67 65 20 74 68 65 20  reby change the 
fed0: 6f 70 65 72 61 74 69 6f 6e 0a 20 20 6f 66 20 74  operation.  of t
fee0: 68 65 20 5b 47 4c 4f 42 5d 20 6f 70 65 72 61 74  he [GLOB] operat
fef0: 6f 72 2e 3c 2f 74 64 3e 0a 7d 0a 0a 66 75 6e 63  or.</td>.}..func
ff00: 64 65 66 20 7b 69 66 6e 75 6c 6c 28 58 2c 59 29  def {ifnull(X,Y)
ff10: 7d 20 7b 7d 20 7b 0a 20 20 52 65 74 75 72 6e 20  } {} {.  Return 
ff20: 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20 66 69  a copy of the fi
ff30: 72 73 74 20 6e 6f 6e 2d 4e 55 4c 4c 20 61 72 67  rst non-NULL arg
ff40: 75 6d 65 6e 74 2e 20 20 49 66 0a 20 20 62 6f 74  ument.  If.  bot
ff50: 68 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20  h arguments are 
ff60: 4e 55 4c 4c 20 74 68 65 6e 20 4e 55 4c 4c 20 69  NULL then NULL i
ff70: 73 20 72 65 74 75 72 6e 65 64 2e 20 54 68 65 20  s returned. The 
ff80: 69 66 6e 75 6c 6c 28 29 20 66 75 6e 63 74 69 6f  ifnull() functio
ff90: 6e 73 20 61 6e 64 0a 20 20 5b 63 6f 61 6c 65 73  ns and.  [coales
ffa0: 63 65 28 29 5d 20 77 69 74 68 20 74 77 6f 20 61  ce()] with two a
ffb0: 72 67 75 6d 65 6e 74 73 20 61 72 65 20 69 6e 74  rguments are int
ffc0: 65 72 63 68 61 6e 67 65 61 62 6c 65 2e 3c 2f 74  erchangeable.</t
ffd0: 64 3e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 68  d>.}..funcdef {h
ffe0: 65 78 28 58 29 7d 20 7b 7d 20 7b 0a 20 20 54 68  ex(X)} {} {.  Th
fff0: 65 20 61 72 67 75 6d 65 6e 74 20 69 73 20 69 6e  e argument is in
10000 74 65 72 70 72 65 74 65 64 20 61 73 20 61 20 42  terpreted as a B
10010 4c 4f 42 2e 20 20 54 68 65 20 72 65 73 75 6c 74  LOB.  The result
10020 0a 20 20 69 73 20 61 20 68 65 78 61 64 65 63 69  .  is a hexadeci
10030 6d 61 6c 20 72 65 6e 64 65 72 69 6e 67 20 6f 66  mal rendering of
10040 20 74 68 65 20 63 6f 6e 74 65 6e 74 20 6f 66 20   the content of 
10050 74 68 61 74 20 62 6c 6f 62 2e 20 20 0a 7d 0a 0a  that blob.  .}..
10060 66 75 6e 63 64 65 66 20 7b 6c 61 73 74 5f 69 6e  funcdef {last_in
10070 73 65 72 74 5f 72 6f 77 69 64 28 29 7d 20 7b 7d  sert_rowid()} {}
10080 20 7b 0a 20 20 52 65 74 75 72 6e 20 74 68 65 20   {.  Return the 
10090 5b 52 4f 57 49 44 5d 0a 20 20 6f 66 20 74 68 65  [ROWID].  of the
100a0 20 6c 61 73 74 20 72 6f 77 20 69 6e 73 65 72 74   last row insert
100b0 20 66 72 6f 6d 20 74 68 69 73 0a 20 20 63 6f 6e   from this.  con
100c0 6e 65 63 74 69 6f 6e 20 74 6f 20 74 68 65 20 64  nection to the d
100d0 61 74 61 62 61 73 65 2e 20 0a 20 20 54 68 69 73  atabase. .  This
100e0 20 69 73 20 74 68 65 20 73 61 6d 65 20 76 61 6c   is the same val
100f0 75 65 20 74 68 61 74 20 77 6f 75 6c 64 20 62 65  ue that would be
10100 20 72 65 74 75 72 6e 65 64 0a 20 20 66 72 6f 6d   returned.  from
10110 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 6c 61   the [sqlite3_la
10120 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 28  st_insert_rowid(
10130 29 5d 20 41 50 49 20 66 75 6e 63 74 69 6f 6e 2e  )] API function.
10140 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 6c 65 6e  .}..funcdef {len
10150 67 74 68 28 58 29 7d 20 7b 7d 20 7b 0a 20 20 52  gth(X)} {} {.  R
10160 65 74 75 72 6e 20 74 68 65 20 73 74 72 69 6e 67  eturn the string
10170 20 6c 65 6e 67 74 68 20 6f 66 20 3c 69 3e 58 3c   length of <i>X<
10180 2f 69 3e 20 69 6e 20 63 68 61 72 61 63 74 65 72  /i> in character
10190 73 20 69 66 20 3c 69 3e 58 3c 2f 69 3e 20 69 73  s if <i>X</i> is
101a0 20 61 20 73 74 72 69 6e 67 2c 0a 20 20 6f 72 20   a string,.  or 
101b0 69 6e 20 62 79 74 65 73 20 69 66 20 3c 69 3e 58  in bytes if <i>X
101c0 3c 2f 69 3e 20 69 73 20 61 20 62 6c 6f 62 2e 0a  </i> is a blob..
101d0 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 6c 69 6b 65  }..funcdef {like
101e0 28 58 2c 59 29 20 6c 69 6b 65 28 58 2c 59 2c 5a  (X,Y) like(X,Y,Z
101f0 29 7d 20 7b 7d 20 7b 0a 20 20 54 68 69 73 20 66  )} {} {.  This f
10200 75 6e 63 74 69 6f 6e 20 69 73 20 75 73 65 64 20  unction is used 
10210 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 74 68 65  to implement the
10220 20 22 3c 62 3e 59 20 4c 49 4b 45 20 58 20 26 23   "<b>Y LIKE X &#
10230 39 31 3b 45 53 43 41 50 45 20 5a 26 23 39 33 3b  91;ESCAPE Z&#93;
10240 3c 2f 62 3e 22 0a 20 20 73 79 6e 74 61 78 20 6f  </b>".  syntax o
10250 66 20 53 51 4c 2e 20 49 66 20 74 68 65 20 6f 70  f SQL. If the op
10260 74 69 6f 6e 61 6c 20 45 53 43 41 50 45 20 63 6c  tional ESCAPE cl
10270 61 75 73 65 20 69 73 20 70 72 65 73 65 6e 74 2c  ause is present,
10280 20 74 68 65 6e 20 74 68 65 0a 20 20 75 73 65 72   then the.  user
10290 2d 66 75 6e 63 74 69 6f 6e 20 69 73 20 69 6e 76  -function is inv
102a0 6f 6b 65 64 20 77 69 74 68 20 74 68 72 65 65 20  oked with three 
102b0 61 72 67 75 6d 65 6e 74 73 2e 20 4f 74 68 65 72  arguments. Other
102c0 77 69 73 65 2c 20 69 74 20 69 73 0a 20 20 69 6e  wise, it is.  in
102d0 76 6f 6b 65 64 20 77 69 74 68 20 74 77 6f 20 61  voked with two a
102e0 72 67 75 6d 65 6e 74 73 20 6f 6e 6c 79 2e 20 4e  rguments only. N
102f0 6f 74 65 20 74 68 61 74 20 74 68 65 20 58 20 61  ote that the X a
10300 6e 64 20 59 20 70 61 72 61 6d 65 74 65 72 73 20  nd Y parameters 
10310 61 72 65 0a 20 20 72 65 76 65 72 73 65 64 20 69  are.  reversed i
10320 6e 20 74 68 65 20 6c 69 6b 65 28 29 20 66 75 6e  n the like() fun
10330 63 74 69 6f 6e 20 72 65 6c 61 74 69 76 65 20 74  ction relative t
10340 6f 20 74 68 65 20 69 6e 66 69 78 20 5b 4c 49 4b  o the infix [LIK
10350 45 5d 20 6f 70 65 72 61 74 6f 72 2e 0a 20 20 54  E] operator..  T
10360 68 65 20 5b 73 71 6c 69 74 65 33 5f 63 72 65 61  he [sqlite3_crea
10370 74 65 5f 66 75 6e 63 74 69 6f 6e 28 29 5d 20 69  te_function()] i
10380 6e 74 65 72 66 61 63 65 20 63 61 6e 20 62 65 20  nterface can be 
10390 75 73 65 64 20 74 6f 20 6f 76 65 72 72 69 64 65  used to override
103a0 20 74 68 69 73 0a 20 20 66 75 6e 63 74 69 6f 6e   this.  function
103b0 20 61 6e 64 20 74 68 65 72 65 62 79 20 63 68 61   and thereby cha
103c0 6e 67 65 20 74 68 65 20 6f 70 65 72 61 74 69 6f  nge the operatio
103d0 6e 20 6f 66 20 74 68 65 0a 20 20 5b 4c 49 4b 45  n of the.  [LIKE
103e0 5d 20 6f 70 65 72 61 74 6f 72 2e 20 57 68 65 6e  ] operator. When
103f0 20 64 6f 69 6e 67 20 74 68 69 73 2c 20 69 74 20   doing this, it 
10400 6d 61 79 20 62 65 20 69 6d 70 6f 72 74 61 6e 74  may be important
10410 0a 20 20 74 6f 20 6f 76 65 72 72 69 64 65 20 62  .  to override b
10420 6f 74 68 20 74 68 65 20 74 77 6f 20 61 6e 64 20  oth the two and 
10430 74 68 72 65 65 20 61 72 67 75 6d 65 6e 74 20 76  three argument v
10440 65 72 73 69 6f 6e 73 20 6f 66 20 74 68 65 20 6c  ersions of the l
10450 69 6b 65 28 29 20 0a 20 20 66 75 6e 63 74 69 6f  ike() .  functio
10460 6e 2e 20 4f 74 68 65 72 77 69 73 65 2c 20 64 69  n. Otherwise, di
10470 66 66 65 72 65 6e 74 20 63 6f 64 65 20 6d 61 79  fferent code may
10480 20 62 65 20 63 61 6c 6c 65 64 20 74 6f 20 69 6d   be called to im
10490 70 6c 65 6d 65 6e 74 20 74 68 65 0a 20 20 5b 4c  plement the.  [L
104a0 49 4b 45 5d 20 6f 70 65 72 61 74 6f 72 20 64 65  IKE] operator de
104b0 70 65 6e 64 69 6e 67 20 6f 6e 20 77 68 65 74 68  pending on wheth
104c0 65 72 20 6f 72 20 6e 6f 74 20 61 6e 20 45 53 43  er or not an ESC
104d0 41 50 45 20 63 6c 61 75 73 65 20 77 61 73 20 0a  APE clause was .
104e0 20 20 73 70 65 63 69 66 69 65 64 2e 0a 7d 0a 0a    specified..}..
104f0 66 75 6e 63 64 65 66 20 7b 6c 6f 61 64 5f 65 78  funcdef {load_ex
10500 74 65 6e 73 69 6f 6e 28 58 29 20 6c 6f 61 64 5f  tension(X) load_
10510 65 78 74 65 6e 73 69 6f 6e 28 58 2c 59 29 7d 20  extension(X,Y)} 
10520 7b 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e 7d  {load_extension}
10530 20 7b 0a 20 20 4c 6f 61 64 20 53 51 4c 69 74 65   {.  Load SQLite
10540 20 65 78 74 65 6e 73 69 6f 6e 73 20 6f 75 74 20   extensions out 
10550 6f 66 20 74 68 65 20 73 68 61 72 65 64 20 6c 69  of the shared li
10560 62 72 61 72 79 0a 20 20 66 69 6c 65 20 6e 61 6d  brary.  file nam
10570 65 64 20 3c 69 3e 58 3c 2f 69 3e 20 75 73 69 6e  ed <i>X</i> usin
10580 67 20 74 68 65 20 65 6e 74 72 79 20 70 6f 69 6e  g the entry poin
10590 74 20 3c 69 3e 59 3c 2f 69 3e 2e 20 20 54 68 65  t <i>Y</i>.  The
105a0 20 72 65 73 75 6c 74 0a 20 20 69 73 20 61 20 4e   result.  is a N
105b0 55 4c 4c 2e 20 20 49 66 20 3c 69 3e 59 3c 2f 69  ULL.  If <i>Y</i
105c0 3e 20 69 73 20 6f 6d 69 74 74 65 64 20 74 68 65  > is omitted the
105d0 6e 20 74 68 65 20 64 65 66 61 75 6c 74 20 65 6e  n the default en
105e0 74 72 79 20 70 6f 69 6e 74 0a 20 20 6f 66 20 3c  try point.  of <
105f0 62 3e 73 71 6c 69 74 65 33 5f 65 78 74 65 6e 73  b>sqlite3_extens
10600 69 6f 6e 5f 69 6e 69 74 3c 2f 62 3e 20 69 73 20  ion_init</b> is 
10610 75 73 65 64 2e 20 20 54 68 69 73 20 66 75 6e 63  used.  This func
10620 74 69 6f 6e 20 72 61 69 73 65 73 0a 20 20 61 6e  tion raises.  an
10630 20 65 78 63 65 70 74 69 6f 6e 20 69 66 20 74 68   exception if th
10640 65 20 65 78 74 65 6e 73 69 6f 6e 20 66 61 69 6c  e extension fail
10650 73 20 74 6f 20 6c 6f 61 64 20 6f 72 20 69 6e 69  s to load or ini
10660 74 69 61 6c 69 7a 65 20 63 6f 72 72 65 63 74 6c  tialize correctl
10670 79 2e 0a 0a 20 20 3c 70 3e 54 68 69 73 20 66 75  y...  <p>This fu
10680 6e 63 74 69 6f 6e 20 77 69 6c 6c 20 66 61 69 6c  nction will fail
10690 20 69 66 20 74 68 65 20 65 78 74 65 6e 73 69 6f   if the extensio
106a0 6e 20 61 74 74 65 6d 70 74 73 20 74 6f 20 6d 6f  n attempts to mo
106b0 64 69 66 79 0a 20 20 6f 72 20 64 65 6c 65 74 65  dify.  or delete
106c0 20 61 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 20   a SQL function 
106d0 6f 72 20 63 6f 6c 6c 61 74 69 6e 67 20 73 65 71  or collating seq
106e0 75 65 6e 63 65 2e 20 20 54 68 65 0a 20 20 65 78  uence.  The.  ex
106f0 74 65 6e 73 69 6f 6e 20 63 61 6e 20 61 64 64 20  tension can add 
10700 6e 65 77 20 66 75 6e 63 74 69 6f 6e 73 20 6f 72  new functions or
10710 20 63 6f 6c 6c 61 74 69 6e 67 20 73 65 71 75 65   collating seque
10720 6e 63 65 73 2c 20 62 75 74 20 63 61 6e 6e 6f 74  nces, but cannot
10730 0a 20 20 6d 6f 64 69 66 79 20 6f 72 20 64 65 6c  .  modify or del
10740 65 74 65 20 65 78 69 73 74 69 6e 67 20 66 75 6e  ete existing fun
10750 63 74 69 6f 6e 73 20 6f 72 20 63 6f 6c 6c 61 74  ctions or collat
10760 69 6e 67 20 73 65 71 75 65 6e 63 65 73 20 62 65  ing sequences be
10770 63 61 75 73 65 0a 20 20 74 68 6f 73 65 20 66 75  cause.  those fu
10780 6e 63 74 69 6f 6e 73 20 61 6e 64 2f 6f 72 20 63  nctions and/or c
10790 6f 6c 6c 61 74 69 6e 67 20 73 65 71 75 65 6e 63  ollating sequenc
107a0 65 73 20 6d 69 67 68 74 20 62 65 20 75 73 65 64  es might be used
107b0 20 65 6c 73 65 77 68 65 72 65 0a 20 20 69 6e 20   elsewhere.  in 
107c0 74 68 65 20 63 75 72 72 65 6e 74 6c 79 20 72 75  the currently ru
107d0 6e 6e 69 6e 67 20 53 51 4c 20 73 74 61 74 65 6d  nning SQL statem
107e0 65 6e 74 2e 20 20 54 6f 20 6c 6f 61 64 20 61 6e  ent.  To load an
107f0 20 65 78 74 65 6e 73 69 6f 6e 20 74 68 61 74 0a   extension that.
10800 20 20 63 68 61 6e 67 65 73 20 6f 72 20 64 65 6c    changes or del
10810 65 74 65 73 20 66 75 6e 63 74 69 6f 6e 73 20 6f  etes functions o
10820 72 20 63 6f 6c 6c 61 74 69 6e 67 20 73 65 71 75  r collating sequ
10830 65 6e 63 65 73 2c 20 75 73 65 20 74 68 65 0a 20  ences, use the. 
10840 20 5b 73 71 6c 69 74 65 33 5f 6c 6f 61 64 5f 65   [sqlite3_load_e
10850 78 74 65 6e 73 69 6f 6e 28 29 5d 20 43 2d 6c 61  xtension()] C-la
10860 6e 67 75 61 67 65 20 41 50 49 2e 3c 2f 70 3e 0a  nguage API.</p>.
10870 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 6c 6f 77 65  }..funcdef {lowe
10880 72 28 58 29 7d 20 7b 7d 20 7b 0a 20 20 52 65 74  r(X)} {} {.  Ret
10890 75 72 6e 20 61 20 63 6f 70 79 20 6f 66 20 73 74  urn a copy of st
108a0 72 69 6e 67 20 3c 69 3e 58 3c 2f 69 3e 20 77 69  ring <i>X</i> wi
108b0 74 68 20 61 6c 6c 20 41 53 43 49 49 20 63 68 61  th all ASCII cha
108c0 72 61 63 74 65 72 73 0a 20 20 63 6f 6e 76 65 72  racters.  conver
108d0 74 65 64 20 74 6f 20 6c 6f 77 65 72 20 63 61 73  ted to lower cas
108e0 65 2e 20 20 54 68 65 20 64 65 66 61 75 6c 74 20  e.  The default 
108f0 62 75 69 6c 74 2d 69 6e 20 6c 6f 77 65 72 28 29  built-in lower()
10900 20 66 75 6e 63 74 69 6f 6e 20 77 6f 72 6b 73 0a   function works.
10910 20 20 66 6f 72 20 41 53 43 49 49 20 63 68 61 72    for ASCII char
10920 61 63 74 65 72 73 20 6f 6e 6c 79 2e 20 20 54 6f  acters only.  To
10930 20 64 6f 20 63 61 73 65 20 63 6f 6e 76 65 72 73   do case convers
10940 69 6f 6e 73 20 6f 6e 20 6e 6f 6e 2d 41 53 43 49  ions on non-ASCI
10950 49 0a 20 20 63 68 61 72 61 63 74 65 72 73 2c 20  I.  characters, 
10960 6c 6f 61 64 20 74 68 65 20 49 43 55 20 65 78 74  load the ICU ext
10970 65 6e 73 69 6f 6e 2e 0a 7d 0a 0a 66 75 6e 63 64  ension..}..funcd
10980 65 66 20 7b 6c 74 72 69 6d 28 58 29 20 6c 74 72  ef {ltrim(X) ltr
10990 69 6d 28 58 2c 59 29 7d 20 7b 7d 20 7b 0a 20 20  im(X,Y)} {} {.  
109a0 52 65 74 75 72 6e 20 61 20 73 74 72 69 6e 67 20  Return a string 
109b0 66 6f 72 6d 65 64 20 62 79 20 72 65 6d 6f 76 69  formed by removi
109c0 6e 67 20 61 6e 79 20 61 6e 64 20 61 6c 6c 0a 20  ng any and all. 
109d0 20 63 68 61 72 61 63 74 65 72 73 20 74 68 61 74   characters that
109e0 20 61 70 70 65 61 72 20 69 6e 20 3c 69 3e 59 3c   appear in <i>Y<
109f0 2f 69 3e 20 66 72 6f 6d 20 74 68 65 20 6c 65 66  /i> from the lef
10a00 74 20 73 69 64 65 20 6f 66 20 3c 69 3e 58 3c 2f  t side of <i>X</
10a10 69 3e 2e 0a 20 20 49 66 20 74 68 65 20 3c 69 3e  i>..  If the <i>
10a20 59 3c 2f 69 3e 20 61 72 67 75 6d 65 6e 74 20 69  Y</i> argument i
10a30 73 20 6f 6d 69 74 74 65 64 2c 20 73 70 61 63 65  s omitted, space
10a40 73 20 61 72 65 20 72 65 6d 6f 76 65 64 2e 0a 7d  s are removed..}
10a50 0a 0a 66 75 6e 63 64 65 66 20 7b 6d 61 78 28 58  ..funcdef {max(X
10a60 2c 59 2c 2e 2e 2e 29 7d 20 7b 6d 61 78 43 6f 72  ,Y,...)} {maxCor
10a70 65 46 75 6e 63 20 6d 61 78 7d 20 7b 0a 20 20 52  eFunc max} {.  R
10a80 65 74 75 72 6e 20 74 68 65 20 61 72 67 75 6d 65  eturn the argume
10a90 6e 74 20 77 69 74 68 20 74 68 65 20 6d 61 78 69  nt with the maxi
10aa0 6d 75 6d 20 76 61 6c 75 65 2e 20 20 4f 72 20 72  mum value.  Or r
10ab0 65 74 75 72 6e 20 4e 55 4c 4c 20 69 66 20 61 6e  eturn NULL if an
10ac0 79 20 61 72 67 75 6d 65 6e 74 0a 20 20 69 73 20  y argument.  is 
10ad0 4e 55 4c 4c 2e 0a 20 20 4e 6f 74 65 20 74 68 61  NULL..  Note tha
10ae0 74 20 3c 62 3e 6d 61 78 28 29 3c 2f 62 3e 20 69  t <b>max()</b> i
10af0 73 20 61 20 73 69 6d 70 6c 65 20 66 75 6e 63 74  s a simple funct
10b00 69 6f 6e 20 77 68 65 6e 0a 20 20 69 74 20 68 61  ion when.  it ha
10b10 73 20 32 20 6f 72 20 6d 6f 72 65 20 61 72 67 75  s 2 or more argu
10b20 6d 65 6e 74 73 20 62 75 74 20 63 6f 6e 76 65 72  ments but conver
10b30 74 73 20 74 6f 20 61 6e 20 61 67 67 72 65 67 61  ts to an aggrega
10b40 74 65 20 66 75 6e 63 74 69 6f 6e 20 69 66 20 67  te function if g
10b50 69 76 65 6e 0a 20 20 6f 6e 6c 79 20 61 20 73 69  iven.  only a si
10b60 6e 67 6c 65 20 61 72 67 75 6d 65 6e 74 2e 0a 7d  ngle argument..}
10b70 0a 0a 66 75 6e 63 64 65 66 20 7b 6d 69 6e 28 58  ..funcdef {min(X
10b80 2c 59 2c 2e 2e 2e 29 7d 20 7b 6d 69 6e 43 6f 72  ,Y,...)} {minCor
10b90 65 46 75 6e 63 20 6d 69 6e 7d 20 7b 0a 20 20 52  eFunc min} {.  R
10ba0 65 74 75 72 6e 20 74 68 65 20 61 72 67 75 6d 65  eturn the argume
10bb0 6e 74 20 77 69 74 68 20 74 68 65 20 6d 69 6e 69  nt with the mini
10bc0 6d 75 6d 20 76 61 6c 75 65 2e 20 0a 20 20 4e 6f  mum value. .  No
10bd0 74 65 20 74 68 61 74 20 3c 62 3e 6d 69 6e 28 29  te that <b>min()
10be0 3c 2f 62 3e 20 69 73 20 61 20 73 69 6d 70 6c 65  </b> is a simple
10bf0 20 66 75 6e 63 74 69 6f 6e 20 77 68 65 6e 0a 20   function when. 
10c00 20 69 74 20 68 61 73 20 32 20 6f 72 20 6d 6f 72   it has 2 or mor
10c10 65 20 61 72 67 75 6d 65 6e 74 73 20 62 75 74 20  e arguments but 
10c20 63 6f 6e 76 65 72 74 73 20 74 6f 20 61 6e 20 61  converts to an a
10c30 67 67 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f  ggregate functio
10c40 6e 20 69 66 20 67 69 76 65 6e 0a 20 20 6f 6e 6c  n if given.  onl
10c50 79 20 61 20 73 69 6e 67 6c 65 20 61 72 67 75 6d  y a single argum
10c60 65 6e 74 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20  ent..}..funcdef 
10c70 7b 6e 75 6c 6c 69 66 28 58 2c 59 29 7d 20 7b 7d  {nullif(X,Y)} {}
10c80 20 7b 0a 20 20 52 65 74 75 72 6e 20 74 68 65 20   {.  Return the 
10c90 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74 20 69  first argument i
10ca0 66 20 74 68 65 20 61 72 67 75 6d 65 6e 74 73 20  f the arguments 
10cb0 61 72 65 20 64 69 66 66 65 72 65 6e 74 2c 20 0a  are different, .
10cc0 20 20 6f 74 68 65 72 77 69 73 65 20 72 65 74 75    otherwise retu
10cd0 72 6e 20 4e 55 4c 4c 2e 0a 7d 0a 0a 66 75 6e 63  rn NULL..}..func
10ce0 64 65 66 20 7b 71 75 6f 74 65 28 58 29 7d 20 7b  def {quote(X)} {
10cf0 7d 20 7b 0a 20 20 54 68 69 73 20 72 6f 75 74 69  } {.  This routi
10d00 6e 65 20 72 65 74 75 72 6e 73 20 61 20 73 74 72  ne returns a str
10d10 69 6e 67 20 77 68 69 63 68 20 69 73 20 74 68 65  ing which is the
10d20 20 76 61 6c 75 65 20 6f 66 0a 20 20 69 74 73 20   value of.  its 
10d30 61 72 67 75 6d 65 6e 74 20 73 75 69 74 61 62 6c  argument suitabl
10d40 65 20 66 6f 72 20 69 6e 63 6c 75 73 69 6f 6e 20  e for inclusion 
10d50 69 6e 74 6f 20 61 6e 6f 74 68 65 72 20 53 51 4c  into another SQL
10d60 20 73 74 61 74 65 6d 65 6e 74 2e 0a 20 20 53 74   statement..  St
10d70 72 69 6e 67 73 20 61 72 65 20 73 75 72 72 6f 75  rings are surrou
10d80 6e 64 65 64 20 62 79 20 73 69 6e 67 6c 65 2d 71  nded by single-q
10d90 75 6f 74 65 73 20 77 69 74 68 20 65 73 63 61 70  uotes with escap
10da0 65 73 20 6f 6e 20 69 6e 74 65 72 69 6f 72 20 71  es on interior q
10db0 75 6f 74 65 73 0a 20 20 61 73 20 6e 65 65 64 65  uotes.  as neede
10dc0 64 2e 20 20 42 4c 4f 42 73 20 61 72 65 20 65 6e  d.  BLOBs are en
10dd0 63 6f 64 65 64 20 61 73 20 68 65 78 61 64 65 63  coded as hexadec
10de0 69 6d 61 6c 20 6c 69 74 65 72 61 6c 73 2e 0a 20  imal literals.. 
10df0 20 53 51 4c 69 74 65 20 75 73 65 73 20 74 68 69   SQLite uses thi
10e00 73 20 66 75 6e 63 74 69 6f 6e 20 69 6e 74 65 72  s function inter
10e10 6e 61 6c 6c 79 20 69 6e 20 69 74 73 20 69 6d 70  nally in its imp
10e20 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 5b  lementation of [
10e30 56 41 43 55 55 4d 5d 0a 20 20 73 6f 20 69 66 20  VACUUM].  so if 
10e40 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73  this function is
10e50 20 6f 76 65 72 6c 6f 61 64 69 6e 67 20 74 6f 20   overloading to 
10e60 70 72 6f 76 69 64 65 20 69 6e 63 6f 6d 70 61 74  provide incompat
10e70 69 62 6c 65 20 62 65 68 61 76 69 6f 72 2c 20 74  ible behavior, t
10e80 68 65 0a 20 20 5b 56 41 43 55 55 4d 5d 20 63 6f  he.  [VACUUM] co
10e90 6d 6d 61 6e 64 20 77 69 6c 6c 20 6c 69 6b 65 6c  mmand will likel
10ea0 79 20 63 65 61 73 65 20 74 6f 20 77 6f 72 6b 2e  y cease to work.
10eb0 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 72 61 6e  .}..funcdef {ran
10ec0 64 6f 6d 28 29 7d 20 7b 7d 20 7b 0a 20 20 52 65  dom()} {} {.  Re
10ed0 74 75 72 6e 20 61 20 70 73 65 75 64 6f 2d 72 61  turn a pseudo-ra
10ee0 6e 64 6f 6d 20 69 6e 74 65 67 65 72 0a 20 20 62  ndom integer.  b
10ef0 65 74 77 65 65 6e 20 2d 39 32 32 33 33 37 32 30  etween -92233720
10f00 33 36 38 35 34 37 37 35 38 30 38 20 61 6e 64 20  36854775808 and 
10f10 2b 39 32 32 33 33 37 32 30 33 36 38 35 34 37 37  +922337203685477
10f20 35 38 30 37 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66  5807..}..funcdef
10f30 20 7b 72 61 6e 64 6f 6d 62 6c 6f 62 28 4e 29 7d   {randomblob(N)}
10f40 20 7b 7d 20 7b 0a 20 20 52 65 74 75 72 6e 20 61   {} {.  Return a
10f50 6e 20 3c 69 3e 4e 3c 2f 69 3e 2d 62 79 74 65 20  n <i>N</i>-byte 
10f60 62 6c 6f 62 20 63 6f 6e 74 61 69 6e 69 6e 67 20  blob containing 
10f70 70 73 65 75 64 6f 2d 72 61 6e 64 6f 6d 20 62 79  pseudo-random by
10f80 74 65 73 2e 0a 20 20 3c 69 3e 4e 3c 2f 69 3e 20  tes..  <i>N</i> 
10f90 73 68 6f 75 6c 64 20 62 65 20 61 20 70 6f 73 74  should be a post
10fa0 69 76 65 20 69 6e 74 65 67 65 72 2e 0a 0a 20 20  ive integer...  
10fb0 3c 70 3e 48 69 6e 74 3a 20 20 61 70 70 6c 69 63  <p>Hint:  applic
10fc0 61 74 69 6f 6e 73 20 63 61 6e 20 67 65 6e 65 72  ations can gener
10fd0 61 74 65 20 67 6c 6f 62 61 6c 6c 79 20 75 6e 69  ate globally uni
10fe0 71 75 65 20 69 64 65 6e 74 69 66 69 65 72 73 0a  que identifiers.
10ff0 20 20 75 73 69 6e 67 20 74 68 69 73 20 66 75 6e    using this fun
11000 63 74 69 6f 6e 20 74 6f 67 65 74 68 65 72 20 77  ction together w
11010 69 74 68 20 5b 68 65 78 28 29 5d 20 61 6e 64 2f  ith [hex()] and/
11020 6f 72 0a 20 20 5b 6c 6f 77 65 72 28 29 5d 20 6c  or.  [lower()] l
11030 69 6b 65 20 74 68 69 73 3a 3c 2f 70 3e 0a 0a 20  ike this:</p>.. 
11040 20 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 20 20   <blockquote>.  
11050 68 65 78 28 72 61 6e 64 6f 6d 62 6c 6f 62 28 31  hex(randomblob(1
11060 36 29 29 3c 62 72 3e 3c 2f 62 72 3e 0a 20 20 6c  6))<br></br>.  l
11070 6f 77 65 72 28 68 65 78 28 72 61 6e 64 6f 6d 62  ower(hex(randomb
11080 6c 6f 62 28 31 36 29 29 29 0a 20 20 3c 2f 62 6c  lob(16))).  </bl
11090 6f 63 6b 71 75 6f 74 65 3e 0a 7d 0a 0a 66 75 6e  ockquote>.}..fun
110a0 63 64 65 66 20 7b 72 65 70 6c 61 63 65 28 58 2c  cdef {replace(X,
110b0 59 2c 5a 29 7d 20 7b 7d 20 7b 0a 20 20 52 65 74  Y,Z)} {} {.  Ret
110c0 75 72 6e 20 61 20 73 74 72 69 6e 67 20 66 6f 72  urn a string for
110d0 6d 65 64 20 62 79 20 73 75 62 73 74 69 74 75 74  med by substitut
110e0 69 6e 67 20 73 74 72 69 6e 67 20 3c 69 3e 5a 3c  ing string <i>Z<
110f0 2f 69 3e 20 66 6f 72 0a 20 20 65 76 65 72 79 20  /i> for.  every 
11100 6f 63 63 75 72 72 61 6e 63 65 20 6f 66 20 73 74  occurrance of st
11110 72 69 6e 67 20 3c 69 3e 59 3c 2f 69 3e 20 69 6e  ring <i>Y</i> in
11120 20 73 74 72 69 6e 67 20 3c 69 3e 58 3c 2f 69 3e   string <i>X</i>
11130 2e 20 20 54 68 65 20 5b 42 49 4e 41 52 59 5d 0a  .  The [BINARY].
11140 20 20 63 6f 6c 6c 61 74 69 6e 67 20 73 65 71 75    collating sequ
11150 65 6e 63 65 20 69 73 20 75 73 65 64 20 66 6f 72  ence is used for
11160 20 63 6f 6d 70 61 72 69 73 6f 6e 73 2e 20 20 49   comparisons.  I
11170 66 20 3c 69 3e 59 3c 2f 69 3e 20 69 73 20 61 6e  f <i>Y</i> is an
11180 20 65 6d 70 74 79 0a 20 20 73 74 72 69 6e 67 20   empty.  string 
11190 74 68 65 6e 20 72 65 74 75 72 6e 20 3c 69 3e 58  then return <i>X
111a0 3c 2f 69 3e 20 75 6e 63 68 61 6e 67 65 64 2e 20  </i> unchanged. 
111b0 20 49 66 20 3c 69 3e 5a 3c 2f 69 3e 20 69 73 20   If <i>Z</i> is 
111c0 6e 6f 74 20 69 6e 69 74 69 61 6c 6c 79 0a 20 20  not initially.  
111d0 61 20 73 74 72 69 6e 67 2c 20 69 74 20 69 73 20  a string, it is 
111e0 63 61 73 74 20 74 6f 20 61 20 55 54 46 2d 38 20  cast to a UTF-8 
111f0 73 74 72 69 6e 67 20 70 72 69 6f 72 20 74 6f 20  string prior to 
11200 70 72 6f 63 65 73 73 69 6e 67 2e 0a 7d 0a 0a 66  processing..}..f
11210 75 6e 63 64 65 66 20 7b 72 6f 75 6e 64 28 58 29  uncdef {round(X)
11220 20 72 6f 75 6e 64 28 58 2c 59 29 7d 20 7b 7d 20   round(X,Y)} {} 
11230 7b 0a 20 20 52 6f 75 6e 64 20 6f 66 66 20 74 68  {.  Round off th
11240 65 20 6e 75 6d 62 65 72 20 3c 69 3e 58 3c 2f 69  e number <i>X</i
11250 3e 20 74 6f 20 3c 69 3e 59 3c 2f 69 3e 20 64 69  > to <i>Y</i> di
11260 67 69 74 73 20 74 6f 20 74 68 65 0a 20 20 72 69  gits to the.  ri
11270 67 68 74 20 6f 66 20 74 68 65 20 64 65 63 69 6d  ght of the decim
11280 61 6c 20 70 6f 69 6e 74 2e 20 20 49 66 20 74 68  al point.  If th
11290 65 20 3c 69 3e 59 3c 2f 69 3e 20 61 72 67 75 6d  e <i>Y</i> argum
112a0 65 6e 74 20 69 73 20 6f 6d 69 74 74 65 64 2c 20  ent is omitted, 
112b0 30 20 69 73 20 0a 20 20 61 73 73 75 6d 65 64 2e  0 is .  assumed.
112c0 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 72 74 72  .}..funcdef {rtr
112d0 69 6d 28 58 29 20 72 74 72 69 6d 28 58 2c 59 29  im(X) rtrim(X,Y)
112e0 7d 20 7b 7d 20 7b 0a 20 20 52 65 74 75 72 6e 20  } {} {.  Return 
112f0 61 20 73 74 72 69 6e 67 20 66 6f 72 6d 65 64 20  a string formed 
11300 62 79 20 72 65 6d 6f 76 69 6e 67 20 61 6e 79 20  by removing any 
11310 61 6e 64 20 61 6c 6c 0a 20 20 63 68 61 72 61 63  and all.  charac
11320 74 65 72 73 20 74 68 61 74 20 61 70 70 65 61 72  ters that appear
11330 20 69 6e 20 3c 69 3e 59 3c 2f 69 3e 20 66 72 6f   in <i>Y</i> fro
11340 6d 20 74 68 65 20 72 69 67 68 74 20 73 69 64 65  m the right side
11350 20 6f 66 20 3c 69 3e 58 3c 2f 69 3e 2e 0a 20 20   of <i>X</i>..  
11360 49 66 20 74 68 65 20 3c 69 3e 59 3c 2f 69 3e 20  If the <i>Y</i> 
11370 61 72 67 75 6d 65 6e 74 20 69 73 20 6f 6d 69 74  argument is omit
11380 74 65 64 2c 20 73 70 61 63 65 73 20 61 72 65 20  ted, spaces are 
11390 72 65 6d 6f 76 65 64 2e 0a 7d 0a 0a 66 75 6e 63  removed..}..func
113a0 64 65 66 20 7b 73 6f 75 6e 64 65 78 28 58 29 7d  def {soundex(X)}
113b0 20 7b 7d 20 7b 0a 20 20 43 6f 6d 70 75 74 65 20   {} {.  Compute 
113c0 74 68 65 20 73 6f 75 6e 64 65 78 20 65 6e 63 6f  the soundex enco
113d0 64 69 6e 67 20 6f 66 20 74 68 65 20 73 74 72 69  ding of the stri
113e0 6e 67 20 3c 69 3e 58 3c 2f 69 3e 2e 0a 20 20 54  ng <i>X</i>..  T
113f0 68 65 20 73 74 72 69 6e 67 20 22 3f 30 30 30 22  he string "?000"
11400 20 69 73 20 72 65 74 75 72 6e 65 64 20 69 66 20   is returned if 
11410 74 68 65 20 61 72 67 75 6d 65 6e 74 20 69 73 20  the argument is 
11420 4e 55 4c 4c 2e 0a 20 20 54 68 69 73 20 66 75 6e  NULL..  This fun
11430 63 74 69 6f 6e 20 69 73 20 6f 6d 69 74 74 65 64  ction is omitted
11440 20 66 72 6f 6d 20 53 51 4c 69 74 65 20 62 79 20   from SQLite by 
11450 64 65 66 61 75 6c 74 2e 0a 20 20 49 74 20 69 73  default..  It is
11460 20 6f 6e 6c 79 20 61 76 61 69 6c 61 62 6c 65 20   only available 
11470 74 68 65 20 2d 44 53 51 4c 49 54 45 5f 53 4f 55  the -DSQLITE_SOU
11480 4e 44 45 58 3d 31 20 63 6f 6d 70 69 6c 65 72 20  NDEX=1 compiler 
11490 6f 70 74 69 6f 6e 0a 20 20 69 73 20 75 73 65 64  option.  is used
114a0 20 77 68 65 6e 20 53 51 4c 69 74 65 20 69 73 20   when SQLite is 
114b0 62 75 69 6c 74 2e 0a 7d 0a 0a 66 75 6e 63 64 65  built..}..funcde
114c0 66 20 7b 73 71 6c 69 74 65 5f 73 6f 75 72 63 65  f {sqlite_source
114d0 5f 69 64 28 29 7d 20 7b 73 71 6c 69 74 65 5f 73  _id()} {sqlite_s
114e0 6f 75 72 63 65 5f 69 64 7d 20 7b 0a 20 20 52 65  ource_id} {.  Re
114f0 74 75 72 6e 20 61 20 73 74 72 69 6e 67 20 74 68  turn a string th
11500 61 74 20 69 64 65 6e 74 69 66 69 65 73 20 74 68  at identifies th
11510 65 20 73 70 65 63 69 66 69 63 20 76 65 72 73 69  e specific versi
11520 6f 6e 20 6f 66 20 74 68 65 20 73 6f 75 72 63 65  on of the source
11530 20 63 6f 64 65 0a 20 20 74 68 61 74 20 77 61 73   code.  that was
11540 20 75 73 65 64 20 74 6f 20 62 75 69 6c 64 20 74   used to build t
11550 68 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72  he SQLite librar
11560 79 2e 20 20 54 68 65 20 72 65 74 75 72 6e 20 73  y.  The return s
11570 74 72 69 6e 67 20 62 65 67 69 6e 73 20 77 69 74  tring begins wit
11580 68 0a 20 20 74 68 65 20 64 61 74 65 20 61 6e 64  h.  the date and
11590 20 74 69 6d 65 20 74 68 61 74 20 74 68 65 20 73   time that the s
115a0 6f 75 72 63 65 20 63 6f 64 65 20 77 61 73 20 63  ource code was c
115b0 68 65 63 6b 65 64 20 69 6e 20 61 6e 64 20 69 73  hecked in and is
115c0 20 66 6f 6c 6c 6f 77 73 20 62 79 0a 20 20 61 6e   follows by.  an
115d0 20 53 48 41 31 20 68 61 73 68 20 74 68 61 74 20   SHA1 hash that 
115e0 75 6e 69 71 75 65 6c 79 20 69 64 65 6e 74 69 66  uniquely identif
115f0 69 65 73 20 74 68 65 20 73 6f 75 72 63 65 20 74  ies the source t
11600 72 65 65 2e 20 20 54 68 69 73 20 66 75 6e 63 74  ree.  This funct
11610 69 6f 6e 20 69 73 0a 20 20 61 6e 20 53 51 4c 20  ion is.  an SQL 
11620 77 72 61 70 70 65 72 20 61 72 6f 75 6e 64 20 74  wrapper around t
11630 68 65 20 5b 73 71 6c 69 74 65 33 5f 73 6f 75 72  he [sqlite3_sour
11640 63 65 69 64 28 29 5d 20 43 20 69 6e 74 65 72 66  ceid()] C interf
11650 61 63 65 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20  ace..}..funcdef 
11660 7b 73 71 6c 69 74 65 5f 76 65 72 73 69 6f 6e 28  {sqlite_version(
11670 29 7d 20 7b 73 71 6c 69 74 65 5f 76 65 72 73 69  )} {sqlite_versi
11680 6f 6e 7d 20 7b 0a 20 20 52 65 74 75 72 6e 20 74  on} {.  Return t
11690 68 65 20 76 65 72 73 69 6f 6e 20 73 74 72 69 6e  he version strin
116a0 67 20 66 6f 72 20 74 68 65 20 53 51 4c 69 74 65  g for the SQLite
116b0 20 6c 69 62 72 61 72 79 0a 20 20 74 68 61 74 20   library.  that 
116c0 69 73 20 72 75 6e 6e 69 6e 67 2e 20 20 45 78 61  is running.  Exa
116d0 6d 70 6c 65 3a 20 20 22 33 2e 35 2e 39 22 2e 20  mple:  "3.5.9". 
116e0 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69   This function i
116f0 73 20 61 6e 20 53 51 4c 0a 20 20 77 72 61 70 70  s an SQL.  wrapp
11700 65 72 20 61 72 6f 75 6e 64 20 74 68 65 20 5b 73  er around the [s
11710 71 6c 69 74 65 33 5f 6c 69 62 76 65 72 73 69 6f  qlite3_libversio
11720 6e 28 29 5d 20 43 2d 69 6e 74 65 72 66 61 63 65  n()] C-interface
11730 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 73 75  ..}..funcdef {su
11740 62 73 74 72 28 58 2c 59 2c 5a 29 20 73 75 62 73  bstr(X,Y,Z) subs
11750 74 72 28 58 2c 59 29 7d 20 7b 7d 20 7b 0a 20 20  tr(X,Y)} {} {.  
11760 52 65 74 75 72 6e 20 61 20 73 75 62 73 74 72 69  Return a substri
11770 6e 67 20 6f 66 20 69 6e 70 75 74 20 73 74 72 69  ng of input stri
11780 6e 67 20 3c 69 3e 58 3c 2f 69 3e 20 74 68 61 74  ng <i>X</i> that
11790 20 62 65 67 69 6e 73 0a 20 20 77 69 74 68 20 74   begins.  with t
117a0 68 65 20 3c 69 3e 59 3c 2f 69 3e 2d 74 68 20 63  he <i>Y</i>-th c
117b0 68 61 72 61 63 74 65 72 20 61 6e 64 20 77 68 69  haracter and whi
117c0 63 68 20 69 73 20 3c 69 3e 5a 3c 2f 69 3e 20 63  ch is <i>Z</i> c
117d0 68 61 72 61 63 74 65 72 73 20 6c 6f 6e 67 2e 0a  haracters long..
117e0 20 20 49 66 20 3c 69 3e 5a 3c 2f 69 3e 20 69 73    If <i>Z</i> is
117f0 20 6f 6d 69 74 74 65 64 20 74 68 65 6e 20 61 6c   omitted then al
11800 6c 20 63 68 61 72 61 63 74 65 72 20 74 68 72 6f  l character thro
11810 75 67 68 20 74 68 65 20 65 6e 64 20 6f 66 20 74  ugh the end of t
11820 68 65 20 73 74 72 69 6e 67 0a 20 20 61 72 65 20  he string.  are 
11830 72 65 74 75 72 6e 65 64 2e 0a 20 20 54 68 65 20  returned..  The 
11840 6c 65 66 74 2d 6d 6f 73 74 20 63 68 61 72 61 63  left-most charac
11850 74 65 72 20 6f 66 20 3c 69 3e 58 3c 2f 69 3e 20  ter of <i>X</i> 
11860 69 73 20 6e 75 6d 62 65 72 20 31 2e 20 20 49 66  is number 1.  If
11870 20 3c 69 3e 59 3c 2f 69 3e 20 69 73 20 6e 65 67   <i>Y</i> is neg
11880 61 74 69 76 65 0a 20 20 74 68 65 20 74 68 65 20  ative.  the the 
11890 66 69 72 73 74 20 63 68 61 72 61 63 74 65 72 20  first character 
118a0 6f 66 20 74 68 65 20 73 75 62 73 74 72 69 6e 67  of the substring
118b0 20 69 73 20 66 6f 75 6e 64 20 62 79 20 63 6f 75   is found by cou
118c0 6e 74 69 6e 67 20 66 72 6f 6d 20 74 68 65 0a 20  nting from the. 
118d0 20 72 69 67 68 74 20 72 61 74 68 65 72 20 74 68   right rather th
118e0 61 6e 20 74 68 65 20 6c 65 66 74 2e 20 20 49 66  an the left.  If
118f0 20 3c 69 3e 58 3c 2f 69 3e 20 69 73 20 73 74 72   <i>X</i> is str
11900 69 6e 67 0a 20 20 74 68 65 6e 20 63 68 61 72 61  ing.  then chara
11910 63 74 65 72 73 20 69 6e 64 69 63 65 73 20 72 65  cters indices re
11920 66 65 72 20 74 6f 20 61 63 74 75 61 6c 20 55 54  fer to actual UT
11930 46 2d 38 20 63 68 61 72 61 63 74 65 72 73 2e 20  F-8 characters. 
11940 20 49 66 0a 20 20 3c 69 3e 58 3c 2f 69 3e 20 69   If.  <i>X</i> i
11950 73 20 61 20 42 4c 4f 42 20 74 68 65 6e 20 74 68  s a BLOB then th
11960 65 20 69 6e 64 69 63 65 73 20 72 65 66 65 72 20  e indices refer 
11970 74 6f 20 62 79 74 65 73 2e 0a 7d 0a 0a 66 75 6e  to bytes..}..fun
11980 63 64 65 66 20 7b 74 6f 74 61 6c 5f 63 68 61 6e  cdef {total_chan
11990 67 65 73 28 29 7d 20 7b 7d 20 7b 0a 20 20 52 65  ges()} {} {.  Re
119a0 74 75 72 6e 20 74 68 65 20 6e 75 6d 62 65 72 20  turn the number 
119b0 6f 66 20 72 6f 77 20 63 68 61 6e 67 65 73 20 63  of row changes c
119c0 61 75 73 65 64 20 62 79 20 49 4e 53 45 52 54 2c  aused by INSERT,
119d0 20 55 50 44 41 54 45 20 6f 72 20 44 45 4c 45 54   UPDATE or DELET
119e0 45 0a 20 20 73 74 61 74 65 6d 65 6e 74 73 20 73  E.  statements s
119f0 69 6e 63 65 20 74 68 65 20 63 75 72 72 65 6e 74  ince the current
11a00 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
11a10 74 69 6f 6e 20 77 61 73 20 6f 70 65 6e 65 64 2e  tion was opened.
11a20 0a 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e  .  This function
11a30 20 69 73 20 61 20 77 72 61 70 70 65 72 20 61 72   is a wrapper ar
11a40 6f 75 6e 64 20 74 68 65 20 5b 73 71 6c 69 74 65  ound the [sqlite
11a50 33 5f 74 6f 74 61 6c 5f 63 68 61 6e 67 65 73 28  3_total_changes(
11a60 29 5d 0a 20 20 43 2f 43 2b 2b 20 69 6e 74 65 72  )].  C/C++ inter
11a70 66 61 63 65 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66  face..}..funcdef
11a80 20 7b 74 72 69 6d 28 58 29 20 74 72 69 6d 28 58   {trim(X) trim(X
11a90 2c 59 29 7d 20 7b 7d 20 7b 0a 20 20 52 65 74 75  ,Y)} {} {.  Retu
11aa0 72 6e 20 61 20 73 74 72 69 6e 67 20 66 6f 72 6d  rn a string form
11ab0 65 64 20 62 79 20 72 65 6d 6f 76 69 6e 67 20 61  ed by removing a
11ac0 6e 79 20 61 6e 64 20 61 6c 6c 0a 20 20 63 68 61  ny and all.  cha
11ad0 72 61 63 74 65 72 73 20 74 68 61 74 20 61 70 70  racters that app
11ae0 65 61 72 20 69 6e 20 3c 69 3e 59 3c 2f 69 3e 20  ear in <i>Y</i> 
11af0 66 72 6f 6d 20 62 6f 74 68 20 65 6e 64 73 20 6f  from both ends o
11b00 66 20 3c 69 3e 58 3c 2f 69 3e 2e 0a 20 20 49 66  f <i>X</i>..  If
11b10 20 74 68 65 20 3c 69 3e 59 3c 2f 69 3e 20 61 72   the <i>Y</i> ar
11b20 67 75 6d 65 6e 74 20 69 73 20 6f 6d 69 74 74 65  gument is omitte
11b30 64 2c 20 73 70 61 63 65 73 20 61 72 65 20 72 65  d, spaces are re
11b40 6d 6f 76 65 64 2e 0a 7d 0a 0a 66 75 6e 63 64 65  moved..}..funcde
11b50 66 20 7b 74 79 70 65 6f 66 28 58 29 7d 20 7b 7d  f {typeof(X)} {}
11b60 20 7b 0a 20 20 52 65 74 75 72 6e 20 74 68 65 20   {.  Return the 
11b70 5b 64 61 74 61 74 79 70 65 5d 20 6f 66 20 74 68  [datatype] of th
11b80 65 20 65 78 70 72 65 73 73 69 6f 6e 20 3c 69 3e  e expression <i>
11b90 58 3c 2f 69 3e 2e 20 20 54 68 65 20 6f 6e 6c 79  X</i>.  The only
11ba0 20 0a 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65   .  return value
11bb0 73 20 61 72 65 20 22 6e 75 6c 6c 22 2c 20 22 69  s are "null", "i
11bc0 6e 74 65 67 65 72 22 2c 20 22 72 65 61 6c 22 2c  nteger", "real",
11bd0 20 22 74 65 78 74 22 2c 20 61 6e 64 20 22 62 6c   "text", and "bl
11be0 6f 62 22 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20  ob"..}..funcdef 
11bf0 7b 75 70 70 65 72 28 58 29 7d 20 7b 7d 20 7b 0a  {upper(X)} {} {.
11c00 20 20 52 65 74 75 72 6e 20 61 20 63 6f 70 79 20    Return a copy 
11c10 6f 66 20 69 6e 70 75 74 20 73 74 72 69 6e 67 20  of input string 
11c20 3c 69 3e 58 3c 2f 69 3e 20 63 6f 6e 76 65 72 74  <i>X</i> convert
11c30 65 64 20 74 6f 20 61 6c 6c 0a 20 20 75 70 70 65  ed to all.  uppe
11c40 72 2d 63 61 73 65 20 6c 65 74 74 65 72 73 2e 20  r-case letters. 
11c50 20 54 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74   The implementat
11c60 69 6f 6e 20 6f 66 20 74 68 69 73 20 66 75 6e 63  ion of this func
11c70 74 69 6f 6e 20 75 73 65 73 20 74 68 65 20 43 20  tion uses the C 
11c80 6c 69 62 72 61 72 79 0a 20 20 72 6f 75 74 69 6e  library.  routin
11c90 65 20 3c 62 3e 74 6f 75 70 70 65 72 28 29 3c 2f  e <b>toupper()</
11ca0 62 3e 20 77 68 69 63 68 20 6d 65 61 6e 73 20 69  b> which means i
11cb0 74 20 6d 61 79 20 6e 6f 74 20 77 6f 72 6b 20 63  t may not work c
11cc0 6f 72 72 65 63 74 6c 79 20 6f 6e 20 0a 20 20 6e  orrectly on .  n
11cd0 6f 6e 2d 41 53 43 49 49 20 55 54 46 2d 38 20 73  on-ASCII UTF-8 s
11ce0 74 72 69 6e 67 73 2e 0a 7d 0a 0a 66 75 6e 63 64  trings..}..funcd
11cf0 65 66 20 7b 7a 65 72 6f 62 6c 6f 62 28 4e 29 7d  ef {zeroblob(N)}
11d00 20 7b 7d 20 7b 0a 20 20 52 65 74 75 72 6e 20 61   {} {.  Return a
11d10 20 42 4c 4f 42 20 63 6f 6e 73 69 73 74 69 6e 67   BLOB consisting
11d20 20 6f 66 20 4e 20 62 79 74 65 73 20 6f 66 20 30   of N bytes of 0
11d30 78 30 30 2e 20 20 53 51 4c 69 74 65 0a 20 20 6d  x00.  SQLite.  m
11d40 61 6e 61 67 65 73 20 74 68 65 73 65 20 7a 65 72  anages these zer
11d50 6f 62 6c 6f 62 73 20 76 65 72 79 20 65 66 66 69  oblobs very effi
11d60 63 69 65 6e 74 6c 79 2e 20 20 5a 65 72 6f 62 6c  ciently.  Zerobl
11d70 6f 62 73 20 63 61 6e 20 62 65 20 75 73 65 64 20  obs can be used 
11d80 74 6f 0a 20 20 72 65 73 65 72 76 65 20 73 70 61  to.  reserve spa
11d90 63 65 20 66 6f 72 20 61 20 42 4c 4f 42 20 74 68  ce for a BLOB th
11da0 61 74 20 69 73 20 6c 61 74 65 72 20 77 72 69 74  at is later writ
11db0 74 65 6e 20 75 73 69 6e 67 20 0a 20 20 5b 73 71  ten using .  [sq
11dc0 6c 69 74 65 33 5f 62 6c 6f 62 5f 6f 70 65 6e 28  lite3_blob_open(
11dd0 29 20 7c 20 69 6e 63 72 65 6d 65 6e 74 61 6c 20  ) | incremental 
11de0 42 4c 4f 42 20 49 2f 4f 5d 2e 0a 20 20 54 68 69  BLOB I/O]..  Thi
11df0 73 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 20 69  s SQL function i
11e00 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 75 73  s implemented us
11e10 69 6e 67 20 74 68 65 20 5b 73 71 6c 69 74 65 33  ing the [sqlite3
11e20 5f 72 65 73 75 6c 74 5f 7a 65 72 6f 62 6c 6f 62  _result_zeroblob
11e30 28 29 5d 0a 20 20 72 6f 75 74 69 6e 65 20 66 72  ()].  routine fr
11e40 6f 6d 20 74 68 65 20 43 2f 43 2b 2b 20 69 6e 74  om the C/C++ int
11e50 65 72 66 61 63 65 2e 0a 7d 0a 3c 2f 74 63 6c 3e  erface..}.</tcl>
11e60 0a 3c 2f 74 61 62 6c 65 3e 0a 0a 3c 74 63 6c 3e  .</table>..<tcl>
11e70 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  .###############
11e80 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
11e90 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
11ea0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
11eb0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a  ###############.
11ec0 53 65 63 74 69 6f 6e 20 7b 44 61 74 65 20 41 6e  Section {Date An
11ed0 64 20 54 69 6d 65 20 46 75 6e 63 74 69 6f 6e 73  d Time Functions
11ee0 7d 20 64 61 74 65 66 75 6e 63 20 7b 64 61 74 65  } datefunc {date
11ef0 66 75 6e 63 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70  func}.</tcl>..<p
11f00 3e 0a 53 51 4c 69 74 65 20 73 75 70 70 6f 72 74  >.SQLite support
11f10 73 20 66 69 76 65 20 64 61 74 65 20 61 6e 64 20  s five date and 
11f20 74 69 6d 65 20 66 75 6e 63 74 69 6f 6e 73 20 61  time functions a
11f30 73 20 66 6f 6c 6c 6f 77 73 3a 0a 3c 2f 70 3e 0a  s follows:.</p>.
11f40 0a 3c 70 3e 0a 3c 6f 6c 3e 0a 3c 6c 69 3e 20 3c  .<p>.<ol>.<li> <
11f50 62 3e 64 61 74 65 28 3c 2f 62 3e 3c 69 3e 74 69  b>date(</b><i>ti
11f60 6d 65 73 74 72 69 6e 67 2c 20 6d 6f 64 69 66 69  mestring, modifi
11f70 65 72 2c 20 6d 6f 64 69 66 69 65 72 2c 20 2e 2e  er, modifier, ..
11f80 2e 3c 2f 69 3e 3c 62 3e 29 3c 2f 62 3e 20 3c 2f  .</i><b>)</b> </
11f90 6c 69 3e 0a 3c 6c 69 3e 20 3c 62 3e 74 69 6d 65  li>.<li> <b>time
11fa0 28 3c 2f 62 3e 3c 69 3e 74 69 6d 65 73 74 72 69  (</b><i>timestri
11fb0 6e 67 2c 20 6d 6f 64 69 66 69 65 72 2c 20 6d 6f  ng, modifier, mo
11fc0 64 69 66 69 65 72 2c 20 2e 2e 2e 3c 2f 69 3e 3c  difier, ...</i><
11fd0 62 3e 29 3c 2f 62 3e 20 3c 2f 6c 69 3e 0a 3c 6c  b>)</b> </li>.<l
11fe0 69 3e 20 3c 62 3e 64 61 74 65 74 69 6d 65 28 3c  i> <b>datetime(<
11ff0 2f 62 3e 3c 69 3e 74 69 6d 65 73 74 72 69 6e 67  /b><i>timestring
12000 2c 20 6d 6f 64 69 66 69 65 72 2c 20 6d 6f 64 69  , modifier, modi
12010 66 69 65 72 2c 20 2e 2e 2e 3c 2f 69 3e 3c 62 3e  fier, ...</i><b>
12020 29 3c 2f 62 3e 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e  )</b> </li>.<li>
12030 20 3c 62 3e 6a 75 6c 69 61 6e 64 61 79 28 3c 2f   <b>julianday(</
12040 62 3e 3c 69 3e 74 69 6d 65 73 74 72 69 6e 67 2c  b><i>timestring,
12050 20 6d 6f 64 69 66 69 65 72 2c 20 6d 6f 64 69 66   modifier, modif
12060 69 65 72 2c 20 2e 2e 2e 3c 2f 69 3e 3c 62 3e 29  ier, ...</i><b>)
12070 3c 2f 62 3e 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20  </b> </li>.<li> 
12080 3c 62 3e 73 74 72 66 74 69 6d 65 28 3c 2f 62 3e  <b>strftime(</b>
12090 3c 69 3e 66 6f 72 6d 61 74 2c 20 74 69 6d 65 73  <i>format, times
120a0 74 72 69 6e 67 2c 20 6d 6f 64 69 66 69 65 72 2c  tring, modifier,
120b0 20 6d 6f 64 69 66 69 65 72 2c 20 2e 2e 2e 3c 2f   modifier, ...</
120c0 69 3e 3c 62 3e 29 3c 2f 62 3e 20 3c 2f 6c 69 3e  i><b>)</b> </li>
120d0 0a 3c 2f 6f 6c 3e 0a 0a 3c 70 3e 0a 41 6c 6c 20  .</ol>..<p>.All 
120e0 66 69 76 65 20 66 75 6e 63 74 69 6f 6e 73 20 74  five functions t
120f0 61 6b 65 20 61 20 74 69 6d 65 20 73 74 72 69 6e  ake a time strin
12100 67 20 61 73 20 61 6e 20 61 72 67 75 6d 65 6e 74  g as an argument
12110 2e 20 54 68 65 20 74 69 6d 65 20 73 74 72 69 6e  . The time strin
12120 67 0a 69 73 20 66 6f 6c 6c 6f 77 65 64 20 62 79  g.is followed by
12130 20 7a 65 72 6f 20 6f 72 20 6d 6f 72 65 20 6d 6f   zero or more mo
12140 64 69 66 69 65 72 73 2e 20 0a 54 68 65 20 73 74  difiers. .The st
12150 72 66 74 69 6d 65 28 29 20 66 75 6e 63 74 69 6f  rftime() functio
12160 6e 20 61 6c 73 6f 20 74 61 6b 65 73 20 61 20 66  n also takes a f
12170 6f 72 6d 61 74 20 73 74 72 69 6e 67 20 61 73 20  ormat string as 
12180 69 74 73 20 66 69 72 73 74 20 61 72 67 75 6d 65  its first argume
12190 6e 74 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 54 68  nt..</p>..<p>.Th
121a0 65 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20  e date and time 
121b0 66 75 6e 63 74 69 6f 6e 73 20 75 73 65 20 61 20  functions use a 
121c0 73 75 62 73 65 74 20 6f 66 0a 5b 68 74 74 70 3a  subset of.[http:
121d0 2f 2f 65 6e 2e 77 69 6b 69 70 65 64 69 61 2e 6f  //en.wikipedia.o
121e0 72 67 2f 77 69 6b 69 2f 49 53 4f 5f 38 36 30 31  rg/wiki/ISO_8601
121f0 20 7c 20 49 53 30 2d 38 36 30 31 5d 20 64 61 74   | IS0-8601] dat
12200 65 20 61 6e 64 20 74 69 6d 65 0a 66 6f 72 6d 61  e and time.forma
12210 74 73 2e 0a 54 68 65 20 64 61 74 65 28 29 20 66  ts..The date() f
12220 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20  unction returns 
12230 74 68 65 20 64 61 74 65 20 69 6e 20 74 68 69 73  the date in this
12240 20 66 6f 72 6d 61 74 3a 20 59 59 59 59 2d 4d 4d   format: YYYY-MM
12250 2d 44 44 2e 20 0a 54 68 65 20 74 69 6d 65 28 29  -DD. .The time()
12260 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e   function return
12270 73 20 74 68 65 20 74 69 6d 65 20 61 73 20 48 48  s the time as HH
12280 3a 4d 4d 3a 53 53 2e 20 0a 54 68 65 20 64 61 74  :MM:SS. .The dat
12290 65 74 69 6d 65 28 29 20 66 75 6e 63 74 69 6f 6e  etime() function
122a0 20 72 65 74 75 72 6e 73 20 22 59 59 59 59 2d 4d   returns "YYYY-M
122b0 4d 2d 44 44 20 48 48 3a 4d 4d 3a 53 53 22 2e 20  M-DD HH:MM:SS". 
122c0 0a 54 68 65 20 6a 75 6c 69 61 6e 64 61 79 28 29  .The julianday()
122d0 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e   function return
122e0 73 20 74 68 65 20 0a 5b 68 74 74 70 3a 2f 2f 65  s the .[http://e
122f0 6e 2e 77 69 6b 69 70 65 64 69 61 2e 6f 72 67 2f  n.wikipedia.org/
12300 77 69 6b 69 2f 4a 75 6c 69 61 6e 5f 64 61 79 20  wiki/Julian_day 
12310 7c 20 4a 75 6c 69 61 6e 20 64 61 79 5d 20 2d 20  | Julian day] - 
12320 74 68 65 0a 6e 75 6d 62 65 72 20 6f 66 20 64 61  the.number of da
12330 79 73 20 73 69 6e 63 65 20 6e 6f 6f 6e 20 69 6e  ys since noon in
12340 20 47 72 65 65 6e 77 69 63 68 20 6f 6e 20 4e 6f   Greenwich on No
12350 76 65 6d 62 65 72 20 32 34 2c 20 34 37 31 34 20  vember 24, 4714 
12360 42 2e 43 2e 20 0a 28 5b 68 74 74 70 3a 2f 2f 65  B.C. .([http://e
12370 6e 2e 77 69 6b 69 70 65 64 69 61 2e 6f 72 67 2f  n.wikipedia.org/
12380 77 69 6b 69 2f 50 72 6f 6c 65 70 74 69 63 5f 47  wiki/Proleptic_G
12390 72 65 67 6f 72 69 61 6e 5f 63 61 6c 65 6e 64 61  regorian_calenda
123a0 72 20 7c 20 50 72 6f 6c 65 70 74 69 63 20 47 72  r | Proleptic Gr
123b0 65 67 6f 72 69 61 6e 20 63 61 6c 65 6e 64 61 72  egorian calendar
123c0 5d 29 2e 20 0a 54 68 65 20 73 74 72 66 74 69 6d  ]). .The strftim
123d0 65 28 29 20 72 6f 75 74 69 6e 65 20 72 65 74 75  e() routine retu
123e0 72 6e 73 20 74 68 65 20 64 61 74 65 20 66 6f 72  rns the date for
123f0 6d 61 74 74 65 64 20 61 63 63 6f 72 64 69 6e 67  matted according
12400 20 74 6f 20 0a 74 68 65 20 66 6f 72 6d 61 74 20   to .the format 
12410 73 74 72 69 6e 67 20 73 70 65 63 69 66 69 65 64  string specified
12420 20 61 73 20 74 68 65 20 66 69 72 73 74 20 61 72   as the first ar
12430 67 75 6d 65 6e 74 2e 0a 54 68 65 20 66 6f 72 6d  gument..The form
12440 61 74 20 73 74 72 69 6e 67 20 73 75 70 70 6f 72  at string suppor
12450 74 73 20 74 68 65 20 6d 6f 73 74 20 63 6f 6d 6d  ts the most comm
12460 6f 6e 20 73 75 62 73 74 69 74 75 74 69 6f 6e 73  on substitutions
12470 20 66 6f 75 6e 64 20 69 6e 20 74 68 65 20 0a 5b   found in the .[
12480 68 74 74 70 3a 2f 2f 6f 70 65 6e 67 72 6f 75 70  http://opengroup
12490 2e 6f 72 67 2f 6f 6e 6c 69 6e 65 70 75 62 73 2f  .org/onlinepubs/
124a0 30 30 37 39 30 38 37 39 39 2f 78 73 68 2f 73 74  007908799/xsh/st
124b0 72 66 74 69 6d 65 2e 68 74 6d 6c 20 7c 20 73 74  rftime.html | st
124c0 72 66 74 69 6d 65 28 29 20 66 75 6e 63 74 69 6f  rftime() functio
124d0 6e 5d 0a 66 72 6f 6d 20 74 68 65 20 73 74 61 6e  n].from the stan
124e0 64 61 72 64 20 43 20 6c 69 62 72 61 72 79 20 70  dard C library p
124f0 6c 75 73 20 74 77 6f 20 6e 65 77 20 73 75 62 73  lus two new subs
12500 74 69 74 75 74 69 6f 6e 73 2c 20 25 66 20 61 6e  titutions, %f an
12510 64 20 25 4a 2e 0a 54 68 65 20 66 6f 6c 6c 6f 77  d %J..The follow
12520 69 6e 67 20 69 73 20 61 20 63 6f 6d 70 6c 65 74  ing is a complet
12530 65 20 6c 69 73 74 20 6f 66 20 76 61 6c 69 64 20  e list of valid 
12540 73 74 72 66 74 69 6d 65 28 29 20 73 75 62 73 74  strftime() subst
12550 69 74 75 74 69 6f 6e 73 3a 0a 3c 2f 70 3e 0a 0a  itutions:.</p>..
12560 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 3c 74 61  <blockquote>.<ta
12570 62 6c 65 20 62 6f 72 64 65 72 3d 22 30 22 20 63  ble border="0" c
12580 65 6c 6c 70 61 64 64 69 6e 67 3d 22 30 22 20 63  ellpadding="0" c
12590 65 6c 6c 73 70 61 63 69 6e 67 3d 22 30 22 3e 0a  ellspacing="0">.
125a0 3c 74 72 3e 3c 74 64 3e 3c 74 64 20 77 69 64 74  <tr><td><td widt
125b0 68 3d 22 31 30 22 3e 3c 74 64 3e 3c 2f 74 72 3e  h="10"><td></tr>
125c0 0a 0a 3c 74 72 3e 3c 74 64 3e 20 25 64 20 3c 74  ..<tr><td> %d <t
125d0 64 3e 3c 74 64 3e 20 64 61 79 20 6f 66 20 6d 6f  d><td> day of mo
125e0 6e 74 68 3a 20 30 30 0a 3c 74 72 3e 3c 74 64 3e  nth: 00.<tr><td>
125f0 20 25 66 20 3c 74 64 3e 3c 74 64 3e 20 66 72 61   %f <td><td> fra
12600 63 74 69 6f 6e 61 6c 20 73 65 63 6f 6e 64 73 3a  ctional seconds:
12610 20 53 53 2e 53 53 53 0a 3c 74 72 3e 3c 74 64 3e   SS.SSS.<tr><td>
12620 20 25 48 20 3c 74 64 3e 3c 74 64 3e 20 68 6f 75   %H <td><td> hou
12630 72 3a 20 30 30 2d 32 34 20 0a 3c 74 72 3e 3c 74  r: 00-24 .<tr><t
12640 64 3e 20 25 6a 20 3c 74 64 3e 3c 74 64 3e 20 64  d> %j <td><td> d
12650 61 79 20 6f 66 20 79 65 61 72 3a 20 30 30 31 2d  ay of year: 001-
12660 33 36 36 0a 3c 74 72 3e 3c 74 64 3e 20 25 4a 20  366.<tr><td> %J 
12670 3c 74 64 3e 3c 74 64 3e 20 4a 75 6c 69 61 6e 20  <td><td> Julian 
12680 64 61 79 20 6e 75 6d 62 65 72 0a 3c 74 72 3e 3c  day number.<tr><
12690 74 64 3e 20 25 6d 20 3c 74 64 3e 3c 74 64 3e 20  td> %m <td><td> 
126a0 6d 6f 6e 74 68 3a 20 30 31 2d 31 32 0a 3c 74 72  month: 01-12.<tr
126b0 3e 3c 74 64 3e 20 25 4d 20 3c 74 64 3e 3c 74 64  ><td> %M <td><td
126c0 3e 20 6d 69 6e 75 74 65 3a 20 30 30 2d 35 39 0a  > minute: 00-59.
126d0 3c 74 72 3e 3c 74 64 3e 20 25 73 20 3c 74 64 3e  <tr><td> %s <td>
126e0 3c 74 64 3e 20 73 65 63 6f 6e 64 73 20 73 69 6e  <td> seconds sin
126f0 63 65 20 31 39 37 30 2d 30 31 2d 30 31 0a 3c 74  ce 1970-01-01.<t
12700 72 3e 3c 74 64 3e 20 25 53 20 3c 74 64 3e 3c 74  r><td> %S <td><t
12710 64 3e 20 73 65 63 6f 6e 64 73 3a 20 30 30 2d 35  d> seconds: 00-5
12720 39 0a 3c 74 72 3e 3c 74 64 3e 20 25 77 20 3c 74  9.<tr><td> %w <t
12730 64 3e 3c 74 64 3e 20 64 61 79 20 6f 66 20 77 65  d><td> day of we
12740 65 6b 20 30 2d 36 20 77 69 74 68 20 73 75 6e 64  ek 0-6 with sund
12750 61 79 3d 3d 30 0a 3c 74 72 3e 3c 74 64 3e 20 25  ay==0.<tr><td> %
12760 57 20 3c 74 64 3e 3c 74 64 3e 20 77 65 65 6b 20  W <td><td> week 
12770 6f 66 20 79 65 61 72 3a 20 30 30 2d 35 33 0a 3c  of year: 00-53.<
12780 74 72 3e 3c 74 64 3e 20 25 59 20 3c 74 64 3e 3c  tr><td> %Y <td><
12790 74 64 3e 20 79 65 61 72 3a 20 30 30 30 30 2d 39  td> year: 0000-9
127a0 39 39 39 0a 3c 74 72 3e 3c 74 64 3e 20 25 25 20  999.<tr><td> %% 
127b0 3c 74 64 3e 3c 74 64 3e 20 25 0a 3c 2f 74 61 62  <td><td> %.</tab
127c0 6c 65 3e 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65  le>.</blockquote
127d0 3e 0a 0a 3c 70 3e 0a 4e 6f 74 69 63 65 20 74 68  >..<p>.Notice th
127e0 61 74 20 61 6c 6c 20 6f 74 68 65 72 20 64 61 74  at all other dat
127f0 65 20 61 6e 64 20 74 69 6d 65 20 66 75 6e 63 74  e and time funct
12800 69 6f 6e 73 20 63 61 6e 20 62 65 20 65 78 70 72  ions can be expr
12810 65 73 73 65 64 0a 69 6e 20 74 65 72 6d 73 20 6f  essed.in terms o
12820 66 20 73 74 72 66 74 69 6d 65 28 29 3a 0a 3c 2f  f strftime():.</
12830 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e  p>..<blockquote>
12840 0a 3c 74 61 62 6c 65 20 62 6f 72 64 65 72 3d 22  .<table border="
12850 30 22 20 63 65 6c 6c 70 61 64 64 69 6e 67 3d 22  0" cellpadding="
12860 30 22 20 63 65 6c 6c 73 70 61 63 69 6e 67 3d 22  0" cellspacing="
12870 30 22 3e 0a 3c 74 72 3e 3c 74 64 3e 3c 62 3e 46  0">.<tr><td><b>F
12880 75 6e 63 74 69 6f 6e 3c 2f 62 3e 3c 74 64 20 77  unction</b><td w
12890 69 64 74 68 3d 22 33 30 22 3e 3c 74 64 3e 3c 62  idth="30"><td><b
128a0 3e 45 71 75 69 76 61 6c 65 6e 74 20 73 74 72 66  >Equivalent strf
128b0 74 69 6d 65 28 29 3c 2f 62 3e 0a 3c 74 72 3e 3c  time()</b>.<tr><
128c0 74 64 3e 20 20 20 64 61 74 65 28 2e 2e 2e 29 20  td>   date(...) 
128d0 20 20 20 20 20 3c 74 64 3e 3c 74 64 3e 20 20 73       <td><td>  s
128e0 74 72 66 74 69 6d 65 28 27 25 59 2d 25 6d 2d 25  trftime('%Y-%m-%
128f0 64 27 2c 20 2e 2e 2e 29 0a 3c 74 72 3e 3c 74 64  d', ...).<tr><td
12900 3e 20 20 20 74 69 6d 65 28 2e 2e 2e 29 20 20 20  >   time(...)   
12910 20 20 20 3c 74 64 3e 3c 74 64 3e 20 20 73 74 72     <td><td>  str
12920 66 74 69 6d 65 28 27 25 48 3a 25 4d 3a 25 53 27  ftime('%H:%M:%S'
12930 2c 20 2e 2e 2e 29 0a 3c 74 72 3e 3c 74 64 3e 20  , ...).<tr><td> 
12940 20 20 64 61 74 65 74 69 6d 65 28 2e 2e 2e 29 20    datetime(...) 
12950 20 3c 74 64 3e 3c 74 64 3e 20 20 73 74 72 66 74   <td><td>  strft
12960 69 6d 65 28 27 25 59 2d 25 6d 2d 25 64 20 25 48  ime('%Y-%m-%d %H
12970 3a 25 4d 3a 25 53 27 2c 20 2e 2e 2e 29 0a 3c 74  :%M:%S', ...).<t
12980 72 3e 3c 74 64 3e 20 20 20 6a 75 6c 69 61 6e 64  r><td>   juliand
12990 61 79 28 2e 2e 2e 29 20 3c 74 64 3e 3c 74 64 3e  ay(...) <td><td>
129a0 20 20 73 74 72 66 74 69 6d 65 28 27 25 4a 27 2c    strftime('%J',
129b0 20 2e 2e 2e 29 0a 3c 2f 74 61 62 6c 65 3e 0a 3c   ...).</table>.<
129c0 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70  /blockquote>..<p
129d0 3e 0a 54 68 65 20 6f 6e 6c 79 20 72 65 61 73 6f  >.The only reaso
129e0 6e 73 20 66 6f 72 20 70 72 6f 76 69 64 69 6e 67  ns for providing
129f0 20 66 75 6e 63 74 69 6f 6e 73 20 6f 74 68 65 72   functions other
12a00 20 74 68 61 6e 20 73 74 72 66 74 69 6d 65 28 29   than strftime()
12a10 20 69 73 0a 66 6f 72 20 63 6f 6e 76 65 6e 69 65   is.for convenie
12a20 6e 63 65 20 61 6e 64 20 66 6f 72 20 65 66 66 69  nce and for effi
12a30 63 69 65 6e 63 79 2e 0a 3c 2f 70 3e 0a 0a 3c 68  ciency..</p>..<h
12a40 33 3e 54 69 6d 65 20 53 74 72 69 6e 67 73 3c 2f  3>Time Strings</
12a50 68 33 3e 0a 0a 3c 70 3e 41 20 74 69 6d 65 20 73  h3>..<p>A time s
12a60 74 72 69 6e 67 20 63 61 6e 20 62 65 20 69 6e 20  tring can be in 
12a70 61 6e 79 20 6f 66 20 74 68 65 20 66 6f 6c 6c 6f  any of the follo
12a80 77 69 6e 67 20 66 6f 72 6d 61 74 73 3a 3c 2f 70  wing formats:</p
12a90 3e 0a 0a 3c 6f 6c 3e 0a 3c 6c 69 3e 20 3c 69 3e  >..<ol>.<li> <i>
12aa0 59 59 59 59 2d 4d 4d 2d 44 44 3c 2f 69 3e 0a 3c  YYYY-MM-DD</i>.<
12ab0 6c 69 3e 20 3c 69 3e 59 59 59 59 2d 4d 4d 2d 44  li> <i>YYYY-MM-D
12ac0 44 20 48 48 3a 4d 4d 3c 2f 69 3e 0a 3c 6c 69 3e  D HH:MM</i>.<li>
12ad0 20 3c 69 3e 59 59 59 59 2d 4d 4d 2d 44 44 20 48   <i>YYYY-MM-DD H
12ae0 48 3a 4d 4d 3a 53 53 3c 2f 69 3e 0a 3c 6c 69 3e  H:MM:SS</i>.<li>
12af0 20 3c 69 3e 59 59 59 59 2d 4d 4d 2d 44 44 20 48   <i>YYYY-MM-DD H
12b00 48 3a 4d 4d 3a 53 53 2e 53 53 53 3c 2f 69 3e 0a  H:MM:SS.SSS</i>.
12b10 3c 6c 69 3e 20 3c 69 3e 59 59 59 59 2d 4d 4d 2d  <li> <i>YYYY-MM-
12b20 44 44 3c 2f 69 3e 3c 62 3e 54 3c 2f 62 3e 3c 69  DD</i><b>T</b><i
12b30 3e 48 48 3a 4d 4d 3c 2f 69 3e 0a 3c 6c 69 3e 20  >HH:MM</i>.<li> 
12b40 3c 69 3e 59 59 59 59 2d 4d 4d 2d 44 44 3c 2f 69  <i>YYYY-MM-DD</i
12b50 3e 3c 62 3e 54 3c 2f 62 3e 3c 69 3e 48 48 3a 4d  ><b>T</b><i>HH:M
12b60 4d 3a 53 53 3c 2f 69 3e 0a 3c 6c 69 3e 20 3c 69  M:SS</i>.<li> <i
12b70 3e 59 59 59 59 2d 4d 4d 2d 44 44 3c 2f 69 3e 3c  >YYYY-MM-DD</i><
12b80 62 3e 54 3c 2f 62 3e 3c 69 3e 48 48 3a 4d 4d 3a  b>T</b><i>HH:MM:
12b90 53 53 2e 53 53 53 3c 2f 69 3e 0a 3c 6c 69 3e 20  SS.SSS</i>.<li> 
12ba0 3c 69 3e 48 48 3a 4d 4d 3c 2f 69 3e 0a 3c 6c 69  <i>HH:MM</i>.<li
12bb0 3e 20 3c 69 3e 48 48 3a 4d 4d 3a 53 53 3c 2f 69  > <i>HH:MM:SS</i
12bc0 3e 0a 3c 6c 69 3e 20 3c 69 3e 48 48 3a 4d 4d 3a  >.<li> <i>HH:MM:
12bd0 53 53 2e 53 53 53 3c 2f 69 3e 0a 3c 6c 69 3e 20  SS.SSS</i>.<li> 
12be0 3c 62 3e 6e 6f 77 3c 2f 62 3e 0a 3c 6c 69 3e 20  <b>now</b>.<li> 
12bf0 3c 69 3e 44 44 44 44 44 44 44 44 44 44 3c 2f 69  <i>DDDDDDDDDD</i
12c00 3e 0a 3c 2f 6f 6c 3e 0a 0a 3c 70 3e 0a 49 6e 20  >.</ol>..<p>.In 
12c10 66 6f 72 6d 61 74 73 20 35 20 74 68 72 6f 75 67  formats 5 throug
12c20 68 20 37 2c 20 74 68 65 20 22 54 22 20 69 73 20  h 7, the "T" is 
12c30 61 20 6c 69 74 65 72 61 6c 20 63 68 61 72 61 63  a literal charac
12c40 74 65 72 20 73 65 70 61 72 61 74 69 6e 67 20 0a  ter separating .
12c50 74 68 65 20 64 61 74 65 20 61 6e 64 20 74 68 65  the date and the
12c60 20 74 69 6d 65 2c 20 61 73 20 72 65 71 75 69 72   time, as requir
12c70 65 64 20 62 79 20 0a 5b 68 74 74 70 3a 2f 2f 77  ed by .[http://w
12c80 77 77 2e 77 33 63 2e 6f 72 67 2f 54 52 2f 4e 4f  ww.w3c.org/TR/NO
12c90 54 45 2d 64 61 74 65 74 69 6d 65 20 7c 20 49 53  TE-datetime | IS
12ca0 4f 2d 38 36 30 31 5d 2e 20 0a 46 6f 72 6d 61 74  O-8601]. .Format
12cb0 73 20 38 20 74 68 72 6f 75 67 68 20 31 30 20 74  s 8 through 10 t
12cc0 68 61 74 20 73 70 65 63 69 66 79 20 6f 6e 6c 79  hat specify only
12cd0 20 61 20 74 69 6d 65 20 61 73 73 75 6d 65 20 61   a time assume a
12ce0 20 64 61 74 65 20 6f 66 20 0a 32 30 30 30 2d 30   date of .2000-0
12cf0 31 2d 30 31 2e 20 46 6f 72 6d 61 74 20 31 31 2c  1-01. Format 11,
12d00 20 74 68 65 20 73 74 72 69 6e 67 20 27 6e 6f 77   the string 'now
12d10 27 2c 20 69 73 20 63 6f 6e 76 65 72 74 65 64 20  ', is converted 
12d20 69 6e 74 6f 20 74 68 65 20 0a 63 75 72 72 65 6e  into the .curren
12d30 74 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20  t date and time 
12d40 61 73 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d  as obtained from
12d50 20 74 68 65 20 78 43 75 72 72 65 6e 74 54 69 6d   the xCurrentTim
12d60 65 20 6d 65 74 68 6f 64 0a 6f 66 20 74 68 65 20  e method.of the 
12d70 5b 73 71 6c 69 74 65 33 5f 76 66 73 5d 20 6f 62  [sqlite3_vfs] ob
12d80 6a 65 63 74 20 69 6e 20 75 73 65 2e 0a 5b 68 74  ject in use..[ht
12d90 74 70 3a 2f 2f 65 6e 2e 77 69 6b 69 70 65 64 69  tp://en.wikipedi
12da0 61 2e 6f 72 67 2f 77 69 6b 69 2f 43 6f 6f 72 64  a.org/wiki/Coord
12db0 69 6e 61 74 65 64 5f 55 6e 69 76 65 72 73 61 6c  inated_Universal
12dc0 5f 54 69 6d 65 20 7c 20 55 6e 69 76 65 72 73 61  _Time | Universa
12dd0 6c 20 43 6f 6f 72 64 69 6e 61 74 65 64 20 54 69  l Coordinated Ti
12de0 6d 65 20 28 55 54 43 29 5d 20 69 73 20 75 73 65  me (UTC)] is use
12df0 64 2e 20 0a 46 6f 72 6d 61 74 20 31 32 20 69 73  d. .Format 12 is
12e00 20 74 68 65 20 0a 5b 68 74 74 70 3a 2f 2f 65 6e   the .[http://en
12e10 2e 77 69 6b 69 70 65 64 69 61 2e 6f 72 67 2f 77  .wikipedia.org/w
12e20 69 6b 69 2f 4a 75 6c 69 61 6e 5f 64 61 79 20 7c  iki/Julian_day |
12e30 20 4a 75 6c 69 61 6e 20 64 61 79 20 6e 75 6d 62   Julian day numb
12e40 65 72 5d 0a 65 78 70 72 65 73 73 65 64 20 61 73  er].expressed as
12e50 20 61 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e   a floating poin
12e60 74 20 76 61 6c 75 65 2e 0a 3c 2f 70 3e 0a 0a 3c  t value..</p>..<
12e70 68 33 3e 4d 6f 64 69 66 69 65 72 73 3c 2f 68 33  h3>Modifiers</h3
12e80 3e 0a 0a 3c 70 3e 54 68 65 20 74 69 6d 65 20 73  >..<p>The time s
12e90 74 72 69 6e 67 20 63 61 6e 20 62 65 20 66 6f 6c  tring can be fol
12ea0 6c 6f 77 65 64 20 62 79 20 7a 65 72 6f 20 6f 72  lowed by zero or
12eb0 20 6d 6f 72 65 20 6d 6f 64 69 66 69 65 72 73 20   more modifiers 
12ec0 74 68 61 74 20 0a 61 6c 74 65 72 20 74 68 65 20  that .alter the 
12ed0 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20 73 74  date and time st
12ee0 72 69 6e 67 2e 20 20 45 61 63 68 20 6d 6f 64 69  ring.  Each modi
12ef0 66 69 65 72 0a 69 73 20 61 20 74 72 61 6e 73 66  fier.is a transf
12f00 6f 72 6d 61 74 69 6f 6e 20 74 68 61 74 20 69 73  ormation that is
12f10 20 61 70 70 6c 69 65 64 20 74 6f 20 74 68 65 20   applied to the 
12f20 74 69 6d 65 20 73 74 72 69 6e 67 20 74 6f 20 69  time string to i
12f30 74 73 20 6c 65 66 74 2e 0a 4d 6f 64 69 66 69 65  ts left..Modifie
12f40 72 73 20 61 72 65 20 61 70 70 6c 69 65 64 20 66  rs are applied f
12f50 72 6f 6d 20 6c 65 66 74 20 74 6f 20 72 69 67 68  rom left to righ
12f60 74 3b 20 6f 72 64 65 72 20 69 73 20 69 6d 70 6f  t; order is impo
12f70 72 74 61 6e 74 2e 0a 54 68 65 20 61 76 61 69 6c  rtant..The avail
12f80 61 62 6c 65 20 6d 6f 64 69 66 69 65 72 73 20 61  able modifiers a
12f90 72 65 20 61 73 20 66 6f 6c 6c 6f 77 73 2e 3c 2f  re as follows.</
12fa0 70 3e 0a 0a 3c 6f 6c 3e 0a 3c 6c 69 3e 20 4e 4e  p>..<ol>.<li> NN
12fb0 4e 20 64 61 79 73 0a 3c 6c 69 3e 20 4e 4e 4e 20  N days.<li> NNN 
12fc0 68 6f 75 72 73 0a 3c 6c 69 3e 20 4e 4e 4e 20 6d  hours.<li> NNN m
12fd0 69 6e 75 74 65 73 0a 3c 6c 69 3e 20 4e 4e 4e 2e  inutes.<li> NNN.
12fe0 4e 4e 4e 4e 20 73 65 63 6f 6e 64 73 0a 3c 6c 69  NNNN seconds.<li
12ff0 3e 20 4e 4e 4e 20 6d 6f 6e 74 68 73 0a 3c 6c 69  > NNN months.<li
13000 3e 20 4e 4e 4e 20 79 65 61 72 73 0a 3c 6c 69 3e  > NNN years.<li>
13010 20 73 74 61 72 74 20 6f 66 20 6d 6f 6e 74 68 0a   start of month.
13020 3c 6c 69 3e 20 73 74 61 72 74 20 6f 66 20 79 65  <li> start of ye
13030 61 72 0a 3c 6c 69 3e 20 73 74 61 72 74 20 6f 66  ar.<li> start of
13040 20 64 61 79 0a 3c 6c 69 3e 20 77 65 65 6b 64 61   day.<li> weekda
13050 79 20 4e 0a 3c 6c 69 3e 20 75 6e 69 78 65 70 6f  y N.<li> unixepo
13060 63 68 0a 3c 6c 69 3e 20 6c 6f 63 61 6c 74 69 6d  ch.<li> localtim
13070 65 0a 3c 6c 69 3e 20 75 74 63 20 0a 3c 2f 6f 6c  e.<li> utc .</ol
13080 3e 0a 0a 3c 70 3e 54 68 65 20 66 69 72 73 74 20  >..<p>The first 
13090 73 69 78 20 6d 6f 64 69 66 69 65 72 73 20 28 31  six modifiers (1
130a0 20 74 68 72 6f 75 67 68 20 36 29 20 0a 73 69 6d   through 6) .sim
130b0 70 6c 79 20 61 64 64 20 74 68 65 20 73 70 65 63  ply add the spec
130c0 69 66 69 65 64 20 61 6d 6f 75 6e 74 20 6f 66 20  ified amount of 
130d0 74 69 6d 65 20 74 6f 20 74 68 65 20 64 61 74 65  time to the date
130e0 20 0a 73 70 65 63 69 66 69 65 64 20 62 79 20 74   .specified by t
130f0 68 65 20 70 72 65 63 65 64 69 6e 67 20 74 69 6d  he preceding tim
13100 65 73 74 72 69 6e 67 2e 0a 4e 6f 74 65 20 74 68  estring..Note th
13110 61 74 20 22 26 70 6c 75 73 6d 6e 3b 4e 4e 4e 20  at "&plusmn;NNN 
13120 6d 6f 6e 74 68 73 22 20 77 6f 72 6b 73 20 62 79  months" works by
13130 20 72 65 6e 64 65 72 69 6e 67 20 74 68 65 20 6f   rendering the o
13140 72 69 67 69 6e 61 6c 20 64 61 74 65 20 69 6e 74  riginal date int
13150 6f 0a 74 68 65 20 59 59 59 59 2d 4d 4d 2d 44 44  o.the YYYY-MM-DD
13160 20 66 6f 72 6d 61 74 2c 20 61 64 64 69 6e 67 20   format, adding 
13170 74 68 65 20 26 70 6c 75 73 6d 6e 3b 4e 4e 4e 20  the &plusmn;NNN 
13180 74 6f 20 74 68 65 20 4d 4d 20 6d 6f 6e 74 68 20  to the MM month 
13190 76 61 6c 75 65 2c 20 74 68 65 6e 0a 6e 6f 72 6d  value, then.norm
131a0 61 6c 69 7a 69 6e 67 20 74 68 65 20 72 65 73 75  alizing the resu
131b0 6c 74 2e 20 20 54 68 75 73 2c 20 66 6f 72 20 65  lt.  Thus, for e
131c0 78 61 6d 70 6c 65 2c 20 74 68 65 20 64 61 74 61  xample, the data
131d0 20 32 30 30 31 2d 30 33 2d 33 31 20 6d 6f 64 69   2001-03-31 modi
131e0 66 69 65 64 0a 62 79 20 27 2b 31 20 6d 6f 6e 74  fied.by '+1 mont
131f0 68 27 20 69 6e 69 74 69 61 6c 6c 79 20 79 69 65  h' initially yie
13200 6c 64 73 20 32 30 30 31 2d 30 34 2d 33 31 2c 20  lds 2001-04-31, 
13210 62 75 74 20 41 70 72 69 6c 20 6f 6e 6c 79 20 68  but April only h
13220 61 73 20 33 30 20 64 61 79 73 0a 73 6f 20 74 68  as 30 days.so th
13230 65 20 64 61 74 65 20 69 73 20 6e 6f 72 6d 61 6c  e date is normal
13240 69 7a 65 64 20 74 6f 20 32 30 30 31 2d 30 35 2d  ized to 2001-05-
13250 30 31 2e 20 20 41 20 73 69 6d 69 6c 61 72 20 65  01.  A similar e
13260 66 66 65 63 74 20 6f 63 63 75 72 73 20 77 68 65  ffect occurs whe
13270 6e 0a 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 64  n.the original d
13280 61 74 65 20 69 73 20 46 65 62 72 75 61 72 79 20  ate is February 
13290 32 39 20 6f 66 20 61 20 6c 65 61 70 79 65 61 72  29 of a leapyear
132a0 20 61 6e 64 20 74 68 65 20 6d 6f 64 69 66 69 65   and the modifie
132b0 72 20 69 73 0a 26 70 6c 75 73 6d 6e 3b 4e 20 79  r is.&plusmn;N y
132c0 65 61 72 73 20 77 68 65 72 65 20 4e 20 69 73 20  ears where N is 
132d0 6e 6f 74 20 61 20 6d 75 6c 74 69 70 6c 65 20 6f  not a multiple o
132e0 66 20 66 6f 75 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e  f four.</p>..<p>
132f0 54 68 65 20 22 73 74 61 72 74 20 6f 66 22 20 6d  The "start of" m
13300 6f 64 69 66 69 65 72 73 20 28 37 20 74 68 72 6f  odifiers (7 thro
13310 75 67 68 20 39 29 20 73 68 69 66 74 20 74 68 65  ugh 9) shift the
13320 20 64 61 74 65 20 62 61 63 6b 77 61 72 64 73 20   date backwards 
13330 0a 74 6f 20 74 68 65 20 62 65 67 69 6e 6e 69 6e  .to the beginnin
13340 67 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74  g of the current
13350 20 6d 6f 6e 74 68 2c 20 79 65 61 72 20 6f 72 20   month, year or 
13360 64 61 79 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  day.</p>..<p>The
13370 20 22 77 65 65 6b 64 61 79 22 20 6d 6f 64 69 66   "weekday" modif
13380 69 65 72 20 61 64 76 61 6e 63 65 73 20 74 68 65  ier advances the
13390 20 64 61 74 65 20 66 6f 72 77 61 72 64 20 74 6f   date forward to
133a0 20 74 68 65 20 6e 65 78 74 20 64 61 74 65 20 0a   the next date .
133b0 77 68 65 72 65 20 74 68 65 20 77 65 65 6b 64 61  where the weekda
133c0 79 20 6e 75 6d 62 65 72 20 69 73 20 4e 2e 20 53  y number is N. S
133d0 75 6e 64 61 79 20 69 73 20 30 2c 20 4d 6f 6e 64  unday is 0, Mond
133e0 61 79 20 69 73 20 31 2c 20 61 6e 64 20 73 6f 20  ay is 1, and so 
133f0 66 6f 72 74 68 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54  forth.</p>..<p>T
13400 68 65 20 22 75 6e 69 78 65 70 6f 63 68 22 20 6d  he "unixepoch" m
13410 6f 64 69 66 69 65 72 20 28 31 31 29 20 6f 6e 6c  odifier (11) onl
13420 79 20 77 6f 72 6b 73 20 69 66 20 69 74 20 69 6d  y works if it im
13430 6d 65 64 69 61 74 65 6c 79 20 66 6f 6c 6c 6f 77  mediately follow
13440 73 20 0a 61 20 74 69 6d 65 73 74 72 69 6e 67 20  s .a timestring 
13450 69 6e 20 74 68 65 20 44 44 44 44 44 44 44 44 44  in the DDDDDDDDD
13460 44 20 66 6f 72 6d 61 74 2e 20 0a 54 68 69 73 20  D format. .This 
13470 6d 6f 64 69 66 69 65 72 20 63 61 75 73 65 73 20  modifier causes 
13480 74 68 65 20 44 44 44 44 44 44 44 44 44 44 20 74  the DDDDDDDDDD t
13490 6f 20 62 65 20 69 6e 74 65 72 70 72 65 74 65 64  o be interpreted
134a0 20 6e 6f 74 20 0a 61 73 20 61 20 4a 75 6c 69 61   not .as a Julia
134b0 6e 20 64 61 79 20 6e 75 6d 62 65 72 20 61 73 20  n day number as 
134c0 69 74 20 6e 6f 72 6d 61 6c 6c 79 20 77 6f 75 6c  it normally woul
134d0 64 20 62 65 2c 20 62 75 74 20 61 73 0a 5b 68 74  d be, but as.[ht
134e0 74 70 3a 2f 2f 65 6e 2e 77 69 6b 69 70 65 64 69  tp://en.wikipedi
134f0 61 2e 6f 72 67 2f 77 69 6b 69 2f 55 6e 69 78 5f  a.org/wiki/Unix_
13500 74 69 6d 65 20 7c 20 55 6e 69 78 20 54 69 6d 65  time | Unix Time
13510 5d 20 2d 20 74 68 65 20 0a 6e 75 6d 62 65 72 20  ] - the .number 
13520 6f 66 20 73 65 63 6f 6e 64 73 20 73 69 6e 63 65  of seconds since
13530 20 31 39 37 30 2e 20 20 49 66 20 74 68 65 20 22   1970.  If the "
13540 75 6e 69 78 65 70 6f 63 68 22 20 6d 6f 64 69 66  unixepoch" modif
13550 69 65 72 20 64 6f 65 73 20 6e 6f 74 0a 66 6f 6c  ier does not.fol
13560 6c 6f 77 20 61 20 74 69 6d 65 73 74 72 69 6e 67  low a timestring
13570 20 6f 66 20 74 68 65 20 66 6f 72 6d 20 44 44 44   of the form DDD
13580 44 44 44 44 44 44 44 20 77 68 69 63 68 20 65 78  DDDDDDD which ex
13590 70 72 65 73 73 65 73 20 74 68 65 20 6e 75 6d 62  presses the numb
135a0 65 72 0a 6f 66 20 73 65 63 6f 6e 64 73 20 73 69  er.of seconds si
135b0 6e 63 65 20 31 39 37 30 20 6f 72 20 69 66 20 6f  nce 1970 or if o
135c0 74 68 65 72 20 6d 6f 64 69 66 69 65 72 73 0a 73  ther modifiers.s
135d0 65 70 61 72 61 74 65 20 74 68 65 20 22 75 6e 69  eparate the "uni
135e0 78 65 70 6f 63 68 22 20 6d 6f 64 69 66 69 65 72  xepoch" modifier
135f0 20 66 72 6f 6d 20 70 72 69 6f 72 20 44 44 44 44   from prior DDDD
13600 44 44 44 44 44 44 20 74 68 65 6e 20 74 68 65 0a  DDDDDD then the.
13610 62 65 68 61 76 69 6f 72 20 69 73 20 75 6e 64 65  behavior is unde
13620 66 69 6e 65 64 2e 0a 44 75 65 20 74 6f 20 70 72  fined..Due to pr
13630 65 63 69 73 69 6f 6e 20 6c 69 6d 69 74 61 74 69  ecision limitati
13640 6f 6e 73 20 69 6d 70 6f 73 65 64 20 62 79 20 74  ons imposed by t
13650 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  he implementatio
13660 6e 73 20 75 73 65 0a 6f 66 20 36 34 2d 62 69 74  ns use.of 64-bit
13670 20 69 6e 74 65 67 65 72 73 2c 20 74 68 65 20 22   integers, the "
13680 75 6e 69 78 65 70 6f 63 68 22 20 6d 6f 64 69 66  unixepoch" modif
13690 69 65 72 20 6f 6e 6c 79 20 77 6f 72 6b 73 20 66  ier only works f
136a0 6f 72 0a 64 61 74 65 73 20 62 65 74 77 65 65 6e  or.dates between
136b0 20 30 30 30 30 2d 30 31 2d 30 31 20 30 30 3a 30   0000-01-01 00:0
136c0 30 3a 30 30 20 61 6e 64 20 35 33 35 32 2d 31 31  0:00 and 5352-11
136d0 2d 30 31 20 31 30 3a 35 32 3a 34 37 20 28 75 6e  -01 10:52:47 (un
136e0 69 78 20 74 69 6d 65 73 0a 6f 66 20 2d 36 32 31  ix times.of -621
136f0 36 37 32 31 39 32 30 30 20 74 68 72 6f 75 67 68  67219200 through
13700 20 31 30 36 37 35 31 39 39 31 36 37 29 2e 3c 2f   10675199167).</
13710 70 3e 0a 0a 3c 70 3e 54 68 65 20 22 6c 6f 63 61  p>..<p>The "loca
13720 6c 74 69 6d 65 22 20 6d 6f 64 69 66 69 65 72 20  ltime" modifier 
13730 28 31 32 29 20 61 73 73 75 6d 65 73 20 74 68 65  (12) assumes the
13740 20 74 69 6d 65 20 73 74 72 69 6e 67 20 74 6f 20   time string to 
13750 69 74 73 20 6c 65 66 74 20 69 73 20 69 6e 0a 55  its left is in.U
13760 6e 69 76 65 72 73 61 6c 20 43 6f 6f 72 64 69 6e  niversal Coordin
13770 61 74 65 64 20 54 69 6d 65 20 28 55 54 43 29 20  ated Time (UTC) 
13780 61 6e 64 20 61 64 6a 75 73 74 73 20 74 68 65 20  and adjusts the 
13790 74 69 6d 65 0a 73 74 72 69 6e 67 20 73 6f 20 74  time.string so t
137a0 68 61 74 20 69 74 20 64 69 73 70 6c 61 79 73 20  hat it displays 
137b0 6c 6f 63 61 6c 74 69 6d 65 2e 20 20 49 66 20 22  localtime.  If "
137c0 6c 6f 63 61 6c 74 69 6d 65 22 0a 66 6f 6c 6c 6f  localtime".follo
137d0 77 73 20 61 20 74 69 6d 65 20 74 68 61 74 20 69  ws a time that i
137e0 73 20 6e 6f 74 20 55 54 43 2c 20 74 68 65 6e 20  s not UTC, then 
137f0 74 68 65 20 62 65 68 61 76 69 6f 72 20 69 73 20  the behavior is 
13800 75 6e 64 65 66 69 6e 65 64 2e 0a 54 68 65 20 22  undefined..The "
13810 75 74 63 22 20 69 73 20 74 68 65 20 6f 70 70 6f  utc" is the oppo
13820 73 69 74 65 20 6f 66 20 22 6c 6f 63 61 6c 74 69  site of "localti
13830 6d 65 22 2e 20 20 22 75 74 63 22 20 61 73 73 75  me".  "utc" assu
13840 6d 65 73 20 74 68 61 74 20 74 68 65 20 73 74 72  mes that the str
13850 69 6e 67 0a 74 6f 20 69 74 73 20 6c 65 66 74 20  ing.to its left 
13860 69 73 20 69 6e 20 74 68 65 20 6c 6f 63 61 6c 20  is in the local 
13870 74 69 6d 65 7a 6f 6e 65 20 61 6e 64 20 61 64 6a  timezone and adj
13880 75 73 74 73 20 74 68 61 74 20 73 74 72 69 6e 67  usts that string
13890 20 74 6f 20 62 65 20 69 6e 20 55 54 43 2e 0a 49   to be in UTC..I
138a0 66 20 74 68 65 20 70 72 69 6f 72 20 73 74 72 69  f the prior stri
138b0 6e 67 20 69 73 20 6e 6f 74 20 69 6e 20 6c 6f 63  ng is not in loc
138c0 61 6c 74 69 6d 65 2c 20 74 68 65 6e 20 74 68 65  altime, then the
138d0 20 72 65 73 75 6c 74 20 6f 66 20 22 75 74 63 22   result of "utc"
138e0 20 69 73 0a 75 6e 64 65 66 69 6e 65 64 2e 3c 2f   is.undefined.</
138f0 70 3e 0a 0a 3c 68 33 3e 45 78 61 6d 70 6c 65 73  p>..<h3>Examples
13900 3c 2f 68 33 3e 0a 0a 3c 70 3e 43 6f 6d 70 75 74  </h3>..<p>Comput
13910 65 20 74 68 65 20 63 75 72 72 65 6e 74 20 64 61  e the current da
13920 74 65 2e 3c 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75  te.<p>..<blockqu
13930 6f 74 65 3e 53 45 4c 45 43 54 20 64 61 74 65 28  ote>SELECT date(
13940 27 6e 6f 77 27 29 3b 3c 2f 62 6c 6f 63 6b 71 75  'now');</blockqu
13950 6f 74 65 3e 0a 0a 3c 70 3e 43 6f 6d 70 75 74 65  ote>..<p>Compute
13960 20 74 68 65 20 6c 61 73 74 20 64 61 79 20 6f 66   the last day of
13970 20 74 68 65 20 63 75 72 72 65 6e 74 20 6d 6f 6e   the current mon
13980 74 68 2e 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71  th.</p>..<blockq
13990 75 6f 74 65 3e 53 45 4c 45 43 54 20 64 61 74 65  uote>SELECT date
139a0 28 27 6e 6f 77 27 2c 27 73 74 61 72 74 20 6f 66  ('now','start of
139b0 20 6d 6f 6e 74 68 27 2c 27 2b 31 20 6d 6f 6e 74   month','+1 mont
139c0 68 27 2c 27 2d 31 20 64 61 79 27 29 3b 0a 3c 2f  h','-1 day');.</
139d0 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70 3e  blockquote>..<p>
139e0 43 6f 6d 70 75 74 65 20 74 68 65 20 64 61 74 65  Compute the date
139f0 20 61 6e 64 20 74 69 6d 65 20 67 69 76 65 6e 20   and time given 
13a00 61 20 75 6e 69 78 20 74 69 6d 65 73 74 61 6d 70  a unix timestamp
13a10 20 31 30 39 32 39 34 31 34 36 36 2e 3c 2f 70 3e   1092941466.</p>
13a20 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 20  ..<blockquote>. 
13a30 20 20 20 53 45 4c 45 43 54 20 64 61 74 65 74 69     SELECT dateti
13a40 6d 65 28 31 30 39 32 39 34 31 34 36 36 2c 20 27  me(1092941466, '
13a50 75 6e 69 78 65 70 6f 63 68 27 29 3b 0a 3c 2f 62  unixepoch');.</b
13a60 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70 3e 43  lockquote>..<p>C
13a70 6f 6d 70 75 74 65 20 74 68 65 20 64 61 74 65 20  ompute the date 
13a80 61 6e 64 20 74 69 6d 65 20 67 69 76 65 6e 20 61  and time given a
13a90 20 75 6e 69 78 20 74 69 6d 65 73 74 61 6d 70 20   unix timestamp 
13aa0 31 30 39 32 39 34 31 34 36 36 2c 20 61 6e 64 20  1092941466, and 
13ab0 0a 63 6f 6d 70 65 6e 73 61 74 65 20 66 6f 72 20  .compensate for 
13ac0 79 6f 75 72 20 6c 6f 63 61 6c 20 74 69 6d 65 7a  your local timez
13ad0 6f 6e 65 2e 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b  one.</p>..<block
13ae0 71 75 6f 74 65 3e 0a 20 20 53 45 4c 45 43 54 20  quote>.  SELECT 
13af0 64 61 74 65 74 69 6d 65 28 31 30 39 32 39 34 31  datetime(1092941
13b00 34 36 36 2c 20 27 75 6e 69 78 65 70 6f 63 68 27  466, 'unixepoch'
13b10 2c 20 27 6c 6f 63 61 6c 74 69 6d 65 27 29 3b 0a  , 'localtime');.
13b20 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c  </blockquote>..<
13b30 70 3e 43 6f 6d 70 75 74 65 20 74 68 65 20 63 75  p>Compute the cu
13b40 72 72 65 6e 74 20 75 6e 69 78 20 74 69 6d 65 73  rrent unix times
13b50 74 61 6d 70 2e 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63  tamp.</p>..<bloc
13b60 6b 71 75 6f 74 65 3e 0a 20 20 53 45 4c 45 43 54  kquote>.  SELECT
13b70 20 73 74 72 66 74 69 6d 65 28 27 25 73 27 2c 27   strftime('%s','
13b80 6e 6f 77 27 29 3b 0a 3c 2f 62 6c 6f 63 6b 71 75  now');.</blockqu
13b90 6f 74 65 3e 0a 0a 3c 70 3e 43 6f 6d 70 75 74 65  ote>..<p>Compute
13ba0 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 64   the number of d
13bb0 61 79 73 20 73 69 6e 63 65 20 74 68 65 20 73 69  ays since the si
13bc0 67 6e 69 6e 67 20 6f 66 20 74 68 65 20 55 53 20  gning of the US 
13bd0 44 65 63 6c 61 72 61 74 69 6f 6e 0a 6f 66 20 49  Declaration.of I
13be0 6e 64 65 70 65 6e 64 65 6e 74 2e 3c 2f 70 3e 0a  ndependent.</p>.
13bf0 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 20 20  .<blockquote>.  
13c00 53 45 4c 45 43 54 20 6a 75 6c 69 61 6e 64 61 79  SELECT julianday
13c10 28 27 6e 6f 77 27 29 20 2d 20 6a 75 6c 69 61 6e  ('now') - julian
13c20 64 61 79 28 27 31 37 37 36 2d 30 37 2d 30 34 27  day('1776-07-04'
13c30 29 3b 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e  );.</blockquote>
13c40 0a 0a 3c 70 3e 43 6f 6d 70 75 74 65 20 74 68 65  ..<p>Compute the
13c50 20 6e 75 6d 62 65 72 20 6f 66 20 73 65 63 6f 6e   number of secon
13c60 64 73 20 73 69 6e 63 65 20 61 20 70 61 72 74 69  ds since a parti
13c70 63 75 6c 61 72 20 6d 6f 6d 65 6e 74 20 69 6e 20  cular moment in 
13c80 32 30 30 34 3a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63  2004:</p>..<bloc
13c90 6b 71 75 6f 74 65 3e 0a 20 20 53 45 4c 45 43 54  kquote>.  SELECT
13ca0 20 73 74 72 66 74 69 6d 65 28 27 25 73 27 2c 27   strftime('%s','
13cb0 6e 6f 77 27 29 20 2d 20 73 74 72 66 74 69 6d 65  now') - strftime
13cc0 28 27 25 73 27 2c 27 32 30 30 34 2d 30 31 2d 30  ('%s','2004-01-0
13cd0 31 20 30 32 3a 33 34 3a 35 36 27 29 3b 0a 3c 2f  1 02:34:56');.</
13ce0 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70 3e  blockquote>..<p>
13cf0 0a 43 6f 6d 70 75 74 65 20 74 68 65 20 64 61 74  .Compute the dat
13d00 65 20 6f 66 20 74 68 65 20 66 69 72 73 74 20 54  e of the first T
13d10 75 65 73 64 61 79 20 69 6e 20 4f 63 74 6f 62 65  uesday in Octobe
13d20 72 0a 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e  r.for the curren
13d30 74 20 79 65 61 72 2e 0a 3c 2f 70 3e 0a 0a 3c 62  t year..</p>..<b
13d40 6c 6f 63 6b 71 75 6f 74 65 3e 0a 20 20 53 45 4c  lockquote>.  SEL
13d50 45 43 54 20 64 61 74 65 28 27 6e 6f 77 27 2c 27  ECT date('now','
13d60 73 74 61 72 74 20 6f 66 20 79 65 61 72 27 2c 27  start of year','
13d70 2b 39 20 6d 6f 6e 74 68 73 27 2c 27 77 65 65 6b  +9 months','week
13d80 64 61 79 20 32 27 29 3b 0a 3c 2f 62 6c 6f 63 6b  day 2');.</block
13d90 71 75 6f 74 65 3e 0a 0a 3c 70 3e 43 6f 6d 70 75  quote>..<p>Compu
13da0 74 65 20 74 68 65 20 74 69 6d 65 20 73 69 6e 63  te the time sinc
13db0 65 20 74 68 65 20 75 6e 69 78 20 65 70 6f 63 68  e the unix epoch
13dc0 20 69 6e 20 73 65 63 6f 6e 64 73 20 0a 28 6c 69   in seconds .(li
13dd0 6b 65 20 73 74 72 66 74 69 6d 65 28 27 25 73 27  ke strftime('%s'
13de0 2c 27 6e 6f 77 27 29 20 65 78 63 65 70 74 20 69  ,'now') except i
13df0 6e 63 6c 75 64 65 73 20 66 72 61 63 74 69 6f 6e  ncludes fraction
13e00 61 6c 20 70 61 72 74 29 3a 3c 2f 70 3e 0a 0a 3c  al part):</p>..<
13e10 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 20 20 53 45  blockquote>.  SE
13e20 4c 45 43 54 20 28 6a 75 6c 69 61 6e 64 61 79 28  LECT (julianday(
13e30 27 6e 6f 77 27 29 20 2d 20 32 34 34 30 35 38 37  'now') - 2440587
13e40 2e 35 29 2a 38 36 34 30 30 2e 30 3b 0a 3c 2f 62  .5)*86400.0;.</b
13e50 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c 68 33 3e  lockquote>..<h3>
13e60 43 61 76 65 61 74 73 20 41 6e 64 20 42 75 67 73  Caveats And Bugs
13e70 3c 2f 68 33 3e 0a 0a 3c 70 3e 54 68 65 20 63 6f  </h3>..<p>The co
13e80 6d 70 75 74 61 74 69 6f 6e 20 6f 66 20 6c 6f 63  mputation of loc
13e90 61 6c 20 74 69 6d 65 20 64 65 70 65 6e 64 73 20  al time depends 
13ea0 68 65 61 76 69 6c 79 20 6f 6e 20 74 68 65 20 77  heavily on the w
13eb0 68 69 6d 20 0a 6f 66 20 70 6f 6c 69 74 69 63 69  him .of politici
13ec0 61 6e 73 20 61 6e 64 20 69 73 20 74 68 75 73 20  ans and is thus 
13ed0 64 69 66 66 69 63 75 6c 74 20 74 6f 20 67 65 74  difficult to get
13ee0 20 63 6f 72 72 65 63 74 20 66 6f 72 20 0a 61 6c   correct for .al
13ef0 6c 20 6c 6f 63 61 6c 65 73 2e 20 49 6e 20 74 68  l locales. In th
13f00 69 73 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  is implementatio
13f10 6e 2c 20 74 68 65 20 73 74 61 6e 64 61 72 64 20  n, the standard 
13f20 43 20 6c 69 62 72 61 72 79 20 0a 66 75 6e 63 74  C library .funct
13f30 69 6f 6e 20 6c 6f 63 61 6c 74 69 6d 65 5f 72 28  ion localtime_r(
13f40 29 20 69 73 20 75 73 65 64 20 74 6f 20 61 73 73  ) is used to ass
13f50 69 73 74 20 69 6e 20 74 68 65 20 63 61 6c 63 75  ist in the calcu
13f60 6c 61 74 69 6f 6e 20 6f 66 20 0a 6c 6f 63 61 6c  lation of .local
13f70 20 74 69 6d 65 2e 20 20 54 68 65 20 0a 6c 6f 63   time.  The .loc
13f80 61 6c 74 69 6d 65 5f 72 28 29 20 43 20 66 75 6e  altime_r() C fun
13f90 63 74 69 6f 6e 20 6e 6f 72 6d 61 6c 6c 79 20 6f  ction normally o
13fa0 6e 6c 79 20 77 6f 72 6b 73 20 66 6f 72 20 79 65  nly works for ye
13fb0 61 72 73 0a 62 65 74 77 65 65 6e 20 31 39 37 30  ars.between 1970
13fc0 20 61 6e 64 20 32 30 33 37 2e 20 46 6f 72 20 64   and 2037. For d
13fd0 61 74 65 73 20 6f 75 74 73 69 64 65 20 74 68 69  ates outside thi
13fe0 73 20 72 61 6e 67 65 2c 20 53 51 4c 69 74 65 20  s range, SQLite 
13ff0 0a 61 74 74 65 6d 70 74 73 20 74 6f 20 6d 61 70  .attempts to map
14000 20 74 68 65 20 79 65 61 72 20 69 6e 74 6f 20 61   the year into a
14010 6e 20 65 71 75 69 76 61 6c 65 6e 74 20 79 65 61  n equivalent yea
14020 72 20 77 69 74 68 69 6e 20 0a 74 68 69 73 20 72  r within .this r
14030 61 6e 67 65 2c 20 64 6f 20 74 68 65 20 63 61 6c  ange, do the cal
14040 63 75 6c 61 74 69 6f 6e 2c 20 74 68 65 6e 20 6d  culation, then m
14050 61 70 20 74 68 65 20 79 65 61 72 20 62 61 63 6b  ap the year back
14060 2e 3c 2f 70 3e 0a 0a 0a 3c 70 3e 54 68 65 73 65  .</p>...<p>These
14070 20 66 75 6e 63 74 69 6f 6e 73 20 6f 6e 6c 79 20   functions only 
14080 77 6f 72 6b 20 66 6f 72 20 64 61 74 65 73 20 62  work for dates b
14090 65 74 77 65 65 6e 20 30 30 30 30 2d 30 31 2d 30  etween 0000-01-0
140a0 31 20 30 30 3a 30 30 3a 30 30 0a 61 6e 64 20 39  1 00:00:00.and 9
140b0 39 39 39 2d 31 32 2d 33 31 20 32 33 3a 35 39 3a  999-12-31 23:59:
140c0 35 39 20 28 6a 75 6c 69 64 61 6e 20 64 61 79 20  59 (julidan day 
140d0 6e 75 6d 62 65 72 73 20 31 37 32 31 30 35 39 2e  numbers 1721059.
140e0 35 20 74 68 72 6f 75 67 68 20 35 33 37 33 34 38  5 through 537348
140f0 34 2e 35 29 2e 0a 46 6f 72 20 64 61 74 65 73 20  4.5)..For dates 
14100 6f 75 74 73 69 64 65 20 74 68 61 74 20 72 61 6e  outside that ran
14110 67 65 2c 20 74 68 65 20 72 65 73 75 6c 74 73 20  ge, the results 
14120 6f 66 20 74 68 65 73 65 0a 66 75 6e 63 74 69 6f  of these.functio
14130 6e 73 20 61 72 65 20 75 6e 64 65 66 69 6e 65 64  ns are undefined
14140 2e 3c 2f 70 3e 0a 0a 3c 70 3e 4e 6f 6e 2d 56 69  .</p>..<p>Non-Vi
14150 73 74 61 20 57 69 6e 64 6f 77 73 20 70 6c 61 74  sta Windows plat
14160 66 6f 72 6d 73 20 6f 6e 6c 79 20 73 75 70 70 6f  forms only suppo
14170 72 74 20 6f 6e 65 20 73 65 74 20 6f 66 20 44 53  rt one set of DS
14180 54 20 72 75 6c 65 73 2e 20 0a 56 69 73 74 61 20  T rules. .Vista 
14190 6f 6e 6c 79 20 73 75 70 70 6f 72 74 73 20 74 77  only supports tw
141a0 6f 2e 20 54 68 65 72 65 66 6f 72 65 2c 20 6f 6e  o. Therefore, on
141b0 20 74 68 65 73 65 20 70 6c 61 74 66 6f 72 6d 73   these platforms
141c0 2c 20 0a 68 69 73 74 6f 72 69 63 61 6c 20 44 53  , .historical DS
141d0 54 20 63 61 6c 63 75 6c 61 74 69 6f 6e 73 20 77  T calculations w
141e0 69 6c 6c 20 62 65 20 69 6e 63 6f 72 72 65 63 74  ill be incorrect
141f0 2e 20 0a 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20  . .For example, 
14200 69 6e 20 74 68 65 20 55 53 2c 20 69 6e 20 32 30  in the US, in 20
14210 30 37 20 74 68 65 20 44 53 54 20 72 75 6c 65 73  07 the DST rules
14220 20 63 68 61 6e 67 65 64 2e 20 0a 4e 6f 6e 2d 56   changed. .Non-V
14230 69 73 74 61 20 57 69 6e 64 6f 77 73 20 70 6c 61  ista Windows pla
14240 74 66 6f 72 6d 73 20 61 70 70 6c 79 20 74 68 65  tforms apply the
14250 20 6e 65 77 20 32 30 30 37 20 44 53 54 20 72 75   new 2007 DST ru
14260 6c 65 73 20 0a 74 6f 20 61 6c 6c 20 70 72 65 76  les .to all prev
14270 69 6f 75 73 20 79 65 61 72 73 20 61 73 20 77 65  ious years as we
14280 6c 6c 2e 20 56 69 73 74 61 20 64 6f 65 73 20 73  ll. Vista does s
14290 6f 6d 65 77 68 61 74 20 62 65 74 74 65 72 0a 67  omewhat better.g
142a0 65 74 74 69 6e 67 20 72 65 73 75 6c 74 73 20 63  etting results c
142b0 6f 72 72 65 63 74 20 62 61 63 6b 20 74 6f 20 31  orrect back to 1
142c0 39 38 36 2c 20 77 68 65 6e 20 74 68 65 20 72 75  986, when the ru
142d0 6c 65 73 20 77 65 72 65 20 61 6c 73 6f 20 63 68  les were also ch
142e0 61 6e 67 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41  anged.</p>..<p>A
142f0 6c 6c 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6d 70  ll internal comp
14300 75 74 61 74 69 6f 6e 73 20 61 73 73 75 6d 65 20  utations assume 
14310 74 68 65 20 0a 5b 68 74 74 70 3a 2f 2f 65 6e 2e  the .[http://en.
14320 77 69 6b 69 70 65 64 69 61 2e 6f 72 67 2f 77 69  wikipedia.org/wi
14330 6b 69 2f 47 72 65 67 6f 72 69 61 6e 5f 63 61 6c  ki/Gregorian_cal
14340 65 6e 64 61 72 20 7c 20 47 72 65 67 6f 72 69 61  endar | Gregoria
14350 6e 20 63 61 6c 65 6e 64 61 72 5d 0a 73 79 73 74  n calendar].syst
14360 65 6d 2e 20 20 49 74 20 69 73 20 61 6c 73 6f 20  em.  It is also 
14370 61 73 73 75 6d 65 64 20 74 68 61 74 20 65 76 65  assumed that eve
14380 72 79 0a 64 61 79 20 69 73 20 65 78 61 63 74 6c  ry.day is exactl
14390 79 20 38 36 34 30 30 20 73 65 63 6f 6e 64 73 20  y 86400 seconds 
143a0 69 6e 20 64 75 72 61 74 69 6f 6e 2e 3c 2f 70 3e  in duration.</p>
143b0 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23  ..<tcl>.########
143c0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
143d0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
143e0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
143f0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14400 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b  ######.Section {
14410 41 67 67 72 65 67 61 74 65 20 46 75 6e 63 74 69  Aggregate Functi
14420 6f 6e 73 7d 20 61 67 67 66 75 6e 63 20 7b 61 67  ons} aggfunc {ag
14430 67 66 75 6e 63 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c  gfunc}.</tcl>..<
14440 70 3e 0a 54 68 65 20 61 67 67 72 65 67 61 74 65  p>.The aggregate
14450 20 66 75 6e 63 74 69 6f 6e 73 20 73 68 6f 77 6e   functions shown
14460 20 62 65 6c 6f 77 20 61 72 65 20 61 76 61 69 6c   below are avail
14470 61 62 6c 65 20 62 79 20 64 65 66 61 75 6c 74 2e  able by default.
14480 20 20 41 64 64 69 74 69 6f 6e 61 6c 0a 61 67 67    Additional.agg
14490 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 73  regate functions
144a0 20 77 72 69 74 74 65 6e 20 69 6e 20 43 20 6d 61   written in C ma
144b0 79 20 62 65 20 61 64 64 65 64 20 75 73 69 6e 67  y be added using
144c0 20 74 68 65 20 0a 5b 73 71 6c 69 74 65 33 5f 63   the .[sqlite3_c
144d0 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 28 29  reate_function()
144e0 5d 3c 2f 61 3e 0a 41 50 49 2e 3c 2f 70 3e 0a 0a  ]</a>.API.</p>..
144f0 3c 70 3e 0a 49 6e 20 61 6e 79 20 61 67 67 72 65  <p>.In any aggre
14500 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 20 74 68  gate function th
14510 61 74 20 74 61 6b 65 73 20 61 20 73 69 6e 67 6c  at takes a singl
14520 65 20 61 72 67 75 6d 65 6e 74 2c 20 74 68 61 74  e argument, that
14530 20 61 72 67 75 6d 65 6e 74 0a 63 61 6e 20 62 65   argument.can be
14540 20 70 72 65 63 65 64 65 64 20 62 79 20 74 68 65   preceded by the
14550 20 6b 65 79 77 6f 72 64 20 44 49 53 54 49 4e 43   keyword DISTINC
14560 54 2e 20 20 49 6e 20 73 75 63 68 20 63 61 73 65  T.  In such case
14570 73 2c 20 64 75 70 6c 69 63 61 74 65 0a 65 6c 65  s, duplicate.ele
14580 6d 65 6e 74 73 20 61 72 65 20 66 69 6c 74 65 72  ments are filter
14590 65 64 20 62 65 66 6f 72 65 20 62 65 69 6e 67 20  ed before being 
145a0 70 61 73 73 65 64 20 69 6e 74 6f 20 74 68 65 20  passed into the 
145b0 61 67 67 72 65 67 61 74 65 20 66 75 6e 63 74 69  aggregate functi
145c0 6f 6e 2e 0a 46 6f 72 20 65 78 61 6d 70 6c 65 2c  on..For example,
145d0 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 22 63   the function "c
145e0 6f 75 6e 74 28 64 69 73 74 69 6e 63 74 20 58 29  ount(distinct X)
145f0 22 20 77 69 6c 6c 20 72 65 74 75 72 6e 20 74 68  " will return th
14600 65 20 6e 75 6d 62 65 72 0a 6f 66 20 64 69 73 74  e number.of dist
14610 69 6e 63 74 20 76 61 6c 75 65 73 20 6f 66 20 63  inct values of c
14620 6f 6c 75 6d 6e 20 58 20 69 6e 73 74 65 61 64 20  olumn X instead 
14630 6f 66 20 74 68 65 20 74 6f 74 61 6c 20 6e 75 6d  of the total num
14640 62 65 72 20 6f 66 20 6e 6f 6e 2d 6e 75 6c 6c 0a  ber of non-null.
14650 76 61 6c 75 65 73 20 69 6e 20 63 6f 6c 75 6d 6e  values in column
14660 20 58 2e 0a 3c 2f 70 3e 0a 0a 3c 74 61 62 6c 65   X..</p>..<table
14670 20 62 6f 72 64 65 72 3d 30 20 63 65 6c 6c 70 61   border=0 cellpa
14680 64 64 69 6e 67 3d 31 30 3e 0a 3c 74 63 6c 3e 0a  dding=10>.<tcl>.
14690 66 75 6e 63 64 65 66 20 7b 61 76 67 28 58 29 7d  funcdef {avg(X)}
146a0 20 7b 7d 20 7b 0a 20 20 52 65 74 75 72 6e 20 74   {} {.  Return t
146b0 68 65 20 61 76 65 72 61 67 65 20 76 61 6c 75 65  he average value
146c0 20 6f 66 20 61 6c 6c 20 6e 6f 6e 2d 4e 55 4c 4c   of all non-NULL
146d0 20 3c 69 3e 58 3c 2f 69 3e 20 77 69 74 68 69 6e   <i>X</i> within
146e0 20 61 0a 20 20 67 72 6f 75 70 2e 20 20 53 74 72   a.  group.  Str
146f0 69 6e 67 20 61 6e 64 20 42 4c 4f 42 20 76 61 6c  ing and BLOB val
14700 75 65 73 20 74 68 61 74 20 64 6f 20 6e 6f 74 20  ues that do not 
14710 6c 6f 6f 6b 20 6c 69 6b 65 20 6e 75 6d 62 65 72  look like number
14720 73 20 61 72 65 0a 20 20 69 6e 74 65 72 70 72 65  s are.  interpre
14730 74 65 64 20 61 73 20 30 2e 0a 20 20 54 68 65 20  ted as 0..  The 
14740 72 65 73 75 6c 74 20 6f 66 20 61 76 67 28 29 20  result of avg() 
14750 69 73 20 61 6c 77 61 79 73 20 61 20 66 6c 6f 61  is always a floa
14760 74 69 6e 67 20 70 6f 69 6e 74 20 76 61 6c 75 65  ting point value
14770 20 61 73 20 6c 6f 6e 67 20 61 73 0a 20 20 61 74   as long as.  at
14780 20 74 68 65 72 65 20 69 73 20 61 74 20 6c 65 61   there is at lea
14790 73 74 20 6f 6e 65 20 6e 6f 6e 2d 4e 55 4c 4c 20  st one non-NULL 
147a0 69 6e 70 75 74 20 65 76 65 6e 20 69 66 20 61 6c  input even if al
147b0 6c 0a 20 20 69 6e 70 75 74 73 20 61 72 65 20 69  l.  inputs are i
147c0 6e 74 65 67 65 72 73 2e 20 20 54 68 65 20 72 65  ntegers.  The re
147d0 73 75 6c 74 20 6f 66 20 61 76 67 28 29 20 69 73  sult of avg() is
147e0 20 4e 55 4c 4c 20 69 66 20 61 6e 64 20 6f 6e 6c   NULL if and onl
147f0 79 20 69 66 0a 20 20 74 68 65 72 65 20 61 72 65  y if.  there are
14800 20 6e 6f 20 6e 6f 6e 2d 4e 55 4c 4c 20 69 6e 70   no non-NULL inp
14810 75 74 73 2e 20 20 0a 7d 0a 0a 66 75 6e 63 64 65  uts.  .}..funcde
14820 66 20 7b 63 6f 75 6e 74 28 58 29 20 63 6f 75 6e  f {count(X) coun
14830 74 28 2a 29 7d 20 7b 7d 20 7b 0a 20 20 54 68 65  t(*)} {} {.  The
14840 20 66 69 72 73 74 20 66 6f 72 6d 20 72 65 74 75   first form retu
14850 72 6e 20 61 20 63 6f 75 6e 74 20 6f 66 20 74 68  rn a count of th
14860 65 20 6e 75 6d 62 65 72 20 6f 66 20 74 69 6d 65  e number of time
14870 73 0a 20 20 74 68 61 74 20 3c 69 3e 58 3c 2f 69  s.  that <i>X</i
14880 3e 20 69 73 20 6e 6f 74 20 4e 55 4c 4c 20 69 6e  > is not NULL in
14890 20 61 20 67 72 6f 75 70 2e 20 20 54 68 65 20 73   a group.  The s
148a0 65 63 6f 6e 64 20 66 6f 72 6d 20 28 77 69 74 68  econd form (with
148b0 20 6e 6f 20 61 72 67 75 6d 65 6e 74 29 0a 20 20   no argument).  
148c0 72 65 74 75 72 6e 73 20 74 68 65 20 74 6f 74 61  returns the tota
148d0 6c 20 6e 75 6d 62 65 72 20 6f 66 20 72 6f 77 73  l number of rows
148e0 20 69 6e 20 74 68 65 20 67 72 6f 75 70 2e 0a 7d   in the group..}
148f0 0a 0a 66 75 6e 63 64 65 66 20 7b 67 72 6f 75 70  ..funcdef {group
14900 5f 63 6f 6e 63 61 74 28 58 29 20 67 72 6f 75 70  _concat(X) group
14910 5f 63 6f 6e 63 61 74 28 58 2c 59 29 7d 20 7b 7d  _concat(X,Y)} {}
14920 20 7b 0a 20 20 54 68 65 20 72 65 73 75 6c 74 20   {.  The result 
14930 69 73 20 61 20 73 74 72 69 6e 67 20 77 68 69 63  is a string whic
14940 68 20 69 73 20 74 68 65 20 63 6f 6e 63 61 74 65  h is the concate
14950 6e 61 74 69 6f 6e 20 6f 66 0a 20 20 61 6c 6c 20  nation of.  all 
14960 6e 6f 6e 2d 4e 55 4c 4c 20 76 61 6c 75 65 73 20  non-NULL values 
14970 6f 66 20 3c 69 3e 58 3c 2f 69 3e 2e 20 20 49 66  of <i>X</i>.  If
14980 20 70 61 72 61 6d 65 74 65 72 20 3c 69 3e 59 3c   parameter <i>Y<
14990 2f 69 3e 20 69 73 20 70 72 65 73 65 6e 74 20 74  /i> is present t
149a0 68 65 6e 0a 20 20 69 73 20 69 73 20 75 73 65 64  hen.  is is used
149b0 20 61 73 20 74 68 65 20 73 65 70 61 72 61 74 6f   as the separato
149c0 72 0a 20 20 62 65 74 77 65 65 6e 20 69 6e 73 74  r.  between inst
149d0 61 6e 63 65 73 20 6f 66 20 3c 69 3e 58 3c 2f 69  ances of <i>X</i
149e0 3e 2e 20 20 41 20 63 6f 6d 6d 61 20 28 22 2c 22  >.  A comma (","
149f0 29 20 69 73 20 75 73 65 64 20 61 73 20 74 68 65  ) is used as the
14a00 20 73 65 70 61 72 61 74 6f 72 0a 20 20 69 66 20   separator.  if 
14a10 3c 69 3e 59 3c 2f 69 3e 20 69 73 20 6f 6d 69 74  <i>Y</i> is omit
14a20 74 65 64 2e 20 20 54 68 65 20 6f 72 64 65 72 20  ted.  The order 
14a30 6f 66 20 74 68 65 20 63 6f 6e 63 61 74 65 6e 61  of the concatena
14a40 74 65 64 20 65 6c 65 6d 65 6e 74 73 20 69 73 0a  ted elements is.
14a50 20 20 61 72 62 69 74 72 61 72 79 2e 0a 7d 0a 0a    arbitrary..}..
14a60 66 75 6e 63 64 65 66 20 7b 6d 61 78 28 58 29 7d  funcdef {max(X)}
14a70 20 7b 6d 61 78 41 67 67 46 75 6e 63 20 61 67 67   {maxAggFunc agg
14a80 5f 6d 61 78 7d 20 7b 0a 20 20 52 65 74 75 72 6e  _max} {.  Return
14a90 20 74 68 65 20 6d 61 78 69 6d 75 6d 20 76 61 6c   the maximum val
14aa0 75 65 20 6f 66 20 61 6c 6c 20 76 61 6c 75 65 73  ue of all values
14ab0 20 69 6e 20 74 68 65 20 67 72 6f 75 70 2e 0a 20   in the group.. 
14ac0 20 54 68 65 20 6d 61 78 69 6d 75 6d 20 76 61 6c   The maximum val
14ad0 75 65 20 69 73 20 74 68 65 20 76 61 6c 75 65 20  ue is the value 
14ae0 74 68 61 74 20 77 6f 75 6c 64 20 62 65 20 72 65  that would be re
14af0 74 75 72 6e 65 64 20 6c 61 73 74 20 69 6e 20 61  turned last in a
14b00 6e 0a 20 20 4f 52 44 45 52 20 42 59 20 6f 6e 20  n.  ORDER BY on 
14b10 74 68 65 20 73 61 6d 65 20 63 6f 6c 75 6d 6e 2e  the same column.
14b20 20 20 4e 55 4c 4c 20 69 73 20 72 65 74 75 72 6e    NULL is return
14b30 65 64 20 69 66 20 61 6e 64 20 6f 6e 6c 79 20 69  ed if and only i
14b40 66 20 74 68 65 72 65 20 61 72 65 0a 20 20 6e 6f  f there are.  no
14b50 20 6e 6f 6e 2d 4e 55 4c 4c 20 76 61 6c 75 65 73   non-NULL values
14b60 20 69 6e 20 74 68 65 20 67 72 6f 75 70 2e 0a 7d   in the group..}
14b70 0a 0a 66 75 6e 63 64 65 66 20 7b 6d 69 6e 28 58  ..funcdef {min(X
14b80 29 7d 20 7b 6d 69 6e 41 67 67 46 75 6e 63 20 61  )} {minAggFunc a
14b90 67 67 5f 6d 69 6e 7d 20 7b 0a 20 20 52 65 74 75  gg_min} {.  Retu
14ba0 72 6e 20 74 68 65 20 6d 69 6e 69 6d 75 6d 20 6e  rn the minimum n
14bb0 6f 6e 2d 4e 55 4c 4c 20 76 61 6c 75 65 20 6f 66  on-NULL value of
14bc0 20 61 6c 6c 20 76 61 6c 75 65 73 20 69 6e 20 74   all values in t
14bd0 68 65 20 67 72 6f 75 70 2e 0a 20 20 54 68 65 20  he group..  The 
14be0 6d 69 6e 69 6d 75 6d 20 76 61 6c 75 65 20 69 73  minimum value is
14bf0 20 74 68 65 20 66 69 72 73 74 20 6e 6f 6e 2d 4e   the first non-N
14c00 55 4c 4c 20 76 61 6c 75 65 20 74 68 61 74 20 77  ULL value that w
14c10 6f 75 6c 64 20 61 70 70 65 61 72 0a 20 20 69 6e  ould appear.  in
14c20 20 61 6e 20 4f 52 44 45 52 20 42 59 20 6f 66 20   an ORDER BY of 
14c30 74 68 65 20 63 6f 6c 75 6d 6e 2e 0a 20 20 4e 55  the column..  NU
14c40 4c 4c 20 69 73 20 6f 6e 6c 79 20 72 65 74 75 72  LL is only retur
14c50 6e 65 64 20 69 66 20 61 6e 64 20 6f 6e 6c 79 20  ned if and only 
14c60 69 66 20 74 68 65 72 65 20 61 72 65 20 6e 6f 20  if there are no 
14c70 6e 6f 6e 2d 4e 55 4c 4c 20 76 61 6c 75 65 73 20  non-NULL values 
14c80 69 6e 20 74 68 65 20 0a 20 20 67 72 6f 75 70 2e  in the .  group.
14c90 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 73 75 6d  .}..funcdef {sum
14ca0 28 58 29 20 74 6f 74 61 6c 28 58 29 7d 20 7b 73  (X) total(X)} {s
14cb0 75 6d 46 75 6e 63 20 73 75 6d 20 74 6f 74 61 6c  umFunc sum total
14cc0 7d 20 7b 0a 20 20 52 65 74 75 72 6e 20 74 68 65  } {.  Return the
14cd0 20 6e 75 6d 65 72 69 63 20 73 75 6d 20 6f 66 20   numeric sum of 
14ce0 61 6c 6c 20 6e 6f 6e 2d 4e 55 4c 4c 20 76 61 6c  all non-NULL val
14cf0 75 65 73 20 69 6e 20 74 68 65 20 67 72 6f 75 70  ues in the group
14d00 2e 0a 20 20 49 66 20 74 68 65 72 65 20 61 72 65  ..  If there are
14d10 20 6e 6f 20 6e 6f 6e 2d 4e 55 4c 4c 20 69 6e 70   no non-NULL inp
14d20 75 74 20 72 6f 77 73 20 74 68 65 6e 20 73 75 6d  ut rows then sum
14d30 28 29 20 72 65 74 75 72 6e 73 0a 20 20 4e 55 4c  () returns.  NUL
14d40 4c 20 62 75 74 20 74 6f 74 61 6c 28 29 20 72 65  L but total() re
14d50 74 75 72 6e 73 20 30 2e 30 2e 0a 20 20 4e 55 4c  turns 0.0..  NUL
14d60 4c 20 69 73 20 6e 6f 74 20 6e 6f 72 6d 61 6c 6c  L is not normall
14d70 79 20 61 20 68 65 6c 70 66 75 6c 20 72 65 73 75  y a helpful resu
14d80 6c 74 20 66 6f 72 20 74 68 65 20 73 75 6d 20 6f  lt for the sum o
14d90 66 20 6e 6f 20 72 6f 77 73 0a 20 20 62 75 74 20  f no rows.  but 
14da0 74 68 65 20 53 51 4c 20 73 74 61 6e 64 61 72 64  the SQL standard
14db0 20 72 65 71 75 69 72 65 73 20 69 74 20 61 6e 64   requires it and
14dc0 20 6d 6f 73 74 20 6f 74 68 65 72 0a 20 20 53 51   most other.  SQ
14dd0 4c 20 64 61 74 61 62 61 73 65 20 65 6e 67 69 6e  L database engin
14de0 65 73 20 69 6d 70 6c 65 6d 65 6e 74 20 73 75 6d  es implement sum
14df0 28 29 20 74 68 61 74 20 77 61 79 20 73 6f 20 53  () that way so S
14e00 51 4c 69 74 65 20 64 6f 65 73 20 69 74 20 69 6e  QLite does it in
14e10 20 74 68 65 0a 20 20 73 61 6d 65 20 77 61 79 20   the.  same way 
14e20 69 6e 20 6f 72 64 65 72 20 74 6f 20 62 65 20 63  in order to be c
14e30 6f 6d 70 61 74 69 62 6c 65 2e 20 20 20 54 68 65  ompatible.   The
14e40 20 6e 6f 6e 2d 73 74 61 6e 64 61 72 64 20 74 6f   non-standard to
14e50 74 61 6c 28 29 20 66 75 6e 63 74 69 6f 6e 0a 20  tal() function. 
14e60 20 69 73 20 70 72 6f 76 69 64 65 64 20 61 73 20   is provided as 
14e70 61 20 63 6f 6e 76 65 6e 69 65 6e 74 20 77 61 79  a convenient way
14e80 20 74 6f 20 77 6f 72 6b 20 61 72 6f 75 6e 64 20   to work around 
14e90 74 68 69 73 20 64 65 73 69 67 6e 20 70 72 6f 62  this design prob
14ea0 6c 65 6d 0a 20 20 69 6e 20 74 68 65 20 53 51 4c  lem.  in the SQL
14eb0 20 6c 61 6e 67 75 61 67 65 2e 3c 2f 70 3e 0a 0a   language.</p>..
14ec0 20 20 3c 70 3e 54 68 65 20 72 65 73 75 6c 74 20    <p>The result 
14ed0 6f 66 20 74 6f 74 61 6c 28 29 20 69 73 20 61 6c  of total() is al
14ee0 77 61 79 73 20 61 20 66 6c 6f 61 74 69 6e 67 20  ways a floating 
14ef0 70 6f 69 6e 74 20 76 61 6c 75 65 2e 0a 20 20 54  point value..  T
14f00 68 65 20 72 65 73 75 6c 74 20 6f 66 20 73 75 6d  he result of sum
14f10 28 29 20 69 73 20 61 6e 20 69 6e 74 65 67 65 72  () is an integer
14f20 20 76 61 6c 75 65 20 69 66 20 61 6c 6c 20 6e 6f   value if all no
14f30 6e 2d 4e 55 4c 4c 20 69 6e 70 75 74 73 20 61 72  n-NULL inputs ar
14f40 65 20 69 6e 74 65 67 65 72 73 2e 0a 20 20 49 66  e integers..  If
14f50 20 61 6e 79 20 69 6e 70 75 74 20 74 6f 20 73 75   any input to su
14f60 6d 28 29 20 69 73 20 6e 65 69 74 68 65 72 20 61  m() is neither a
14f70 6e 20 69 6e 74 65 67 65 72 20 6f 72 20 61 20 4e  n integer or a N
14f80 55 4c 4c 0a 20 20 74 68 65 6e 20 73 75 6d 28 29  ULL.  then sum()
14f90 20 72 65 74 75 72 6e 73 20 61 20 66 6c 6f 61 74   returns a float
14fa0 69 6e 67 20 70 6f 69 6e 74 20 76 61 6c 75 65 0a  ing point value.
14fb0 20 20 77 68 69 63 68 20 6d 69 67 68 74 20 62 65    which might be
14fc0 20 61 6e 20 61 70 70 72 6f 78 69 6d 61 74 69 6f   an approximatio
14fd0 6e 20 74 6f 20 74 68 65 20 74 72 75 65 20 73 75  n to the true su
14fe0 6d 2e 3c 2f 70 3e 0a 0a 20 20 3c 70 3e 53 75 6d  m.</p>..  <p>Sum
14ff0 28 29 20 77 69 6c 6c 20 74 68 72 6f 77 20 61 6e  () will throw an
15000 20 22 69 6e 74 65 67 65 72 20 6f 76 65 72 66 6c   "integer overfl
15010 6f 77 22 20 65 78 63 65 70 74 69 6f 6e 20 69 66  ow" exception if
15020 20 61 6c 6c 20 69 6e 70 75 74 73 0a 20 20 61 72   all inputs.  ar
15030 65 20 69 6e 74 65 67 65 72 73 20 6f 72 20 4e 55  e integers or NU
15040 4c 4c 0a 20 20 61 6e 64 20 61 6e 20 69 6e 74 65  LL.  and an inte
15050 67 65 72 20 6f 76 65 72 66 6c 6f 77 20 6f 63 63  ger overflow occ
15060 75 72 73 20 61 74 20 61 6e 79 20 70 6f 69 6e 74  urs at any point
15070 20 64 75 72 69 6e 67 20 74 68 65 20 63 6f 6d 70   during the comp
15080 75 74 61 74 69 6f 6e 2e 0a 20 20 54 6f 74 61 6c  utation..  Total
15090 28 29 20 6e 65 76 65 72 20 74 68 72 6f 77 73 20  () never throws 
150a0 61 6e 20 69 6e 74 65 67 65 72 20 6f 76 65 72 66  an integer overf
150b0 6c 6f 77 2e 0a 7d 0a 3c 2f 74 63 6c 3e 0a 3c 2f  low..}.</tcl>.</
150c0 74 61 62 6c 65 3e 0a 0a 3c 74 63 6c 3e 0a 23 23  table>..<tcl>.##
150d0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
150e0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
150f0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15100 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15110 23 23 23 23 23 23 23 23 23 23 23 23 0a 53 65 63  ############.Sec
15120 74 69 6f 6e 20 49 4e 53 45 52 54 20 69 6e 73 65  tion INSERT inse
15130 72 74 20 7b 49 4e 53 45 52 54 20 49 4e 53 45 52  rt {INSERT INSER
15140 54 73 7d 0a 0a 42 75 62 62 6c 65 44 69 61 67 72  Ts}..BubbleDiagr
15150 61 6d 20 69 6e 73 65 72 74 2d 73 74 6d 74 20 31  am insert-stmt 1
15160 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20  .</tcl>..<p>The 
15170 49 4e 53 45 52 54 20 73 74 61 74 65 6d 65 6e 74  INSERT statement
15180 20 63 6f 6d 65 73 20 69 6e 20 74 77 6f 20 62 61   comes in two ba
15190 73 69 63 20 66 6f 72 6d 73 2e 20 20 54 68 65 20  sic forms.  The 
151a0 66 69 72 73 74 20 66 6f 72 6d 0a 28 77 69 74 68  first form.(with
151b0 20 74 68 65 20 22 56 41 4c 55 45 53 22 20 6b 65   the "VALUES" ke
151c0 79 77 6f 72 64 29 20 63 72 65 61 74 65 73 20 61  yword) creates a
151d0 20 73 69 6e 67 6c 65 20 6e 65 77 20 72 6f 77 20   single new row 
151e0 69 6e 20 61 6e 20 65 78 69 73 74 69 6e 67 20 74  in an existing t
151f0 61 62 6c 65 2e 0a 49 66 20 6e 6f 20 63 6f 6c 75  able..If no colu
15200 6d 6e 2d 6c 69 73 74 20 69 73 20 73 70 65 63 69  mn-list is speci
15210 66 69 65 64 20 74 68 65 6e 20 74 68 65 20 6e 75  fied then the nu
15220 6d 62 65 72 20 6f 66 20 76 61 6c 75 65 73 20 6d  mber of values m
15230 75 73 74 0a 62 65 20 74 68 65 20 73 61 6d 65 20  ust.be the same 
15240 61 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  as the number of
15250 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65 20   columns in the 
15260 74 61 62 6c 65 2e 20 20 49 66 20 61 20 63 6f 6c  table.  If a col
15270 75 6d 6e 2d 6c 69 73 74 0a 69 73 20 73 70 65 63  umn-list.is spec
15280 69 66 69 65 64 2c 20 74 68 65 6e 20 74 68 65 20  ified, then the 
15290 6e 75 6d 62 65 72 20 6f 66 20 76 61 6c 75 65 73  number of values
152a0 20 6d 75 73 74 20 6d 61 74 63 68 20 74 68 65 20   must match the 
152b0 6e 75 6d 62 65 72 20 6f 66 0a 73 70 65 63 69 66  number of.specif
152c0 69 65 64 20 63 6f 6c 75 6d 6e 73 2e 20 20 43 6f  ied columns.  Co
152d0 6c 75 6d 6e 73 20 6f 66 20 74 68 65 20 74 61 62  lumns of the tab
152e0 6c 65 20 74 68 61 74 20 64 6f 20 6e 6f 74 20 61  le that do not a
152f0 70 70 65 61 72 20 69 6e 20 74 68 65 0a 63 6f 6c  ppear in the.col
15300 75 6d 6e 20 6c 69 73 74 20 61 72 65 20 66 69 6c  umn list are fil
15310 6c 65 64 20 77 69 74 68 20 74 68 65 20 64 65 66  led with the def
15320 61 75 6c 74 20 76 61 6c 75 65 2c 20 6f 72 20 77  ault value, or w
15330 69 74 68 20 4e 55 4c 4c 20 69 66 20 6e 6f 0a 64  ith NULL if no.d
15340 65 66 61 75 6c 74 20 76 61 6c 75 65 20 69 73 20  efault value is 
15350 73 70 65 63 69 66 69 65 64 2e 0a 3c 2f 70 3e 0a  specified..</p>.
15360 0a 3c 70 3e 54 68 65 20 73 65 63 6f 6e 64 20 66  .<p>The second f
15370 6f 72 6d 20 6f 66 20 74 68 65 20 49 4e 53 45 52  orm of the INSER
15380 54 20 73 74 61 74 65 6d 65 6e 74 20 74 61 6b 65  T statement take
15390 73 20 69 74 73 20 64 61 74 61 20 66 72 6f 6d 20  s its data from 
153a0 61 0a 53 45 4c 45 43 54 20 73 74 61 74 65 6d 65  a.SELECT stateme
153b0 6e 74 2e 20 20 54 68 65 20 6e 75 6d 62 65 72 20  nt.  The number 
153c0 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68  of columns in th
153d0 65 20 72 65 73 75 6c 74 20 6f 66 20 74 68 65 0a  e result of the.
153e0 53 45 4c 45 43 54 20 6d 75 73 74 20 65 78 61 63  SELECT must exac
153f0 74 6c 79 20 6d 61 74 63 68 20 74 68 65 20 6e 75  tly match the nu
15400 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20  mber of columns 
15410 69 6e 20 74 68 65 20 74 61 62 6c 65 20 69 66 0a  in the table if.
15420 6e 6f 20 63 6f 6c 75 6d 6e 20 6c 69 73 74 20 69  no column list i
15430 73 20 73 70 65 63 69 66 69 65 64 2c 20 6f 72 20  s specified, or 
15440 69 74 20 6d 75 73 74 20 6d 61 74 63 68 20 74 68  it must match th
15450 65 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75  e number of colu
15460 6d 6e 73 0a 6e 61 6d 65 20 69 6e 20 74 68 65 20  mns.name in the 
15470 63 6f 6c 75 6d 6e 20 6c 69 73 74 2e 20 20 41 20  column list.  A 
15480 6e 65 77 20 65 6e 74 72 79 20 69 73 20 6d 61 64  new entry is mad
15490 65 20 69 6e 20 74 68 65 20 74 61 62 6c 65 0a 66  e in the table.f
154a0 6f 72 20 65 76 65 72 79 20 72 6f 77 20 6f 66 20  or every row of 
154b0 74 68 65 20 53 45 4c 45 43 54 20 72 65 73 75 6c  the SELECT resul
154c0 74 2e 20 20 54 68 65 20 53 45 4c 45 43 54 20 6d  t.  The SELECT m
154d0 61 79 20 62 65 20 73 69 6d 70 6c 65 0a 6f 72 20  ay be simple.or 
154e0 63 6f 6d 70 6f 75 6e 64 2e 3c 2f 70 3e 0a 0a 3c  compound.</p>..<
154f0 70 3e 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20 63  p>The optional c
15500 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65 20 61  onflict-clause a
15510 6c 6c 6f 77 73 20 74 68 65 20 73 70 65 63 69 66  llows the specif
15520 69 63 61 74 69 6f 6e 20 6f 66 20 61 6e 20 61 6c  ication of an al
15530 74 65 72 6e 61 74 69 76 65 0a 63 6f 6e 73 74 72  ternative.constr
15540 61 69 6e 74 20 63 6f 6e 66 6c 69 63 74 20 72 65  aint conflict re
15550 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74  solution algorit
15560 68 6d 20 74 6f 20 75 73 65 20 64 75 72 69 6e 67  hm to use during
15570 20 74 68 69 73 20 6f 6e 65 20 63 6f 6d 6d 61 6e   this one comman
15580 64 2e 0a 53 65 65 20 74 68 65 20 73 65 63 74 69  d..See the secti
15590 6f 6e 20 74 69 74 6c 65 64 0a 5b 4f 4e 20 43 4f  on titled.[ON CO
155a0 4e 46 4c 49 43 54 5d 20 66 6f 72 20 61 64 64 69  NFLICT] for addi
155b0 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69  tional informati
155c0 6f 6e 2e 0a 46 6f 72 20 63 6f 6d 70 61 74 69 62  on..For compatib
155d0 69 6c 69 74 79 20 77 69 74 68 20 4d 79 53 51 4c  ility with MySQL
155e0 2c 20 74 68 65 20 70 61 72 73 65 72 20 61 6c 6c  , the parser all
155f0 6f 77 73 20 74 68 65 20 75 73 65 20 6f 66 20 74  ows the use of t
15600 68 65 0a 73 69 6e 67 6c 65 20 6b 65 79 77 6f 72  he.single keywor
15610 64 20 3c 61 20 68 72 65 66 3d 22 6c 61 6e 67 5f  d <a href="lang_
15620 72 65 70 6c 61 63 65 2e 68 74 6d 6c 22 3e 52 45  replace.html">RE
15630 50 4c 41 43 45 3c 2f 61 3e 20 61 73 20 61 6e 20  PLACE</a> as an 
15640 0a 61 6c 69 61 73 20 66 6f 72 20 22 49 4e 53 45  .alias for "INSE
15650 52 54 20 4f 52 20 52 45 50 4c 41 43 45 22 2e 0a  RT OR REPLACE"..
15660 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 6f 70 74  </p>..<p>The opt
15670 69 6f 6e 61 6c 20 22 3c 69 3e 64 61 74 61 62 61  ional "<i>databa
15680 73 65 2d 6e 61 6d 65 3c 2f 69 3e 3c 62 3e 2e 3c  se-name</i><b>.<
15690 2f 62 3e 22 20 70 72 65 66 69 78 20 6f 6e 20 74  /b>" prefix on t
156a0 68 65 20 3c 69 3e 74 61 62 6c 65 2d 6e 61 6d 65  he <i>table-name
156b0 3c 2f 69 3e 0a 69 73 20 73 75 70 70 6f 72 74 20  </i>.is support 
156c0 66 6f 72 20 74 6f 70 2d 6c 65 76 65 6c 20 49 4e  for top-level IN
156d0 53 45 52 54 20 73 74 61 74 65 6d 65 6e 74 73 20  SERT statements 
156e0 6f 6e 6c 79 2e 20 20 54 68 65 20 74 61 62 6c 65  only.  The table
156f0 20 6e 61 6d 65 20 6d 75 73 74 20 62 65 0a 75 6e   name must be.un
15700 71 75 61 6c 69 66 69 65 64 20 66 6f 72 20 49 4e  qualified for IN
15710 53 45 52 54 20 73 74 61 74 65 6d 65 6e 74 73 20  SERT statements 
15720 74 68 61 74 20 6f 63 63 75 72 20 77 69 74 68 69  that occur withi
15730 6e 20 5b 43 52 45 41 54 45 20 54 52 49 47 47 45  n [CREATE TRIGGE
15740 52 5d 20 73 74 61 74 65 6d 65 6e 74 73 2e 0a 4c  R] statements..L
15750 69 6b 65 6c 79 2c 20 74 68 65 20 22 44 45 46 41  ikely, the "DEFA
15760 55 4c 54 20 56 41 4c 55 45 53 22 20 66 6f 72 6d  ULT VALUES" form
15770 20 6f 66 20 74 68 65 20 49 4e 53 45 52 54 20 73   of the INSERT s
15780 74 61 74 65 6d 65 6e 74 20 69 73 20 73 75 70 70  tatement is supp
15790 6f 72 74 20 66 6f 72 0a 74 6f 70 2d 6c 65 76 65  ort for.top-leve
157a0 6c 20 49 4e 53 45 52 54 20 73 74 61 74 65 6d 65  l INSERT stateme
157b0 6e 74 73 20 6f 6e 6c 79 20 61 6e 64 20 6e 6f 74  nts only and not
157c0 20 66 6f 72 20 49 4e 53 45 52 54 20 73 74 61 74   for INSERT stat
157d0 65 6d 65 6e 74 73 20 77 69 74 68 69 6e 0a 74 72  ements within.tr
157e0 69 67 67 65 72 73 2e 0a 3c 70 3e 0a 0a 3c 74 63  iggers..<p>..<tc
157f0 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23 23  l>.#############
15800 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15810 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15820 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15830 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15840 23 0a 53 65 63 74 69 6f 6e 20 7b 4f 4e 20 43 4f  #.Section {ON CO
15850 4e 46 4c 49 43 54 20 63 6c 61 75 73 65 7d 20 63  NFLICT clause} c
15860 6f 6e 66 6c 69 63 74 20 7b 7b 63 6f 6e 66 6c 69  onflict {{confli
15870 63 74 20 63 6c 61 75 73 65 7d 20 7b 4f 4e 20 43  ct clause} {ON C
15880 4f 4e 46 4c 49 43 54 7d 7d 0a 0a 42 75 62 62 6c  ONFLICT}}..Bubbl
15890 65 44 69 61 67 72 61 6d 20 63 6f 6e 66 6c 69 63  eDiagram conflic
158a0 74 2d 63 6c 61 75 73 65 0a 3c 2f 74 63 6c 3e 0a  t-clause.</tcl>.
158b0 0a 3c 70 3e 54 68 65 20 4f 4e 20 43 4f 4e 46 4c  .<p>The ON CONFL
158c0 49 43 54 20 63 6c 61 75 73 65 20 69 73 20 6e 6f  ICT clause is no
158d0 74 20 61 20 73 65 70 61 72 61 74 65 20 53 51 4c  t a separate SQL
158e0 20 63 6f 6d 6d 61 6e 64 2e 20 20 49 74 20 69 73   command.  It is
158f0 20 61 0a 6e 6f 6e 2d 73 74 61 6e 64 61 72 64 20   a.non-standard 
15900 63 6c 61 75 73 65 20 74 68 61 74 20 63 61 6e 20  clause that can 
15910 61 70 70 65 61 72 20 69 6e 20 6d 61 6e 79 20 6f  appear in many o
15920 74 68 65 72 20 53 51 4c 20 63 6f 6d 6d 61 6e 64  ther SQL command
15930 73 2e 0a 49 74 20 69 73 20 67 69 76 65 6e 20 69  s..It is given i
15940 74 73 20 6f 77 6e 20 73 65 63 74 69 6f 6e 20 69  ts own section i
15950 6e 20 74 68 69 73 20 64 6f 63 75 6d 65 6e 74 20  n this document 
15960 62 65 63 61 75 73 65 20 69 74 20 69 73 20 6e 6f  because it is no
15970 74 0a 70 61 72 74 20 6f 66 20 73 74 61 6e 64 61  t.part of standa
15980 72 64 20 53 51 4c 20 61 6e 64 20 74 68 65 72 65  rd SQL and there
15990 66 6f 72 65 20 6d 69 67 68 74 20 6e 6f 74 20 62  fore might not b
159a0 65 20 66 61 6d 69 6c 69 61 72 2e 3c 2f 70 3e 0a  e familiar.</p>.
159b0 0a 3c 70 3e 54 68 65 20 73 79 6e 74 61 78 20 66  .<p>The syntax f
159c0 6f 72 20 74 68 65 20 4f 4e 20 43 4f 4e 46 4c 49  or the ON CONFLI
159d0 43 54 20 63 6c 61 75 73 65 20 69 73 20 61 73 20  CT clause is as 
159e0 73 68 6f 77 6e 20 61 62 6f 76 65 20 66 6f 72 0a  shown above for.
159f0 74 68 65 20 43 52 45 41 54 45 20 54 41 42 4c 45  the CREATE TABLE
15a00 20 63 6f 6d 6d 61 6e 64 2e 20 20 46 6f 72 20 74   command.  For t
15a10 68 65 20 49 4e 53 45 52 54 20 61 6e 64 0a 55 50  he INSERT and.UP
15a20 44 41 54 45 20 63 6f 6d 6d 61 6e 64 73 2c 20 74  DATE commands, t
15a30 68 65 20 6b 65 79 77 6f 72 64 73 20 22 4f 4e 20  he keywords "ON 
15a40 43 4f 4e 46 4c 49 43 54 22 20 61 72 65 20 72 65  CONFLICT" are re
15a50 70 6c 61 63 65 64 20 62 79 20 22 4f 52 22 2c 20  placed by "OR", 
15a60 74 6f 20 6d 61 6b 65 0a 74 68 65 20 73 79 6e 74  to make.the synt
15a70 61 78 20 73 65 65 6d 20 6d 6f 72 65 20 6e 61 74  ax seem more nat
15a80 75 72 61 6c 2e 20 20 46 6f 72 20 65 78 61 6d 70  ural.  For examp
15a90 6c 65 2c 20 69 6e 73 74 65 61 64 20 6f 66 0a 22  le, instead of."
15aa0 49 4e 53 45 52 54 20 4f 4e 20 43 4f 4e 46 4c 49  INSERT ON CONFLI
15ab0 43 54 20 49 47 4e 4f 52 45 22 20 77 65 20 68 61  CT IGNORE" we ha
15ac0 76 65 20 22 49 4e 53 45 52 54 20 4f 52 20 49 47  ve "INSERT OR IG
15ad0 4e 4f 52 45 22 2e 0a 54 68 65 20 6b 65 79 77 6f  NORE"..The keywo
15ae0 72 64 73 20 63 68 61 6e 67 65 20 62 75 74 20 74  rds change but t
15af0 68 65 20 6d 65 61 6e 69 6e 67 20 6f 66 20 74 68  he meaning of th
15b00 65 20 63 6c 61 75 73 65 20 69 73 20 74 68 65 20  e clause is the 
15b10 73 61 6d 65 0a 65 69 74 68 65 72 20 77 61 79 2e  same.either way.
15b20 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 4f 4e 20  </p>..<p>The ON 
15b30 43 4f 4e 46 4c 49 43 54 20 63 6c 61 75 73 65 20  CONFLICT clause 
15b40 73 70 65 63 69 66 69 65 73 20 61 6e 20 61 6c 67  specifies an alg
15b50 6f 72 69 74 68 6d 20 75 73 65 64 20 74 6f 20 72  orithm used to r
15b60 65 73 6f 6c 76 65 0a 63 6f 6e 73 74 72 61 69 6e  esolve.constrain
15b70 74 20 63 6f 6e 66 6c 69 63 74 73 2e 20 20 54 68  t conflicts.  Th
15b80 65 72 65 20 61 72 65 20 66 69 76 65 20 63 68 6f  ere are five cho
15b90 69 63 65 73 3a 20 52 4f 4c 4c 42 41 43 4b 2c 20  ices: ROLLBACK, 
15ba0 41 42 4f 52 54 2c 0a 46 41 49 4c 2c 20 49 47 4e  ABORT,.FAIL, IGN
15bb0 4f 52 45 2c 20 61 6e 64 20 52 45 50 4c 41 43 45  ORE, and REPLACE
15bc0 2e 20 54 68 65 20 64 65 66 61 75 6c 74 20 61 6c  . The default al
15bd0 67 6f 72 69 74 68 6d 20 69 73 20 41 42 4f 52 54  gorithm is ABORT
15be0 2e 20 20 54 68 69 73 0a 69 73 20 77 68 61 74 20  .  This.is what 
15bf0 74 68 65 79 20 6d 65 61 6e 3a 3c 2f 70 3e 0a 0a  they mean:</p>..
15c00 3c 64 6c 3e 0a 3c 64 74 3e 3c 62 3e 52 4f 4c 4c  <dl>.<dt><b>ROLL
15c10 42 41 43 4b 3c 2f 62 3e 3c 2f 64 74 3e 0a 3c 64  BACK</b></dt>.<d
15c20 64 3e 3c 70 3e 57 68 65 6e 20 61 20 63 6f 6e 73  d><p>When a cons
15c30 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e  traint violation
15c40 20 6f 63 63 75 72 73 2c 20 61 6e 20 69 6d 6d 65   occurs, an imme
15c50 64 69 61 74 65 20 52 4f 4c 4c 42 41 43 4b 0a 6f  diate ROLLBACK.o
15c60 63 63 75 72 73 2c 20 74 68 75 73 20 65 6e 64 69  ccurs, thus endi
15c70 6e 67 20 74 68 65 20 63 75 72 72 65 6e 74 20 74  ng the current t
15c80 72 61 6e 73 61 63 74 69 6f 6e 2c 20 61 6e 64 20  ransaction, and 
15c90 74 68 65 20 63 6f 6d 6d 61 6e 64 20 61 62 6f 72  the command abor
15ca0 74 73 0a 77 69 74 68 20 61 20 72 65 74 75 72 6e  ts.with a return
15cb0 20 63 6f 64 65 20 6f 66 20 53 51 4c 49 54 45 5f   code of SQLITE_
15cc0 43 4f 4e 53 54 52 41 49 4e 54 2e 20 20 49 66 20  CONSTRAINT.  If 
15cd0 6e 6f 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 69  no transaction i
15ce0 73 0a 61 63 74 69 76 65 20 28 6f 74 68 65 72 20  s.active (other 
15cf0 74 68 61 6e 20 74 68 65 20 69 6d 70 6c 69 65 64  than the implied
15d00 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 74 68 61   transaction tha
15d10 74 20 69 73 20 63 72 65 61 74 65 64 20 6f 6e 20  t is created on 
15d20 65 76 65 72 79 0a 63 6f 6d 6d 61 6e 64 29 20 74  every.command) t
15d30 68 65 6e 20 74 68 69 73 20 61 6c 67 6f 72 69 74  hen this algorit
15d40 68 6d 20 77 6f 72 6b 73 20 74 68 65 20 73 61 6d  hm works the sam
15d50 65 20 61 73 20 41 42 4f 52 54 2e 3c 2f 70 3e 3c  e as ABORT.</p><
15d60 2f 64 64 3e 0a 0a 3c 64 74 3e 3c 62 3e 41 42 4f  /dd>..<dt><b>ABO
15d70 52 54 3c 2f 62 3e 3c 2f 64 74 3e 0a 3c 64 64 3e  RT</b></dt>.<dd>
15d80 3c 70 3e 57 68 65 6e 20 61 20 63 6f 6e 73 74 72  <p>When a constr
15d90 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 6f  aint violation o
15da0 63 63 75 72 73 2c 20 74 68 65 20 63 6f 6d 6d 61  ccurs, the comma
15db0 6e 64 20 62 61 63 6b 73 20 6f 75 74 0a 61 6e 79  nd backs out.any
15dc0 20 70 72 69 6f 72 20 63 68 61 6e 67 65 73 20 69   prior changes i
15dd0 74 20 6d 69 67 68 74 20 68 61 76 65 20 6d 61 64  t might have mad
15de0 65 20 61 6e 64 20 61 62 6f 72 74 73 20 77 69 74  e and aborts wit
15df0 68 20 61 20 72 65 74 75 72 6e 20 63 6f 64 65 0a  h a return code.
15e00 6f 66 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52  of SQLITE_CONSTR
15e10 41 49 4e 54 2e 20 20 42 75 74 20 6e 6f 20 52 4f  AINT.  But no RO
15e20 4c 4c 42 41 43 4b 20 69 73 20 65 78 65 63 75 74  LLBACK is execut
15e30 65 64 20 73 6f 20 63 68 61 6e 67 65 73 0a 66 72  ed so changes.fr
15e40 6f 6d 20 70 72 69 6f 72 20 63 6f 6d 6d 61 6e 64  om prior command
15e50 73 20 77 69 74 68 69 6e 20 74 68 65 20 73 61 6d  s within the sam
15e60 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 0a 61 72  e transaction.ar
15e70 65 20 70 72 65 73 65 72 76 65 64 2e 20 20 54 68  e preserved.  Th
15e80 69 73 20 69 73 20 74 68 65 20 64 65 66 61 75 6c  is is the defaul
15e90 74 20 62 65 68 61 76 69 6f 72 2e 3c 2f 70 3e 3c  t behavior.</p><
15ea0 2f 64 64 3e 0a 0a 3c 64 74 3e 3c 62 3e 46 41 49  /dd>..<dt><b>FAI
15eb0 4c 3c 2f 62 3e 3c 2f 64 74 3e 0a 3c 64 64 3e 3c  L</b></dt>.<dd><
15ec0 70 3e 57 68 65 6e 20 61 20 63 6f 6e 73 74 72 61  p>When a constra
15ed0 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 63  int violation oc
15ee0 63 75 72 73 2c 20 74 68 65 20 63 6f 6d 6d 61 6e  curs, the comman
15ef0 64 20 61 62 6f 72 74 73 20 77 69 74 68 20 61 0a  d aborts with a.
15f00 72 65 74 75 72 6e 20 63 6f 64 65 20 53 51 4c 49  return code SQLI
15f10 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 2e 20 20  TE_CONSTRAINT.  
15f20 42 75 74 20 61 6e 79 20 63 68 61 6e 67 65 73 20  But any changes 
15f30 74 6f 20 74 68 65 20 64 61 74 61 62 61 73 65 20  to the database 
15f40 74 68 61 74 0a 74 68 65 20 63 6f 6d 6d 61 6e 64  that.the command
15f50 20 6d 61 64 65 20 70 72 69 6f 72 20 74 6f 20 65   made prior to e
15f60 6e 63 6f 75 6e 74 65 72 69 6e 67 20 74 68 65 20  ncountering the 
15f70 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61  constraint viola
15f80 74 69 6f 6e 0a 61 72 65 20 70 72 65 73 65 72 76  tion.are preserv
15f90 65 64 20 61 6e 64 20 61 72 65 20 6e 6f 74 20 62  ed and are not b
15fa0 61 63 6b 65 64 20 6f 75 74 2e 20 20 46 6f 72 20  acked out.  For 
15fb0 65 78 61 6d 70 6c 65 2c 20 69 66 20 61 6e 20 55  example, if an U
15fc0 50 44 41 54 45 0a 73 74 61 74 65 6d 65 6e 74 20  PDATE.statement 
15fd0 65 6e 63 6f 75 6e 74 65 72 65 64 20 61 20 63 6f  encountered a co
15fe0 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69  nstraint violati
15ff0 6f 6e 20 6f 6e 20 74 68 65 20 31 30 30 74 68 20  on on the 100th 
16000 72 6f 77 20 74 68 61 74 0a 69 74 20 61 74 74 65  row that.it atte
16010 6d 70 74 73 20 74 6f 20 75 70 64 61 74 65 2c 20  mpts to update, 
16020 74 68 65 6e 20 74 68 65 20 66 69 72 73 74 20 39  then the first 9
16030 39 20 72 6f 77 20 63 68 61 6e 67 65 73 20 61 72  9 row changes ar
16040 65 20 70 72 65 73 65 72 76 65 64 0a 62 75 74 20  e preserved.but 
16050 63 68 61 6e 67 65 73 20 74 6f 20 72 6f 77 73 20  changes to rows 
16060 31 30 30 20 61 6e 64 20 62 65 79 6f 6e 64 20 6e  100 and beyond n
16070 65 76 65 72 20 6f 63 63 75 72 2e 3c 2f 70 3e 3c  ever occur.</p><
16080 2f 64 64 3e 0a 0a 3c 64 74 3e 3c 62 3e 49 47 4e  /dd>..<dt><b>IGN
16090 4f 52 45 3c 2f 62 3e 3c 2f 64 74 3e 0a 3c 64 64  ORE</b></dt>.<dd
160a0 3e 3c 70 3e 57 68 65 6e 20 61 20 63 6f 6e 73 74  ><p>When a const
160b0 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20  raint violation 
160c0 6f 63 63 75 72 73 2c 20 74 68 65 20 6f 6e 65 20  occurs, the one 
160d0 72 6f 77 20 74 68 61 74 20 63 6f 6e 74 61 69 6e  row that contain
160e0 73 0a 74 68 65 20 63 6f 6e 73 74 72 61 69 6e 74  s.the constraint
160f0 20 76 69 6f 6c 61 74 69 6f 6e 20 69 73 20 6e 6f   violation is no
16100 74 20 69 6e 73 65 72 74 65 64 20 6f 72 20 63 68  t inserted or ch
16110 61 6e 67 65 64 2e 20 20 42 75 74 20 74 68 65 20  anged.  But the 
16120 63 6f 6d 6d 61 6e 64 0a 63 6f 6e 74 69 6e 75 65  command.continue
16130 73 20 65 78 65 63 75 74 69 6e 67 20 6e 6f 72 6d  s executing norm
16140 61 6c 6c 79 2e 20 20 4f 74 68 65 72 20 72 6f 77  ally.  Other row
16150 73 20 62 65 66 6f 72 65 20 61 6e 64 20 61 66 74  s before and aft
16160 65 72 20 74 68 65 20 72 6f 77 20 74 68 61 74 0a  er the row that.
16170 63 6f 6e 74 61 69 6e 65 64 20 74 68 65 20 63 6f  contained the co
16180 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69  nstraint violati
16190 6f 6e 20 63 6f 6e 74 69 6e 75 65 20 74 6f 20 62  on continue to b
161a0 65 20 69 6e 73 65 72 74 65 64 20 6f 72 20 75 70  e inserted or up
161b0 64 61 74 65 64 0a 6e 6f 72 6d 61 6c 6c 79 2e 20  dated.normally. 
161c0 20 4e 6f 20 65 72 72 6f 72 20 69 73 20 72 65 74   No error is ret
161d0 75 72 6e 65 64 2e 3c 2f 70 3e 3c 2f 64 64 3e 0a  urned.</p></dd>.
161e0 0a 3c 64 74 3e 3c 62 3e 52 45 50 4c 41 43 45 3c  .<dt><b>REPLACE<
161f0 2f 62 3e 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e  /b></dt>.<dd><p>
16200 57 68 65 6e 20 61 20 55 4e 49 51 55 45 20 63 6f  When a UNIQUE co
16210 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69  nstraint violati
16220 6f 6e 20 6f 63 63 75 72 73 2c 20 74 68 65 20 70  on occurs, the p
16230 72 65 2d 65 78 69 73 74 69 6e 67 20 72 6f 77 73  re-existing rows
16240 0a 74 68 61 74 20 61 72 65 20 63 61 75 73 69 6e  .that are causin
16250 67 20 74 68 65 20 63 6f 6e 73 74 72 61 69 6e 74  g the constraint
16260 20 76 69 6f 6c 61 74 69 6f 6e 20 61 72 65 20 72   violation are r
16270 65 6d 6f 76 65 64 20 70 72 69 6f 72 20 74 6f 20  emoved prior to 
16280 69 6e 73 65 72 74 69 6e 67 0a 6f 72 20 75 70 64  inserting.or upd
16290 61 74 69 6e 67 20 74 68 65 20 63 75 72 72 65 6e  ating the curren
162a0 74 20 72 6f 77 2e 20 20 54 68 75 73 20 74 68 65  t row.  Thus the
162b0 20 69 6e 73 65 72 74 20 6f 72 20 75 70 64 61 74   insert or updat
162c0 65 20 61 6c 77 61 79 73 20 6f 63 63 75 72 73 2e  e always occurs.
162d0 0a 54 68 65 20 63 6f 6d 6d 61 6e 64 20 63 6f 6e  .The command con
162e0 74 69 6e 75 65 73 20 65 78 65 63 75 74 69 6e 67  tinues executing
162f0 20 6e 6f 72 6d 61 6c 6c 79 2e 20 20 4e 6f 20 65   normally.  No e
16300 72 72 6f 72 20 69 73 20 72 65 74 75 72 6e 65 64  rror is returned
16310 2e 0a 49 66 20 61 20 4e 4f 54 20 4e 55 4c 4c 20  ..If a NOT NULL 
16320 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61  constraint viola
16330 74 69 6f 6e 20 6f 63 63 75 72 73 2c 20 74 68 65  tion occurs, the
16340 20 4e 55 4c 4c 20 76 61 6c 75 65 20 69 73 20 72   NULL value is r
16350 65 70 6c 61 63 65 64 0a 62 79 20 74 68 65 20 64  eplaced.by the d
16360 65 66 61 75 6c 74 20 76 61 6c 75 65 20 66 6f 72  efault value for
16370 20 74 68 61 74 20 63 6f 6c 75 6d 6e 2e 20 20 49   that column.  I
16380 66 20 74 68 65 20 63 6f 6c 75 6d 6e 20 68 61 73  f the column has
16390 20 6e 6f 20 64 65 66 61 75 6c 74 0a 76 61 6c 75   no default.valu
163a0 65 2c 20 74 68 65 6e 20 74 68 65 20 41 42 4f 52  e, then the ABOR
163b0 54 20 61 6c 67 6f 72 69 74 68 6d 20 69 73 20 75  T algorithm is u
163c0 73 65 64 2e 20 20 49 66 20 61 20 43 48 45 43 4b  sed.  If a CHECK
163d0 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c   constraint viol
163e0 61 74 69 6f 6e 0a 6f 63 63 75 72 73 20 74 68 65  ation.occurs the
163f0 6e 20 74 68 65 20 49 47 4e 4f 52 45 20 61 6c 67  n the IGNORE alg
16400 6f 72 69 74 68 6d 20 69 73 20 75 73 65 64 2e 3c  orithm is used.<
16410 2f 70 3e 0a 0a 3c 70 3e 57 68 65 6e 20 74 68 69  /p>..<p>When thi
16420 73 20 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c  s conflict resol
16430 75 74 69 6f 6e 20 73 74 72 61 74 65 67 79 20 64  ution strategy d
16440 65 6c 65 74 65 73 20 72 6f 77 73 20 69 6e 20 6f  eletes rows in o
16450 72 64 65 72 20 74 6f 0a 73 61 74 69 73 66 79 20  rder to.satisfy 
16460 61 20 63 6f 6e 73 74 72 61 69 6e 74 2c 20 5b 43  a constraint, [C
16470 52 45 41 54 45 20 54 52 49 47 47 45 52 20 7c 20  REATE TRIGGER | 
16480 64 65 6c 65 74 65 20 74 72 69 67 67 65 72 73 5d  delete triggers]
16490 20 6f 6e 6c 79 20 66 69 72 65 20 69 66 0a 5b 72   only fire if.[r
164a0 65 63 75 72 73 69 76 65 5f 74 72 69 67 67 65 72  ecursive_trigger
164b0 73 20 70 72 61 67 6d 61 20 7c 20 72 65 63 75 72  s pragma | recur
164c0 73 69 76 65 20 74 72 69 67 67 65 72 73 5d 20 61  sive triggers] a
164d0 72 65 20 65 6e 61 62 6c 65 64 2e 3c 2f 70 3e 0a  re enabled.</p>.
164e0 0a 3c 70 3e 54 68 65 20 5b 73 71 6c 69 74 65 33  .<p>The [sqlite3
164f0 5f 75 70 64 61 74 65 5f 68 6f 6f 6b 20 7c 20 75  _update_hook | u
16500 70 64 61 74 65 20 68 6f 6f 6b 5d 20 69 73 20 6e  pdate hook] is n
16510 6f 74 20 69 6e 76 6f 6b 65 64 20 66 6f 72 20 72  ot invoked for r
16520 6f 77 73 20 74 68 61 74 0a 61 72 65 20 64 65 6c  ows that.are del
16530 65 74 65 64 20 62 79 20 61 6e 20 4f 52 20 52 45  eted by an OR RE
16540 50 4c 41 43 45 20 72 65 73 6f 6c 75 74 69 6f 6e  PLACE resolution
16550 2e 20 20 4e 6f 72 20 69 73 20 74 68 65 20 0a 5b  .  Nor is the .[
16560 73 71 6c 69 74 65 33 5f 63 68 61 6e 67 65 73 20  sqlite3_changes 
16570 7c 20 63 68 61 6e 67 65 20 63 6f 75 6e 74 65 72  | change counter
16580 5d 20 69 6e 63 72 65 6d 65 6e 74 65 64 2e 0a 54  ] incremented..T
16590 68 65 20 65 78 63 65 70 74 69 6f 6e 61 6c 20 62  he exceptional b
165a0 65 68 61 76 69 6f 72 73 20 64 65 66 69 6e 65 64  ehaviors defined
165b0 20 69 6e 20 74 68 69 73 20 70 61 72 61 67 72 61   in this paragra
165c0 70 68 20 6d 69 67 68 74 20 63 68 61 6e 67 65 20  ph might change 
165d0 0a 69 6e 20 61 20 66 75 74 75 72 65 20 72 65 6c  .in a future rel
165e0 65 61 73 65 2e 3c 2f 70 3e 0a 3c 2f 64 6c 3e 0a  ease.</p>.</dl>.
165f0 0a 3c 70 3e 54 68 65 20 61 6c 67 6f 72 69 74 68  .<p>The algorith
16600 6d 20 73 70 65 63 69 66 69 65 64 20 69 6e 20 74  m specified in t
16610 68 65 20 4f 52 20 63 6c 61 75 73 65 20 6f 66 20  he OR clause of 
16620 61 20 49 4e 53 45 52 54 20 6f 72 20 55 50 44 41  a INSERT or UPDA
16630 54 45 0a 6f 76 65 72 72 69 64 65 73 20 61 6e 79  TE.overrides any
16640 20 61 6c 67 6f 72 69 74 68 6d 20 73 70 65 63 69   algorithm speci
16650 66 69 65 64 20 69 6e 20 61 20 43 52 45 41 54 45  fied in a CREATE
16660 20 54 41 42 4c 45 2e 0a 49 66 20 6e 6f 20 61 6c   TABLE..If no al
16670 67 6f 72 69 74 68 6d 20 69 73 20 73 70 65 63 69  gorithm is speci
16680 66 69 65 64 20 61 6e 79 77 68 65 72 65 2c 20 74  fied anywhere, t
16690 68 65 20 41 42 4f 52 54 20 61 6c 67 6f 72 69 74  he ABORT algorit
166a0 68 6d 20 69 73 20 75 73 65 64 2e 3c 2f 70 3e 0a  hm is used.</p>.
166b0 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23  .<tcl>.#########
166c0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
166d0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
166e0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
166f0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
16700 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 52 45  #####.Section RE
16710 49 4e 44 45 58 20 72 65 69 6e 64 65 78 20 52 45  INDEX reindex RE
16720 49 4e 44 45 58 0a 0a 42 75 62 62 6c 65 44 69 61  INDEX..BubbleDia
16730 67 72 61 6d 20 72 65 69 6e 64 65 78 2d 73 74 6d  gram reindex-stm
16740 74 20 31 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54  t 1.</tcl>..<p>T
16750 68 65 20 52 45 49 4e 44 45 58 20 63 6f 6d 6d 61  he REINDEX comma
16760 6e 64 20 69 73 20 75 73 65 64 20 74 6f 20 64 65  nd is used to de
16770 6c 65 74 65 20 61 6e 64 20 72 65 63 72 65 61 74  lete and recreat
16780 65 20 69 6e 64 69 63 65 73 20 66 72 6f 6d 20 73  e indices from s
16790 63 72 61 74 63 68 2e 0a 54 68 69 73 20 69 73 20  cratch..This is 
167a0 75 73 65 66 75 6c 20 77 68 65 6e 20 74 68 65 20  useful when the 
167b0 64 65 66 69 6e 69 74 69 6f 6e 20 6f 66 20 61 20  definition of a 
167c0 63 6f 6c 6c 61 74 69 6f 6e 20 73 65 71 75 65 6e  collation sequen
167d0 63 65 20 68 61 73 20 63 68 61 6e 67 65 64 2e 0a  ce has changed..
167e0 3c 2f 70 3e 0a 0a 3c 70 3e 49 6e 20 74 68 65 20  </p>..<p>In the 
167f0 66 69 72 73 74 20 66 6f 72 6d 2c 20 61 6c 6c 20  first form, all 
16800 69 6e 64 69 63 65 73 20 69 6e 20 61 6c 6c 20 61  indices in all a
16810 74 74 61 63 68 65 64 20 64 61 74 61 62 61 73 65  ttached database
16820 73 20 74 68 61 74 20 75 73 65 20 74 68 65 0a 6e  s that use the.n
16830 61 6d 65 64 20 63 6f 6c 6c 61 74 69 6f 6e 20 73  amed collation s
16840 65 71 75 65 6e 63 65 20 61 72 65 20 72 65 63 72  equence are recr
16850 65 61 74 65 64 2e 20 49 6e 20 74 68 65 20 73 65  eated. In the se
16860 63 6f 6e 64 20 66 6f 72 6d 2c 20 69 66 20 0a 3c  cond form, if .<
16870 69 3e 26 23 39 31 3b 64 61 74 61 62 61 73 65 2d  i>&#91;database-
16880 6e 61 6d 65 2e 26 23 39 33 3b 74 61 62 6c 65 2f  name.&#93;table/
16890 69 6e 64 65 78 2d 6e 61 6d 65 3c 2f 69 3e 20 69  index-name</i> i
168a0 64 65 6e 74 69 66 69 65 73 20 61 20 74 61 62 6c  dentifies a tabl
168b0 65 2c 0a 74 68 65 6e 20 61 6c 6c 20 69 6e 64 69  e,.then all indi
168c0 63 65 73 0a 61 73 73 6f 63 69 61 74 65 64 20 77  ces.associated w
168d0 69 74 68 20 74 68 65 20 74 61 62 6c 65 20 61 72  ith the table ar
168e0 65 20 72 65 62 75 69 6c 74 2e 20 49 66 20 61 6e  e rebuilt. If an
168f0 20 69 6e 64 65 78 20 69 73 20 69 64 65 6e 74 69   index is identi
16900 66 69 65 64 2c 20 74 68 65 6e 20 6f 6e 6c 79 0a  fied, then only.
16910 74 68 69 73 20 73 70 65 63 69 66 69 63 20 69 6e  this specific in
16920 64 65 78 20 69 73 20 64 65 6c 65 74 65 64 20 61  dex is deleted a
16930 6e 64 20 72 65 63 72 65 61 74 65 64 2e 0a 3c 2f  nd recreated..</
16940 70 3e 0a 0a 3c 70 3e 49 66 20 6e 6f 20 3c 69 3e  p>..<p>If no <i>
16950 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3c 2f 69  database-name</i
16960 3e 20 69 73 20 73 70 65 63 69 66 69 65 64 20 61  > is specified a
16970 6e 64 20 74 68 65 72 65 20 65 78 69 73 74 73 20  nd there exists 
16980 62 6f 74 68 20 61 20 74 61 62 6c 65 20 6f 72 0a  both a table or.
16990 69 6e 64 65 78 20 61 6e 64 20 61 20 63 6f 6c 6c  index and a coll
169a0 61 74 69 6f 6e 20 73 65 71 75 65 6e 63 65 20 6f  ation sequence o
169b0 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  f the specified 
169c0 6e 61 6d 65 2c 20 74 68 65 6e 20 69 6e 64 69 63  name, then indic
169d0 65 73 20 61 73 73 6f 63 69 61 74 65 64 0a 77 69  es associated.wi
169e0 74 68 20 74 68 65 20 63 6f 6c 6c 61 74 69 6f 6e  th the collation
169f0 20 73 65 71 75 65 6e 63 65 20 6f 6e 6c 79 20 61   sequence only a
16a00 72 65 20 72 65 63 6f 6e 73 74 72 75 63 74 65 64  re reconstructed
16a10 2e 20 54 68 69 73 20 61 6d 62 69 67 75 69 74 79  . This ambiguity
16a20 20 6d 61 79 20 62 65 0a 64 69 73 70 65 6c 6c 65   may be.dispelle
16a30 64 20 62 79 20 61 6c 77 61 79 73 20 73 70 65 63  d by always spec
16a40 69 66 79 69 6e 67 20 61 20 3c 69 3e 64 61 74 61  ifying a <i>data
16a50 62 61 73 65 2d 6e 61 6d 65 3c 2f 69 3e 20 77 68  base-name</i> wh
16a60 65 6e 20 72 65 69 6e 64 65 78 69 6e 67 20 61 0a  en reindexing a.
16a70 73 70 65 63 69 66 69 63 20 74 61 62 6c 65 20 6f  specific table o
16a80 72 20 69 6e 64 65 78 2e 0a 0a 3c 74 63 6c 3e 0a  r index...<tcl>.
16a90 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
16aa0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
16ab0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
16ac0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
16ad0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a  ###############.
16ae0 53 65 63 74 69 6f 6e 20 52 45 50 4c 41 43 45 20  Section REPLACE 
16af0 72 65 70 6c 61 63 65 20 52 45 50 4c 41 43 45 0a  replace REPLACE.
16b00 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20  .</tcl>..<p>The 
16b10 52 45 50 4c 41 43 45 20 63 6f 6d 6d 61 6e 64 20  REPLACE command 
16b20 69 73 20 61 6e 20 61 6c 69 61 73 20 66 6f 72 20  is an alias for 
16b30 74 68 65 20 22 5b 4f 4e 20 43 4f 4e 46 4c 49 43  the "[ON CONFLIC
16b40 54 20 7c 20 49 4e 53 45 52 54 20 4f 52 20 52 45  T | INSERT OR RE
16b50 50 4c 41 43 45 5d 22 0a 76 61 72 69 61 6e 74 20  PLACE]".variant 
16b60 6f 66 20 74 68 65 20 5b 49 4e 53 45 52 54 5d 20  of the [INSERT] 
16b70 63 6f 6d 6d 61 6e 64 2e 20 20 0a 54 68 69 73 20  command.  .This 
16b80 61 6c 69 61 73 20 69 73 20 70 72 6f 76 69 64 65  alias is provide
16b90 64 20 66 6f 72 20 63 6f 6d 70 61 74 69 62 69 6c  d for compatibil
16ba0 69 74 79 20 6f 74 68 65 72 20 53 51 4c 20 64 61  ity other SQL da
16bb0 74 61 62 61 73 65 20 65 6e 67 69 6e 65 73 2e 20  tabase engines. 
16bc0 20 53 65 65 20 74 68 65 20 0a 5b 49 4e 53 45 52   See the .[INSER
16bd0 54 5d 20 63 6f 6d 6d 61 6e 64 20 64 6f 63 75 6d  T] command docum
16be0 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 61 64 64  entation for add
16bf0 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74  itional informat
16c00 69 6f 6e 2e 3c 2f 70 3e 20 20 0a 0a 3c 74 63 6c  ion.</p>  ..<tcl
16c10 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23  >.##############
16c20 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
16c30 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
16c40 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
16c50 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
16c60 23 0a 53 65 63 74 69 6f 6e 20 53 45 4c 45 43 54  #.Section SELECT
16c70 20 73 65 6c 65 63 74 20 7b 53 45 4c 45 43 54 20   select {SELECT 
16c80 71 75 65 72 79 7d 0a 0a 42 75 62 62 6c 65 44 69  query}..BubbleDi
16c90 61 67 72 61 6d 20 73 65 6c 65 63 74 2d 73 74 6d  agram select-stm
16ca0 74 20 31 0a 42 75 62 62 6c 65 44 69 61 67 72 61  t 1.BubbleDiagra
16cb0 6d 20 73 65 6c 65 63 74 2d 63 6f 72 65 0a 42 75  m select-core.Bu
16cc0 62 62 6c 65 44 69 61 67 72 61 6d 20 72 65 73 75  bbleDiagram resu
16cd0 6c 74 2d 63 6f 6c 75 6d 6e 0a 42 75 62 62 6c 65  lt-column.Bubble
16ce0 44 69 61 67 72 61 6d 20 6a 6f 69 6e 2d 73 6f 75  Diagram join-sou
16cf0 72 63 65 0a 42 75 62 62 6c 65 44 69 61 67 72 61  rce.BubbleDiagra
16d00 6d 20 73 69 6e 67 6c 65 2d 73 6f 75 72 63 65 0a  m single-source.
16d10 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 6a 6f  BubbleDiagram jo
16d20 69 6e 2d 6f 70 0a 42 75 62 62 6c 65 44 69 61 67  in-op.BubbleDiag
16d30 72 61 6d 20 6a 6f 69 6e 2d 63 6f 6e 73 74 72 61  ram join-constra
16d40 69 6e 74 0a 42 75 62 62 6c 65 44 69 61 67 72 61  int.BubbleDiagra
16d50 6d 20 6f 72 64 65 72 69 6e 67 2d 74 65 72 6d 0a  m ordering-term.
16d60 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 63 6f  BubbleDiagram co
16d70 6d 70 6f 75 6e 64 2d 6f 70 65 72 61 74 6f 72 0a  mpound-operator.
16d80 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20 53  </tcl>..<p>The S
16d90 45 4c 45 43 54 20 73 74 61 74 65 6d 65 6e 74 20  ELECT statement 
16da0 69 73 20 75 73 65 64 20 74 6f 20 71 75 65 72 79  is used to query
16db0 20 74 68 65 20 64 61 74 61 62 61 73 65 2e 20 20   the database.  
16dc0 54 68 65 0a 72 65 73 75 6c 74 20 6f 66 20 61 20  The.result of a 
16dd0 53 45 4c 45 43 54 20 69 73 20 7a 65 72 6f 20 6f  SELECT is zero o
16de0 72 20 6d 6f 72 65 20 72 6f 77 73 20 6f 66 20 64  r more rows of d
16df0 61 74 61 20 77 68 65 72 65 20 65 61 63 68 20 72  ata where each r
16e00 6f 77 0a 68 61 73 20 61 20 66 69 78 65 64 20 6e  ow.has a fixed n
16e10 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73  umber of columns
16e20 2e 20 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66  .  The number of
16e30 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65 0a   columns in the.
16e40 72 65 73 75 6c 74 20 69 73 20 73 70 65 63 69 66  result is specif
16e50 69 65 64 20 62 79 20 74 68 65 20 65 78 70 72 65  ied by the expre
16e60 73 73 69 6f 6e 20 6c 69 73 74 20 69 6e 20 62 65  ssion list in be
16e70 74 77 65 65 6e 20 74 68 65 0a 53 45 4c 45 43 54  tween the.SELECT
16e80 20 61 6e 64 20 46 52 4f 4d 20 6b 65 79 77 6f 72   and FROM keywor
16e90 64 73 2e 20 20 41 6e 79 20 61 72 62 69 74 72 61  ds.  Any arbitra
16ea0 72 79 20 65 78 70 72 65 73 73 69 6f 6e 20 63 61  ry expression ca
16eb0 6e 20 62 65 20 75 73 65 64 0a 61 73 20 61 20 72  n be used.as a r
16ec0 65 73 75 6c 74 2e 20 20 49 66 20 61 20 72 65 73  esult.  If a res
16ed0 75 6c 74 20 65 78 70 72 65 73 73 69 6f 6e 20 69  ult expression i
16ee0 73 20 7d 0a 68 64 5f 70 75 74 73 20 22 5b 4f 70  s }.hd_puts "[Op
16ef0 65 72 61 74 6f 72 20 2a 5d 20 74 68 65 6e 20 61  erator *] then a
16f00 6c 6c 20 63 6f 6c 75 6d 6e 73 20 6f 66 20 61 6c  ll columns of al
16f10 6c 20 74 61 62 6c 65 73 20 61 72 65 20 73 75 62  l tables are sub
16f20 73 74 69 74 75 74 65 64 5c 6e 22 0a 68 64 5f 70  stituted\n".hd_p
16f30 75 74 73 20 22 66 6f 72 20 74 68 61 74 20 6f 6e  uts "for that on
16f40 65 20 65 78 70 72 65 73 73 69 6f 6e 2e 20 20 49  e expression.  I
16f50 66 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e  f the expression
16f60 20 69 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 5c   is the name of\
16f70 6e 22 0a 68 64 5f 70 75 74 73 20 22 61 20 74 61  n".hd_puts "a ta
16f80 62 6c 65 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20  ble followed by 
16f90 5b 4f 70 65 72 61 74 6f 72 20 2e 2a 5d 20 74 68  [Operator .*] th
16fa0 65 6e 20 74 68 65 20 72 65 73 75 6c 74 20 69 73  en the result is
16fb0 20 61 6c 6c 20 63 6f 6c 75 6d 6e 73 5c 6e 22 0a   all columns\n".
16fc0 68 64 5f 70 75 74 73 20 7b 69 6e 20 74 68 61 74  hd_puts {in that
16fd0 20 6f 6e 65 20 74 61 62 6c 65 2e 3c 2f 70 3e 0a   one table.</p>.
16fe0 0a 3c 70 3e 54 68 65 20 44 49 53 54 49 4e 43 54  .<p>The DISTINCT
16ff0 20 6b 65 79 77 6f 72 64 20 63 61 75 73 65 73 20   keyword causes 
17000 61 20 73 75 62 73 65 74 20 6f 66 20 72 65 73 75  a subset of resu
17010 6c 74 20 72 6f 77 73 20 74 6f 20 62 65 20 72 65  lt rows to be re
17020 74 75 72 6e 65 64 2c 20 0a 69 6e 20 77 68 69 63  turned, .in whic
17030 68 20 65 61 63 68 20 72 65 73 75 6c 74 20 72 6f  h each result ro
17040 77 20 69 73 20 64 69 66 66 65 72 65 6e 74 2e 20  w is different. 
17050 20 4e 55 4c 4c 20 76 61 6c 75 65 73 20 61 72 65   NULL values are
17060 20 6e 6f 74 20 74 72 65 61 74 65 64 20 61 73 20   not treated as 
17070 0a 64 69 73 74 69 6e 63 74 20 66 72 6f 6d 20 65  .distinct from e
17080 61 63 68 20 6f 74 68 65 72 2e 20 20 54 68 65 20  ach other.  The 
17090 64 65 66 61 75 6c 74 20 62 65 68 61 76 69 6f 72  default behavior
170a0 20 69 73 20 74 68 61 74 20 61 6c 6c 20 72 65 73   is that all res
170b0 75 6c 74 20 72 6f 77 73 20 0a 62 65 20 72 65 74  ult rows .be ret
170c0 75 72 6e 65 64 2c 20 77 68 69 63 68 20 63 61 6e  urned, which can
170d0 20 62 65 20 6d 61 64 65 20 65 78 70 6c 69 63 69   be made explici
170e0 74 20 77 69 74 68 20 74 68 65 20 6b 65 79 77 6f  t with the keywo
170f0 72 64 20 41 4c 4c 2e 3c 2f 70 3e 0a 0a 3c 70 3e  rd ALL.</p>..<p>
17100 54 68 65 20 71 75 65 72 79 20 69 73 20 65 78 65  The query is exe
17110 63 75 74 65 64 20 61 67 61 69 6e 73 74 20 6f 6e  cuted against on
17120 65 20 6f 72 20 6d 6f 72 65 20 74 61 62 6c 65 73  e or more tables
17130 20 73 70 65 63 69 66 69 65 64 20 61 66 74 65 72   specified after
17140 0a 74 68 65 20 46 52 4f 4d 20 6b 65 79 77 6f 72  .the FROM keywor
17150 64 2e 20 20 49 66 20 6d 75 6c 74 69 70 6c 65 20  d.  If multiple 
17160 74 61 62 6c 65 73 20 6e 61 6d 65 73 20 61 72 65  tables names are
17170 20 73 65 70 61 72 61 74 65 64 20 62 79 20 63 6f   separated by co
17180 6d 6d 61 73 2c 0a 74 68 65 6e 20 74 68 65 20 71  mmas,.then the q
17190 75 65 72 79 20 69 73 20 61 67 61 69 6e 73 74 20  uery is against 
171a0 74 68 65 20 63 72 6f 73 73 20 6a 6f 69 6e 20 6f  the cross join o
171b0 66 20 74 68 65 20 76 61 72 69 6f 75 73 20 74 61  f the various ta
171c0 62 6c 65 73 2e 0a 54 68 65 20 66 75 6c 6c 20 53  bles..The full S
171d0 51 4c 2d 39 32 20 6a 6f 69 6e 20 73 79 6e 74 61  QL-92 join synta
171e0 78 20 63 61 6e 20 61 6c 73 6f 20 62 65 20 75 73  x can also be us
171f0 65 64 20 74 6f 20 73 70 65 63 69 66 79 20 6a 6f  ed to specify jo
17200 69 6e 73 2e 0a 41 20 73 75 62 2d 71 75 65 72 79  ins..A sub-query
17210 0a 69 6e 20 70 61 72 65 6e 74 68 65 73 65 73 20  .in parentheses 
17220 6d 61 79 20 62 65 20 73 75 62 73 74 69 74 75 74  may be substitut
17230 65 64 20 66 6f 72 20 61 6e 79 20 74 61 62 6c 65  ed for any table
17240 20 6e 61 6d 65 20 69 6e 20 74 68 65 20 46 52 4f   name in the FRO
17250 4d 20 63 6c 61 75 73 65 2e 0a 54 68 65 20 65 6e  M clause..The en
17260 74 69 72 65 20 46 52 4f 4d 20 63 6c 61 75 73 65  tire FROM clause
17270 20 6d 61 79 20 62 65 20 6f 6d 69 74 74 65 64 2c   may be omitted,
17280 20 69 6e 20 77 68 69 63 68 20 63 61 73 65 20 74   in which case t
17290 68 65 20 72 65 73 75 6c 74 20 69 73 20 61 0a 73  he result is a.s
172a0 69 6e 67 6c 65 20 72 6f 77 20 63 6f 6e 73 69 73  ingle row consis
172b0 74 69 6e 67 20 6f 66 20 74 68 65 20 76 61 6c 75  ting of the valu
172c0 65 73 20 6f 66 20 74 68 65 20 65 78 70 72 65 73  es of the expres
172d0 73 69 6f 6e 20 6c 69 73 74 2e 0a 3c 2f 70 3e 0a  sion list..</p>.
172e0 0a 3c 70 3e 54 68 65 20 57 48 45 52 45 20 63 6c  .<p>The WHERE cl
172f0 61 75 73 65 20 63 61 6e 20 62 65 20 75 73 65 64  ause can be used
17300 20 74 6f 20 6c 69 6d 69 74 20 74 68 65 20 6e 75   to limit the nu
17310 6d 62 65 72 20 6f 66 20 72 6f 77 73 20 6f 76 65  mber of rows ove
17320 72 0a 77 68 69 63 68 20 74 68 65 20 71 75 65 72  r.which the quer
17330 79 20 6f 70 65 72 61 74 65 73 2e 3c 2f 70 3e 0a  y operates.</p>.
17340 0a 3c 70 3e 54 68 65 20 47 52 4f 55 50 20 42 59  .<p>The GROUP BY
17350 20 63 6c 61 75 73 65 20 63 61 75 73 65 73 20 6f   clause causes o
17360 6e 65 20 6f 72 20 6d 6f 72 65 20 72 6f 77 73 20  ne or more rows 
17370 6f 66 20 74 68 65 20 72 65 73 75 6c 74 20 74 6f  of the result to
17380 0a 62 65 20 63 6f 6d 62 69 6e 65 64 20 69 6e 74  .be combined int
17390 6f 20 61 20 73 69 6e 67 6c 65 20 72 6f 77 20 6f  o a single row o
173a0 66 20 6f 75 74 70 75 74 2e 20 20 54 68 69 73 20  f output.  This 
173b0 69 73 20 65 73 70 65 63 69 61 6c 6c 79 20 75 73  is especially us
173c0 65 66 75 6c 0a 77 68 65 6e 20 74 68 65 20 72 65  eful.when the re
173d0 73 75 6c 74 20 63 6f 6e 74 61 69 6e 73 20 61 67  sult contains ag
173e0 67 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e  gregate function
173f0 73 2e 20 20 54 68 65 20 65 78 70 72 65 73 73 69  s.  The expressi
17400 6f 6e 73 20 69 6e 0a 74 68 65 20 47 52 4f 55 50  ons in.the GROUP
17410 20 42 59 20 63 6c 61 75 73 65 20 64 6f 20 3c 65   BY clause do <e
17420 6d 3e 6e 6f 74 3c 2f 65 6d 3e 20 68 61 76 65 20  m>not</em> have 
17430 74 6f 20 62 65 20 65 78 70 72 65 73 73 69 6f 6e  to be expression
17440 73 20 74 68 61 74 0a 61 70 70 65 61 72 20 69 6e  s that.appear in
17450 20 74 68 65 20 72 65 73 75 6c 74 2e 20 20 54 68   the result.  Th
17460 65 20 48 41 56 49 4e 47 20 63 6c 61 75 73 65 20  e HAVING clause 
17470 69 73 20 73 69 6d 69 6c 61 72 20 74 6f 20 57 48  is similar to WH
17480 45 52 45 20 65 78 63 65 70 74 0a 74 68 61 74 20  ERE except.that 
17490 48 41 56 49 4e 47 20 61 70 70 6c 69 65 73 20 61  HAVING applies a
174a0 66 74 65 72 20 67 72 6f 75 70 69 6e 67 20 68 61  fter grouping ha
174b0 73 20 6f 63 63 75 72 72 65 64 2e 20 20 54 68 65  s occurred.  The
174c0 20 48 41 56 49 4e 47 20 65 78 70 72 65 73 73 69   HAVING expressi
174d0 6f 6e 0a 6d 61 79 20 72 65 66 65 72 20 74 6f 20  on.may refer to 
174e0 76 61 6c 75 65 73 2c 20 65 76 65 6e 20 61 67 67  values, even agg
174f0 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 73  regate functions
17500 2c 20 74 68 61 74 20 61 72 65 20 6e 6f 74 20 69  , that are not i
17510 6e 20 74 68 65 20 72 65 73 75 6c 74 2e 3c 2f 70  n the result.</p
17520 3e 0a 0a 3c 70 3e 54 68 65 20 4f 52 44 45 52 20  >..<p>The ORDER 
17530 42 59 20 63 6c 61 75 73 65 20 63 61 75 73 65 73  BY clause causes
17540 20 74 68 65 20 6f 75 74 70 75 74 20 72 6f 77 73   the output rows
17550 20 74 6f 20 62 65 20 73 6f 72 74 65 64 2e 20 20   to be sorted.  
17560 0a 54 68 65 20 61 72 67 75 6d 65 6e 74 20 74 6f  .The argument to
17570 20 4f 52 44 45 52 20 42 59 20 69 73 20 61 20 6c   ORDER BY is a l
17580 69 73 74 20 6f 66 20 65 78 70 72 65 73 73 69 6f  ist of expressio
17590 6e 73 20 74 68 61 74 20 61 72 65 20 75 73 65 64  ns that are used
175a0 20 61 73 20 74 68 65 0a 6b 65 79 20 66 6f 72 20   as the.key for 
175b0 74 68 65 20 73 6f 72 74 2e 20 20 54 68 65 20 65  the sort.  The e
175c0 78 70 72 65 73 73 69 6f 6e 73 20 64 6f 20 6e 6f  xpressions do no
175d0 74 20 68 61 76 65 20 74 6f 20 62 65 20 70 61 72  t have to be par
175e0 74 20 6f 66 20 74 68 65 0a 72 65 73 75 6c 74 20  t of the.result 
175f0 66 6f 72 20 61 20 73 69 6d 70 6c 65 20 53 45 4c  for a simple SEL
17600 45 43 54 2c 20 62 75 74 20 69 6e 20 61 20 63 6f  ECT, but in a co
17610 6d 70 6f 75 6e 64 20 53 45 4c 45 43 54 20 65 61  mpound SELECT ea
17620 63 68 20 73 6f 72 74 0a 65 78 70 72 65 73 73 69  ch sort.expressi
17630 6f 6e 20 6d 75 73 74 20 65 78 61 63 74 6c 79 20  on must exactly 
17640 6d 61 74 63 68 20 6f 6e 65 20 6f 66 20 74 68 65  match one of the
17650 20 72 65 73 75 6c 74 20 63 6f 6c 75 6d 6e 73 2e   result columns.
17660 20 20 45 61 63 68 0a 73 6f 72 74 20 65 78 70 72    Each.sort expr
17670 65 73 73 69 6f 6e 20 6d 61 79 20 62 65 20 6f 70  ession may be op
17680 74 69 6f 6e 61 6c 6c 79 20 66 6f 6c 6c 6f 77 65  tionally followe
17690 64 20 62 79 20 61 20 43 4f 4c 4c 41 54 45 20 6b  d by a COLLATE k
176a0 65 79 77 6f 72 64 20 61 6e 64 0a 74 68 65 20 6e  eyword and.the n
176b0 61 6d 65 20 6f 66 20 61 20 63 6f 6c 6c 61 74 69  ame of a collati
176c0 6e 67 20 66 75 6e 63 74 69 6f 6e 20 75 73 65 64  ng function used
176d0 20 66 6f 72 20 6f 72 64 65 72 69 6e 67 20 74 65   for ordering te
176e0 78 74 20 61 6e 64 2f 6f 72 0a 6b 65 79 77 6f 72  xt and/or.keywor
176f0 64 73 20 41 53 43 20 6f 72 20 44 45 53 43 20 74  ds ASC or DESC t
17700 6f 20 73 70 65 63 69 66 79 20 74 68 65 20 73 6f  o specify the so
17710 72 74 20 6f 72 64 65 72 2e 3c 2f 70 3e 0a 0a 3c  rt order.</p>..<
17720 70 3e 45 61 63 68 20 74 65 72 6d 20 6f 66 20 61  p>Each term of a
17730 6e 20 4f 52 44 45 52 20 42 59 20 65 78 70 72 65  n ORDER BY expre
17740 73 73 69 6f 6e 20 69 73 20 70 72 6f 63 65 73 73  ssion is process
17750 65 64 20 61 73 20 66 6f 6c 6c 6f 77 73 3a 3c 2f  ed as follows:</
17760 70 3e 0a 0a 3c 6f 6c 3e 0a 3c 6c 69 3e 3c 70 3e  p>..<ol>.<li><p>
17770 49 66 20 74 68 65 20 4f 52 44 45 52 20 42 59 20  If the ORDER BY 
17780 65 78 70 72 65 73 73 69 6f 6e 20 69 73 20 61 20  expression is a 
17790 63 6f 6e 73 74 61 6e 74 20 69 6e 74 65 67 65 72  constant integer
177a0 20 4b 20 74 68 65 6e 20 74 68 65 0a 6f 75 74 70   K then the.outp
177b0 75 74 20 69 73 20 6f 72 64 65 72 65 64 20 62 79  ut is ordered by
177c0 20 74 68 65 20 4b 2d 74 68 20 63 6f 6c 75 6d 6e   the K-th column
177d0 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74 20 73   of the result s
177e0 65 74 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a 3c 6c 69  et.</p></li>.<li
177f0 3e 3c 70 3e 49 66 20 74 68 65 20 4f 52 44 45 52  ><p>If the ORDER
17800 20 42 59 20 65 78 70 72 65 73 73 69 6f 6e 20 69   BY expression i
17810 73 20 61 6e 20 69 64 65 6e 74 69 66 69 65 72 20  s an identifier 
17820 61 6e 64 20 6f 6e 65 20 6f 66 20 74 68 65 0a 6f  and one of the.o
17830 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 20 68 61  utput columns ha
17840 73 20 61 6e 20 61 6c 69 61 73 20 62 79 20 74 68  s an alias by th
17850 65 20 73 61 6d 65 20 6e 61 6d 65 2c 20 74 68 65  e same name, the
17860 6e 20 74 68 65 20 6f 75 74 70 75 74 20 69 73 0a  n the output is.
17870 6f 72 64 65 72 65 64 20 62 79 20 74 68 65 20 69  ordered by the i
17880 64 65 6e 74 69 66 69 65 64 20 63 6f 6c 75 6d 6e  dentified column
17890 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c  .</p></li>.<li><
178a0 70 3e 4f 74 68 65 72 77 69 73 65 2c 20 74 68 65  p>Otherwise, the
178b0 20 4f 52 44 45 52 20 42 59 20 65 78 70 72 65 73   ORDER BY expres
178c0 73 69 6f 6e 20 69 73 20 65 76 61 6c 75 61 74 65  sion is evaluate
178d0 64 20 61 6e 64 20 74 68 65 20 6f 75 74 70 75 74  d and the output
178e0 20 0a 69 73 20 6f 72 64 65 72 65 64 20 62 79 20   .is ordered by 
178f0 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 61  the value of tha
17900 74 20 65 78 70 72 65 73 73 69 6f 6e 2e 3c 2f 70  t expression.</p
17910 3e 3c 2f 6c 69 3e 0a 3c 2f 6f 6c 3e 0a 0a 3c 70  ></li>.</ol>..<p
17920 3e 49 6e 20 61 20 63 6f 6d 70 6f 75 6e 64 20 53  >In a compound S
17930 45 4c 45 43 54 20 73 74 61 74 65 6d 65 6e 74 2c  ELECT statement,
17940 20 74 68 65 20 74 68 69 72 64 20 4f 52 44 45 52   the third ORDER
17950 20 42 59 20 6d 61 74 63 68 69 6e 67 20 72 75 6c   BY matching rul
17960 65 0a 72 65 71 75 69 72 65 73 20 74 68 61 74 20  e.requires that 
17970 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20 62  the expression b
17980 65 20 69 64 65 6e 74 69 63 61 6c 20 74 6f 20 6f  e identical to o
17990 6e 65 20 6f 66 20 74 68 65 20 63 6f 6c 75 6d 6e  ne of the column
179a0 73 20 69 6e 0a 74 68 65 20 72 65 73 75 6c 74 20  s in.the result 
179b0 73 65 74 2e 20 20 54 68 65 20 74 68 72 65 65 20  set.  The three 
179c0 72 75 6c 65 73 20 61 72 65 20 66 69 72 73 74 20  rules are first 
179d0 61 70 70 6c 69 65 64 20 74 6f 20 74 68 65 20 6c  applied to the l
179e0 65 66 74 2d 6d 6f 73 74 0a 53 45 4c 45 43 54 20  eft-most.SELECT 
179f0 69 6e 20 74 68 65 20 63 6f 6d 70 6f 75 6e 64 2e  in the compound.
17a00 20 20 49 66 20 61 20 6d 61 74 63 68 20 69 73 20    If a match is 
17a10 66 6f 75 6e 64 2c 20 74 68 65 20 73 65 61 72 63  found, the searc
17a20 68 20 73 74 6f 70 73 2e 20 20 4f 74 68 65 72 77  h stops.  Otherw
17a30 69 73 65 2c 0a 74 68 65 20 6e 65 78 74 20 53 45  ise,.the next SE
17a40 4c 45 43 54 20 74 6f 20 74 68 65 20 72 69 67 68  LECT to the righ
17a50 74 20 69 73 20 74 72 69 65 64 2e 20 20 54 68 69  t is tried.  Thi
17a60 73 20 63 6f 6e 74 69 6e 75 65 73 20 75 6e 74 69  s continues unti
17a70 6c 20 61 20 6d 61 74 63 68 0a 69 73 20 66 6f 75  l a match.is fou
17a80 6e 64 2e 20 20 45 61 63 68 20 74 65 72 6d 20 6f  nd.  Each term o
17a90 66 20 74 68 65 20 4f 52 44 45 52 20 42 59 20 63  f the ORDER BY c
17aa0 6c 61 75 73 65 20 69 73 20 70 72 6f 63 65 73 73  lause is process
17ab0 65 64 20 73 65 70 61 72 61 74 65 6c 79 20 0a 61  ed separately .a
17ac0 6e 64 20 6d 61 79 20 63 6f 6d 65 20 66 72 6f 6d  nd may come from
17ad0 20 64 69 66 66 65 72 65 6e 74 20 53 45 4c 45 43   different SELEC
17ae0 54 20 73 74 61 74 65 6d 65 6e 74 73 20 69 6e 20  T statements in 
17af0 74 68 65 20 63 6f 6d 70 6f 75 6e 64 2e 3c 2f 70  the compound.</p
17b00 3e 0a 0a 3c 70 3e 54 68 65 20 4c 49 4d 49 54 20  >..<p>The LIMIT 
17b10 63 6c 61 75 73 65 20 70 6c 61 63 65 73 20 61 6e  clause places an
17b20 20 75 70 70 65 72 20 62 6f 75 6e 64 20 6f 6e 20   upper bound on 
17b30 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 72 6f  the number of ro
17b40 77 73 0a 72 65 74 75 72 6e 65 64 20 69 6e 20 74  ws.returned in t
17b50 68 65 20 72 65 73 75 6c 74 2e 20 20 41 20 6e 65  he result.  A ne
17b60 67 61 74 69 76 65 20 4c 49 4d 49 54 20 69 6e 64  gative LIMIT ind
17b70 69 63 61 74 65 73 20 6e 6f 20 75 70 70 65 72 20  icates no upper 
17b80 62 6f 75 6e 64 2e 0a 54 68 65 20 6f 70 74 69 6f  bound..The optio
17b90 6e 61 6c 20 4f 46 46 53 45 54 20 66 6f 6c 6c 6f  nal OFFSET follo
17ba0 77 69 6e 67 20 4c 49 4d 49 54 20 73 70 65 63 69  wing LIMIT speci
17bb0 66 69 65 73 20 68 6f 77 20 6d 61 6e 79 0a 72 6f  fies how many.ro
17bc0 77 73 20 74 6f 20 73 6b 69 70 20 61 74 20 74 68  ws to skip at th
17bd0 65 20 62 65 67 69 6e 6e 69 6e 67 20 6f 66 20 74  e beginning of t
17be0 68 65 20 72 65 73 75 6c 74 20 73 65 74 2e 0a 49  he result set..I
17bf0 6e 20 61 20 63 6f 6d 70 6f 75 6e 64 20 71 75 65  n a compound que
17c00 72 79 2c 20 74 68 65 20 4c 49 4d 49 54 20 63 6c  ry, the LIMIT cl
17c10 61 75 73 65 20 6d 61 79 20 6f 6e 6c 79 20 61 70  ause may only ap
17c20 70 65 61 72 20 6f 6e 20 74 68 65 0a 66 69 6e 61  pear on the.fina
17c30 6c 20 53 45 4c 45 43 54 20 73 74 61 74 65 6d 65  l SELECT stateme
17c40 6e 74 2e 0a 54 68 65 20 6c 69 6d 69 74 20 69 73  nt..The limit is
17c50 20 61 70 70 6c 69 65 64 20 74 6f 20 74 68 65 20   applied to the 
17c60 65 6e 74 69 72 65 20 71 75 65 72 79 20 6e 6f 74  entire query not
17c70 0a 74 6f 20 74 68 65 20 69 6e 64 69 76 69 64 75  .to the individu
17c80 61 6c 20 53 45 4c 45 43 54 20 73 74 61 74 65 6d  al SELECT statem
17c90 65 6e 74 20 74 6f 20 77 68 69 63 68 20 69 74 20  ent to which it 
17ca0 69 73 20 61 74 74 61 63 68 65 64 2e 0a 4e 6f 74  is attached..Not
17cb0 65 20 74 68 61 74 20 69 66 20 74 68 65 20 4f 46  e that if the OF
17cc0 46 53 45 54 20 6b 65 79 77 6f 72 64 20 69 73 20  FSET keyword is 
17cd0 75 73 65 64 20 69 6e 20 74 68 65 20 4c 49 4d 49  used in the LIMI
17ce0 54 20 63 6c 61 75 73 65 2c 20 74 68 65 6e 20 74  T clause, then t
17cf0 68 65 0a 6c 69 6d 69 74 20 69 73 20 74 68 65 20  he.limit is the 
17d00 66 69 72 73 74 20 6e 75 6d 62 65 72 20 61 6e 64  first number and
17d10 20 74 68 65 20 6f 66 66 73 65 74 20 69 73 20 74   the offset is t
17d20 68 65 20 73 65 63 6f 6e 64 20 6e 75 6d 62 65 72  he second number
17d30 2e 20 20 49 66 20 61 0a 63 6f 6d 6d 61 20 69 73  .  If a.comma is
17d40 20 75 73 65 64 20 69 6e 73 74 65 61 64 20 6f 66   used instead of
17d50 20 74 68 65 20 4f 46 46 53 45 54 20 6b 65 79 77   the OFFSET keyw
17d60 6f 72 64 2c 20 74 68 65 6e 20 74 68 65 20 6f 66  ord, then the of
17d70 66 73 65 74 20 69 73 20 74 68 65 0a 66 69 72 73  fset is the.firs
17d80 74 20 6e 75 6d 62 65 72 20 61 6e 64 20 74 68 65  t number and the
17d90 20 6c 69 6d 69 74 20 69 73 20 74 68 65 20 73 65   limit is the se
17da0 63 6f 6e 64 20 6e 75 6d 62 65 72 2e 20 20 54 68  cond number.  Th
17db0 69 73 20 73 65 65 6d 69 6e 67 0a 63 6f 6e 74 72  is seeming.contr
17dc0 61 64 69 74 69 6f 6e 20 69 73 20 69 6e 74 65 6e  adition is inten
17dd0 74 69 6f 6e 61 6c 20 2d 20 69 74 20 6d 61 78 69  tional - it maxi
17de0 6d 69 7a 65 73 20 63 6f 6d 70 61 74 69 62 69 6c  mizes compatibil
17df0 69 74 79 20 77 69 74 68 20 6c 65 67 61 63 79 0a  ity with legacy.
17e00 53 51 4c 20 64 61 74 61 62 61 73 65 20 73 79 73  SQL database sys
17e10 74 65 6d 73 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 41  tems..</p>..<p>A
17e20 20 63 6f 6d 70 6f 75 6e 64 20 53 45 4c 45 43 54   compound SELECT
17e30 20 69 73 20 66 6f 72 6d 65 64 20 66 72 6f 6d 20   is formed from 
17e40 74 77 6f 20 6f 72 20 6d 6f 72 65 20 73 69 6d 70  two or more simp
17e50 6c 65 20 53 45 4c 45 43 54 73 20 63 6f 6e 6e 65  le SELECTs conne
17e60 63 74 65 64 0a 62 79 20 6f 6e 65 20 6f 66 20 74  cted.by one of t
17e70 68 65 20 6f 70 65 72 61 74 6f 72 73 20 55 4e 49  he operators UNI
17e80 4f 4e 2c 20 55 4e 49 4f 4e 20 41 4c 4c 2c 20 49  ON, UNION ALL, I
17e90 4e 54 45 52 53 45 43 54 2c 20 6f 72 20 45 58 43  NTERSECT, or EXC
17ea0 45 50 54 2e 20 20 49 6e 0a 61 20 63 6f 6d 70 6f  EPT.  In.a compo
17eb0 75 6e 64 20 53 45 4c 45 43 54 2c 20 61 6c 6c 20  und SELECT, all 
17ec0 74 68 65 20 63 6f 6e 73 74 69 74 75 65 6e 74 20  the constituent 
17ed0 53 45 4c 45 43 54 73 20 6d 75 73 74 20 73 70 65  SELECTs must spe
17ee0 63 69 66 79 20 74 68 65 0a 73 61 6d 65 20 6e 75  cify the.same nu
17ef0 6d 62 65 72 20 6f 66 20 72 65 73 75 6c 74 20 63  mber of result c
17f00 6f 6c 75 6d 6e 73 2e 20 20 54 68 65 72 65 20 6d  olumns.  There m
17f10 61 79 20 62 65 20 6f 6e 6c 79 20 61 20 73 69 6e  ay be only a sin
17f20 67 6c 65 20 4f 52 44 45 52 20 42 59 0a 63 6c 61  gle ORDER BY.cla
17f30 75 73 65 20 61 74 20 74 68 65 20 65 6e 64 20 6f  use at the end o
17f40 66 20 74 68 65 20 63 6f 6d 70 6f 75 6e 64 20 53  f the compound S
17f50 45 4c 45 43 54 2e 20 20 54 68 65 20 55 4e 49 4f  ELECT.  The UNIO
17f60 4e 20 61 6e 64 20 55 4e 49 4f 4e 20 41 4c 4c 0a  N and UNION ALL.
17f70 6f 70 65 72 61 74 6f 72 73 20 63 6f 6d 62 69 6e  operators combin
17f80 65 20 74 68 65 20 72 65 73 75 6c 74 73 20 6f 66  e the results of
17f90 20 74 68 65 20 53 45 4c 45 43 54 73 20 74 6f 20   the SELECTs to 
17fa0 74 68 65 20 72 69 67 68 74 20 61 6e 64 20 6c 65  the right and le
17fb0 66 74 20 69 6e 74 6f 0a 61 20 73 69 6e 67 6c 65  ft into.a single
17fc0 20 62 69 67 20 74 61 62 6c 65 2e 20 20 54 68 65   big table.  The
17fd0 20 64 69 66 66 65 72 65 6e 63 65 20 69 73 20 74   difference is t
17fe0 68 61 74 20 69 6e 20 55 4e 49 4f 4e 20 61 6c 6c  hat in UNION all
17ff0 20 72 65 73 75 6c 74 20 72 6f 77 73 0a 61 72 65   result rows.are
18000 20 64 69 73 74 69 6e 63 74 20 77 68 65 72 65 20   distinct where 
18010 69 6e 20 55 4e 49 4f 4e 20 41 4c 4c 20 74 68 65  in UNION ALL the
18020 72 65 20 6d 61 79 20 62 65 20 64 75 70 6c 69 63  re may be duplic
18030 61 74 65 73 2e 0a 54 68 65 20 49 4e 54 45 52 53  ates..The INTERS
18040 45 43 54 20 6f 70 65 72 61 74 6f 72 20 74 61 6b  ECT operator tak
18050 65 73 20 74 68 65 20 69 6e 74 65 72 73 65 63 74  es the intersect
18060 69 6f 6e 20 6f 66 20 74 68 65 20 72 65 73 75 6c  ion of the resul
18070 74 73 20 6f 66 20 74 68 65 0a 6c 65 66 74 20 61  ts of the.left a
18080 6e 64 20 72 69 67 68 74 20 53 45 4c 45 43 54 73  nd right SELECTs
18090 2e 20 20 45 58 43 45 50 54 20 74 61 6b 65 73 20  .  EXCEPT takes 
180a0 74 68 65 20 72 65 73 75 6c 74 20 6f 66 20 6c 65  the result of le
180b0 66 74 20 53 45 4c 45 43 54 20 61 66 74 65 72 0a  ft SELECT after.
180c0 72 65 6d 6f 76 69 6e 67 20 74 68 65 20 72 65 73  removing the res
180d0 75 6c 74 73 20 6f 66 20 74 68 65 20 72 69 67 68  ults of the righ
180e0 74 20 53 45 4c 45 43 54 2e 20 20 57 68 65 6e 20  t SELECT.  When 
180f0 74 68 72 65 65 20 6f 72 20 6d 6f 72 65 20 53 45  three or more SE
18100 4c 45 43 54 73 0a 61 72 65 20 63 6f 6e 6e 65 63  LECTs.are connec
18110 74 65 64 20 69 6e 74 6f 20 61 20 63 6f 6d 70 6f  ted into a compo
18120 75 6e 64 2c 20 74 68 65 79 20 67 72 6f 75 70 20  und, they group 
18130 66 72 6f 6d 20 6c 65 66 74 20 74 6f 20 72 69 67  from left to rig
18140 68 74 2e 3c 2f 70 3e 0a 0a 0a 3c 74 63 6c 3e 0a  ht.</p>...<tcl>.
18150 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18160 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18170 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18180 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18190 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 53  ##############.S
181a0 65 63 74 69 6f 6e 20 55 50 44 41 54 45 20 75 70  ection UPDATE up
181b0 64 61 74 65 20 7b 55 50 44 41 54 45 20 55 50 44  date {UPDATE UPD
181c0 41 54 45 73 7d 0a 0a 42 75 62 62 6c 65 44 69 61  ATEs}..BubbleDia
181d0 67 72 61 6d 20 75 70 64 61 74 65 2d 73 74 6d 74  gram update-stmt
181e0 20 31 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d   1.BubbleDiagram
181f0 20 71 75 61 6c 69 66 69 65 64 2d 74 61 62 6c 65   qualified-table
18200 2d 6e 61 6d 65 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70  -name.</tcl>..<p
18210 3e 54 68 65 20 55 50 44 41 54 45 20 73 74 61 74  >The UPDATE stat
18220 65 6d 65 6e 74 20 69 73 20 75 73 65 64 20 74 6f  ement is used to
18230 20 63 68 61 6e 67 65 20 74 68 65 20 76 61 6c 75   change the valu
18240 65 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20  e of columns in 
18250 0a 73 65 6c 65 63 74 65 64 20 72 6f 77 73 20 6f  .selected rows o
18260 66 20 61 20 74 61 62 6c 65 2e 20 20 45 61 63 68  f a table.  Each
18270 20 61 73 73 69 67 6e 6d 65 6e 74 20 69 6e 20 61   assignment in a
18280 6e 20 55 50 44 41 54 45 20 73 70 65 63 69 66 69  n UPDATE specifi
18290 65 73 0a 61 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65  es.a column name
182a0 20 74 6f 20 74 68 65 20 6c 65 66 74 20 6f 66 20   to the left of 
182b0 74 68 65 20 65 71 75 61 6c 73 20 73 69 67 6e 20  the equals sign 
182c0 61 6e 64 20 61 6e 20 61 72 62 69 74 72 61 72 79  and an arbitrary
182d0 20 65 78 70 72 65 73 73 69 6f 6e 0a 74 6f 20 74   expression.to t
182e0 68 65 20 72 69 67 68 74 2e 20 20 54 68 65 20 65  he right.  The e
182f0 78 70 72 65 73 73 69 6f 6e 73 20 6d 61 79 20 75  xpressions may u
18300 73 65 20 74 68 65 20 76 61 6c 75 65 73 20 6f 66  se the values of
18310 20 6f 74 68 65 72 20 63 6f 6c 75 6d 6e 73 2e 0a   other columns..
18320 41 6c 6c 20 65 78 70 72 65 73 73 69 6f 6e 73 20  All expressions 
18330 61 72 65 20 65 76 61 6c 75 61 74 65 64 20 62 65  are evaluated be
18340 66 6f 72 65 20 61 6e 79 20 61 73 73 69 67 6e 6d  fore any assignm
18350 65 6e 74 73 20 61 72 65 20 6d 61 64 65 2e 0a 41  ents are made..A
18360 20 57 48 45 52 45 20 63 6c 61 75 73 65 20 63 61   WHERE clause ca
18370 6e 20 62 65 20 75 73 65 64 20 74 6f 20 72 65 73  n be used to res
18380 74 72 69 63 74 20 77 68 69 63 68 20 72 6f 77 73  trict which rows
18390 20 61 72 65 20 75 70 64 61 74 65 64 2e 3c 2f 70   are updated.</p
183a0 3e 0a 0a 3c 70 3e 54 68 65 20 6f 70 74 69 6f 6e  >..<p>The option
183b0 61 6c 20 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75  al conflict-clau
183c0 73 65 20 61 6c 6c 6f 77 73 20 74 68 65 20 73 70  se allows the sp
183d0 65 63 69 66 69 63 61 74 69 6f 6e 20 6f 66 20 61  ecification of a
183e0 6e 20 61 6c 74 65 72 6e 61 74 69 76 65 0a 63 6f  n alternative.co
183f0 6e 73 74 72 61 69 6e 74 20 63 6f 6e 66 6c 69 63  nstraint conflic
18400 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67  t resolution alg
18410 6f 72 69 74 68 6d 20 74 6f 20 75 73 65 20 64 75  orithm to use du
18420 72 69 6e 67 20 74 68 69 73 20 6f 6e 65 20 63 6f  ring this one co
18430 6d 6d 61 6e 64 2e 0a 53 65 65 20 74 68 65 20 73  mmand..See the s
18440 65 63 74 69 6f 6e 20 74 69 74 6c 65 64 0a 5b 4f  ection titled.[O
18450 4e 20 43 4f 4e 46 4c 49 43 54 5d 20 66 6f 72 20  N CONFLICT] for 
18460 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72  additional infor
18470 6d 61 74 69 6f 6e 2e 3c 2f 70 3e 0a 0a 3c 68 33  mation.</p>..<h3
18480 3e 52 65 73 74 72 69 63 74 69 6f 6e 73 20 6f 6e  >Restrictions on
18490 20 55 50 44 41 54 45 20 53 74 61 74 65 6d 65 6e   UPDATE Statemen
184a0 74 73 20 57 69 74 68 69 6e 20 43 52 45 41 54 45  ts Within CREATE
184b0 20 54 52 49 47 47 45 52 3c 2f 68 33 3e 0a 0a 3c   TRIGGER</h3>..<
184c0 70 3e 54 68 65 72 65 20 61 72 65 20 61 64 64 69  p>There are addi
184d0 74 69 6f 6e 61 6c 20 73 79 6e 74 61 78 20 72 65  tional syntax re
184e0 73 74 72 69 63 74 69 6f 6e 73 20 6f 6e 20 55 50  strictions on UP
184f0 44 41 54 45 20 73 74 61 74 65 6d 65 6e 74 73 20  DATE statements 
18500 74 68 61 74 0a 6f 63 63 75 72 20 77 69 74 68 69  that.occur withi
18510 6e 20 74 68 65 20 62 6f 64 79 20 6f 66 20 61 20  n the body of a 
18520 5b 43 52 45 41 54 45 20 54 52 49 47 47 45 52 5d  [CREATE TRIGGER]
18530 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 54 68 65   statement.  The
18540 20 3c 69 3e 74 61 62 6c 65 2d 6e 61 6d 65 3c 2f   <i>table-name</
18550 69 3e 0a 6d 75 73 74 20 62 65 20 75 6e 71 75 61  i>.must be unqua
18560 6c 69 66 69 65 64 2e 20 0a 49 6e 20 6f 74 68 65  lified. .In othe
18570 72 20 77 6f 72 64 73 2c 20 74 68 65 20 3c 69 3e  r words, the <i>
18580 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3c 2f 69  database-name</i
18590 3e 3c 62 3e 2e 3c 2f 62 3e 20 70 72 65 66 69 78  ><b>.</b> prefix
185a0 0a 6f 6e 20 74 68 65 20 74 61 62 6c 65 20 6e 61  .on the table na
185b0 6d 65 20 69 73 20 6e 6f 74 20 61 6c 6c 6f 77 65  me is not allowe
185c0 64 20 77 69 74 68 69 6e 20 74 72 69 67 67 65 72  d within trigger
185d0 73 2e 20 0a 54 68 65 20 74 61 62 6c 65 20 74 6f  s. .The table to
185e0 20 62 65 20 6d 6f 64 69 66 69 65 64 20 6d 75 73   be modified mus
185f0 74 20 62 65 20 69 6e 20 74 68 65 20 73 61 6d 65  t be in the same
18600 0a 64 61 74 61 62 61 73 65 20 61 73 20 74 68 65  .database as the
18610 20 74 61 62 6c 65 20 74 6f 20 77 68 69 63 68 20   table to which 
18620 74 68 65 20 74 72 69 67 67 65 72 20 69 73 20 61  the trigger is a
18630 74 74 61 63 68 65 64 2e 3c 2f 70 3e 0a 0a 3c 70  ttached.</p>..<p
18640 3e 54 68 65 20 49 4e 44 45 58 45 44 20 42 59 20  >The INDEXED BY 
18650 61 6e 64 20 4e 4f 54 20 49 4e 44 45 58 45 44 20  and NOT INDEXED 
18660 63 6c 61 75 73 65 73 20 61 72 65 20 6e 6f 74 20  clauses are not 
18670 61 6c 6c 6f 77 65 64 20 6f 6e 20 55 50 44 41 54  allowed on UPDAT
18680 45 0a 73 74 61 74 65 6d 65 6e 74 73 20 77 69 74  E.statements wit
18690 68 69 6e 20 74 72 69 67 67 65 72 73 2e 3c 2f 70  hin triggers.</p
186a0 3e 0a 0a 3c 70 3e 54 68 65 20 4c 49 4d 49 54 20  >..<p>The LIMIT 
186b0 63 6c 61 75 73 65 20 28 64 65 73 63 72 69 62 65  clause (describe
186c0 64 20 62 65 6c 6f 77 29 20 69 73 20 75 6e 73 75  d below) is unsu
186d0 70 70 6f 72 74 65 64 20 77 69 74 68 69 6e 20 74  pported within t
186e0 72 69 67 67 65 72 73 2e 3c 2f 70 3e 0a 0a 3c 68  riggers.</p>..<h
186f0 33 3e 4f 70 74 69 6f 6e 61 6c 20 4c 49 4d 49 54  3>Optional LIMIT
18700 20 61 6e 64 20 4f 52 44 45 52 20 42 59 20 43 6c   and ORDER BY Cl
18710 61 75 73 65 73 3c 2f 68 33 3e 0a 0a 3c 70 3e 49  auses</h3>..<p>I
18720 66 20 53 51 4c 69 74 65 20 69 73 20 62 75 69 6c  f SQLite is buil
18730 74 20 77 69 74 68 20 74 68 65 20 5b 53 51 4c 49  t with the [SQLI
18740 54 45 5f 45 4e 41 42 4c 45 5f 55 50 44 41 54 45  TE_ENABLE_UPDATE
18750 5f 44 45 4c 45 54 45 5f 4c 49 4d 49 54 5d 0a 63  _DELETE_LIMIT].c
18760 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
18770 6f 6e 20 74 68 65 6e 20 74 68 65 20 73 79 6e 74  on then the synt
18780 61 78 20 6f 66 20 74 68 65 20 55 50 44 41 54 45  ax of the UPDATE
18790 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 65 78   statement is ex
187a0 74 65 6e 64 65 64 0a 77 69 74 68 20 6f 70 74 69  tended.with opti
187b0 6f 6e 61 6c 20 4f 52 44 45 52 20 42 59 20 61 6e  onal ORDER BY an
187c0 64 20 4c 49 4d 49 54 20 63 6c 61 75 73 65 73 20  d LIMIT clauses 
187d0 61 73 20 66 6f 6c 6c 6f 77 73 3a 3c 2f 70 3e 0a  as follows:</p>.
187e0 0a 3c 74 63 6c 3e 42 75 62 62 6c 65 44 69 61 67  .<tcl>BubbleDiag
187f0 72 61 6d 20 75 70 64 61 74 65 2d 73 74 6d 74 2d  ram update-stmt-
18800 6c 69 6d 69 74 65 64 3c 2f 74 63 6c 3e 0a 0a 3c  limited</tcl>..<
18810 70 3e 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20 4c  p>The optional L
18820 49 4d 49 54 20 63 6c 61 75 73 65 20 63 61 6e 20  IMIT clause can 
18830 62 65 20 75 73 65 64 20 74 6f 20 6c 69 6d 69 74  be used to limit
18840 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 0a 72   the number of.r
18850 6f 77 73 20 6d 6f 64 69 66 65 64 2c 20 61 6e 64  ows modifed, and
18860 20 74 68 65 72 65 62 79 20 6c 69 6d 69 74 20 74   thereby limit t
18870 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20 74  he size of the t
18880 72 61 6e 73 61 63 74 69 6f 6e 2e 0a 54 68 65 20  ransaction..The 
18890 4f 52 44 45 52 20 42 59 20 63 6c 61 75 73 65 20  ORDER BY clause 
188a0 69 73 20 75 73 65 64 20 6f 6e 6c 79 20 74 6f 20  is used only to 
188b0 64 65 74 65 72 6d 69 6e 65 20 77 68 69 63 68 20  determine which 
188c0 72 6f 77 73 20 66 61 6c 6c 0a 77 69 74 68 69 6e  rows fall.within
188d0 20 74 68 65 20 4c 49 4d 49 54 2e 20 20 54 68 65   the LIMIT.  The
188e0 20 6f 72 64 65 72 20 69 6e 20 77 68 69 63 68 20   order in which 
188f0 72 6f 77 73 20 61 72 65 20 6d 6f 64 69 66 69 65  rows are modifie
18900 64 20 69 73 20 61 72 62 69 74 72 61 72 79 0a 61  d is arbitrary.a
18910 6e 64 20 69 73 20 6e 6f 74 20 64 65 74 65 72 6d  nd is not determ
18920 69 6e 65 64 20 62 79 20 74 68 65 20 4f 52 44 45  ined by the ORDE
18930 52 20 42 59 20 63 6c 61 75 73 65 2e 3c 2f 70 3e  R BY clause.</p>
18940 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23  ..<tcl>.########
18950 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18960 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18970 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18980 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18990 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 56  ######.Section V
189a0 41 43 55 55 4d 20 76 61 63 75 75 6d 20 56 41 43  ACUUM vacuum VAC
189b0 55 55 4d 0a 0a 42 75 62 62 6c 65 44 69 61 67 72  UUM..BubbleDiagr
189c0 61 6d 20 76 61 63 75 75 6d 2d 73 74 6d 74 20 31  am vacuum-stmt 1
189d0 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 57 68 65 6e  .</tcl>..<p>When
189e0 20 61 6e 20 6f 62 6a 65 63 74 20 28 74 61 62 6c   an object (tabl
189f0 65 2c 20 69 6e 64 65 78 2c 20 6f 72 20 74 72 69  e, index, or tri
18a00 67 67 65 72 29 20 69 73 20 64 72 6f 70 70 65 64  gger) is dropped
18a10 20 66 72 6f 6d 20 74 68 65 20 0a 64 61 74 61 62   from the .datab
18a20 61 73 65 2c 20 69 74 20 6c 65 61 76 65 73 20 62  ase, it leaves b
18a30 65 68 69 6e 64 20 65 6d 70 74 79 20 73 70 61 63  ehind empty spac
18a40 65 2e 20 0a 54 68 69 73 20 65 6d 70 74 79 20 73  e. .This empty s
18a50 70 61 63 65 20 77 69 6c 6c 20 62 65 20 72 65 75  pace will be reu
18a60 73 65 64 20 74 68 65 20 6e 65 78 74 20 74 69 6d  sed the next tim
18a70 65 20 6e 65 77 20 69 6e 66 6f 72 6d 61 74 69 6f  e new informatio
18a80 6e 20 69 73 0a 61 64 64 65 64 20 74 6f 20 74 68  n is.added to th
18a90 65 20 64 61 74 61 62 61 73 65 2e 20 20 42 75 74  e database.  But
18aa0 20 69 6e 20 74 68 65 20 6d 65 61 6e 74 69 6d 65   in the meantime
18ab0 2c 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66  , the database f
18ac0 69 6c 65 20 6d 69 67 68 74 0a 62 65 20 6c 61 72  ile might.be lar
18ad0 67 65 72 20 74 68 61 6e 20 73 74 72 69 63 74 6c  ger than strictl
18ae0 79 20 6e 65 63 65 73 73 61 72 79 2e 20 20 41 6c  y necessary.  Al
18af0 73 6f 2c 20 66 72 65 71 75 65 6e 74 20 69 6e 73  so, frequent ins
18b00 65 72 74 73 2c 20 75 70 64 61 74 65 73 2c 0a 61  erts, updates,.a
18b10 6e 64 20 64 65 6c 65 74 65 73 20 63 61 6e 20 63  nd deletes can c
18b20 61 75 73 65 20 74 68 65 20 69 6e 66 6f 72 6d 61  ause the informa
18b30 74 69 6f 6e 20 69 6e 20 74 68 65 20 64 61 74 61  tion in the data
18b40 62 61 73 65 20 74 6f 20 62 65 63 6f 6d 65 0a 66  base to become.f
18b50 72 61 67 6d 65 6e 74 65 64 20 2d 20 73 63 72 61  ragmented - scra
18b60 74 74 65 72 65 64 20 6f 75 74 20 61 6c 6c 20 61  ttered out all a
18b70 63 72 6f 73 73 20 74 68 65 20 64 61 74 61 62 61  cross the databa
18b80 73 65 20 66 69 6c 65 20 72 61 74 68 65 72 0a 74  se file rather.t
18b90 68 61 6e 20 63 6c 75 73 74 65 72 65 64 20 74 6f  han clustered to
18ba0 67 65 74 68 65 72 20 69 6e 20 6f 6e 65 20 70 6c  gether in one pl
18bb0 61 63 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  ace.</p>..<p>The
18bc0 20 56 41 43 55 55 4d 20 63 6f 6d 6d 61 6e 64 20   VACUUM command 
18bd0 63 6c 65 61 6e 73 0a 74 68 65 20 6d 61 69 6e 20  cleans.the main 
18be0 64 61 74 61 62 61 73 65 20 62 79 20 63 6f 70 79  database by copy
18bf0 69 6e 67 20 69 74 73 20 63 6f 6e 74 65 6e 74 73  ing its contents
18c00 20 74 6f 20 61 20 74 65 6d 70 6f 72 61 72 79 20   to a temporary 
18c10 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 61 6e  database file an
18c20 64 20 0a 72 65 6c 6f 61 64 69 6e 67 20 74 68 65  d .reloading the
18c30 20 6f 72 69 67 69 6e 61 6c 20 64 61 74 61 62 61   original databa
18c40 73 65 20 66 69 6c 65 20 66 72 6f 6d 20 74 68 65  se file from the
18c50 20 63 6f 70 79 2e 20 20 54 68 69 73 20 65 6c 69   copy.  This eli
18c60 6d 69 6e 61 74 65 73 20 0a 66 72 65 65 20 70 61  minates .free pa
18c70 67 65 73 2c 20 20 61 6c 69 67 6e 73 20 74 61 62  ges,  aligns tab
18c80 6c 65 20 64 61 74 61 20 74 6f 20 62 65 20 63 6f  le data to be co
18c90 6e 74 69 67 75 6f 75 73 2c 20 61 6e 64 20 6f 74  ntiguous, and ot
18ca0 68 65 72 77 69 73 65 20 63 6c 65 61 6e 73 20 0a  herwise cleans .
18cb0 75 70 20 74 68 65 20 64 61 74 61 62 61 73 65 20  up the database 
18cc0 66 69 6c 65 20 73 74 72 75 63 74 75 72 65 2e 3c  file structure.<
18cd0 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 56 41 43 55  /p>..<p>The VACU
18ce0 55 4d 20 63 6f 6d 6d 61 6e 64 20 6d 61 79 20 63  UM command may c
18cf0 68 61 6e 67 65 20 74 68 65 20 0a 5b 52 4f 57 49  hange the .[ROWI
18d00 44 20 7c 20 52 4f 57 49 44 73 5d 20 6f 66 20 65  D | ROWIDs] of e
18d10 6e 74 72 69 65 73 20 69 6e 20 74 61 62 6c 65 73  ntries in tables
18d20 20 74 68 61 74 20 64 6f 0a 6e 6f 74 20 68 61 76   that do.not hav
18d30 65 20 61 6e 20 65 78 70 6c 69 63 69 74 20 5b 49  e an explicit [I
18d40 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b  NTEGER PRIMARY K
18d50 45 59 5d 2e 3c 2f 70 3e 0a 0a 3c 70 3e 56 41 43  EY].</p>..<p>VAC
18d60 55 55 4d 20 6f 6e 6c 79 20 77 6f 72 6b 73 20 6f  UUM only works o
18d70 6e 20 74 68 65 20 6d 61 69 6e 20 64 61 74 61 62  n the main datab
18d80 61 73 65 2e 0a 49 74 20 69 73 20 6e 6f 74 20 70  ase..It is not p
18d90 6f 73 73 69 62 6c 65 20 74 6f 20 56 41 43 55 55  ossible to VACUU
18da0 4d 20 61 6e 20 61 74 74 61 63 68 65 64 20 64 61  M an attached da
18db0 74 61 62 61 73 65 20 66 69 6c 65 2e 3c 2f 70 3e  tabase file.</p>
18dc0 0a 0a 3c 70 3e 54 68 65 20 56 41 43 55 55 4d 20  ..<p>The VACUUM 
18dd0 63 6f 6d 6d 61 6e 64 20 77 69 6c 6c 20 66 61 69  command will fai
18de0 6c 20 69 66 20 74 68 65 72 65 20 69 73 20 61 6e  l if there is an
18df0 20 61 63 74 69 76 65 20 74 72 61 6e 73 61 63 74   active transact
18e00 69 6f 6e 2e 0a 54 68 65 20 56 41 43 55 55 4d 20  ion..The VACUUM 
18e10 63 6f 6d 6d 61 6e 64 20 69 73 20 61 20 6e 6f 2d  command is a no-
18e20 6f 70 20 66 6f 72 20 69 6e 2d 6d 65 6d 6f 72 79  op for in-memory
18e30 20 64 61 74 61 62 61 73 65 73 2e 3c 2f 70 3e 0a   databases.</p>.
18e40 0a 3c 70 3e 41 73 20 6f 66 20 53 51 4c 69 74 65  .<p>As of SQLite
18e50 20 76 65 72 73 69 6f 6e 20 33 2e 31 2c 20 61 6e   version 3.1, an
18e60 20 61 6c 74 65 72 6e 61 74 69 76 65 20 74 6f 20   alternative to 
18e70 75 73 69 6e 67 20 74 68 65 20 56 41 43 55 55 4d  using the VACUUM
18e80 20 63 6f 6d 6d 61 6e 64 0a 69 73 20 61 75 74 6f   command.is auto
18e90 2d 76 61 63 75 75 6d 20 6d 6f 64 65 2c 20 65 6e  -vacuum mode, en
18ea0 61 62 6c 65 64 20 75 73 69 6e 67 20 74 68 65 20  abled using the 
18eb0 0a 5b 61 75 74 6f 5f 76 61 63 75 75 6d 5d 20 70  .[auto_vacuum] p
18ec0 72 61 67 6d 61 2e 20 20 57 68 65 6e 20 5b 61 75  ragma.  When [au
18ed0 74 6f 5f 76 61 63 75 75 6d 5d 20 69 73 20 65 6e  to_vacuum] is en
18ee0 61 62 6c 65 64 20 66 6f 72 20 61 20 64 61 74 61  abled for a data
18ef0 62 61 73 65 2c 20 0a 6c 61 72 67 65 20 64 65 6c  base, .large del
18f00 65 74 65 73 20 63 61 75 73 65 0a 74 68 65 20 73  etes cause.the s
18f10 69 7a 65 20 6f 66 20 74 68 65 20 64 61 74 61 62  ize of the datab
18f20 61 73 65 20 66 69 6c 65 20 74 6f 20 73 68 72 69  ase file to shri
18f30 6e 6b 2e 20 20 48 6f 77 65 76 65 72 2c 20 5b 61  nk.  However, [a
18f40 75 74 6f 5f 76 61 63 75 75 6d 5d 0a 61 6c 73 6f  uto_vacuum].also
18f50 20 63 61 75 73 65 73 20 65 78 63 65 73 73 20 66   causes excess f
18f60 72 61 67 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20  ragmentation of 
18f70 74 68 65 20 64 61 74 61 62 61 73 65 20 66 69 6c  the database fil
18f80 65 2e 20 20 41 6e 64 20 5b 61 75 74 6f 5f 76 61  e.  And [auto_va
18f90 63 75 75 6d 5d 0a 64 6f 65 73 20 6e 6f 74 20 63  cuum].does not c
18fa0 6f 6d 70 61 63 74 20 70 61 72 74 69 61 6c 6c 79  ompact partially
18fb0 20 66 69 6c 6c 65 64 20 70 61 67 65 73 20 6f 66   filled pages of
18fc0 20 74 68 65 20 64 61 74 61 62 61 73 65 20 61 73   the database as
18fd0 20 56 41 43 55 55 4d 0a 64 6f 65 73 2e 3c 2f 70   VACUUM.does.</p
18fe0 3e 0a 0a 3c 70 3e 54 68 65 20 5b 70 61 67 65 5f  >..<p>The [page_
18ff0 73 69 7a 65 5d 20 61 6e 64 2f 6f 72 20 5b 61 75  size] and/or [au
19000 74 6f 5f 76 61 63 75 75 6d 5d 20 6d 6f 64 65 20  to_vacuum] mode 
19010 6f 66 20 61 20 64 61 74 61 62 61 73 65 20 63 61  of a database ca
19020 6e 20 62 65 20 63 68 61 6e 67 65 64 0a 62 79 20  n be changed.by 
19030 69 6e 76 6f 6b 69 6e 67 20 74 68 65 20 5b 70 61  invoking the [pa
19040 67 65 5f 73 69 7a 65 20 70 72 61 67 6d 61 5d 20  ge_size pragma] 
19050 61 6e 64 2f 6f 72 20 5b 61 75 74 6f 5f 76 61 63  and/or [auto_vac
19060 75 75 6d 20 70 72 61 67 6d 61 5d 20 61 6e 64 20  uum pragma] and 
19070 74 68 65 6e 0a 69 6d 6d 65 64 69 61 74 65 6c 79  then.immediately
19080 20 56 41 43 55 55 4d 69 6e 67 20 74 68 65 20 64   VACUUMing the d
19090 61 74 61 62 61 73 65 2e 3c 2f 70 3e 0a 0a 3c 74  atabase.</p>..<t
190a0 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23  cl>.############
190b0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
190c0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
190d0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
190e0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
190f0 23 23 0a 53 65 63 74 69 6f 6e 20 7b 49 4e 44 45  ##.Section {INDE
19100 58 45 44 20 42 59 7d 20 69 6e 64 65 78 65 64 62  XED BY} indexedb
19110 79 20 7b 7b 49 4e 44 45 58 45 44 20 42 59 7d 20  y {{INDEXED BY} 
19120 7b 4e 4f 54 20 49 4e 44 45 58 45 44 7d 7d 0a 0a  {NOT INDEXED}}..
19130 3c 2f 74 63 6c 3e 0a 3c 70 3e 54 68 65 20 49 4e  </tcl>.<p>The IN
19140 44 45 58 45 44 20 42 59 20 70 68 72 61 73 65 20  DEXED BY phrase 
19150 69 73 20 61 20 53 51 4c 20 65 78 74 65 6e 73 69  is a SQL extensi
19160 6f 6e 20 66 6f 75 6e 64 20 6f 6e 6c 79 20 69 6e  on found only in
19170 20 53 51 4c 69 74 65 20 77 68 69 63 68 20 63 61   SQLite which ca
19180 6e 0a 62 65 20 75 73 65 64 20 74 6f 20 76 65 72  n.be used to ver
19190 69 66 79 20 74 68 61 74 20 74 68 65 20 63 6f 72  ify that the cor
191a0 72 65 63 74 20 69 6e 64 69 63 65 73 20 61 72 65  rect indices are
191b0 20 62 65 69 6e 67 20 75 73 65 64 20 6f 6e 20 61   being used on a
191c0 20 5b 44 45 4c 45 54 45 5d 2c 0a 5b 53 45 4c 45   [DELETE],.[SELE
191d0 43 54 5d 2c 20 6f 72 20 5b 55 50 44 41 54 45 5d  CT], or [UPDATE]
191e0 20 73 74 61 74 65 6d 65 6e 74 2e 0a 54 68 65 20   statement..The 
191f0 49 4e 44 45 58 45 44 20 42 59 20 70 68 72 61 73  INDEXED BY phras
19200 65 20 61 6c 77 61 79 73 20 66 6f 6c 6c 6f 77 73  e always follows
19210 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 61 20 74   the name of a t
19220 61 62 6c 65 20 74 68 61 74 20 53 51 4c 69 74 65  able that SQLite
19230 20 77 69 6c 6c 0a 62 65 20 72 65 61 64 69 6e 67   will.be reading
19240 2e 20 20 54 68 65 20 49 4e 44 45 58 45 44 20 42  .  The INDEXED B
19250 59 20 70 68 72 61 73 65 20 63 61 6e 20 62 65 20  Y phrase can be 
19260 73 65 65 6e 20 69 6e 20 74 68 65 20 66 6f 6c 6c  seen in the foll
19270 6f 77 69 6e 67 20 73 79 6e 74 61 78 0a 64 69 61  owing syntax.dia
19280 67 72 61 6d 73 3a 3c 2f 70 3e 0a 0a 3c 74 63 6c  grams:</p>..<tcl
19290 3e 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20  >.BubbleDiagram 
192a0 71 75 61 6c 69 66 69 65 64 2d 74 61 62 6c 65 2d  qualified-table-
192b0 6e 61 6d 65 0a 42 75 62 62 6c 65 44 69 61 67 72  name.BubbleDiagr
192c0 61 6d 20 73 69 6e 67 6c 65 2d 73 6f 75 72 63 65  am single-source
192d0 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20  .</tcl>..<p>The 
192e0 22 49 4e 44 45 58 45 44 20 42 59 20 69 6e 64 65  "INDEXED BY inde
192f0 78 2d 6e 61 6d 65 22 20 63 6c 61 75 73 65 20 73  x-name" clause s
19300 70 65 63 69 66 69 65 73 20 74 68 61 74 20 74 68  pecifies that th
19310 65 20 6e 61 6d 65 64 20 69 6e 64 65 78 0a 6d 75  e named index.mu
19320 73 74 20 62 65 20 75 73 65 64 20 69 6e 20 6f 72  st be used in or
19330 64 65 72 20 74 6f 20 6c 6f 6f 6b 20 75 70 20 76  der to look up v
19340 61 6c 75 65 73 20 6f 6e 20 74 68 65 20 70 72 65  alues on the pre
19350 63 65 64 69 6e 67 20 74 61 62 6c 65 2e 0a 49 66  ceding table..If
19360 20 69 6e 64 65 78 2d 6e 61 6d 65 20 64 6f 65 73   index-name does
19370 20 6e 6f 74 20 65 78 69 73 74 20 6f 72 20 63 61   not exist or ca
19380 6e 6e 6f 74 20 62 65 20 75 73 65 64 20 66 6f 72  nnot be used for
19390 20 74 68 65 20 71 75 65 72 79 2c 20 74 68 65 6e   the query, then
193a0 0a 74 68 65 20 70 72 65 70 61 72 61 74 69 6f 6e  .the preparation
193b0 20 6f 66 20 74 68 65 20 53 51 4c 20 73 74 61 74   of the SQL stat
193c0 65 6d 65 6e 74 20 66 61 69 6c 73 2e 0a 54 68 65  ement fails..The
193d0 20 22 4e 4f 54 20 49 4e 44 45 58 45 44 22 20 63   "NOT INDEXED" c
193e0 6c 61 75 73 65 20 73 70 65 63 69 66 69 65 73 20  lause specifies 
193f0 74 68 61 74 20 6e 6f 20 69 6e 64 65 78 20 73 68  that no index sh
19400 61 6c 6c 20 62 65 20 75 73 65 64 20 77 68 65 6e  all be used when
19410 0a 61 63 63 65 73 73 69 6e 67 20 74 68 65 20 70  .accessing the p
19420 72 65 63 65 64 69 6e 67 20 74 61 62 6c 65 2c 20  receding table, 
19430 69 6e 63 6c 75 64 69 6e 67 20 69 6d 70 6c 69 65  including implie
19440 64 20 69 6e 64 69 63 65 73 20 63 72 65 61 74 65  d indices create
19450 20 62 79 0a 55 4e 49 51 55 45 20 61 6e 64 20 50   by.UNIQUE and P
19460 52 49 4d 41 52 59 20 4b 45 59 20 63 6f 6e 73 74  RIMARY KEY const
19470 72 61 69 6e 74 73 2e 20 20 48 6f 77 65 76 65 72  raints.  However
19480 2c 20 74 68 65 20 49 4e 54 45 47 45 52 20 50 52  , the INTEGER PR
19490 49 4d 41 52 59 20 4b 45 59 0a 63 61 6e 20 73 74  IMARY KEY.can st
194a0 69 6c 6c 20 62 65 20 75 73 65 64 20 74 6f 20 6c  ill be used to l
194b0 6f 6f 6b 20 75 70 20 65 6e 74 72 69 65 73 20 65  ook up entries e
194c0 76 65 6e 20 77 68 65 6e 20 22 4e 4f 54 20 49 4e  ven when "NOT IN
194d0 44 45 58 45 44 22 20 69 73 20 73 70 65 63 69 66  DEXED" is specif
194e0 69 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 53 6f 6d  ied.</p>..<p>Som
194f0 65 20 53 51 4c 20 64 61 74 61 62 61 73 65 20 65  e SQL database e
19500 6e 67 69 6e 65 73 20 70 72 6f 76 69 64 65 20 6e  ngines provide n
19510 6f 6e 2d 73 74 61 6e 64 61 72 64 20 22 68 69 6e  on-standard "hin
19520 74 22 20 6d 65 63 68 61 6e 69 73 6d 73 20 77 68  t" mechanisms wh
19530 69 63 68 0a 63 61 6e 20 62 65 20 75 73 65 64 20  ich.can be used 
19540 74 6f 20 67 69 76 65 20 74 68 65 20 71 75 65 72  to give the quer
19550 79 20 6f 70 74 69 6d 69 7a 65 72 20 63 6c 75 65  y optimizer clue
19560 73 20 61 62 6f 75 74 20 77 68 61 74 20 69 6e 64  s about what ind
19570 69 63 65 73 20 69 74 20 73 68 6f 75 6c 64 0a 75  ices it should.u
19580 73 65 20 66 6f 72 20 61 20 70 61 72 74 69 63 75  se for a particu
19590 6c 61 72 20 73 74 61 74 65 6d 65 6e 74 2e 20 20  lar statement.  
195a0 54 68 65 20 49 4e 44 45 58 20 42 59 20 63 6c 61  The INDEX BY cla
195b0 75 73 65 20 6f 66 20 53 51 4c 69 74 65 20 69 73  use of SQLite is
195c0 20 0a 3c 65 6d 3e 6e 6f 74 3c 2f 65 6d 3e 20 61   .<em>not</em> a
195d0 20 68 69 6e 74 69 6e 67 20 6d 65 63 68 61 6e 69   hinting mechani
195e0 73 6d 20 61 6e 64 20 69 74 20 73 68 6f 75 6c 64  sm and it should
195f0 20 6e 6f 74 20 62 65 20 75 73 65 64 20 61 73 20   not be used as 
19600 73 75 63 68 2e 0a 54 68 65 20 49 4e 44 45 58 45  such..The INDEXE
19610 44 20 42 59 20 63 6c 61 75 73 65 20 64 6f 65 73  D BY clause does
19620 20 6e 6f 74 20 67 69 76 65 20 74 68 65 20 6f 70   not give the op
19630 74 69 6d 69 7a 65 72 20 68 69 6e 74 73 20 61 62  timizer hints ab
19640 6f 75 74 20 77 68 69 63 68 20 69 6e 64 65 78 0a  out which index.
19650 74 6f 20 75 73 65 3b 20 69 74 20 67 69 76 65 73  to use; it gives
19660 20 74 68 65 20 6f 70 74 69 6d 69 7a 65 72 20 61   the optimizer a
19670 20 72 65 71 75 69 72 65 6d 65 6e 74 20 6f 66 20   requirement of 
19680 77 68 69 63 68 20 69 6e 64 65 78 20 74 6f 20 75  which index to u
19690 73 65 2e 0a 49 66 20 74 68 65 20 71 75 65 72 79  se..If the query
196a0 20 6f 70 74 69 6d 69 7a 65 72 20 69 73 20 75 6e   optimizer is un
196b0 61 62 6c 65 20 74 6f 20 75 73 65 20 74 68 65 20  able to use the 
196c0 69 6e 64 65 78 20 73 70 65 63 69 66 69 65 64 20  index specified 
196d0 62 79 20 74 68 65 0a 49 4e 44 45 58 20 42 59 20  by the.INDEX BY 
196e0 63 6c 61 75 73 65 2c 20 74 68 65 6e 20 74 68 65  clause, then the
196f0 20 71 75 65 72 79 20 77 69 6c 6c 20 66 61 69 6c   query will fail
19700 20 77 69 74 68 20 61 6e 20 65 72 72 6f 72 2e 3c   with an error.<
19710 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 49 4e 44 45  /p>..<p>The INDE
19720 58 45 44 20 42 59 20 63 6c 61 75 73 65 20 69 73  XED BY clause is
19730 20 3c 65 6d 3e 6e 6f 74 3c 2f 65 6d 3e 20 69 6e   <em>not</em> in
19740 74 65 6e 64 65 64 20 66 6f 72 20 75 73 65 20 69  tended for use i
19750 6e 20 74 75 6e 69 6e 67 0a 74 68 65 20 70 72 65  n tuning.the pre
19760 66 6f 72 6d 61 6e 63 65 20 6f 66 20 61 20 71 75  formance of a qu
19770 65 72 79 2e 20 20 54 68 65 20 69 6e 74 65 6e 74  ery.  The intent
19780 20 6f 66 20 74 68 65 20 49 4e 44 45 58 45 44 20   of the INDEXED 
19790 42 59 20 63 6c 61 75 73 65 20 69 73 0a 74 6f 20  BY clause is.to 
197a0 72 61 69 73 65 20 61 20 72 75 6e 2d 74 69 6d 65  raise a run-time
197b0 20 65 72 72 6f 72 20 69 66 20 61 20 73 63 68 65   error if a sche
197c0 6d 61 20 63 68 61 6e 67 65 2c 20 73 75 63 68 20  ma change, such 
197d0 61 73 20 64 72 6f 70 70 69 6e 67 20 6f 72 0a 63  as dropping or.c
197e0 72 65 61 74 69 6e 67 20 61 6e 20 69 6e 64 65 78  reating an index
197f0 2c 20 63 61 75 73 65 73 20 74 68 65 20 71 75 65  , causes the que
19800 72 79 20 70 6c 61 6e 20 66 6f 72 20 61 20 74 69  ry plan for a ti
19810 6d 65 2d 73 65 6e 73 69 74 69 76 65 20 71 75 65  me-sensitive que
19820 72 79 0a 74 6f 20 63 68 61 6e 67 65 2e 20 20 54  ry.to change.  T
19830 68 65 20 49 4e 44 45 58 45 44 20 42 59 20 63 6c  he INDEXED BY cl
19840 61 75 73 65 20 69 73 20 64 65 73 69 67 6e 65 64  ause is designed
19850 20 74 6f 20 68 65 6c 70 20 64 65 74 65 63 74 0a   to help detect.
19860 75 6e 64 65 73 69 72 61 62 6c 65 20 71 75 65 72  undesirable quer
19870 79 20 70 6c 61 6e 20 63 68 61 6e 67 65 73 20 64  y plan changes d
19880 75 72 69 6e 67 20 72 65 67 72 65 73 73 69 6f 6e  uring regression
19890 20 74 65 73 74 69 6e 67 2e 0a 44 65 76 65 6c 6f   testing..Develo
198a0 70 65 72 73 20 61 72 65 20 61 64 6d 6f 6e 69 73  pers are admonis
198b0 68 65 64 20 74 6f 20 6f 6d 69 74 20 61 6c 6c 20  hed to omit all 
198c0 75 73 65 20 6f 66 20 49 4e 44 45 58 45 44 20 42  use of INDEXED B
198d0 59 20 64 75 72 69 6e 67 0a 61 70 70 6c 69 63 61  Y during.applica
198e0 74 69 6f 6e 20 64 65 73 69 67 6e 2c 20 69 6d 70  tion design, imp
198f0 6c 65 6d 65 6e 74 61 74 69 6f 6e 2c 20 74 65 73  lementation, tes
19900 74 69 6e 67 2c 20 61 6e 64 20 74 75 6e 69 6e 67  ting, and tuning
19910 2e 20 20 49 66 0a 49 4e 44 45 58 45 44 20 42 59  .  If.INDEXED BY
19920 20 69 73 20 74 6f 20 62 65 20 75 73 65 64 20 61   is to be used a
19930 74 20 61 6c 6c 2c 20 69 74 20 73 68 6f 75 6c 64  t all, it should
19940 20 62 65 20 69 6e 73 65 72 74 65 64 20 61 74 20   be inserted at 
19950 74 68 65 20 76 65 72 79 0a 65 6e 64 20 6f 66 20  the very.end of 
19960 74 68 65 20 64 65 76 65 6c 6f 70 6d 65 6e 74 20  the development 
19970 70 72 6f 63 65 73 73 20 77 68 65 6e 20 22 6c 6f  process when "lo
19980 63 6b 69 6e 67 20 64 6f 77 6e 22 20 61 20 64 65  cking down" a de
19990 73 69 67 6e 2e 3c 2f 70 3e 0a 0a 3c 68 33 3e 53  sign.</p>..<h3>S
199a0 65 65 20 41 6c 73 6f 3a 3c 2f 68 33 3e 0a 0a 3c  ee Also:</h3>..<
199b0 70 3e 54 68 65 20 5b 73 71 6c 69 74 65 33 5f 73  p>The [sqlite3_s
199c0 74 6d 74 5f 73 74 61 74 75 73 28 29 5d 20 43 2f  tmt_status()] C/
199d0 43 2b 2b 20 69 6e 74 65 72 66 61 63 65 20 74 6f  C++ interface to
199e0 67 65 74 68 65 72 20 77 69 74 68 20 74 68 65 0a  gether with the.
199f0 5b 53 51 4c 49 54 45 5f 53 54 4d 54 53 54 41 54  [SQLITE_STMTSTAT
19a00 55 53 5f 46 55 4c 4c 53 43 41 4e 5f 53 54 45 50  US_FULLSCAN_STEP
19a10 5d 20 61 6e 64 20 5b 53 51 4c 49 54 45 5f 53 54  ] and [SQLITE_ST
19a20 4d 54 53 54 41 54 55 53 5f 53 4f 52 54 5d 20 76  MTSTATUS_SORT] v
19a30 65 72 62 73 0a 63 61 6e 20 62 65 20 75 73 65 64  erbs.can be used
19a40 20 74 6f 20 64 65 74 65 63 74 20 61 74 20 72 75   to detect at ru
19a50 6e 2d 74 69 6d 65 20 77 68 65 6e 20 61 6e 20 53  n-time when an S
19a60 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20  QL statement is 
19a70 6e 6f 74 0a 6d 61 6b 69 6e 67 20 65 66 66 65 63  not.making effec
19a80 74 69 76 65 20 75 73 65 20 6f 66 20 69 6e 64 69  tive use of indi
19a90 63 65 73 2e 20 20 4d 61 6e 79 20 61 70 70 6c 69  ces.  Many appli
19aa0 63 61 74 69 6f 6e 73 20 6d 61 79 20 70 72 65 66  cations may pref
19ab0 65 72 20 74 6f 0a 75 73 65 20 74 68 65 20 5b 73  er to.use the [s
19ac0 71 6c 69 74 65 33 5f 73 74 6d 74 5f 73 74 61 74  qlite3_stmt_stat
19ad0 75 73 28 29 5d 20 69 6e 74 65 72 66 61 63 65 20  us()] interface 
19ae0 74 6f 20 64 65 74 65 63 74 20 69 6e 64 65 78 20  to detect index 
19af0 6d 69 73 75 73 65 0a 72 61 74 68 65 72 20 74 68  misuse.rather th
19b00 61 6e 20 74 68 65 20 49 4e 44 45 58 45 44 20 42  an the INDEXED B
19b10 59 20 70 68 72 61 73 65 20 64 65 73 63 72 69 62  Y phrase describ
19b20 65 64 20 68 65 72 65 2e 3c 2f 70 3e 0a 0a 3c 74  ed here.</p>..<t
19b30 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23  cl>.############
19b40 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
19b50 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
19b60 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
19b70 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
19b80 23 0a 23 20 41 20 6c 69 73 74 20 6f 66 20 6b 65  #.# A list of ke
19b90 79 77 6f 72 64 73 2e 20 20 41 20 61 73 74 65 72  ywords.  A aster
19ba0 69 73 6b 20 6f 63 63 75 72 73 20 61 66 74 65 72  isk occurs after
19bb0 20 74 68 65 20 6b 65 79 77 6f 72 64 20 69 66 20   the keyword if 
19bc0 69 74 20 69 73 20 6f 6e 0a 23 20 74 68 65 20 66  it is on.# the f
19bd0 61 6c 6c 62 61 63 6b 20 6c 69 73 74 2e 0a 23 0a  allback list..#.
19be0 73 65 74 20 6b 65 79 77 6f 72 64 5f 6c 69 73 74  set keyword_list
19bf0 20 5b 6c 73 6f 72 74 20 7b 0a 20 20 20 41 42 4f   [lsort {.   ABO
19c00 52 54 2a 0a 20 20 20 41 44 44 0a 20 20 20 41 46  RT*.   ADD.   AF
19c10 54 45 52 2a 0a 20 20 20 41 4c 4c 0a 20 20 20 41  TER*.   ALL.   A
19c20 4c 54 45 52 0a 20 20 20 41 4e 41 4c 59 5a 45 2a  LTER.   ANALYZE*
19c30 0a 20 20 20 41 4e 44 0a 20 20 20 41 53 0a 20 20  .   AND.   AS.  
19c40 20 41 53 43 2a 0a 20 20 20 41 54 54 41 43 48 2a   ASC*.   ATTACH*
19c50 0a 20 20 20 41 55 54 4f 49 4e 43 52 45 4d 45 4e  .   AUTOINCREMEN
19c60 54 0a 20 20 20 42 45 46 4f 52 45 2a 0a 20 20 20  T.   BEFORE*.   
19c70 42 45 47 49 4e 2a 0a 20 20 20 42 45 54 57 45 45  BEGIN*.   BETWEE
19c80 4e 0a 20 20 20 42 59 2a 0a 20 20 20 43 41 53 43  N.   BY*.   CASC
19c90 41 44 45 2a 0a 20 20 20 43 41 53 45 0a 20 20 20  ADE*.   CASE.   
19ca0 43 41 53 54 2a 0a 20 20 20 43 48 45 43 4b 0a 20  CAST*.   CHECK. 
19cb0 20 20 43 4f 4c 4c 41 54 45 0a 20 20 20 43 4f 4c    COLLATE.   COL
19cc0 55 4d 4e 2a 0a 20 20 20 43 4f 4d 4d 49 54 0a 20  UMN*.   COMMIT. 
19cd0 20 20 43 4f 4e 46 4c 49 43 54 2a 0a 20 20 20 43    CONFLICT*.   C
19ce0 4f 4e 53 54 52 41 49 4e 54 0a 20 20 20 43 52 45  ONSTRAINT.   CRE
19cf0 41 54 45 0a 20 20 20 43 52 4f 53 53 0a 20 20 20  ATE.   CROSS.   
19d00 43 55 52 52 45 4e 54 5f 44 41 54 45 2a 0a 20 20  CURRENT_DATE*.  
19d10 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 2a 0a 20   CURRENT_TIME*. 
19d20 20 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 53 54    CURRENT_TIMEST
19d30 41 4d 50 2a 0a 20 20 20 44 41 54 41 42 41 53 45  AMP*.   DATABASE
19d40 2a 0a 20 20 20 44 45 46 41 55 4c 54 0a 20 20 20  *.   DEFAULT.   
19d50 44 45 46 45 52 52 45 44 2a 0a 20 20 20 44 45 46  DEFERRED*.   DEF
19d60 45 52 52 41 42 4c 45 0a 20 20 20 44 45 4c 45 54  ERRABLE.   DELET
19d70 45 0a 20 20 20 44 45 53 43 2a 0a 20 20 20 44 45  E.   DESC*.   DE
19d80 54 41 43 48 2a 0a 20 20 20 44 49 53 54 49 4e 43  TACH*.   DISTINC
19d90 54 0a 20 20 20 44 52 4f 50 0a 20 20 20 45 4e 44  T.   DROP.   END
19da0 2a 0a 20 20 20 45 41 43 48 2a 0a 20 20 20 45 4c  *.   EACH*.   EL
19db0 53 45 0a 20 20 20 45 53 43 41 50 45 0a 20 20 20  SE.   ESCAPE.   
19dc0 45 58 43 45 50 54 0a 20 20 20 45 58 43 4c 55 53  EXCEPT.   EXCLUS
19dd0 49 56 45 2a 0a 20 20 20 45 58 49 53 54 53 0a 20  IVE*.   EXISTS. 
19de0 20 20 45 58 50 4c 41 49 4e 2a 0a 20 20 20 46 41    EXPLAIN*.   FA
19df0 49 4c 2a 0a 20 20 20 46 4f 52 2a 0a 20 20 20 46  IL*.   FOR*.   F
19e00 4f 52 45 49 47 4e 0a 20 20 20 46 52 4f 4d 0a 20  OREIGN.   FROM. 
19e10 20 20 46 55 4c 4c 0a 20 20 20 47 4c 4f 42 2a 0a    FULL.   GLOB*.
19e20 20 20 20 47 52 4f 55 50 0a 20 20 20 48 41 56 49     GROUP.   HAVI
19e30 4e 47 0a 20 20 20 49 46 2a 0a 20 20 20 49 47 4e  NG.   IF*.   IGN
19e40 4f 52 45 2a 0a 20 20 20 49 4d 4d 45 44 49 41 54  ORE*.   IMMEDIAT
19e50 45 2a 0a 20 20 20 49 4e 0a 20 20 20 49 4e 44 45  E*.   IN.   INDE
19e60 58 0a 20 20 20 49 4e 44 45 58 45 44 2a 0a 20 20  X.   INDEXED*.  
19e70 20 49 4e 49 54 49 41 4c 4c 59 2a 0a 20 20 20 49   INITIALLY*.   I
19e80 4e 4e 45 52 0a 20 20 20 49 4e 53 45 52 54 0a 20  NNER.   INSERT. 
19e90 20 20 49 4e 53 54 45 41 44 2a 0a 20 20 20 49 4e    INSTEAD*.   IN
19ea0 54 45 52 53 45 43 54 0a 20 20 20 49 4e 54 4f 0a  TERSECT.   INTO.
19eb0 20 20 20 49 53 0a 20 20 20 49 53 4e 55 4c 4c 0a     IS.   ISNULL.
19ec0 20 20 20 4a 4f 49 4e 0a 20 20 20 4b 45 59 2a 0a     JOIN.   KEY*.
19ed0 20 20 20 4c 45 46 54 0a 20 20 20 4c 49 4b 45 2a     LEFT.   LIKE*
19ee0 0a 20 20 20 4c 49 4d 49 54 0a 20 20 20 4d 41 54  .   LIMIT.   MAT
19ef0 43 48 2a 0a 20 20 20 4e 41 54 55 52 41 4c 0a 20  CH*.   NATURAL. 
19f00 20 20 4e 4f 54 0a 20 20 20 4e 4f 54 4e 55 4c 4c    NOT.   NOTNULL
19f10 0a 20 20 20 4e 55 4c 4c 0a 20 20 20 4f 46 2a 0a  .   NULL.   OF*.
19f20 20 20 20 4f 46 46 53 45 54 2a 0a 20 20 20 4f 4e     OFFSET*.   ON
19f30 0a 20 20 20 4f 52 0a 20 20 20 4f 52 44 45 52 0a  .   OR.   ORDER.
19f40 20 20 20 4f 55 54 45 52 0a 20 20 20 50 4c 41 4e     OUTER.   PLAN
19f50 2a 0a 20 20 20 50 52 41 47 4d 41 2a 0a 20 20 20  *.   PRAGMA*.   
19f60 50 52 49 4d 41 52 59 0a 20 20 20 51 55 45 52 59  PRIMARY.   QUERY
19f70 2a 0a 20 20 20 52 41 49 53 45 2a 0a 20 20 20 52  *.   RAISE*.   R
19f80 45 46 45 52 45 4e 43 45 53 0a 20 20 20 52 45 47  EFERENCES.   REG
19f90 45 58 50 2a 0a 20 20 20 52 45 49 4e 44 45 58 2a  EXP*.   REINDEX*
19fa0 0a 20 20 20 52 45 4c 45 41 53 45 2a 0a 20 20 20  .   RELEASE*.   
19fb0 52 45 4e 41 4d 45 2a 0a 20 20 20 52 45 50 4c 41  RENAME*.   REPLA
19fc0 43 45 2a 0a 20 20 20 52 45 53 54 52 49 43 54 2a  CE*.   RESTRICT*
19fd0 0a 20 20 20 52 49 47 48 54 0a 20 20 20 52 4f 4c  .   RIGHT.   ROL
19fe0 4c 42 41 43 4b 0a 20 20 20 52 4f 57 2a 0a 20 20  LBACK.   ROW*.  
19ff0 20 53 41 56 45 50 4f 49 4e 54 2a 0a 20 20 20 53   SAVEPOINT*.   S
1a000 45 4c 45 43 54 0a 20 20 20 53 45 54 0a 20 20 20  ELECT.   SET.   
1a010 54 41 42 4c 45 0a 20 20 20 54 45 4d 50 2a 0a 20  TABLE.   TEMP*. 
1a020 20 20 54 45 4d 50 4f 52 41 52 59 2a 0a 20 20 20    TEMPORARY*.   
1a030 54 48 45 4e 0a 20 20 20 54 4f 0a 20 20 20 54 52  THEN.   TO.   TR
1a040 41 4e 53 41 43 54 49 4f 4e 0a 20 20 20 54 52 49  ANSACTION.   TRI
1a050 47 47 45 52 2a 0a 20 20 20 55 4e 49 4f 4e 0a 20  GGER*.   UNION. 
1a060 20 20 55 4e 49 51 55 45 0a 20 20 20 55 50 44 41    UNIQUE.   UPDA
1a070 54 45 0a 20 20 20 55 53 49 4e 47 0a 20 20 20 56  TE.   USING.   V
1a080 41 43 55 55 4d 2a 0a 20 20 20 56 41 4c 55 45 53  ACUUM*.   VALUES
1a090 0a 20 20 20 56 49 45 57 2a 0a 20 20 20 56 49 52  .   VIEW*.   VIR
1a0a0 54 55 41 4c 2a 0a 20 20 20 57 48 45 4e 0a 20 20  TUAL*.   WHEN.  
1a0b0 20 57 48 45 52 45 0a 7d 5d 0a 0a 68 64 5f 70 75   WHERE.}]..hd_pu
1a0c0 74 73 20 7b 3c 44 49 56 20 63 6c 61 73 73 3d 22  ts {<DIV class="
1a0d0 70 64 66 5f 73 65 63 74 69 6f 6e 22 3e 7d 0a 53  pdf_section">}.S
1a0e0 65 63 74 69 6f 6e 20 7b 53 51 4c 69 74 65 20 4b  ection {SQLite K
1a0f0 65 79 77 6f 72 64 73 7d 20 6b 65 79 77 6f 72 64  eywords} keyword
1a100 73 20 7b 7b 53 51 4c 20 6b 65 79 77 6f 72 64 7d  s {{SQL keyword}
1a110 20 7b 53 51 4c 20 6b 65 79 77 6f 72 64 73 7d 7d   {SQL keywords}}
1a120 0a 68 64 5f 70 75 74 73 20 7b 3c 2f 44 49 56 3e  .hd_puts {</DIV>
1a130 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 65  }.</tcl>..<p>The
1a140 20 53 51 4c 20 73 74 61 6e 64 61 72 64 20 73 70   SQL standard sp
1a150 65 63 69 66 69 65 73 20 61 20 68 75 67 65 20 6e  ecifies a huge n
1a160 75 6d 62 65 72 20 6f 66 20 6b 65 79 77 6f 72 64  umber of keyword
1a170 73 20 77 68 69 63 68 20 6d 61 79 20 6e 6f 74 0a  s which may not.
1a180 62 65 20 75 73 65 64 20 61 73 20 74 68 65 20 6e  be used as the n
1a190 61 6d 65 73 20 6f 66 20 74 61 62 6c 65 73 2c 20  ames of tables, 
1a1a0 69 6e 64 69 63 65 73 2c 20 63 6f 6c 75 6d 6e 73  indices, columns
1a1b0 2c 20 64 61 74 61 62 61 73 65 73 2c 20 75 73 65  , databases, use
1a1c0 72 2d 64 65 66 69 6e 65 64 0a 66 75 6e 63 74 69  r-defined.functi
1a1d0 6f 6e 73 2c 20 63 6f 6c 6c 61 74 69 6f 6e 73 2c  ons, collations,
1a1e0 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 6d   virtual table m
1a1f0 6f 64 75 6c 65 73 2c 20 6f 72 20 61 6e 79 20 6f  odules, or any o
1a200 74 68 65 72 20 6e 61 6d 65 64 20 6f 62 6a 65 63  ther named objec
1a210 74 2e 0a 54 68 65 20 6c 69 73 74 20 6f 66 20 6b  t..The list of k
1a220 65 79 77 6f 72 64 73 20 69 73 20 73 6f 20 6c 6f  eywords is so lo
1a230 6e 67 20 74 68 61 74 20 66 65 77 20 70 65 6f 70  ng that few peop
1a240 6c 65 20 63 61 6e 20 72 65 6d 65 6d 62 65 72 20  le can remember 
1a250 74 68 65 6d 20 61 6c 6c 2e 0a 46 6f 72 20 6d 6f  them all..For mo
1a260 73 74 20 53 51 4c 20 63 6f 64 65 2c 20 79 6f 75  st SQL code, you
1a270 72 20 73 61 66 65 73 74 20 62 65 74 20 69 73 20  r safest bet is 
1a280 74 6f 20 6e 65 76 65 72 20 75 73 65 20 61 6e 79  to never use any
1a290 20 45 6e 67 6c 69 73 68 20 6c 61 6e 67 75 61 67   English languag
1a2a0 65 0a 77 6f 72 64 20 61 73 20 74 68 65 20 6e 61  e.word as the na
1a2b0 6d 65 20 6f 66 20 61 20 75 73 65 72 2d 64 65 66  me of a user-def
1a2c0 69 6e 65 64 20 6f 62 6a 65 63 74 2e 3c 2f 70 3e  ined object.</p>
1a2d0 0a 0a 3c 70 3e 49 66 20 79 6f 75 20 77 61 6e 74  ..<p>If you want
1a2e0 20 74 6f 20 75 73 65 20 61 20 6b 65 79 77 6f 72   to use a keywor
1a2f0 64 20 61 73 20 61 20 6e 61 6d 65 2c 20 79 6f 75  d as a name, you
1a300 20 6e 65 65 64 20 74 6f 20 71 75 6f 74 65 20 69   need to quote i
1a310 74 2e 20 20 54 68 65 72 65 0a 61 72 65 20 74 68  t.  There.are th
1a320 72 65 65 20 77 61 79 73 20 6f 66 20 71 75 6f 74  ree ways of quot
1a330 69 6e 67 20 6b 65 79 77 6f 72 64 73 20 69 6e 20  ing keywords in 
1a340 53 51 4c 69 74 65 3a 3c 2f 70 3e 0a 0a 3c 70 3e  SQLite:</p>..<p>
1a350 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 3c 74  .<blockquote>.<t
1a360 61 62 6c 65 3e 0a 3c 74 72 3e 09 3c 74 64 20 76  able>.<tr>.<td v
1a370 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 3c 62 3e 27  align="top"><b>'
1a380 6b 65 79 77 6f 72 64 27 3c 2f 62 3e 3c 2f 74 64  keyword'</b></td
1a390 3e 3c 74 64 20 77 69 64 74 68 3d 22 32 30 22 3e  ><td width="20">
1a3a0 3c 2f 74 64 3e 0a 09 3c 74 64 3e 41 20 6b 65 79  </td>..<td>A key
1a3b0 77 6f 72 64 20 69 6e 20 73 69 6e 67 6c 65 20 71  word in single q
1a3c0 75 6f 74 65 73 20 69 73 20 61 20 73 74 72 69 6e  uotes is a strin
1a3d0 67 20 6c 69 74 65 72 61 6c 2e 3c 2f 74 64 3e 3c  g literal.</td><
1a3e0 2f 74 72 3e 0a 0a 3c 74 72 3e 09 3c 74 64 20 76  /tr>..<tr>.<td v
1a3f0 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 3c 62 3e 22  align="top"><b>"
1a400 6b 65 79 77 6f 72 64 22 3c 2f 62 3e 3c 2f 74 64  keyword"</b></td
1a410 3e 3c 74 64 3e 3c 2f 74 64 3e 0a 09 3c 74 64 3e  ><td></td>..<td>
1a420 41 20 6b 65 79 77 6f 72 64 20 69 6e 20 64 6f 75  A keyword in dou
1a430 62 6c 65 2d 71 75 6f 74 65 73 20 69 73 20 61 6e  ble-quotes is an
1a440 20 69 64 65 6e 74 69 66 69 65 72 3c 2f 74 64 3e   identifier</td>
1a450 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 09 3c 74 64 20  </tr>..<tr>.<td 
1a460 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 3c 62 3e  valign="top"><b>
1a470 26 23 39 31 3b 6b 65 79 77 6f 72 64 26 23 39 33  &#91;keyword&#93
1a480 3b 3c 2f 62 3e 3c 2f 74 64 3e 3c 74 64 3e 3c 2f  ;</b></td><td></
1a490 74 64 3e 0a 09 3c 74 64 3e 41 20 6b 65 79 77 6f  td>..<td>A keywo
1a4a0 72 64 20 65 6e 63 6c 6f 73 65 64 20 69 6e 20 73  rd enclosed in s
1a4b0 71 75 61 72 65 20 62 72 61 63 6b 65 74 73 20 69  quare brackets i
1a4c0 73 20 0a 20 20 20 20 20 20 20 20 61 6e 20 69 64  s .        an id
1a4d0 65 6e 74 69 66 69 65 72 2e 20 20 54 68 69 73 20  entifier.  This 
1a4e0 69 73 20 6e 6f 74 20 73 74 61 6e 64 61 72 64 20  is not standard 
1a4f0 53 51 4c 2e 20 20 54 68 69 73 20 71 75 6f 74 69  SQL.  This quoti
1a500 6e 67 20 6d 65 63 68 61 6e 69 73 6d 0a 20 20 20  ng mechanism.   
1a510 20 20 20 20 20 69 73 20 75 73 65 64 20 62 79 20       is used by 
1a520 4d 53 20 41 63 63 65 73 73 20 61 6e 64 20 53 51  MS Access and SQ
1a530 4c 20 53 65 72 76 65 72 20 61 6e 64 20 69 73 20  L Server and is 
1a540 69 6e 63 6c 75 64 65 64 20 69 6e 20 53 51 4c 69  included in SQLi
1a550 74 65 20 66 6f 72 0a 20 20 20 20 20 20 20 20 63  te for.        c
1a560 6f 6d 70 61 74 69 62 69 6c 69 74 79 2e 3c 2f 74  ompatibility.</t
1a570 64 3e 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 09 3c 74  d></tr>..<tr>.<t
1a580 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 3c  d valign="top"><
1a590 62 3e 26 23 39 36 3b 6b 65 79 77 6f 72 64 26 23  b>&#96;keyword&#
1a5a0 39 36 3b 3c 2f 62 3e 3c 2f 74 64 3e 3c 74 64 3e  96;</b></td><td>
1a5b0 3c 2f 74 64 3e 0a 09 3c 74 64 3e 41 20 6b 65 79  </td>..<td>A key
1a5c0 77 6f 72 64 20 65 6e 63 6c 6f 73 65 64 20 69 6e  word enclosed in
1a5d0 20 67 72 61 76 65 20 61 63 63 65 6e 74 73 20 28   grave accents (
1a5e0 41 53 43 49 49 20 63 6f 64 65 20 39 36 29 20 69  ASCII code 96) i
1a5f0 73 20 0a 20 20 20 20 20 20 20 20 61 6e 20 69 64  s .        an id
1a600 65 6e 74 69 66 69 65 72 2e 20 20 54 68 69 73 20  entifier.  This 
1a610 69 73 20 6e 6f 74 20 73 74 61 6e 64 61 72 64 20  is not standard 
1a620 53 51 4c 2e 20 20 54 68 69 73 20 71 75 6f 74 69  SQL.  This quoti
1a630 6e 67 20 6d 65 63 68 61 6e 69 73 6d 0a 20 20 20  ng mechanism.   
1a640 20 20 20 20 20 69 73 20 75 73 65 64 20 62 79 20       is used by 
1a650 4d 79 53 51 4c 20 61 6e 64 20 69 73 20 69 6e 63  MySQL and is inc
1a660 6c 75 64 65 64 20 69 6e 20 53 51 4c 69 74 65 20  luded in SQLite 
1a670 66 6f 72 0a 20 20 20 20 20 20 20 20 63 6f 6d 70  for.        comp
1a680 61 74 69 62 69 6c 69 74 79 2e 3c 2f 74 64 3e 3c  atibility.</td><
1a690 2f 74 72 3e 0a 3c 2f 74 61 62 6c 65 3e 0a 3c 2f  /tr>.</table>.</
1a6a0 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 3c 2f 70 3e  blockquote>.</p>
1a6b0 0a 0a 3c 70 3e 46 6f 72 20 72 65 73 69 6c 69 65  ..<p>For resilie
1a6c0 6e 63 65 20 77 68 65 6e 20 63 6f 6e 66 72 6f 6e  nce when confron
1a6d0 74 65 64 20 77 69 74 68 20 68 69 73 74 6f 72 69  ted with histori
1a6e0 63 61 6c 20 53 51 4c 20 73 74 61 74 65 6d 65 6e  cal SQL statemen
1a6f0 74 73 2c 20 53 51 4c 69 74 65 0a 77 69 6c 6c 20  ts, SQLite.will 
1a700 73 6f 6d 65 74 69 6d 65 73 20 62 65 6e 64 20 74  sometimes bend t
1a710 68 65 20 71 75 6f 74 69 6e 67 20 72 75 6c 65 73  he quoting rules
1a720 20 61 62 6f 76 65 3a 3c 2f 70 3e 0a 0a 3c 75 6c   above:</p>..<ul
1a730 3e 0a 3c 6c 69 3e 3c 70 3e 49 66 20 61 20 6b 65  >.<li><p>If a ke
1a740 79 77 6f 72 64 20 69 6e 20 73 69 6e 67 6c 65 0a  yword in single.
1a750 71 75 6f 74 65 73 20 28 65 78 3a 20 3c 62 3e 27  quotes (ex: <b>'
1a760 6b 65 79 27 3c 2f 62 3e 20 6f 72 20 3c 62 3e 27  key'</b> or <b>'
1a770 67 6c 6f 62 27 3c 2f 62 3e 29 20 69 73 20 75 73  glob'</b>) is us
1a780 65 64 20 69 6e 20 61 20 63 6f 6e 74 65 78 74 20  ed in a context 
1a790 77 68 65 72 65 0a 61 6e 20 69 64 65 6e 74 69 66  where.an identif
1a7a0 69 65 72 20 69 73 20 61 6c 6c 6f 77 65 64 20 62  ier is allowed b
1a7b0 75 74 20 77 68 65 72 65 20 61 20 73 74 72 69 6e  ut where a strin
1a7c0 67 20 6c 69 74 65 72 61 6c 20 69 73 20 6e 6f 74  g literal is not
1a7d0 20 61 6c 6c 6f 77 65 64 2c 20 74 68 65 6e 0a 74   allowed, then.t
1a7e0 68 65 20 74 6f 6b 65 6e 20 69 73 20 75 6e 64 65  he token is unde
1a7f0 72 73 74 6f 6f 64 20 74 6f 20 62 65 20 61 6e 20  rstood to be an 
1a800 69 64 65 6e 74 69 66 69 65 72 20 69 6e 73 74 65  identifier inste
1a810 61 64 20 6f 66 20 61 20 73 74 72 69 6e 67 20 6c  ad of a string l
1a820 69 74 65 72 61 6c 2e 0a 3c 2f 70 3e 3c 2f 6c 69  iteral..</p></li
1a830 3e 0a 0a 3c 6c 69 3e 3c 70 3e 49 66 20 61 20 6b  >..<li><p>If a k
1a840 65 79 77 6f 72 64 20 69 6e 20 64 6f 75 62 6c 65  eyword in double
1a850 0a 71 75 6f 74 65 73 20 28 65 78 3a 20 3c 62 3e  .quotes (ex: <b>
1a860 22 6b 65 79 22 3c 2f 62 3e 20 6f 72 20 3c 62 3e  "key"</b> or <b>
1a870 22 67 6c 6f 62 22 3c 2f 62 3e 29 20 69 73 20 75  "glob"</b>) is u
1a880 73 65 64 20 69 6e 20 61 20 63 6f 6e 74 65 78 74  sed in a context
1a890 20 77 68 65 72 65 0a 69 74 20 63 61 6e 6e 6f 74   where.it cannot
1a8a0 20 62 65 20 72 65 73 6f 6c 76 65 64 20 74 6f 20   be resolved to 
1a8b0 61 6e 20 69 64 65 6e 74 69 66 69 65 72 20 62 75  an identifier bu
1a8c0 74 20 77 68 65 72 65 20 61 20 73 74 72 69 6e 67  t where a string
1a8d0 20 6c 69 74 65 72 61 6c 0a 69 73 20 61 6c 6c 6f   literal.is allo
1a8e0 77 65 64 2c 20 74 68 65 6e 20 74 68 65 20 74 6f  wed, then the to
1a8f0 6b 65 6e 20 69 73 20 75 6e 64 65 72 73 74 6f 6f  ken is understoo
1a900 64 20 74 6f 20 62 65 20 61 20 73 74 72 69 6e 67  d to be a string
1a910 20 6c 69 74 65 72 61 6c 20 69 6e 73 74 65 61 64   literal instead
1a920 0a 6f 66 20 61 6e 20 69 64 65 6e 74 69 66 65 72  .of an identifer
1a930 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e  .</p></li>.</ul>
1a940 0a 0a 3c 70 3e 50 72 6f 67 72 61 6d 6d 65 72 73  ..<p>Programmers
1a950 20 61 72 65 20 63 61 75 74 69 6f 6e 65 64 20 6e   are cautioned n
1a960 6f 74 20 74 6f 20 75 73 65 20 74 68 65 20 74 77  ot to use the tw
1a970 6f 20 65 78 63 65 70 74 69 6f 6e 73 20 64 65 73  o exceptions des
1a980 63 72 69 62 65 64 20 69 6e 0a 74 68 65 20 70 72  cribed in.the pr
1a990 65 76 69 6f 75 73 20 62 75 6c 6c 65 74 73 2e 20  evious bullets. 
1a9a0 20 57 65 20 65 6d 70 68 61 73 69 7a 65 20 74 68   We emphasize th
1a9b0 61 74 20 74 68 65 79 20 65 78 69 73 74 20 6f 6e  at they exist on
1a9c0 6c 79 20 73 6f 20 74 68 61 74 20 6f 6c 64 0a 61  ly so that old.a
1a9d0 6e 64 20 69 6c 6c 2d 66 6f 72 6d 65 64 20 53 51  nd ill-formed SQ
1a9e0 4c 20 73 74 61 74 65 6d 65 6e 74 73 20 77 69 6c  L statements wil
1a9f0 6c 20 72 75 6e 20 63 6f 72 72 65 63 74 6c 79 2e  l run correctly.
1aa00 20 20 46 75 74 75 72 65 20 76 65 72 73 69 6f 6e    Future version
1aa10 73 20 6f 66 0a 53 51 4c 69 74 65 20 6d 69 67 68  s of.SQLite migh
1aa20 74 20 63 68 61 6e 67 65 20 74 6f 20 72 61 69 73  t change to rais
1aa30 65 20 65 72 72 6f 72 73 20 69 6e 73 74 65 61 64  e errors instead
1aa40 20 6f 66 20 61 63 63 65 70 74 69 6e 67 20 74 68   of accepting th
1aa50 65 20 6d 61 6c 66 6f 72 6d 65 64 0a 73 74 61 74  e malformed.stat
1aa60 65 6d 65 6e 74 73 20 63 6f 76 65 72 65 64 20 62  ements covered b
1aa70 79 20 74 68 65 20 65 78 63 65 70 74 69 6f 6e 73  y the exceptions
1aa80 20 61 62 6f 76 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e   above.</p>..<p>
1aa90 53 51 4c 69 74 65 20 69 73 20 65 78 74 65 6e 64  SQLite is extend
1aaa0 65 64 20 74 6f 20 61 6c 6c 6f 77 20 6d 61 6e 79  ed to allow many
1aab0 20 6b 65 79 77 6f 72 64 73 20 74 6f 20 62 65 20   keywords to be 
1aac0 75 73 65 64 20 75 6e 71 75 6f 74 65 64 0a 61 73  used unquoted.as
1aad0 20 74 68 65 20 6e 61 6d 65 73 20 6f 66 20 64 61   the names of da
1aae0 74 61 62 61 73 65 73 2c 20 74 61 62 6c 65 73 2c  tabases, tables,
1aaf0 20 69 6e 64 69 63 65 73 2c 20 74 72 69 67 67 65   indices, trigge
1ab00 72 73 2c 20 76 69 65 77 73 2c 20 63 6f 6c 75 6d  rs, views, colum
1ab10 6e 73 2c 0a 75 73 65 72 2d 64 65 66 69 6e 65 64  ns,.user-defined
1ab20 20 66 75 6e 63 74 69 6f 6e 73 2c 20 63 6f 6c 6c   functions, coll
1ab30 61 74 69 6f 6e 73 2c 20 61 74 74 61 63 68 65 64  ations, attached
1ab40 20 64 61 74 61 62 61 73 65 73 2c 20 61 6e 64 20   databases, and 
1ab50 76 69 72 74 75 61 6c 0a 66 75 6e 63 74 69 6f 6e  virtual.function
1ab60 20 6d 6f 64 75 6c 65 73 2e 0a 49 6e 20 74 68 65   modules..In the
1ab70 20 6c 69 73 74 20 6f 66 20 6b 65 79 77 6f 72 64   list of keyword
1ab80 73 20 74 68 61 74 20 66 6f 6c 6c 6f 77 73 2c 20  s that follows, 
1ab90 74 68 6f 73 65 20 74 68 61 74 20 63 61 6e 20 62  those that can b
1aba0 65 20 75 73 65 64 20 61 73 20 69 64 65 6e 74 69  e used as identi
1abb0 66 69 65 72 73 0a 61 72 65 20 73 68 6f 77 6e 20  fiers.are shown 
1abc0 69 6e 20 61 6e 20 69 74 61 6c 69 63 20 66 6f 6e  in an italic fon
1abd0 74 2e 20 20 4b 65 79 77 6f 72 64 73 20 74 68 61  t.  Keywords tha
1abe0 74 20 6d 75 73 74 20 62 65 20 71 75 6f 74 65 64  t must be quoted
1abf0 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 62 65 0a   in order to be.
1ac00 75 73 65 64 20 61 73 20 69 64 65 6e 74 69 66 69  used as identifi
1ac10 65 72 73 20 61 72 65 20 73 68 6f 77 6e 20 69 6e  ers are shown in
1ac20 20 62 6f 6c 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 0a   bold.</p>..<p>.
1ac30 53 51 4c 69 74 65 20 61 64 64 73 20 6e 65 77 20  SQLite adds new 
1ac40 6b 65 79 77 6f 72 64 73 20 66 72 6f 6d 20 74 69  keywords from ti
1ac50 6d 65 20 74 6f 20 74 69 6d 65 20 77 68 65 6e 20  me to time when 
1ac60 69 74 20 74 61 6b 65 73 20 6f 6e 20 6e 65 77 20  it takes on new 
1ac70 66 65 61 74 75 72 65 73 2e 0a 53 6f 20 74 6f 20  features..So to 
1ac80 70 72 65 76 65 6e 74 20 79 6f 75 72 20 63 6f 64  prevent your cod
1ac90 65 20 66 72 6f 6d 20 62 65 69 6e 67 20 62 72 6f  e from being bro
1aca0 6b 65 6e 20 62 79 20 66 75 74 75 72 65 20 65 6e  ken by future en
1acb0 68 61 6e 63 65 6d 65 6e 74 73 2c 20 79 6f 75 20  hancements, you 
1acc0 73 68 6f 75 6c 64 0a 6e 6f 72 6d 61 6c 6c 79 20  should.normally 
1acd0 71 75 6f 74 65 20 61 6e 79 20 69 64 65 6e 74 69  quote any identi
1ace0 66 69 65 72 20 74 68 61 74 20 69 73 20 61 6e 20  fier that is an 
1acf0 45 6e 67 6c 69 73 68 20 6c 61 6e 67 75 61 67 65  English language
1ad00 20 77 6f 72 64 2c 20 65 76 65 6e 20 69 66 0a 79   word, even if.y
1ad10 6f 75 20 64 6f 20 6e 6f 74 20 68 61 76 65 20 74  ou do not have t
1ad20 6f 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 54 68 65  o..</p>..<p>.The
1ad30 20 66 6f 6c 6c 6f 77 69 6e 67 20 61 72 65 20 74   following are t
1ad40 68 65 20 6b 65 79 77 6f 72 64 73 20 63 75 72 72  he keywords curr
1ad50 65 6e 74 6c 79 20 72 65 63 6f 67 6e 69 7a 65 64  ently recognized
1ad60 20 62 79 20 53 51 4c 69 74 65 3a 0a 3c 2f 70 3e   by SQLite:.</p>
1ad70 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 3c  ..<blockquote>.<
1ad80 74 61 62 6c 65 20 77 69 64 74 68 3d 22 31 30 30  table width="100
1ad90 25 22 20 63 6c 61 73 73 3d 22 70 64 66 5f 6b 65  %" class="pdf_ke
1ada0 79 77 6f 72 64 73 22 3e 0a 3c 74 72 3e 0a 3c 74  ywords">.<tr>.<t
1adb0 64 20 61 6c 69 67 6e 3d 22 6c 65 66 74 22 20 76  d align="left" v
1adc0 61 6c 69 67 6e 3d 22 74 6f 70 22 20 77 69 64 74  align="top" widt
1add0 68 3d 22 32 30 25 22 3e 0a 0a 3c 74 63 6c 3e 0a  h="20%">..<tcl>.
1ade0 73 65 74 20 6e 20 5b 6c 6c 65 6e 67 74 68 20 24  set n [llength $
1adf0 6b 65 79 77 6f 72 64 5f 6c 69 73 74 5d 0a 73 65  keyword_list].se
1ae00 74 20 6e 43 6f 6c 20 35 0a 73 65 74 20 6e 52 6f  t nCol 5.set nRo
1ae10 77 20 5b 65 78 70 72 20 7b 28 24 6e 2b 24 6e 43  w [expr {($n+$nC
1ae20 6f 6c 2d 31 29 2f 24 6e 43 6f 6c 7d 5d 0a 73 65  ol-1)/$nCol}].se
1ae30 74 20 69 20 30 0a 66 6f 72 65 61 63 68 20 77 6f  t i 0.foreach wo
1ae40 72 64 20 24 6b 65 79 77 6f 72 64 5f 6c 69 73 74  rd $keyword_list
1ae50 20 7b 0a 20 20 69 66 20 7b 5b 73 74 72 69 6e 67   {.  if {[string
1ae60 20 69 6e 64 65 78 20 24 77 6f 72 64 20 65 6e 64   index $word end
1ae70 5d 3d 3d 22 2a 22 7d 20 7b 0a 20 20 20 20 73 65  ]=="*"} {.    se
1ae80 74 20 77 6f 72 64 20 5b 73 74 72 69 6e 67 20 72  t word [string r
1ae90 61 6e 67 65 20 24 77 6f 72 64 20 30 20 65 6e 64  ange $word 0 end
1aea0 2d 31 5d 0a 20 20 20 20 73 65 74 20 66 6f 6e 74  -1].    set font
1aeb0 20 69 0a 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20   i.  } else {.  
1aec0 20 20 73 65 74 20 66 6f 6e 74 20 62 0a 20 20 7d    set font b.  }
1aed0 0a 20 20 69 66 20 7b 24 69 3d 3d 24 6e 52 6f 77  .  if {$i==$nRow
1aee0 7d 20 7b 0a 20 20 20 20 68 64 5f 70 75 74 73 20  } {.    hd_puts 
1aef0 22 3c 2f 74 64 3e 3c 74 64 20 76 61 6c 69 67 6e  "</td><td valign
1af00 3d 5c 22 74 6f 70 5c 22 20 61 6c 69 67 6e 3d 5c  =\"top\" align=\
1af10 22 6c 65 66 74 5c 22 20 77 69 64 74 68 3d 5c 22  "left\" width=\"
1af20 32 30 25 5c 22 3e 22 0a 20 20 20 20 73 65 74 20  20%\">".    set 
1af30 69 20 31 0a 20 20 7d 20 65 6c 73 65 20 7b 0a 20  i 1.  } else {. 
1af40 20 20 20 69 6e 63 72 20 69 0a 20 20 7d 0a 20 20     incr i.  }.  
1af50 68 64 5f 70 75 74 73 20 22 3c 24 66 6f 6e 74 3e  hd_puts "<$font>
1af60 24 77 6f 72 64 3c 2f 24 66 6f 6e 74 3e 3c 62 72  $word</$font><br
1af70 3e 22 0a 7d 0a 3c 2f 74 63 6c 3e 0a 3c 2f 74 64  >".}.</tcl>.</td
1af80 3e 3c 2f 74 72 3e 3c 2f 74 61 62 6c 65 3e 3c 2f  ></tr></table></
1af90 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c 68 32  blockquote>..<h2
1afa0 3e 53 70 65 63 69 61 6c 20 6e 61 6d 65 73 3c 2f  >Special names</
1afb0 68 32 3e 0a 0a 3c 70 3e 54 68 65 20 66 6f 6c 6c  h2>..<p>The foll
1afc0 6f 77 69 6e 67 20 61 72 65 20 6e 6f 74 20 6b 65  owing are not ke
1afd0 79 77 6f 72 64 73 20 69 6e 20 53 51 4c 69 74 65  ywords in SQLite
1afe0 2c 20 62 75 74 20 61 72 65 20 75 73 65 64 20 61  , but are used a
1aff0 73 20 6e 61 6d 65 73 20 6f 66 20 0a 73 79 73 74  s names of .syst
1b000 65 6d 20 6f 62 6a 65 63 74 73 2e 20 20 54 68 65  em objects.  The
1b010 79 20 63 61 6e 20 62 65 20 75 73 65 64 20 61 73  y can be used as
1b020 20 61 6e 20 69 64 65 6e 74 69 66 69 65 72 20 66   an identifier f
1b030 6f 72 20 61 20 64 69 66 66 65 72 65 6e 74 20 0a  or a different .
1b040 74 79 70 65 20 6f 66 20 6f 62 6a 65 63 74 2e 3c  type of object.<
1b050 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65  /p>..<blockquote
1b060 20 63 6c 61 73 73 3d 22 70 64 66 5f 6b 65 79 77   class="pdf_keyw
1b070 6f 72 64 73 22 3e 3c 62 3e 0a 20 20 5f 52 4f 57  ords"><b>.  _ROW
1b080 49 44 5f 3c 62 72 3e 0a 20 20 4d 41 49 4e 3c 62  ID_<br>.  MAIN<b
1b090 72 3e 0a 20 20 4f 49 44 3c 62 72 3e 0a 20 20 52  r>.  OID<br>.  R
1b0a0 4f 57 49 44 3c 62 72 3e 0a 20 20 53 51 4c 49 54  OWID<br>.  SQLIT
1b0b0 45 5f 4d 41 53 54 45 52 3c 62 72 3e 0a 20 20 53  E_MASTER<br>.  S
1b0c0 51 4c 49 54 45 5f 53 45 51 55 45 4e 43 45 3c 62  QLITE_SEQUENCE<b
1b0d0 72 3e 0a 20 20 53 51 4c 49 54 45 5f 54 45 4d 50  r>.  SQLITE_TEMP
1b0e0 5f 4d 41 53 54 45 52 3c 62 72 3e 0a 20 20 54 45  _MASTER<br>.  TE
1b0f0 4d 50 3c 62 72 3e 0a 3c 2f 62 3e 3c 2f 62 6c 6f  MP<br>.</b></blo
1b100 63 6b 71 75 6f 74 65 3e 0a                       ckquote>.