Documentation Source Text

Hex Artifact Content
Login

Artifact 89168bd422008402f7ea3ea9e42280f2e2b38fa3:


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 31 20 61 6c 69 67 6e 3d 63 65  e>..<h1 align=ce
0040: 6e 74 65 72 3e 53 51 4c 20 41 73 20 55 6e 64 65  nter>SQL As Unde
0050: 72 73 74 6f 6f 64 20 42 79 20 53 51 4c 69 74 65  rstood By SQLite
0060: 3c 2f 68 31 3e 0a 0a 3c 70 3e 53 51 4c 69 74 65  </h1>..<p>SQLite
0070: 20 75 6e 64 65 72 73 74 61 6e 64 73 20 6d 6f 73   understands mos
0080: 74 20 6f 66 20 74 68 65 20 73 74 61 6e 64 61 72  t of the standar
0090: 64 20 53 51 4c 0a 6c 61 6e 67 75 61 67 65 2e 20  d SQL.language. 
00a0: 20 42 75 74 20 69 74 20 64 6f 65 73 20 3c 61 20   But it does <a 
00b0: 68 72 65 66 3d 22 6f 6d 69 74 74 65 64 2e 68 74  href="omitted.ht
00c0: 6d 6c 22 3e 6f 6d 69 74 20 73 6f 6d 65 20 66 65  ml">omit some fe
00d0: 61 74 75 72 65 73 3c 2f 61 3e 0a 77 68 69 6c 65  atures</a>.while
00e0: 20 61 74 20 74 68 65 20 73 61 6d 65 20 74 69 6d   at the same tim
00f0: 65 0a 61 64 64 69 6e 67 20 61 20 66 65 77 20 66  e.adding a few f
0100: 65 61 74 75 72 65 73 20 6f 66 20 69 74 73 20 6f  eatures of its o
0110: 77 6e 2e 20 20 54 68 69 73 20 64 6f 63 75 6d 65  wn.  This docume
0120: 6e 74 20 61 74 74 65 6d 70 74 73 20 74 6f 0a 64  nt attempts to.d
0130: 65 73 63 72 69 62 65 20 70 72 65 63 69 73 65 6c  escribe precisel
0140: 79 20 77 68 61 74 20 70 61 72 74 73 20 6f 66 20  y what parts of 
0150: 74 68 65 20 53 51 4c 20 6c 61 6e 67 75 61 67 65  the SQL language
0160: 20 53 51 4c 69 74 65 20 64 6f 65 73 0a 61 6e 64   SQLite does.and
0170: 20 64 6f 65 73 20 6e 6f 74 20 73 75 70 70 6f 72   does not suppor
0180: 74 2e 20 20 41 20 6c 69 73 74 20 6f 66 20 5b 53  t.  A list of [S
0190: 51 4c 20 6b 65 79 77 6f 72 64 73 5d 20 69 73 20  QL keywords] is 
01a0: 0a 61 6c 73 6f 20 70 72 6f 76 69 64 65 64 2e 20  .also provided. 
01b0: 20 54 68 65 20 53 51 4c 20 6c 61 6e 67 75 61 67   The SQL languag
01c0: 65 20 73 79 6e 74 61 78 20 69 73 20 64 65 73 63  e syntax is desc
01d0: 72 69 62 65 64 20 62 79 0a 5b 73 79 6e 74 61 78  ribed by.[syntax
01e0: 20 64 69 61 67 72 61 6d 73 5d 2e 0a 0a 3c 70 3e   diagrams]...<p>
01f0: 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 73 79  The following sy
0200: 6e 74 61 78 20 64 6f 63 75 6d 65 6e 74 61 74 69  ntax documentati
0210: 6f 6e 20 74 6f 70 69 63 73 20 61 72 65 20 61 76  on topics are av
0220: 61 69 6c 61 62 6c 65 3a 3c 2f 70 3e 0a 0a 3c 74  ailable:</p>..<t
0230: 61 62 6c 65 20 77 69 64 74 68 3d 22 31 30 30 25  able width="100%
0240: 22 20 63 65 6c 6c 70 61 64 64 69 6e 67 3d 22 35  " cellpadding="5
0250: 22 20 62 6f 72 64 65 72 3d 22 30 22 3e 0a 3c 74  " border="0">.<t
0260: 72 3e 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  r><td valign="to
0270: 70 22 3e 3c 75 6c 3e 0a 0a 3c 74 63 6c 3e 0a 20  p"><ul>..<tcl>. 
0280: 20 73 65 74 20 69 20 30 0a 20 20 73 65 74 20 6c   set i 0.  set l
0290: 61 6e 67 5f 73 65 63 74 69 6f 6e 5f 6c 69 73 74  ang_section_list
02a0: 20 7b 0a 20 20 20 20 7b 7b 43 52 45 41 54 45 20   {.    {{CREATE 
02b0: 54 41 42 4c 45 7d 20 63 72 65 61 74 65 74 61 62  TABLE} createtab
02c0: 6c 65 7d 0a 20 20 20 20 7b 7b 43 52 45 41 54 45  le}.    {{CREATE
02d0: 20 56 49 52 54 55 41 4c 20 54 41 42 4c 45 7d 20   VIRTUAL TABLE} 
02e0: 63 72 65 61 74 65 76 74 61 62 7d 0a 20 20 20 20  createvtab}.    
02f0: 7b 7b 43 52 45 41 54 45 20 49 4e 44 45 58 7d 20  {{CREATE INDEX} 
0300: 63 72 65 61 74 65 69 6e 64 65 78 7d 0a 20 20 20  createindex}.   
0310: 20 7b 56 41 43 55 55 4d 20 76 61 63 75 75 6d 7d   {VACUUM vacuum}
0320: 0a 20 20 20 20 7b 7b 44 52 4f 50 20 54 41 42 4c  .    {{DROP TABL
0330: 45 7d 20 64 72 6f 70 74 61 62 6c 65 7d 0a 20 20  E} droptable}.  
0340: 20 20 7b 7b 44 52 4f 50 20 49 4e 44 45 58 7d 20    {{DROP INDEX} 
0350: 64 72 6f 70 69 6e 64 65 78 7d 0a 20 20 20 20 7b  dropindex}.    {
0360: 49 4e 53 45 52 54 20 69 6e 73 65 72 74 7d 0a 20  INSERT insert}. 
0370: 20 20 20 7b 52 45 50 4c 41 43 45 20 72 65 70 6c     {REPLACE repl
0380: 61 63 65 7d 0a 20 20 20 20 7b 44 45 4c 45 54 45  ace}.    {DELETE
0390: 20 64 65 6c 65 74 65 7d 0a 20 20 20 20 7b 55 50   delete}.    {UP
03a0: 44 41 54 45 20 75 70 64 61 74 65 7d 0a 20 20 20  DATE update}.   
03b0: 20 7b 53 45 4c 45 43 54 20 73 65 6c 65 63 74 7d   {SELECT select}
03c0: 0a 20 20 20 20 7b 63 6f 6d 6d 65 6e 74 20 63 6f  .    {comment co
03d0: 6d 6d 65 6e 74 7d 0a 20 20 20 20 7b 45 58 50 4c  mment}.    {EXPL
03e0: 41 49 4e 20 65 78 70 6c 61 69 6e 7d 0a 20 20 20  AIN explain}.   
03f0: 20 7b 65 78 70 72 65 73 73 69 6f 6e 20 65 78 70   {expression exp
0400: 72 7d 0a 20 20 20 20 7b 7b 42 45 47 49 4e 20 54  r}.    {{BEGIN T
0410: 52 41 4e 53 41 43 54 49 4f 4e 7d 20 74 72 61 6e  RANSACTION} tran
0420: 73 61 63 74 69 6f 6e 7d 0a 20 20 20 20 7b 7b 43  saction}.    {{C
0430: 4f 4d 4d 49 54 20 54 52 41 4e 53 41 43 54 49 4f  OMMIT TRANSACTIO
0440: 4e 7d 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 43  N} transaction C
0450: 4f 4d 4d 49 54 7d 0a 20 20 20 20 7b 7b 45 4e 44  OMMIT}.    {{END
0460: 20 54 52 41 4e 53 41 43 54 49 4f 4e 7d 20 74 72   TRANSACTION} tr
0470: 61 6e 73 61 63 74 69 6f 6e 20 43 4f 4d 4d 49 54  ansaction COMMIT
0480: 7d 0a 20 20 20 20 7b 7b 52 4f 4c 4c 42 41 43 4b  }.    {{ROLLBACK
0490: 20 54 52 41 4e 53 41 43 54 49 4f 4e 7d 20 74 72   TRANSACTION} tr
04a0: 61 6e 73 61 63 74 69 6f 6e 20 52 4f 4c 4c 42 41  ansaction ROLLBA
04b0: 43 4b 7d 0a 20 20 20 20 7b 53 41 56 45 50 4f 49  CK}.    {SAVEPOI
04c0: 4e 54 20 73 61 76 65 70 6f 69 6e 74 7d 0a 20 20  NT savepoint}.  
04d0: 20 20 7b 7b 52 45 4c 45 41 53 45 20 53 41 56 45    {{RELEASE SAVE
04e0: 50 4f 49 4e 54 7d 20 73 61 76 65 70 6f 69 6e 74  POINT} savepoint
04f0: 20 53 41 56 45 50 4f 49 4e 54 7d 0a 20 20 20 20   SAVEPOINT}.    
0500: 7b 50 52 41 47 4d 41 20 70 72 61 67 6d 61 2e 68  {PRAGMA pragma.h
0510: 74 6d 6c 7d 0a 20 20 20 20 7b 7b 4f 4e 20 43 4f  tml}.    {{ON CO
0520: 4e 46 4c 49 43 54 20 63 6c 61 75 73 65 7d 20 63  NFLICT clause} c
0530: 6f 6e 66 6c 69 63 74 7d 0a 20 20 20 20 7b 7b 43  onflict}.    {{C
0540: 52 45 41 54 45 20 56 49 45 57 7d 20 63 72 65 61  REATE VIEW} crea
0550: 74 65 76 69 65 77 7d 0a 20 20 20 20 7b 7b 44 52  teview}.    {{DR
0560: 4f 50 20 56 49 45 57 7d 20 64 72 6f 70 76 69 65  OP VIEW} dropvie
0570: 77 7d 0a 20 20 20 20 7b 7b 43 52 45 41 54 45 20  w}.    {{CREATE 
0580: 54 52 49 47 47 45 52 7d 20 63 72 65 61 74 65 74  TRIGGER} createt
0590: 72 69 67 67 65 72 7d 0a 20 20 20 20 7b 7b 44 52  rigger}.    {{DR
05a0: 4f 50 20 54 52 49 47 47 45 52 7d 20 64 72 6f 70  OP TRIGGER} drop
05b0: 74 72 69 67 67 65 72 7d 0a 20 20 20 20 7b 7b 41  trigger}.    {{A
05c0: 54 54 41 43 48 20 44 41 54 41 42 41 53 45 7d 20  TTACH DATABASE} 
05d0: 61 74 74 61 63 68 7d 0a 20 20 20 20 7b 7b 44 45  attach}.    {{DE
05e0: 54 41 43 48 20 44 41 54 41 42 41 53 45 7d 20 64  TACH DATABASE} d
05f0: 65 74 61 63 68 7d 0a 20 20 20 20 7b 52 45 49 4e  etach}.    {REIN
0600: 44 45 58 20 72 65 69 6e 64 65 78 7d 0a 20 20 20  DEX reindex}.   
0610: 20 7b 7b 41 4c 54 45 52 20 54 41 42 4c 45 7d 20   {{ALTER TABLE} 
0620: 61 6c 74 65 72 74 61 62 6c 65 7d 0a 20 20 20 20  altertable}.    
0630: 7b 7b 41 4e 41 4c 59 5a 45 7d 20 61 6e 61 6c 79  {{ANALYZE} analy
0640: 7a 65 7d 0a 20 20 20 20 7b 7b 49 4e 44 45 58 45  ze}.    {{INDEXE
0650: 44 20 42 59 7d 20 69 6e 64 65 78 65 64 62 79 7d  D BY} indexedby}
0660: 0a 20 20 20 20 7b 7b 61 67 67 72 65 67 61 74 65  .    {{aggregate
0670: 20 66 75 6e 63 74 69 6f 6e 73 7d 20 61 67 67 66   functions} aggf
0680: 75 6e 63 20 61 67 67 66 75 6e 63 7d 0a 20 20 20  unc aggfunc}.   
0690: 20 7b 7b 63 6f 72 65 20 66 75 6e 63 74 69 6f 6e   {{core function
06a0: 73 7d 20 63 6f 72 65 66 75 6e 63 20 63 6f 72 65  s} corefunc core
06b0: 66 75 6e 63 7d 0a 20 20 20 20 7b 7b 64 61 74 65  func}.    {{date
06c0: 20 61 6e 64 20 74 69 6d 65 20 66 75 6e 63 74 69   and time functi
06d0: 6f 6e 73 7d 20 64 61 74 65 66 75 6e 63 20 64 61  ons} datefunc da
06e0: 74 65 66 75 6e 63 7d 0a 20 20 20 20 7b 6b 65 79  tefunc}.    {key
06f0: 77 6f 72 64 73 20 6b 65 79 77 6f 72 64 73 20 7b  words keywords {
0700: 53 51 4c 20 6b 65 79 77 6f 72 64 73 7d 7d 0a 20  SQL keywords}}. 
0710: 20 7d 0a 20 20 73 65 74 20 6c 61 6e 67 5f 73 65   }.  set lang_se
0720: 63 74 69 6f 6e 5f 62 72 65 61 6b 20 5b 65 78 70  ction_break [exp
0730: 72 20 7b 28 5b 6c 6c 65 6e 67 74 68 20 24 6c 61  r {([llength $la
0740: 6e 67 5f 73 65 63 74 69 6f 6e 5f 6c 69 73 74 5d  ng_section_list]
0750: 2b 32 29 2f 33 7d 5d 0a 20 20 66 6f 72 65 61 63  +2)/3}].  foreac
0760: 68 20 7b 73 65 63 74 69 6f 6e 7d 20 5b 6c 73 6f  h {section} [lso
0770: 72 74 20 2d 69 6e 64 65 78 20 30 20 2d 64 69 63  rt -index 0 -dic
0780: 74 69 6f 6e 61 72 79 20 24 6c 61 6e 67 5f 73 65  tionary $lang_se
0790: 63 74 69 6f 6e 5f 6c 69 73 74 5d 20 7b 0a 20 20  ction_list] {.  
07a0: 66 6f 72 65 61 63 68 20 7b 73 5f 74 69 74 6c 65  foreach {s_title
07b0: 20 73 5f 74 61 67 20 73 5f 6b 77 7d 20 24 73 65   s_tag s_kw} $se
07c0: 63 74 69 6f 6e 20 7b 7d 0a 20 20 69 66 20 7b 24  ction {}.  if {$
07d0: 73 5f 6b 77 20 3d 3d 20 22 22 7d 20 7b 0a 20 20  s_kw == ""} {.  
07e0: 20 20 73 65 74 20 73 5f 6b 77 20 24 73 5f 74 69    set s_kw $s_ti
07f0: 74 6c 65 0a 20 20 7d 0a 20 20 69 66 20 7b 24 73  tle.  }.  if {$s
0800: 5f 74 61 67 3d 3d 22 70 72 61 67 6d 61 2e 68 74  _tag=="pragma.ht
0810: 6d 6c 22 7d 20 7b 0a 20 20 20 20 73 65 74 20 75  ml"} {.    set u
0820: 72 6c 20 24 73 5f 74 61 67 0a 20 20 7d 20 65 6c  rl $s_tag.  } el
0830: 73 65 20 7b 0a 20 20 20 20 73 65 74 20 75 72 6c  se {.    set url
0840: 20 6c 61 6e 67 5f 24 73 5f 74 61 67 2e 68 74 6d   lang_$s_tag.htm
0850: 6c 0a 20 20 7d 0a 20 20 68 64 5f 72 65 73 6f 6c  l.  }.  hd_resol
0860: 76 65 20 22 3c 6c 69 3e 5c 5b 24 73 5f 6b 77 7c  ve "<li>\[$s_kw|
0870: 24 73 5f 74 69 74 6c 65 5c 5d 3c 2f 6c 69 3e 22  $s_title\]</li>"
0880: 0a 20 20 69 6e 63 72 20 69 0a 20 20 69 66 20 7b  .  incr i.  if {
0890: 24 69 3d 3d 24 6c 61 6e 67 5f 73 65 63 74 69 6f  $i==$lang_sectio
08a0: 6e 5f 62 72 65 61 6b 20 7c 7c 20 24 69 3d 3d 32  n_break || $i==2
08b0: 2a 24 6c 61 6e 67 5f 73 65 63 74 69 6f 6e 5f 62  *$lang_section_b
08c0: 72 65 61 6b 7d 20 7b 0a 20 20 20 20 68 64 5f 70  reak} {.    hd_p
08d0: 75 74 73 20 22 3c 2f 75 6c 3e 3c 2f 74 64 3e 3c  uts "</ul></td><
08e0: 74 64 20 76 61 6c 69 67 6e 3d 5c 22 74 6f 70 5c  td valign=\"top\
08f0: 22 3e 3c 75 6c 3e 22 0a 20 20 7d 0a 7d 0a 3c 2f  "><ul>".  }.}.</
0900: 74 63 6c 3e 0a 3c 2f 75 6c 3e 3c 2f 74 64 3e 3c  tcl>.</ul></td><
0910: 2f 74 72 3e 3c 2f 74 61 62 6c 65 3e 0a 0a 3c 70  /tr></table>..<p
0920: 3e 5e 54 68 65 20 72 6f 75 74 69 6e 65 73 20 5b  >^The routines [
0930: 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f  sqlite3_prepare_
0940: 76 32 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f  v2()], [sqlite3_
0950: 70 72 65 70 61 72 65 28 29 5d 2c 0a 5b 73 71 6c  prepare()],.[sql
0960: 69 74 65 33 5f 70 72 65 70 61 72 65 31 36 28 29  ite3_prepare16()
0970: 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70  ], [sqlite3_prep
0980: 61 72 65 31 36 5f 76 32 28 29 5d 2c 20 0a 5b 73  are16_v2()], .[s
0990: 71 6c 69 74 65 33 5f 65 78 65 63 28 29 5d 2c 20  qlite3_exec()], 
09a0: 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f 67 65 74  and [sqlite3_get
09b0: 5f 74 61 62 6c 65 28 29 5d 20 61 63 63 65 70 74  _table()] accept
09c0: 0a 61 6e 20 53 51 4c 20 73 74 61 74 65 6d 65 6e  .an SQL statemen
09d0: 74 20 6c 69 73 74 20 28 73 71 6c 2d 73 74 6d 74  t list (sql-stmt
09e0: 2d 6c 69 73 74 29 20 77 68 69 63 68 20 69 73 20  -list) which is 
09f0: 61 20 73 65 6d 69 63 6f 6c 6f 6e 2d 73 65 70 61  a semicolon-sepa
0a00: 72 61 74 65 64 0a 6c 69 73 74 20 6f 66 20 73 74  rated.list of st
0a10: 61 74 65 6d 65 6e 74 73 2e 3c 2f 70 3e 0a 0a 3c  atements.</p>..<
0a20: 74 63 6c 3e 42 75 62 62 6c 65 44 69 61 67 72 61  tcl>BubbleDiagra
0a30: 6d 20 73 71 6c 2d 73 74 6d 74 2d 6c 69 73 74 3c  m sql-stmt-list<
0a40: 2f 74 63 6c 3e 0a 0a 3c 70 3e 45 61 63 68 20 53  /tcl>..<p>Each S
0a50: 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 69 6e 20  QL statement in 
0a60: 74 68 65 20 73 74 61 74 65 6d 65 6e 74 20 6c 69  the statement li
0a70: 73 74 20 69 73 20 61 6e 20 69 6e 73 74 61 6e 63  st is an instanc
0a80: 65 20 6f 66 20 74 68 65 0a 66 6f 6c 6c 6f 77 69  e of the.followi
0a90: 6e 67 3a 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 42 75  ng:</p>..<tcl>Bu
0aa0: 62 62 6c 65 44 69 61 67 72 61 6d 20 73 71 6c 2d  bbleDiagram sql-
0ab0: 73 74 6d 74 3c 2f 74 63 6c 3e 0a 0a 3c 74 63 6c  stmt</tcl>..<tcl
0ac0: 3e 0a 70 72 6f 63 20 4f 70 65 72 61 74 6f 72 20  >.proc Operator 
0ad0: 7b 6e 61 6d 65 7d 20 7b 0a 20 20 72 65 74 75 72  {name} {.  retur
0ae0: 6e 20 22 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 5c  n "<font color=\
0af0: 22 23 32 63 32 63 66 30 5c 22 3e 3c 62 69 67 3e  "#2c2cf0\"><big>
0b00: 24 6e 61 6d 65 3c 2f 62 69 67 3e 3c 2f 66 6f 6e  $name</big></fon
0b10: 74 3e 22 0a 7d 0a 70 72 6f 63 20 4e 6f 6e 74 65  t>".}.proc Nonte
0b20: 72 6d 69 6e 61 6c 20 7b 6e 61 6d 65 7d 20 7b 0a  rminal {name} {.
0b30: 20 20 72 65 74 75 72 6e 20 22 3c 69 3e 3c 66 6f    return "<i><fo
0b40: 6e 74 20 63 6f 6c 6f 72 3d 5c 22 23 66 66 33 34  nt color=\"#ff34
0b50: 33 34 5c 22 3e 24 6e 61 6d 65 3c 2f 66 6f 6e 74  34\">$name</font
0b60: 3e 3c 2f 69 3e 22 0a 7d 0a 70 72 6f 63 20 4b 65  ></i>".}.proc Ke
0b70: 79 77 6f 72 64 20 7b 6e 61 6d 65 7d 20 7b 0a 20  yword {name} {. 
0b80: 20 72 65 74 75 72 6e 20 22 3c 66 6f 6e 74 20 63   return "<font c
0b90: 6f 6c 6f 72 3d 5c 22 23 32 63 32 63 66 30 5c 22  olor=\"#2c2cf0\"
0ba0: 3e 24 6e 61 6d 65 3c 2f 66 6f 6e 74 3e 22 0a 7d  >$name</font>".}
0bb0: 0a 70 72 6f 63 20 45 78 61 6d 70 6c 65 20 7b 74  .proc Example {t
0bc0: 65 78 74 7d 20 7b 0a 20 20 68 64 5f 70 75 74 73  ext} {.  hd_puts
0bd0: 20 22 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70   "<blockquote><p
0be0: 72 65 3e 24 74 65 78 74 3c 2f 70 72 65 3e 3c 2f  re>$text</pre></
0bf0: 62 6c 6f 63 6b 71 75 6f 74 65 3e 22 0a 7d 0a 0a  blockquote>".}..
0c00: 70 72 6f 63 20 53 65 63 74 69 6f 6e 20 7b 6e 61  proc Section {na
0c10: 6d 65 20 6c 61 62 65 6c 20 6b 65 79 77 6f 72 64  me label keyword
0c20: 73 7d 20 7b 0a 20 20 67 6c 6f 62 61 6c 20 44 4f  s} {.  global DO
0c30: 43 0a 20 20 68 64 5f 63 6c 6f 73 65 5f 6d 61 69  C.  hd_close_mai
0c40: 6e 0a 20 20 68 64 5f 6f 70 65 6e 5f 6d 61 69 6e  n.  hd_open_main
0c50: 20 6c 61 6e 67 5f 24 6c 61 62 65 6c 2e 68 74 6d   lang_$label.htm
0c60: 6c 0a 20 20 68 64 5f 68 65 61 64 65 72 20 22 53  l.  hd_header "S
0c70: 51 4c 69 74 65 20 51 75 65 72 79 20 4c 61 6e 67  QLite Query Lang
0c80: 75 61 67 65 3a 20 24 6e 61 6d 65 22 20 24 44 4f  uage: $name" $DO
0c90: 43 2f 70 61 67 65 73 2f 6c 61 6e 67 2e 69 6e 0a  C/pages/lang.in.
0ca0: 20 20 65 76 61 6c 20 68 64 5f 6b 65 79 77 6f 72    eval hd_keywor
0cb0: 64 73 20 24 6b 65 79 77 6f 72 64 73 0a 20 20 69  ds $keywords.  i
0cc0: 66 20 7b 5b 6c 73 65 61 72 63 68 20 24 6b 65 79  f {[lsearch $key
0cd0: 77 6f 72 64 73 20 24 6e 61 6d 65 5d 20 3d 3d 20  words $name] == 
0ce0: 2d 31 20 26 26 20 5b 6c 73 65 61 72 63 68 20 24  -1 && [lsearch $
0cf0: 6b 65 79 77 6f 72 64 73 20 2a 24 6e 61 6d 65 5d  keywords *$name]
0d00: 20 3d 3d 20 2d 31 7d 20 7b 0a 20 20 20 20 65 76   == -1} {.    ev
0d10: 61 6c 20 68 64 5f 6b 65 79 77 6f 72 64 73 20 7b  al hd_keywords {
0d20: 20 24 6e 61 6d 65 20 7d 0a 20 20 7d 0a 20 20 68   $name }.  }.  h
0d30: 64 5f 70 75 74 73 20 7b 3c 68 31 20 61 6c 69 67  d_puts {<h1 alig
0d40: 6e 3d 22 63 65 6e 74 65 72 22 3e 53 51 4c 20 41  n="center">SQL A
0d50: 73 20 55 6e 64 65 72 73 74 6f 6f 64 20 42 79 20  s Understood By 
0d60: 53 51 4c 69 74 65 3c 2f 68 31 3e 7d 0a 20 20 68  SQLite</h1>}.  h
0d70: 64 5f 70 75 74 73 20 7b 3c 70 3e 3c 61 20 68 72  d_puts {<p><a hr
0d80: 65 66 3d 22 6c 61 6e 67 2e 68 74 6d 6c 22 3e 5b  ef="lang.html">[
0d90: 54 6f 70 5d 3c 2f 61 3e 3c 2f 70 3e 7d 0a 20 20  Top]</a></p>}.  
0da0: 68 64 5f 70 75 74 73 20 22 3c 68 32 3e 24 6e 61  hd_puts "<h2>$na
0db0: 6d 65 3c 2f 68 32 3e 22 0a 7d 0a 0a 23 23 23 23  me</h2>".}..####
0dc0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0dd0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0de0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0df0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0e00: 23 23 23 23 23 23 23 23 23 23 23 0a 53 65 63 74  ###########.Sect
0e10: 69 6f 6e 20 7b 41 4c 54 45 52 20 54 41 42 4c 45  ion {ALTER TABLE
0e20: 7d 20 61 6c 74 65 72 74 61 62 6c 65 20 7b 7b 41  } altertable {{A
0e30: 4c 54 45 52 20 54 41 42 4c 45 7d 20 7b 2a 41 4c  LTER TABLE} {*AL
0e40: 54 45 52 7d 7d 0a 0a 42 75 62 62 6c 65 44 69 61  TER}}..BubbleDia
0e50: 67 72 61 6d 20 61 6c 74 65 72 2d 74 61 62 6c 65  gram alter-table
0e60: 2d 73 74 6d 74 20 31 0a 3c 2f 74 63 6c 3e 0a 0a  -stmt 1.</tcl>..
0e70: 3c 70 3e 53 51 4c 69 74 65 20 73 75 70 70 6f 72  <p>SQLite suppor
0e80: 74 73 20 61 20 6c 69 6d 69 74 65 64 20 73 75 62  ts a limited sub
0e90: 73 65 74 20 6f 66 20 41 4c 54 45 52 20 54 41 42  set of ALTER TAB
0ea0: 4c 45 2e 0a 54 68 65 20 41 4c 54 45 52 20 54 41  LE..The ALTER TA
0eb0: 42 4c 45 20 63 6f 6d 6d 61 6e 64 20 69 6e 20 53  BLE command in S
0ec0: 51 4c 69 74 65 20 61 6c 6c 6f 77 73 20 74 68 65  QLite allows the
0ed0: 20 75 73 65 72 20 74 6f 20 72 65 6e 61 6d 65 20   user to rename 
0ee0: 61 20 74 61 62 6c 65 0a 6f 72 20 74 6f 20 61 64  a table.or to ad
0ef0: 64 20 61 20 6e 65 77 20 63 6f 6c 75 6d 6e 20 74  d a new column t
0f00: 6f 20 61 6e 20 65 78 69 73 74 69 6e 67 20 74 61  o an existing ta
0f10: 62 6c 65 2e 20 49 74 20 69 73 20 6e 6f 74 20 70  ble. It is not p
0f20: 6f 73 73 69 62 6c 65 0a 74 6f 20 72 65 6e 61 6d  ossible.to renam
0f30: 65 20 61 20 63 6f 6c 75 6d 6e 2c 20 72 65 6d 6f  e a column, remo
0f40: 76 65 20 61 20 63 6f 6c 75 6d 6e 2c 20 6f 72 20  ve a column, or 
0f50: 61 64 64 20 6f 72 20 72 65 6d 6f 76 65 20 63 6f  add or remove co
0f60: 6e 73 74 72 61 69 6e 74 73 20 66 72 6f 6d 20 61  nstraints from a
0f70: 20 74 61 62 6c 65 2e 0a 3c 2f 70 3e 0a 0a 3c 70   table..</p>..<p
0f80: 3e 20 5e 28 54 68 65 20 52 45 4e 41 4d 45 20 54  > ^(The RENAME T
0f90: 4f 20 73 79 6e 74 61 78 20 69 73 20 75 73 65 64  O syntax is used
0fa0: 20 74 6f 20 72 65 6e 61 6d 65 20 74 68 65 20 74   to rename the t
0fb0: 61 62 6c 65 20 69 64 65 6e 74 69 66 69 65 64 20  able identified 
0fc0: 62 79 20 0a 3c 69 3e 26 23 39 31 3b 64 61 74 61  by .<i>&#91;data
0fd0: 62 61 73 65 2d 6e 61 6d 65 2e 26 23 39 33 3b 74  base-name.&#93;t
0fe0: 61 62 6c 65 2d 6e 61 6d 65 3c 2f 69 3e 20 74 6f  able-name</i> to
0ff0: 20 3c 69 3e 6e 65 77 2d 74 61 62 6c 65 2d 6e 61   <i>new-table-na
1000: 6d 65 3c 2f 69 3e 2e 29 5e 0a 54 68 69 73 20 63  me</i>.)^.This c
1010: 6f 6d 6d 61 6e 64 20 0a 63 61 6e 6e 6f 74 20 62  ommand .cannot b
1020: 65 20 75 73 65 64 20 74 6f 20 6d 6f 76 65 20 61  e used to move a
1030: 20 74 61 62 6c 65 20 62 65 74 77 65 65 6e 20 61   table between a
1040: 74 74 61 63 68 65 64 20 64 61 74 61 62 61 73 65  ttached database
1050: 73 2c 20 6f 6e 6c 79 20 74 6f 20 72 65 6e 61 6d  s, only to renam
1060: 65 20 0a 61 20 74 61 62 6c 65 20 77 69 74 68 69  e .a table withi
1070: 6e 20 74 68 65 20 73 61 6d 65 20 64 61 74 61 62  n the same datab
1080: 61 73 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 20 5e 49  ase.</p>..<p> ^I
1090: 66 20 74 68 65 20 74 61 62 6c 65 20 62 65 69 6e  f the table bein
10a0: 67 20 72 65 6e 61 6d 65 64 20 68 61 73 20 74 72  g renamed has tr
10b0: 69 67 67 65 72 73 20 6f 72 20 69 6e 64 69 63 65  iggers or indice
10c0: 73 2c 20 74 68 65 6e 20 74 68 65 73 65 20 72 65  s, then these re
10d0: 6d 61 69 6e 0a 61 74 74 61 63 68 65 64 20 74 6f  main.attached to
10e0: 20 74 68 65 20 74 61 62 6c 65 20 61 66 74 65 72   the table after
10f0: 20 69 74 20 68 61 73 20 62 65 65 6e 20 72 65 6e   it has been ren
1100: 61 6d 65 64 2e 20 20 5e 48 6f 77 65 76 65 72 2c  amed.  ^However,
1110: 20 69 66 20 74 68 65 72 65 20 61 72 65 0a 61 6e   if there are.an
1120: 79 20 76 69 65 77 20 64 65 66 69 6e 69 74 69 6f  y view definitio
1130: 6e 73 2c 20 6f 72 20 73 74 61 74 65 6d 65 6e 74  ns, or statement
1140: 73 20 65 78 65 63 75 74 65 64 20 62 79 20 74 72  s executed by tr
1150: 69 67 67 65 72 73 20 74 68 61 74 20 72 65 66 65  iggers that refe
1160: 72 20 74 6f 0a 74 68 65 20 74 61 62 6c 65 20 62  r to.the table b
1170: 65 69 6e 67 20 72 65 6e 61 6d 65 64 2c 20 74 68  eing renamed, th
1180: 65 73 65 20 61 72 65 20 6e 6f 74 20 61 75 74 6f  ese are not auto
1190: 6d 61 74 69 63 61 6c 6c 79 20 6d 6f 64 69 66 69  matically modifi
11a0: 65 64 20 74 6f 20 75 73 65 20 74 68 65 20 6e 65  ed to use the ne
11b0: 77 0a 74 61 62 6c 65 20 6e 61 6d 65 2e 20 49 66  w.table name. If
11c0: 20 74 68 69 73 20 69 73 20 72 65 71 75 69 72 65   this is require
11d0: 64 2c 20 74 68 65 20 74 72 69 67 67 65 72 73 20  d, the triggers 
11e0: 6f 72 20 76 69 65 77 20 64 65 66 69 6e 69 74 69  or view definiti
11f0: 6f 6e 73 20 6d 75 73 74 20 62 65 0a 64 72 6f 70  ons must be.drop
1200: 70 65 64 20 61 6e 64 20 72 65 63 72 65 61 74 65  ped and recreate
1210: 64 20 74 6f 20 75 73 65 20 74 68 65 20 6e 65 77  d to use the new
1220: 20 74 61 62 6c 65 20 6e 61 6d 65 20 62 79 20 68   table name by h
1230: 61 6e 64 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 5e 49  and..</p>..<p>^I
1240: 66 20 5b 66 6f 72 65 69 67 6e 20 6b 65 79 20 63  f [foreign key c
1250: 6f 6e 73 74 72 61 69 6e 74 73 5d 20 61 72 65 20  onstraints] are 
1260: 0a 5b 66 6f 72 65 69 67 6e 5f 6b 65 79 73 20 70  .[foreign_keys p
1270: 72 61 67 6d 61 20 7c 20 65 6e 61 62 6c 65 64 5d  ragma | enabled]
1280: 20 77 68 65 6e 20 61 20 74 61 62 6c 65 20 69 73   when a table is
1290: 20 72 65 6e 61 6d 65 64 2c 20 74 68 65 6e 20 61   renamed, then a
12a0: 6e 79 0a 5b 66 6f 72 65 69 67 6e 2d 6b 65 79 2d  ny.[foreign-key-
12b0: 63 6c 61 75 73 65 20 7c 20 52 45 46 45 52 45 4e  clause | REFEREN
12c0: 43 45 53 20 63 6c 61 75 73 65 73 5d 20 69 6e 20  CES clauses] in 
12d0: 61 6e 79 20 74 61 62 6c 65 20 28 65 69 74 68 65  any table (eithe
12e0: 72 20 74 68 65 0a 74 61 62 6c 65 20 62 65 69 6e  r the.table bein
12f0: 67 20 72 65 6e 61 6d 65 64 20 6f 72 20 73 6f 6d  g renamed or som
1300: 65 20 6f 74 68 65 72 20 74 61 62 6c 65 29 0a 74  e other table).t
1310: 68 61 74 20 72 65 66 65 72 20 74 6f 20 74 68 65  hat refer to the
1320: 20 74 61 62 6c 65 20 62 65 69 6e 67 20 72 65 6e   table being ren
1330: 61 6d 65 64 20 61 72 65 20 6d 6f 64 69 66 69 65  amed are modifie
1340: 64 20 74 6f 20 72 65 66 65 72 20 0a 74 6f 20 74  d to refer .to t
1350: 68 65 20 72 65 6e 61 6d 65 64 20 74 61 62 6c 65  he renamed table
1360: 20 62 79 20 69 74 73 20 6e 65 77 20 6e 61 6d 65   by its new name
1370: 2e 0a 0a 3c 70 3e 20 5e 54 68 65 20 41 44 44 20  ...<p> ^The ADD 
1380: 43 4f 4c 55 4d 4e 20 73 79 6e 74 61 78 0a 69 73  COLUMN syntax.is
1390: 20 75 73 65 64 20 74 6f 20 61 64 64 20 61 20 6e   used to add a n
13a0: 65 77 20 63 6f 6c 75 6d 6e 20 74 6f 20 61 6e 20  ew column to an 
13b0: 65 78 69 73 74 69 6e 67 20 74 61 62 6c 65 2e 0a  existing table..
13c0: 5e 54 68 65 20 6e 65 77 20 63 6f 6c 75 6d 6e 20  ^The new column 
13d0: 69 73 20 61 6c 77 61 79 73 20 61 70 70 65 6e 64  is always append
13e0: 65 64 20 74 6f 20 74 68 65 20 65 6e 64 20 6f 66  ed to the end of
13f0: 20 74 68 65 20 6c 69 73 74 20 6f 66 20 65 78 69   the list of exi
1400: 73 74 69 6e 67 20 63 6f 6c 75 6d 6e 73 2e 0a 54  sting columns..T
1410: 68 65 20 5b 63 6f 6c 75 6d 6e 2d 64 65 66 5d 20  he [column-def] 
1420: 72 75 6c 65 20 64 65 66 69 6e 65 73 20 74 68 65  rule defines the
1430: 20 63 68 61 72 61 63 74 65 72 69 73 74 69 63 73   characteristics
1440: 20 6f 66 20 74 68 65 20 6e 65 77 20 63 6f 6c 75   of the new colu
1450: 6d 6e 2e 0a 5e 28 54 68 65 20 6e 65 77 20 63 6f  mn..^(The new co
1460: 6c 75 6d 6e 20 6d 61 79 20 74 61 6b 65 20 61 6e  lumn may take an
1470: 79 20 6f 66 20 74 68 65 20 66 6f 72 6d 73 20 70  y of the forms p
1480: 65 72 6d 69 73 73 69 62 6c 65 20 69 6e 20 61 20  ermissible in a 
1490: 5b 43 52 45 41 54 45 20 54 41 42 4c 45 5d 0a 73  [CREATE TABLE].s
14a0: 74 61 74 65 6d 65 6e 74 2c 20 77 69 74 68 20 74  tatement, with t
14b0: 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 72 65 73  he following res
14c0: 74 72 69 63 74 69 6f 6e 73 3a 29 5e 0a 3c 75 6c  trictions:)^.<ul
14d0: 3e 0a 3c 6c 69 3e 5e 54 68 65 20 63 6f 6c 75 6d  >.<li>^The colum
14e0: 6e 20 6d 61 79 20 6e 6f 74 20 68 61 76 65 20 61  n may not have a
14f0: 20 50 52 49 4d 41 52 59 20 4b 45 59 20 6f 72 20   PRIMARY KEY or 
1500: 55 4e 49 51 55 45 20 63 6f 6e 73 74 72 61 69 6e  UNIQUE constrain
1510: 74 2e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 5e 54 68 65  t.</li>.<li>^The
1520: 20 63 6f 6c 75 6d 6e 20 6d 61 79 20 6e 6f 74 20   column may not 
1530: 68 61 76 65 20 61 20 64 65 66 61 75 6c 74 20 76  have a default v
1540: 61 6c 75 65 20 6f 66 20 43 55 52 52 45 4e 54 5f  alue of CURRENT_
1550: 54 49 4d 45 2c 20 43 55 52 52 45 4e 54 5f 44 41  TIME, CURRENT_DA
1560: 54 45 2c 20 0a 20 20 20 20 43 55 52 52 45 4e 54  TE, .    CURRENT
1570: 5f 54 49 4d 45 53 54 41 4d 50 2c 20 6f 72 20 61  _TIMESTAMP, or a
1580: 6e 20 65 78 70 72 65 73 73 69 6f 6e 20 69 6e 20  n expression in 
1590: 70 61 72 65 6e 74 68 65 73 65 73 2e 3c 2f 6c 69  parentheses.</li
15a0: 3e 0a 3c 6c 69 3e 5e 49 66 20 61 20 4e 4f 54 20  >.<li>^If a NOT 
15b0: 4e 55 4c 4c 20 63 6f 6e 73 74 72 61 69 6e 74 20  NULL constraint 
15c0: 69 73 20 73 70 65 63 69 66 69 65 64 2c 20 74 68  is specified, th
15d0: 65 6e 20 74 68 65 20 63 6f 6c 75 6d 6e 20 6d 75  en the column mu
15e0: 73 74 20 68 61 76 65 20 61 0a 20 20 20 20 64 65  st have a.    de
15f0: 66 61 75 6c 74 20 76 61 6c 75 65 20 6f 74 68 65  fault value othe
1600: 72 20 74 68 61 6e 20 4e 55 4c 4c 2e 0a 3c 6c 69  r than NULL..<li
1610: 3e 5e 49 66 20 5b 66 6f 72 65 69 67 6e 20 6b 65  >^If [foreign ke
1620: 79 20 63 6f 6e 73 74 72 61 69 6e 74 73 5d 20 61  y constraints] a
1630: 72 65 20 5b 66 6f 72 65 69 67 6e 5f 6b 65 79 73  re [foreign_keys
1640: 20 70 72 61 67 6d 61 20 7c 20 65 6e 61 62 6c 65   pragma | enable
1650: 64 5d 20 61 6e 64 0a 20 20 20 20 61 20 63 6f 6c  d] and.    a col
1660: 75 6d 6e 20 77 69 74 68 20 61 20 5b 66 6f 72 65  umn with a [fore
1670: 69 67 6e 2d 6b 65 79 2d 63 6c 61 75 73 65 20 7c  ign-key-clause |
1680: 20 52 45 46 45 52 45 4e 43 45 53 20 63 6c 61 75   REFERENCES clau
1690: 73 65 5d 0a 20 20 20 20 69 73 20 61 64 64 65 64  se].    is added
16a0: 2c 20 74 68 65 20 63 6f 6c 75 6d 6e 20 6d 75 73  , the column mus
16b0: 74 20 68 61 76 65 20 61 20 64 65 66 61 75 6c 74  t have a default
16c0: 20 76 61 6c 75 65 20 6f 66 20 4e 55 4c 4c 2e 0a   value of NULL..
16d0: 3c 2f 75 6c 3e 0a 0a 3c 70 3e 5e 4e 6f 74 65 20  </ul>..<p>^Note 
16e0: 61 6c 73 6f 20 74 68 61 74 20 77 68 65 6e 20 61  also that when a
16f0: 64 64 69 6e 67 20 61 20 43 48 45 43 4b 20 63 6f  dding a CHECK co
1700: 6e 73 74 72 61 69 6e 74 2c 20 74 68 65 20 43 48  nstraint, the CH
1710: 45 43 4b 20 63 6f 6e 73 74 72 61 69 6e 74 0a 69  ECK constraint.i
1720: 73 20 6e 6f 74 20 74 65 73 74 65 64 20 61 67 61  s not tested aga
1730: 69 6e 73 74 20 70 72 65 65 78 69 73 74 69 6e 67  inst preexisting
1740: 20 72 6f 77 73 20 6f 66 20 74 68 65 20 74 61 62   rows of the tab
1750: 6c 65 2e 0a 5e 54 68 69 73 20 63 61 6e 20 72 65  le..^This can re
1760: 73 75 6c 74 20 69 6e 20 61 20 74 61 62 6c 65 20  sult in a table 
1770: 74 68 61 74 20 63 6f 6e 74 61 69 6e 73 20 64 61  that contains da
1780: 74 61 20 74 68 61 74 0a 69 73 20 69 6e 20 76 69  ta that.is in vi
1790: 6f 6c 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 43  olation of the C
17a0: 48 45 43 4b 20 63 6f 6e 73 74 72 61 69 6e 74 2e  HECK constraint.
17b0: 20 20 46 75 74 75 72 65 20 76 65 72 73 69 6f 6e    Future version
17c0: 73 20 6f 66 20 53 51 4c 69 74 65 20 6d 69 67 68  s of SQLite migh
17d0: 74 0a 63 68 61 6e 67 65 20 74 6f 20 76 61 6c 69  t.change to vali
17e0: 64 61 74 65 20 43 48 45 43 4b 20 63 6f 6e 73 74  date CHECK const
17f0: 72 61 69 6e 74 73 20 61 73 20 74 68 65 79 20 61  raints as they a
1800: 72 65 20 61 64 64 65 64 2e 3c 2f 70 3e 0a 0a 3c  re added.</p>..<
1810: 70 3e 20 54 68 65 20 65 78 65 63 75 74 69 6f 6e  p> The execution
1820: 20 74 69 6d 65 20 6f 66 20 74 68 65 20 41 4c 54   time of the ALT
1830: 45 52 20 54 41 42 4c 45 20 63 6f 6d 6d 61 6e 64  ER TABLE command
1840: 20 69 73 20 69 6e 64 65 70 65 6e 64 65 6e 74 20   is independent 
1850: 6f 66 0a 74 68 65 20 61 6d 6f 75 6e 74 20 6f 66  of.the amount of
1860: 20 64 61 74 61 20 69 6e 20 74 68 65 20 74 61 62   data in the tab
1870: 6c 65 2e 20 20 54 68 65 20 41 4c 54 45 52 20 54  le.  The ALTER T
1880: 41 42 4c 45 20 63 6f 6d 6d 61 6e 64 20 72 75 6e  ABLE command run
1890: 73 20 61 73 20 71 75 69 63 6b 6c 79 0a 6f 6e 20  s as quickly.on 
18a0: 61 20 74 61 62 6c 65 20 77 69 74 68 20 31 30 20  a table with 10 
18b0: 6d 69 6c 6c 69 6f 6e 20 72 6f 77 73 20 61 73 20  million rows as 
18c0: 69 74 20 64 6f 65 73 20 6f 6e 20 61 20 74 61 62  it does on a tab
18d0: 6c 65 20 77 69 74 68 20 31 20 72 6f 77 2e 0a 3c  le with 1 row..<
18e0: 2f 70 3e 0a 0a 3c 70 3e 41 66 74 65 72 20 41 44  /p>..<p>After AD
18f0: 44 20 43 4f 4c 55 4d 4e 20 68 61 73 20 62 65 65  D COLUMN has bee
1900: 6e 20 72 75 6e 20 6f 6e 20 61 20 64 61 74 61 62  n run on a datab
1910: 61 73 65 2c 20 74 68 61 74 20 64 61 74 61 62 61  ase, that databa
1920: 73 65 20 77 69 6c 6c 20 6e 6f 74 0a 62 65 20 72  se will not.be r
1930: 65 61 64 61 62 6c 65 20 62 79 20 53 51 4c 69 74  eadable by SQLit
1940: 65 20 76 65 72 73 69 6f 6e 20 33 2e 31 2e 33 20  e version 3.1.3 
1950: 61 6e 64 20 65 61 72 6c 69 65 72 2e 3c 2f 70 3e  and earlier.</p>
1960: 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23  ..<tcl>.########
1970: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1980: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1990: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
19a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
19b0: 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b  ######.Section {
19c0: 41 4e 41 4c 59 5a 45 7d 20 61 6e 61 6c 79 7a 65  ANALYZE} analyze
19d0: 20 41 4e 41 4c 59 5a 45 0a 0a 42 75 62 62 6c 65   ANALYZE..Bubble
19e0: 44 69 61 67 72 61 6d 20 61 6e 61 6c 79 7a 65 2d  Diagram analyze-
19f0: 73 74 6d 74 20 31 0a 3c 2f 74 63 6c 3e 0a 0a 3c  stmt 1.</tcl>..<
1a00: 70 3e 20 5e 54 68 65 20 41 4e 41 4c 59 5a 45 20  p> ^The ANALYZE 
1a10: 63 6f 6d 6d 61 6e 64 20 67 61 74 68 65 72 73 20  command gathers 
1a20: 73 74 61 74 69 73 74 69 63 73 20 61 62 6f 75 74  statistics about
1a30: 20 69 6e 64 69 63 65 73 20 61 6e 64 20 73 74 6f   indices and sto
1a40: 72 65 73 20 74 68 65 6d 0a 69 6e 20 61 20 73 70  res them.in a sp
1a50: 65 63 69 61 6c 20 74 61 62 6c 65 73 20 69 6e 20  ecial tables in 
1a60: 74 68 65 20 64 61 74 61 62 61 73 65 20 77 68 65  the database whe
1a70: 72 65 20 74 68 65 20 71 75 65 72 79 20 6f 70 74  re the query opt
1a80: 69 6d 69 7a 65 72 20 63 61 6e 20 75 73 65 0a 74  imizer can use.t
1a90: 68 65 6d 20 74 6f 20 68 65 6c 70 20 6d 61 6b 65  hem to help make
1aa0: 20 62 65 74 74 65 72 20 69 6e 64 65 78 20 63 68   better index ch
1ab0: 6f 69 63 65 73 2e 0a 5e 49 66 20 6e 6f 20 61 72  oices..^If no ar
1ac0: 67 75 6d 65 6e 74 73 20 61 72 65 20 67 69 76 65  guments are give
1ad0: 6e 2c 20 61 6c 6c 20 69 6e 64 69 63 65 73 20 69  n, all indices i
1ae0: 6e 20 61 6c 6c 20 61 74 74 61 63 68 65 64 20 64  n all attached d
1af0: 61 74 61 62 61 73 65 73 20 61 72 65 0a 61 6e 61  atabases are.ana
1b00: 6c 79 7a 65 64 2e 20 20 5e 49 66 20 61 20 64 61  lyzed.  ^If a da
1b10: 74 61 62 61 73 65 20 6e 61 6d 65 20 69 73 20 67  tabase name is g
1b20: 69 76 65 6e 20 61 73 20 74 68 65 20 61 72 67 75  iven as the argu
1b30: 6d 65 6e 74 2c 20 61 6c 6c 20 69 6e 64 69 63 65  ment, all indice
1b40: 73 0a 69 6e 20 74 68 61 74 20 6f 6e 65 20 64 61  s.in that one da
1b50: 74 61 62 61 73 65 20 61 72 65 20 61 6e 61 6c 79  tabase are analy
1b60: 7a 65 64 2e 20 20 5e 49 66 20 74 68 65 20 61 72  zed.  ^If the ar
1b70: 67 75 6d 65 6e 74 20 69 73 20 61 20 74 61 62 6c  gument is a tabl
1b80: 65 20 6e 61 6d 65 2c 0a 74 68 65 6e 20 6f 6e 6c  e name,.then onl
1b90: 79 20 69 6e 64 69 63 65 73 20 61 73 73 6f 63 69  y indices associ
1ba0: 61 74 65 64 20 77 69 74 68 20 74 68 61 74 20 6f  ated with that o
1bb0: 6e 65 20 74 61 62 6c 65 20 61 72 65 20 61 6e 61  ne table are ana
1bc0: 6c 79 7a 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 20  lyzed.</p>..<p> 
1bd0: 5e 54 68 65 20 64 65 66 61 75 6c 74 20 69 6d 70  ^The default imp
1be0: 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 73 74 6f 72  lementation stor
1bf0: 65 73 20 61 6c 6c 20 73 74 61 74 69 73 74 69 63  es all statistic
1c00: 73 20 69 6e 20 61 20 73 69 6e 67 6c 65 0a 74 61  s in a single.ta
1c10: 62 6c 65 20 6e 61 6d 65 64 20 3c 62 3e 73 71 6c  ble named <b>sql
1c20: 69 74 65 5f 73 74 61 74 31 3c 2f 62 3e 2e 20 20  ite_stat1</b>.  
1c30: 5e 49 66 20 53 51 4c 69 74 65 20 69 73 20 63 6f  ^If SQLite is co
1c40: 6d 70 69 6c 65 64 20 77 69 74 68 20 74 68 65 0a  mpiled with the.
1c50: 5b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53  [SQLITE_ENABLE_S
1c60: 54 41 54 32 5d 20 6f 70 74 69 6f 6e 2c 20 74 68  TAT2] option, th
1c70: 65 6e 20 61 64 64 69 74 69 6f 6e 61 6c 20 68 69  en additional hi
1c80: 73 74 6f 67 72 61 6d 20 64 61 74 61 20 69 73 0a  stogram data is.
1c90: 63 6f 6c 6c 65 63 74 65 64 20 61 6e 64 20 73 74  collected and st
1ca0: 6f 72 65 64 20 69 6e 20 3c 62 3e 73 71 6c 69 74  ored in <b>sqlit
1cb0: 65 5f 73 74 61 74 32 3c 2f 62 3e 2e 0a 46 75 74  e_stat2</b>..Fut
1cc0: 75 72 65 20 65 6e 68 61 6e 63 65 6d 65 6e 74 73  ure enhancements
1cd0: 20 6d 61 79 20 63 72 65 61 74 65 0a 61 64 64 69   may create.addi
1ce0: 74 69 6f 6e 61 6c 20 74 61 62 6c 65 73 20 77 69  tional tables wi
1cf0: 74 68 20 74 68 65 20 73 61 6d 65 20 6e 61 6d 65  th the same name
1d00: 20 70 61 74 74 65 72 6e 20 65 78 63 65 70 74 20   pattern except 
1d10: 77 69 74 68 20 74 68 65 20 22 31 22 0a 6f 72 20  with the "1".or 
1d20: 22 32 22 20 63 68 61 6e 67 65 64 20 74 6f 20 61  "2" changed to a
1d30: 20 64 69 66 66 65 72 65 6e 74 20 64 69 67 69 74   different digit
1d40: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 20 5e 54 68 65 20  .</p>..<p> ^The 
1d50: 5b 44 52 4f 50 20 54 41 42 4c 45 5d 20 63 6f 6d  [DROP TABLE] com
1d60: 6d 61 6e 64 20 64 6f 65 73 0a 6e 6f 74 20 77 6f  mand does.not wo
1d70: 72 6b 20 6f 6e 20 74 68 65 20 3c 62 3e 73 71 6c  rk on the <b>sql
1d80: 69 74 65 5f 73 74 61 74 31 3c 2f 62 3e 20 6f 72  ite_stat1</b> or
1d90: 20 3c 62 3e 73 71 6c 69 74 65 5f 73 74 61 74 32   <b>sqlite_stat2
1da0: 3c 2f 62 3e 20 74 61 62 6c 65 73 2c 0a 62 75 74  </b> tables,.but
1db0: 20 61 6c 6c 20 74 68 65 20 63 6f 6e 74 65 6e 74   all the content
1dc0: 20 6f 66 20 74 68 6f 73 65 20 74 61 62 6c 65 73   of those tables
1dd0: 20 63 61 6e 20 62 65 20 71 75 65 72 69 65 64 20   can be queried 
1de0: 75 73 69 6e 67 20 5b 53 45 4c 45 43 54 5d 0a 61  using [SELECT].a
1df0: 6e 64 20 63 61 6e 20 62 65 20 64 65 6c 65 74 65  nd can be delete
1e00: 64 2c 20 61 75 67 6d 65 6e 74 65 64 2c 20 6f 72  d, augmented, or
1e10: 20 6d 6f 64 69 66 69 65 64 20 75 73 69 6e 67 20   modified using 
1e20: 74 68 65 20 5b 44 45 4c 45 54 45 5d 2c 0a 5b 49  the [DELETE],.[I
1e30: 4e 53 45 52 54 5d 2c 20 61 6e 64 20 5b 55 50 44  NSERT], and [UPD
1e40: 41 54 45 5d 20 63 6f 6d 6d 61 6e 64 73 2e 0a 41  ATE] commands..A
1e50: 70 70 72 6f 70 72 69 61 74 65 20 63 61 72 65 20  ppropriate care 
1e60: 73 68 6f 75 6c 64 20 62 65 20 75 73 65 64 20 77  should be used w
1e70: 68 65 6e 20 63 68 61 6e 67 69 6e 67 20 74 68 65  hen changing the
1e80: 20 63 6f 6e 74 65 6e 74 20 6f 66 20 74 68 65 20   content of the 
1e90: 73 74 61 74 69 73 74 69 63 73 0a 74 61 62 6c 65  statistics.table
1ea0: 73 20 61 73 20 69 6e 76 61 6c 69 64 20 63 6f 6e  s as invalid con
1eb0: 74 65 6e 74 20 63 61 6e 20 63 61 75 73 65 20 53  tent can cause S
1ec0: 51 4c 69 74 65 20 74 6f 20 73 65 6c 65 63 74 20  QLite to select 
1ed0: 69 6e 65 66 66 69 63 69 65 6e 74 0a 71 75 65 72  inefficient.quer
1ee0: 79 20 70 6c 61 6e 73 2e 20 20 47 65 6e 65 72 61  y plans.  Genera
1ef0: 6c 6c 79 20 73 70 65 61 6b 69 6e 67 2c 20 6f 6e  lly speaking, on
1f00: 65 20 73 68 6f 75 6c 64 20 6e 6f 74 20 6d 6f 64  e should not mod
1f10: 69 66 79 20 74 68 65 20 63 6f 6e 74 65 6e 74 20  ify the content 
1f20: 6f 66 0a 74 68 65 20 73 74 61 74 69 73 74 69 63  of.the statistic
1f30: 73 20 74 61 62 6c 65 73 20 62 79 20 61 6e 79 20  s tables by any 
1f40: 6d 65 63 68 61 6e 69 73 6d 20 6f 74 68 65 72 20  mechanism other 
1f50: 74 68 61 6e 20 69 6e 76 6f 6b 69 6e 67 20 74 68  than invoking th
1f60: 65 0a 41 4e 41 4c 59 5a 45 20 63 6f 6d 6d 61 6e  e.ANALYZE comman
1f70: 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 20 5e 53 74 61  d.</p>..<p> ^Sta
1f80: 74 69 73 74 69 63 73 20 67 61 74 68 65 72 65 64  tistics gathered
1f90: 20 62 79 20 41 4e 41 4c 59 5a 45 20 61 72 65 20   by ANALYZE are 
1fa0: 3c 75 3e 6e 6f 74 3c 2f 75 3e 20 61 75 74 6f 6d  <u>not</u> autom
1fb0: 61 74 69 63 61 6c 6c 79 20 75 70 64 61 74 65 64  atically updated
1fc0: 20 61 73 0a 74 68 65 20 63 6f 6e 74 65 6e 74 20   as.the content 
1fd0: 6f 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20  of the database 
1fe0: 63 68 61 6e 67 65 73 2e 20 20 49 66 20 74 68 65  changes.  If the
1ff0: 20 63 6f 6e 74 65 6e 74 20 6f 66 20 74 68 65 20   content of the 
2000: 64 61 74 61 62 61 73 65 0a 63 68 61 6e 67 65 73  database.changes
2010: 20 73 69 67 6e 69 66 69 63 61 6e 74 6c 79 2c 20   significantly, 
2020: 6f 72 20 69 66 20 74 68 65 20 64 61 74 61 62 61  or if the databa
2030: 73 65 20 73 63 68 65 6d 61 20 63 68 61 6e 67 65  se schema change
2040: 73 2c 20 74 68 65 6e 20 6f 6e 65 20 73 68 6f 75  s, then one shou
2050: 6c 64 0a 63 6f 6e 73 69 64 65 72 20 72 65 72 75  ld.consider reru
2060: 6e 6e 69 6e 67 20 74 68 65 20 41 4e 41 4c 59 5a  nning the ANALYZ
2070: 45 20 63 6f 6d 6d 61 6e 64 20 69 6e 20 6f 72 64  E command in ord
2080: 65 72 20 74 6f 20 75 70 64 61 74 65 20 74 68 65  er to update the
2090: 20 73 74 61 74 69 73 74 69 63 73 2e 3c 2f 70 3e   statistics.</p>
20a0: 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23  ..<tcl>.########
20b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
20c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
20d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
20e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
20f0: 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b  ######.Section {
2100: 41 54 54 41 43 48 20 44 41 54 41 42 41 53 45 7d  ATTACH DATABASE}
2110: 20 61 74 74 61 63 68 20 2a 41 54 54 41 43 48 0a   attach *ATTACH.
2120: 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 61  .BubbleDiagram a
2130: 74 74 61 63 68 2d 73 74 6d 74 20 31 0a 3c 2f 74  ttach-stmt 1.</t
2140: 63 6c 3e 0a 0a 3c 70 3e 20 5e 54 68 65 20 41 54  cl>..<p> ^The AT
2150: 54 41 43 48 20 44 41 54 41 42 41 53 45 20 73 74  TACH DATABASE st
2160: 61 74 65 6d 65 6e 74 20 61 64 64 73 20 61 6e 6f  atement adds ano
2170: 74 68 65 72 20 64 61 74 61 62 61 73 65 20 0a 66  ther database .f
2180: 69 6c 65 20 74 6f 20 74 68 65 20 63 75 72 72 65  ile to the curre
2190: 6e 74 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e  nt [database con
21a0: 6e 65 63 74 69 6f 6e 5d 2e 20 0a 5e 54 68 65 20  nection]. .^The 
21b0: 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 73 20 27  database-names '
21c0: 6d 61 69 6e 27 20 61 6e 64 20 0a 27 74 65 6d 70  main' and .'temp
21d0: 27 20 72 65 66 65 72 20 74 6f 20 74 68 65 20 6d  ' refer to the m
21e0: 61 69 6e 20 64 61 74 61 62 61 73 65 20 61 6e 64  ain database and
21f0: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 75 73   the database us
2200: 65 64 20 66 6f 72 20 0a 74 65 6d 70 6f 72 61 72  ed for .temporar
2210: 79 20 74 61 62 6c 65 73 2e 20 20 5e 54 68 65 20  y tables.  ^The 
2220: 6d 61 69 6e 20 61 6e 64 20 74 65 6d 70 20 64 61  main and temp da
2230: 74 61 62 61 73 65 73 20 63 61 6e 6e 6f 74 20 62  tabases cannot b
2240: 65 20 61 74 74 61 63 68 65 64 20 6f 72 0a 64 65  e attached or.de
2250: 74 61 63 68 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e  tached.</p>..<p>
2260: 20 5e 28 54 61 62 6c 65 73 20 69 6e 20 61 6e 20   ^(Tables in an 
2270: 61 74 74 61 63 68 65 64 20 64 61 74 61 62 61 73  attached databas
2280: 65 20 63 61 6e 20 62 65 20 72 65 66 65 72 72 65  e can be referre
2290: 64 20 74 6f 20 75 73 69 6e 67 20 74 68 65 20 73  d to using the s
22a0: 79 6e 74 61 78 20 0a 3c 69 3e 64 61 74 61 62 61  yntax .<i>databa
22b0: 73 65 2d 6e 61 6d 65 2e 74 61 62 6c 65 2d 6e 61  se-name.table-na
22c0: 6d 65 3c 2f 69 3e 2e 29 5e 20 20 5e 49 66 20 74  me</i>.)^  ^If t
22d0: 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 74  he name of the t
22e0: 61 62 6c 65 20 69 73 20 75 6e 69 71 75 65 0a 61  able is unique.a
22f0: 63 72 6f 73 73 20 61 6c 6c 20 61 74 74 61 63 68  cross all attach
2300: 65 64 20 64 61 74 61 62 61 73 65 73 20 61 6e 64  ed databases and
2310: 20 74 68 65 20 6d 61 69 6e 20 61 6e 64 20 74 65   the main and te
2320: 6d 70 20 64 61 74 61 62 61 73 65 73 2c 20 74 68  mp databases, th
2330: 65 6e 20 74 68 65 0a 3c 69 3e 64 61 74 61 62 61  en the.<i>databa
2340: 73 65 2d 6e 61 6d 65 3c 2f 69 3e 20 70 72 65 66  se-name</i> pref
2350: 69 78 20 69 73 20 6e 6f 74 20 72 65 71 75 69 72  ix is not requir
2360: 65 64 2e 20 20 5e 49 66 20 74 77 6f 20 6f 72 20  ed.  ^If two or 
2370: 6d 6f 72 65 20 74 61 62 6c 65 73 20 69 6e 0a 64  more tables in.d
2380: 69 66 66 65 72 65 6e 74 20 64 61 74 61 62 61 73  ifferent databas
2390: 65 73 20 68 61 76 65 20 74 68 65 20 73 61 6d 65  es have the same
23a0: 20 6e 61 6d 65 20 61 6e 64 20 74 68 65 20 0a 3c   name and the .<
23b0: 69 3e 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3c  i>database-name<
23c0: 2f 69 3e 20 70 72 65 66 69 78 20 69 73 20 6e 6f  /i> prefix is no
23d0: 74 20 75 73 65 64 20 6f 6e 20 61 20 74 61 62 6c  t used on a tabl
23e0: 65 20 72 65 66 65 72 65 6e 63 65 2c 20 74 68 65  e reference, the
23f0: 6e 20 74 68 65 0a 74 61 62 6c 65 20 63 68 6f 73  n the.table chos
2400: 65 6e 20 69 73 20 74 68 65 20 6f 6e 65 20 69 6e  en is the one in
2410: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 74 68   the database th
2420: 61 74 20 77 61 73 20 6c 65 61 73 74 20 72 65 63  at was least rec
2430: 65 6e 74 6c 79 20 61 74 74 61 63 68 65 64 2e 3c  ently attached.<
2440: 2f 70 3e 0a 0a 3c 70 3e 0a 5e 54 72 61 6e 73 61  /p>..<p>.^Transa
2450: 63 74 69 6f 6e 73 20 69 6e 76 6f 6c 76 69 6e 67  ctions involving
2460: 20 6d 75 6c 74 69 70 6c 65 20 61 74 74 61 63 68   multiple attach
2470: 65 64 20 64 61 74 61 62 61 73 65 73 20 61 72 65  ed databases are
2480: 20 61 74 6f 6d 69 63 2c 0a 61 73 73 75 6d 69 6e   atomic,.assumin
2490: 67 20 74 68 61 74 20 74 68 65 20 6d 61 69 6e 20  g that the main 
24a0: 64 61 74 61 62 61 73 65 20 69 73 20 6e 6f 74 20  database is not 
24b0: 22 5b 3a 6d 65 6d 6f 72 79 3a 5d 22 20 61 6e 64  "[:memory:]" and
24c0: 20 74 68 65 20 0a 5b 6a 6f 75 72 6e 61 6c 5f 6d   the .[journal_m
24d0: 6f 64 65 5d 20 69 73 20 6e 6f 74 20 5b 57 41 4c  ode] is not [WAL
24e0: 5d 2e 20 20 5e 28 49 66 20 74 68 65 20 6d 61 69  ].  ^(If the mai
24f0: 6e 0a 64 61 74 61 62 61 73 65 20 69 73 20 22 3a  n.database is ":
2500: 6d 65 6d 6f 72 79 3a 22 20 6f 72 20 69 66 20 74  memory:" or if t
2510: 68 65 20 6a 6f 75 72 6e 61 6c 5f 6d 6f 64 65 20  he journal_mode 
2520: 69 73 20 57 41 4c 2c 20 74 68 65 6e 20 0a 74 72  is WAL, then .tr
2530: 61 6e 73 61 63 74 69 6f 6e 73 20 63 6f 6e 74 69  ansactions conti
2540: 6e 75 65 20 74 6f 20 62 65 20 61 74 6f 6d 69 63  nue to be atomic
2550: 20 77 69 74 68 69 6e 20 65 61 63 68 20 69 6e 64   within each ind
2560: 69 76 69 64 75 61 6c 0a 64 61 74 61 62 61 73 65  ividual.database
2570: 20 66 69 6c 65 2e 20 42 75 74 20 69 66 20 74 68   file. But if th
2580: 65 20 68 6f 73 74 20 63 6f 6d 70 75 74 65 72 20  e host computer 
2590: 63 72 61 73 68 65 73 20 69 6e 20 74 68 65 20 6d  crashes in the m
25a0: 69 64 64 6c 65 0a 6f 66 20 61 20 5b 43 4f 4d 4d  iddle.of a [COMM
25b0: 49 54 5d 20 77 68 65 72 65 20 74 77 6f 20 6f 72  IT] where two or
25c0: 20 6d 6f 72 65 20 64 61 74 61 62 61 73 65 20 66   more database f
25d0: 69 6c 65 73 20 61 72 65 20 75 70 64 61 74 65 64  iles are updated
25e0: 2c 0a 73 6f 6d 65 20 6f 66 20 74 68 6f 73 65 20  ,.some of those 
25f0: 66 69 6c 65 73 20 6d 69 67 68 74 20 67 65 74 20  files might get 
2600: 74 68 65 20 63 68 61 6e 67 65 73 20 77 68 65 72  the changes wher
2610: 65 20 6f 74 68 65 72 73 0a 6d 69 67 68 74 20 6e  e others.might n
2620: 6f 74 2e 29 5e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 20  ot.)^.</p>..<p> 
2630: 5e 54 68 65 72 65 20 69 73 20 61 20 6c 69 6d 69  ^There is a limi
2640: 74 2c 20 73 65 74 20 75 73 69 6e 67 20 5b 73 71  t, set using [sq
2650: 6c 69 74 65 33 5f 6c 69 6d 69 74 28 29 5d 20 61  lite3_limit()] a
2660: 6e 64 20 0a 5b 53 51 4c 49 54 45 5f 4c 49 4d 49  nd .[SQLITE_LIMI
2670: 54 5f 41 54 54 41 43 48 45 44 5d 2c 20 74 6f 20  T_ATTACHED], to 
2680: 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 64 61  the number of da
2690: 74 61 62 61 73 65 73 20 74 68 61 74 20 63 61 6e  tabases that can
26a0: 20 62 65 0a 73 69 6d 75 6c 74 61 6e 65 6f 75 73   be.simultaneous
26b0: 6c 79 20 61 74 74 61 63 68 65 64 20 74 6f 20 61  ly attached to a
26c0: 20 73 69 6e 67 6c 65 20 64 61 74 61 62 61 73 65   single database
26d0: 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 3c 2f 70 3e   connection.</p>
26e0: 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23  ..<tcl>.########
26f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2700: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2710: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2720: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2730: 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20  #######.Section 
2740: 7b 42 45 47 49 4e 20 54 52 41 4e 53 41 43 54 49  {BEGIN TRANSACTI
2750: 4f 4e 7d 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  ON} transaction 
2760: 7b 2a 42 45 47 49 4e 20 43 4f 4d 4d 49 54 20 52  {*BEGIN COMMIT R
2770: 4f 4c 4c 42 41 43 4b 7d 0a 0a 42 75 62 62 6c 65  OLLBACK}..Bubble
2780: 44 69 61 67 72 61 6d 20 62 65 67 69 6e 2d 73 74  Diagram begin-st
2790: 6d 74 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d  mt.BubbleDiagram
27a0: 20 63 6f 6d 6d 69 74 2d 73 74 6d 74 0a 42 75 62   commit-stmt.Bub
27b0: 62 6c 65 44 69 61 67 72 61 6d 20 72 6f 6c 6c 62  bleDiagram rollb
27c0: 61 63 6b 2d 73 74 6d 74 0a 3c 2f 74 63 6c 3e 0a  ack-stmt.</tcl>.
27d0: 0a 3c 70 3e 0a 5e 4e 6f 20 63 68 61 6e 67 65 73  .<p>.^No changes
27e0: 20 63 61 6e 20 62 65 20 6d 61 64 65 20 74 6f 20   can be made to 
27f0: 74 68 65 20 64 61 74 61 62 61 73 65 20 65 78 63  the database exc
2800: 65 70 74 20 77 69 74 68 69 6e 20 61 20 74 72 61  ept within a tra
2810: 6e 73 61 63 74 69 6f 6e 2e 0a 5e 41 6e 79 20 63  nsaction..^Any c
2820: 6f 6d 6d 61 6e 64 20 74 68 61 74 20 63 68 61 6e  ommand that chan
2830: 67 65 73 20 74 68 65 20 64 61 74 61 62 61 73 65  ges the database
2840: 20 28 62 61 73 69 63 61 6c 6c 79 2c 20 61 6e 79   (basically, any
2850: 20 53 51 4c 20 63 6f 6d 6d 61 6e 64 0a 6f 74 68   SQL command.oth
2860: 65 72 20 74 68 61 6e 20 5b 53 45 4c 45 43 54 5d  er than [SELECT]
2870: 29 20 77 69 6c 6c 20 61 75 74 6f 6d 61 74 69 63  ) will automatic
2880: 61 6c 6c 79 20 73 74 61 72 74 20 61 20 74 72 61  ally start a tra
2890: 6e 73 61 63 74 69 6f 6e 20 69 66 0a 6f 6e 65 20  nsaction if.one 
28a0: 69 73 20 6e 6f 74 20 61 6c 72 65 61 64 79 20 69  is not already i
28b0: 6e 20 65 66 66 65 63 74 2e 20 20 5e 41 75 74 6f  n effect.  ^Auto
28c0: 6d 61 74 69 63 61 6c 6c 79 20 73 74 61 72 74 65  matically starte
28d0: 64 20 74 72 61 6e 73 61 63 74 69 6f 6e 73 0a 61  d transactions.a
28e0: 72 65 20 63 6f 6d 6d 69 74 74 65 64 20 77 68 65  re committed whe
28f0: 6e 20 74 68 65 20 6c 61 73 74 20 71 75 65 72 79  n the last query
2900: 20 66 69 6e 69 73 68 65 73 2e 0a 3c 2f 70 3e 0a   finishes..</p>.
2910: 0a 3c 70 3e 0a 5e 54 72 61 6e 73 61 63 74 69 6f  .<p>.^Transactio
2920: 6e 73 20 63 61 6e 20 62 65 20 73 74 61 72 74 65  ns can be starte
2930: 64 20 6d 61 6e 75 61 6c 6c 79 20 75 73 69 6e 67  d manually using
2940: 20 74 68 65 20 42 45 47 49 4e 0a 63 6f 6d 6d 61   the BEGIN.comma
2950: 6e 64 2e 20 20 5e 28 53 75 63 68 20 74 72 61 6e  nd.  ^(Such tran
2960: 73 61 63 74 69 6f 6e 73 20 75 73 75 61 6c 6c 79  sactions usually
2970: 20 70 65 72 73 69 73 74 20 75 6e 74 69 6c 20 74   persist until t
2980: 68 65 20 6e 65 78 74 0a 43 4f 4d 4d 49 54 20 6f  he next.COMMIT o
2990: 72 20 52 4f 4c 4c 42 41 43 4b 20 63 6f 6d 6d 61  r ROLLBACK comma
29a0: 6e 64 2e 20 20 42 75 74 20 61 20 74 72 61 6e 73  nd.  But a trans
29b0: 61 63 74 69 6f 6e 20 77 69 6c 6c 20 61 6c 73 6f  action will also
29c0: 20 0a 52 4f 4c 4c 42 41 43 4b 20 69 66 20 74 68   .ROLLBACK if th
29d0: 65 20 64 61 74 61 62 61 73 65 20 69 73 20 63 6c  e database is cl
29e0: 6f 73 65 64 20 6f 72 20 69 66 20 61 6e 20 65 72  osed or if an er
29f0: 72 6f 72 20 6f 63 63 75 72 73 0a 61 6e 64 20 74  ror occurs.and t
2a00: 68 65 20 52 4f 4c 4c 42 41 43 4b 20 63 6f 6e 66  he ROLLBACK conf
2a10: 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20  lict resolution 
2a20: 61 6c 67 6f 72 69 74 68 6d 20 69 73 20 73 70 65  algorithm is spe
2a30: 63 69 66 69 65 64 2e 29 5e 0a 53 65 65 20 74 68  cified.)^.See th
2a40: 65 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20  e documentation 
2a50: 6f 6e 20 74 68 65 20 5b 4f 4e 20 43 4f 4e 46 4c  on the [ON CONFL
2a60: 49 43 54 5d 0a 63 6c 61 75 73 65 20 66 6f 72 20  ICT].clause for 
2a70: 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72  additional infor
2a80: 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 74 68 65  mation about the
2a90: 20 52 4f 4c 4c 42 41 43 4b 0a 63 6f 6e 66 6c 69   ROLLBACK.confli
2aa0: 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c  ct resolution al
2ab0: 67 6f 72 69 74 68 6d 2e 0a 3c 2f 70 3e 0a 0a 3c  gorithm..</p>..<
2ac0: 70 3e 0a 5e 45 4e 44 20 54 52 41 4e 53 41 43 54  p>.^END TRANSACT
2ad0: 49 4f 4e 20 69 73 20 61 6e 20 61 6c 69 61 73 20  ION is an alias 
2ae0: 66 6f 72 20 43 4f 4d 4d 49 54 2e 0a 3c 2f 70 3e  for COMMIT..</p>
2af0: 0a 0a 3c 70 3e 20 5e 28 54 72 61 6e 73 61 63 74  ..<p> ^(Transact
2b00: 69 6f 6e 73 20 63 72 65 61 74 65 64 20 75 73 69  ions created usi
2b10: 6e 67 20 42 45 47 49 4e 2e 2e 2e 43 4f 4d 4d 49  ng BEGIN...COMMI
2b20: 54 20 64 6f 20 6e 6f 74 20 6e 65 73 74 2e 29 5e  T do not nest.)^
2b30: 0a 5e 46 6f 72 20 6e 65 73 74 65 64 20 74 72 61  .^For nested tra
2b40: 6e 73 61 63 74 69 6f 6e 73 2c 20 75 73 65 20 74  nsactions, use t
2b50: 68 65 20 5b 53 41 56 45 50 4f 49 4e 54 5d 20 61  he [SAVEPOINT] a
2b60: 6e 64 20 5b 52 45 4c 45 41 53 45 5d 20 63 6f 6d  nd [RELEASE] com
2b70: 6d 61 6e 64 73 2e 0a 54 68 65 20 22 54 4f 20 53  mands..The "TO S
2b80: 41 56 45 50 4f 49 4e 54 20 3c 69 3e 6e 61 6d 65  AVEPOINT <i>name
2b90: 3c 2f 69 3e 22 20 63 6c 61 75 73 65 20 6f 66 20  </i>" clause of 
2ba0: 74 68 65 20 52 4f 4c 4c 42 41 43 4b 20 63 6f 6d  the ROLLBACK com
2bb0: 6d 61 6e 64 20 73 68 6f 77 6e 0a 69 6e 20 74 68  mand shown.in th
2bc0: 65 20 73 79 6e 74 61 78 20 64 69 61 67 72 61 6d  e syntax diagram
2bd0: 20 61 62 6f 76 65 20 69 73 20 6f 6e 6c 79 20 61   above is only a
2be0: 70 70 6c 69 63 61 62 6c 65 20 74 6f 20 5b 53 41  pplicable to [SA
2bf0: 56 45 50 4f 49 4e 54 5d 0a 74 72 61 6e 73 61 63  VEPOINT].transac
2c00: 74 69 6f 6e 73 2e 20 20 5e 41 6e 20 61 74 74 65  tions.  ^An atte
2c10: 6d 70 74 20 74 6f 20 69 6e 76 6f 6b 65 20 74 68  mpt to invoke th
2c20: 65 20 42 45 47 49 4e 20 63 6f 6d 6d 61 6e 64 20  e BEGIN command 
2c30: 77 69 74 68 69 6e 0a 61 20 74 72 61 6e 73 61 63  within.a transac
2c40: 74 69 6f 6e 20 77 69 6c 6c 20 66 61 69 6c 20 77  tion will fail w
2c50: 69 74 68 20 61 6e 20 65 72 72 6f 72 2c 20 72 65  ith an error, re
2c60: 67 61 72 64 6c 65 73 73 20 6f 66 20 77 68 65 74  gardless of whet
2c70: 68 65 72 0a 74 68 65 20 74 72 61 6e 73 61 63 74  her.the transact
2c80: 69 6f 6e 20 77 61 73 20 73 74 61 72 74 65 64 20  ion was started 
2c90: 62 79 20 5b 53 41 56 45 50 4f 49 4e 54 5d 20 6f  by [SAVEPOINT] o
2ca0: 72 20 61 20 70 72 69 6f 72 20 42 45 47 49 4e 2e  r a prior BEGIN.
2cb0: 0a 5e 54 68 65 20 43 4f 4d 4d 49 54 20 63 6f 6d  .^The COMMIT com
2cc0: 6d 61 6e 64 20 61 6e 64 20 74 68 65 20 52 4f 4c  mand and the ROL
2cd0: 4c 42 41 43 4b 20 63 6f 6d 6d 61 6e 64 20 77 69  LBACK command wi
2ce0: 74 68 6f 75 74 20 74 68 65 20 54 4f 20 63 6c 61  thout the TO cla
2cf0: 75 73 65 0a 77 6f 72 6b 20 74 68 65 20 73 61 6d  use.work the sam
2d00: 65 20 6f 6e 20 5b 53 41 56 45 50 4f 49 4e 54 5d  e on [SAVEPOINT]
2d10: 20 74 72 61 6e 73 61 63 74 69 6f 6e 73 20 61 73   transactions as
2d20: 20 74 68 65 79 20 64 6f 20 77 69 74 68 20 74 72   they do with tr
2d30: 61 6e 73 61 63 74 69 6f 6e 73 0a 73 74 61 72 74  ansactions.start
2d40: 65 64 20 62 79 20 42 45 47 49 4e 2e 3c 2f 70 3e  ed by BEGIN.</p>
2d50: 0a 0a 3c 70 3e 0a 5e 54 72 61 6e 73 61 63 74 69  ..<p>.^Transacti
2d60: 6f 6e 73 20 63 61 6e 20 62 65 20 64 65 66 65 72  ons can be defer
2d70: 72 65 64 2c 20 69 6d 6d 65 64 69 61 74 65 2c 20  red, immediate, 
2d80: 6f 72 20 65 78 63 6c 75 73 69 76 65 2e 20 20 0a  or exclusive.  .
2d90: 5e 54 68 65 20 64 65 66 61 75 6c 74 20 74 72 61  ^The default tra
2da0: 6e 73 61 63 74 69 6f 6e 20 62 65 68 61 76 69 6f  nsaction behavio
2db0: 72 20 69 73 20 64 65 66 65 72 72 65 64 2e 0a 5e  r is deferred..^
2dc0: 44 65 66 65 72 72 65 64 20 6d 65 61 6e 73 20 74  Deferred means t
2dd0: 68 61 74 20 6e 6f 20 6c 6f 63 6b 73 20 61 72 65  hat no locks are
2de0: 20 61 63 71 75 69 72 65 64 0a 6f 6e 20 74 68 65   acquired.on the
2df0: 20 64 61 74 61 62 61 73 65 20 75 6e 74 69 6c 20   database until 
2e00: 74 68 65 20 64 61 74 61 62 61 73 65 20 69 73 20  the database is 
2e10: 66 69 72 73 74 20 61 63 63 65 73 73 65 64 2e 20  first accessed. 
2e20: 20 5e 54 68 75 73 20 77 69 74 68 20 61 0a 64 65   ^Thus with a.de
2e30: 66 65 72 72 65 64 20 74 72 61 6e 73 61 63 74 69  ferred transacti
2e40: 6f 6e 2c 20 74 68 65 20 42 45 47 49 4e 20 73 74  on, the BEGIN st
2e50: 61 74 65 6d 65 6e 74 20 69 74 73 65 6c 66 20 64  atement itself d
2e60: 6f 65 73 20 6e 6f 74 68 69 6e 67 20 74 6f 20 74  oes nothing to t
2e70: 68 65 0a 66 69 6c 65 73 79 73 74 65 6d 2e 20 20  he.filesystem.  
2e80: 5e 4c 6f 63 6b 73 0a 61 72 65 20 6e 6f 74 20 61  ^Locks.are not a
2e90: 63 71 75 69 72 65 64 20 75 6e 74 69 6c 20 74 68  cquired until th
2ea0: 65 20 66 69 72 73 74 20 72 65 61 64 20 6f 72 20  e first read or 
2eb0: 77 72 69 74 65 20 6f 70 65 72 61 74 69 6f 6e 2e  write operation.
2ec0: 20 20 5e 54 68 65 20 66 69 72 73 74 20 72 65 61    ^The first rea
2ed0: 64 0a 6f 70 65 72 61 74 69 6f 6e 20 61 67 61 69  d.operation agai
2ee0: 6e 73 74 20 61 20 64 61 74 61 62 61 73 65 20 63  nst a database c
2ef0: 72 65 61 74 65 73 20 61 20 5b 53 48 41 52 45 44  reates a [SHARED
2f00: 5d 20 6c 6f 63 6b 20 61 6e 64 20 74 68 65 20 66  ] lock and the f
2f10: 69 72 73 74 0a 77 72 69 74 65 20 6f 70 65 72 61  irst.write opera
2f20: 74 69 6f 6e 20 63 72 65 61 74 65 73 20 61 20 5b  tion creates a [
2f30: 52 45 53 45 52 56 45 44 5d 20 6c 6f 63 6b 2e 20  RESERVED] lock. 
2f40: 20 20 5e 42 65 63 61 75 73 65 20 74 68 65 20 61    ^Because the a
2f50: 63 71 75 69 73 69 74 69 6f 6e 20 6f 66 0a 6c 6f  cquisition of.lo
2f60: 63 6b 73 20 69 73 20 64 65 66 65 72 72 65 64 20  cks is deferred 
2f70: 75 6e 74 69 6c 20 74 68 65 79 20 61 72 65 20 6e  until they are n
2f80: 65 65 64 65 64 2c 20 69 74 20 69 73 20 70 6f 73  eeded, it is pos
2f90: 73 69 62 6c 65 20 74 68 61 74 20 61 6e 6f 74 68  sible that anoth
2fa0: 65 72 0a 74 68 72 65 61 64 20 6f 72 20 70 72 6f  er.thread or pro
2fb0: 63 65 73 73 20 63 6f 75 6c 64 20 63 72 65 61 74  cess could creat
2fc0: 65 20 61 20 73 65 70 61 72 61 74 65 20 74 72 61  e a separate tra
2fd0: 6e 73 61 63 74 69 6f 6e 20 61 6e 64 20 77 72 69  nsaction and wri
2fe0: 74 65 20 74 6f 0a 74 68 65 20 64 61 74 61 62 61  te to.the databa
2ff0: 73 65 20 61 66 74 65 72 20 74 68 65 20 42 45 47  se after the BEG
3000: 49 4e 20 6f 6e 20 74 68 65 20 63 75 72 72 65 6e  IN on the curren
3010: 74 20 74 68 72 65 61 64 20 68 61 73 20 65 78 65  t thread has exe
3020: 63 75 74 65 64 2e 0a 5e 49 66 20 74 68 65 20 74  cuted..^If the t
3030: 72 61 6e 73 61 63 74 69 6f 6e 20 69 73 20 69 6d  ransaction is im
3040: 6d 65 64 69 61 74 65 2c 20 74 68 65 6e 20 5b 52  mediate, then [R
3050: 45 53 45 52 56 45 44 5d 20 6c 6f 63 6b 73 0a 61  ESERVED] locks.a
3060: 72 65 20 61 63 71 75 69 72 65 64 20 6f 6e 20 61  re acquired on a
3070: 6c 6c 20 64 61 74 61 62 61 73 65 73 20 61 73 20  ll databases as 
3080: 73 6f 6f 6e 20 61 73 20 74 68 65 20 42 45 47 49  soon as the BEGI
3090: 4e 20 63 6f 6d 6d 61 6e 64 20 69 73 0a 65 78 65  N command is.exe
30a0: 63 75 74 65 64 2c 20 77 69 74 68 6f 75 74 20 77  cuted, without w
30b0: 61 69 74 69 6e 67 20 66 6f 72 20 74 68 65 0a 64  aiting for the.d
30c0: 61 74 61 62 61 73 65 20 74 6f 20 62 65 20 75 73  atabase to be us
30d0: 65 64 2e 20 20 5e 41 66 74 65 72 20 61 20 42 45  ed.  ^After a BE
30e0: 47 49 4e 20 49 4d 4d 45 44 49 41 54 45 2c 20 0a  GIN IMMEDIATE, .
30f0: 6e 6f 20 6f 74 68 65 72 20 5b 64 61 74 61 62 61  no other [databa
3100: 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 77  se connection] w
3110: 69 6c 6c 20 62 65 20 61 62 6c 65 20 74 6f 20 77  ill be able to w
3120: 72 69 74 65 20 74 6f 20 74 68 65 20 64 61 74 61  rite to the data
3130: 62 61 73 65 20 6f 72 0a 64 6f 20 61 20 42 45 47  base or.do a BEG
3140: 49 4e 20 49 4d 4d 45 44 49 41 54 45 20 6f 72 20  IN IMMEDIATE or 
3150: 42 45 47 49 4e 20 45 58 43 4c 55 53 49 56 45 2e  BEGIN EXCLUSIVE.
3160: 20 20 5e 4f 74 68 65 72 20 70 72 6f 63 65 73 73    ^Other process
3170: 65 73 20 63 61 6e 20 63 6f 6e 74 69 6e 75 65 0a  es can continue.
3180: 74 6f 20 72 65 61 64 20 66 72 6f 6d 20 74 68 65  to read from the
3190: 20 64 61 74 61 62 61 73 65 2c 20 68 6f 77 65 76   database, howev
31a0: 65 72 2e 20 20 5e 41 6e 20 65 78 63 6c 75 73 69  er.  ^An exclusi
31b0: 76 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 63  ve transaction c
31c0: 61 75 73 65 73 0a 5b 45 58 43 4c 55 53 49 56 45  auses.[EXCLUSIVE
31d0: 5d 20 6c 6f 63 6b 73 20 74 6f 20 62 65 20 61 63  ] locks to be ac
31e0: 71 75 69 72 65 64 20 6f 6e 20 61 6c 6c 20 64 61  quired on all da
31f0: 74 61 62 61 73 65 73 2e 20 20 5e 41 66 74 65 72  tabases.  ^After
3200: 20 61 20 42 45 47 49 4e 0a 45 58 43 4c 55 53 49   a BEGIN.EXCLUSI
3210: 56 45 2c 20 6e 6f 20 6f 74 68 65 72 20 5b 64 61  VE, no other [da
3220: 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
3230: 6e 5d 20 65 78 63 65 70 74 20 66 6f 72 20 5b 72  n] except for [r
3240: 65 61 64 5f 75 6e 63 6f 6d 6d 69 74 74 65 64 5d  ead_uncommitted]
3250: 0a 63 6f 6e 6e 65 63 74 69 6f 6e 73 20 77 69 6c  .connections wil
3260: 6c 20 62 65 20 61 62 6c 65 20 74 6f 20 72 65 61  l be able to rea
3270: 64 20 74 68 65 20 64 61 74 61 62 61 73 65 20 61  d the database a
3280: 6e 64 20 6e 6f 20 6f 74 68 65 72 20 63 6f 6e 6e  nd no other conn
3290: 65 63 74 69 6f 6e 20 77 69 74 68 6f 75 74 0a 65  ection without.e
32a0: 78 63 65 70 74 69 6f 6e 20 77 69 6c 6c 20 62 65  xception will be
32b0: 20 61 62 6c 65 20 74 6f 20 77 72 69 74 65 20 74   able to write t
32c0: 68 65 20 64 61 74 61 62 61 73 65 20 75 6e 74 69  he database unti
32d0: 6c 20 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f  l the transactio
32e0: 6e 20 69 73 0a 63 6f 6d 70 6c 65 74 65 2e 0a 3c  n is.complete..<
32f0: 2f 70 3e 0a 0a 3c 70 3e 0a 5e 28 41 6e 20 69 6d  /p>..<p>.^(An im
3300: 70 6c 69 63 69 74 20 74 72 61 6e 73 61 63 74 69  plicit transacti
3310: 6f 6e 20 28 61 20 74 72 61 6e 73 61 63 74 69 6f  on (a transactio
3320: 6e 20 74 68 61 74 20 69 73 20 73 74 61 72 74 65  n that is starte
3330: 64 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2c  d automatically,
3340: 0a 6e 6f 74 20 61 20 74 72 61 6e 73 61 63 74 69  .not a transacti
3350: 6f 6e 20 73 74 61 72 74 65 64 20 62 79 20 42 45  on started by BE
3360: 47 49 4e 29 20 69 73 20 63 6f 6d 6d 69 74 74 65  GIN) is committe
3370: 64 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20  d automatically 
3380: 77 68 65 6e 0a 74 68 65 20 6c 61 73 74 20 61 63  when.the last ac
3390: 74 69 76 65 20 73 74 61 74 65 6d 65 6e 74 20 66  tive statement f
33a0: 69 6e 69 73 68 65 73 2e 20 20 41 20 73 74 61 74  inishes.  A stat
33b0: 65 6d 65 6e 74 20 66 69 6e 69 73 68 65 73 20 77  ement finishes w
33c0: 68 65 6e 20 69 74 73 0a 70 72 65 70 61 72 65 64  hen its.prepared
33d0: 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 5b 73   statement is [s
33e0: 71 6c 69 74 65 33 5f 72 65 73 65 74 28 29 20 7c  qlite3_reset() |
33f0: 20 72 65 73 65 74 5d 20 6f 72 0a 5b 73 71 6c 69   reset] or.[sqli
3400: 74 65 33 5f 66 69 6e 61 6c 69 7a 65 28 29 20 7c  te3_finalize() |
3410: 20 66 69 6e 61 6c 69 7a 65 64 5d 2e 20 20 41 6e   finalized].  An
3420: 20 6f 70 65 6e 20 5b 73 71 6c 69 74 65 33 5f 62   open [sqlite3_b
3430: 6c 6f 62 5d 20 75 73 65 64 20 66 6f 72 0a 69 6e  lob] used for.in
3440: 63 72 65 6d 65 6e 74 61 6c 20 42 4c 4f 42 20 49  cremental BLOB I
3450: 2f 4f 20 63 6f 75 6e 74 73 20 61 73 20 61 6e 20  /O counts as an 
3460: 75 6e 66 69 6e 69 73 68 65 64 20 73 74 61 74 65  unfinished state
3470: 6d 65 6e 74 2e 20 20 54 68 65 20 5b 73 71 6c 69  ment.  The [sqli
3480: 74 65 33 5f 62 6c 6f 62 5d 0a 66 69 6e 69 73 68  te3_blob].finish
3490: 65 73 20 77 68 65 6e 20 69 74 20 69 73 20 5b 73  es when it is [s
34a0: 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 63 6c 6f 73  qlite3_blob_clos
34b0: 65 28 29 20 7c 20 63 6c 6f 73 65 64 5d 2e 29 5e  e() | closed].)^
34c0: 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 5e 54 68 65 20  .</p>..<p>.^The 
34d0: 65 78 70 6c 69 63 69 74 20 43 4f 4d 4d 49 54 20  explicit COMMIT 
34e0: 63 6f 6d 6d 61 6e 64 20 72 75 6e 73 20 69 6d 6d  command runs imm
34f0: 65 64 69 61 74 65 6c 79 2c 20 65 76 65 6e 20 69  ediately, even i
3500: 66 20 74 68 65 72 65 20 61 72 65 0a 70 65 6e 64  f there are.pend
3510: 69 6e 67 20 5b 53 45 4c 45 43 54 5d 20 73 74 61  ing [SELECT] sta
3520: 74 65 6d 65 6e 74 73 2e 20 20 5e 48 6f 77 65 76  tements.  ^Howev
3530: 65 72 2c 20 69 66 20 74 68 65 72 65 20 61 72 65  er, if there are
3540: 20 70 65 6e 64 69 6e 67 0a 77 72 69 74 65 20 6f   pending.write o
3550: 70 65 72 61 74 69 6f 6e 73 2c 20 74 68 65 20 43  perations, the C
3560: 4f 4d 4d 49 54 20 63 6f 6d 6d 61 6e 64 0a 77 69  OMMIT command.wi
3570: 6c 6c 20 66 61 69 6c 20 77 69 74 68 20 61 20 65  ll fail with a e
3580: 72 72 6f 72 20 63 6f 64 65 20 5b 53 51 4c 49 54  rror code [SQLIT
3590: 45 5f 42 55 53 59 5d 2e 0a 3c 2f 70 3e 0a 0a 3c  E_BUSY]..</p>..<
35a0: 70 3e 0a 5e 41 6e 20 61 74 74 65 6d 70 74 20 74  p>.^An attempt t
35b0: 6f 20 65 78 65 63 75 74 65 20 43 4f 4d 4d 49 54  o execute COMMIT
35c0: 20 6d 69 67 68 74 20 61 6c 73 6f 20 72 65 73 75   might also resu
35d0: 6c 74 20 69 6e 20 61 6e 20 5b 53 51 4c 49 54 45  lt in an [SQLITE
35e0: 5f 42 55 53 59 5d 20 72 65 74 75 72 6e 20 63 6f  _BUSY] return co
35f0: 64 65 0a 69 66 20 61 6e 20 61 6e 6f 74 68 65 72  de.if an another
3600: 20 74 68 72 65 61 64 20 6f 72 20 70 72 6f 63 65   thread or proce
3610: 73 73 20 68 61 73 20 61 20 5b 73 68 61 72 65 64  ss has a [shared
3620: 20 6c 6f 63 6b 5d 20 6f 6e 20 74 68 65 20 64 61   lock] on the da
3630: 74 61 62 61 73 65 0a 74 68 61 74 20 70 72 65 76  tabase.that prev
3640: 65 6e 74 65 64 20 74 68 65 20 64 61 74 61 62 61  ented the databa
3650: 73 65 20 66 72 6f 6d 20 62 65 69 6e 67 20 75 70  se from being up
3660: 64 61 74 65 64 2e 20 20 5e 57 68 65 6e 20 43 4f  dated.  ^When CO
3670: 4d 4d 49 54 20 66 61 69 6c 73 20 69 6e 20 74 68  MMIT fails in th
3680: 69 73 0a 77 61 79 2c 20 74 68 65 20 74 72 61 6e  is.way, the tran
3690: 73 61 63 74 69 6f 6e 20 72 65 6d 61 69 6e 73 20  saction remains 
36a0: 61 63 74 69 76 65 20 61 6e 64 20 74 68 65 20 43  active and the C
36b0: 4f 4d 4d 49 54 20 63 61 6e 20 62 65 20 72 65 74  OMMIT can be ret
36c0: 72 69 65 64 20 6c 61 74 65 72 0a 61 66 74 65 72  ried later.after
36d0: 20 74 68 65 20 72 65 61 64 65 72 20 68 61 73 20   the reader has 
36e0: 68 61 64 20 61 20 63 68 61 6e 63 65 20 74 6f 20  had a chance to 
36f0: 63 6c 65 61 72 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e  clear..</p>..<p>
3700: 0a 5e 54 68 65 20 52 4f 4c 4c 42 41 43 4b 20 77  .^The ROLLBACK w
3710: 69 6c 6c 20 66 61 69 6c 20 77 69 74 68 20 61 6e  ill fail with an
3720: 20 65 72 72 6f 72 20 63 6f 64 65 20 5b 53 51 4c   error code [SQL
3730: 49 54 45 5f 42 55 53 59 5d 20 69 66 20 74 68 65  ITE_BUSY] if the
3740: 72 65 0a 61 72 65 20 61 6e 79 20 70 65 6e 64 69  re.are any pendi
3750: 6e 67 20 71 75 65 72 69 65 73 2e 20 20 5e 42 6f  ng queries.  ^Bo
3760: 74 68 20 72 65 61 64 2d 6f 6e 6c 79 20 61 6e 64  th read-only and
3770: 20 72 65 61 64 2f 77 72 69 74 65 20 71 75 65 72   read/write quer
3780: 69 65 73 20 77 69 6c 6c 0a 63 61 75 73 65 20 61  ies will.cause a
3790: 20 52 4f 4c 4c 42 41 43 4b 20 74 6f 20 66 61 69   ROLLBACK to fai
37a0: 6c 2e 20 20 41 20 52 4f 4c 4c 42 41 43 4b 20 6d  l.  A ROLLBACK m
37b0: 75 73 74 20 66 61 69 6c 20 69 66 20 74 68 65 72  ust fail if ther
37c0: 65 20 61 72 65 20 70 65 6e 64 69 6e 67 0a 72 65  e are pending.re
37d0: 61 64 20 6f 70 65 72 61 74 69 6f 6e 73 20 28 75  ad operations (u
37e0: 6e 6c 69 6b 65 20 43 4f 4d 4d 49 54 20 77 68 69  nlike COMMIT whi
37f0: 63 68 20 63 61 6e 20 73 75 63 63 65 65 64 29 20  ch can succeed) 
3800: 62 65 63 61 75 73 65 20 62 61 64 20 74 68 69 6e  because bad thin
3810: 67 73 0a 77 69 6c 6c 20 68 61 70 70 65 6e 20 69  gs.will happen i
3820: 66 20 74 68 65 20 69 6e 2d 6d 65 6d 6f 72 79 20  f the in-memory 
3830: 69 6d 61 67 65 20 6f 66 20 74 68 65 20 64 61 74  image of the dat
3840: 61 62 61 73 65 20 69 73 20 63 68 61 6e 67 65 64  abase is changed
3850: 20 6f 75 74 20 66 72 6f 6d 20 75 6e 64 65 72 0a   out from under.
3860: 61 6e 20 61 63 74 69 76 65 20 71 75 65 72 79 2e  an active query.
3870: 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 49 66 20 5b 50  .</p>..<p>.If [P
3880: 52 41 47 4d 41 20 6a 6f 75 72 6e 61 6c 5f 6d 6f  RAGMA journal_mo
3890: 64 65 5d 20 69 73 20 73 65 74 20 74 6f 20 4f 46  de] is set to OF
38a0: 46 20 28 74 68 75 73 20 64 69 73 61 62 6c 69 6e  F (thus disablin
38b0: 67 20 74 68 65 20 72 6f 6c 6c 62 61 63 6b 20 6a  g the rollback j
38c0: 6f 75 72 6e 61 6c 0a 66 69 6c 65 29 20 74 68 65  ournal.file) the
38d0: 6e 20 74 68 65 20 62 65 68 61 76 69 6f 72 20 6f  n the behavior o
38e0: 66 20 74 68 65 20 52 4f 4c 4c 42 41 43 4b 20 63  f the ROLLBACK c
38f0: 6f 6d 6d 61 6e 64 20 69 73 20 75 6e 64 65 66 69  ommand is undefi
3900: 6e 65 64 2e 0a 3c 2f 70 3e 0a 0a 3c 68 33 3e 52  ned..</p>..<h3>R
3910: 65 73 70 6f 6e 73 65 20 54 6f 20 45 72 72 6f 72  esponse To Error
3920: 73 20 57 69 74 68 69 6e 20 41 20 54 72 61 6e 73  s Within A Trans
3930: 61 63 74 69 6f 6e 3c 2f 68 33 3e 0a 0a 3c 70 3e  action</h3>..<p>
3940: 20 5e 28 49 66 20 63 65 72 74 61 69 6e 20 6b 69   ^(If certain ki
3950: 6e 64 73 20 6f 66 20 65 72 72 6f 72 73 20 6f 63  nds of errors oc
3960: 63 75 72 20 77 69 74 68 69 6e 20 61 20 74 72 61  cur within a tra
3970: 6e 73 61 63 74 69 6f 6e 2c 20 74 68 65 0a 74 72  nsaction, the.tr
3980: 61 6e 73 61 63 74 69 6f 6e 20 6d 61 79 20 6f 72  ansaction may or
3990: 20 6d 61 79 20 6e 6f 74 20 62 65 20 72 6f 6c 6c   may not be roll
39a0: 65 64 20 62 61 63 6b 20 61 75 74 6f 6d 61 74 69  ed back automati
39b0: 63 61 6c 6c 79 2e 20 20 54 68 65 0a 65 72 72 6f  cally.  The.erro
39c0: 72 73 20 74 68 61 74 20 63 61 75 73 65 20 74 68  rs that cause th
39d0: 65 20 62 65 68 61 76 69 6f 72 20 69 6e 63 6c 75  e behavior inclu
39e0: 64 65 3a 3c 2f 70 3e 0a 0a 3c 75 6c 3e 0a 3c 6c  de:</p>..<ul>.<l
39f0: 69 3e 20 5b 53 51 4c 49 54 45 5f 46 55 4c 4c 5d  i> [SQLITE_FULL]
3a00: 3a 20 64 61 74 61 62 61 73 65 20 6f 72 20 64 69  : database or di
3a10: 73 6b 20 66 75 6c 6c 0a 3c 6c 69 3e 20 5b 53 51  sk full.<li> [SQ
3a20: 4c 49 54 45 5f 49 4f 45 52 52 5d 3a 20 64 69 73  LITE_IOERR]: dis
3a30: 6b 20 49 2f 4f 20 65 72 72 6f 72 0a 3c 6c 69 3e  k I/O error.<li>
3a40: 20 5b 53 51 4c 49 54 45 5f 42 55 53 59 5d 3a 20   [SQLITE_BUSY]: 
3a50: 64 61 74 61 62 61 73 65 20 69 6e 20 75 73 65 20  database in use 
3a60: 62 79 20 61 6e 6f 74 68 65 72 20 70 72 6f 63 65  by another proce
3a70: 73 73 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f  ss.<li> [SQLITE_
3a80: 4e 4f 4d 45 4d 5d 3a 20 6f 75 74 20 6f 72 20 6d  NOMEM]: out or m
3a90: 65 6d 6f 72 79 0a 3c 6c 69 3e 20 5b 53 51 4c 49  emory.<li> [SQLI
3aa0: 54 45 5f 49 4e 54 45 52 52 55 50 54 5d 3a 20 70  TE_INTERRUPT]: p
3ab0: 72 6f 63 65 73 73 69 6e 67 20 5b 73 71 6c 69 74  rocessing [sqlit
3ac0: 65 33 5f 69 6e 74 65 72 72 75 70 74 7c 69 6e 74  e3_interrupt|int
3ad0: 65 72 72 75 70 74 65 64 5d 0a 20 20 20 20 20 62  errupted].     b
3ae0: 79 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 72 65  y application re
3af0: 71 75 65 73 74 0a 3c 2f 75 6c 3e 29 5e 0a 0a 3c  quest.</ul>)^..<
3b00: 70 3e 0a 5e 46 6f 72 20 61 6c 6c 20 6f 66 20 74  p>.^For all of t
3b10: 68 65 73 65 20 65 72 72 6f 72 73 2c 20 53 51 4c  hese errors, SQL
3b20: 69 74 65 20 61 74 74 65 6d 70 74 73 20 74 6f 20  ite attempts to 
3b30: 75 6e 64 6f 20 6a 75 73 74 20 74 68 65 20 6f 6e  undo just the on
3b40: 65 20 73 74 61 74 65 6d 65 6e 74 0a 69 74 20 77  e statement.it w
3b50: 61 73 20 77 6f 72 6b 69 6e 67 20 6f 6e 20 61 6e  as working on an
3b60: 64 20 6c 65 61 76 65 20 63 68 61 6e 67 65 73 20  d leave changes 
3b70: 66 72 6f 6d 20 70 72 69 6f 72 20 73 74 61 74 65  from prior state
3b80: 6d 65 6e 74 73 20 77 69 74 68 69 6e 20 74 68 65  ments within the
3b90: 0a 73 61 6d 65 20 74 72 61 6e 73 61 63 74 69 6f  .same transactio
3ba0: 6e 20 69 6e 74 61 63 74 20 61 6e 64 20 63 6f 6e  n intact and con
3bb0: 74 69 6e 75 65 20 77 69 74 68 20 74 68 65 20 74  tinue with the t
3bc0: 72 61 6e 73 61 63 74 69 6f 6e 2e 20 20 5e 48 6f  ransaction.  ^Ho
3bd0: 77 65 76 65 72 2c 20 0a 64 65 70 65 6e 64 69 6e  wever, .dependin
3be0: 67 20 6f 6e 20 74 68 65 20 73 74 61 74 65 6d 65  g on the stateme
3bf0: 6e 74 20 62 65 69 6e 67 20 65 76 61 6c 75 61 74  nt being evaluat
3c00: 65 64 20 61 6e 64 20 74 68 65 20 70 6f 69 6e 74  ed and the point
3c10: 20 61 74 20 77 68 69 63 68 20 74 68 65 0a 65 72   at which the.er
3c20: 72 6f 72 20 6f 63 63 75 72 73 2c 20 69 74 20 6d  ror occurs, it m
3c30: 69 67 68 74 20 62 65 20 6e 65 63 65 73 73 61 72  ight be necessar
3c40: 79 20 66 6f 72 20 53 51 4c 69 74 65 20 74 6f 20  y for SQLite to 
3c50: 72 6f 6c 6c 62 61 63 6b 20 61 6e 64 0a 63 61 6e  rollback and.can
3c60: 63 65 6c 20 74 68 65 20 65 6e 74 69 72 65 20 74  cel the entire t
3c70: 72 61 6e 73 61 63 74 69 6f 6e 2e 20 20 5e 41 6e  ransaction.  ^An
3c80: 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 63 61 6e   application can
3c90: 20 74 65 6c 6c 20 77 68 69 63 68 0a 63 6f 75 72   tell which.cour
3ca0: 73 65 20 6f 66 20 61 63 74 69 6f 6e 20 53 51 4c  se of action SQL
3cb0: 69 74 65 20 74 6f 6f 6b 20 62 79 20 75 73 69 6e  ite took by usin
3cc0: 67 20 74 68 65 0a 5b 73 71 6c 69 74 65 33 5f 67  g the.[sqlite3_g
3cd0: 65 74 5f 61 75 74 6f 63 6f 6d 6d 69 74 28 29 5d  et_autocommit()]
3ce0: 20 43 2d 6c 61 6e 67 75 61 67 65 20 69 6e 74 65   C-language inte
3cf0: 72 66 61 63 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49  rface.</p>..<p>I
3d00: 74 20 69 73 20 72 65 63 6f 6d 6d 65 6e 64 65 64  t is recommended
3d10: 20 74 68 61 74 20 61 70 70 6c 69 63 61 74 69 6f   that applicatio
3d20: 6e 73 20 72 65 73 70 6f 6e 64 20 74 6f 20 74 68  ns respond to th
3d30: 65 20 65 72 72 6f 72 73 0a 6c 69 73 74 65 64 20  e errors.listed 
3d40: 61 62 6f 76 65 20 62 79 20 65 78 70 6c 69 63 69  above by explici
3d50: 74 6c 79 20 69 73 73 75 69 6e 67 20 61 20 52 4f  tly issuing a RO
3d60: 4c 4c 42 41 43 4b 20 63 6f 6d 6d 61 6e 64 2e 20  LLBACK command. 
3d70: 20 5e 49 66 20 74 68 65 20 0a 74 72 61 6e 73 61   ^If the .transa
3d80: 63 74 69 6f 6e 20 68 61 73 20 61 6c 72 65 61 64  ction has alread
3d90: 79 20 62 65 65 6e 20 72 6f 6c 6c 65 64 20 62 61  y been rolled ba
3da0: 63 6b 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79  ck automatically
3db0: 0a 62 79 20 74 68 65 20 65 72 72 6f 72 20 72 65  .by the error re
3dc0: 73 70 6f 6e 73 65 2c 20 74 68 65 6e 20 74 68 65  sponse, then the
3dd0: 20 52 4f 4c 4c 42 41 43 4b 20 63 6f 6d 6d 61 6e   ROLLBACK comman
3de0: 64 20 77 69 6c 6c 20 66 61 69 6c 20 77 69 74 68  d will fail with
3df0: 20 61 6e 0a 65 72 72 6f 72 2c 20 62 75 74 20 6e   an.error, but n
3e00: 6f 20 68 61 72 6d 20 69 73 20 63 61 75 73 65 64  o harm is caused
3e10: 20 62 79 20 74 68 69 73 2e 3c 2f 70 3e 0a 0a 3c   by this.</p>..<
3e20: 70 3e 46 75 74 75 72 65 20 76 65 72 73 69 6f 6e  p>Future version
3e30: 73 20 6f 66 20 53 51 4c 69 74 65 20 6d 61 79 20  s of SQLite may 
3e40: 65 78 74 65 6e 64 20 74 68 65 20 6c 69 73 74 20  extend the list 
3e50: 6f 66 20 65 72 72 6f 72 73 20 77 68 69 63 68 0a  of errors which.
3e60: 6d 69 67 68 74 20 63 61 75 73 65 20 61 75 74 6f  might cause auto
3e70: 6d 61 74 69 63 20 74 72 61 6e 73 61 63 74 69 6f  matic transactio
3e80: 6e 20 72 6f 6c 6c 62 61 63 6b 2e 20 20 46 75 74  n rollback.  Fut
3e90: 75 72 65 20 76 65 72 73 69 6f 6e 73 20 6f 66 0a  ure versions of.
3ea0: 53 51 4c 69 74 65 20 6d 69 67 68 74 20 63 68 61  SQLite might cha
3eb0: 6e 67 65 20 74 68 65 20 65 72 72 6f 72 20 72 65  nge the error re
3ec0: 73 70 6f 6e 73 65 2e 20 20 49 6e 20 70 61 72 74  sponse.  In part
3ed0: 69 63 75 6c 61 72 2c 20 77 65 20 6d 61 79 0a 63  icular, we may.c
3ee0: 68 6f 6f 73 65 20 74 6f 20 73 69 6d 70 6c 69 66  hoose to simplif
3ef0: 79 20 74 68 65 20 69 6e 74 65 72 66 61 63 65 20  y the interface 
3f00: 69 6e 20 66 75 74 75 72 65 20 76 65 72 73 69 6f  in future versio
3f10: 6e 73 20 6f 66 20 53 51 4c 69 74 65 20 62 79 0a  ns of SQLite by.
3f20: 63 61 75 73 69 6e 67 20 74 68 65 20 65 72 72 6f  causing the erro
3f30: 72 73 20 61 62 6f 76 65 20 74 6f 20 66 6f 72 63  rs above to forc
3f40: 65 20 61 6e 20 75 6e 63 6f 6e 64 69 74 69 6f 6e  e an uncondition
3f50: 61 6c 20 72 6f 6c 6c 62 61 63 6b 2e 3c 2f 70 3e  al rollback.</p>
3f60: 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23  ..<tcl>.########
3f70: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3f80: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3f90: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3fa0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3fb0: 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20  #######.Section 
3fc0: 7b 53 41 56 45 50 4f 49 4e 54 7d 20 73 61 76 65  {SAVEPOINT} save
3fd0: 70 6f 69 6e 74 20 7b 53 41 56 45 50 4f 49 4e 54  point {SAVEPOINT
3fe0: 20 52 45 4c 45 41 53 45 7d 0a 0a 42 75 62 62 6c   RELEASE}..Bubbl
3ff0: 65 44 69 61 67 72 61 6d 20 73 61 76 65 70 6f 69  eDiagram savepoi
4000: 6e 74 2d 73 74 6d 74 0a 42 75 62 62 6c 65 44 69  nt-stmt.BubbleDi
4010: 61 67 72 61 6d 20 72 65 6c 65 61 73 65 2d 73 74  agram release-st
4020: 6d 74 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d  mt.BubbleDiagram
4030: 20 72 6f 6c 6c 62 61 63 6b 2d 73 74 6d 74 0a 3c   rollback-stmt.<
4040: 2f 74 63 6c 3e 0a 0a 3c 70 3e 20 5e 53 41 56 45  /tcl>..<p> ^SAVE
4050: 50 4f 49 4e 54 73 20 61 72 65 20 61 20 6d 65 74  POINTs are a met
4060: 68 6f 64 20 6f 66 20 63 72 65 61 74 69 6e 67 20  hod of creating 
4070: 74 72 61 6e 73 61 63 74 69 6f 6e 73 2c 20 73 69  transactions, si
4080: 6d 69 6c 61 72 20 74 6f 0a 5b 42 45 47 49 4e 5d  milar to.[BEGIN]
4090: 20 61 6e 64 20 5b 43 4f 4d 4d 49 54 5d 2c 20 65   and [COMMIT], e
40a0: 78 63 65 70 74 20 74 68 61 74 20 74 68 65 20 53  xcept that the S
40b0: 41 56 45 50 4f 49 4e 54 20 61 6e 64 20 52 45 4c  AVEPOINT and REL
40c0: 45 41 53 45 20 63 6f 6d 6d 61 6e 64 73 0a 61 72  EASE commands.ar
40d0: 65 20 6e 61 6d 65 64 20 61 6e 64 20 6d 61 79 20  e named and may 
40e0: 62 65 20 6e 65 73 74 65 64 2e 3c 2f 70 3e 0a 0a  be nested.</p>..
40f0: 3c 70 3e 20 5e 54 68 65 20 53 41 56 45 50 4f 49  <p> ^The SAVEPOI
4100: 4e 54 20 63 6f 6d 6d 61 6e 64 20 73 74 61 72 74  NT command start
4110: 73 20 61 20 6e 65 77 20 74 72 61 6e 73 61 63 74  s a new transact
4120: 69 6f 6e 20 77 69 74 68 20 61 20 6e 61 6d 65 2e  ion with a name.
4130: 0a 5e 54 68 65 20 74 72 61 6e 73 61 63 74 69 6f  .^The transactio
4140: 6e 20 6e 61 6d 65 73 20 6e 65 65 64 20 6e 6f 74  n names need not
4150: 20 62 65 20 75 6e 69 71 75 65 2e 0a 5e 28 41 20   be unique..^(A 
4160: 53 41 56 45 50 4f 49 4e 54 20 63 61 6e 20 62 65  SAVEPOINT can be
4170: 20 73 74 61 72 74 65 64 20 65 69 74 68 65 72 20   started either 
4180: 77 69 74 68 69 6e 20 6f 72 20 6f 75 74 73 69 64  within or outsid
4190: 65 20 6f 66 0a 61 20 5b 42 45 47 49 4e 5d 2e 2e  e of.a [BEGIN]..
41a0: 2e 5b 43 4f 4d 4d 49 54 5d 2e 29 5e 20 20 5e 28  .[COMMIT].)^  ^(
41b0: 57 68 65 6e 20 61 20 53 41 56 45 50 4f 49 4e 54  When a SAVEPOINT
41c0: 20 69 73 20 74 68 65 20 6f 75 74 65 72 2d 6d 6f   is the outer-mo
41d0: 73 74 20 73 61 76 65 70 6f 69 6e 74 0a 61 6e 64  st savepoint.and
41e0: 20 69 74 20 69 73 20 6e 6f 74 20 77 69 74 68 69   it is not withi
41f0: 6e 20 61 20 5b 42 45 47 49 4e 5d 2e 2e 2e 5b 43  n a [BEGIN]...[C
4200: 4f 4d 4d 49 54 5d 20 74 68 65 6e 20 74 68 65 20  OMMIT] then the 
4210: 62 65 68 61 76 69 6f 72 20 69 73 20 74 68 65 0a  behavior is the.
4220: 73 61 6d 65 20 61 73 20 42 45 47 49 4e 20 44 45  same as BEGIN DE
4230: 46 45 52 52 45 44 20 54 52 41 4e 53 41 43 54 49  FERRED TRANSACTI
4240: 4f 4e 2e 29 5e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54  ON.)^</p>..<p>^T
4250: 68 65 20 52 4f 4c 4c 42 41 43 4b 20 54 4f 20 63  he ROLLBACK TO c
4260: 6f 6d 6d 61 6e 64 20 72 65 76 65 72 74 73 20 74  ommand reverts t
4270: 68 65 20 73 74 61 74 65 20 6f 66 20 74 68 65 20  he state of the 
4280: 64 61 74 61 62 61 73 65 20 62 61 63 6b 20 74 6f  database back to
4290: 20 77 68 61 74 0a 69 74 20 77 61 73 20 6a 75 73   what.it was jus
42a0: 74 20 61 66 74 65 72 20 74 68 65 20 63 6f 72 72  t after the corr
42b0: 65 73 70 6f 6e 64 69 6e 67 20 53 41 56 45 50 4f  esponding SAVEPO
42c0: 49 4e 54 2e 20 20 5e 4e 6f 74 65 20 74 68 61 74  INT.  ^Note that
42d0: 20 75 6e 6c 69 6b 65 20 74 68 61 74 0a 70 6c 61   unlike that.pla
42e0: 69 6e 20 5b 52 4f 4c 4c 42 41 43 4b 5d 20 63 6f  in [ROLLBACK] co
42f0: 6d 6d 61 6e 64 20 28 77 69 74 68 6f 75 74 20 74  mmand (without t
4300: 68 65 20 54 4f 20 6b 65 79 77 6f 72 64 29 20 74  he TO keyword) t
4310: 68 65 20 52 4f 4c 4c 42 41 43 4b 20 54 4f 20 63  he ROLLBACK TO c
4320: 6f 6d 6d 61 6e 64 0a 64 6f 65 73 20 6e 6f 74 20  ommand.does not 
4330: 63 61 6e 63 65 6c 20 74 68 65 20 74 72 61 6e 73  cancel the trans
4340: 61 63 74 69 6f 6e 2e 20 20 5e 49 6e 73 74 65 61  action.  ^Instea
4350: 64 20 6f 66 20 63 61 6e 63 65 6c 6c 69 6e 67 20  d of cancelling 
4360: 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 2c  the transaction,
4370: 0a 74 68 65 20 52 4f 4c 4c 42 41 43 4b 20 54 4f  .the ROLLBACK TO
4380: 20 63 6f 6d 6d 61 6e 64 20 72 65 73 74 61 72 74   command restart
4390: 73 20 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f  s the transactio
43a0: 6e 20 61 67 61 69 6e 20 61 74 20 74 68 65 20 62  n again at the b
43b0: 65 67 69 6e 6e 69 6e 67 2e 0a 5e 41 6c 6c 20 69  eginning..^All i
43c0: 6e 74 65 72 76 65 6e 69 6e 67 20 53 41 56 45 50  ntervening SAVEP
43d0: 4f 49 4e 54 73 20 61 72 65 20 63 61 6e 63 65 6c  OINTs are cancel
43e0: 65 64 2c 20 68 6f 77 65 76 65 72 2e 3c 2f 70 3e  ed, however.</p>
43f0: 0a 0a 3c 70 3e 5e 54 68 65 20 52 45 4c 45 41 53  ..<p>^The RELEAS
4400: 45 20 63 6f 6d 6d 61 6e 64 20 69 73 20 6c 69 6b  E command is lik
4410: 65 20 61 20 5b 43 4f 4d 4d 49 54 5d 20 66 6f 72  e a [COMMIT] for
4420: 20 61 20 53 41 56 45 50 4f 49 4e 54 2e 0a 5e 54   a SAVEPOINT..^T
4430: 68 65 20 52 45 4c 45 41 53 45 20 63 6f 6d 6d 61  he RELEASE comma
4440: 6e 64 20 63 61 75 73 65 73 20 61 6c 6c 20 73 61  nd causes all sa
4450: 76 65 70 6f 69 6e 74 73 20 62 61 63 6b 20 74 6f  vepoints back to
4460: 20 61 6e 64 20 69 6e 63 6c 75 64 69 6e 67 20 74   and including t
4470: 68 65 20 0a 6d 6f 73 74 20 72 65 63 65 6e 74 20  he .most recent 
4480: 73 61 76 65 70 6f 69 6e 74 20 77 69 74 68 20 61  savepoint with a
4490: 20 6d 61 74 63 68 69 6e 67 20 6e 61 6d 65 20 74   matching name t
44a0: 6f 20 62 65 20 72 65 6d 6f 76 65 64 20 66 72 6f  o be removed fro
44b0: 6d 20 74 68 65 20 0a 74 72 61 6e 73 61 63 74 69  m the .transacti
44c0: 6f 6e 20 73 74 61 63 6b 2e 20 20 5e 54 68 65 20  on stack.  ^The 
44d0: 52 45 4c 45 41 53 45 20 6f 66 20 61 6e 20 69 6e  RELEASE of an in
44e0: 6e 65 72 20 74 72 61 6e 73 61 63 74 69 6f 6e 0a  ner transaction.
44f0: 64 6f 65 73 20 6e 6f 74 20 63 61 75 73 65 20 61  does not cause a
4500: 6e 79 20 63 68 61 6e 67 65 73 20 74 6f 20 62 65  ny changes to be
4510: 20 77 72 69 74 74 65 6e 20 74 6f 20 74 68 65 20   written to the 
4520: 64 61 74 61 62 61 73 65 20 66 69 6c 65 3b 20 69  database file; i
4530: 74 20 6d 65 72 65 6c 79 0a 72 65 6d 6f 76 65 73  t merely.removes
4540: 20 73 61 76 65 70 6f 69 6e 74 73 20 66 72 6f 6d   savepoints from
4550: 20 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e   the transaction
4560: 20 73 74 61 63 6b 20 73 75 63 68 20 74 68 61 74   stack such that
4570: 20 69 74 20 69 73 0a 6e 6f 20 6c 6f 6e 67 65 72   it is.no longer
4580: 20 70 6f 73 73 69 62 6c 65 20 74 6f 20 52 4f 4c   possible to ROL
4590: 4c 42 41 43 4b 20 54 4f 20 74 68 6f 73 65 20 73  LBACK TO those s
45a0: 61 76 65 70 6f 69 6e 74 73 2e 0a 5e 49 66 20 61  avepoints..^If a
45b0: 20 52 45 4c 45 41 53 45 20 63 6f 6d 6d 61 6e 64   RELEASE command
45c0: 20 72 65 6c 65 61 73 65 73 20 74 68 65 20 6f 75   releases the ou
45d0: 74 65 72 6d 6f 73 74 20 73 61 76 65 70 6f 69 6e  termost savepoin
45e0: 74 2c 20 73 6f 0a 74 68 61 74 20 74 68 65 20 74  t, so.that the t
45f0: 72 61 6e 73 61 63 74 69 6f 6e 20 73 74 61 63 6b  ransaction stack
4600: 20 62 65 63 6f 6d 65 73 20 65 6d 70 74 79 2c 20   becomes empty, 
4610: 74 68 65 6e 20 52 45 4c 45 41 53 45 20 69 73 20  then RELEASE is 
4620: 74 68 65 20 73 61 6d 65 0a 61 73 20 5b 43 4f 4d  the same.as [COM
4630: 4d 49 54 5d 2e 0a 5e 54 68 65 20 5b 43 4f 4d 4d  MIT]..^The [COMM
4640: 49 54 5d 20 63 6f 6d 6d 61 6e 64 20 6d 61 79 20  IT] command may 
4650: 62 65 20 75 73 65 64 20 74 6f 20 72 65 6c 65 61  be used to relea
4660: 73 65 20 61 6c 6c 20 73 61 76 65 70 6f 69 6e 74  se all savepoint
4670: 73 20 61 6e 64 0a 63 6f 6d 6d 69 74 20 74 68 65  s and.commit the
4680: 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 65 76 65   transaction eve
4690: 6e 20 69 66 20 74 68 65 20 74 72 61 6e 73 61 63  n if the transac
46a0: 74 69 6f 6e 20 77 61 73 20 6f 72 69 67 69 6e 61  tion was origina
46b0: 6c 6c 79 20 73 74 61 72 74 65 64 0a 62 79 20 61  lly started.by a
46c0: 20 53 41 56 45 50 4f 49 4e 54 20 63 6f 6d 6d 61   SAVEPOINT comma
46d0: 6e 64 20 69 6e 73 74 65 61 64 20 6f 66 20 61 20  nd instead of a 
46e0: 5b 42 45 47 49 4e 5d 20 63 6f 6d 6d 61 6e 64 2e  [BEGIN] command.
46f0: 3c 2f 70 3e 0a 0a 3c 70 3e 5e 49 66 20 74 68 65  </p>..<p>^If the
4700: 20 73 61 76 65 70 6f 69 6e 74 2d 6e 61 6d 65 20   savepoint-name 
4710: 69 6e 20 61 20 52 45 4c 45 41 53 45 20 63 6f 6d  in a RELEASE com
4720: 6d 61 6e 64 20 64 6f 65 73 20 6e 6f 74 20 6d 61  mand does not ma
4730: 74 63 68 20 61 6e 79 0a 73 61 76 65 70 6f 69 6e  tch any.savepoin
4740: 74 20 63 75 72 72 65 6e 74 6c 79 20 69 6e 20 74  t currently in t
4750: 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 73  he transaction s
4760: 74 61 63 6b 2c 20 74 68 65 6e 20 6e 6f 20 73 61  tack, then no sa
4770: 76 65 70 6f 69 6e 74 73 20 61 72 65 0a 72 65 6c  vepoints are.rel
4780: 65 61 73 65 64 2c 20 74 68 65 20 64 61 74 61 62  eased, the datab
4790: 61 73 65 20 69 73 20 75 6e 63 68 61 6e 67 65 64  ase is unchanged
47a0: 2c 20 61 6e 64 20 74 68 65 20 52 45 4c 45 41 53  , and the RELEAS
47b0: 45 20 63 6f 6d 6d 61 6e 64 20 72 65 74 75 72 6e  E command return
47c0: 73 0a 61 6e 20 65 72 72 6f 72 2e 3c 2f 70 3e 0a  s.an error.</p>.
47d0: 0a 3c 70 3e 5e 4e 6f 74 65 20 74 68 61 74 20 61  .<p>^Note that a
47e0: 6e 20 69 6e 6e 65 72 20 74 72 61 6e 73 61 63 74  n inner transact
47f0: 69 6f 6e 20 6d 69 67 68 74 20 63 6f 6d 6d 69 74  ion might commit
4800: 20 28 75 73 69 6e 67 20 74 68 65 20 52 45 4c 45   (using the RELE
4810: 41 53 45 20 63 6f 6d 6d 61 6e 64 29 0a 62 75 74  ASE command).but
4820: 20 74 68 65 6e 20 6c 61 74 65 72 20 68 61 76 65   then later have
4830: 20 69 74 73 20 77 6f 72 6b 20 75 6e 64 6f 6e 65   its work undone
4840: 20 62 79 20 61 20 52 4f 4c 4c 42 41 43 4b 20 69   by a ROLLBACK i
4850: 6e 20 61 6e 20 6f 75 74 65 72 20 74 72 61 6e 73  n an outer trans
4860: 61 63 74 69 6f 6e 2e 0a 5e 41 20 70 6f 77 65 72  action..^A power
4870: 20 66 61 69 6c 75 72 65 20 6f 72 20 70 72 6f 67   failure or prog
4880: 72 61 6d 20 63 72 61 73 68 20 6f 72 20 4f 53 20  ram crash or OS 
4890: 63 72 61 73 68 20 77 69 6c 6c 20 63 61 75 73 65  crash will cause
48a0: 20 74 68 65 20 6f 75 74 65 72 2d 6d 6f 73 74 0a   the outer-most.
48b0: 74 72 61 6e 73 61 63 74 69 6f 6e 20 74 6f 20 72  transaction to r
48c0: 6f 6c 6c 62 61 63 6b 2c 20 75 6e 64 6f 69 6e 67  ollback, undoing
48d0: 20 61 6c 6c 20 63 68 61 6e 67 65 73 20 74 68 61   all changes tha
48e0: 74 20 68 61 76 65 20 6f 63 63 75 72 72 65 64 20  t have occurred 
48f0: 77 69 74 68 69 6e 0a 74 68 61 74 20 6f 75 74 65  within.that oute
4900: 72 20 74 72 61 6e 73 61 63 74 69 6f 6e 2c 20 65  r transaction, e
4910: 76 65 6e 20 63 68 61 6e 67 65 73 20 74 68 61 74  ven changes that
4920: 20 68 61 76 65 20 73 75 70 70 6f 73 65 64 6c 79   have supposedly
4930: 20 62 65 65 6e 20 22 63 6f 6d 6d 69 74 74 65 64   been "committed
4940: 22 0a 62 79 20 74 68 65 20 52 45 4c 45 41 53 45  ".by the RELEASE
4950: 20 63 6f 6d 6d 61 6e 64 2e 20 20 5e 43 6f 6e 74   command.  ^Cont
4960: 65 6e 74 20 69 73 20 6e 6f 74 20 61 63 74 75 61  ent is not actua
4970: 6c 6c 79 20 63 6f 6d 6d 69 74 74 65 64 20 6f 6e  lly committed on
4980: 20 74 68 65 20 64 69 73 6b 20 0a 75 6e 74 69 6c   the disk .until
4990: 20 74 68 65 20 6f 75 74 65 72 6d 6f 73 74 20 74   the outermost t
49a0: 72 61 6e 73 61 63 74 69 6f 6e 20 63 6f 6d 6d 69  ransaction commi
49b0: 74 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 72  ts.</p>..<p>Ther
49c0: 65 20 61 72 65 20 73 65 76 65 72 61 6c 20 77 61  e are several wa
49d0: 79 73 20 6f 66 20 74 68 69 6e 6b 69 6e 67 20 61  ys of thinking a
49e0: 62 6f 75 74 20 74 68 65 20 52 45 4c 45 41 53 45  bout the RELEASE
49f0: 20 63 6f 6d 6d 61 6e 64 3a 3c 2f 70 3e 0a 0a 3c   command:</p>..<
4a00: 75 6c 3e 0a 3c 6c 69 3e 3c 70 3e 0a 53 6f 6d 65  ul>.<li><p>.Some
4a10: 20 70 65 6f 70 6c 65 20 76 69 65 77 20 52 45 4c   people view REL
4a20: 45 41 53 45 20 61 73 20 74 68 65 20 65 71 75 69  EASE as the equi
4a30: 76 61 6c 65 6e 74 20 6f 66 20 43 4f 4d 4d 49 54  valent of COMMIT
4a40: 20 66 6f 72 20 61 20 53 41 56 45 50 4f 49 4e 54   for a SAVEPOINT
4a50: 2e 0a 54 68 69 73 20 69 73 20 61 6e 20 61 63 63  ..This is an acc
4a60: 65 70 74 61 62 6c 65 20 70 6f 69 6e 74 20 6f 66  eptable point of
4a70: 20 76 69 65 77 20 61 73 20 6c 6f 6e 67 20 61 73   view as long as
4a80: 20 6f 6e 65 20 72 65 6d 65 6d 62 65 72 73 20 74   one remembers t
4a90: 68 61 74 20 74 68 65 0a 63 68 61 6e 67 65 73 20  hat the.changes 
4aa0: 63 6f 6d 6d 69 74 74 65 64 20 62 79 20 61 6e 20  committed by an 
4ab0: 69 6e 6e 65 72 20 74 72 61 6e 73 61 63 74 69 6f  inner transactio
4ac0: 6e 20 6d 69 67 68 74 20 6c 61 74 65 72 20 62 65  n might later be
4ad0: 20 75 6e 64 6f 6e 65 20 62 79 20 61 0a 72 6f 6c   undone by a.rol
4ae0: 6c 62 61 63 6b 20 69 6e 20 61 6e 20 6f 75 74 65  lback in an oute
4af0: 72 20 74 72 61 6e 73 61 63 74 69 6f 6e 2e 3c 2f  r transaction.</
4b00: 70 3e 3c 2f 6c 69 3e 0a 0a 3c 6c 69 3e 3c 70 3e  p></li>..<li><p>
4b10: 0a 41 6e 6f 74 68 65 72 20 76 69 65 77 20 6f 66  .Another view of
4b20: 20 52 45 4c 45 41 53 45 20 69 73 20 74 68 61 74   RELEASE is that
4b30: 20 69 74 20 6d 65 72 67 65 73 20 61 20 6e 61 6d   it merges a nam
4b40: 65 64 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 69  ed transaction i
4b50: 6e 74 6f 20 69 74 73 0a 70 61 72 65 6e 74 20 74  nto its.parent t
4b60: 72 61 6e 73 61 63 74 69 6f 6e 2c 20 73 6f 20 74  ransaction, so t
4b70: 68 61 74 20 74 68 65 20 6e 61 6d 65 64 20 74 72  hat the named tr
4b80: 61 6e 73 61 63 74 69 6f 6e 20 61 6e 64 20 69 74  ansaction and it
4b90: 73 20 70 61 72 65 6e 74 20 62 65 63 6f 6d 65 0a  s parent become.
4ba0: 74 68 65 20 73 61 6d 65 20 74 72 61 6e 73 61 63  the same transac
4bb0: 74 69 6f 6e 2e 20 20 41 66 74 65 72 20 52 45 4c  tion.  After REL
4bc0: 45 41 53 45 2c 20 74 68 65 20 6e 61 6d 65 64 20  EASE, the named 
4bd0: 74 72 61 6e 73 61 63 74 69 6f 6e 20 61 6e 64 20  transaction and 
4be0: 69 74 73 20 70 61 72 65 6e 74 0a 77 69 6c 6c 20  its parent.will 
4bf0: 63 6f 6d 6d 69 74 20 6f 72 20 72 6f 6c 6c 62 61  commit or rollba
4c00: 63 6b 20 74 6f 67 65 74 68 65 72 2c 20 77 68 61  ck together, wha
4c10: 74 65 76 65 72 20 74 68 65 69 72 20 66 61 74 65  tever their fate
4c20: 20 6d 61 79 20 62 65 2e 0a 3c 2f 70 3e 3c 2f 6c   may be..</p></l
4c30: 69 3e 0a 0a 3c 6c 69 3e 3c 70 3e 0a 4f 6e 65 20  i>..<li><p>.One 
4c40: 63 61 6e 20 61 6c 73 6f 20 74 68 69 6e 6b 20 6f  can also think o
4c50: 66 20 73 61 76 65 70 6f 69 6e 74 73 20 61 73 0a  f savepoints as.
4c60: 22 6d 61 72 6b 73 22 20 69 6e 20 74 68 65 20 74  "marks" in the t
4c70: 72 61 6e 73 61 63 74 69 6f 6e 20 74 69 6d 65 6c  ransaction timel
4c80: 69 6e 65 2e 20 20 49 6e 20 74 68 69 73 20 76 69  ine.  In this vi
4c90: 65 77 2c 20 74 68 65 20 53 41 56 45 50 4f 49 4e  ew, the SAVEPOIN
4ca0: 54 20 63 6f 6d 6d 61 6e 64 0a 63 72 65 61 74 65  T command.create
4cb0: 73 20 61 20 6e 65 77 20 6d 61 72 6b 2c 20 74 68  s a new mark, th
4cc0: 65 20 52 4f 4c 4c 42 41 43 4b 20 54 4f 20 63 6f  e ROLLBACK TO co
4cd0: 6d 6d 61 6e 64 20 72 65 77 69 6e 64 73 20 74 68  mmand rewinds th
4ce0: 65 20 74 69 6d 65 6c 69 6e 65 20 62 61 63 6b 0a  e timeline back.
4cf0: 74 6f 20 61 20 70 6f 69 6e 74 20 6a 75 73 74 20  to a point just 
4d00: 61 66 74 65 72 20 74 68 65 20 6e 61 6d 65 64 20  after the named 
4d10: 6d 61 72 6b 2c 20 61 6e 64 20 74 68 65 20 52 45  mark, and the RE
4d20: 4c 45 41 53 45 20 63 6f 6d 6d 61 6e 64 0a 65 72  LEASE command.er
4d30: 61 73 65 73 20 6d 61 72 6b 73 20 66 72 6f 6d 20  ases marks from 
4d40: 74 68 65 20 74 69 6d 65 6c 69 6e 65 20 77 69 74  the timeline wit
4d50: 68 6f 75 74 20 61 63 74 75 61 6c 6c 79 20 6d 61  hout actually ma
4d60: 6b 69 6e 67 20 61 6e 79 0a 63 68 61 6e 67 65 73  king any.changes
4d70: 20 74 6f 20 74 68 65 20 64 61 74 61 62 61 73 65   to the database
4d80: 2e 0a 3c 2f 70 3e 3c 2f 6c 69 3e 0a 3c 2f 75 6c  ..</p></li>.</ul
4d90: 3e 0a 0a 0a 0a 3c 68 33 3e 54 72 61 6e 73 61 63  >....<h3>Transac
4da0: 74 69 6f 6e 20 4e 65 73 74 69 6e 67 20 52 75 6c  tion Nesting Rul
4db0: 65 73 3c 2f 68 33 3e 0a 0a 3c 70 3e 5e 54 68 65  es</h3>..<p>^The
4dc0: 20 6c 61 73 74 20 74 72 61 6e 73 61 63 74 69 6f   last transactio
4dd0: 6e 20 73 74 61 72 74 65 64 20 77 69 6c 6c 20 62  n started will b
4de0: 65 20 74 68 65 20 66 69 72 73 74 0a 74 72 61 6e  e the first.tran
4df0: 73 61 63 74 69 6f 6e 20 63 6f 6d 6d 69 74 74 65  saction committe
4e00: 64 20 6f 72 20 72 6f 6c 6c 65 64 20 62 61 63 6b  d or rolled back
4e10: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20 5b  .</p>..<p>^The [
4e20: 42 45 47 49 4e 5d 20 63 6f 6d 6d 61 6e 64 20 6f  BEGIN] command o
4e30: 6e 6c 79 20 77 6f 72 6b 73 20 69 66 20 74 68 65  nly works if the
4e40: 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 73 74 61   transaction sta
4e50: 63 6b 20 69 73 20 65 6d 70 74 79 2c 20 6f 72 0a  ck is empty, or.
4e60: 69 6e 20 6f 74 68 65 72 20 77 6f 72 64 73 20 69  in other words i
4e70: 66 20 74 68 65 72 65 20 61 72 65 20 6e 6f 20 70  f there are no p
4e80: 65 6e 64 69 6e 67 20 74 72 61 6e 73 61 63 74 69  ending transacti
4e90: 6f 6e 73 2e 20 20 5e 49 66 20 74 68 65 20 74 72  ons.  ^If the tr
4ea0: 61 6e 73 61 63 74 69 6f 6e 0a 73 74 61 63 6b 20  ansaction.stack 
4eb0: 69 73 20 6e 6f 74 20 65 6d 70 74 79 20 77 68 65  is not empty whe
4ec0: 6e 20 74 68 65 20 5b 42 45 47 49 4e 5d 20 63 6f  n the [BEGIN] co
4ed0: 6d 6d 61 6e 64 20 69 73 20 69 6e 76 6f 6b 65 64  mmand is invoked
4ee0: 2c 20 74 68 65 6e 20 74 68 65 20 63 6f 6d 6d 61  , then the comma
4ef0: 6e 64 0a 66 61 69 6c 73 20 77 69 74 68 20 61 6e  nd.fails with an
4f00: 20 65 72 72 6f 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e   error.</p>..<p>
4f10: 5e 54 68 65 20 5b 43 4f 4d 4d 49 54 5d 20 63 6f  ^The [COMMIT] co
4f20: 6d 6d 61 6e 64 20 63 6f 6d 6d 69 74 73 20 61 6c  mmand commits al
4f30: 6c 20 6f 75 74 73 74 61 6e 64 69 6e 67 20 74 72  l outstanding tr
4f40: 61 6e 73 61 63 74 69 6f 6e 73 20 61 6e 64 20 6c  ansactions and l
4f50: 65 61 76 65 73 0a 74 68 65 20 74 72 61 6e 73 61  eaves.the transa
4f60: 63 74 69 6f 6e 20 73 74 61 63 6b 20 65 6d 70 74  ction stack empt
4f70: 79 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20  y.</p>..<p>^The 
4f80: 52 45 4c 45 41 53 45 20 63 6f 6d 6d 61 6e 64 20  RELEASE command 
4f90: 73 74 61 72 74 73 20 77 69 74 68 20 74 68 65 20  starts with the 
4fa0: 6d 6f 73 74 20 72 65 63 65 6e 74 20 61 64 64 69  most recent addi
4fb0: 74 69 6f 6e 20 74 6f 20 74 68 65 0a 74 72 61 6e  tion to the.tran
4fc0: 73 61 63 74 69 6f 6e 20 73 74 61 63 6b 20 61 6e  saction stack an
4fd0: 64 20 72 65 6c 65 61 73 65 73 20 73 61 76 65 70  d releases savep
4fe0: 6f 69 6e 74 73 20 62 61 63 6b 77 61 72 64 73 20  oints backwards 
4ff0: 0a 69 6e 20 74 69 6d 65 20 75 6e 74 69 6c 20 69  .in time until i
5000: 74 20 72 65 6c 65 61 73 65 73 20 61 20 73 61 76  t releases a sav
5010: 65 70 6f 69 6e 74 20 77 69 74 68 20 61 20 6d 61  epoint with a ma
5020: 74 63 68 69 6e 67 20 73 61 76 65 70 6f 69 6e 74  tching savepoint
5030: 2d 6e 61 6d 65 2e 0a 5e 50 72 69 6f 72 20 73 61  -name..^Prior sa
5040: 76 65 70 6f 69 6e 74 73 2c 20 65 76 65 6e 20 73  vepoints, even s
5050: 61 76 65 70 6f 69 6e 74 73 20 77 69 74 68 20 6d  avepoints with m
5060: 61 74 63 68 69 6e 67 20 73 61 76 65 70 6f 69 6e  atching savepoin
5070: 74 2d 6e 61 6d 65 73 2c 20 61 72 65 0a 75 6e 63  t-names, are.unc
5080: 68 61 6e 67 65 64 2e 0a 5e 49 66 20 74 68 65 20  hanged..^If the 
5090: 52 45 4c 45 41 53 45 20 63 6f 6d 6d 61 6e 64 20  RELEASE command 
50a0: 63 61 75 73 65 73 20 74 68 65 0a 74 72 61 6e 73  causes the.trans
50b0: 61 63 74 69 6f 6e 20 73 74 61 63 6b 20 74 6f 20  action stack to 
50c0: 62 65 63 6f 6d 65 20 65 6d 70 74 79 20 28 69 66  become empty (if
50d0: 20 74 68 65 20 52 45 4c 45 41 53 45 20 63 6f 6d   the RELEASE com
50e0: 6d 61 6e 64 20 72 65 6c 65 61 73 65 73 20 74 68  mand releases th
50f0: 65 0a 6f 75 74 65 72 6d 6f 73 74 20 74 72 61 6e  e.outermost tran
5100: 73 61 63 74 69 6f 6e 20 66 72 6f 6d 20 74 68 65  saction from the
5110: 20 73 74 61 63 6b 29 20 74 68 65 6e 20 74 68 65   stack) then the
5120: 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 63 6f 6d   transaction com
5130: 6d 69 74 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54  mits.</p>..<p>^T
5140: 68 65 20 5b 52 4f 4c 4c 42 41 43 4b 5d 20 63 6f  he [ROLLBACK] co
5150: 6d 6d 61 6e 64 20 77 69 74 68 6f 75 74 20 61 20  mmand without a 
5160: 54 4f 20 63 6c 61 75 73 65 20 72 6f 6c 6c 73 20  TO clause rolls 
5170: 62 61 63 6b 73 20 61 6c 6c 20 74 72 61 6e 73 61  backs all transa
5180: 63 74 69 6f 6e 73 0a 61 6e 64 20 6c 65 61 76 65  ctions.and leave
5190: 73 20 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f  s the transactio
51a0: 6e 20 73 74 61 63 6b 20 65 6d 70 74 79 2e 3c 2f  n stack empty.</
51b0: 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20 52 4f 4c 4c  p>..<p>^The ROLL
51c0: 42 41 43 4b 20 63 6f 6d 6d 61 6e 64 20 77 69 74  BACK command wit
51d0: 68 20 61 20 54 4f 20 63 6c 61 75 73 65 20 72 6f  h a TO clause ro
51e0: 6c 6c 73 20 62 61 63 6b 20 74 72 61 6e 73 61 63  lls back transac
51f0: 74 69 6f 6e 73 20 67 6f 69 6e 67 0a 62 61 63 6b  tions going.back
5200: 77 61 72 64 73 20 69 6e 20 74 69 6d 65 20 62 61  wards in time ba
5210: 63 6b 20 74 6f 20 74 68 65 20 6d 6f 73 74 20 72  ck to the most r
5220: 65 63 65 6e 74 20 53 41 56 45 50 4f 49 4e 54 20  ecent SAVEPOINT 
5230: 77 69 74 68 20 61 20 6d 61 74 63 68 69 6e 67 20  with a matching 
5240: 6e 61 6d 65 2e 0a 5e 54 68 65 20 53 41 56 45 50  name..^The SAVEP
5250: 4f 49 4e 54 20 77 69 74 68 20 74 68 65 20 6d 61  OINT with the ma
5260: 74 63 68 69 6e 67 20 6e 61 6d 65 20 72 65 6d 61  tching name rema
5270: 69 6e 73 20 6f 6e 20 74 68 65 20 74 72 61 6e 73  ins on the trans
5280: 61 63 74 69 6f 6e 20 73 74 61 63 6b 2c 0a 62 75  action stack,.bu
5290: 74 20 61 6c 6c 20 64 61 74 61 62 61 73 65 20 63  t all database c
52a0: 68 61 6e 67 65 73 20 74 68 61 74 20 6f 63 63 75  hanges that occu
52b0: 72 72 65 64 20 61 66 74 65 72 20 74 68 61 74 20  rred after that 
52c0: 53 41 56 45 50 4f 49 4e 54 20 77 61 73 20 63 72  SAVEPOINT was cr
52d0: 65 61 74 65 64 0a 61 72 65 20 72 6f 6c 6c 65 64  eated.are rolled
52e0: 20 62 61 63 6b 2e 20 20 5e 49 66 20 74 68 65 20   back.  ^If the 
52f0: 73 61 76 65 70 6f 69 6e 74 2d 6e 61 6d 65 20 69  savepoint-name i
5300: 6e 20 61 20 52 4f 4c 4c 42 41 43 4b 20 54 4f 20  n a ROLLBACK TO 
5310: 63 6f 6d 6d 61 6e 64 20 64 6f 65 73 20 6e 6f 74  command does not
5320: 0a 6d 61 74 63 68 20 61 6e 79 20 53 41 56 45 50  .match any SAVEP
5330: 4f 49 4e 54 20 6f 6e 20 74 68 65 20 73 74 61 63  OINT on the stac
5340: 6b 2c 20 74 68 65 6e 20 74 68 65 20 52 4f 4c 4c  k, then the ROLL
5350: 42 41 43 4b 20 63 6f 6d 6d 61 6e 64 20 66 61 69  BACK command fai
5360: 6c 73 20 77 69 74 68 20 61 6e 0a 65 72 72 6f 72  ls with an.error
5370: 20 61 6e 64 20 6c 65 61 76 65 73 20 74 68 65 20   and leaves the 
5380: 73 74 61 74 65 20 6f 66 20 74 68 65 20 64 61 74  state of the dat
5390: 61 62 61 73 65 20 75 6e 63 68 61 6e 67 65 64 2e  abase unchanged.
53a0: 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23  </p>..<tcl>.####
53b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
53c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
53d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
53e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
53f0: 23 23 23 23 23 23 23 23 23 23 23 0a 53 65 63 74  ###########.Sect
5400: 69 6f 6e 20 63 6f 6d 6d 65 6e 74 20 63 6f 6d 6d  ion comment comm
5410: 65 6e 74 20 7b 63 6f 6d 6d 65 6e 74 20 2a 63 6f  ent {comment *co
5420: 6d 6d 65 6e 74 73 7d 0a 0a 42 75 62 62 6c 65 44  mments}..BubbleD
5430: 69 61 67 72 61 6d 20 63 6f 6d 6d 65 6e 74 2d 73  iagram comment-s
5440: 79 6e 74 61 78 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70  yntax.</tcl>..<p
5450: 3e 5e 43 6f 6d 6d 65 6e 74 73 20 61 72 65 20 6e  >^Comments are n
5460: 6f 74 20 53 51 4c 20 63 6f 6d 6d 61 6e 64 73 2c  ot SQL commands,
5470: 20 62 75 74 20 63 61 6e 20 6f 63 63 75 72 20 77   but can occur w
5480: 69 74 68 69 6e 20 74 68 65 20 74 65 78 74 20 6f  ithin the text o
5490: 66 0a 53 51 4c 20 71 75 65 72 69 65 73 20 70 61  f.SQL queries pa
54a0: 73 73 65 64 20 74 6f 20 5b 73 71 6c 69 74 65 33  ssed to [sqlite3
54b0: 5f 70 72 65 70 61 72 65 5f 76 32 28 29 5d 20 61  _prepare_v2()] a
54c0: 6e 64 20 72 65 6c 61 74 65 64 20 69 6e 74 65 72  nd related inter
54d0: 66 61 63 65 73 2e 0a 5e 43 6f 6d 6d 65 6e 74 73  faces..^Comments
54e0: 20 61 72 65 20 74 72 65 61 74 65 64 20 61 73 20   are treated as 
54f0: 77 68 69 74 65 73 70 61 63 65 20 62 79 20 74 68  whitespace by th
5500: 65 20 70 61 72 73 65 72 2e 0a 5e 43 6f 6d 6d 65  e parser..^Comme
5510: 6e 74 73 20 63 61 6e 20 62 65 67 69 6e 20 61 6e  nts can begin an
5520: 79 77 68 65 72 65 20 77 68 69 74 65 73 70 61 63  ywhere whitespac
5530: 65 20 0a 63 61 6e 20 62 65 20 66 6f 75 6e 64 2c  e .can be found,
5540: 20 69 6e 63 6c 75 64 69 6e 67 20 69 6e 73 69 64   including insid
5550: 65 20 65 78 70 72 65 73 73 69 6f 6e 73 20 74 68  e expressions th
5560: 61 74 20 73 70 61 6e 20 6d 75 6c 74 69 70 6c 65  at span multiple
5570: 20 6c 69 6e 65 73 2e 0a 3c 2f 70 3e 0a 0a 3c 70   lines..</p>..<p
5580: 3e 5e 53 51 4c 20 63 6f 6d 6d 65 6e 74 73 20 62  >^SQL comments b
5590: 65 67 69 6e 20 77 69 74 68 20 74 77 6f 20 63 6f  egin with two co
55a0: 6e 73 65 63 75 74 69 76 65 20 22 2d 22 20 63 68  nsecutive "-" ch
55b0: 61 72 61 63 74 65 72 73 20 28 41 53 43 49 49 20  aracters (ASCII 
55c0: 30 78 32 64 29 0a 61 6e 64 20 65 78 74 65 6e 64  0x2d).and extend
55d0: 20 75 70 20 74 6f 20 61 6e 64 20 69 6e 63 6c 75   up to and inclu
55e0: 64 69 6e 67 20 74 68 65 20 6e 65 78 74 20 6e 65  ding the next ne
55f0: 77 6c 69 6e 65 20 63 68 61 72 61 63 74 65 72 20  wline character 
5600: 28 41 53 43 49 49 20 30 78 30 61 29 0a 6f 72 20  (ASCII 0x0a).or 
5610: 75 6e 74 69 6c 20 74 68 65 20 65 6e 64 20 6f 66  until the end of
5620: 20 69 6e 70 75 74 2c 20 77 68 69 63 68 65 76 65   input, whicheve
5630: 72 20 63 6f 6d 65 73 20 66 69 72 73 74 2e 3c 2f  r comes first.</
5640: 70 3e 0a 0a 3c 70 3e 5e 43 2d 73 74 79 6c 65 20  p>..<p>^C-style 
5650: 63 6f 6d 6d 65 6e 74 73 20 62 65 67 69 6e 0a 77  comments begin.w
5660: 69 74 68 20 22 2f 2a 22 20 61 6e 64 20 65 78 74  ith "/*" and ext
5670: 65 6e 64 20 75 70 20 74 6f 20 61 6e 64 20 69 6e  end up to and in
5680: 63 6c 75 64 69 6e 67 20 74 68 65 20 6e 65 78 74  cluding the next
5690: 20 22 2a 2f 22 20 63 68 61 72 61 63 74 65 72 20   "*/" character 
56a0: 70 61 69 72 0a 6f 72 20 75 6e 74 69 6c 20 74 68  pair.or until th
56b0: 65 20 65 6e 64 20 6f 66 20 69 6e 70 75 74 2c 20  e end of input, 
56c0: 77 68 69 63 68 65 76 65 72 20 63 6f 6d 65 73 20  whichever comes 
56d0: 66 69 72 73 74 2e 20 20 5e 43 2d 73 74 79 6c 65  first.  ^C-style
56e0: 20 63 6f 6d 6d 65 6e 74 73 0a 63 61 6e 20 73 70   comments.can sp
56f0: 61 6e 20 6d 75 6c 74 69 70 6c 65 20 6c 69 6e 65  an multiple line
5700: 73 2e 20 3c 2f 70 3e 0a 0a 3c 70 3e 5e 43 6f 6d  s. </p>..<p>^Com
5710: 6d 65 6e 74 73 20 63 61 6e 20 61 70 70 65 61 72  ments can appear
5720: 20 61 6e 79 77 68 65 72 65 20 77 68 69 74 65 73   anywhere whites
5730: 70 61 63 65 20 63 61 6e 20 6f 63 63 75 72 2c 0a  pace can occur,.
5740: 69 6e 63 6c 75 64 69 6e 67 20 69 6e 73 69 64 65  including inside
5750: 20 65 78 70 72 65 73 73 69 6f 6e 73 20 61 6e 64   expressions and
5760: 20 69 6e 20 74 68 65 20 6d 69 64 64 6c 65 20 6f   in the middle o
5770: 66 20 6f 74 68 65 72 20 53 51 4c 20 73 74 61 74  f other SQL stat
5780: 65 6d 65 6e 74 73 2e 0a 5e 43 6f 6d 6d 65 6e 74  ements..^Comment
5790: 73 20 64 6f 20 6e 6f 74 20 6e 65 73 74 2e 0a 3c  s do not nest..<
57a0: 2f 70 3e 0a 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23  /p>...<tcl>.####
57b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
57c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
57d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
57e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
57f0: 23 23 23 23 23 23 23 23 23 23 0a 53 65 63 74 69  ##########.Secti
5800: 6f 6e 20 7b 43 52 45 41 54 45 20 49 4e 44 45 58  on {CREATE INDEX
5810: 7d 20 63 72 65 61 74 65 69 6e 64 65 78 20 7b 7b  } createindex {{
5820: 43 52 45 41 54 45 20 49 4e 44 45 58 7d 7d 0a 0a  CREATE INDEX}}..
5830: 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 63 72  BubbleDiagram cr
5840: 65 61 74 65 2d 69 6e 64 65 78 2d 73 74 6d 74 20  eate-index-stmt 
5850: 31 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20  1.BubbleDiagram 
5860: 69 6e 64 65 78 65 64 2d 63 6f 6c 75 6d 6e 0a 3c  indexed-column.<
5870: 2f 74 63 6c 3e 0a 0a 3c 70 3e 5e 54 68 65 20 43  /tcl>..<p>^The C
5880: 52 45 41 54 45 20 49 4e 44 45 58 20 63 6f 6d 6d  REATE INDEX comm
5890: 61 6e 64 20 63 6f 6e 73 69 73 74 73 20 6f 66 20  and consists of 
58a0: 74 68 65 20 6b 65 79 77 6f 72 64 73 20 22 43 52  the keywords "CR
58b0: 45 41 54 45 20 49 4e 44 45 58 22 20 66 6f 6c 6c  EATE INDEX" foll
58c0: 6f 77 65 64 0a 62 79 20 74 68 65 20 6e 61 6d 65  owed.by the name
58d0: 20 6f 66 20 74 68 65 20 6e 65 77 20 69 6e 64 65   of the new inde
58e0: 78 2c 20 74 68 65 20 6b 65 79 77 6f 72 64 20 22  x, the keyword "
58f0: 4f 4e 22 2c 20 74 68 65 20 6e 61 6d 65 20 6f 66  ON", the name of
5900: 20 61 20 70 72 65 76 69 6f 75 73 6c 79 0a 63 72   a previously.cr
5910: 65 61 74 65 64 20 74 61 62 6c 65 20 74 68 61 74  eated table that
5920: 20 69 73 20 74 6f 20 62 65 20 69 6e 64 65 78 65   is to be indexe
5930: 64 2c 20 61 6e 64 20 61 20 70 61 72 65 6e 74 68  d, and a parenth
5940: 65 73 69 7a 65 64 20 6c 69 73 74 20 6f 66 20 6e  esized list of n
5950: 61 6d 65 73 20 6f 66 0a 63 6f 6c 75 6d 6e 73 20  ames of.columns 
5960: 69 6e 20 74 68 65 20 74 61 62 6c 65 20 74 68 61  in the table tha
5970: 74 20 61 72 65 20 75 73 65 64 20 66 6f 72 20 74  t are used for t
5980: 68 65 20 69 6e 64 65 78 20 6b 65 79 2e 3c 2f 70  he index key.</p
5990: 3e 0a 0a 3c 70 3e 5e 45 61 63 68 20 63 6f 6c 75  >..<p>^Each colu
59a0: 6d 6e 20 6e 61 6d 65 20 63 61 6e 20 62 65 20 66  mn name can be f
59b0: 6f 6c 6c 6f 77 65 64 20 62 79 20 6f 6e 65 20 6f  ollowed by one o
59c0: 66 20 74 68 65 20 22 41 53 43 22 20 6f 72 20 22  f the "ASC" or "
59d0: 44 45 53 43 22 20 6b 65 79 77 6f 72 64 73 0a 74  DESC" keywords.t
59e0: 6f 20 69 6e 64 69 63 61 74 65 20 73 6f 72 74 20  o indicate sort 
59f0: 6f 72 64 65 72 2e 20 20 5e 54 68 65 20 73 6f 72  order.  ^The sor
5a00: 74 20 6f 72 64 65 72 20 6d 61 79 20 6f 72 20 6d  t order may or m
5a10: 61 79 20 6e 6f 74 20 62 65 20 69 67 6e 6f 72 65  ay not be ignore
5a20: 64 20 64 65 70 65 6e 64 69 6e 67 0a 6f 6e 20 74  d depending.on t
5a30: 68 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  he database file
5a40: 20 66 6f 72 6d 61 74 2e 20 20 5e 54 68 65 20 22   format.  ^The "
5a50: 6c 65 67 61 63 79 22 20 66 69 6c 65 20 66 6f 72  legacy" file for
5a60: 6d 61 74 20 69 67 6e 6f 72 65 73 20 69 6e 64 65  mat ignores inde
5a70: 78 0a 73 6f 72 74 20 6f 72 64 65 72 2e 20 20 5e  x.sort order.  ^
5a80: 54 68 65 20 64 65 73 63 65 6e 64 69 6e 67 20 69  The descending i
5a90: 6e 64 65 78 20 66 69 6c 65 20 66 6f 72 6d 61 74  ndex file format
5aa0: 20 74 61 6b 65 73 20 69 6e 64 65 78 20 73 6f 72   takes index sor
5ab0: 74 20 6f 72 64 65 72 0a 69 6e 74 6f 20 61 63 63  t order.into acc
5ac0: 6f 75 6e 74 2e 20 20 5e 28 4f 6e 6c 79 20 63 6f  ount.  ^(Only co
5ad0: 70 69 65 73 20 6f 66 20 53 51 4c 69 74 65 20 6e  pies of SQLite n
5ae0: 65 77 65 72 20 74 68 61 6e 20 5b 76 65 72 73 69  ewer than [versi
5af0: 6f 6e 20 33 2e 33 2e 30 5d 20 0a 28 72 65 6c 65  on 3.3.0] .(rele
5b00: 61 73 65 64 20 6f 6e 20 32 30 30 36 2d 30 31 2d  ased on 2006-01-
5b10: 31 30 29 20 61 72 65 20 61 62 6c 65 20 74 6f 20  10) are able to 
5b20: 75 6e 64 65 72 73 74 61 6e 64 20 74 68 65 20 6e  understand the n
5b30: 65 77 65 72 20 64 65 73 63 65 6e 64 69 6e 67 0a  ewer descending.
5b40: 69 6e 64 65 78 20 66 69 6c 65 20 66 6f 72 6d 61  index file forma
5b50: 74 20 61 6e 64 20 73 6f 20 66 6f 72 20 63 6f 6d  t and so for com
5b60: 70 61 74 69 62 69 6c 69 74 79 20 77 69 74 68 20  patibility with 
5b70: 6f 6c 64 65 72 20 76 65 72 73 69 6f 6e 73 20 6f  older versions o
5b80: 66 0a 53 51 4c 69 74 65 2c 20 74 68 65 20 6c 65  f.SQLite, the le
5b90: 67 61 63 79 20 66 69 6c 65 20 66 6f 72 6d 61 74  gacy file format
5ba0: 20 69 73 20 67 65 6e 65 72 61 74 65 64 20 62 79   is generated by
5bb0: 20 64 65 66 61 75 6c 74 2e 29 5e 20 20 5e 55 73   default.)^  ^Us
5bc0: 65 20 74 68 65 0a 5b 6c 65 67 61 63 79 5f 66 69  e the.[legacy_fi
5bd0: 6c 65 5f 66 6f 72 6d 61 74 5d 20 70 72 61 67 6d  le_format] pragm
5be0: 61 20 74 6f 20 6d 6f 64 69 66 79 20 74 68 69 73  a to modify this
5bf0: 20 62 65 68 61 76 69 6f 72 20 61 6e 64 20 67 65   behavior and ge
5c00: 6e 65 72 61 74 65 0a 64 61 74 61 62 61 73 65 73  nerate.databases
5c10: 20 74 68 61 74 20 75 73 65 20 74 68 65 20 6e 65   that use the ne
5c20: 77 65 72 20 66 69 6c 65 20 66 6f 72 6d 61 74 2e  wer file format.
5c30: 20 20 46 75 74 75 72 65 20 76 65 72 73 69 6f 6e    Future version
5c40: 73 20 6f 66 20 53 51 4c 69 74 65 0a 6d 61 79 20  s of SQLite.may 
5c50: 62 65 67 69 6e 20 74 6f 20 67 65 6e 65 72 61 74  begin to generat
5c60: 65 20 74 68 65 20 6e 65 77 65 72 20 66 69 6c 65  e the newer file
5c70: 20 66 6f 72 6d 61 74 20 62 79 20 64 65 66 61 75   format by defau
5c80: 6c 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65  lt.</p>..<p>^The
5c90: 20 43 4f 4c 4c 41 54 45 20 63 6c 61 75 73 65 20   COLLATE clause 
5ca0: 6f 70 74 69 6f 6e 61 6c 6c 79 20 66 6f 6c 6c 6f  optionally follo
5cb0: 77 69 6e 67 20 65 61 63 68 20 63 6f 6c 75 6d 6e  wing each column
5cc0: 20 6e 61 6d 65 20 64 65 66 69 6e 65 73 20 61 0a   name defines a.
5cd0: 63 6f 6c 6c 61 74 69 6e 67 20 73 65 71 75 65 6e  collating sequen
5ce0: 63 65 20 75 73 65 64 20 66 6f 72 20 74 65 78 74  ce used for text
5cf0: 20 65 6e 74 72 69 65 73 20 69 6e 20 74 68 61 74   entries in that
5d00: 20 63 6f 6c 75 6d 6e 2e 0a 5e 54 68 65 20 64 65   column..^The de
5d10: 66 61 75 6c 74 20 63 6f 6c 6c 61 74 69 6e 67 0a  fault collating.
5d20: 73 65 71 75 65 6e 63 65 20 69 73 20 74 68 65 20  sequence is the 
5d30: 63 6f 6c 6c 61 74 69 6e 67 20 73 65 71 75 65 6e  collating sequen
5d40: 63 65 20 64 65 66 69 6e 65 64 20 66 6f 72 20 74  ce defined for t
5d50: 68 61 74 20 63 6f 6c 75 6d 6e 20 69 6e 20 74 68  hat column in th
5d60: 65 0a 5b 43 52 45 41 54 45 20 54 41 42 4c 45 5d  e.[CREATE TABLE]
5d70: 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 5e 4f 72   statement.  ^Or
5d80: 20 69 66 20 6e 6f 20 63 6f 6c 6c 61 74 69 6e 67   if no collating
5d90: 20 73 65 71 75 65 6e 63 65 20 69 73 20 6f 74 68   sequence is oth
5da0: 65 72 77 69 73 65 20 64 65 66 69 6e 65 64 2c 0a  erwise defined,.
5db0: 74 68 65 20 62 75 69 6c 74 2d 69 6e 20 42 49 4e  the built-in BIN
5dc0: 41 52 59 20 63 6f 6c 6c 61 74 69 6e 67 20 73 65  ARY collating se
5dd0: 71 75 65 6e 63 65 20 69 73 20 75 73 65 64 2e 3c  quence is used.<
5de0: 2f 70 3e 0a 0a 3c 70 3e 54 68 65 72 65 20 61 72  /p>..<p>There ar
5df0: 65 20 6e 6f 20 61 72 62 69 74 72 61 72 79 20 6c  e no arbitrary l
5e00: 69 6d 69 74 73 20 6f 6e 20 74 68 65 20 6e 75 6d  imits on the num
5e10: 62 65 72 20 6f 66 20 69 6e 64 69 63 65 73 20 74  ber of indices t
5e20: 68 61 74 20 63 61 6e 20 62 65 0a 61 74 74 61 63  hat can be.attac
5e30: 68 65 64 20 74 6f 20 61 20 73 69 6e 67 6c 65 20  hed to a single 
5e40: 74 61 62 6c 65 2e 20 20 5e 28 54 68 65 20 6e 75  table.  ^(The nu
5e50: 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20  mber of columns 
5e60: 69 6e 20 61 6e 20 69 6e 64 65 78 20 69 73 20 0a  in an index is .
5e70: 6c 69 6d 69 74 65 64 20 74 6f 20 74 68 65 20 76  limited to the v
5e80: 61 6c 75 65 20 73 65 74 20 62 79 0a 5b 73 71 6c  alue set by.[sql
5e90: 69 74 65 33 5f 6c 69 6d 69 74 5d 28 5b 53 51 4c  ite3_limit]([SQL
5ea0: 49 54 45 5f 4c 49 4d 49 54 5f 43 4f 4c 55 4d 4e  ITE_LIMIT_COLUMN
5eb0: 5d 2c 2e 2e 2e 29 2e 29 5e 3c 2f 70 3e 0a 0a 3c  ],...).)^</p>..<
5ec0: 70 3e 5e 49 66 20 74 68 65 20 55 4e 49 51 55 45  p>^If the UNIQUE
5ed0: 20 6b 65 79 77 6f 72 64 20 61 70 70 65 61 72 73   keyword appears
5ee0: 20 62 65 74 77 65 65 6e 20 43 52 45 41 54 45 20   between CREATE 
5ef0: 61 6e 64 20 49 4e 44 45 58 20 74 68 65 6e 20 64  and INDEX then d
5f00: 75 70 6c 69 63 61 74 65 0a 69 6e 64 65 78 20 65  uplicate.index e
5f10: 6e 74 72 69 65 73 20 61 72 65 20 6e 6f 74 20 61  ntries are not a
5f20: 6c 6c 6f 77 65 64 2e 20 20 5e 41 6e 79 20 61 74  llowed.  ^Any at
5f30: 74 65 6d 70 74 20 74 6f 20 69 6e 73 65 72 74 20  tempt to insert 
5f40: 61 20 64 75 70 6c 69 63 61 74 65 20 65 6e 74 72  a duplicate entr
5f50: 79 0a 77 69 6c 6c 20 72 65 73 75 6c 74 20 69 6e  y.will result in
5f60: 20 61 6e 20 65 72 72 6f 72 2e 20 20 5e 46 6f 72   an error.  ^For
5f70: 20 74 68 65 20 70 75 72 70 6f 73 65 73 20 6f 66   the purposes of
5f80: 20 75 6e 69 71 75 65 20 69 6e 64 69 63 65 73 2c   unique indices,
5f90: 20 61 6c 6c 20 4e 55 4c 4c 20 76 61 6c 75 65 73   all NULL values
5fa0: 0a 61 72 65 20 63 6f 6e 73 69 64 65 72 65 64 20  .are considered 
5fb0: 74 6f 20 64 69 66 66 65 72 65 6e 74 20 66 72 6f  to different fro
5fc0: 6d 20 61 6c 6c 20 6f 74 68 65 72 20 4e 55 4c 4c  m all other NULL
5fd0: 20 76 61 6c 75 65 73 20 61 6e 64 20 61 72 65 20   values and are 
5fe0: 74 68 75 73 20 75 6e 69 71 75 65 2e 0a 54 68 69  thus unique..Thi
5ff0: 73 20 69 73 20 6f 6e 65 20 6f 66 20 74 68 65 20  s is one of the 
6000: 74 77 6f 20 70 6f 73 73 69 62 6c 65 20 69 6e 74  two possible int
6010: 65 72 70 72 65 74 61 74 69 6f 6e 73 20 6f 66 20  erpretations of 
6020: 74 68 65 20 53 51 4c 2d 39 32 20 73 74 61 6e 64  the SQL-92 stand
6030: 61 72 64 0a 28 74 68 65 20 6c 61 6e 67 75 61 67  ard.(the languag
6040: 65 20 69 6e 20 74 68 65 20 73 74 61 6e 64 61 72  e in the standar
6050: 64 20 69 73 20 61 6d 62 69 67 75 6f 75 73 29 20  d is ambiguous) 
6060: 61 6e 64 20 69 73 20 74 68 65 20 69 6e 74 65 72  and is the inter
6070: 70 72 65 74 61 74 69 6f 6e 0a 66 6f 6c 6c 6f 77  pretation.follow
6080: 65 64 20 62 79 20 50 6f 73 74 67 72 65 53 51 4c  ed by PostgreSQL
6090: 2c 20 4d 79 53 51 4c 2c 20 46 69 72 65 62 69 72  , MySQL, Firebir
60a0: 64 2c 20 61 6e 64 20 4f 72 61 63 6c 65 2e 20 20  d, and Oracle.  
60b0: 49 6e 66 6f 72 6d 69 78 20 61 6e 64 0a 4d 69 63  Informix and.Mic
60c0: 72 6f 73 6f 66 74 20 53 51 4c 20 53 65 72 76 65  rosoft SQL Serve
60d0: 72 20 66 6f 6c 6c 6f 77 20 74 68 65 20 6f 74 68  r follow the oth
60e0: 65 72 20 69 6e 74 65 72 70 72 65 74 61 74 69 6f  er interpretatio
60f0: 6e 20 6f 66 20 74 68 65 20 73 74 61 6e 64 61 72  n of the standar
6100: 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 49 66 20 74  d.</p>..<p>^If t
6110: 68 65 20 6f 70 74 69 6f 6e 61 6c 20 49 46 20 4e  he optional IF N
6120: 4f 54 20 45 58 49 53 54 53 20 63 6c 61 75 73 65  OT EXISTS clause
6130: 20 69 73 20 70 72 65 73 65 6e 74 20 61 6e 64 20   is present and 
6140: 61 6e 6f 74 68 65 72 20 69 6e 64 65 78 0a 77 69  another index.wi
6150: 74 68 20 74 68 65 20 73 61 6d 65 20 6e 61 6d 65  th the same name
6160: 20 61 6c 72 65 61 64 79 20 65 78 69 73 74 73 2c   already exists,
6170: 20 74 68 65 6e 20 74 68 69 73 20 63 6f 6d 6d 61   then this comma
6180: 6e 64 20 62 65 63 6f 6d 65 73 20 61 20 6e 6f 2d  nd becomes a no-
6190: 6f 70 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 49 6e 64  op.</p>..<p>^Ind
61a0: 65 78 65 73 20 61 72 65 20 72 65 6d 6f 76 65 64  exes are removed
61b0: 20 77 69 74 68 20 74 68 65 20 5b 44 52 4f 50 20   with the [DROP 
61c0: 49 4e 44 45 58 5d 20 63 6f 6d 6d 61 6e 64 2e 3c  INDEX] command.<
61d0: 2f 70 3e 0a 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23  /p>...<tcl>.####
61e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
61f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
6200: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
6210: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
6220: 23 23 23 23 23 23 23 23 23 23 0a 53 65 63 74 69  ##########.Secti
6230: 6f 6e 20 7b 43 52 45 41 54 45 20 54 41 42 4c 45  on {CREATE TABLE
6240: 7d 20 7b 63 72 65 61 74 65 74 61 62 6c 65 7d 20  } {createtable} 
6250: 7b 7b 43 52 45 41 54 45 20 54 41 42 4c 45 7d 7d  {{CREATE TABLE}}
6260: 0a 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20  ..BubbleDiagram 
6270: 63 72 65 61 74 65 2d 74 61 62 6c 65 2d 73 74 6d  create-table-stm
6280: 74 20 31 0a 42 75 62 62 6c 65 44 69 61 67 72 61  t 1.BubbleDiagra
6290: 6d 20 63 6f 6c 75 6d 6e 2d 64 65 66 0a 42 75 62  m column-def.Bub
62a0: 62 6c 65 44 69 61 67 72 61 6d 20 74 79 70 65 2d  bleDiagram type-
62b0: 6e 61 6d 65 0a 42 75 62 62 6c 65 44 69 61 67 72  name.BubbleDiagr
62c0: 61 6d 20 63 6f 6c 75 6d 6e 2d 63 6f 6e 73 74 72  am column-constr
62d0: 61 69 6e 74 0a 42 75 62 62 6c 65 44 69 61 67 72  aint.BubbleDiagr
62e0: 61 6d 20 74 61 62 6c 65 2d 63 6f 6e 73 74 72 61  am table-constra
62f0: 69 6e 74 0a 42 75 62 62 6c 65 44 69 61 67 72 61  int.BubbleDiagra
6300: 6d 20 66 6f 72 65 69 67 6e 2d 6b 65 79 2d 63 6c  m foreign-key-cl
6310: 61 75 73 65 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e  ause.</tcl>..<p>
6320: 5e 41 20 43 52 45 41 54 45 20 54 41 42 4c 45 20  ^A CREATE TABLE 
6330: 73 74 61 74 65 6d 65 6e 74 20 69 73 20 62 61 73  statement is bas
6340: 69 63 61 6c 6c 79 20 74 68 65 20 6b 65 79 77 6f  ically the keywo
6350: 72 64 73 20 22 43 52 45 41 54 45 20 54 41 42 4c  rds "CREATE TABL
6360: 45 22 0a 66 6f 6c 6c 6f 77 65 64 20 62 79 20 74  E".followed by t
6370: 68 65 20 6e 61 6d 65 20 6f 66 20 61 20 6e 65 77  he name of a new
6380: 20 74 61 62 6c 65 20 61 6e 64 20 61 20 70 61 72   table and a par
6390: 65 6e 74 68 65 73 69 7a 65 64 20 6c 69 73 74 20  enthesized list 
63a0: 6f 66 20 63 6f 6c 75 6d 6e 0a 64 65 66 69 6e 69  of column.defini
63b0: 74 69 6f 6e 73 20 61 6e 64 20 63 6f 6e 73 74 72  tions and constr
63c0: 61 69 6e 74 73 2e 20 20 0a 5e 54 61 62 6c 65 73  aints.  .^Tables
63d0: 20 6e 61 6d 65 73 20 74 68 61 74 20 62 65 67 69   names that begi
63e0: 6e 20 77 69 74 68 20 22 3c 62 3e 73 71 6c 69 74  n with "<b>sqlit
63f0: 65 5f 3c 2f 62 3e 22 20 61 72 65 20 72 65 73 65  e_</b>" are rese
6400: 72 76 65 64 0a 66 6f 72 20 75 73 65 20 62 79 20  rved.for use by 
6410: 53 51 4c 69 74 65 20 69 74 73 65 6c 66 20 61 6e  SQLite itself an
6420: 64 20 63 61 6e 6e 6f 74 20 6e 6f 72 6d 61 6c 6c  d cannot normall
6430: 79 0a 61 70 70 65 61 72 20 69 6e 20 61 20 43 52  y.appear in a CR
6440: 45 41 54 45 20 54 41 42 4c 45 20 73 74 61 74 65  EATE TABLE state
6450: 6d 65 6e 74 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e  ment.</p>..<tcl>
6460: 68 64 5f 66 72 61 67 6d 65 6e 74 20 7b 74 61 62  hd_fragment {tab
6470: 6c 65 63 6f 6c 64 65 66 7d 20 7b 63 6f 6c 75 6d  lecoldef} {colum
6480: 6e 20 64 65 66 69 6e 69 74 69 6f 6e 7d 20 7b 63  n definition} {c
6490: 6f 6c 75 6d 6e 20 64 65 66 69 6e 69 74 69 6f 6e  olumn definition
64a0: 73 7d 3c 2f 74 63 6c 3e 0a 3c 70 3e 5e 45 61 63  s}</tcl>.<p>^Eac
64b0: 68 20 63 6f 6c 75 6d 6e 20 64 65 66 69 6e 69 74  h column definit
64c0: 69 6f 6e 20 69 73 20 74 68 65 20 6e 61 6d 65 20  ion is the name 
64d0: 6f 66 20 74 68 65 20 63 6f 6c 75 6d 6e 20 6f 70  of the column op
64e0: 74 69 6f 6e 61 6c 6c 79 20 66 6f 6c 6c 6f 77 65  tionally followe
64f0: 64 20 62 79 20 74 68 65 0a 5b 64 61 74 61 74 79  d by the.[dataty
6500: 70 65 5d 20 66 6f 72 20 74 68 61 74 20 63 6f 6c  pe] for that col
6510: 75 6d 6e 2c 20 74 68 65 6e 20 6f 6e 65 20 6f 72  umn, then one or
6520: 20 6d 6f 72 65 20 6f 70 74 69 6f 6e 61 6c 20 63   more optional c
6530: 6f 6c 75 6d 6e 20 63 6f 6e 73 74 72 61 69 6e 74  olumn constraint
6540: 73 2e 0a 5e 53 51 4c 69 74 65 20 75 73 65 73 20  s..^SQLite uses 
6550: 5b 64 79 6e 61 6d 69 63 20 74 79 70 69 6e 67 5d  [dynamic typing]
6560: 3b 20 0a 74 68 65 20 64 61 74 61 74 79 70 65 20  ; .the datatype 
6570: 66 6f 72 20 74 68 65 20 63 6f 6c 75 6d 6e 20 64  for the column d
6580: 6f 65 73 20 6e 6f 74 20 72 65 73 74 72 69 63 74  oes not restrict
6590: 20 77 68 61 74 20 64 61 74 61 20 6d 61 79 20 62   what data may b
65a0: 65 20 70 75 74 0a 69 6e 20 74 68 61 74 20 63 6f  e put.in that co
65b0: 6c 75 6d 6e 2e 0a 5e 54 68 65 20 55 4e 49 51 55  lumn..^The UNIQU
65c0: 45 20 63 6f 6e 73 74 72 61 69 6e 74 20 63 61 75  E constraint cau
65d0: 73 65 73 20 61 6e 20 75 6e 69 71 75 65 20 69 6e  ses an unique in
65e0: 64 65 78 20 74 6f 20 62 65 20 63 72 65 61 74 65  dex to be create
65f0: 64 20 6f 6e 20 74 68 65 20 73 70 65 63 69 66 69  d on the specifi
6600: 65 64 0a 63 6f 6c 75 6d 6e 73 2e 20 20 5e 41 6c  ed.columns.  ^Al
6610: 6c 20 4e 55 4c 4c 20 76 61 6c 75 65 73 20 61 72  l NULL values ar
6620: 65 20 63 6f 6e 73 69 64 65 72 65 64 20 64 69 66  e considered dif
6630: 66 65 72 65 6e 74 20 66 72 6f 6d 20 65 61 63 68  ferent from each
6640: 20 6f 74 68 65 72 20 61 6e 64 20 66 72 6f 6d 0a   other and from.
6650: 61 6c 6c 20 6f 74 68 65 72 20 76 61 6c 75 65 73  all other values
6660: 20 66 6f 72 20 74 68 65 20 70 75 72 70 6f 73 65   for the purpose
6670: 20 6f 66 20 64 65 74 65 72 6d 69 6e 69 6e 67 20   of determining 
6680: 75 6e 69 71 75 65 6e 65 73 73 2c 20 68 65 6e 63  uniqueness, henc
6690: 65 20 61 20 55 4e 49 51 55 45 0a 63 6f 6c 75 6d  e a UNIQUE.colum
66a0: 6e 20 6d 61 79 20 63 6f 6e 74 61 69 6e 20 6d 75  n may contain mu
66b0: 6c 74 69 70 6c 65 20 65 6e 74 72 69 65 73 20 77  ltiple entries w
66c0: 69 74 68 20 74 68 65 20 76 61 6c 75 65 20 6f 66  ith the value of
66d0: 20 4e 55 4c 4c 2e 0a 5e 54 68 65 20 43 4f 4c 4c   NULL..^The COLL
66e0: 41 54 45 20 63 6c 61 75 73 65 20 73 70 65 63 69  ATE clause speci
66f0: 66 69 65 73 20 77 68 61 74 20 74 65 78 74 20 0a  fies what text .
6700: 5b 63 6f 6c 6c 61 74 69 6e 67 20 66 75 6e 63 74  [collating funct
6710: 69 6f 6e 5d 20 74 6f 20 75 73 65 20 77 68 65 6e  ion] to use when
6720: 20 63 6f 6d 70 61 72 69 6e 67 20 74 65 78 74 20   comparing text 
6730: 65 6e 74 72 69 65 73 20 66 6f 72 20 74 68 65 20  entries for the 
6740: 63 6f 6c 75 6d 6e 2e 20 20 0a 5e 54 68 65 20 62  column.  .^The b
6750: 75 69 6c 74 2d 69 6e 20 5b 42 49 4e 41 52 59 5d  uilt-in [BINARY]
6760: 20 63 6f 6c 6c 61 74 69 6e 67 20 66 75 6e 63 74   collating funct
6770: 69 6f 6e 20 69 73 20 75 73 65 64 20 62 79 20 64  ion is used by d
6780: 65 66 61 75 6c 74 2e 0a 3c 70 3e 0a 5e 54 68 65  efault..<p>.^The
6790: 20 44 45 46 41 55 4c 54 20 63 6f 6e 73 74 72 61   DEFAULT constra
67a0: 69 6e 74 20 73 70 65 63 69 66 69 65 73 20 61 20  int specifies a 
67b0: 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 74 6f  default value to
67c0: 20 75 73 65 20 77 68 65 6e 20 64 6f 69 6e 67 20   use when doing 
67d0: 61 6e 20 5b 49 4e 53 45 52 54 5d 2e 0a 5e 54 68  an [INSERT]..^Th
67e0: 65 20 76 61 6c 75 65 20 6d 61 79 20 62 65 20 4e  e value may be N
67f0: 55 4c 4c 2c 20 61 20 73 74 72 69 6e 67 20 63 6f  ULL, a string co
6800: 6e 73 74 61 6e 74 2c 20 61 20 6e 75 6d 62 65 72  nstant, a number
6810: 2c 20 6f 72 20 61 20 63 6f 6e 73 74 61 6e 74 20  , or a constant 
6820: 65 78 70 72 65 73 73 69 6f 6e 0a 65 6e 63 6c 6f  expression.enclo
6830: 73 65 64 20 69 6e 20 70 61 72 65 6e 74 68 65 73  sed in parenthes
6840: 65 73 2e 0a 5e 54 68 65 20 64 65 66 61 75 6c 74  es..^The default
6850: 20 76 61 6c 75 65 20 6d 61 79 20 61 6c 73 6f 20   value may also 
6860: 62 65 20 6f 6e 65 20 6f 66 20 74 68 65 20 73 70  be one of the sp
6870: 65 63 69 61 6c 20 63 61 73 65 2d 69 6e 64 65 70  ecial case-indep
6880: 65 6e 64 65 6e 74 0a 6b 65 79 77 6f 72 64 73 20  endent.keywords 
6890: 43 55 52 52 45 4e 54 5f 54 49 4d 45 2c 20 43 55  CURRENT_TIME, CU
68a0: 52 52 45 4e 54 5f 44 41 54 45 20 6f 72 20 43 55  RRENT_DATE or CU
68b0: 52 52 45 4e 54 5f 54 49 4d 45 53 54 41 4d 50 2e  RRENT_TIMESTAMP.
68c0: 20 20 5e 49 66 20 74 68 65 20 76 61 6c 75 65 20    ^If the value 
68d0: 69 73 0a 4e 55 4c 4c 2c 20 61 20 73 74 72 69 6e  is.NULL, a strin
68e0: 67 20 63 6f 6e 73 74 61 6e 74 20 6f 72 20 6e 75  g constant or nu
68f0: 6d 62 65 72 2c 20 69 74 20 69 73 20 69 6e 73 65  mber, it is inse
6900: 72 74 65 64 20 69 6e 74 6f 20 74 68 65 20 63 6f  rted into the co
6910: 6c 75 6d 6e 0a 77 68 65 6e 65 76 65 72 20 61 6e  lumn.whenever an
6920: 20 49 4e 53 45 52 54 20 73 74 61 74 65 6d 65 6e   INSERT statemen
6930: 74 20 74 68 61 74 20 64 6f 65 73 20 6e 6f 74 20  t that does not 
6940: 73 70 65 63 69 66 79 20 61 20 76 61 6c 75 65 20  specify a value 
6950: 66 6f 72 20 74 68 65 20 63 6f 6c 75 6d 6e 20 69  for the column i
6960: 73 0a 65 78 65 63 75 74 65 64 2e 20 5e 49 66 20  s.executed. ^If 
6970: 74 68 65 20 76 61 6c 75 65 20 69 73 20 43 55 52  the value is CUR
6980: 52 45 4e 54 5f 54 49 4d 45 2c 20 43 55 52 52 45  RENT_TIME, CURRE
6990: 4e 54 5f 44 41 54 45 20 6f 72 20 43 55 52 52 45  NT_DATE or CURRE
69a0: 4e 54 5f 54 49 4d 45 53 54 41 4d 50 2c 20 74 68  NT_TIMESTAMP, th
69b0: 65 6e 0a 74 68 65 20 63 75 72 72 65 6e 74 20 55  en.the current U
69c0: 54 43 20 64 61 74 65 20 61 6e 64 2f 6f 72 20 74  TC date and/or t
69d0: 69 6d 65 20 69 73 20 69 6e 73 65 72 74 65 64 20  ime is inserted 
69e0: 69 6e 74 6f 20 74 68 65 20 63 6f 6c 75 6d 6e 73  into the columns
69f0: 2e 20 5e 46 6f 72 0a 43 55 52 52 45 4e 54 5f 54  . ^For.CURRENT_T
6a00: 49 4d 45 2c 20 74 68 65 20 66 6f 72 6d 61 74 20  IME, the format 
6a10: 69 73 20 48 48 3a 4d 4d 3a 53 53 2e 20 5e 46 6f  is HH:MM:SS. ^Fo
6a20: 72 20 43 55 52 52 45 4e 54 5f 44 41 54 45 2c 20  r CURRENT_DATE, 
6a30: 59 59 59 59 2d 4d 4d 2d 44 44 2e 0a 5e 54 68 65  YYYY-MM-DD..^The
6a40: 20 66 6f 72 6d 61 74 20 66 6f 72 20 43 55 52 52   format for CURR
6a50: 45 4e 54 5f 54 49 4d 45 53 54 41 4d 50 20 69 73  ENT_TIMESTAMP is
6a60: 20 22 59 59 59 59 2d 4d 4d 2d 44 44 20 48 48 3a   "YYYY-MM-DD HH:
6a70: 4d 4d 3a 53 53 22 2e 0a 3c 2f 70 3e 0a 0a 3c 70  MM:SS"..</p>..<p
6a80: 3e 5e 28 54 68 65 20 50 52 49 4d 41 52 59 20 4b  >^(The PRIMARY K
6a90: 45 59 20 61 74 74 72 69 62 75 74 65 20 6e 6f 72  EY attribute nor
6aa0: 6d 61 6c 6c 79 20 63 72 65 61 74 65 73 20 61 20  mally creates a 
6ab0: 55 4e 49 51 55 45 20 69 6e 64 65 78 20 6f 6e 0a  UNIQUE index on.
6ac0: 74 68 65 20 63 6f 6c 75 6d 6e 20 6f 72 20 63 6f  the column or co
6ad0: 6c 75 6d 6e 73 20 74 68 61 74 20 61 72 65 20 73  lumns that are s
6ae0: 70 65 63 69 66 69 65 64 20 61 73 20 74 68 65 20  pecified as the 
6af0: 50 52 49 4d 41 52 59 20 4b 45 59 2e 20 20 54 68  PRIMARY KEY.  Th
6b00: 65 20 6f 6e 6c 79 0a 65 78 63 65 70 74 69 6f 6e  e only.exception
6b10: 20 74 6f 20 74 68 69 73 20 62 65 68 61 76 69 6f   to this behavio
6b20: 72 20 69 73 20 73 70 65 63 69 61 6c 20 5b 49 4e  r is special [IN
6b30: 54 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45  TEGER PRIMARY KE
6b40: 59 5d 20 63 6f 6c 75 6d 6e 2c 0a 64 65 73 63 72  Y] column,.descr
6b50: 69 62 65 64 20 62 65 6c 6f 77 2e 29 5e 0a 5e 28  ibed below.)^.^(
6b60: 41 63 63 6f 72 64 69 6e 67 20 74 6f 20 74 68 65  According to the
6b70: 20 53 51 4c 20 73 74 61 6e 64 61 72 64 2c 20 50   SQL standard, P
6b80: 52 49 4d 41 52 59 20 4b 45 59 20 73 68 6f 75 6c  RIMARY KEY shoul
6b90: 64 20 69 6d 70 6c 79 20 4e 4f 54 20 4e 55 4c 4c  d imply NOT NULL
6ba0: 2e 0a 55 6e 66 6f 72 74 75 6e 61 74 65 6c 79 2c  ..Unfortunately,
6bb0: 20 64 75 65 20 74 6f 20 61 20 6c 6f 6e 67 2d 73   due to a long-s
6bc0: 74 61 6e 64 69 6e 67 20 63 6f 64 69 6e 67 20 6f  tanding coding o
6bd0: 76 65 72 73 69 67 68 74 2c 20 74 68 69 73 20 69  versight, this i
6be0: 73 20 6e 6f 74 20 0a 74 68 65 20 63 61 73 65 20  s not .the case 
6bf0: 69 6e 20 53 51 4c 69 74 65 2e 20 20 53 51 4c 69  in SQLite.  SQLi
6c00: 74 65 20 61 6c 6c 6f 77 73 20 4e 55 4c 4c 20 76  te allows NULL v
6c10: 61 6c 75 65 73 0a 69 6e 20 61 20 50 52 49 4d 41  alues.in a PRIMA
6c20: 52 59 20 4b 45 59 20 63 6f 6c 75 6d 6e 2e 29 5e  RY KEY column.)^
6c30: 20 20 57 65 20 63 6f 75 6c 64 20 63 68 61 6e 67    We could chang
6c40: 65 20 53 51 4c 69 74 65 20 74 6f 20 63 6f 6e 66  e SQLite to conf
6c50: 6f 72 6d 20 74 6f 20 74 68 65 0a 73 74 61 6e 64  orm to the.stand
6c60: 61 72 64 20 28 61 6e 64 20 77 65 20 6d 69 67 68  ard (and we migh
6c70: 74 20 64 6f 20 73 6f 20 69 6e 20 74 68 65 20 66  t do so in the f
6c80: 75 74 75 72 65 29 2c 20 62 75 74 20 62 79 20 74  uture), but by t
6c90: 68 65 20 74 69 6d 65 20 74 68 65 0a 6f 76 65 72  he time the.over
6ca0: 73 69 67 68 74 20 77 61 73 20 64 69 73 63 6f 76  sight was discov
6cb0: 65 72 65 64 2c 20 53 51 4c 69 74 65 20 77 61 73  ered, SQLite was
6cc0: 20 69 6e 20 73 75 63 68 20 77 69 64 65 20 75 73   in such wide us
6cd0: 65 20 74 68 61 74 20 77 65 20 66 65 61 72 65 64  e that we feared
6ce0: 0a 62 72 65 61 6b 69 6e 67 20 6c 65 67 61 63 79  .breaking legacy
6cf0: 20 63 6f 64 65 20 69 66 20 77 65 20 66 69 78 65   code if we fixe
6d00: 64 20 74 68 65 20 70 72 6f 62 6c 65 6d 2e 20 20  d the problem.  
6d10: 53 6f 20 66 6f 72 20 6e 6f 77 20 77 65 20 68 61  So for now we ha
6d20: 76 65 0a 63 68 6f 73 65 6e 20 74 6f 20 63 6f 6e  ve.chosen to con
6d30: 74 69 6e 75 65 20 61 6c 6c 6f 77 69 6e 67 20 4e  tinue allowing N
6d40: 55 4c 4c 73 20 69 6e 20 50 52 49 4d 41 52 59 20  ULLs in PRIMARY 
6d50: 4b 45 59 20 63 6f 6c 75 6d 6e 73 2e 0a 44 65 76  KEY columns..Dev
6d60: 65 6c 6f 70 65 72 73 20 73 68 6f 75 6c 64 20 62  elopers should b
6d70: 65 20 61 77 61 72 65 2c 20 68 6f 77 65 76 65 72  e aware, however
6d80: 2c 20 74 68 61 74 20 77 65 20 6d 61 79 20 63 68  , that we may ch
6d90: 61 6e 67 65 20 53 51 4c 69 74 65 20 74 6f 0a 63  ange SQLite to.c
6da0: 6f 6e 66 6f 72 6d 20 74 6f 20 74 68 65 20 53 51  onform to the SQ
6db0: 4c 20 73 74 61 6e 64 61 72 64 20 69 6e 20 66 75  L standard in fu
6dc0: 74 75 72 65 20 61 6e 64 20 73 68 6f 75 6c 64 20  ture and should 
6dd0: 64 65 73 69 67 6e 20 6e 65 77 20 70 72 6f 67 72  design new progr
6de0: 61 6d 73 0a 61 63 63 6f 72 64 69 6e 67 6c 79 2e  ams.accordingly.
6df0: 3c 2f 70 3e 0a 0a 3c 70 3e 5e 53 51 4c 69 74 65  </p>..<p>^SQLite
6e00: 20 75 73 65 73 20 5b 64 79 6e 61 6d 69 63 20 74   uses [dynamic t
6e10: 79 70 69 6e 67 5d 20 69 6e 73 74 65 61 64 20 6f  yping] instead o
6e20: 66 20 73 74 61 74 69 63 20 74 79 70 69 6e 67 2e  f static typing.
6e30: 20 20 5e 45 78 63 65 70 74 20 66 6f 72 20 74 68    ^Except for th
6e40: 65 0a 73 70 65 63 69 61 6c 20 63 61 73 65 20 6f  e.special case o
6e50: 66 20 5b 49 4e 54 45 47 45 52 20 50 52 49 4d 41  f [INTEGER PRIMA
6e60: 52 59 20 4b 45 59 5d 2c 20 53 51 4c 69 74 65 20  RY KEY], SQLite 
6e70: 77 69 6c 6c 20 61 6c 6c 6f 77 20 76 61 6c 75 65  will allow value
6e80: 73 20 6f 66 20 61 6e 79 0a 74 79 70 65 20 74 6f  s of any.type to
6e90: 20 62 65 20 73 74 6f 72 65 64 20 69 6e 20 61 6e   be stored in an
6ea0: 79 20 63 6f 6c 75 6d 6e 20 72 65 67 61 72 64 6c  y column regardl
6eb0: 65 73 73 20 6f 66 20 74 68 65 20 64 65 63 6c 61  ess of the decla
6ec0: 72 65 64 20 64 61 74 61 74 79 70 65 20 6f 66 0a  red datatype of.
6ed0: 74 68 61 74 20 63 6f 6c 75 6d 6e 2e 20 20 5e 54  that column.  ^T
6ee0: 68 65 20 64 65 63 6c 61 72 65 64 20 64 61 74 61  he declared data
6ef0: 74 79 70 65 20 69 73 20 61 20 5b 61 66 66 69 6e  type is a [affin
6f00: 69 74 79 20 7c 20 74 79 70 65 20 61 66 66 69 6e  ity | type affin
6f10: 69 74 79 5d 20 74 68 61 74 0a 53 51 4c 69 74 65  ity] that.SQLite
6f20: 20 61 74 74 65 6d 70 74 73 20 74 6f 20 63 6f 6d   attempts to com
6f30: 70 6c 79 20 77 69 74 68 2c 20 62 75 74 20 74 68  ply with, but th
6f40: 65 20 6f 70 65 72 61 74 69 6f 6e 20 77 69 6c 6c  e operation will
6f50: 20 70 72 6f 63 65 65 64 20 65 76 65 6e 20 69 66   proceed even if
6f60: 0a 63 6f 6d 70 6c 69 61 6e 63 65 20 69 73 20 6e  .compliance is n
6f70: 6f 74 20 70 6f 73 73 69 62 6c 65 2e 3c 2f 70 3e  ot possible.</p>
6f80: 0a 0a 3c 70 3e 5e 49 66 20 74 68 65 20 22 54 45  ..<p>^If the "TE
6f90: 4d 50 22 20 6f 72 20 22 54 45 4d 50 4f 52 41 52  MP" or "TEMPORAR
6fa0: 59 22 20 6b 65 79 77 6f 72 64 20 6f 63 63 75 72  Y" keyword occur
6fb0: 73 20 69 6e 20 62 65 74 77 65 65 6e 20 22 43 52  s in between "CR
6fc0: 45 41 54 45 22 0a 61 6e 64 20 22 54 41 42 4c 45  EATE".and "TABLE
6fd0: 22 20 74 68 65 6e 20 74 68 65 20 74 61 62 6c 65  " then the table
6fe0: 20 74 68 61 74 20 69 73 20 63 72 65 61 74 65 64   that is created
6ff0: 20 69 73 20 6f 6e 6c 79 20 76 69 73 69 62 6c 65   is only visible
7000: 0a 77 69 74 68 69 6e 20 74 68 61 74 20 73 61 6d  .within that sam
7010: 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  e database conne
7020: 63 74 69 6f 6e 0a 61 6e 64 20 69 73 20 61 75 74  ction.and is aut
7030: 6f 6d 61 74 69 63 61 6c 6c 79 20 64 65 6c 65 74  omatically delet
7040: 65 64 20 77 68 65 6e 0a 74 68 65 20 64 61 74 61  ed when.the data
7050: 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  base connection 
7060: 69 73 20 63 6c 6f 73 65 64 2e 20 20 5e 41 6e 79  is closed.  ^Any
7070: 20 69 6e 64 69 63 65 73 20 63 72 65 61 74 65 64   indices created
7080: 20 6f 6e 20 61 20 74 65 6d 70 6f 72 61 72 79 20   on a temporary 
7090: 74 61 62 6c 65 0a 61 72 65 20 61 6c 73 6f 20 74  table.are also t
70a0: 65 6d 70 6f 72 61 72 79 2e 20 20 5e 54 65 6d 70  emporary.  ^Temp
70b0: 6f 72 61 72 79 20 74 61 62 6c 65 73 20 61 6e 64  orary tables and
70c0: 20 69 6e 64 69 63 65 73 20 61 72 65 20 73 74 6f   indices are sto
70d0: 72 65 64 20 69 6e 20 61 0a 73 65 70 61 72 61 74  red in a.separat
70e0: 65 20 66 69 6c 65 20 64 69 73 74 69 6e 63 74 20  e file distinct 
70f0: 66 72 6f 6d 20 74 68 65 20 6d 61 69 6e 20 64 61  from the main da
7100: 74 61 62 61 73 65 20 66 69 6c 65 2e 3c 2f 70 3e  tabase file.</p>
7110: 0a 0a 3c 70 3e 20 5e 49 66 20 61 20 26 6c 74 3b  ..<p> ^If a &lt;
7120: 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 26 67 74  database-name&gt
7130: 3b 20 69 73 20 73 70 65 63 69 66 69 65 64 2c 20  ; is specified, 
7140: 74 68 65 6e 20 74 68 65 20 74 61 62 6c 65 20 69  then the table i
7150: 73 20 63 72 65 61 74 65 64 20 69 6e 20 0a 74 68  s created in .th
7160: 65 20 6e 61 6d 65 64 20 64 61 74 61 62 61 73 65  e named database
7170: 2e 20 5e 49 74 20 69 73 20 61 6e 20 65 72 72 6f  . ^It is an erro
7180: 72 20 74 6f 20 73 70 65 63 69 66 79 20 62 6f 74  r to specify bot
7190: 68 20 61 20 26 6c 74 3b 64 61 74 61 62 61 73 65  h a &lt;database
71a0: 2d 6e 61 6d 65 26 67 74 3b 0a 61 6e 64 20 74 68  -name&gt;.and th
71b0: 65 20 54 45 4d 50 20 6b 65 79 77 6f 72 64 2c 20  e TEMP keyword, 
71c0: 75 6e 6c 65 73 73 20 74 68 65 20 26 6c 74 3b 64  unless the &lt;d
71d0: 61 74 61 62 61 73 65 2d 6e 61 6d 65 26 67 74 3b  atabase-name&gt;
71e0: 20 69 73 20 22 74 65 6d 70 22 2e 20 5e 49 66 20   is "temp". ^If 
71f0: 6e 6f 0a 64 61 74 61 62 61 73 65 20 6e 61 6d 65  no.database name
7200: 20 69 73 20 73 70 65 63 69 66 69 65 64 20 61 6e   is specified an
7210: 64 20 74 68 65 20 54 45 4d 50 20 6b 65 79 77 6f  d the TEMP keywo
7220: 72 64 20 69 73 20 6e 6f 74 20 70 72 65 73 65 6e  rd is not presen
7230: 74 20 74 68 65 6e 0a 74 68 65 20 74 61 62 6c 65  t then.the table
7240: 20 69 73 20 63 72 65 61 74 65 64 20 69 6e 20 74   is created in t
7250: 68 65 20 6d 61 69 6e 20 64 61 74 61 62 61 73 65  he main database
7260: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20 6f  .</p>..<p>^The o
7270: 70 74 69 6f 6e 61 6c 20 5b 63 6f 6e 66 6c 69 63  ptional [conflic
7280: 74 20 63 6c 61 75 73 65 5d 20 66 6f 6c 6c 6f 77  t clause] follow
7290: 69 6e 67 20 65 61 63 68 20 63 6f 6e 73 74 72 61  ing each constra
72a0: 69 6e 74 0a 61 6c 6c 6f 77 73 20 74 68 65 20 73  int.allows the s
72b0: 70 65 63 69 66 69 63 61 74 69 6f 6e 20 6f 66 20  pecification of 
72c0: 61 6e 20 61 6c 74 65 72 6e 61 74 69 76 65 20 64  an alternative d
72d0: 65 66 61 75 6c 74 0a 63 6f 6e 73 74 72 61 69 6e  efault.constrain
72e0: 74 20 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c  t conflict resol
72f0: 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 20  ution algorithm 
7300: 66 6f 72 20 74 68 61 74 20 63 6f 6e 73 74 72 61  for that constra
7310: 69 6e 74 2e 0a 5e 49 66 20 6e 6f 20 63 6f 6e 66  int..^If no conf
7320: 6c 69 63 74 20 63 6c 61 75 73 65 20 69 73 20 73  lict clause is s
7330: 70 65 63 69 66 69 65 64 2c 20 74 68 65 20 41 42  pecified, the AB
7340: 4f 52 54 20 61 6c 67 6f 72 69 74 68 6d 20 69 73  ORT algorithm is
7350: 20 75 73 65 64 2e 0a 5e 44 69 66 66 65 72 65 6e   used..^Differen
7360: 74 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 77 69  t constraints wi
7370: 74 68 69 6e 20 74 68 65 20 73 61 6d 65 0a 74 61  thin the same.ta
7380: 62 6c 65 20 6d 61 79 20 68 61 76 65 20 64 69 66  ble may have dif
7390: 66 65 72 65 6e 74 20 63 6f 6e 66 6c 69 63 74 20  ferent conflict 
73a0: 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72  resolution algor
73b0: 69 74 68 6d 73 2e 0a 5e 49 66 20 61 6e 20 5b 49  ithms..^If an [I
73c0: 4e 53 45 52 54 5d 20 6f 72 20 5b 55 50 44 41 54  NSERT] or [UPDAT
73d0: 45 5d 20 73 74 61 74 65 6d 65 6e 74 20 73 70 65  E] statement spe
73e0: 63 69 66 69 65 73 20 61 20 63 6f 6e 66 6c 69 63  cifies a conflic
73f0: 74 0a 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67  t.resolution alg
7400: 6f 72 69 74 68 6d 2c 20 74 68 65 6e 20 74 68 65  orithm, then the
7410: 20 61 6c 67 6f 72 69 74 68 6d 20 73 70 65 63 69   algorithm speci
7420: 66 69 65 64 20 6f 6e 20 74 68 65 20 49 4e 53 45  fied on the INSE
7430: 52 54 20 6f 72 0a 55 50 44 41 54 45 20 73 74 61  RT or.UPDATE sta
7440: 74 65 6d 65 6e 74 20 6f 76 65 72 72 69 64 65 73  tement overrides
7450: 20 74 68 65 20 61 6c 67 6f 72 69 74 68 6d 20 73   the algorithm s
7460: 70 65 63 69 66 69 65 64 20 69 6e 20 74 68 65 20  pecified in the 
7470: 0a 43 52 45 41 54 45 20 54 41 42 4c 45 20 73 74  .CREATE TABLE st
7480: 61 74 65 6d 65 6e 74 2e 0a 53 65 65 20 74 68 65  atement..See the
7490: 20 73 65 63 74 69 6f 6e 20 74 69 74 6c 65 64 0a   section titled.
74a0: 5b 4f 4e 20 43 4f 4e 46 4c 49 43 54 5d 20 66 6f  [ON CONFLICT] fo
74b0: 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66  r additional inf
74c0: 6f 72 6d 61 74 69 6f 6e 2e 3c 2f 70 3e 0a 0a 3c  ormation.</p>..<
74d0: 70 3e 43 48 45 43 4b 20 63 6f 6e 73 74 72 61 69  p>CHECK constrai
74e0: 6e 74 73 20 61 72 65 20 73 75 70 70 6f 72 74 65  nts are supporte
74f0: 64 20 61 73 20 6f 66 20 5b 76 65 72 73 69 6f 6e  d as of [version
7500: 20 33 2e 33 2e 30 5d 2e 20 20 50 72 69 6f 72 0a   3.3.0].  Prior.
7510: 74 6f 20 76 65 72 73 69 6f 6e 20 33 2e 33 2e 30  to version 3.3.0
7520: 2c 20 43 48 45 43 4b 20 63 6f 6e 73 74 72 61 69  , CHECK constrai
7530: 6e 74 73 20 77 65 72 65 20 70 61 72 73 65 64 20  nts were parsed 
7540: 62 75 74 20 6e 6f 74 20 65 6e 66 6f 72 63 65 64  but not enforced
7550: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20 6e  .</p>..<p>^The n
7560: 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73  umber of columns
7570: 20 69 6e 20 61 20 74 61 62 6c 65 20 69 73 20 6c   in a table is l
7580: 69 6d 69 74 65 64 20 62 79 20 74 68 65 0a 5b 53  imited by the.[S
7590: 51 4c 49 54 45 5f 4d 41 58 5f 43 4f 4c 55 4d 4e  QLITE_MAX_COLUMN
75a0: 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 70  ] compile-time p
75b0: 61 72 61 6d 65 74 65 72 2e 0a 5e 41 20 73 69 6e  arameter..^A sin
75c0: 67 6c 65 20 72 6f 77 20 6f 66 20 61 20 74 61 62  gle row of a tab
75d0: 6c 65 20 63 61 6e 6e 6f 74 20 73 74 6f 72 65 20  le cannot store 
75e0: 6d 6f 72 65 20 74 68 61 6e 0a 5b 53 51 4c 49 54  more than.[SQLIT
75f0: 45 5f 4d 41 58 5f 4c 45 4e 47 54 48 5d 20 62 79  E_MAX_LENGTH] by
7600: 74 65 73 20 6f 66 20 64 61 74 61 2e 0a 5e 42 6f  tes of data..^Bo
7610: 74 68 20 6f 66 20 74 68 65 73 65 20 6c 69 6d 69  th of these limi
7620: 74 73 20 63 61 6e 20 62 65 20 6c 6f 77 65 72 65  ts can be lowere
7630: 64 20 61 74 20 72 75 6e 74 69 6d 65 20 75 73 69  d at runtime usi
7640: 6e 67 20 74 68 65 0a 5b 73 71 6c 69 74 65 33 5f  ng the.[sqlite3_
7650: 6c 69 6d 69 74 28 29 5d 20 43 2f 43 2b 2b 20 69  limit()] C/C++ i
7660: 6e 74 65 72 66 61 63 65 2e 3c 2f 70 3e 0a 0a 0a  nterface.</p>...
7670: 3c 70 3e 5e 54 68 65 20 43 52 45 41 54 45 20 54  <p>^The CREATE T
7680: 41 42 4c 45 20 41 53 20 66 6f 72 6d 20 64 65 66  ABLE AS form def
7690: 69 6e 65 73 20 74 68 65 20 74 61 62 6c 65 20 74  ines the table t
76a0: 6f 20 62 65 0a 74 68 65 20 72 65 73 75 6c 74 20  o be.the result 
76b0: 73 65 74 20 6f 66 20 61 20 71 75 65 72 79 2e 20  set of a query. 
76c0: 20 5e 54 68 65 20 6e 61 6d 65 73 20 6f 66 20 74   ^The names of t
76d0: 68 65 20 74 61 62 6c 65 20 63 6f 6c 75 6d 6e 73  he table columns
76e0: 20 61 72 65 0a 74 68 65 20 6e 61 6d 65 73 20 6f   are.the names o
76f0: 66 20 74 68 65 20 63 6f 6c 75 6d 6e 73 20 69 6e  f the columns in
7700: 20 74 68 65 20 72 65 73 75 6c 74 2e 3c 2f 70 3e   the result.</p>
7710: 0a 0a 3c 70 3e 5e 49 66 20 74 68 65 20 6f 70 74  ..<p>^If the opt
7720: 69 6f 6e 61 6c 20 49 46 20 4e 4f 54 20 45 58 49  ional IF NOT EXI
7730: 53 54 53 20 63 6c 61 75 73 65 20 69 73 20 70 72  STS clause is pr
7740: 65 73 65 6e 74 20 61 6e 64 20 61 6e 6f 74 68 65  esent and anothe
7750: 72 20 74 61 62 6c 65 0a 77 69 74 68 20 74 68 65  r table.with the
7760: 20 73 61 6d 65 20 6e 61 6d 65 20 61 6c 72 65 61   same name alrea
7770: 64 79 20 65 78 69 73 74 73 2c 20 74 68 65 6e 20  dy exists, then 
7780: 74 68 69 73 20 63 6f 6d 6d 61 6e 64 20 62 65 63  this command bec
7790: 6f 6d 65 73 20 61 20 6e 6f 2d 6f 70 2e 3c 2f 70  omes a no-op.</p
77a0: 3e 0a 0a 3c 70 3e 5e 54 61 62 6c 65 73 20 61 72  >..<p>^Tables ar
77b0: 65 20 72 65 6d 6f 76 65 64 20 75 73 69 6e 67 20  e removed using 
77c0: 74 68 65 20 5b 44 52 4f 50 20 54 41 42 4c 45 5d  the [DROP TABLE]
77d0: 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 3c 2f 70   statement.  </p
77e0: 3e 0a 0a 3c 74 63 6c 3e 68 64 5f 66 72 61 67 6d  >..<tcl>hd_fragm
77f0: 65 6e 74 20 72 6f 77 69 64 20 7b 49 4e 54 45 47  ent rowid {INTEG
7800: 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 7d 20  ER PRIMARY KEY} 
7810: 52 4f 57 49 44 20 72 6f 77 69 64 3c 2f 74 63 6c  ROWID rowid</tcl
7820: 3e 0a 3c 68 33 3e 52 4f 57 49 44 73 20 61 6e 64  >.<h3>ROWIDs and
7830: 20 74 68 65 20 49 4e 54 45 47 45 52 20 50 52 49   the INTEGER PRI
7840: 4d 41 52 59 20 4b 45 59 3c 2f 68 33 3e 0a 0a 3c  MARY KEY</h3>..<
7850: 70 3e 5e 45 76 65 72 79 20 72 6f 77 20 6f 66 20  p>^Every row of 
7860: 65 76 65 72 79 20 53 51 4c 69 74 65 20 74 61 62  every SQLite tab
7870: 6c 65 20 68 61 73 20 61 20 36 34 2d 62 69 74 20  le has a 64-bit 
7880: 73 69 67 6e 65 64 20 69 6e 74 65 67 65 72 20 6b  signed integer k
7890: 65 79 20 0a 74 68 61 74 20 69 73 20 75 6e 69 71  ey .that is uniq
78a0: 75 65 20 77 69 74 68 69 6e 20 74 68 65 20 73 61  ue within the sa
78b0: 6d 65 20 74 61 62 6c 65 2e 0a 54 68 69 73 20 69  me table..This i
78c0: 6e 74 65 67 65 72 20 69 73 20 75 73 75 61 6c 6c  nteger is usuall
78d0: 79 20 63 61 6c 6c 65 64 20 74 68 65 20 22 72 6f  y called the "ro
78e0: 77 69 64 22 2e 20 20 5e 54 68 65 20 72 6f 77 69  wid".  ^The rowi
78f0: 64 20 69 73 20 74 68 65 20 61 63 74 75 61 6c 20  d is the actual 
7900: 6b 65 79 20 75 73 65 64 0a 69 6e 20 74 68 65 20  key used.in the 
7910: 42 2d 54 72 65 65 20 74 68 61 74 20 69 6d 70 6c  B-Tree that impl
7920: 65 6d 65 6e 74 73 20 61 6e 20 53 51 4c 69 74 65  ements an SQLite
7930: 20 74 61 62 6c 65 2e 20 20 5e 52 6f 77 73 20 61   table.  ^Rows a
7940: 72 65 20 73 74 6f 72 65 64 20 69 6e 0a 72 6f 77  re stored in.row
7950: 69 64 20 6f 72 64 65 72 2e 20 5e 54 68 65 0a 72  id order. ^The.r
7960: 6f 77 69 64 20 76 61 6c 75 65 20 63 61 6e 20 62  owid value can b
7970: 65 20 61 63 63 65 73 73 65 64 20 75 73 69 6e 67  e accessed using
7980: 20 6f 6e 65 20 6f 66 20 74 68 65 20 73 70 65 63   one of the spec
7990: 69 61 6c 20 6e 61 6d 65 73 0a 22 3c 62 3e 52 4f  ial names."<b>RO
79a0: 57 49 44 3c 2f 62 3e 22 2c 20 22 3c 62 3e 4f 49  WID</b>", "<b>OI
79b0: 44 3c 2f 62 3e 22 2c 20 6f 72 20 22 3c 62 3e 5f  D</b>", or "<b>_
79c0: 52 4f 57 49 44 5f 3c 2f 62 3e 22 20 61 73 73 75  ROWID_</b>" assu
79d0: 6d 69 6e 67 20 74 68 6f 73 65 20 6e 61 6d 65 73  ming those names
79e0: 0a 61 72 65 20 6e 6f 20 75 73 65 64 20 62 79 20  .are no used by 
79f0: 6f 74 68 65 72 20 63 6f 6e 76 65 6e 74 69 6f 6e  other convention
7a00: 61 6c 20 74 61 62 6c 65 20 63 6f 6c 75 6d 6e 73  al table columns
7a10: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 0a 5e 49 66 20 61  .</p>..<p>.^If a
7a20: 20 63 6f 6c 75 6d 6e 20 69 73 20 64 65 63 6c 61   column is decla
7a30: 72 65 64 20 74 6f 20 62 65 20 61 6e 20 49 4e 54  red to be an INT
7a40: 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59  EGER PRIMARY KEY
7a50: 2c 20 74 68 65 6e 20 74 68 61 74 20 63 6f 6c 75  , then that colu
7a60: 6d 6e 20 69 73 20 6e 6f 74 0a 61 20 22 72 65 61  mn is not.a "rea
7a70: 6c 22 20 64 61 74 61 62 61 73 65 20 63 6f 6c 75  l" database colu
7a80: 6d 6e 20 62 75 74 20 69 6e 73 74 65 61 64 20 62  mn but instead b
7a90: 65 63 6f 6d 65 73 0a 61 6e 20 61 6c 69 61 73 20  ecomes.an alias 
7aa0: 66 6f 72 20 74 68 65 20 72 6f 77 69 64 2e 20 20  for the rowid.  
7ab0: 5e 55 6e 6c 69 6b 65 20 6e 6f 72 6d 61 6c 20 53  ^Unlike normal S
7ac0: 51 4c 69 74 65 20 63 6f 6c 75 6d 6e 73 2c 20 74  QLite columns, t
7ad0: 68 65 20 72 6f 77 69 64 0a 6d 75 73 74 20 62 65  he rowid.must be
7ae0: 20 61 20 6e 6f 6e 2d 4e 55 4c 4c 20 69 6e 74 65   a non-NULL inte
7af0: 67 65 72 20 76 61 6c 75 65 2e 20 20 5e 54 68 65  ger value.  ^The
7b00: 20 72 6f 77 69 64 20 69 73 20 6e 6f 74 20 61 62   rowid is not ab
7b10: 6c 65 20 74 6f 20 68 6f 6c 64 0a 66 6c 6f 61 74  le to hold.float
7b20: 69 6e 67 20 70 6f 69 6e 74 20 76 61 6c 75 65 73  ing point values
7b30: 2c 20 73 74 72 69 6e 67 73 2c 20 42 4c 4f 42 73  , strings, BLOBs
7b40: 2c 20 6f 72 20 4e 55 4c 4c 73 2e 3c 2f 70 3e 0a  , or NULLs.</p>.
7b50: 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 69 3e  .<blockquote><i>
7b60: 0a 5e 41 6e 20 49 4e 54 45 47 45 52 20 50 52 49  .^An INTEGER PRI
7b70: 4d 41 52 59 20 4b 45 59 20 63 6f 6c 75 6d 6e 20  MARY KEY column 
7b80: 69 73 20 61 6e 20 61 6c 69 61 73 20 66 6f 72 20  is an alias for 
7b90: 74 68 65 20 36 34 2d 62 69 74 20 73 69 67 6e 65  the 64-bit signe
7ba0: 64 20 69 6e 74 65 67 65 72 20 72 6f 77 69 64 2e  d integer rowid.
7bb0: 0a 3c 2f 69 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74  .</i></blockquot
7bc0: 65 3e 0a 0a 3c 70 3e 5e 41 6e 20 49 4e 54 45 47  e>..<p>^An INTEG
7bd0: 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 20 63  ER PRIMARY KEY c
7be0: 6f 6c 75 6d 6e 20 63 61 6e 20 61 6c 73 6f 20 69  olumn can also i
7bf0: 6e 63 6c 75 64 65 20 74 68 65 0a 6b 65 79 77 6f  nclude the.keywo
7c00: 72 64 20 5b 41 55 54 4f 49 4e 43 52 45 4d 45 4e  rd [AUTOINCREMEN
7c10: 54 5d 2e 20 20 5e 54 68 65 20 5b 41 55 54 4f 49  T].  ^The [AUTOI
7c20: 4e 43 52 45 4d 45 4e 54 5d 20 6b 65 79 77 6f 72  NCREMENT] keywor
7c30: 64 20 6d 6f 64 69 66 69 65 64 20 74 68 65 20 77  d modified the w
7c40: 61 79 0a 74 68 61 74 20 42 2d 54 72 65 65 20 6b  ay.that B-Tree k
7c50: 65 79 73 20 61 72 65 20 61 75 74 6f 6d 61 74 69  eys are automati
7c60: 63 61 6c 6c 79 20 67 65 6e 65 72 61 74 65 64 2e  cally generated.
7c70: 20 20 41 64 64 69 74 69 6f 6e 61 6c 20 64 65 74    Additional det
7c80: 61 69 6c 0a 6f 6e 20 61 75 74 6f 6d 61 74 69 63  ail.on automatic
7c90: 20 42 2d 54 72 65 65 20 6b 65 79 20 67 65 6e 65   B-Tree key gene
7ca0: 72 61 74 69 6f 6e 20 69 73 20 61 76 61 69 6c 61  ration is availa
7cb0: 62 6c 65 0a 3c 61 20 68 72 65 66 3d 22 61 75 74  ble.<a href="aut
7cc0: 6f 69 6e 63 2e 68 74 6d 6c 22 3e 73 65 70 61 72  oinc.html">separ
7cd0: 61 74 65 6c 79 3c 2f 61 3e 2e 3c 2f 70 3e 0a 0a  ately</a>.</p>..
7ce0: 3c 70 3e 5e 54 68 65 20 73 70 65 63 69 61 6c 20  <p>^The special 
7cf0: 62 65 68 61 76 69 6f 72 20 6f 66 20 49 4e 54 45  behavior of INTE
7d00: 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 0a  GER PRIMARY KEY.
7d10: 69 73 20 6f 6e 6c 79 20 61 76 61 69 6c 61 62 6c  is only availabl
7d20: 65 20 69 66 20 74 68 65 20 74 79 70 65 20 6e 61  e if the type na
7d30: 6d 65 20 69 73 20 65 78 61 63 74 6c 79 20 22 49  me is exactly "I
7d40: 4e 54 45 47 45 52 22 20 69 6e 20 61 6e 79 20 6d  NTEGER" in any m
7d50: 69 78 74 75 72 65 0a 6f 66 20 75 70 70 65 72 20  ixture.of upper 
7d60: 61 6e 64 20 6c 6f 77 65 72 20 63 61 73 65 2e 20  and lower case. 
7d70: 20 5e 4f 74 68 65 72 20 69 6e 74 65 67 65 72 20   ^Other integer 
7d80: 74 79 70 65 20 6e 61 6d 65 73 0a 6c 69 6b 65 20  type names.like 
7d90: 22 49 4e 54 22 20 6f 72 20 22 42 49 47 49 4e 54  "INT" or "BIGINT
7da0: 22 20 6f 72 20 22 53 48 4f 52 54 20 49 4e 54 45  " or "SHORT INTE
7db0: 47 45 52 22 20 6f 72 20 22 55 4e 53 49 47 4e 45  GER" or "UNSIGNE
7dc0: 44 20 49 4e 54 45 47 45 52 22 0a 63 61 75 73 65  D INTEGER".cause
7dd0: 73 20 74 68 65 20 70 72 69 6d 61 72 79 20 6b 65  s the primary ke
7de0: 79 20 63 6f 6c 75 6d 6e 20 74 6f 20 62 65 68 61  y column to beha
7df0: 76 65 20 61 73 20 61 6e 20 6f 72 64 69 6e 61 72  ve as an ordinar
7e00: 79 20 74 61 62 6c 65 20 63 6f 6c 75 6d 6e 20 77  y table column w
7e10: 69 74 68 0a 69 6e 74 65 67 65 72 20 5b 61 66 66  ith.integer [aff
7e20: 69 6e 69 74 79 5d 20 61 6e 64 20 61 20 75 6e 69  inity] and a uni
7e30: 71 75 65 20 69 6e 64 65 78 2c 20 6e 6f 74 20 61  que index, not a
7e40: 73 20 61 6e 20 61 6c 69 61 73 20 66 6f 72 20 74  s an alias for t
7e50: 68 65 20 72 6f 77 69 64 2e 0a 5e 28 54 68 65 20  he rowid..^(The 
7e60: 73 70 65 63 69 61 6c 20 62 65 68 61 76 69 6f 72  special behavior
7e70: 20 6f 66 20 49 4e 54 45 47 45 52 20 50 52 49 4d   of INTEGER PRIM
7e80: 41 52 59 20 4b 45 59 20 69 73 20 6f 6e 6c 79 20  ARY KEY is only 
7e90: 61 76 61 69 6c 61 62 6c 65 20 69 66 20 74 68 65  available if the
7ea0: 0a 70 72 69 6d 61 72 79 20 6b 65 79 20 69 73 20  .primary key is 
7eb0: 61 20 73 69 6e 67 6c 65 20 63 6f 6c 75 6d 6e 2e  a single column.
7ec0: 20 20 4d 75 6c 74 69 2d 63 6f 6c 75 6d 6e 20 70    Multi-column p
7ed0: 72 69 6d 61 72 79 20 6b 65 79 73 20 64 6f 20 6e  rimary keys do n
7ee0: 6f 74 20 62 65 63 6f 6d 65 0a 61 6c 69 61 73 65  ot become.aliase
7ef0: 73 20 66 6f 72 20 74 68 65 20 72 6f 77 69 64 2e  s for the rowid.
7f00: 29 5e 0a 5e 54 68 65 20 41 55 54 4f 49 4e 43 52  )^.^The AUTOINCR
7f10: 45 4d 45 4e 54 20 6b 65 79 77 6f 72 64 20 6f 6e  EMENT keyword on
7f20: 6c 79 20 77 6f 72 6b 73 20 6f 6e 20 61 20 63 6f  ly works on a co
7f30: 6c 75 6d 6e 20 74 68 61 74 20 69 73 20 61 6e 20  lumn that is an 
7f40: 61 6c 69 61 73 0a 66 6f 72 20 74 68 65 20 72 6f  alias.for the ro
7f50: 77 69 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 4e 6f 74  wid.</p>..<p>Not
7f60: 65 20 74 68 61 74 20 73 65 61 72 63 68 65 73 20  e that searches 
7f70: 61 67 61 69 6e 73 74 20 61 20 72 6f 77 69 64 20  against a rowid 
7f80: 61 72 65 20 67 65 6e 65 72 61 6c 6c 79 20 61 62  are generally ab
7f90: 6f 75 74 20 74 77 69 63 65 20 61 73 0a 66 61 73  out twice as.fas
7fa0: 74 20 61 73 20 73 65 61 72 63 68 65 73 20 61 67  t as searches ag
7fb0: 61 69 6e 73 74 20 61 6e 79 20 6f 74 68 65 72 20  ainst any other 
7fc0: 50 52 49 4d 41 52 59 20 4b 45 59 20 6f 72 20 69  PRIMARY KEY or i
7fd0: 6e 64 65 78 65 64 20 76 61 6c 75 65 2e 0a 3c 2f  ndexed value..</
7fe0: 70 3e 0a 0a 3c 70 3e 3c 62 3e 47 6f 6f 66 79 20  p>..<p><b>Goofy 
7ff0: 62 65 68 61 76 69 6f 72 20 61 6c 65 72 74 3a 3c  behavior alert:<
8000: 2f 62 3e 20 20 5e 28 54 68 65 20 66 6f 6c 6c 6f  /b>  ^(The follo
8010: 77 69 6e 67 20 74 68 72 65 65 20 64 65 63 6c 61  wing three decla
8020: 72 61 74 69 6f 6e 73 20 61 6c 6c 20 63 61 75 73  rations all caus
8030: 65 0a 74 68 65 20 63 6f 6c 75 6d 6e 20 22 78 22  e.the column "x"
8040: 20 62 65 20 61 6e 20 61 6c 69 61 73 20 66 6f 72   be an alias for
8050: 20 74 68 65 20 72 6f 77 69 64 3a 3c 2f 70 3e 0a   the rowid:</p>.
8060: 0a 3c 75 6c 3e 0a 3c 6c 69 3e 3c 74 74 3e 43 52  .<ul>.<li><tt>CR
8070: 45 41 54 45 20 54 41 42 4c 45 20 74 28 78 20 49  EATE TABLE t(x I
8080: 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b  NTEGER PRIMARY K
8090: 45 59 20 41 53 43 2c 20 79 2c 20 7a 29 3b 3c 2f  EY ASC, y, z);</
80a0: 74 74 3e 0a 3c 6c 69 3e 3c 74 74 3e 43 52 45 41  tt>.<li><tt>CREA
80b0: 54 45 20 54 41 42 4c 45 20 74 28 78 20 49 4e 54  TE TABLE t(x INT
80c0: 45 47 45 52 2c 20 79 2c 20 7a 2c 20 50 52 49 4d  EGER, y, z, PRIM
80d0: 41 52 59 20 4b 45 59 28 78 20 41 53 43 29 29 3b  ARY KEY(x ASC));
80e0: 3c 2f 74 74 3e 0a 3c 6c 69 3e 3c 74 74 3e 43 52  </tt>.<li><tt>CR
80f0: 45 41 54 45 20 54 41 42 4c 45 20 74 28 78 20 49  EATE TABLE t(x I
8100: 4e 54 45 47 45 52 2c 20 79 2c 20 7a 2c 20 50 52  NTEGER, y, z, PR
8110: 49 4d 41 52 59 20 4b 45 59 28 78 20 44 45 53 43  IMARY KEY(x DESC
8120: 29 29 3b 3c 2f 74 74 3e 0a 3c 2f 75 6c 3e 29 5e  ));</tt>.</ul>)^
8130: 0a 0a 3c 70 3e 42 75 74 2c 20 69 6e 20 63 6f 6e  ..<p>But, in con
8140: 74 72 61 73 74 2c 20 5e 28 74 68 65 20 66 6f 6c  trast, ^(the fol
8150: 6c 6f 77 69 6e 67 20 64 65 63 6c 61 72 61 74 69  lowing declarati
8160: 6f 6e 20 64 6f 65 73 20 3c 75 3e 6e 6f 74 3c 2f  on does <u>not</
8170: 75 3e 20 72 65 73 75 6c 74 20 69 6e 0a 22 78 22  u> result in."x"
8180: 20 62 65 69 6e 67 20 61 6e 20 61 6c 69 61 73 20   being an alias 
8190: 66 6f 72 20 74 68 65 20 72 6f 77 69 64 3a 3c 2f  for the rowid:</
81a0: 70 3e 0a 0a 3c 75 6c 3e 0a 3c 6c 69 3e 3c 74 74  p>..<ul>.<li><tt
81b0: 3e 43 52 45 41 54 45 20 54 41 42 4c 45 20 74 28  >CREATE TABLE t(
81c0: 78 20 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52  x INTEGER PRIMAR
81d0: 59 20 4b 45 59 20 44 45 53 43 2c 20 79 2c 20 7a  Y KEY DESC, y, z
81e0: 29 3b 3c 2f 74 74 3e 0a 3c 2f 75 6c 3e 29 5e 0a  );</tt>.</ul>)^.
81f0: 0a 3c 70 3e 54 68 69 73 20 61 73 79 6d 6d 65 74  .<p>This asymmet
8200: 72 69 63 61 6c 20 62 65 68 61 76 69 6f 72 20 69  rical behavior i
8210: 73 20 75 6e 66 6f 72 74 75 6e 61 74 65 20 61 6e  s unfortunate an
8220: 64 20 69 73 20 72 65 61 6c 6c 79 20 64 75 65 20  d is really due 
8230: 74 6f 20 61 20 62 75 67 0a 69 6e 20 74 68 65 20  to a bug.in the 
8240: 70 61 72 73 65 72 20 69 6e 20 65 61 72 6c 79 20  parser in early 
8250: 76 65 72 73 69 6f 6e 73 20 6f 66 20 53 51 4c 69  versions of SQLi
8260: 74 65 2e 20 20 42 75 74 20 66 69 78 69 6e 67 20  te.  But fixing 
8270: 74 68 65 20 62 75 67 20 77 6f 75 6c 64 0a 72 65  the bug would.re
8280: 73 75 6c 74 20 69 6e 20 76 65 72 79 20 73 65 72  sult in very ser
8290: 69 6f 75 73 20 62 61 63 6b 77 61 72 64 73 20 69  ious backwards i
82a0: 6e 63 6f 6d 70 61 74 69 62 69 6c 69 74 69 65 73  ncompatibilities
82b0: 2e 20 20 54 68 65 20 53 51 4c 69 74 65 20 64 65  .  The SQLite de
82c0: 76 65 6c 6f 70 65 72 73 0a 66 65 65 6c 20 74 68  velopers.feel th
82d0: 61 74 20 67 6f 6f 66 79 20 62 65 68 61 76 69 6f  at goofy behavio
82e0: 72 20 69 6e 20 61 6e 20 63 6f 72 6e 65 72 20 63  r in an corner c
82f0: 61 73 65 20 69 73 20 66 61 72 20 62 65 74 74 65  ase is far bette
8300: 72 20 74 68 61 6e 0a 61 20 63 6f 6d 70 61 74 69  r than.a compati
8310: 62 69 6c 69 74 79 20 62 72 65 61 6b 2c 20 73 6f  bility break, so
8320: 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 62 65   the original be
8330: 68 61 76 69 6f 72 20 69 73 20 72 65 74 61 69 6e  havior is retain
8340: 65 64 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23  ed.</p>..<tcl>.#
8350: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8360: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8370: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8380: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8390: 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 53 65  #############.Se
83a0: 63 74 69 6f 6e 20 7b 43 52 45 41 54 45 20 54 52  ction {CREATE TR
83b0: 49 47 47 45 52 7d 20 63 72 65 61 74 65 74 72 69  IGGER} createtri
83c0: 67 67 65 72 20 7b 7b 43 52 45 41 54 45 20 54 52  gger {{CREATE TR
83d0: 49 47 47 45 52 7d 7d 0a 0a 42 75 62 62 6c 65 44  IGGER}}..BubbleD
83e0: 69 61 67 72 61 6d 20 63 72 65 61 74 65 2d 74 72  iagram create-tr
83f0: 69 67 67 65 72 2d 73 74 6d 74 20 31 0a 3c 2f 74  igger-stmt 1.</t
8400: 63 6c 3e 0a 0a 3c 70 3e 5e 54 68 65 20 43 52 45  cl>..<p>^The CRE
8410: 41 54 45 20 54 52 49 47 47 45 52 20 73 74 61 74  ATE TRIGGER stat
8420: 65 6d 65 6e 74 20 69 73 20 75 73 65 64 20 74 6f  ement is used to
8430: 20 61 64 64 20 74 72 69 67 67 65 72 73 20 74 6f   add triggers to
8440: 20 74 68 65 20 0a 64 61 74 61 62 61 73 65 20 73   the .database s
8450: 63 68 65 6d 61 2e 20 5e 54 72 69 67 67 65 72 73  chema. ^Triggers
8460: 20 61 72 65 20 64 61 74 61 62 61 73 65 20 6f 70   are database op
8470: 65 72 61 74 69 6f 6e 73 20 0a 74 68 61 74 20 61  erations .that a
8480: 72 65 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79  re automatically
8490: 20 70 65 72 66 6f 72 6d 65 64 20 77 68 65 6e 20   performed when 
84a0: 61 20 73 70 65 63 69 66 69 65 64 20 64 61 74 61  a specified data
84b0: 62 61 73 65 20 65 76 65 6e 74 0a 6f 63 63 75 72  base event.occur
84c0: 73 2e 20 20 3c 2f 70 3e 0a 0a 3c 70 3e 5e 41 20  s.  </p>..<p>^A 
84d0: 74 72 69 67 67 65 72 20 6d 61 79 20 62 65 20 73  trigger may be s
84e0: 70 65 63 69 66 69 65 64 20 74 6f 20 66 69 72 65  pecified to fire
84f0: 20 77 68 65 6e 65 76 65 72 20 61 20 5b 44 45 4c   whenever a [DEL
8500: 45 54 45 5d 2c 20 5b 49 4e 53 45 52 54 5d 2c 0a  ETE], [INSERT],.
8510: 6f 72 20 5b 55 50 44 41 54 45 5d 20 6f 66 20 61  or [UPDATE] of a
8520: 0a 70 61 72 74 69 63 75 6c 61 72 20 64 61 74 61  .particular data
8530: 62 61 73 65 20 74 61 62 6c 65 20 6f 63 63 75 72  base table occur
8540: 73 2c 20 6f 72 20 77 68 65 6e 65 76 65 72 20 61  s, or whenever a
8550: 6e 20 5b 55 50 44 41 54 45 5d 20 6f 63 63 75 72  n [UPDATE] occur
8560: 73 20 6f 6e 0a 6f 6e 20 6f 6e 65 20 6f 72 20 6d  s on.on one or m
8570: 6f 72 65 20 73 70 65 63 69 66 69 65 64 20 63 6f  ore specified co
8580: 6c 75 6d 6e 73 20 6f 66 20 61 20 74 61 62 6c 65  lumns of a table
8590: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 41 74 20 74 68  .</p>..<p>^At th
85a0: 69 73 20 74 69 6d 65 20 53 51 4c 69 74 65 20 73  is time SQLite s
85b0: 75 70 70 6f 72 74 73 20 6f 6e 6c 79 20 46 4f 52  upports only FOR
85c0: 20 45 41 43 48 20 52 4f 57 20 74 72 69 67 67 65   EACH ROW trigge
85d0: 72 73 2c 20 6e 6f 74 20 46 4f 52 20 45 41 43 48  rs, not FOR EACH
85e0: 0a 53 54 41 54 45 4d 45 4e 54 20 74 72 69 67 67  .STATEMENT trigg
85f0: 65 72 73 2e 20 5e 48 65 6e 63 65 20 65 78 70 6c  ers. ^Hence expl
8600: 69 63 69 74 6c 79 20 73 70 65 63 69 66 79 69 6e  icitly specifyin
8610: 67 20 46 4f 52 20 45 41 43 48 20 52 4f 57 20 69  g FOR EACH ROW i
8620: 73 20 6f 70 74 69 6f 6e 61 6c 2e 0a 5e 46 4f 52  s optional..^FOR
8630: 20 45 41 43 48 20 52 4f 57 20 69 6d 70 6c 69 65   EACH ROW implie
8640: 73 20 74 68 61 74 20 74 68 65 20 53 51 4c 20 73  s that the SQL s
8650: 74 61 74 65 6d 65 6e 74 73 20 73 70 65 63 69 66  tatements specif
8660: 69 65 64 20 69 6e 20 74 68 65 20 74 72 69 67 67  ied in the trigg
8670: 65 72 0a 6d 61 79 20 62 65 20 65 78 65 63 75 74  er.may be execut
8680: 65 64 20 28 64 65 70 65 6e 64 69 6e 67 20 6f 6e  ed (depending on
8690: 20 74 68 65 20 57 48 45 4e 20 63 6c 61 75 73 65   the WHEN clause
86a0: 29 20 66 6f 72 20 65 61 63 68 20 64 61 74 61 62  ) for each datab
86b0: 61 73 65 20 72 6f 77 20 62 65 69 6e 67 0a 69 6e  ase row being.in
86c0: 73 65 72 74 65 64 2c 20 75 70 64 61 74 65 64 20  serted, updated 
86d0: 6f 72 20 64 65 6c 65 74 65 64 20 62 79 20 74 68  or deleted by th
86e0: 65 20 73 74 61 74 65 6d 65 6e 74 20 63 61 75 73  e statement caus
86f0: 69 6e 67 20 74 68 65 20 74 72 69 67 67 65 72 20  ing the trigger 
8700: 74 6f 20 66 69 72 65 2e 3c 2f 70 3e 0a 0a 3c 70  to fire.</p>..<p
8710: 3e 5e 28 42 6f 74 68 20 74 68 65 20 57 48 45 4e  >^(Both the WHEN
8720: 20 63 6c 61 75 73 65 20 61 6e 64 20 74 68 65 20   clause and the 
8730: 74 72 69 67 67 65 72 20 61 63 74 69 6f 6e 73 20  trigger actions 
8740: 6d 61 79 20 61 63 63 65 73 73 20 65 6c 65 6d 65  may access eleme
8750: 6e 74 73 20 6f 66 20 0a 74 68 65 20 72 6f 77 20  nts of .the row 
8760: 62 65 69 6e 67 20 69 6e 73 65 72 74 65 64 2c 20  being inserted, 
8770: 64 65 6c 65 74 65 64 20 6f 72 20 75 70 64 61 74  deleted or updat
8780: 65 64 20 75 73 69 6e 67 20 72 65 66 65 72 65 6e  ed using referen
8790: 63 65 73 20 6f 66 20 74 68 65 20 66 6f 72 6d 20  ces of the form 
87a0: 0a 22 4e 45 57 2e 3c 69 3e 63 6f 6c 75 6d 6e 2d  ."NEW.<i>column-
87b0: 6e 61 6d 65 3c 2f 69 3e 22 20 61 6e 64 20 22 4f  name</i>" and "O
87c0: 4c 44 2e 3c 69 3e 63 6f 6c 75 6d 6e 2d 6e 61 6d  LD.<i>column-nam
87d0: 65 3c 2f 69 3e 22 2c 20 77 68 65 72 65 0a 3c 69  e</i>", where.<i
87e0: 3e 63 6f 6c 75 6d 6e 2d 6e 61 6d 65 3c 2f 69 3e  >column-name</i>
87f0: 20 69 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20   is the name of 
8800: 61 20 63 6f 6c 75 6d 6e 20 66 72 6f 6d 20 74 68  a column from th
8810: 65 20 74 61 62 6c 65 20 74 68 61 74 20 74 68 65  e table that the
8820: 20 74 72 69 67 67 65 72 0a 69 73 20 61 73 73 6f   trigger.is asso
8830: 63 69 61 74 65 64 20 77 69 74 68 2e 29 5e 20 5e  ciated with.)^ ^
8840: 28 4f 4c 44 20 61 6e 64 20 4e 45 57 20 72 65 66  (OLD and NEW ref
8850: 65 72 65 6e 63 65 73 20 6d 61 79 20 6f 6e 6c 79  erences may only
8860: 20 62 65 20 75 73 65 64 20 69 6e 20 74 72 69 67   be used in trig
8870: 67 65 72 73 20 6f 6e 0a 65 76 65 6e 74 73 20 66  gers on.events f
8880: 6f 72 20 77 68 69 63 68 20 74 68 65 79 20 61 72  or which they ar
8890: 65 20 72 65 6c 65 76 61 6e 74 2c 20 61 73 20 66  e relevant, as f
88a0: 6f 6c 6c 6f 77 73 3a 3c 2f 70 3e 0a 0a 3c 74 61  ollows:</p>..<ta
88b0: 62 6c 65 20 62 6f 72 64 65 72 3d 30 20 63 65 6c  ble border=0 cel
88c0: 6c 70 61 64 64 69 6e 67 3d 31 30 3e 0a 3c 74 72  lpadding=10>.<tr
88d0: 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
88e0: 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22  p" align="right"
88f0: 20 77 69 64 74 68 3d 31 32 30 3e 3c 69 3e 49 4e   width=120><i>IN
8900: 53 45 52 54 3c 2f 69 3e 3c 2f 74 64 3e 0a 3c 74  SERT</i></td>.<t
8910: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 4e  d valign="top">N
8920: 45 57 20 72 65 66 65 72 65 6e 63 65 73 20 61 72  EW references ar
8930: 65 20 76 61 6c 69 64 3c 2f 74 64 3e 0a 3c 2f 74  e valid</td>.</t
8940: 72 3e 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69  r>.<tr>.<td vali
8950: 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22  gn="top" align="
8960: 72 69 67 68 74 22 20 77 69 64 74 68 3d 31 32 30  right" width=120
8970: 3e 3c 69 3e 55 50 44 41 54 45 3c 2f 69 3e 3c 2f  ><i>UPDATE</i></
8980: 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22  td>.<td valign="
8990: 74 6f 70 22 3e 4e 45 57 20 61 6e 64 20 4f 4c 44  top">NEW and OLD
89a0: 20 72 65 66 65 72 65 6e 63 65 73 20 61 72 65 20   references are 
89b0: 76 61 6c 69 64 3c 2f 74 64 3e 0a 3c 2f 74 72 3e  valid</td>.</tr>
89c0: 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e  .<tr>.<td valign
89d0: 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69  ="top" align="ri
89e0: 67 68 74 22 20 77 69 64 74 68 3d 31 32 30 3e 3c  ght" width=120><
89f0: 69 3e 44 45 4c 45 54 45 3c 2f 69 3e 3c 2f 74 64  i>DELETE</i></td
8a00: 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
8a10: 70 22 3e 4f 4c 44 20 72 65 66 65 72 65 6e 63 65  p">OLD reference
8a20: 73 20 61 72 65 20 76 61 6c 69 64 3c 2f 74 64 3e  s are valid</td>
8a30: 0a 3c 2f 74 72 3e 0a 3c 2f 74 61 62 6c 65 3e 0a  .</tr>.</table>.
8a40: 3c 2f 70 3e 29 5e 0a 0a 3c 70 3e 5e 49 66 20 61  </p>)^..<p>^If a
8a50: 20 57 48 45 4e 20 63 6c 61 75 73 65 20 69 73 20   WHEN clause is 
8a60: 73 75 70 70 6c 69 65 64 2c 20 74 68 65 20 53 51  supplied, the SQ
8a70: 4c 20 73 74 61 74 65 6d 65 6e 74 73 20 73 70 65  L statements spe
8a80: 63 69 66 69 65 64 0a 61 72 65 20 6f 6e 6c 79 20  cified.are only 
8a90: 65 78 65 63 75 74 65 64 20 66 6f 72 20 72 6f 77  executed for row
8aa0: 73 20 66 6f 72 20 77 68 69 63 68 20 74 68 65 20  s for which the 
8ab0: 57 48 45 4e 0a 63 6c 61 75 73 65 20 69 73 20 74  WHEN.clause is t
8ac0: 72 75 65 2e 20 5e 49 66 20 6e 6f 20 57 48 45 4e  rue. ^If no WHEN
8ad0: 20 63 6c 61 75 73 65 20 69 73 20 73 75 70 70 6c   clause is suppl
8ae0: 69 65 64 2c 20 74 68 65 20 53 51 4c 20 73 74 61  ied, the SQL sta
8af0: 74 65 6d 65 6e 74 73 0a 61 72 65 20 65 78 65 63  tements.are exec
8b00: 75 74 65 64 20 66 6f 72 20 61 6c 6c 20 72 6f 77  uted for all row
8b10: 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20  s.</p>..<p>^The 
8b20: 42 45 46 4f 52 45 20 6f 72 20 41 46 54 45 52 20  BEFORE or AFTER 
8b30: 6b 65 79 77 6f 72 64 20 64 65 74 65 72 6d 69 6e  keyword determin
8b40: 65 73 20 77 68 65 6e 20 74 68 65 20 74 72 69 67  es when the trig
8b50: 67 65 72 20 61 63 74 69 6f 6e 73 0a 77 69 6c 6c  ger actions.will
8b60: 20 62 65 20 65 78 65 63 75 74 65 64 20 72 65 6c   be executed rel
8b70: 61 74 69 76 65 20 74 6f 20 74 68 65 20 69 6e 73  ative to the ins
8b80: 65 72 74 69 6f 6e 2c 20 6d 6f 64 69 66 69 63 61  ertion, modifica
8b90: 74 69 6f 6e 20 6f 72 20 72 65 6d 6f 76 61 6c 20  tion or removal 
8ba0: 6f 66 20 74 68 65 0a 61 73 73 6f 63 69 61 74 65  of the.associate
8bb0: 64 20 72 6f 77 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e  d row.</p>..<p>^
8bc0: 41 6e 20 5b 4f 4e 20 43 4f 4e 46 4c 49 43 54 5d  An [ON CONFLICT]
8bd0: 20 63 6c 61 75 73 65 20 6d 61 79 20 62 65 20 73   clause may be s
8be0: 70 65 63 69 66 69 65 64 20 61 73 20 70 61 72 74  pecified as part
8bf0: 20 6f 66 20 61 6e 20 5b 55 50 44 41 54 45 5d 20   of an [UPDATE] 
8c00: 6f 72 20 5b 49 4e 53 45 52 54 5d 0a 61 63 74 69  or [INSERT].acti
8c10: 6f 6e 20 77 69 74 68 69 6e 20 74 68 65 20 62 6f  on within the bo
8c20: 64 79 20 6f 66 20 74 68 65 20 74 72 69 67 67 65  dy of the trigge
8c30: 72 2e 0a 5e 48 6f 77 65 76 65 72 20 69 66 20 61  r..^However if a
8c40: 6e 20 5b 4f 4e 20 43 4f 4e 46 4c 49 43 54 5d 20  n [ON CONFLICT] 
8c50: 63 6c 61 75 73 65 20 69 73 20 73 70 65 63 69 66  clause is specif
8c60: 69 65 64 20 61 73 20 70 61 72 74 20 6f 66 20 0a  ied as part of .
8c70: 74 68 65 20 73 74 61 74 65 6d 65 6e 74 20 63 61  the statement ca
8c80: 75 73 69 6e 67 20 74 68 65 20 74 72 69 67 67 65  using the trigge
8c90: 72 20 74 6f 20 66 69 72 65 2c 20 74 68 65 6e 20  r to fire, then 
8ca0: 63 6f 6e 66 6c 69 63 74 20 68 61 6e 64 6c 69 6e  conflict handlin
8cb0: 67 0a 70 6f 6c 69 63 79 20 6f 66 20 74 68 65 20  g.policy of the 
8cc0: 6f 75 74 65 72 20 73 74 61 74 65 6d 65 6e 74 20  outer statement 
8cd0: 69 73 20 75 73 65 64 20 69 6e 73 74 65 61 64 2e  is used instead.
8ce0: 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 72 69 67 67 65  </p>..<p>^Trigge
8cf0: 72 73 20 61 72 65 20 61 75 74 6f 6d 61 74 69 63  rs are automatic
8d00: 61 6c 6c 79 20 5b 44 52 4f 50 20 54 52 49 47 47  ally [DROP TRIGG
8d10: 45 52 20 7c 20 64 72 6f 70 70 65 64 5d 0a 77 68  ER | dropped].wh
8d20: 65 6e 20 74 68 65 20 74 61 62 6c 65 20 74 68 61  en the table tha
8d30: 74 20 74 68 65 79 20 61 72 65 20 0a 61 73 73 6f  t they are .asso
8d40: 63 69 61 74 65 64 20 77 69 74 68 20 28 74 68 65  ciated with (the
8d50: 20 3c 69 3e 74 61 62 6c 65 2d 6e 61 6d 65 3c 2f   <i>table-name</
8d60: 69 3e 20 74 61 62 6c 65 29 20 69 73 20 0a 5b 44  i> table) is .[D
8d70: 52 4f 50 20 54 41 42 4c 45 20 7c 20 64 72 6f 70  ROP TABLE | drop
8d80: 70 65 64 5d 2e 20 20 5e 48 6f 77 65 76 65 72 20  ped].  ^However 
8d90: 69 66 20 74 68 65 20 74 72 69 67 67 65 72 20 61  if the trigger a
8da0: 63 74 69 6f 6e 73 20 72 65 66 65 72 65 6e 63 65  ctions reference
8db0: 0a 6f 74 68 65 72 20 74 61 62 6c 65 73 2c 20 74  .other tables, t
8dc0: 68 65 20 74 72 69 67 67 65 72 20 69 73 20 6e 6f  he trigger is no
8dd0: 74 20 64 72 6f 70 70 65 64 20 6f 72 20 6d 6f 64  t dropped or mod
8de0: 69 66 69 65 64 20 69 66 20 74 68 6f 73 65 20 6f  ified if those o
8df0: 74 68 65 72 0a 74 61 62 6c 65 73 20 61 72 65 20  ther.tables are 
8e00: 5b 44 52 4f 50 20 54 41 42 4c 45 20 7c 20 64 72  [DROP TABLE | dr
8e10: 6f 70 70 65 64 5d 20 6f 72 20 5b 41 4c 54 45 52  opped] or [ALTER
8e20: 20 54 41 42 4c 45 20 7c 20 6d 6f 64 69 66 69 65   TABLE | modifie
8e30: 64 5d 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 72 69  d].</p>..<p>^Tri
8e40: 67 67 65 72 73 20 61 72 65 20 72 65 6d 6f 76 65  ggers are remove
8e50: 64 20 75 73 69 6e 67 20 74 68 65 20 5b 44 52 4f  d using the [DRO
8e60: 50 20 54 52 49 47 47 45 52 5d 20 73 74 61 74 65  P TRIGGER] state
8e70: 6d 65 6e 74 2e 3c 2f 70 3e 0a 0a 3c 68 33 3e 53  ment.</p>..<h3>S
8e80: 79 6e 74 61 78 20 52 65 73 74 72 69 63 74 69 6f  yntax Restrictio
8e90: 6e 73 20 4f 6e 20 55 50 44 41 54 45 2c 20 44 45  ns On UPDATE, DE
8ea0: 4c 45 54 45 2c 20 61 6e 64 20 49 4e 53 45 52 54  LETE, and INSERT
8eb0: 20 53 74 61 74 65 6d 65 6e 74 73 20 57 69 74 68   Statements With
8ec0: 69 6e 0a 20 20 20 20 54 72 69 67 67 65 72 73 3c  in.    Triggers<
8ed0: 2f 68 33 3e 0a 0a 3c 70 3e 5e 54 68 65 20 5b 55  /h3>..<p>^The [U
8ee0: 50 44 41 54 45 5d 2c 20 5b 44 45 4c 45 54 45 5d  PDATE], [DELETE]
8ef0: 2c 20 61 6e 64 20 5b 49 4e 53 45 52 54 5d 0a 73  , and [INSERT].s
8f00: 74 61 74 65 6d 65 6e 74 73 20 77 69 74 68 69 6e  tatements within
8f10: 20 74 72 69 67 67 65 72 73 20 64 6f 20 6e 6f 74   triggers do not
8f20: 20 73 75 70 70 6f 72 74 0a 74 68 65 20 66 75 6c   support.the ful
8f30: 6c 20 73 79 6e 74 61 78 20 66 6f 72 20 5b 55 50  l syntax for [UP
8f40: 44 41 54 45 5d 2c 20 5b 44 45 4c 45 54 45 5d 2c  DATE], [DELETE],
8f50: 20 61 6e 64 20 5b 49 4e 53 45 52 54 5d 20 73 74   and [INSERT] st
8f60: 61 74 65 6d 65 6e 74 73 2e 20 20 54 68 65 20 66  atements.  The f
8f70: 6f 6c 6c 6f 77 69 6e 67 0a 72 65 73 74 72 69 63  ollowing.restric
8f80: 74 69 6f 6e 73 20 61 70 70 6c 79 3a 3c 2f 70 3e  tions apply:</p>
8f90: 0a 0a 3c 75 6c 3e 0a 3c 6c 69 3e 3c 70 3e 0a 20  ..<ul>.<li><p>. 
8fa0: 20 5e 28 54 68 65 20 6e 61 6d 65 20 6f 66 20 74   ^(The name of t
8fb0: 68 65 20 74 61 62 6c 65 20 74 6f 20 62 65 20 6d  he table to be m
8fc0: 6f 64 69 66 69 65 64 20 69 6e 20 61 6e 20 5b 55  odified in an [U
8fd0: 50 44 41 54 45 5d 2c 20 5b 44 45 4c 45 54 45 5d  PDATE], [DELETE]
8fe0: 2c 20 6f 72 20 5b 49 4e 53 45 52 54 5d 0a 20 20  , or [INSERT].  
8ff0: 73 74 61 74 65 6d 65 6e 74 20 6d 75 73 74 20 62  statement must b
9000: 65 20 61 6e 20 75 6e 71 75 61 6c 69 66 69 65 64  e an unqualified
9010: 20 74 61 62 6c 65 20 6e 61 6d 65 2e 20 20 49 6e   table name.  In
9020: 20 6f 74 68 65 72 20 77 6f 72 64 73 2c 20 6f 6e   other words, on
9030: 65 20 6d 75 73 74 0a 20 20 75 73 65 20 6a 75 73  e must.  use jus
9040: 74 20 22 3c 69 3e 74 61 62 6c 65 6e 61 6d 65 3c  t "<i>tablename<
9050: 2f 69 3e 22 20 6e 6f 74 20 22 3c 69 3e 64 61 74  /i>" not "<i>dat
9060: 61 62 61 73 65 3c 2f 69 3e 3c 62 3e 2e 3c 2f 62  abase</i><b>.</b
9070: 3e 3c 69 3e 74 61 62 6c 65 6e 61 6d 65 3c 2f 69  ><i>tablename</i
9080: 3e 22 0a 20 20 77 68 65 6e 20 73 70 65 63 69 66  >".  when specif
9090: 79 69 6e 67 20 74 68 65 20 74 61 62 6c 65 2e 29  ying the table.)
90a0: 5e 20 20 5e 54 68 65 20 74 61 62 6c 65 20 74 6f  ^  ^The table to
90b0: 20 62 65 20 6d 6f 64 69 66 69 65 64 20 6d 75 73   be modified mus
90c0: 74 20 65 78 69 73 74 20 69 6e 20 74 68 65 0a 20  t exist in the. 
90d0: 20 73 61 6d 65 20 64 61 74 61 62 61 73 65 20 61   same database a
90e0: 73 20 74 68 65 20 74 61 62 6c 65 20 6f 72 20 76  s the table or v
90f0: 69 65 77 20 74 6f 20 77 68 69 63 68 20 74 68 65  iew to which the
9100: 20 74 72 69 67 67 65 72 20 69 73 20 61 74 74 61   trigger is atta
9110: 63 68 65 64 2e 0a 20 20 3c 2f 70 3e 3c 2f 6c 69  ched..  </p></li
9120: 3e 0a 0a 3c 6c 69 3e 3c 70 3e 0a 20 20 5e 54 68  >..<li><p>.  ^Th
9130: 65 20 22 49 4e 53 45 52 54 20 49 4e 54 4f 20 3c  e "INSERT INTO <
9140: 69 3e 74 61 62 6c 65 3c 2f 69 3e 20 44 45 46 41  i>table</i> DEFA
9150: 55 4c 54 20 56 41 4c 55 45 53 22 20 66 6f 72 6d  ULT VALUES" form
9160: 20 6f 66 20 74 68 65 20 5b 49 4e 53 45 52 54 5d   of the [INSERT]
9170: 20 73 74 61 74 65 6d 65 6e 74 0a 20 20 69 73 20   statement.  is 
9180: 6e 6f 74 20 73 75 70 70 6f 72 74 65 64 2e 0a 20  not supported.. 
9190: 20 3c 2f 70 3e 3c 2f 6c 69 3e 0a 0a 3c 6c 69 3e   </p></li>..<li>
91a0: 3c 70 3e 0a 20 20 5e 54 68 65 20 49 4e 44 45 58  <p>.  ^The INDEX
91b0: 45 44 20 42 59 20 61 6e 64 20 4e 4f 54 20 49 4e  ED BY and NOT IN
91c0: 44 45 58 45 44 20 63 6c 61 75 73 65 73 20 61 72  DEXED clauses ar
91d0: 65 20 6e 6f 74 20 73 75 70 70 6f 72 74 65 64 20  e not supported 
91e0: 66 6f 72 20 5b 55 50 44 41 54 45 5d 20 61 6e 64  for [UPDATE] and
91f0: 0a 20 20 5b 44 45 4c 45 54 45 5d 20 73 74 61 74  .  [DELETE] stat
9200: 65 6d 65 6e 74 73 2e 0a 20 20 3c 2f 70 3e 3c 2f  ements..  </p></
9210: 6c 69 3e 0a 0a 3c 6c 69 3e 3c 70 3e 0a 20 20 5e  li>..<li><p>.  ^
9220: 28 54 68 65 20 4f 52 44 45 52 20 42 59 20 61 6e  (The ORDER BY an
9230: 64 20 4c 49 4d 49 54 20 63 6c 61 75 73 65 73 20  d LIMIT clauses 
9240: 6f 6e 20 5b 55 50 44 41 54 45 5d 20 61 6e 64 20  on [UPDATE] and 
9250: 5b 44 45 4c 45 54 45 5d 20 73 74 61 74 65 6d 65  [DELETE] stateme
9260: 6e 74 73 20 61 72 65 20 6e 6f 74 0a 20 20 73 75  nts are not.  su
9270: 70 70 6f 72 74 65 64 2e 20 20 4f 52 44 45 52 20  pported.  ORDER 
9280: 42 59 20 61 6e 64 20 4c 49 4d 49 54 20 61 72 65  BY and LIMIT are
9290: 20 6e 6f 74 20 6e 6f 72 6d 61 6c 6c 79 20 73 75   not normally su
92a0: 70 70 6f 72 74 65 64 20 66 6f 72 20 5b 55 50 44  pported for [UPD
92b0: 41 54 45 5d 20 6f 72 0a 20 20 5b 44 45 4c 45 54  ATE] or.  [DELET
92c0: 45 5d 20 69 6e 20 61 6e 79 20 63 6f 6e 74 65 78  E] in any contex
92d0: 74 20 62 75 74 20 63 61 6e 20 62 65 20 65 6e 61  t but can be ena
92e0: 62 6c 65 64 20 66 6f 72 20 74 6f 70 2d 6c 65 76  bled for top-lev
92f0: 65 6c 20 73 74 61 74 65 6d 65 6e 74 73 0a 20 20  el statements.  
9300: 75 73 69 6e 67 20 74 68 65 20 5b 53 51 4c 49 54  using the [SQLIT
9310: 45 5f 45 4e 41 42 4c 45 5f 55 50 44 41 54 45 5f  E_ENABLE_UPDATE_
9320: 44 45 4c 45 54 45 5f 4c 49 4d 49 54 5d 20 63 6f  DELETE_LIMIT] co
9330: 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
9340: 6e 2e 20 20 48 6f 77 65 76 65 72 2c 0a 20 20 74  n.  However,.  t
9350: 68 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  hat compile-time
9360: 20 6f 70 74 69 6f 6e 20 6f 6e 6c 79 20 61 70 70   option only app
9370: 6c 69 65 73 20 74 6f 20 74 6f 70 2d 6c 65 76 65  lies to top-leve
9380: 6c 20 5b 55 50 44 41 54 45 5d 20 61 6e 64 20 5b  l [UPDATE] and [
9390: 44 45 4c 45 54 45 5d 0a 20 20 73 74 61 74 65 6d  DELETE].  statem
93a0: 65 6e 74 73 2c 20 6e 6f 74 20 5b 55 50 44 41 54  ents, not [UPDAT
93b0: 45 5d 20 61 6e 64 20 5b 44 45 4c 45 54 45 5d 20  E] and [DELETE] 
93c0: 73 74 61 74 65 6d 65 6e 74 73 20 77 69 74 68 69  statements withi
93d0: 6e 20 74 72 69 67 67 65 72 73 2e 29 5e 0a 20 20  n triggers.)^.  
93e0: 3c 2f 70 3e 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e 0a  </p></li>.</ul>.
93f0: 0a 3c 74 63 6c 3e 68 64 5f 66 72 61 67 6d 65 6e  .<tcl>hd_fragmen
9400: 74 20 69 6e 73 74 65 61 64 5f 6f 66 5f 74 72 69  t instead_of_tri
9410: 67 67 65 72 20 7b 49 4e 53 54 45 41 44 20 4f 46  gger {INSTEAD OF
9420: 7d 20 7b 49 4e 53 54 45 41 44 20 4f 46 20 74 72  } {INSTEAD OF tr
9430: 69 67 67 65 72 7d 3c 2f 74 63 6c 3e 0a 3c 68 33  igger}</tcl>.<h3
9440: 3e 49 4e 53 54 45 41 44 20 4f 46 20 74 72 69 67  >INSTEAD OF trig
9450: 67 65 72 3c 2f 68 33 3e 0a 0a 3c 70 3e 5e 54 72  ger</h3>..<p>^Tr
9460: 69 67 67 65 72 73 20 6d 61 79 20 62 65 20 63 72  iggers may be cr
9470: 65 61 74 65 64 20 6f 6e 20 5b 76 69 65 77 73 5d  eated on [views]
9480: 2c 20 61 73 20 77 65 6c 6c 20 61 73 20 6f 72 64  , as well as ord
9490: 69 6e 61 72 79 20 74 61 62 6c 65 73 2c 20 62 79  inary tables, by
94a0: 0a 73 70 65 63 69 66 79 69 6e 67 20 49 4e 53 54  .specifying INST
94b0: 45 41 44 20 4f 46 20 69 6e 20 74 68 65 20 43 52  EAD OF in the CR
94c0: 45 41 54 45 20 54 52 49 47 47 45 52 20 73 74 61  EATE TRIGGER sta
94d0: 74 65 6d 65 6e 74 2e 20 0a 5e 49 66 20 6f 6e 65  tement. .^If one
94e0: 20 6f 72 20 6d 6f 72 65 20 4f 4e 20 49 4e 53 45   or more ON INSE
94f0: 52 54 2c 20 4f 4e 20 44 45 4c 45 54 45 0a 6f 72  RT, ON DELETE.or
9500: 20 4f 4e 20 55 50 44 41 54 45 20 74 72 69 67 67   ON UPDATE trigg
9510: 65 72 73 20 61 72 65 20 64 65 66 69 6e 65 64 20  ers are defined 
9520: 6f 6e 20 61 20 76 69 65 77 2c 20 74 68 65 6e 20  on a view, then 
9530: 69 74 20 69 73 20 6e 6f 74 20 61 6e 0a 65 72 72  it is not an.err
9540: 6f 72 20 74 6f 20 65 78 65 63 75 74 65 20 61 6e  or to execute an
9550: 20 49 4e 53 45 52 54 2c 20 44 45 4c 45 54 45 20   INSERT, DELETE 
9560: 6f 72 20 55 50 44 41 54 45 20 73 74 61 74 65 6d  or UPDATE statem
9570: 65 6e 74 20 6f 6e 20 74 68 65 20 76 69 65 77 2c  ent on the view,
9580: 20 0a 72 65 73 70 65 63 74 69 76 65 6c 79 2e 20   .respectively. 
9590: 20 5e 49 6e 73 74 65 61 64 2c 0a 65 78 65 63 75   ^Instead,.execu
95a0: 74 69 6e 67 20 61 6e 20 49 4e 53 45 52 54 2c 20  ting an INSERT, 
95b0: 44 45 4c 45 54 45 20 6f 72 20 55 50 44 41 54 45  DELETE or UPDATE
95c0: 20 6f 6e 20 74 68 65 20 76 69 65 77 20 63 61 75   on the view cau
95d0: 73 65 73 20 74 68 65 20 61 73 73 6f 63 69 61 74  ses the associat
95e0: 65 64 0a 74 72 69 67 67 65 72 73 20 74 6f 20 66  ed.triggers to f
95f0: 69 72 65 2e 20 5e 54 68 65 20 72 65 61 6c 20 74  ire. ^The real t
9600: 61 62 6c 65 73 20 75 6e 64 65 72 6c 79 69 6e 67  ables underlying
9610: 20 74 68 65 20 76 69 65 77 20 61 72 65 20 6e 6f   the view are no
9620: 74 20 6d 6f 64 69 66 69 65 64 0a 28 65 78 63 65  t modified.(exce
9630: 70 74 20 70 6f 73 73 69 62 6c 79 20 65 78 70 6c  pt possibly expl
9640: 69 63 69 74 6c 79 2c 20 62 79 20 61 20 74 72 69  icitly, by a tri
9650: 67 67 65 72 20 70 72 6f 67 72 61 6d 29 2e 3c 2f  gger program).</
9660: 70 3e 0a 0a 3c 70 3e 5e 4e 6f 74 65 20 74 68 61  p>..<p>^Note tha
9670: 74 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 63  t the [sqlite3_c
9680: 68 61 6e 67 65 73 28 29 5d 20 61 6e 64 20 5b 73  hanges()] and [s
9690: 71 6c 69 74 65 33 5f 74 6f 74 61 6c 5f 63 68 61  qlite3_total_cha
96a0: 6e 67 65 73 28 29 5d 20 69 6e 74 65 72 66 61 63  nges()] interfac
96b0: 65 73 0a 64 6f 20 6e 6f 74 20 63 6f 75 6e 74 20  es.do not count 
96c0: 49 4e 53 54 45 41 44 20 4f 46 20 74 72 69 67 67  INSTEAD OF trigg
96d0: 65 72 20 66 69 72 69 6e 67 73 2c 20 62 75 74 20  er firings, but 
96e0: 74 68 65 0a 5b 63 6f 75 6e 74 5f 63 68 61 6e 67  the.[count_chang
96f0: 65 73 20 70 72 61 67 6d 61 5d 20 64 6f 65 73 20  es pragma] does 
9700: 63 6f 75 6e 74 20 49 4e 53 54 45 41 44 20 4f 46  count INSTEAD OF
9710: 20 74 72 69 67 67 65 72 20 66 69 72 69 6e 67 2e   trigger firing.
9720: 3c 2f 70 3e 0a 0a 3c 68 33 3e 45 78 61 6d 70 6c  </p>..<h3>Exampl
9730: 65 73 3c 2f 68 33 3e 0a 0a 3c 70 3e 5e 28 41 73  es</h3>..<p>^(As
9740: 73 75 6d 69 6e 67 20 74 68 61 74 20 63 75 73 74  suming that cust
9750: 6f 6d 65 72 20 72 65 63 6f 72 64 73 20 61 72 65  omer records are
9760: 20 73 74 6f 72 65 64 20 69 6e 20 74 68 65 20 22   stored in the "
9770: 63 75 73 74 6f 6d 65 72 73 22 20 74 61 62 6c 65  customers" table
9780: 2c 20 61 6e 64 0a 74 68 61 74 20 6f 72 64 65 72  , and.that order
9790: 20 72 65 63 6f 72 64 73 20 61 72 65 20 73 74 6f   records are sto
97a0: 72 65 64 20 69 6e 20 74 68 65 20 22 6f 72 64 65  red in the "orde
97b0: 72 73 22 20 74 61 62 6c 65 2c 20 74 68 65 20 66  rs" table, the f
97c0: 6f 6c 6c 6f 77 69 6e 67 20 74 72 69 67 67 65 72  ollowing trigger
97d0: 0a 65 6e 73 75 72 65 73 20 74 68 61 74 20 61 6c  .ensures that al
97e0: 6c 20 61 73 73 6f 63 69 61 74 65 64 20 6f 72 64  l associated ord
97f0: 65 72 73 20 61 72 65 20 72 65 64 69 72 65 63 74  ers are redirect
9800: 65 64 20 77 68 65 6e 20 61 20 63 75 73 74 6f 6d  ed when a custom
9810: 65 72 20 63 68 61 6e 67 65 73 0a 68 69 73 20 6f  er changes.his o
9820: 72 20 68 65 72 20 61 64 64 72 65 73 73 3a 3c 2f  r her address:</
9830: 70 3e 0a 0a 3c 74 63 6c 3e 45 78 61 6d 70 6c 65  p>..<tcl>Example
9840: 20 7b 0a 43 52 45 41 54 45 20 54 52 49 47 47 45   {.CREATE TRIGGE
9850: 52 20 75 70 64 61 74 65 5f 63 75 73 74 6f 6d 65  R update_custome
9860: 72 5f 61 64 64 72 65 73 73 20 55 50 44 41 54 45  r_address UPDATE
9870: 20 4f 46 20 61 64 64 72 65 73 73 20 4f 4e 20 63   OF address ON c
9880: 75 73 74 6f 6d 65 72 73 20 0a 20 20 42 45 47 49  ustomers .  BEGI
9890: 4e 0a 20 20 20 20 55 50 44 41 54 45 20 6f 72 64  N.    UPDATE ord
98a0: 65 72 73 20 53 45 54 20 61 64 64 72 65 73 73 20  ers SET address 
98b0: 3d 20 6e 65 77 2e 61 64 64 72 65 73 73 20 57 48  = new.address WH
98c0: 45 52 45 20 63 75 73 74 6f 6d 65 72 5f 6e 61 6d  ERE customer_nam
98d0: 65 20 3d 20 6f 6c 64 2e 6e 61 6d 65 3b 0a 20 20  e = old.name;.  
98e0: 45 4e 44 3b 0a 7d 3c 2f 74 63 6c 3e 0a 0a 3c 70  END;.}</tcl>..<p
98f0: 3e 57 69 74 68 20 74 68 69 73 20 74 72 69 67 67  >With this trigg
9900: 65 72 20 69 6e 73 74 61 6c 6c 65 64 2c 20 65 78  er installed, ex
9910: 65 63 75 74 69 6e 67 20 74 68 65 20 73 74 61 74  ecuting the stat
9920: 65 6d 65 6e 74 3a 3c 2f 70 3e 0a 0a 3c 74 63 6c  ement:</p>..<tcl
9930: 3e 45 78 61 6d 70 6c 65 20 7b 0a 55 50 44 41 54  >Example {.UPDAT
9940: 45 20 63 75 73 74 6f 6d 65 72 73 20 53 45 54 20  E customers SET 
9950: 61 64 64 72 65 73 73 20 3d 20 27 31 20 4d 61 69  address = '1 Mai
9960: 6e 20 53 74 2e 27 20 57 48 45 52 45 20 6e 61 6d  n St.' WHERE nam
9970: 65 20 3d 20 27 4a 61 63 6b 20 4a 6f 6e 65 73 27  e = 'Jack Jones'
9980: 3b 0a 7d 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 63 61  ;.}</tcl>..<p>ca
9990: 75 73 65 73 20 74 68 65 20 66 6f 6c 6c 6f 77 69  uses the followi
99a0: 6e 67 20 74 6f 20 62 65 20 61 75 74 6f 6d 61 74  ng to be automat
99b0: 69 63 61 6c 6c 79 20 65 78 65 63 75 74 65 64 3a  ically executed:
99c0: 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 45 78 61 6d 70  </p>..<tcl>Examp
99d0: 6c 65 20 7b 0a 55 50 44 41 54 45 20 6f 72 64 65  le {.UPDATE orde
99e0: 72 73 20 53 45 54 20 61 64 64 72 65 73 73 20 3d  rs SET address =
99f0: 20 27 31 20 4d 61 69 6e 20 53 74 2e 27 20 57 48   '1 Main St.' WH
9a00: 45 52 45 20 63 75 73 74 6f 6d 65 72 5f 6e 61 6d  ERE customer_nam
9a10: 65 20 3d 20 27 4a 61 63 6b 20 4a 6f 6e 65 73 27  e = 'Jack Jones'
9a20: 3b 0a 7d 3c 2f 74 63 6c 3e 29 5e 0a 0a 3c 74 63  ;.}</tcl>)^..<tc
9a30: 6c 3e 68 64 5f 66 72 61 67 6d 65 6e 74 20 75 6e  l>hd_fragment un
9a40: 64 65 66 5f 62 65 66 6f 72 65 20 7b 75 6e 64 65  def_before {unde
9a50: 66 69 6e 65 64 20 42 45 46 4f 52 45 20 74 72 69  fined BEFORE tri
9a60: 67 67 65 72 20 62 65 68 61 76 69 6f 72 7d 3c 2f  gger behavior}</
9a70: 74 63 6c 3e 0a 3c 68 33 3e 43 61 75 74 69 6f 6e  tcl>.<h3>Caution
9a80: 73 20 4f 6e 20 54 68 65 20 55 73 65 20 4f 66 20  s On The Use Of 
9a90: 42 45 46 4f 52 45 20 74 72 69 67 67 65 72 73 3c  BEFORE triggers<
9aa0: 2f 68 33 3e 0a 0a 3c 70 3e 49 66 20 61 20 42 45  /h3>..<p>If a BE
9ab0: 46 4f 52 45 20 55 50 44 41 54 45 20 6f 72 20 42  FORE UPDATE or B
9ac0: 45 46 4f 52 45 20 44 45 4c 45 54 45 20 74 72 69  EFORE DELETE tri
9ad0: 67 67 65 72 20 6d 6f 64 69 66 69 65 73 20 6f 72  gger modifies or
9ae0: 20 64 65 6c 65 74 65 73 20 61 20 72 6f 77 0a 74   deletes a row.t
9af0: 68 61 74 20 77 61 73 20 74 6f 20 68 61 76 65 20  hat was to have 
9b00: 62 65 65 6e 20 75 70 64 61 74 65 64 20 6f 72 20  been updated or 
9b10: 64 65 6c 65 74 65 64 2c 20 74 68 65 6e 20 74 68  deleted, then th
9b20: 65 20 72 65 73 75 6c 74 20 6f 66 20 74 68 65 20  e result of the 
9b30: 73 75 62 73 65 71 75 65 6e 74 0a 75 70 64 61 74  subsequent.updat
9b40: 65 20 6f 72 20 64 65 6c 65 74 65 20 6f 70 65 72  e or delete oper
9b50: 61 74 69 6f 6e 20 69 73 20 75 6e 64 65 66 69 6e  ation is undefin
9b60: 65 64 2e 20 20 46 75 72 74 68 65 72 6d 6f 72 65  ed.  Furthermore
9b70: 2c 20 69 66 20 61 20 42 45 46 4f 52 45 20 74 72  , if a BEFORE tr
9b80: 69 67 67 65 72 0a 6d 6f 64 69 66 69 65 73 20 6f  igger.modifies o
9b90: 72 20 64 65 6c 65 74 65 73 20 61 20 72 6f 77 2c  r deletes a row,
9ba0: 20 74 68 65 6e 20 69 74 20 69 73 20 75 6e 64 65   then it is unde
9bb0: 66 69 6e 65 64 20 77 68 65 74 68 65 72 20 6f 72  fined whether or
9bc0: 20 6e 6f 74 20 41 46 54 45 52 20 74 72 69 67 67   not AFTER trigg
9bd0: 65 72 73 0a 74 68 61 74 20 77 6f 75 6c 64 20 68  ers.that would h
9be0: 61 76 65 20 6f 74 68 65 72 77 69 73 65 20 72 75  ave otherwise ru
9bf0: 6e 20 6f 6e 20 74 68 6f 73 65 20 72 6f 77 73 20  n on those rows 
9c00: 77 69 6c 6c 20 69 6e 20 66 61 63 74 20 72 75 6e  will in fact run
9c10: 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 76  ..</p>..<p>The v
9c20: 61 6c 75 65 20 6f 66 20 4e 45 57 2e 72 6f 77 69  alue of NEW.rowi
9c30: 64 20 69 73 20 75 6e 64 65 66 69 6e 65 64 20 69  d is undefined i
9c40: 6e 20 61 20 42 45 46 4f 52 45 20 49 4e 53 45 52  n a BEFORE INSER
9c50: 54 20 74 72 69 67 67 65 72 20 69 6e 20 77 68 69  T trigger in whi
9c60: 63 68 0a 74 68 65 20 72 6f 77 69 64 20 69 73 20  ch.the rowid is 
9c70: 6e 6f 74 20 65 78 70 6c 69 63 69 74 6c 79 20 73  not explicitly s
9c80: 65 74 20 74 6f 20 61 6e 20 69 6e 74 65 67 65 72  et to an integer
9c90: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 42 65 63 61 75 73  .</p>..<p>Becaus
9ca0: 65 20 6f 66 20 74 68 65 20 62 65 68 61 76 69 6f  e of the behavio
9cb0: 72 73 20 64 65 73 63 72 69 62 65 64 20 61 62 6f  rs described abo
9cc0: 76 65 2c 20 70 72 6f 67 72 61 6d 6d 65 72 73 20  ve, programmers 
9cd0: 61 72 65 20 65 6e 63 6f 75 72 61 67 65 64 20 74  are encouraged t
9ce0: 6f 0a 70 72 65 66 65 72 20 41 46 54 45 52 20 74  o.prefer AFTER t
9cf0: 72 69 67 67 65 72 73 20 6f 76 65 72 20 42 45 46  riggers over BEF
9d00: 4f 52 45 20 74 72 69 67 67 65 72 73 2e 3c 2f 70  ORE triggers.</p
9d10: 3e 0a 0a 3c 68 33 3e 54 68 65 20 52 41 49 53 45  >..<h3>The RAISE
9d20: 28 29 20 66 75 6e 63 74 69 6f 6e 3c 2f 68 33 3e  () function</h3>
9d30: 0a 0a 3c 70 3e 5e 28 41 20 73 70 65 63 69 61 6c  ..<p>^(A special
9d40: 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 20 52 41   SQL function RA
9d50: 49 53 45 28 29 20 6d 61 79 20 62 65 20 75 73 65  ISE() may be use
9d60: 64 20 77 69 74 68 69 6e 20 61 20 74 72 69 67 67  d within a trigg
9d70: 65 72 2d 70 72 6f 67 72 61 6d 2c 29 5e 0a 77 69  er-program,)^.wi
9d80: 74 68 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  th the following
9d90: 20 73 79 6e 74 61 78 3c 2f 70 3e 20 0a 0a 3c 74   syntax</p> ..<t
9da0: 63 6c 3e 42 75 62 62 6c 65 44 69 61 67 72 61 6d  cl>BubbleDiagram
9db0: 20 72 61 69 73 65 2d 66 75 6e 63 74 69 6f 6e 3c   raise-function<
9dc0: 2f 74 63 6c 3e 0a 0a 3c 70 3e 5e 57 68 65 6e 20  /tcl>..<p>^When 
9dd0: 6f 6e 65 20 6f 66 20 74 68 65 20 66 69 72 73 74  one of the first
9de0: 20 74 68 72 65 65 20 66 6f 72 6d 73 20 69 73 20   three forms is 
9df0: 63 61 6c 6c 65 64 20 64 75 72 69 6e 67 20 74 72  called during tr
9e00: 69 67 67 65 72 2d 70 72 6f 67 72 61 6d 0a 65 78  igger-program.ex
9e10: 65 63 75 74 69 6f 6e 2c 20 74 68 65 20 73 70 65  ecution, the spe
9e20: 63 69 66 69 65 64 20 5b 4f 4e 20 43 4f 4e 46 4c  cified [ON CONFL
9e30: 49 43 54 5d 20 70 72 6f 63 65 73 73 69 6e 67 20  ICT] processing 
9e40: 69 73 20 70 65 72 66 6f 72 6d 65 64 0a 28 65 69  is performed.(ei
9e50: 74 68 65 72 20 41 42 4f 52 54 2c 20 46 41 49 4c  ther ABORT, FAIL
9e60: 20 6f 72 20 52 4f 4c 4c 42 41 43 4b 29 20 61 6e   or ROLLBACK) an
9e70: 64 20 74 68 65 20 63 75 72 72 65 6e 74 20 71 75  d the current qu
9e80: 65 72 79 20 74 65 72 6d 69 6e 61 74 65 73 2e 0a  ery terminates..
9e90: 41 6e 20 65 72 72 6f 72 20 63 6f 64 65 20 6f 66  An error code of
9ea0: 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41   [SQLITE_CONSTRA
9eb0: 49 4e 54 5d 20 69 73 20 72 65 74 75 72 6e 65 64  INT] is returned
9ec0: 20 74 6f 20 74 68 65 20 61 70 70 6c 69 63 61 74   to the applicat
9ed0: 69 6f 6e 2c 0a 61 6c 6f 6e 67 20 77 69 74 68 20  ion,.along with 
9ee0: 74 68 65 20 73 70 65 63 69 66 69 65 64 20 65 72  the specified er
9ef0: 72 6f 72 20 6d 65 73 73 61 67 65 2e 3c 2f 70 3e  ror message.</p>
9f00: 0a 0a 3c 70 3e 5e 57 68 65 6e 20 52 41 49 53 45  ..<p>^When RAISE
9f10: 28 49 47 4e 4f 52 45 29 20 69 73 20 63 61 6c 6c  (IGNORE) is call
9f20: 65 64 2c 20 74 68 65 20 72 65 6d 61 69 6e 64 65  ed, the remainde
9f30: 72 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74  r of the current
9f40: 20 74 72 69 67 67 65 72 20 70 72 6f 67 72 61 6d   trigger program
9f50: 2c 0a 74 68 65 20 73 74 61 74 65 6d 65 6e 74 20  ,.the statement 
9f60: 74 68 61 74 20 63 61 75 73 65 64 20 74 68 65 20  that caused the 
9f70: 74 72 69 67 67 65 72 20 70 72 6f 67 72 61 6d 20  trigger program 
9f80: 74 6f 20 65 78 65 63 75 74 65 20 61 6e 64 20 61  to execute and a
9f90: 6e 79 20 73 75 62 73 65 71 75 65 6e 74 0a 74 72  ny subsequent.tr
9fa0: 69 67 67 65 72 20 70 72 6f 67 72 61 6d 73 20 74  igger programs t
9fb0: 68 61 74 20 77 6f 75 6c 64 20 6f 66 20 62 65 65  hat would of bee
9fc0: 6e 20 65 78 65 63 75 74 65 64 20 61 72 65 20 61  n executed are a
9fd0: 62 61 6e 64 6f 6e 65 64 2e 20 5e 4e 6f 20 64 61  bandoned. ^No da
9fe0: 74 61 62 61 73 65 0a 63 68 61 6e 67 65 73 20 61  tabase.changes a
9ff0: 72 65 20 72 6f 6c 6c 65 64 20 62 61 63 6b 2e 20  re rolled back. 
a000: 20 5e 49 66 20 74 68 65 20 73 74 61 74 65 6d 65   ^If the stateme
a010: 6e 74 20 74 68 61 74 20 63 61 75 73 65 64 20 74  nt that caused t
a020: 68 65 20 74 72 69 67 67 65 72 20 70 72 6f 67 72  he trigger progr
a030: 61 6d 0a 74 6f 20 65 78 65 63 75 74 65 20 69 73  am.to execute is
a040: 20 69 74 73 65 6c 66 20 70 61 72 74 20 6f 66 20   itself part of 
a050: 61 20 74 72 69 67 67 65 72 20 70 72 6f 67 72 61  a trigger progra
a060: 6d 2c 20 74 68 65 6e 20 74 68 61 74 20 74 72 69  m, then that tri
a070: 67 67 65 72 20 70 72 6f 67 72 61 6d 0a 72 65 73  gger program.res
a080: 75 6d 65 73 20 65 78 65 63 75 74 69 6f 6e 20 61  umes execution a
a090: 74 20 74 68 65 20 62 65 67 69 6e 6e 69 6e 67 20  t the beginning 
a0a0: 6f 66 20 74 68 65 20 6e 65 78 74 20 73 74 65 70  of the next step
a0b0: 2e 0a 3c 2f 70 3e 0a 0a 0a 3c 74 63 6c 3e 0a 23  ..</p>...<tcl>.#
a0c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a0d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a0e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a0f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a100: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 53  ##############.S
a110: 65 63 74 69 6f 6e 20 7b 43 52 45 41 54 45 20 56  ection {CREATE V
a120: 49 45 57 7d 20 7b 63 72 65 61 74 65 76 69 65 77  IEW} {createview
a130: 7d 20 7b 7b 43 52 45 41 54 45 20 56 49 45 57 7d  } {{CREATE VIEW}
a140: 20 76 69 65 77 20 2a 76 69 65 77 73 7d 0a 0a 42   view *views}..B
a150: 75 62 62 6c 65 44 69 61 67 72 61 6d 20 63 72 65  ubbleDiagram cre
a160: 61 74 65 2d 76 69 65 77 2d 73 74 6d 74 20 31 0a  ate-view-stmt 1.
a170: 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 5e 54 68 65 20  </tcl>..<p>^The 
a180: 43 52 45 41 54 45 20 56 49 45 57 20 63 6f 6d 6d  CREATE VIEW comm
a190: 61 6e 64 20 61 73 73 69 67 6e 73 20 61 20 6e 61  and assigns a na
a1a0: 6d 65 20 74 6f 20 61 20 70 72 65 2d 70 61 63 6b  me to a pre-pack
a1b0: 61 67 65 64 20 0a 5b 53 45 4c 45 43 54 5d 20 73  aged .[SELECT] s
a1c0: 74 61 74 65 6d 65 6e 74 2e 20 0a 5e 4f 6e 63 65  tatement. .^Once
a1d0: 20 74 68 65 20 76 69 65 77 20 69 73 20 63 72 65   the view is cre
a1e0: 61 74 65 64 2c 20 69 74 20 63 61 6e 20 62 65 20  ated, it can be 
a1f0: 75 73 65 64 20 69 6e 20 74 68 65 20 46 52 4f 4d  used in the FROM
a200: 20 63 6c 61 75 73 65 0a 6f 66 20 61 6e 6f 74 68   clause.of anoth
a210: 65 72 20 5b 53 45 4c 45 43 54 5d 20 69 6e 20 70  er [SELECT] in p
a220: 6c 61 63 65 20 6f 66 20 61 20 74 61 62 6c 65 20  lace of a table 
a230: 6e 61 6d 65 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 5e  name..</p>..<p>^
a240: 49 66 20 74 68 65 20 22 54 45 4d 50 22 20 6f 72  If the "TEMP" or
a250: 20 22 54 45 4d 50 4f 52 41 52 59 22 20 6b 65 79   "TEMPORARY" key
a260: 77 6f 72 64 20 6f 63 63 75 72 73 20 69 6e 20 62  word occurs in b
a270: 65 74 77 65 65 6e 20 22 43 52 45 41 54 45 22 0a  etween "CREATE".
a280: 61 6e 64 20 22 56 49 45 57 22 20 74 68 65 6e 20  and "VIEW" then 
a290: 74 68 65 20 76 69 65 77 20 74 68 61 74 20 69 73  the view that is
a2a0: 20 63 72 65 61 74 65 64 20 69 73 20 6f 6e 6c 79   created is only
a2b0: 20 76 69 73 69 62 6c 65 20 74 6f 20 74 68 65 0a   visible to the.
a2c0: 70 72 6f 63 65 73 73 20 74 68 61 74 20 6f 70 65  process that ope
a2d0: 6e 65 64 20 74 68 65 20 64 61 74 61 62 61 73 65  ned the database
a2e0: 20 61 6e 64 20 69 73 20 61 75 74 6f 6d 61 74 69   and is automati
a2f0: 63 61 6c 6c 79 20 64 65 6c 65 74 65 64 20 77 68  cally deleted wh
a300: 65 6e 0a 74 68 65 20 64 61 74 61 62 61 73 65 20  en.the database 
a310: 69 73 20 63 6c 6f 73 65 64 2e 3c 2f 70 3e 0a 0a  is closed.</p>..
a320: 3c 70 3e 20 5e 49 66 20 61 20 26 6c 74 3b 64 61  <p> ^If a &lt;da
a330: 74 61 62 61 73 65 2d 6e 61 6d 65 26 67 74 3b 20  tabase-name&gt; 
a340: 69 73 20 73 70 65 63 69 66 69 65 64 2c 20 74 68  is specified, th
a350: 65 6e 20 74 68 65 20 76 69 65 77 20 69 73 20 63  en the view is c
a360: 72 65 61 74 65 64 20 69 6e 20 0a 74 68 65 20 6e  reated in .the n
a370: 61 6d 65 64 20 64 61 74 61 62 61 73 65 2e 20 5e  amed database. ^
a380: 49 74 20 69 73 20 61 6e 20 65 72 72 6f 72 20 74  It is an error t
a390: 6f 20 73 70 65 63 69 66 79 20 62 6f 74 68 20 61  o specify both a
a3a0: 20 26 6c 74 3b 64 61 74 61 62 61 73 65 2d 6e 61   &lt;database-na
a3b0: 6d 65 26 67 74 3b 0a 61 6e 64 20 74 68 65 20 54  me&gt;.and the T
a3c0: 45 4d 50 20 6b 65 79 77 6f 72 64 20 6f 6e 20 61  EMP keyword on a
a3d0: 20 56 49 45 57 2c 20 75 6e 6c 65 73 73 20 74 68   VIEW, unless th
a3e0: 65 20 26 6c 74 3b 64 61 74 61 62 61 73 65 2d 6e  e &lt;database-n
a3f0: 61 6d 65 26 67 74 3b 20 69 73 20 22 74 65 6d 70  ame&gt; is "temp
a400: 22 2e 0a 5e 49 66 20 6e 6f 20 64 61 74 61 62 61  "..^If no databa
a410: 73 65 20 6e 61 6d 65 20 69 73 20 73 70 65 63 69  se name is speci
a420: 66 69 65 64 2c 20 61 6e 64 20 74 68 65 20 54 45  fied, and the TE
a430: 4d 50 20 6b 65 79 77 6f 72 64 20 69 73 20 6e 6f  MP keyword is no
a440: 74 20 70 72 65 73 65 6e 74 2c 0a 74 68 65 20 56  t present,.the V
a450: 49 45 57 20 69 73 20 63 72 65 61 74 65 64 20 69  IEW is created i
a460: 6e 20 74 68 65 20 6d 61 69 6e 20 64 61 74 61 62  n the main datab
a470: 61 73 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 59 6f  ase.</p>..<p>^Yo
a480: 75 20 63 61 6e 6e 6f 74 20 5b 44 45 4c 45 54 45  u cannot [DELETE
a490: 5d 2c 20 5b 49 4e 53 45 52 54 5d 2c 20 6f 72 20  ], [INSERT], or 
a4a0: 5b 55 50 44 41 54 45 5d 20 61 20 76 69 65 77 2e  [UPDATE] a view.
a4b0: 20 20 5e 56 69 65 77 73 20 61 72 65 20 72 65 61    ^Views are rea
a4c0: 64 2d 6f 6e 6c 79 20 0a 69 6e 20 53 51 4c 69 74  d-only .in SQLit
a4d0: 65 2e 20 20 5e 48 6f 77 65 76 65 72 2c 20 69 6e  e.  ^However, in
a4e0: 20 6d 61 6e 79 20 63 61 73 65 73 20 79 6f 75 20   many cases you 
a4f0: 63 61 6e 20 75 73 65 20 61 6e 0a 5b 49 4e 53 54  can use an.[INST
a500: 45 41 44 20 4f 46 20 74 72 69 67 67 65 72 5d 20  EAD OF trigger] 
a510: 6f 6e 20 74 68 65 20 76 69 65 77 20 74 6f 20 61  on the view to a
a520: 63 63 6f 6d 70 6c 69 73 68 20 0a 74 68 65 20 73  ccomplish .the s
a530: 61 6d 65 20 74 68 69 6e 67 2e 20 20 5e 56 69 65  ame thing.  ^Vie
a540: 77 73 20 61 72 65 20 72 65 6d 6f 76 65 64 20 0a  ws are removed .
a550: 77 69 74 68 20 74 68 65 20 5b 44 52 4f 50 20 56  with the [DROP V
a560: 49 45 57 5d 20 63 6f 6d 6d 61 6e 64 2e 3c 2f 70  IEW] command.</p
a570: 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23  >..<tcl>.#######
a580: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a590: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a5a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a5b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a5c0: 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20  #######.Section 
a5d0: 7b 43 52 45 41 54 45 20 56 49 52 54 55 41 4c 20  {CREATE VIRTUAL 
a5e0: 54 41 42 4c 45 7d 20 7b 63 72 65 61 74 65 76 74  TABLE} {createvt
a5f0: 61 62 7d 20 7b 7b 43 52 45 41 54 45 20 56 49 52  ab} {{CREATE VIR
a600: 54 55 41 4c 20 54 41 42 4c 45 7d 7d 0a 0a 42 75  TUAL TABLE}}..Bu
a610: 62 62 6c 65 44 69 61 67 72 61 6d 20 63 72 65 61  bbleDiagram crea
a620: 74 65 2d 76 69 72 74 75 61 6c 2d 74 61 62 6c 65  te-virtual-table
a630: 2d 73 74 6d 74 20 31 0a 3c 2f 74 63 6c 3e 0a 0a  -stmt 1.</tcl>..
a640: 3c 70 3e 41 20 5b 76 69 72 74 75 61 6c 20 74 61  <p>A [virtual ta
a650: 62 6c 65 5d 20 69 73 20 61 6e 20 69 6e 74 65 72  ble] is an inter
a660: 66 61 63 65 20 74 6f 20 61 6e 20 65 78 74 65 72  face to an exter
a670: 6e 61 6c 20 73 74 6f 72 61 67 65 20 6f 72 20 63  nal storage or c
a680: 6f 6d 70 75 74 61 74 69 6f 6e 0a 65 6e 67 69 6e  omputation.engin
a690: 65 20 74 68 61 74 20 61 70 70 65 61 72 73 20 74  e that appears t
a6a0: 6f 20 62 65 20 61 20 74 61 62 6c 65 20 62 75 74  o be a table but
a6b0: 20 64 6f 65 73 20 6e 6f 74 20 61 63 74 75 61 6c   does not actual
a6c0: 6c 79 20 73 74 6f 72 65 20 69 6e 66 6f 72 6d 61  ly store informa
a6d0: 74 69 6f 6e 0a 69 6e 20 74 68 65 20 64 61 74 61  tion.in the data
a6e0: 62 61 73 65 20 66 69 6c 65 2e 3c 2f 70 3e 0a 0a  base file.</p>..
a6f0: 3c 70 3e 49 6e 20 67 65 6e 65 72 61 6c 2c 20 79  <p>In general, y
a700: 6f 75 20 63 61 6e 20 64 6f 20 61 6e 79 74 68 69  ou can do anythi
a710: 6e 67 20 77 69 74 68 20 61 20 5b 76 69 72 74 75  ng with a [virtu
a720: 61 6c 20 74 61 62 6c 65 5d 20 74 68 61 74 20 63  al table] that c
a730: 61 6e 20 62 65 20 64 6f 6e 65 0a 77 69 74 68 20  an be done.with 
a740: 61 6e 20 6f 72 64 69 6e 61 72 79 20 74 61 62 6c  an ordinary tabl
a750: 65 2c 20 65 78 63 65 70 74 20 74 68 61 74 20 5e  e, except that ^
a760: 79 6f 75 20 63 61 6e 6e 6f 74 20 63 72 65 61 74  you cannot creat
a770: 65 20 69 6e 64 69 63 65 73 20 6f 72 20 74 72 69  e indices or tri
a780: 67 67 65 72 73 20 6f 6e 20 61 0a 76 69 72 74 75  ggers on a.virtu
a790: 61 6c 20 74 61 62 6c 65 2e 20 20 5e 53 6f 6d 65  al table.  ^Some
a7a0: 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 69   virtual table i
a7b0: 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 6d  mplementations m
a7c0: 69 67 68 74 20 69 6d 70 6f 73 65 20 61 64 64 69  ight impose addi
a7d0: 74 69 6f 6e 61 6c 0a 72 65 73 74 72 69 63 74 69  tional.restricti
a7e0: 6f 6e 73 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c  ons.  For exampl
a7f0: 65 2c 20 6d 61 6e 79 20 76 69 72 74 75 61 6c 20  e, many virtual 
a800: 74 61 62 6c 65 73 20 61 72 65 20 72 65 61 64 2d  tables are read-
a810: 6f 6e 6c 79 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68  only.</p>..<p>Th
a820: 65 20 26 6c 74 3b 6d 6f 64 75 6c 65 2d 6e 61 6d  e &lt;module-nam
a830: 65 26 67 74 3b 20 69 73 20 74 68 65 20 6e 61 6d  e&gt; is the nam
a840: 65 20 6f 66 20 61 6e 20 6f 62 6a 65 63 74 20 74  e of an object t
a850: 68 61 74 20 69 6d 70 6c 65 6d 65 6e 74 73 0a 74  hat implements.t
a860: 68 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  he virtual table
a870: 2e 20 20 5e 54 68 65 20 26 6c 74 3b 6d 6f 64 75  .  ^The &lt;modu
a880: 6c 65 2d 6e 61 6d 65 26 67 74 3b 20 6d 75 73 74  le-name&gt; must
a890: 20 62 65 20 72 65 67 69 73 74 65 72 65 64 20 77   be registered w
a8a0: 69 74 68 0a 74 68 65 20 53 51 4c 69 74 65 20 64  ith.the SQLite d
a8b0: 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
a8c0: 6f 6e 20 75 73 69 6e 67 0a 5b 73 71 6c 69 74 65  on using.[sqlite
a8d0: 33 5f 63 72 65 61 74 65 5f 6d 6f 64 75 6c 65 28  3_create_module(
a8e0: 29 5d 20 6f 72 20 5b 73 71 6c 69 74 65 33 5f 63  )] or [sqlite3_c
a8f0: 72 65 61 74 65 5f 6d 6f 64 75 6c 65 5f 76 32 28  reate_module_v2(
a900: 29 5d 0a 70 72 69 6f 72 20 74 6f 20 69 73 73 75  )].prior to issu
a910: 69 6e 67 20 74 68 65 20 43 52 45 41 54 45 20 56  ing the CREATE V
a920: 49 52 54 55 41 4c 20 54 41 42 4c 45 20 73 74 61  IRTUAL TABLE sta
a930: 74 65 6d 65 6e 74 2e 0a 5e 54 68 65 20 6d 6f 64  tement..^The mod
a940: 75 6c 65 20 74 61 6b 65 73 20 7a 65 72 6f 20 6f  ule takes zero o
a950: 72 20 6d 6f 72 65 20 63 6f 6d 6d 61 2d 73 65 70  r more comma-sep
a960: 61 72 61 74 65 64 20 61 72 67 75 6d 65 6e 74 73  arated arguments
a970: 2e 0a 5e 54 68 65 20 61 72 67 75 6d 65 6e 74 73  ..^The arguments
a980: 20 63 61 6e 20 62 65 20 6a 75 73 74 20 61 62 6f   can be just abo
a990: 75 74 20 61 6e 79 20 74 65 78 74 20 61 73 20 6c  ut any text as l
a9a0: 6f 6e 67 20 61 73 20 69 74 20 68 61 73 20 62 61  ong as it has ba
a9b0: 6c 61 6e 63 65 64 0a 70 61 72 65 6e 74 68 65 73  lanced.parenthes
a9c0: 65 73 2e 20 20 54 68 65 20 61 72 67 75 6d 65 6e  es.  The argumen
a9d0: 74 20 73 79 6e 74 61 78 20 69 73 20 73 75 66 66  t syntax is suff
a9e0: 69 63 69 65 6e 74 6c 79 20 67 65 6e 65 72 61 6c  iciently general
a9f0: 20 74 68 61 74 20 74 68 65 0a 61 72 67 75 6d 65   that the.argume
aa00: 6e 74 73 20 63 61 6e 20 62 65 20 6d 61 64 65 20  nts can be made 
aa10: 74 6f 20 61 70 70 65 61 72 20 61 73 20 5b 63 6f  to appear as [co
aa20: 6c 75 6d 6e 20 64 65 66 69 6e 69 74 69 6f 6e 73  lumn definitions
aa30: 5d 20 69 6e 20 61 20 74 72 61 64 69 74 69 6f 6e  ] in a tradition
aa40: 61 6c 0a 5b 43 52 45 41 54 45 20 54 41 42 4c 45  al.[CREATE TABLE
aa50: 5d 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 0a 5e  ] statement.  .^
aa60: 53 51 4c 69 74 65 20 70 61 73 73 65 73 20 74 68  SQLite passes th
aa70: 65 20 6d 6f 64 75 6c 65 20 61 72 67 75 6d 65 6e  e module argumen
aa80: 74 73 20 64 69 72 65 63 74 6c 79 0a 74 6f 20 74  ts directly.to t
aa90: 68 65 20 5b 78 43 72 65 61 74 65 5d 20 61 6e 64  he [xCreate] and
aaa0: 20 5b 78 43 6f 6e 6e 65 63 74 5d 20 6d 65 74 68   [xConnect] meth
aab0: 6f 64 73 20 6f 66 20 74 68 65 20 6d 6f 64 75 6c  ods of the modul
aac0: 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  e implementation
aad0: 0a 77 69 74 68 6f 75 74 20 61 6e 79 20 69 6e 74  .without any int
aae0: 65 72 70 72 65 74 61 74 69 6f 6e 2e 20 20 49 74  erpretation.  It
aaf0: 20 69 73 20 74 68 65 20 72 65 73 70 6f 6e 73 69   is the responsi
ab00: 62 69 6c 69 74 79 0a 6f 66 20 74 68 65 20 6d 6f  bility.of the mo
ab10: 64 75 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74  dule implementat
ab20: 69 6f 6e 20 74 6f 20 70 61 72 73 65 20 61 6e 64  ion to parse and
ab30: 20 69 6e 74 65 72 70 72 65 74 20 69 74 73 20 6f   interpret its o
ab40: 77 6e 20 61 72 67 75 6d 65 6e 74 73 2e 3c 2f 70  wn arguments.</p
ab50: 3e 0a 0a 3c 70 3e 5e 41 20 76 69 72 74 75 61 6c  >..<p>^A virtual
ab60: 20 74 61 62 6c 65 20 69 73 20 64 65 73 74 72 6f   table is destro
ab70: 79 65 64 20 75 73 69 6e 67 20 74 68 65 20 6f 72  yed using the or
ab80: 64 69 6e 61 72 79 0a 5b 44 52 4f 50 20 54 41 42  dinary.[DROP TAB
ab90: 4c 45 5d 20 73 74 61 74 65 6d 65 6e 74 2e 20 20  LE] statement.  
aba0: 54 68 65 72 65 20 69 73 20 6e 6f 0a 44 52 4f 50  There is no.DROP
abb0: 20 56 49 52 54 55 41 4c 20 54 41 42 4c 45 20 73   VIRTUAL TABLE s
abc0: 74 61 74 65 6d 65 6e 74 2e 3c 2f 70 3e 0a 0a 3c  tatement.</p>..<
abd0: 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23  tcl>.###########
abe0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
abf0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
ac00: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
ac10: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
ac20: 23 23 23 0a 53 65 63 74 69 6f 6e 20 44 45 4c 45  ###.Section DELE
ac30: 54 45 20 64 65 6c 65 74 65 20 7b 44 45 4c 45 54  TE delete {DELET
ac40: 45 20 2a 44 45 4c 45 54 45 73 7d 0a 0a 42 75 62  E *DELETEs}..Bub
ac50: 62 6c 65 44 69 61 67 72 61 6d 20 64 65 6c 65 74  bleDiagram delet
ac60: 65 2d 73 74 6d 74 20 31 0a 42 75 62 62 6c 65 44  e-stmt 1.BubbleD
ac70: 69 61 67 72 61 6d 20 71 75 61 6c 69 66 69 65 64  iagram qualified
ac80: 2d 74 61 62 6c 65 2d 6e 61 6d 65 0a 3c 2f 74 63  -table-name.</tc
ac90: 6c 3e 0a 0a 3c 70 3e 5e 54 68 65 20 44 45 4c 45  l>..<p>^The DELE
aca0: 54 45 20 63 6f 6d 6d 61 6e 64 20 69 73 20 75 73  TE command is us
acb0: 65 64 20 74 6f 20 72 65 6d 6f 76 65 20 72 65 63  ed to remove rec
acc0: 6f 72 64 73 20 66 72 6f 6d 20 61 20 74 61 62 6c  ords from a tabl
acd0: 65 2e 0a 5e 54 68 65 20 63 6f 6d 6d 61 6e 64 20  e..^The command 
ace0: 63 6f 6e 73 69 73 74 73 20 6f 66 20 74 68 65 20  consists of the 
acf0: 22 44 45 4c 45 54 45 20 46 52 4f 4d 22 20 6b 65  "DELETE FROM" ke
ad00: 79 77 6f 72 64 73 20 66 6f 6c 6c 6f 77 65 64 20  ywords followed 
ad10: 62 79 0a 74 68 65 20 6e 61 6d 65 20 6f 66 20 74  by.the name of t
ad20: 68 65 20 74 61 62 6c 65 20 66 72 6f 6d 20 77 68  he table from wh
ad30: 69 63 68 20 72 65 63 6f 72 64 73 20 61 72 65 20  ich records are 
ad40: 74 6f 20 62 65 20 72 65 6d 6f 76 65 64 2e 0a 3c  to be removed..<
ad50: 2f 70 3e 0a 0a 3c 70 3e 5e 57 69 74 68 6f 75 74  /p>..<p>^Without
ad60: 20 61 20 57 48 45 52 45 20 63 6c 61 75 73 65 2c   a WHERE clause,
ad70: 20 61 6c 6c 20 72 6f 77 73 20 6f 66 20 74 68 65   all rows of the
ad80: 20 74 61 62 6c 65 20 61 72 65 20 72 65 6d 6f 76   table are remov
ad90: 65 64 2e 0a 5e 49 66 20 61 20 57 48 45 52 45 20  ed..^If a WHERE 
ada0: 63 6c 61 75 73 65 20 69 73 20 73 75 70 70 6c 69  clause is suppli
adb0: 65 64 2c 20 74 68 65 6e 20 6f 6e 6c 79 20 74 68  ed, then only th
adc0: 6f 73 65 20 72 6f 77 73 20 74 68 61 74 20 6d 61  ose rows that ma
add0: 74 63 68 0a 74 68 65 20 65 78 70 72 65 73 73 69  tch.the expressi
ade0: 6f 6e 20 61 72 65 20 72 65 6d 6f 76 65 64 2e 3c  on are removed.<
adf0: 2f 70 3e 0a 0a 3c 68 33 3e 52 65 73 74 72 69 63  /p>..<h3>Restric
ae00: 74 69 6f 6e 73 20 6f 6e 20 44 45 4c 45 54 45 20  tions on DELETE 
ae10: 53 74 61 74 65 6d 65 6e 74 73 20 57 69 74 68 69  Statements Withi
ae20: 6e 20 43 52 45 41 54 45 20 54 52 49 47 47 45 52  n CREATE TRIGGER
ae30: 3c 2f 68 33 3e 0a 0a 3c 70 3e 5e 54 68 65 72 65  </h3>..<p>^There
ae40: 20 61 72 65 20 61 64 64 69 74 69 6f 6e 61 6c 20   are additional 
ae50: 73 79 6e 74 61 78 20 72 65 73 74 72 69 63 74 69  syntax restricti
ae60: 6f 6e 73 20 6f 6e 20 44 45 4c 45 54 45 20 73 74  ons on DELETE st
ae70: 61 74 65 6d 65 6e 74 73 20 74 68 61 74 0a 6f 63  atements that.oc
ae80: 63 75 72 20 77 69 74 68 69 6e 20 74 68 65 20 62  cur within the b
ae90: 6f 64 79 20 6f 66 20 61 20 5b 43 52 45 41 54 45  ody of a [CREATE
aea0: 20 54 52 49 47 47 45 52 5d 20 73 74 61 74 65 6d   TRIGGER] statem
aeb0: 65 6e 74 2e 20 20 5e 54 68 65 20 3c 69 3e 74 61  ent.  ^The <i>ta
aec0: 62 6c 65 2d 6e 61 6d 65 3c 2f 69 3e 0a 6d 75 73  ble-name</i>.mus
aed0: 74 20 62 65 20 75 6e 71 75 61 6c 69 66 69 65 64  t be unqualified
aee0: 2e 20 0a 5e 28 49 6e 20 6f 74 68 65 72 20 77 6f  . .^(In other wo
aef0: 72 64 73 2c 20 74 68 65 20 3c 69 3e 64 61 74 61  rds, the <i>data
af00: 62 61 73 65 2d 6e 61 6d 65 3c 2f 69 3e 3c 62 3e  base-name</i><b>
af10: 2e 3c 2f 62 3e 20 70 72 65 66 69 78 0a 6f 6e 20  .</b> prefix.on 
af20: 74 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 20 69  the table name i
af30: 73 20 6e 6f 74 20 61 6c 6c 6f 77 65 64 20 77 69  s not allowed wi
af40: 74 68 69 6e 20 74 72 69 67 67 65 72 73 2e 20 29  thin triggers. )
af50: 5e 0a 5e 54 68 65 20 74 61 62 6c 65 20 66 72 6f  ^.^The table fro
af60: 6d 20 77 68 69 63 68 20 74 6f 20 64 65 6c 65 74  m which to delet
af70: 65 20 6d 75 73 74 20 62 65 20 69 6e 20 74 68 65  e must be in the
af80: 20 73 61 6d 65 0a 64 61 74 61 62 61 73 65 20 61   same.database a
af90: 73 20 74 68 65 20 74 61 62 6c 65 20 74 6f 20 77  s the table to w
afa0: 68 69 63 68 20 74 68 65 20 74 72 69 67 67 65 72  hich the trigger
afb0: 20 69 73 20 61 74 74 61 63 68 65 64 2e 3c 2f 70   is attached.</p
afc0: 3e 0a 0a 3c 70 3e 5e 54 68 65 20 49 4e 44 45 58  >..<p>^The INDEX
afd0: 45 44 20 42 59 20 61 6e 64 20 4e 4f 54 20 49 4e  ED BY and NOT IN
afe0: 44 45 58 45 44 20 63 6c 61 75 73 65 73 20 61 72  DEXED clauses ar
aff0: 65 20 6e 6f 74 20 61 6c 6c 6f 77 65 64 20 6f 6e  e not allowed on
b000: 20 44 45 4c 45 54 45 0a 73 74 61 74 65 6d 65 6e   DELETE.statemen
b010: 74 73 20 77 69 74 68 69 6e 20 74 72 69 67 67 65  ts within trigge
b020: 72 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65  rs.</p>..<p>^The
b030: 20 4c 49 4d 49 54 20 63 6c 61 75 73 65 20 28 64   LIMIT clause (d
b040: 65 73 63 72 69 62 65 64 20 62 65 6c 6f 77 29 20  escribed below) 
b050: 69 73 20 75 6e 73 75 70 70 6f 72 74 65 64 20 77  is unsupported w
b060: 69 74 68 69 6e 20 74 72 69 67 67 65 72 73 2e 3c  ithin triggers.<
b070: 2f 70 3e 0a 0a 3c 74 63 6c 3e 68 64 5f 66 72 61  /p>..<tcl>hd_fra
b080: 67 6d 65 6e 74 20 74 72 75 6e 63 61 74 65 6f 70  gment truncateop
b090: 74 20 7b 74 72 75 6e 63 61 74 65 20 6f 70 74 69  t {truncate opti
b0a0: 6d 69 7a 61 74 69 6f 6e 7d 3c 2f 74 63 6c 3e 0a  mization}</tcl>.
b0b0: 3c 68 33 3e 54 68 65 20 54 72 75 6e 63 61 74 65  <h3>The Truncate
b0c0: 20 4f 70 74 69 6d 69 7a 61 74 69 6f 6e 3c 2f 68   Optimization</h
b0d0: 33 3e 0a 0a 3c 70 3e 5e 57 68 65 6e 20 74 68 65  3>..<p>^When the
b0e0: 20 57 48 45 52 45 20 69 73 20 6f 6d 69 74 74 65   WHERE is omitte
b0f0: 64 20 66 72 6f 6d 20 61 20 44 45 4c 45 54 45 20  d from a DELETE 
b100: 73 74 61 74 65 6d 65 6e 74 20 61 6e 64 20 74 68  statement and th
b110: 65 20 74 61 62 6c 65 0a 62 65 69 6e 67 20 64 65  e table.being de
b120: 6c 65 74 65 64 20 68 61 73 20 6e 6f 20 74 72 69  leted has no tri
b130: 67 67 65 72 73 2c 0a 53 51 4c 69 74 65 20 75 73  ggers,.SQLite us
b140: 65 73 20 61 6e 20 6f 70 74 69 6d 69 7a 61 74 69  es an optimizati
b150: 6f 6e 20 74 6f 20 65 72 61 73 65 20 74 68 65 20  on to erase the 
b160: 65 6e 74 69 72 65 20 74 61 62 6c 65 20 63 6f 6e  entire table con
b170: 74 65 6e 74 0a 77 69 74 68 6f 75 74 20 68 61 76  tent.without hav
b180: 69 6e 67 20 74 6f 20 76 69 73 69 74 20 65 61 63  ing to visit eac
b190: 68 20 72 6f 77 20 6f 66 20 74 68 65 20 74 61 62  h row of the tab
b1a0: 6c 65 20 69 6e 64 69 76 69 64 75 61 6c 6c 79 2e  le individually.
b1b0: 0a 54 68 69 73 20 22 74 72 75 6e 63 61 74 65 22  .This "truncate"
b1c0: 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20 6d 61   optimization ma
b1d0: 6b 65 73 20 74 68 65 20 64 65 6c 65 74 65 20 72  kes the delete r
b1e0: 75 6e 20 6d 75 63 68 20 66 61 73 74 65 72 2e 0a  un much faster..
b1f0: 50 72 69 6f 72 20 74 6f 20 53 51 4c 69 74 65 20  Prior to SQLite 
b200: 5b 76 65 72 73 69 6f 6e 20 33 2e 36 2e 35 5d 2c  [version 3.6.5],
b210: 20 74 68 65 20 74 72 75 6e 63 61 74 65 20 6f 70   the truncate op
b220: 74 69 6d 69 7a 61 74 69 6f 6e 0a 61 6c 73 6f 20  timization.also 
b230: 6d 65 61 6e 74 20 74 68 61 74 20 74 68 65 20 5b  meant that the [
b240: 73 71 6c 69 74 65 33 5f 63 68 61 6e 67 65 73 28  sqlite3_changes(
b250: 29 5d 20 61 6e 64 0a 5b 73 71 6c 69 74 65 33 5f  )] and.[sqlite3_
b260: 74 6f 74 61 6c 5f 63 68 61 6e 67 65 73 28 29 5d  total_changes()]
b270: 20 69 6e 74 65 72 66 61 63 65 73 0a 61 6e 64 20   interfaces.and 
b280: 74 68 65 20 5b 63 6f 75 6e 74 5f 63 68 61 6e 67  the [count_chang
b290: 65 73 20 70 72 61 67 6d 61 5d 0a 77 69 6c 6c 20  es pragma].will 
b2a0: 6e 6f 74 20 61 63 74 75 61 6c 6c 79 20 72 65 74  not actually ret
b2b0: 75 72 6e 20 74 68 65 20 6e 75 6d 62 65 72 20 6f  urn the number o
b2c0: 66 20 64 65 6c 65 74 65 64 20 72 6f 77 73 2e 20  f deleted rows. 
b2d0: 20 0a 54 68 61 74 20 70 72 6f 62 6c 65 6d 20 68   .That problem h
b2e0: 61 73 20 62 65 65 6e 20 66 69 78 65 64 20 61 73  as been fixed as
b2f0: 20 6f 66 20 5b 76 65 72 73 69 6f 6e 20 33 2e 36   of [version 3.6
b300: 2e 35 5d 2e 0a 0a 3c 70 3e 5e 54 68 65 20 74 72  .5]...<p>^The tr
b310: 75 6e 63 61 74 65 20 6f 70 74 69 6d 69 7a 61 74  uncate optimizat
b320: 69 6f 6e 20 63 61 6e 20 62 65 20 70 65 72 6d 61  ion can be perma
b330: 6e 65 6e 74 6c 79 20 64 69 73 61 62 6c 65 64 20  nently disabled 
b340: 66 6f 72 20 61 6c 6c 20 71 75 65 72 69 65 73 0a  for all queries.
b350: 62 79 20 72 65 63 6f 6d 70 69 6c 69 6e 67 0a 53  by recompiling.S
b360: 51 4c 69 74 65 20 77 69 74 68 20 74 68 65 20 5b  QLite with the [
b370: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 54 52 55 4e  SQLITE_OMIT_TRUN
b380: 43 41 54 45 5f 4f 50 54 49 4d 49 5a 41 54 49 4f  CATE_OPTIMIZATIO
b390: 4e 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  N] compile-time 
b3a0: 73 77 69 74 63 68 2e 3c 2f 70 3e 0a 0a 3c 70 3e  switch.</p>..<p>
b3b0: 54 68 65 20 74 72 75 6e 63 61 74 65 20 6f 70 74  The truncate opt
b3c0: 69 6d 69 7a 61 74 69 6f 6e 20 63 61 6e 20 61 6c  imization can al
b3d0: 73 6f 20 62 65 20 64 69 73 61 62 6c 65 64 20 61  so be disabled a
b3e0: 74 20 72 75 6e 74 69 6d 65 20 75 73 69 6e 67 0a  t runtime using.
b3f0: 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 73 65 74  the [sqlite3_set
b400: 5f 61 75 74 68 6f 72 69 7a 65 72 28 29 5d 20 69  _authorizer()] i
b410: 6e 74 65 72 66 61 63 65 2e 20 20 5e 49 66 20 61  nterface.  ^If a
b420: 6e 20 61 75 74 68 6f 72 69 7a 65 72 20 63 61 6c  n authorizer cal
b430: 6c 62 61 63 6b 0a 72 65 74 75 72 6e 73 20 5b 53  lback.returns [S
b440: 51 4c 49 54 45 5f 49 47 4e 4f 52 45 5d 20 66 6f  QLITE_IGNORE] fo
b450: 72 20 61 6e 20 5b 53 51 4c 49 54 45 5f 44 45 4c  r an [SQLITE_DEL
b460: 45 54 45 5d 20 61 63 74 69 6f 6e 20 63 6f 64 65  ETE] action code
b470: 2c 20 74 68 65 6e 0a 74 68 65 20 44 45 4c 45 54  , then.the DELET
b480: 45 20 6f 70 65 72 61 74 69 6f 6e 20 77 69 6c 6c  E operation will
b490: 20 70 72 6f 63 65 65 64 20 62 75 74 20 74 68 65   proceed but the
b4a0: 20 74 72 75 6e 63 61 74 65 20 6f 70 74 69 6d 69   truncate optimi
b4b0: 7a 61 74 69 6f 6e 20 77 69 6c 6c 0a 62 65 20 62  zation will.be b
b4c0: 79 70 61 73 73 65 64 20 61 6e 64 20 72 6f 77 73  ypassed and rows
b4d0: 20 77 69 6c 6c 20 62 65 20 64 65 6c 65 74 65 64   will be deleted
b4e0: 20 6f 6e 65 20 62 79 20 6f 6e 65 2e 3c 2f 70 3e   one by one.</p>
b4f0: 0a 0a 3c 68 33 3e 55 73 65 20 4f 66 20 4c 49 4d  ..<h3>Use Of LIM
b500: 49 54 3c 2f 68 33 3e 0a 0a 3c 70 3e 5e 28 49 66  IT</h3>..<p>^(If
b510: 20 53 51 4c 69 74 65 20 69 73 20 63 6f 6d 70 69   SQLite is compi
b520: 6c 65 64 20 77 69 74 68 20 74 68 65 20 5b 53 51  led with the [SQ
b530: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 55 50 44 41  LITE_ENABLE_UPDA
b540: 54 45 5f 44 45 4c 45 54 45 5f 4c 49 4d 49 54 5d  TE_DELETE_LIMIT]
b550: 0a 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70  .compile-time op
b560: 74 69 6f 6e 2c 20 74 68 65 6e 20 74 68 65 20 73  tion, then the s
b570: 79 6e 74 61 78 20 6f 66 20 74 68 65 20 44 45 4c  yntax of the DEL
b580: 45 54 45 20 73 74 61 74 65 6d 65 6e 74 20 69 73  ETE statement is
b590: 0a 65 78 74 65 6e 64 65 64 20 62 79 20 74 68 65  .extended by the
b5a0: 20 61 64 64 69 74 69 6f 6e 20 6f 66 20 6f 70 74   addition of opt
b5b0: 69 6f 6e 61 6c 20 4f 52 44 45 52 20 42 59 20 61  ional ORDER BY a
b5c0: 6e 64 20 4c 49 4d 49 54 20 63 6c 61 75 73 65 73  nd LIMIT clauses
b5d0: 3a 29 5e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 42 75  :)^</p>..<tcl>Bu
b5e0: 62 62 6c 65 44 69 61 67 72 61 6d 20 64 65 6c 65  bbleDiagram dele
b5f0: 74 65 2d 73 74 6d 74 2d 6c 69 6d 69 74 65 64 3c  te-stmt-limited<
b600: 2f 74 63 6c 3e 0a 0a 3c 70 3e 5e 54 68 65 20 6f  /tcl>..<p>^The o
b610: 70 74 69 6f 6e 61 6c 20 4c 49 4d 49 54 20 63 6c  ptional LIMIT cl
b620: 61 75 73 65 20 63 61 6e 20 62 65 20 75 73 65 64  ause can be used
b630: 20 74 6f 20 6c 69 6d 69 74 20 74 68 65 20 6e 75   to limit the nu
b640: 6d 62 65 72 20 6f 66 0a 72 6f 77 73 20 64 65 6c  mber of.rows del
b650: 65 74 65 64 2c 20 61 6e 64 20 74 68 65 72 65 62  eted, and thereb
b660: 79 20 6c 69 6d 69 74 20 74 68 65 20 73 69 7a 65  y limit the size
b670: 20 6f 66 20 74 68 65 20 74 72 61 6e 73 61 63 74   of the transact
b680: 69 6f 6e 2e 0a 5e 54 68 65 20 4f 52 44 45 52 20  ion..^The ORDER 
b690: 42 59 20 63 6c 61 75 73 65 20 6f 6e 20 61 20 44  BY clause on a D
b6a0: 45 4c 45 54 45 20 73 74 61 74 65 6d 65 6e 74 0a  ELETE statement.
b6b0: 69 73 20 75 73 65 64 20 6f 6e 6c 79 20 74 6f 20  is used only to 
b6c0: 64 65 74 65 72 6d 69 6e 65 20 77 68 69 63 68 20  determine which 
b6d0: 72 6f 77 73 20 66 61 6c 6c 0a 77 69 74 68 69 6e  rows fall.within
b6e0: 20 74 68 65 20 4c 49 4d 49 54 2e 20 20 5e 54 68   the LIMIT.  ^Th
b6f0: 65 20 6f 72 64 65 72 20 69 6e 20 77 68 69 63 68  e order in which
b700: 20 72 6f 77 73 20 61 72 65 20 64 65 6c 65 74 65   rows are delete
b710: 64 20 69 73 20 61 72 62 69 74 72 61 72 79 0a 61  d is arbitrary.a
b720: 6e 64 20 69 73 20 6e 6f 74 20 64 65 74 65 72 6d  nd is not determ
b730: 69 6e 65 64 20 62 79 20 74 68 65 20 4f 52 44 45  ined by the ORDE
b740: 52 20 42 59 20 63 6c 61 75 73 65 2e 3c 2f 70 3e  R BY clause.</p>
b750: 0a 0a 3c 70 3e 5e 54 68 65 20 70 72 65 73 65 6e  ..<p>^The presen
b760: 63 65 20 6f 66 20 61 20 4c 49 4d 49 54 20 63 6c  ce of a LIMIT cl
b770: 61 75 73 65 20 64 65 66 65 61 74 73 20 74 68 65  ause defeats the
b780: 20 74 72 75 6e 63 61 74 65 20 6f 70 74 69 6d 69   truncate optimi
b790: 7a 61 74 69 6f 6e 0a 63 61 75 73 69 6e 67 20 61  zation.causing a
b7a0: 6c 6c 20 72 6f 77 73 20 62 65 69 6e 67 20 64 65  ll rows being de
b7b0: 6c 65 74 65 64 20 74 6f 20 62 65 20 76 69 73 69  leted to be visi
b7c0: 74 65 64 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a  ted.</p>..<tcl>.
b7d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
b7e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
b7f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
b800: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
b810: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a  ###############.
b820: 53 65 63 74 69 6f 6e 20 7b 44 45 54 41 43 48 20  Section {DETACH 
b830: 44 41 54 41 42 41 53 45 7d 20 64 65 74 61 63 68  DATABASE} detach
b840: 20 2a 44 45 54 41 43 48 0a 0a 42 75 62 62 6c 65   *DETACH..Bubble
b850: 44 69 61 67 72 61 6d 20 64 65 74 61 63 68 2d 73  Diagram detach-s
b860: 74 6d 74 20 31 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70  tmt 1.</tcl>..<p
b870: 3e 5e 54 68 69 73 20 73 74 61 74 65 6d 65 6e 74  >^This statement
b880: 20 64 65 74 61 63 68 65 73 20 61 6e 20 61 64 64   detaches an add
b890: 69 74 69 6f 6e 61 6c 20 64 61 74 61 62 61 73 65  itional database
b8a0: 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 70 72 65 76   connection prev
b8b0: 69 6f 75 73 6c 79 20 0a 61 74 74 61 63 68 65 64  iously .attached
b8c0: 20 75 73 69 6e 67 20 74 68 65 20 5b 41 54 54 41   using the [ATTA
b8d0: 43 48 5d 20 73 74 61 74 65 6d 65 6e 74 2e 20 20  CH] statement.  
b8e0: 0a 5e 49 74 20 69 73 20 70 6f 73 73 69 62 6c 65  .^It is possible
b8f0: 20 74 6f 20 68 61 76 65 20 74 68 65 20 73 61 6d   to have the sam
b900: 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20  e database file 
b910: 61 74 74 61 63 68 65 64 20 6d 75 6c 74 69 70 6c  attached multipl
b920: 65 20 74 69 6d 65 73 20 75 73 69 6e 67 20 0a 64  e times using .d
b930: 69 66 66 65 72 65 6e 74 20 6e 61 6d 65 73 2c 20  ifferent names, 
b940: 61 6e 64 20 64 65 74 61 63 68 69 6e 67 20 6f 6e  and detaching on
b950: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 6f 20  e connection to 
b960: 61 20 66 69 6c 65 20 77 69 6c 6c 20 6c 65 61 76  a file will leav
b970: 65 20 74 68 65 20 0a 6f 74 68 65 72 73 20 69 6e  e the .others in
b980: 74 61 63 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54  tact.</p>..<p>^T
b990: 68 69 73 20 73 74 61 74 65 6d 65 6e 74 20 77 69  his statement wi
b9a0: 6c 6c 20 66 61 69 6c 20 69 66 20 53 51 4c 69 74  ll fail if SQLit
b9b0: 65 20 69 73 20 69 6e 20 74 68 65 20 6d 69 64 64  e is in the midd
b9c0: 6c 65 20 6f 66 20 61 20 74 72 61 6e 73 61 63 74  le of a transact
b9d0: 69 6f 6e 2e 3c 2f 70 3e 0a 0a 0a 3c 74 63 6c 3e  ion.</p>...<tcl>
b9e0: 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  .###############
b9f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
ba00: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
ba10: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
ba20: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a  ###############.
ba30: 53 65 63 74 69 6f 6e 20 7b 44 52 4f 50 20 49 4e  Section {DROP IN
ba40: 44 45 58 7d 20 64 72 6f 70 69 6e 64 65 78 20 7b  DEX} dropindex {
ba50: 7b 44 52 4f 50 20 49 4e 44 45 58 7d 7d 0a 0a 42  {DROP INDEX}}..B
ba60: 75 62 62 6c 65 44 69 61 67 72 61 6d 20 64 72 6f  ubbleDiagram dro
ba70: 70 2d 69 6e 64 65 78 2d 73 74 6d 74 20 31 0a 3c  p-index-stmt 1.<
ba80: 2f 74 63 6c 3e 0a 0a 3c 70 3e 5e 54 68 65 20 44  /tcl>..<p>^The D
ba90: 52 4f 50 20 49 4e 44 45 58 20 73 74 61 74 65 6d  ROP INDEX statem
baa0: 65 6e 74 20 72 65 6d 6f 76 65 73 20 61 6e 20 69  ent removes an i
bab0: 6e 64 65 78 20 61 64 64 65 64 0a 77 69 74 68 20  ndex added.with 
bac0: 74 68 65 20 5b 43 52 45 41 54 45 20 49 4e 44 45  the [CREATE INDE
bad0: 58 5d 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 54  X] statement.  T
bae0: 68 65 20 69 6e 64 65 78 20 69 73 20 63 6f 6d 70  he index is comp
baf0: 6c 65 74 65 6c 79 20 72 65 6d 6f 76 65 64 20 66  letely removed f
bb00: 72 6f 6d 0a 74 68 65 20 64 69 73 6b 2e 20 20 54  rom.the disk.  T
bb10: 68 65 20 6f 6e 6c 79 20 77 61 79 20 74 6f 20 72  he only way to r
bb20: 65 63 6f 76 65 72 20 74 68 65 20 69 6e 64 65 78  ecover the index
bb30: 20 69 73 20 74 6f 20 72 65 65 6e 74 65 72 20 74   is to reenter t
bb40: 68 65 0a 61 70 70 72 6f 70 72 69 61 74 65 20 5b  he.appropriate [
bb50: 43 52 45 41 54 45 20 49 4e 44 45 58 5d 20 63 6f  CREATE INDEX] co
bb60: 6d 6d 61 6e 64 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c  mmand.</p>..<tcl
bb70: 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23  >.##############
bb80: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
bb90: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
bba0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
bbb0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
bbc0: 0a 53 65 63 74 69 6f 6e 20 7b 44 52 4f 50 20 54  .Section {DROP T
bbd0: 41 42 4c 45 7d 20 64 72 6f 70 74 61 62 6c 65 20  ABLE} droptable 
bbe0: 7b 7b 44 52 4f 50 20 54 41 42 4c 45 7d 7d 0a 0a  {{DROP TABLE}}..
bbf0: 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 64 72  BubbleDiagram dr
bc00: 6f 70 2d 74 61 62 6c 65 2d 73 74 6d 74 20 31 0a  op-table-stmt 1.
bc10: 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 5e 54 68 65 20  </tcl>..<p>^The 
bc20: 44 52 4f 50 20 54 41 42 4c 45 20 73 74 61 74 65  DROP TABLE state
bc30: 6d 65 6e 74 20 72 65 6d 6f 76 65 73 20 61 20 74  ment removes a t
bc40: 61 62 6c 65 20 61 64 64 65 64 20 77 69 74 68 20  able added with 
bc50: 74 68 65 0a 5b 43 52 45 41 54 45 20 54 41 42 4c  the.[CREATE TABL
bc60: 45 5d 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 54  E] statement.  T
bc70: 68 65 20 6e 61 6d 65 20 73 70 65 63 69 66 69 65  he name specifie
bc80: 64 20 69 73 20 74 68 65 0a 74 61 62 6c 65 20 6e  d is the.table n
bc90: 61 6d 65 2e 20 20 5e 54 68 65 20 64 72 6f 70 70  ame.  ^The dropp
bca0: 65 64 20 74 61 62 6c 65 20 69 73 20 63 6f 6d 70  ed table is comp
bcb0: 6c 65 74 65 6c 79 20 72 65 6d 6f 76 65 64 20 66  letely removed f
bcc0: 72 6f 6d 20 74 68 65 20 64 61 74 61 62 61 73 65  rom the database
bcd0: 20 0a 73 63 68 65 6d 61 20 61 6e 64 20 74 68 65   .schema and the
bce0: 20 64 69 73 6b 20 66 69 6c 65 2e 20 20 54 68 65   disk file.  The
bcf0: 20 74 61 62 6c 65 20 63 61 6e 20 6e 6f 74 20 62   table can not b
bd00: 65 20 72 65 63 6f 76 65 72 65 64 2e 20 20 0a 5e  e recovered.  .^
bd10: 41 6c 6c 20 69 6e 64 69 63 65 73 20 61 6e 64 20  All indices and 
bd20: 74 72 69 67 67 65 72 73 0a 61 73 73 6f 63 69 61  triggers.associa
bd30: 74 65 64 20 77 69 74 68 20 74 68 65 20 74 61 62  ted with the tab
bd40: 6c 65 20 61 72 65 20 61 6c 73 6f 20 64 65 6c 65  le are also dele
bd50: 74 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68  ted.</p>..<p>^Th
bd60: 65 20 6f 70 74 69 6f 6e 61 6c 20 49 46 20 45 58  e optional IF EX
bd70: 49 53 54 53 20 63 6c 61 75 73 65 20 73 75 70 70  ISTS clause supp
bd80: 72 65 73 73 65 73 20 74 68 65 20 65 72 72 6f 72  resses the error
bd90: 20 74 68 61 74 20 77 6f 75 6c 64 20 6e 6f 72 6d   that would norm
bda0: 61 6c 6c 79 0a 72 65 73 75 6c 74 20 69 66 20 74  ally.result if t
bdb0: 68 65 20 74 61 62 6c 65 20 64 6f 65 73 20 6e 6f  he table does no
bdc0: 74 20 65 78 69 73 74 2e 3c 2f 70 3e 0a 0a 3c 70  t exist.</p>..<p
bdd0: 3e 5e 49 66 20 5b 66 6f 72 65 69 67 6e 20 6b 65  >^If [foreign ke
bde0: 79 20 63 6f 6e 73 74 72 61 69 6e 74 73 5d 20 61  y constraints] a
bdf0: 72 65 20 65 6e 61 62 6c 65 64 2c 20 61 20 44 52  re enabled, a DR
be00: 4f 50 20 54 41 42 4c 45 20 63 6f 6d 6d 61 6e 64  OP TABLE command
be10: 20 70 65 72 66 6f 72 6d 73 20 61 6e 0a 69 6d 70   performs an.imp
be20: 6c 69 63 69 74 20 5b 44 45 4c 45 54 45 20 7c 20  licit [DELETE | 
be30: 44 45 4c 45 54 45 20 46 52 4f 4d 20 26 6c 74 3b  DELETE FROM &lt;
be40: 74 62 6c 26 67 74 3b 5d 20 63 6f 6d 6d 61 6e 64  tbl&gt;] command
be50: 20 62 65 66 6f 72 65 20 72 65 6d 6f 76 69 6e 67   before removing
be60: 20 74 68 65 0a 74 61 62 6c 65 20 66 72 6f 6d 20   the.table from 
be70: 74 68 65 20 64 61 74 61 62 61 73 65 20 73 63 68  the database sch
be80: 65 6d 61 2e 20 5e 41 6e 79 20 74 72 69 67 67 65  ema. ^Any trigge
be90: 72 73 20 61 74 74 61 63 68 65 64 20 74 6f 20 74  rs attached to t
bea0: 68 65 20 74 61 62 6c 65 20 61 72 65 0a 64 72 6f  he table are.dro
beb0: 70 70 65 64 20 66 72 6f 6d 20 74 68 65 20 64 61  pped from the da
bec0: 74 61 62 61 73 65 20 73 63 68 65 6d 61 20 62 65  tabase schema be
bed0: 66 6f 72 65 20 74 68 65 20 69 6d 70 6c 69 63 69  fore the implici
bee0: 74 20 44 45 4c 45 54 45 20 46 52 4f 4d 20 26 6c  t DELETE FROM &l
bef0: 74 3b 74 62 6c 26 67 74 3b 20 0a 69 73 20 65 78  t;tbl&gt; .is ex
bf00: 65 63 75 74 65 64 2c 20 73 6f 20 74 68 69 73 20  ecuted, so this 
bf10: 63 61 6e 6e 6f 74 20 63 61 75 73 65 20 61 6e 79  cannot cause any
bf20: 20 74 72 69 67 67 65 72 73 20 74 6f 20 66 69 72   triggers to fir
bf30: 65 2e 20 42 79 20 63 6f 6e 74 72 61 73 74 2c 20  e. By contrast, 
bf40: 5e 61 6e 0a 69 6d 70 6c 69 63 69 74 20 44 45 4c  ^an.implicit DEL
bf50: 45 54 45 20 46 52 4f 4d 20 26 6c 74 3b 74 62 6c  ETE FROM &lt;tbl
bf60: 26 67 74 3b 20 64 6f 65 73 20 63 61 75 73 65 20  &gt; does cause 
bf70: 61 6e 79 20 63 6f 6e 66 69 67 75 72 65 64 0a 5b  any configured.[
bf80: 66 6f 72 65 69 67 6e 20 6b 65 79 20 61 63 74 69  foreign key acti
bf90: 6f 6e 73 5d 20 74 6f 20 74 61 6b 65 20 70 6c 61  ons] to take pla
bfa0: 63 65 2e 20 0a 5e 49 66 20 74 68 65 20 69 6d 70  ce. .^If the imp
bfb0: 6c 69 63 69 74 20 44 45 4c 45 54 45 20 46 52 4f  licit DELETE FRO
bfc0: 4d 20 26 6c 74 3b 74 62 6c 26 67 74 3b 20 65 78  M &lt;tbl&gt; ex
bfd0: 65 63 75 74 65 64 0a 61 73 20 70 61 72 74 20 6f  ecuted.as part o
bfe0: 66 20 61 20 44 52 4f 50 20 54 41 42 4c 45 20 63  f a DROP TABLE c
bff0: 6f 6d 6d 61 6e 64 20 76 69 6f 6c 61 74 65 73 20  ommand violates 
c000: 61 6e 79 20 69 6d 6d 65 64 69 61 74 65 20 66 6f  any immediate fo
c010: 72 65 69 67 6e 20 6b 65 79 20 63 6f 6e 73 74 72  reign key constr
c020: 61 69 6e 74 73 2c 0a 61 6e 20 65 72 72 6f 72 20  aints,.an error 
c030: 69 73 20 72 65 74 75 72 6e 65 64 20 61 6e 64 20  is returned and 
c040: 74 68 65 20 74 61 62 6c 65 20 69 73 20 6e 6f 74  the table is not
c050: 20 64 72 6f 70 70 65 64 2e 20 5e 49 66 20 0a 74   dropped. ^If .t
c060: 68 65 20 69 6d 70 6c 69 63 69 74 20 44 45 4c 45  he implicit DELE
c070: 54 45 20 46 52 4f 4d 20 26 6c 74 3b 74 62 6c 26  TE FROM &lt;tbl&
c080: 67 74 3b 20 63 61 75 73 65 73 20 61 6e 79 20 0a  gt; causes any .
c090: 64 65 66 65 72 72 65 64 20 66 6f 72 65 69 67 6e  deferred foreign
c0a0: 20 6b 65 79 20 63 6f 6e 73 74 72 61 69 6e 74 73   key constraints
c0b0: 20 74 6f 20 62 65 20 76 69 6f 6c 61 74 65 64 2c   to be violated,
c0c0: 20 61 6e 64 20 74 68 65 20 76 69 6f 6c 61 74 69   and the violati
c0d0: 6f 6e 73 20 73 74 69 6c 6c 0a 65 78 69 73 74 20  ons still.exist 
c0e0: 77 68 65 6e 20 74 68 65 20 74 72 61 6e 73 61 63  when the transac
c0f0: 74 69 6f 6e 20 69 73 20 63 6f 6d 6d 69 74 74 65  tion is committe
c100: 64 2c 20 61 6e 20 65 72 72 6f 72 20 69 73 20 72  d, an error is r
c110: 65 74 75 72 6e 65 64 20 61 74 20 74 68 65 20 74  eturned at the t
c120: 69 6d 65 0a 6f 66 20 63 6f 6d 6d 69 74 2e 0a 0a  ime.of commit...
c130: 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23  <tcl>.##########
c140: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c150: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c160: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c170: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c180: 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b 44 52  ####.Section {DR
c190: 4f 50 20 54 52 49 47 47 45 52 7d 20 64 72 6f 70  OP TRIGGER} drop
c1a0: 74 72 69 67 67 65 72 20 7b 7b 44 52 4f 50 20 54  trigger {{DROP T
c1b0: 52 49 47 47 45 52 7d 7d 0a 0a 42 75 62 62 6c 65  RIGGER}}..Bubble
c1c0: 44 69 61 67 72 61 6d 20 64 72 6f 70 2d 74 72 69  Diagram drop-tri
c1d0: 67 67 65 72 2d 73 74 6d 74 20 31 0a 3c 2f 74 63  gger-stmt 1.</tc
c1e0: 6c 3e 0a 0a 3c 70 3e 5e 54 68 65 20 44 52 4f 50  l>..<p>^The DROP
c1f0: 20 54 52 49 47 47 45 52 20 73 74 61 74 65 6d 65   TRIGGER stateme
c200: 6e 74 20 72 65 6d 6f 76 65 73 20 61 20 74 72 69  nt removes a tri
c210: 67 67 65 72 20 63 72 65 61 74 65 64 20 62 79 20  gger created by 
c220: 74 68 65 20 0a 5b 43 52 45 41 54 45 20 54 52 49  the .[CREATE TRI
c230: 47 47 45 52 5d 20 73 74 61 74 65 6d 65 6e 74 2e  GGER] statement.
c240: 20 20 5e 54 68 65 20 74 72 69 67 67 65 72 20 69    ^The trigger i
c250: 73 20 0a 64 65 6c 65 74 65 64 20 66 72 6f 6d 20  s .deleted from 
c260: 74 68 65 20 64 61 74 61 62 61 73 65 20 73 63 68  the database sch
c270: 65 6d 61 2e 20 5e 4e 6f 74 65 20 74 68 61 74 20  ema. ^Note that 
c280: 74 72 69 67 67 65 72 73 20 61 72 65 20 61 75 74  triggers are aut
c290: 6f 6d 61 74 69 63 61 6c 6c 79 20 0a 64 72 6f 70  omatically .drop
c2a0: 70 65 64 20 77 68 65 6e 20 74 68 65 20 61 73 73  ped when the ass
c2b0: 6f 63 69 61 74 65 64 20 74 61 62 6c 65 20 69 73  ociated table is
c2c0: 20 64 72 6f 70 70 65 64 2e 3c 2f 70 3e 0a 0a 3c   dropped.</p>..<
c2d0: 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23  tcl>.###########
c2e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c2f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c300: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c310: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c320: 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b 44 52 4f  ###.Section {DRO
c330: 50 20 56 49 45 57 7d 20 64 72 6f 70 76 69 65 77  P VIEW} dropview
c340: 20 7b 7b 44 52 4f 50 20 56 49 45 57 7d 7d 0a 0a   {{DROP VIEW}}..
c350: 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 64 72  BubbleDiagram dr
c360: 6f 70 2d 76 69 65 77 2d 73 74 6d 74 20 31 0a 3c  op-view-stmt 1.<
c370: 2f 74 63 6c 3e 0a 0a 3c 70 3e 5e 54 68 65 20 44  /tcl>..<p>^The D
c380: 52 4f 50 20 56 49 45 57 20 73 74 61 74 65 6d 65  ROP VIEW stateme
c390: 6e 74 20 72 65 6d 6f 76 65 73 20 61 20 76 69 65  nt removes a vie
c3a0: 77 20 63 72 65 61 74 65 64 20 62 79 20 74 68 65  w created by the
c3b0: 0a 5b 43 52 45 41 54 45 20 56 49 45 57 5d 20 73  .[CREATE VIEW] s
c3c0: 74 61 74 65 6d 65 6e 74 2e 20 20 5e 54 68 65 20  tatement.  ^The 
c3d0: 6e 61 6d 65 20 73 70 65 63 69 66 69 65 64 20 69  name specified i
c3e0: 73 20 74 68 65 20 0a 76 69 65 77 20 6e 61 6d 65  s the .view name
c3f0: 2e 20 20 5e 49 74 20 69 73 20 72 65 6d 6f 76 65  .  ^It is remove
c400: 64 20 66 72 6f 6d 20 74 68 65 20 64 61 74 61 62  d from the datab
c410: 61 73 65 20 73 63 68 65 6d 61 2c 20 62 75 74 20  ase schema, but 
c420: 6e 6f 20 61 63 74 75 61 6c 20 64 61 74 61 20 0a  no actual data .
c430: 69 6e 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e  in the underlyin
c440: 67 20 62 61 73 65 20 74 61 62 6c 65 73 20 69 73  g base tables is
c450: 20 6d 6f 64 69 66 69 65 64 2e 3c 2f 70 3e 0a 0a   modified.</p>..
c460: 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23  <tcl>.##########
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 23 23 23 23 23 23 23  ################
c4a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c4b0: 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 45 58 50  ####.Section EXP
c4c0: 4c 41 49 4e 20 65 78 70 6c 61 69 6e 20 45 58 50  LAIN explain EXP
c4d0: 4c 41 49 4e 0a 0a 42 75 62 62 6c 65 44 69 61 67  LAIN..BubbleDiag
c4e0: 72 61 6d 20 73 71 6c 2d 73 74 6d 74 0a 3c 2f 74  ram sql-stmt.</t
c4f0: 63 6c 3e 0a 0a 3c 70 3e 5e 41 6e 20 53 51 4c 20  cl>..<p>^An SQL 
c500: 73 74 61 74 65 6d 65 6e 74 20 63 61 6e 20 62 65  statement can be
c510: 20 70 72 65 63 65 64 65 64 20 62 79 20 74 68 65   preceded by the
c520: 20 6b 65 79 77 6f 72 64 20 22 45 58 50 4c 41 49   keyword "EXPLAI
c530: 4e 22 20 6f 72 0a 62 79 20 74 68 65 20 70 68 72  N" or.by the phr
c540: 61 73 65 20 22 45 58 50 4c 41 49 4e 20 51 55 45  ase "EXPLAIN QUE
c550: 52 59 20 50 4c 41 4e 22 2e 20 20 5e 45 69 74 68  RY PLAN".  ^Eith
c560: 65 72 20 6d 6f 64 69 66 69 63 61 74 69 6f 6e 20  er modification 
c570: 63 61 75 73 65 73 20 74 68 65 0a 53 51 4c 20 73  causes the.SQL s
c580: 74 61 74 65 6d 65 6e 74 20 74 6f 20 62 65 68 61  tatement to beha
c590: 76 65 20 61 73 20 61 20 71 75 65 72 79 20 61 6e  ve as a query an
c5a0: 64 20 74 6f 20 72 65 74 75 72 6e 20 69 6e 66 6f  d to return info
c5b0: 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 0a 68 6f  rmation about.ho
c5c0: 77 20 74 68 65 20 53 51 4c 20 73 74 61 74 65 6d  w the SQL statem
c5d0: 65 6e 74 20 77 6f 75 6c 64 20 68 61 76 65 20 6f  ent would have o
c5e0: 70 65 72 61 74 65 64 20 69 66 20 74 68 65 20 45  perated if the E
c5f0: 58 50 4c 41 49 4e 20 6b 65 79 77 6f 72 64 20 6f  XPLAIN keyword o
c600: 72 0a 70 68 72 61 73 65 20 68 61 64 20 62 65 65  r.phrase had bee
c610: 6e 20 6f 6d 69 74 74 65 64 2e 3c 2f 70 3e 0a 0a  n omitted.</p>..
c620: 3c 70 3e 5e 57 68 65 6e 20 74 68 65 20 45 58 50  <p>^When the EXP
c630: 4c 41 49 4e 20 6b 65 79 77 6f 72 64 20 61 70 70  LAIN keyword app
c640: 65 61 72 73 20 62 79 20 69 74 73 65 6c 66 20 69  ears by itself i
c650: 74 20 63 61 75 73 65 73 20 74 68 65 20 73 74 61  t causes the sta
c660: 74 65 6d 65 6e 74 0a 74 6f 20 62 65 68 61 76 65  tement.to behave
c670: 20 61 73 20 61 20 71 75 65 72 79 20 74 68 61 74   as a query that
c680: 20 72 65 74 75 72 6e 73 20 74 68 65 20 73 65 71   returns the seq
c690: 75 65 6e 63 65 20 6f 66 20 0a 5b 76 69 72 74 75  uence of .[virtu
c6a0: 61 6c 20 6d 61 63 68 69 6e 65 20 69 6e 73 74 72  al machine instr
c6b0: 75 63 74 69 6f 6e 73 5d 20 69 74 20 77 6f 75 6c  uctions] it woul
c6c0: 64 20 68 61 76 65 0a 75 73 65 64 20 74 6f 20 65  d have.used to e
c6d0: 78 65 63 75 74 65 20 74 68 65 20 63 6f 6d 6d 61  xecute the comma
c6e0: 6e 64 20 68 61 64 20 74 68 65 20 45 58 50 4c 41  nd had the EXPLA
c6f0: 49 4e 20 6b 65 79 77 6f 72 64 20 6e 6f 74 20 62  IN keyword not b
c700: 65 65 6e 20 70 72 65 73 65 6e 74 2e 0a 5e 57 68  een present..^Wh
c710: 65 6e 20 74 68 65 20 45 58 50 4c 41 49 4e 20 51  en the EXPLAIN Q
c720: 55 45 52 59 20 50 4c 41 4e 20 70 68 72 61 73 65  UERY PLAN phrase
c730: 20 61 70 70 65 61 72 73 2c 20 74 68 65 20 73 74   appears, the st
c740: 61 74 65 6d 65 6e 74 20 72 65 74 75 72 6e 73 0a  atement returns.
c750: 68 69 67 68 2d 6c 65 76 65 6c 20 69 6e 66 6f 72  high-level infor
c760: 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 77 68 61  mation about wha
c770: 74 20 69 6e 64 69 63 65 73 20 77 6f 75 6c 64 20  t indices would 
c780: 68 61 76 65 20 62 65 65 6e 20 75 73 65 64 2e 3c  have been used.<
c790: 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 6f 75 74 70  /p>..<p>The outp
c7a0: 75 74 20 66 72 6f 6d 20 45 58 50 4c 41 49 4e 20  ut from EXPLAIN 
c7b0: 61 6e 64 20 45 58 50 4c 41 49 4e 20 51 55 45 52  and EXPLAIN QUER
c7c0: 59 20 50 4c 41 4e 20 69 73 20 69 6e 74 65 6e 64  Y PLAN is intend
c7d0: 65 64 20 66 6f 72 0a 69 6e 74 65 72 61 63 74 69  ed for.interacti
c7e0: 76 65 20 61 6e 61 6c 79 73 69 73 20 61 6e 64 20  ve analysis and 
c7f0: 74 72 6f 75 62 6c 65 73 68 6f 6f 74 69 6e 67 20  troubleshooting 
c800: 6f 6e 6c 79 2e 20 20 54 68 65 20 64 65 74 61 69  only.  The detai
c810: 6c 73 20 6f 66 20 74 68 65 20 0a 6f 75 74 70 75  ls of the .outpu
c820: 74 20 66 6f 72 6d 61 74 20 61 72 65 20 73 75 62  t format are sub
c830: 6a 65 63 74 20 74 6f 20 63 68 61 6e 67 65 20 66  ject to change f
c840: 72 6f 6d 20 6f 6e 65 20 72 65 6c 65 61 73 65 20  rom one release 
c850: 6f 66 20 53 51 4c 69 74 65 20 74 6f 20 74 68 65  of SQLite to the
c860: 20 6e 65 78 74 2e 0a 41 70 70 6c 69 63 61 74 69   next..Applicati
c870: 6f 6e 73 20 73 68 6f 75 6c 64 20 6e 6f 74 20 75  ons should not u
c880: 73 65 20 45 58 50 4c 41 49 4e 20 6f 72 20 45 58  se EXPLAIN or EX
c890: 50 4c 41 49 4e 20 51 55 45 52 59 20 50 4c 41 4e  PLAIN QUERY PLAN
c8a0: 20 73 69 6e 63 65 0a 74 68 65 69 72 20 65 78 61   since.their exa
c8b0: 63 74 20 62 65 68 61 76 69 6f 72 20 69 73 20 75  ct behavior is u
c8c0: 6e 64 6f 63 75 6d 65 6e 74 65 64 2c 20 75 6e 73  ndocumented, uns
c8d0: 70 65 63 69 66 69 65 64 2c 20 61 6e 64 20 76 61  pecified, and va
c8e0: 72 69 61 62 6c 65 2e 3c 2f 70 3e 0a 0a 3c 74 63  riable.</p>..<tc
c8f0: 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23 23  l>.#############
c900: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c910: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c920: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c930: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c940: 23 0a 53 65 63 74 69 6f 6e 20 65 78 70 72 65 73  #.Section expres
c950: 73 69 6f 6e 20 65 78 70 72 20 7b 2a 65 78 70 72  sion expr {*expr
c960: 65 73 73 69 6f 6e 20 7b 65 78 70 72 65 73 73 69  ession {expressi
c970: 6f 6e 20 73 79 6e 74 61 78 7d 7d 0a 0a 42 75 62  on syntax}}..Bub
c980: 62 6c 65 44 69 61 67 72 61 6d 20 65 78 70 72 20  bleDiagram expr 
c990: 31 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20  1.BubbleDiagram 
c9a0: 6c 69 74 65 72 61 6c 2d 76 61 6c 75 65 0a 42 75  literal-value.Bu
c9b0: 62 62 6c 65 44 69 61 67 72 61 6d 20 73 69 67 6e  bbleDiagram sign
c9c0: 65 64 2d 6e 75 6d 62 65 72 0a 42 75 62 62 6c 65  ed-number.Bubble
c9d0: 44 69 61 67 72 61 6d 20 72 61 69 73 65 2d 66 75  Diagram raise-fu
c9e0: 6e 63 74 69 6f 6e 0a 3c 2f 74 63 6c 3e 0a 0a 3c  nction.</tcl>..<
c9f0: 70 3e 54 68 69 73 20 73 65 63 74 69 6f 6e 20 69  p>This section i
ca00: 73 20 64 69 66 66 65 72 65 6e 74 20 66 72 6f 6d  s different from
ca10: 20 74 68 65 20 6f 74 68 65 72 73 2e 20 20 4d 6f   the others.  Mo
ca20: 73 74 20 6f 74 68 65 72 20 73 65 63 74 69 6f 6e  st other section
ca30: 73 20 6f 66 0a 74 68 69 73 20 64 6f 63 75 6d 65  s of.this docume
ca40: 6e 74 20 74 61 6c 6b 73 20 61 62 6f 75 74 20 61  nt talks about a
ca50: 20 70 61 72 74 69 63 75 6c 61 72 20 53 51 4c 20   particular SQL 
ca60: 63 6f 6d 6d 61 6e 64 2e 20 20 54 68 69 73 20 73  command.  This s
ca70: 65 63 74 69 6f 6e 20 64 6f 65 73 0a 6e 6f 74 20  ection does.not 
ca80: 74 61 6c 6b 20 61 62 6f 75 74 20 61 20 73 74 61  talk about a sta
ca90: 6e 64 61 6c 6f 6e 65 20 63 6f 6d 6d 61 6e 64 20  ndalone command 
caa0: 62 75 74 20 61 62 6f 75 74 20 22 65 78 70 72 65  but about "expre
cab0: 73 73 69 6f 6e 73 22 20 77 68 69 63 68 20 61 72  ssions" which ar
cac0: 65 20 0a 73 75 62 63 6f 6d 70 6f 6e 65 6e 74 73  e .subcomponents
cad0: 20 6f 66 20 6d 6f 73 74 20 6f 74 68 65 72 20 63   of most other c
cae0: 6f 6d 6d 61 6e 64 73 2e 3c 2f 70 3e 0a 0a 3c 74  ommands.</p>..<t
caf0: 63 6c 3e 68 64 5f 66 72 61 67 6d 65 6e 74 20 62  cl>hd_fragment b
cb00: 69 6e 61 72 79 6f 70 73 20 7b 62 69 6e 61 72 79  inaryops {binary
cb10: 20 6f 70 65 72 61 74 6f 72 73 7d 3c 2f 74 63 6c   operators}</tcl
cb20: 3e 0a 3c 68 33 3e 4f 70 65 72 61 74 6f 72 73 3c  >.<h3>Operators<
cb30: 2f 68 33 3e 0a 3c 70 3e 5e 28 53 51 4c 69 74 65  /h3>.<p>^(SQLite
cb40: 20 75 6e 64 65 72 73 74 61 6e 64 73 20 74 68 65   understands the
cb50: 20 66 6f 6c 6c 6f 77 69 6e 67 20 62 69 6e 61 72   following binar
cb60: 79 20 6f 70 65 72 61 74 6f 72 73 2c 20 69 6e 20  y operators, in 
cb70: 6f 72 64 65 72 20 66 72 6f 6d 0a 68 69 67 68 65  order from.highe
cb80: 73 74 20 74 6f 20 6c 6f 77 65 73 74 20 70 72 65  st to lowest pre
cb90: 63 65 64 65 6e 63 65 3a 3c 2f 70 3e 0a 0a 3c 62  cedence:</p>..<b
cba0: 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70 72 65 3e 0a  lockquote><pre>.
cbb0: 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 22 23 32 63  <font color="#2c
cbc0: 32 63 66 30 22 3e 3c 62 69 67 3e 7c 7c 0a 2a 20  2cf0"><big>||.* 
cbd0: 20 20 20 2f 20 20 20 20 25 0a 2b 20 20 20 20 2d     /    %.+    -
cbe0: 0a 26 6c 74 3b 26 6c 74 3b 20 20 20 26 67 74 3b  .&lt;&lt;   &gt;
cbf0: 26 67 74 3b 20 20 20 26 61 6d 70 3b 20 20 20 20  &gt;   &amp;    
cc00: 7c 0a 26 6c 74 3b 20 20 20 20 26 6c 74 3b 3d 20  |.&lt;    &lt;= 
cc10: 20 20 26 67 74 3b 20 20 20 20 26 67 74 3b 3d 0a    &gt;    &gt;=.
cc20: 3d 20 20 20 20 3d 3d 20 20 20 21 3d 20 20 20 26  =    ==   !=   &
cc30: 6c 74 3b 26 67 74 3b 20 20 20 3c 2f 62 69 67 3e  lt;&gt;   </big>
cc40: 49 53 20 20 20 49 53 20 4e 4f 54 20 20 20 49 4e  IS   IS NOT   IN
cc50: 20 20 20 4c 49 4b 45 20 20 20 47 4c 4f 42 20 20     LIKE   GLOB  
cc60: 20 4d 41 54 43 48 20 20 20 52 45 47 45 58 50 0a   MATCH   REGEXP.
cc70: 41 4e 44 20 20 20 0a 4f 52 3c 2f 66 6f 6e 74 3e  AND   .OR</font>
cc80: 0a 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75  .</pre></blockqu
cc90: 6f 74 65 3e 29 5e 0a 0a 3c 70 3e 5e 28 53 75 70  ote>)^..<p>^(Sup
cca0: 70 6f 72 74 65 64 20 75 6e 61 72 79 20 70 72 65  ported unary pre
ccb0: 66 69 78 20 6f 70 65 72 61 74 6f 72 73 20 61 72  fix operators ar
ccc0: 65 20 74 68 65 73 65 3a 3c 2f 70 3e 0a 0a 3c 62  e these:</p>..<b
ccd0: 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70 72 65 3e 0a  lockquote><pre>.
cce0: 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 22 23 32 63  <font color="#2c
ccf0: 32 63 66 30 22 3e 3c 62 69 67 3e 2d 20 20 20 20  2cf0"><big>-    
cd00: 2b 20 20 20 20 7e 20 20 20 20 4e 4f 54 3c 2f 62  +    ~    NOT</b
cd10: 69 67 3e 3c 2f 66 6f 6e 74 3e 0a 3c 2f 70 72 65  ig></font>.</pre
cd20: 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 29 5e  ></blockquote>)^
cd30: 0a 0a 3c 74 63 6c 3e 68 64 5f 66 72 61 67 6d 65  ..<tcl>hd_fragme
cd40: 6e 74 20 63 6f 6c 6c 61 74 65 6f 70 20 7b 43 4f  nt collateop {CO
cd50: 4c 4c 41 54 45 20 6f 70 65 72 61 74 6f 72 7d 3c  LLATE operator}<
cd60: 2f 74 63 6c 3e 0a 3c 70 3e 5e 54 68 65 20 43 4f  /tcl>.<p>^The CO
cd70: 4c 4c 41 54 45 20 6f 70 65 72 61 74 6f 72 20 69  LLATE operator i
cd80: 73 20 61 20 75 6e 61 72 79 20 70 6f 73 74 66 69  s a unary postfi
cd90: 78 0a 6f 70 65 72 61 74 6f 72 20 74 68 61 74 20  x.operator that 
cda0: 61 73 73 69 67 6e 73 20 61 20 5b 63 6f 6c 6c 61  assigns a [colla
cdb0: 74 69 6e 67 20 73 65 71 75 65 6e 63 65 5d 20 74  ting sequence] t
cdc0: 6f 20 61 6e 20 65 78 70 72 65 73 73 69 6f 6e 2e  o an expression.
cdd0: 0a 5e 54 68 65 20 43 4f 4c 4c 41 54 45 20 6f 70  .^The COLLATE op
cde0: 65 72 61 74 6f 72 20 68 61 73 20 61 20 68 69 67  erator has a hig
cdf0: 68 65 72 20 70 72 65 63 65 64 65 6e 63 65 20 28  her precedence (
ce00: 62 69 6e 64 73 20 6d 6f 72 65 20 74 69 67 68 74  binds more tight
ce10: 6c 79 29 20 74 68 61 6e 20 61 6e 79 0a 70 72 65  ly) than any.pre
ce20: 66 69 78 20 75 6e 61 72 79 20 6f 70 65 72 61 74  fix unary operat
ce30: 6f 72 20 6f 72 20 61 6e 79 20 62 69 6e 61 72 79  or or any binary
ce40: 20 6f 70 65 72 61 74 6f 72 2e 0a 5e 54 68 65 20   operator..^The 
ce50: 63 6f 6c 6c 61 74 69 6e 67 20 73 65 71 75 65 6e  collating sequen
ce60: 63 65 20 73 65 74 20 62 79 20 74 68 65 20 43 4f  ce set by the CO
ce70: 4c 4c 41 54 45 20 6f 70 65 72 61 74 6f 72 20 6f  LLATE operator o
ce80: 76 65 72 72 69 64 65 73 20 74 68 65 0a 63 6f 6c  verrides the.col
ce90: 6c 61 74 69 6e 67 20 73 65 71 75 65 6e 63 65 20  lating sequence 
cea0: 64 65 74 65 72 6d 69 6e 65 64 20 62 79 20 74 68  determined by th
ceb0: 65 20 43 4f 4c 4c 41 54 45 20 63 6c 61 75 73 65  e COLLATE clause
cec0: 20 69 6e 20 61 20 74 61 62 6c 65 0a 5b 63 6f 6c   in a table.[col
ced0: 75 6d 6e 20 64 65 66 69 6e 69 74 69 6f 6e 5d 2e  umn definition].
cee0: 0a 53 65 65 20 74 68 65 20 5b 63 6f 6c 6c 61 74  .See the [collat
cef0: 69 6e 67 20 73 65 71 75 65 6e 63 65 7c 20 64 65  ing sequence| de
cf00: 74 61 69 6c 65 64 20 64 69 73 63 75 73 73 69 6f  tailed discussio
cf10: 6e 20 6f 6e 20 63 6f 6c 6c 61 74 69 6e 67 20 73  n on collating s
cf20: 65 71 75 65 6e 63 65 73 5d 0a 69 6e 20 74 68 65  equences].in the
cf30: 20 5b 64 61 74 61 74 79 70 65 20 7c 20 44 61 74   [datatype | Dat
cf40: 61 74 79 70 65 20 49 6e 20 53 51 4c 69 74 65 33  atype In SQLite3
cf50: 5d 20 64 6f 63 75 6d 65 6e 74 20 66 6f 72 20 61  ] document for a
cf60: 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d  dditional inform
cf70: 61 74 69 6f 6e 2e 0a 3c 2f 70 3e 0a 0a 3c 74 63  ation..</p>..<tc
cf80: 6c 3e 68 64 5f 70 75 74 73 20 22 0a 3c 70 3e 5e  l>hd_puts ".<p>^
cf90: 54 68 65 20 75 6e 61 72 79 20 6f 70 65 72 61 74  The unary operat
cfa0: 6f 72 20 5b 4f 70 65 72 61 74 6f 72 20 2b 5d 20  or [Operator +] 
cfb0: 69 73 20 61 20 6e 6f 2d 6f 70 2e 20 20 5e 49 74  is a no-op.  ^It
cfc0: 20 63 61 6e 20 62 65 20 61 70 70 6c 69 65 64 0a   can be applied.
cfd0: 74 6f 20 73 74 72 69 6e 67 73 2c 20 6e 75 6d 62  to strings, numb
cfe0: 65 72 73 2c 20 62 6c 6f 62 73 20 6f 72 20 4e 55  ers, blobs or NU
cff0: 4c 4c 20 61 6e 64 20 69 74 20 61 6c 77 61 79 73  LL and it always
d000: 20 72 65 74 75 72 6e 73 20 61 20 72 65 73 75 6c   returns a resul
d010: 74 0a 77 69 74 68 20 74 68 65 20 73 61 6d 65 20  t.with the same 
d020: 76 61 6c 75 65 20 61 73 20 74 68 65 20 6f 70 65  value as the ope
d030: 72 61 6e 64 2e 3c 2f 70 3e 22 3c 2f 74 63 6c 3e  rand.</p>"</tcl>
d040: 0a 0a 3c 70 3e 4e 6f 74 65 20 74 68 61 74 20 74  ..<p>Note that t
d050: 68 65 72 65 20 61 72 65 20 74 77 6f 20 76 61 72  here are two var
d060: 69 61 74 69 6f 6e 73 20 6f 66 20 74 68 65 20 65  iations of the e
d070: 71 75 61 6c 73 20 61 6e 64 20 6e 6f 74 20 65 71  quals and not eq
d080: 75 61 6c 73 0a 6f 70 65 72 61 74 6f 72 73 2e 20  uals.operators. 
d090: 20 5e 45 71 75 61 6c 73 20 63 61 6e 20 62 65 20   ^Equals can be 
d0a0: 65 69 74 68 65 72 0a 0a 3c 74 63 6c 3e 0a 68 64  either..<tcl>.hd
d0b0: 5f 70 75 74 73 20 22 5b 4f 70 65 72 61 74 6f 72  _puts "[Operator
d0c0: 20 3d 5d 20 6f 72 20 5b 4f 70 65 72 61 74 6f 72   =] or [Operator
d0d0: 20 3d 3d 5d 2e 0a 5e 54 68 65 20 6e 6f 6e 2d 65   ==]..^The non-e
d0e0: 71 75 61 6c 73 20 6f 70 65 72 61 74 6f 72 20 63  quals operator c
d0f0: 61 6e 20 62 65 20 65 69 74 68 65 72 0a 5b 4f 70  an be either.[Op
d100: 65 72 61 74 6f 72 20 21 3d 5d 20 6f 72 20 5b 4f  erator !=] or [O
d110: 70 65 72 61 74 6f 72 20 7b 26 6c 74 3b 26 67 74  perator {&lt;&gt
d120: 3b 7d 5d 2e 0a 5e 54 68 65 20 5b 4f 70 65 72 61  ;}]..^The [Opera
d130: 74 6f 72 20 7c 7c 5d 20 6f 70 65 72 61 74 6f 72  tor ||] operator
d140: 20 69 73 20 5c 22 63 6f 6e 63 61 74 65 6e 61 74   is \"concatenat
d150: 65 5c 22 20 2d 20 69 74 20 6a 6f 69 6e 73 20 74  e\" - it joins t
d160: 6f 67 65 74 68 65 72 0a 74 68 65 20 74 77 6f 20  ogether.the two 
d170: 73 74 72 69 6e 67 73 20 6f 66 20 69 74 73 20 6f  strings of its o
d180: 70 65 72 61 6e 64 73 2e 0a 5e 54 68 65 20 6f 70  perands..^The op
d190: 65 72 61 74 6f 72 20 5b 4f 70 65 72 61 74 6f 72  erator [Operator
d1a0: 20 25 5d 20 6f 75 74 70 75 74 73 20 74 68 65 20   %] outputs the 
d1b0: 76 61 6c 75 65 20 6f 66 20 69 74 73 20 6c 65 66  value of its lef
d1c0: 74 20 0a 6f 70 65 72 61 6e 64 20 6d 6f 64 75 6c  t .operand modul
d1d0: 6f 20 69 74 73 20 72 69 67 68 74 20 6f 70 65 72  o its right oper
d1e0: 61 6e 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68  and.</p>..<p>^Th
d1f0: 65 20 72 65 73 75 6c 74 20 6f 66 20 61 6e 79 20  e result of any 
d200: 62 69 6e 61 72 79 20 6f 70 65 72 61 74 6f 72 20  binary operator 
d210: 69 73 20 65 69 74 68 65 72 20 61 20 6e 75 6d 65  is either a nume
d220: 72 69 63 20 76 61 6c 75 65 20 6f 72 20 0a 4e 55  ric value or .NU
d230: 4c 4c 2c 20 65 78 63 65 70 74 20 66 6f 72 20 74  LL, except for t
d240: 68 65 20 5b 4f 70 65 72 61 74 6f 72 20 7c 7c 5d  he [Operator ||]
d250: 20 63 6f 6e 63 61 74 65 6e 61 74 69 6f 6e 20 6f   concatenation o
d260: 70 65 72 61 74 6f 72 20 77 68 69 63 68 20 61 6c  perator which al
d270: 77 61 79 73 20 0a 65 76 61 6c 75 61 74 65 73 20  ways .evaluates 
d280: 74 6f 20 65 69 74 68 65 72 20 4e 55 4c 4c 20 6f  to either NULL o
d290: 72 20 61 20 74 65 78 74 20 76 61 6c 75 65 2e 3c  r a text value.<
d2a0: 2f 70 3e 22 0a 0a 68 64 5f 66 72 61 67 6d 65 6e  /p>"..hd_fragmen
d2b0: 74 20 7b 69 73 69 73 6e 6f 74 7d 20 7b 49 53 20  t {isisnot} {IS 
d2c0: 6f 70 65 72 61 74 6f 72 7d 20 7b 49 53 20 4e 4f  operator} {IS NO
d2d0: 54 20 6f 70 65 72 61 74 6f 72 7d 0a 0a 68 64 5f  T operator}..hd_
d2e0: 70 75 74 73 20 22 3c 70 3e 5e 54 68 65 20 5b 4f  puts "<p>^The [O
d2f0: 70 65 72 61 74 6f 72 20 49 53 5d 20 61 6e 64 20  perator IS] and 
d300: 5b 4f 70 65 72 61 74 6f 72 20 7b 49 53 20 4e 4f  [Operator {IS NO
d310: 54 7d 5d 20 6f 70 65 72 61 74 6f 72 73 20 77 6f  T}] operators wo
d320: 72 6b 0a 6c 69 6b 65 20 5b 4f 70 65 72 61 74 6f  rk.like [Operato
d330: 72 20 3d 5d 20 61 6e 64 20 5b 4f 70 65 72 61 74  r =] and [Operat
d340: 6f 72 20 21 3d 5d 20 65 78 63 65 70 74 20 77 68  or !=] except wh
d350: 65 6e 20 6f 6e 65 20 6f 72 20 62 6f 74 68 20 6f  en one or both o
d360: 66 20 74 68 65 0a 6f 70 65 72 61 6e 64 73 20 61  f the.operands a
d370: 72 65 20 4e 55 4c 4c 2e 20 5e 49 6e 20 74 68 69  re NULL. ^In thi
d380: 73 20 63 61 73 65 2c 20 69 66 20 62 6f 74 68 20  s case, if both 
d390: 6f 70 65 72 61 6e 64 73 20 61 72 65 20 4e 55 4c  operands are NUL
d3a0: 4c 2c 20 74 68 65 6e 20 74 68 65 0a 49 53 20 6f  L, then the.IS o
d3b0: 70 65 72 61 74 6f 72 20 65 76 61 6c 75 61 74 65  perator evaluate
d3c0: 73 20 74 6f 20 31 20 28 74 72 75 65 29 20 61 6e  s to 1 (true) an
d3d0: 64 20 74 68 65 20 49 53 20 4e 4f 54 20 6f 70 65  d the IS NOT ope
d3e0: 72 61 74 6f 72 20 65 76 61 6c 75 61 74 65 73 0a  rator evaluates.
d3f0: 74 6f 20 30 20 28 66 61 6c 73 65 29 2e 20 5e 49  to 0 (false). ^I
d400: 66 20 6f 6e 65 20 6f 70 65 72 61 6e 64 20 69 73  f one operand is
d410: 20 4e 55 4c 4c 20 61 6e 64 20 74 68 65 20 6f 74   NULL and the ot
d420: 68 65 72 20 69 73 20 6e 6f 74 2c 20 74 68 65 6e  her is not, then
d430: 20 74 68 65 0a 49 53 20 6f 70 65 72 61 74 6f 72   the.IS operator
d440: 20 65 76 61 6c 75 61 74 65 73 20 74 6f 20 30 20   evaluates to 0 
d450: 28 66 61 6c 73 65 29 20 61 6e 64 20 74 68 65 20  (false) and the 
d460: 49 53 20 4e 4f 54 20 6f 70 65 72 61 74 6f 72 20  IS NOT operator 
d470: 69 73 20 31 20 28 74 72 75 65 29 2e 0a 5e 49 74  is 1 (true)..^It
d480: 20 69 73 20 6e 6f 74 20 70 6f 73 73 69 62 6c 65   is not possible
d490: 20 66 6f 72 20 61 6e 20 49 53 20 6f 72 20 49 53   for an IS or IS
d4a0: 20 4e 4f 54 20 65 78 70 72 65 73 73 69 6f 6e 20   NOT expression 
d4b0: 74 6f 20 65 76 61 6c 75 61 74 65 20 74 6f 20 4e  to evaluate to N
d4c0: 55 4c 4c 2e 0a 5e 4f 70 65 72 61 74 6f 72 73 20  ULL..^Operators 
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 20 68 61 76 65 20 74 68 65 20 73  NOT}] have the s
d500: 61 6d 65 20 0a 70 72 65 63 65 64 65 6e 63 65 20  ame .precedence 
d510: 61 73 20 5b 4f 70 65 72 61 74 6f 72 20 3d 5d 2e  as [Operator =].
d520: 22 0a 0a 3c 74 63 6c 3e 68 64 5f 66 72 61 67 6d  "..<tcl>hd_fragm
d530: 65 6e 74 20 6c 69 74 76 61 6c 75 65 20 7b 6c 69  ent litvalue {li
d540: 74 65 72 61 6c 20 76 61 6c 75 65 7d 3c 2f 74 63  teral value}</tc
d550: 6c 3e 0a 3c 68 33 3e 4c 69 74 65 72 61 6c 20 56  l>.<h3>Literal V
d560: 61 6c 75 65 73 3c 2f 68 33 3e 0a 3c 70 3e 0a 5e  alues</h3>.<p>.^
d570: 41 20 6c 69 74 65 72 61 6c 20 76 61 6c 75 65 20  A literal value 
d580: 69 73 20 61 20 63 6f 6e 73 74 61 6e 74 20 6f 66  is a constant of
d590: 20 73 6f 6d 65 20 6b 69 6e 64 2e 0a 5e 4c 69 74   some kind..^Lit
d5a0: 65 72 61 6c 20 76 61 6c 75 65 73 20 6d 61 79 20  eral values may 
d5b0: 62 65 20 69 6e 74 65 67 65 72 73 2c 20 66 6c 6f  be integers, flo
d5c0: 61 74 69 6e 67 20 70 6f 69 6e 74 20 6e 75 6d 62  ating point numb
d5d0: 65 72 73 2c 20 73 74 72 69 6e 67 73 2c 0a 42 4c  ers, strings,.BL
d5e0: 4f 42 73 2c 20 6f 72 20 4e 55 4c 4c 73 2e 0a 5e  OBs, or NULLs..^
d5f0: 53 63 69 65 6e 74 69 66 69 63 20 6e 6f 74 61 74  Scientific notat
d600: 69 6f 6e 20 69 73 20 73 75 70 70 6f 72 74 65 64  ion is supported
d610: 20 66 6f 72 20 66 6c 6f 61 74 69 6e 67 20 70 6f   for floating po
d620: 69 6e 74 20 6c 69 74 65 72 61 6c 20 76 61 6c 75  int literal valu
d630: 65 73 2e 0a 5e 28 54 68 65 20 22 2e 22 20 63 68  es..^(The "." ch
d640: 61 72 61 63 74 65 72 20 69 73 20 61 6c 77 61 79  aracter is alway
d650: 73 20 75 73 65 64 20 0a 61 73 20 74 68 65 20 64  s used .as the d
d660: 65 63 69 6d 61 6c 20 70 6f 69 6e 74 20 65 76 65  ecimal point eve
d670: 6e 20 69 66 20 74 68 65 20 6c 6f 63 61 6c 65 20  n if the locale 
d680: 73 65 74 74 69 6e 67 20 73 70 65 63 69 66 69 65  setting specifie
d690: 73 20 22 2c 22 20 66 6f 72 0a 74 68 69 73 20 72  s "," for.this r
d6a0: 6f 6c 65 20 2d 20 74 68 65 20 75 73 65 20 6f 66  ole - the use of
d6b0: 20 22 2c 22 20 66 6f 72 20 74 68 65 20 64 65 63   "," for the dec
d6c0: 69 6d 61 6c 20 70 6f 69 6e 74 20 77 6f 75 6c 64  imal point would
d6d0: 20 72 65 73 75 6c 74 20 69 6e 0a 73 79 6e 74 61   result in.synta
d6e0: 63 74 69 63 20 61 6d 62 69 67 75 69 74 79 2e 29  ctic ambiguity.)
d6f0: 5e 20 20 5e 41 20 73 74 72 69 6e 67 20 63 6f 6e  ^  ^A string con
d700: 73 74 61 6e 74 20 69 73 20 66 6f 72 6d 65 64 20  stant is formed 
d710: 62 79 20 65 6e 63 6c 6f 73 69 6e 67 20 74 68 65  by enclosing the
d720: 0a 73 74 72 69 6e 67 20 69 6e 20 73 69 6e 67 6c  .string in singl
d730: 65 20 71 75 6f 74 65 73 20 28 27 29 2e 20 20 5e  e quotes (').  ^
d740: 41 20 73 69 6e 67 6c 65 20 71 75 6f 74 65 20 77  A single quote w
d750: 69 74 68 69 6e 20 74 68 65 20 73 74 72 69 6e 67  ithin the string
d760: 20 63 61 6e 0a 62 65 20 65 6e 63 6f 64 65 64 20   can.be encoded 
d770: 62 79 20 70 75 74 74 69 6e 67 20 74 77 6f 20 73  by putting two s
d780: 69 6e 67 6c 65 20 71 75 6f 74 65 73 20 69 6e 20  ingle quotes in 
d790: 61 20 72 6f 77 20 2d 20 61 73 20 69 6e 20 50 61  a row - as in Pa
d7a0: 73 63 61 6c 2e 0a 43 2d 73 74 79 6c 65 20 65 73  scal..C-style es
d7b0: 63 61 70 65 73 20 75 73 69 6e 67 20 74 68 65 20  capes using the 
d7c0: 62 61 63 6b 73 6c 61 73 68 20 63 68 61 72 61 63  backslash charac
d7d0: 74 65 72 20 61 72 65 20 6e 6f 74 20 73 75 70 70  ter are not supp
d7e0: 6f 72 74 65 64 20 62 65 63 61 75 73 65 0a 74 68  orted because.th
d7f0: 65 79 20 61 72 65 20 6e 6f 74 20 73 74 61 6e 64  ey are not stand
d800: 61 72 64 20 53 51 4c 2e 0a 5e 42 4c 4f 42 20 6c  ard SQL..^BLOB l
d810: 69 74 65 72 61 6c 73 20 61 72 65 20 73 74 72 69  iterals are stri
d820: 6e 67 20 6c 69 74 65 72 61 6c 73 20 63 6f 6e 74  ng literals cont
d830: 61 69 6e 69 6e 67 20 68 65 78 61 64 65 63 69 6d  aining hexadecim
d840: 61 6c 20 64 61 74 61 20 61 6e 64 0a 70 72 65 63  al data and.prec
d850: 65 64 65 64 20 62 79 20 61 20 73 69 6e 67 6c 65  eded by a single
d860: 20 22 78 22 20 6f 72 20 22 58 22 20 63 68 61 72   "x" or "X" char
d870: 61 63 74 65 72 2e 20 20 5e 28 46 6f 72 20 65 78  acter.  ^(For ex
d880: 61 6d 70 6c 65 3a 3c 2f 70 3e 0a 0a 3c 62 6c 6f  ample:</p>..<blo
d890: 63 6b 71 75 6f 74 65 3e 3c 70 72 65 3e 0a 58 27  ckquote><pre>.X'
d8a0: 35 33 35 31 34 43 36 39 37 34 36 35 27 0a 3c 2f  53514C697465'.</
d8b0: 70 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65  pre></blockquote
d8c0: 3e 29 5e 0a 0a 3c 70 3e 0a 5e 41 20 6c 69 74 65  >)^..<p>.^A lite
d8d0: 72 61 6c 20 76 61 6c 75 65 20 63 61 6e 20 61 6c  ral value can al
d8e0: 73 6f 20 62 65 20 74 68 65 20 74 6f 6b 65 6e 20  so be the token 
d8f0: 22 4e 55 4c 4c 22 2e 0a 3c 2f 70 3e 0a 0a 3c 74  "NULL"..</p>..<t
d900: 63 6c 3e 68 64 5f 66 72 61 67 6d 65 6e 74 20 76  cl>hd_fragment v
d910: 61 72 70 61 72 61 6d 20 70 61 72 61 6d 65 74 65  arparam paramete
d920: 72 20 70 61 72 61 6d 65 74 65 72 73 20 7b 62 6f  r parameters {bo
d930: 75 6e 64 20 70 61 72 61 6d 65 74 65 72 7d 20 7b  und parameter} {
d940: 62 6f 75 6e 64 20 70 61 72 61 6d 65 74 65 72 73  bound parameters
d950: 7d 3c 2f 74 63 6c 3e 0a 3c 68 33 3e 50 61 72 61  }</tcl>.<h3>Para
d960: 6d 65 74 65 72 73 3c 2f 68 33 3e 0a 3c 70 3e 0a  meters</h3>.<p>.
d970: 41 20 22 76 61 72 69 61 62 6c 65 22 20 6f 72 20  A "variable" or 
d980: 22 70 61 72 61 6d 65 74 65 72 22 20 74 6f 6b 65  "parameter" toke
d990: 6e 0a 73 70 65 63 69 66 69 65 73 20 61 20 70 6c  n.specifies a pl
d9a0: 61 63 65 68 6f 6c 64 65 72 20 69 6e 20 74 68 65  aceholder in the
d9b0: 20 65 78 70 72 65 73 73 69 6f 6e 20 66 6f 72 20   expression for 
d9c0: 61 20 0a 76 61 6c 75 65 20 74 68 61 74 20 69 73  a .value that is
d9d0: 20 66 69 6c 6c 65 64 20 69 6e 20 61 74 20 72 75   filled in at ru
d9e0: 6e 74 69 6d 65 20 75 73 69 6e 67 20 74 68 65 0a  ntime using the.
d9f0: 5b 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 62 6c  [sqlite3_bind_bl
da00: 6f 62 28 29 20 7c 20 73 71 6c 69 74 65 33 5f 62  ob() | sqlite3_b
da10: 69 6e 64 28 29 5d 20 66 61 6d 69 6c 79 20 6f 66  ind()] family of
da20: 20 43 2f 43 2b 2b 20 69 6e 74 65 72 66 61 63 65   C/C++ interface
da30: 73 2e 0a 50 61 72 61 6d 65 74 65 72 73 20 63 61  s..Parameters ca
da40: 6e 20 74 61 6b 65 20 73 65 76 65 72 61 6c 20 66  n take several f
da50: 6f 72 6d 73 3a 0a 3c 2f 70 3e 0a 0a 3c 62 6c 6f  orms:.</p>..<blo
da60: 63 6b 71 75 6f 74 65 3e 0a 3c 74 61 62 6c 65 3e  ckquote>.<table>
da70: 0a 3c 74 72 3e 0a 3c 74 64 20 61 6c 69 67 6e 3d  .<tr>.<td align=
da80: 22 72 69 67 68 74 22 20 76 61 6c 69 67 6e 3d 22  "right" valign="
da90: 74 6f 70 22 3e 3c 62 3e 3f 3c 2f 62 3e 3c 69 3e  top"><b>?</b><i>
daa0: 4e 4e 4e 3c 2f 69 3e 3c 2f 74 64 3e 3c 74 64 20  NNN</i></td><td 
dab0: 77 69 64 74 68 3d 22 32 30 22 3e 3c 2f 74 64 3e  width="20"></td>
dac0: 0a 3c 74 64 3e 5e 28 41 20 71 75 65 73 74 69 6f  .<td>^(A questio
dad0: 6e 20 6d 61 72 6b 20 66 6f 6c 6c 6f 77 65 64 20  n mark followed 
dae0: 62 79 20 61 20 6e 75 6d 62 65 72 20 3c 69 3e 4e  by a number <i>N
daf0: 4e 4e 3c 2f 69 3e 20 68 6f 6c 64 73 20 61 20 73  NN</i> holds a s
db00: 70 6f 74 20 66 6f 72 20 74 68 65 0a 4e 4e 4e 2d  pot for the.NNN-
db10: 74 68 20 70 61 72 61 6d 65 74 65 72 2e 20 20 4e  th parameter.  N
db20: 4e 4e 20 6d 75 73 74 20 62 65 20 62 65 74 77 65  NN must be betwe
db30: 65 6e 20 31 20 61 6e 64 20 5b 53 51 4c 49 54 45  en 1 and [SQLITE
db40: 5f 4d 41 58 5f 56 41 52 49 41 42 4c 45 5f 4e 55  _MAX_VARIABLE_NU
db50: 4d 42 45 52 5d 2e 29 5e 0a 3c 2f 74 64 3e 0a 3c  MBER].)^.</td>.<
db60: 2f 74 72 3e 0a 3c 74 72 3e 0a 3c 74 64 20 61 6c  /tr>.<tr>.<td al
db70: 69 67 6e 3d 22 72 69 67 68 74 22 20 76 61 6c 69  ign="right" vali
db80: 67 6e 3d 22 74 6f 70 22 3e 3c 62 3e 3f 3c 2f 62  gn="top"><b>?</b
db90: 3e 3c 2f 74 64 3e 3c 74 64 20 77 69 64 74 68 3d  ></td><td width=
dba0: 22 32 30 22 3e 3c 2f 74 64 3e 0a 3c 74 64 3e 5e  "20"></td>.<td>^
dbb0: 41 20 71 75 65 73 74 69 6f 6e 20 6d 61 72 6b 20  A question mark 
dbc0: 74 68 61 74 20 69 73 20 6e 6f 74 20 66 6f 6c 6c  that is not foll
dbd0: 6f 77 65 64 20 62 79 20 61 20 6e 75 6d 62 65 72  owed by a number
dbe0: 20 63 72 65 61 74 65 73 20 61 20 70 61 72 61 6d   creates a param
dbf0: 65 74 65 72 0a 77 69 74 68 20 61 20 6e 75 6d 62  eter.with a numb
dc00: 65 72 20 6f 6e 65 20 67 72 65 61 74 65 72 20 74  er one greater t
dc10: 68 61 6e 20 74 68 65 20 6c 61 72 67 65 73 74 20  han the largest 
dc20: 70 61 72 61 6d 65 74 65 72 20 6e 75 6d 62 65 72  parameter number
dc30: 20 61 6c 72 65 61 64 79 20 61 73 73 69 67 6e 65   already assigne
dc40: 64 2e 0a 5e 49 66 20 74 68 69 73 20 6d 65 61 6e  d..^If this mean
dc50: 73 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 20  s the parameter 
dc60: 6e 75 6d 62 65 72 20 69 73 20 67 72 65 61 74 65  number is greate
dc70: 72 20 74 68 61 6e 0a 5b 53 51 4c 49 54 45 5f 4d  r than.[SQLITE_M
dc80: 41 58 5f 56 41 52 49 41 42 4c 45 5f 4e 55 4d 42  AX_VARIABLE_NUMB
dc90: 45 52 5d 2c 20 69 74 20 69 73 20 61 6e 20 65 72  ER], it is an er
dca0: 72 6f 72 2e 0a 3c 2f 74 64 3e 0a 3c 2f 74 72 3e  ror..</td>.</tr>
dcb0: 0a 3c 74 72 3e 0a 3c 74 64 20 61 6c 69 67 6e 3d  .<tr>.<td align=
dcc0: 22 72 69 67 68 74 22 20 76 61 6c 69 67 6e 3d 22  "right" valign="
dcd0: 74 6f 70 22 3e 3c 62 3e 3a 3c 2f 62 3e 3c 69 3e  top"><b>:</b><i>
dce0: 41 41 41 41 3c 2f 69 3e 3c 2f 74 64 3e 3c 74 64  AAAA</i></td><td
dcf0: 20 77 69 64 74 68 3d 22 32 30 22 3e 3c 2f 74 64   width="20"></td
dd00: 3e 0a 3c 74 64 3e 5e 41 20 63 6f 6c 6f 6e 20 66  >.<td>^A colon f
dd10: 6f 6c 6c 6f 77 65 64 20 62 79 20 61 6e 20 69 64  ollowed by an id
dd20: 65 6e 74 69 66 69 65 72 20 6e 61 6d 65 20 68 6f  entifier name ho
dd30: 6c 64 73 20 61 20 73 70 6f 74 20 66 6f 72 20 61  lds a spot for a
dd40: 20 0a 5b 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f   .[sqlite3_bind_
dd50: 70 61 72 61 6d 65 74 65 72 5f 6e 61 6d 65 7c 6e  parameter_name|n
dd60: 61 6d 65 64 20 70 61 72 61 6d 65 74 65 72 5d 20  amed parameter] 
dd70: 77 69 74 68 20 74 68 65 20 6e 61 6d 65 20 3a 41  with the name :A
dd80: 41 41 41 2e 20 20 0a 5e 28 4e 61 6d 65 64 20 70  AAA.  .^(Named p
dd90: 61 72 61 6d 65 74 65 72 73 20 61 72 65 20 61 6c  arameters are al
dda0: 73 6f 20 6e 75 6d 62 65 72 65 64 2e 20 54 68 65  so numbered. The
ddb0: 20 6e 75 6d 62 65 72 20 61 73 73 69 67 6e 65 64   number assigned
ddc0: 20 69 73 20 6f 6e 65 20 67 72 65 61 74 65 72 20   is one greater 
ddd0: 74 68 61 6e 0a 74 68 65 20 6c 61 72 67 65 73 74  than.the largest
dde0: 20 70 61 72 61 6d 65 74 65 72 20 6e 75 6d 62 65   parameter numbe
ddf0: 72 20 61 6c 72 65 61 64 79 20 61 73 73 69 67 6e  r already assign
de00: 65 64 2e 29 5e 20 5e 49 66 20 74 68 69 73 20 6d  ed.)^ ^If this m
de10: 65 61 6e 73 20 74 68 65 20 70 61 72 61 6d 65 74  eans the paramet
de20: 65 72 0a 77 6f 75 6c 64 20 62 65 20 61 73 73 69  er.would be assi
de30: 67 6e 65 64 20 61 20 6e 75 6d 62 65 72 20 67 72  gned a number gr
de40: 65 61 74 65 72 20 74 68 61 6e 20 5b 53 51 4c 49  eater than [SQLI
de50: 54 45 5f 4d 41 58 5f 56 41 52 49 41 42 4c 45 5f  TE_MAX_VARIABLE_
de60: 4e 55 4d 42 45 52 5d 2c 20 69 74 20 69 73 0a 61  NUMBER], it is.a
de70: 6e 20 65 72 72 6f 72 2e 20 54 6f 20 61 76 6f 69  n error. To avoi
de80: 64 20 63 6f 6e 66 75 73 69 6f 6e 2c 20 69 74 20  d confusion, it 
de90: 69 73 20 62 65 73 74 20 74 6f 20 61 76 6f 69 64  is best to avoid
dea0: 20 6d 69 78 69 6e 67 20 6e 61 6d 65 64 20 61 6e   mixing named an
deb0: 64 20 6e 75 6d 62 65 72 65 64 0a 70 61 72 61 6d  d numbered.param
dec0: 65 74 65 72 73 2e 3c 2f 74 64 3e 0a 3c 2f 74 72  eters.</td>.</tr
ded0: 3e 0a 3c 74 72 3e 0a 3c 74 64 20 61 6c 69 67 6e  >.<tr>.<td align
dee0: 3d 22 72 69 67 68 74 22 20 76 61 6c 69 67 6e 3d  ="right" valign=
def0: 22 74 6f 70 22 3e 3c 62 3e 40 3c 2f 62 3e 3c 69  "top"><b>@</b><i
df00: 3e 41 41 41 41 3c 2f 69 3e 3c 2f 74 64 3e 3c 74  >AAAA</i></td><t
df10: 64 20 77 69 64 74 68 3d 22 32 30 22 3e 3c 2f 74  d width="20"></t
df20: 64 3e 0a 3c 74 64 3e 5e 41 6e 20 22 61 74 22 20  d>.<td>^An "at" 
df30: 73 69 67 6e 20 77 6f 72 6b 73 20 65 78 61 63 74  sign works exact
df40: 6c 79 20 6c 69 6b 65 20 61 20 63 6f 6c 6f 6e 2c  ly like a colon,
df50: 20 65 78 63 65 70 74 20 74 68 61 74 20 74 68 65   except that the
df60: 20 6e 61 6d 65 20 6f 66 0a 74 68 65 20 70 61 72   name of.the par
df70: 61 6d 65 74 65 72 20 63 72 65 61 74 65 64 20 69  ameter created i
df80: 73 20 40 41 41 41 41 2e 3c 2f 74 64 3e 0a 3c 2f  s @AAAA.</td>.</
df90: 74 72 3e 0a 3c 74 72 3e 0a 3c 74 64 20 61 6c 69  tr>.<tr>.<td ali
dfa0: 67 6e 3d 22 72 69 67 68 74 22 20 76 61 6c 69 67  gn="right" valig
dfb0: 6e 3d 22 74 6f 70 22 3e 3c 62 3e 24 3c 2f 62 3e  n="top"><b>$</b>
dfc0: 3c 69 3e 41 41 41 41 3c 2f 69 3e 3c 2f 74 64 3e  <i>AAAA</i></td>
dfd0: 3c 74 64 20 77 69 64 74 68 3d 22 32 30 22 3e 3c  <td width="20"><
dfe0: 2f 74 64 3e 0a 3c 74 64 3e 5e 41 20 64 6f 6c 6c  /td>.<td>^A doll
dff0: 61 72 2d 73 69 67 6e 20 66 6f 6c 6c 6f 77 65 64  ar-sign followed
e000: 20 62 79 20 61 6e 20 69 64 65 6e 74 69 66 69 65   by an identifie
e010: 72 20 6e 61 6d 65 20 61 6c 73 6f 20 68 6f 6c 64  r name also hold
e020: 73 20 61 20 73 70 6f 74 20 66 6f 72 20 61 20 6e  s a spot for a n
e030: 61 6d 65 64 0a 70 61 72 61 6d 65 74 65 72 20 77  amed.parameter w
e040: 69 74 68 20 74 68 65 20 6e 61 6d 65 20 24 41 41  ith the name $AA
e050: 41 41 2e 20 20 5e 28 54 68 65 20 69 64 65 6e 74  AA.  ^(The ident
e060: 69 66 69 65 72 20 6e 61 6d 65 20 69 6e 20 74 68  ifier name in th
e070: 69 73 20 63 61 73 65 20 63 61 6e 20 69 6e 63 6c  is case can incl
e080: 75 64 65 0a 6f 6e 65 20 6f 72 20 6d 6f 72 65 20  ude.one or more 
e090: 6f 63 63 75 72 72 65 6e 63 65 73 20 6f 66 20 22  occurrences of "
e0a0: 3a 3a 22 20 61 6e 64 20 61 20 73 75 66 66 69 78  ::" and a suffix
e0b0: 20 65 6e 63 6c 6f 73 65 64 20 69 6e 20 22 28 2e   enclosed in "(.
e0c0: 2e 2e 29 22 20 63 6f 6e 74 61 69 6e 69 6e 67 0a  ..)" containing.
e0d0: 61 6e 79 20 74 65 78 74 20 61 74 20 61 6c 6c 2e  any text at all.
e0e0: 29 5e 20 20 54 68 69 73 20 73 79 6e 74 61 78 20  )^  This syntax 
e0f0: 69 73 20 74 68 65 20 66 6f 72 6d 20 6f 66 20 61  is the form of a
e100: 20 76 61 72 69 61 62 6c 65 20 6e 61 6d 65 20 69   variable name i
e110: 6e 20 74 68 65 0a 5b 68 74 74 70 3a 2f 2f 77 77  n the.[http://ww
e120: 77 2e 74 63 6c 2e 74 6b 2f 20 7c 20 54 63 6c 20  w.tcl.tk/ | Tcl 
e130: 70 72 6f 67 72 61 6d 6d 69 6e 67 20 6c 61 6e 67  programming lang
e140: 75 61 67 65 5d 2e 20 20 54 68 65 20 70 72 65 73  uage].  The pres
e150: 65 6e 63 65 0a 6f 66 20 74 68 69 73 20 73 79 6e  ence.of this syn
e160: 74 61 78 20 72 65 73 75 6c 74 73 20 66 72 6f 6d  tax results from
e170: 20 74 68 65 20 66 61 63 74 20 74 68 61 74 20 53   the fact that S
e180: 51 4c 69 74 65 20 69 73 20 72 65 61 6c 6c 79 20  QLite is really 
e190: 61 20 0a 5b 54 63 6c 20 65 78 74 65 6e 73 69 6f  a .[Tcl extensio
e1a0: 6e 5d 20 74 68 61 74 20 68 61 73 20 65 73 63 61  n] that has esca
e1b0: 70 65 64 20 69 6e 74 6f 20 74 68 65 20 77 69 6c  ped into the wil
e1c0: 64 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 2f  d.</td>.</tr>.</
e1d0: 74 61 62 6c 65 3e 0a 3c 2f 62 6c 6f 63 6b 71 75  table>.</blockqu
e1e0: 6f 74 65 3e 0a 0a 3c 70 3e 5e 50 61 72 61 6d 65  ote>..<p>^Parame
e1f0: 74 65 72 73 20 74 68 61 74 20 61 72 65 20 6e 6f  ters that are no
e200: 74 20 61 73 73 69 67 6e 65 64 20 76 61 6c 75 65  t assigned value
e210: 73 20 75 73 69 6e 67 0a 5b 73 71 6c 69 74 65 33  s using.[sqlite3
e220: 5f 62 69 6e 64 5f 62 6c 6f 62 28 29 20 7c 20 73  _bind_blob() | s
e230: 71 6c 69 74 65 33 5f 62 69 6e 64 28 29 5d 20 61  qlite3_bind()] a
e240: 72 65 20 74 72 65 61 74 65 64 0a 61 73 20 4e 55  re treated.as NU
e250: 4c 4c 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 68 64  LL.</p>..<tcl>hd
e260: 5f 66 72 61 67 6d 65 6e 74 20 6c 69 6b 65 20 4c  _fragment like L
e270: 49 4b 45 20 45 53 43 41 50 45 3c 2f 74 63 6c 3e  IKE ESCAPE</tcl>
e280: 0a 3c 68 33 3e 54 68 65 20 4c 49 4b 45 20 61 6e  .<h3>The LIKE an
e290: 64 20 47 4c 4f 42 20 6f 70 65 72 61 74 6f 72 73  d GLOB operators
e2a0: 3c 2f 68 33 3e 0a 3c 70 3e 5e 54 68 65 20 4c 49  </h3>.<p>^The LI
e2b0: 4b 45 20 6f 70 65 72 61 74 6f 72 20 64 6f 65 73  KE operator does
e2c0: 20 61 20 70 61 74 74 65 72 6e 20 6d 61 74 63 68   a pattern match
e2d0: 69 6e 67 20 63 6f 6d 70 61 72 69 73 6f 6e 2e 20  ing comparison. 
e2e0: 5e 54 68 65 20 6f 70 65 72 61 6e 64 0a 74 6f 20  ^The operand.to 
e2f0: 74 68 65 20 72 69 67 68 74 20 6f 66 20 74 68 65  the right of the
e300: 20 4c 49 4b 45 20 6f 70 65 72 61 74 6f 72 20 63   LIKE operator c
e310: 6f 6e 74 61 69 6e 73 20 74 68 65 20 70 61 74 74  ontains the patt
e320: 65 72 6e 20 61 6e 64 20 74 68 65 20 6c 65 66 74  ern and the left
e330: 20 68 61 6e 64 0a 6f 70 65 72 61 6e 64 20 63 6f   hand.operand co
e340: 6e 74 61 69 6e 73 20 74 68 65 20 73 74 72 69 6e  ntains the strin
e350: 67 20 74 6f 20 6d 61 74 63 68 20 61 67 61 69 6e  g to match again
e360: 73 74 20 74 68 65 20 70 61 74 74 65 72 6e 2e 0a  st the pattern..
e370: 0a 3c 74 63 6c 3e 68 64 5f 70 75 74 73 20 22 5e  .<tcl>hd_puts "^
e380: 41 20 70 65 72 63 65 6e 74 20 73 79 6d 62 6f 6c  A percent symbol
e390: 20 28 5c 22 25 5c 22 29 20 69 6e 20 74 68 65 20   (\"%\") in the 
e3a0: 4c 49 4b 45 20 70 61 74 74 65 72 6e 20 6d 61 74  LIKE pattern mat
e3b0: 63 68 65 73 20 61 6e 79 0a 73 65 71 75 65 6e 63  ches any.sequenc
e3c0: 65 20 6f 66 20 7a 65 72 6f 20 6f 72 20 6d 6f 72  e of zero or mor
e3d0: 65 20 63 68 61 72 61 63 74 65 72 73 20 69 6e 20  e characters in 
e3e0: 74 68 65 20 73 74 72 69 6e 67 2e 20 20 5e 41 6e  the string.  ^An
e3f0: 20 75 6e 64 65 72 73 63 6f 72 65 0a 28 5c 22 5f   underscore.(\"_
e400: 5c 22 29 20 69 6e 20 74 68 65 20 4c 49 4b 45 20  \") in the LIKE 
e410: 70 61 74 74 65 72 6e 20 6d 61 74 63 68 65 73 20  pattern matches 
e420: 61 6e 79 20 73 69 6e 67 6c 65 20 63 68 61 72 61  any single chara
e430: 63 74 65 72 20 69 6e 20 74 68 65 0a 73 74 72 69  cter in the.stri
e440: 6e 67 2e 20 20 5e 28 41 6e 79 20 6f 74 68 65 72  ng.  ^(Any other
e450: 20 63 68 61 72 61 63 74 65 72 20 6d 61 74 63 68   character match
e460: 65 73 20 69 74 73 65 6c 66 20 6f 72 20 69 74 73  es itself or its
e470: 20 6c 6f 77 65 72 2f 75 70 70 65 72 20 63 61 73   lower/upper cas
e480: 65 0a 65 71 75 69 76 61 6c 65 6e 74 20 28 69 2e  e.equivalent (i.
e490: 65 2e 20 63 61 73 65 2d 69 6e 73 65 6e 73 69 74  e. case-insensit
e4a0: 69 76 65 20 6d 61 74 63 68 69 6e 67 29 2e 29 5e  ive matching).)^
e4b0: 20 20 28 41 20 62 75 67 3a 20 5e 53 51 4c 69 74    (A bug: ^SQLit
e4c0: 65 20 6f 6e 6c 79 0a 75 6e 64 65 72 73 74 61 6e  e only.understan
e4d0: 64 73 20 75 70 70 65 72 2f 6c 6f 77 65 72 20 63  ds upper/lower c
e4e0: 61 73 65 20 66 6f 72 20 41 53 43 49 49 20 63 68  ase for ASCII ch
e4f0: 61 72 61 63 74 65 72 73 20 62 79 20 64 65 66 61  aracters by defa
e500: 75 6c 74 2e 20 20 5e 54 68 65 0a 4c 49 4b 45 20  ult.  ^The.LIKE 
e510: 6f 70 65 72 61 74 6f 72 20 69 73 20 63 61 73 65  operator is case
e520: 20 73 65 6e 73 69 74 69 76 65 20 62 79 20 64 65   sensitive by de
e530: 66 61 75 6c 74 20 66 6f 72 20 75 6e 69 63 6f 64  fault for unicod
e540: 65 20 63 68 61 72 61 63 74 65 72 73 20 74 68 61  e characters tha
e550: 74 20 61 72 65 0a 62 65 79 6f 6e 64 20 74 68 65  t are.beyond the
e560: 20 41 53 43 49 49 20 72 61 6e 67 65 2e 20 20 46   ASCII range.  F
e570: 6f 72 20 65 78 61 6d 70 6c 65 2c 0a 5e 74 68 65  or example,.^the
e580: 20 65 78 70 72 65 73 73 69 6f 6e 20 3c 62 3e 27   expression <b>'
e590: 61 27 26 6e 62 73 70 3b 4c 49 4b 45 26 6e 62 73  a'&nbsp;LIKE&nbs
e5a0: 70 3b 27 41 27 3c 2f 62 3e 0a 69 73 20 54 52 55  p;'A'</b>.is TRU
e5b0: 45 20 62 75 74 20 3c 62 3e 27 26 61 65 6c 69 67  E but <b>'&aelig
e5c0: 3b 27 26 6e 62 73 70 3b 4c 49 4b 45 26 6e 62 73  ;'&nbsp;LIKE&nbs
e5d0: 70 3b 27 26 41 45 6c 69 67 3b 27 3c 2f 62 3e 20  p;'&AElig;'</b> 
e5e0: 69 73 20 46 41 4c 53 45 2e 29 3c 70 3e 22 3c 2f  is FALSE.)<p>"</
e5f0: 74 63 6c 3e 0a 0a 3c 70 3e 5e 49 66 20 74 68 65  tcl>..<p>^If the
e600: 20 6f 70 74 69 6f 6e 61 6c 20 45 53 43 41 50 45   optional ESCAPE
e610: 20 63 6c 61 75 73 65 20 69 73 20 70 72 65 73 65   clause is prese
e620: 6e 74 2c 20 74 68 65 6e 20 74 68 65 20 65 78 70  nt, then the exp
e630: 72 65 73 73 69 6f 6e 0a 66 6f 6c 6c 6f 77 69 6e  ression.followin
e640: 67 20 74 68 65 20 45 53 43 41 50 45 20 6b 65 79  g the ESCAPE key
e650: 77 6f 72 64 20 6d 75 73 74 20 65 76 61 6c 75 61  word must evalua
e660: 74 65 20 74 6f 20 61 20 73 74 72 69 6e 67 20 63  te to a string c
e670: 6f 6e 73 69 73 74 69 6e 67 20 6f 66 0a 61 20 73  onsisting of.a s
e680: 69 6e 67 6c 65 20 63 68 61 72 61 63 74 65 72 2e  ingle character.
e690: 20 5e 54 68 69 73 20 63 68 61 72 61 63 74 65 72   ^This character
e6a0: 20 6d 61 79 20 62 65 20 75 73 65 64 20 69 6e 20   may be used in 
e6b0: 74 68 65 20 4c 49 4b 45 20 70 61 74 74 65 72 6e  the LIKE pattern
e6c0: 0a 74 6f 20 69 6e 63 6c 75 64 65 20 6c 69 74 65  .to include lite
e6d0: 72 61 6c 20 70 65 72 63 65 6e 74 20 6f 72 20 75  ral percent or u
e6e0: 6e 64 65 72 73 63 6f 72 65 20 63 68 61 72 61 63  nderscore charac
e6f0: 74 65 72 73 2e 20 5e 54 68 65 20 65 73 63 61 70  ters. ^The escap
e700: 65 0a 63 68 61 72 61 63 74 65 72 20 66 6f 6c 6c  e.character foll
e710: 6f 77 65 64 20 62 79 20 61 20 70 65 72 63 65 6e  owed by a percen
e720: 74 20 73 79 6d 62 6f 6c 20 28 25 29 2c 20 75 6e  t symbol (%), un
e730: 64 65 72 73 63 6f 72 65 20 28 5f 29 2c 20 6f 72  derscore (_), or
e740: 20 61 20 73 65 63 6f 6e 64 0a 69 6e 73 74 61 6e   a second.instan
e750: 63 65 20 6f 66 20 74 68 65 20 65 73 63 61 70 65  ce of the escape
e760: 20 63 68 61 72 61 63 74 65 72 20 69 74 73 65 6c   character itsel
e770: 66 20 6d 61 74 63 68 65 73 20 61 0a 6c 69 74 65  f matches a.lite
e780: 72 61 6c 20 70 65 72 63 65 6e 74 20 73 79 6d 62  ral percent symb
e790: 6f 6c 2c 20 75 6e 64 65 72 73 63 6f 72 65 2c 20  ol, underscore, 
e7a0: 6f 72 20 61 20 73 69 6e 67 6c 65 20 65 73 63 61  or a single esca
e7b0: 70 65 20 63 68 61 72 61 63 74 65 72 2c 0a 72 65  pe character,.re
e7c0: 73 70 65 63 74 69 76 65 6c 79 2e 0a 0a 3c 70 3e  spectively...<p>
e7d0: 5e 54 68 65 20 69 6e 66 69 78 20 4c 49 4b 45 20  ^The infix LIKE 
e7e0: 6f 70 65 72 61 74 6f 72 20 69 73 20 69 6d 70 6c  operator is impl
e7f0: 65 6d 65 6e 74 65 64 20 62 79 20 63 61 6c 6c 69  emented by calli
e800: 6e 67 20 74 68 65 0a 61 70 70 6c 69 63 61 74 69  ng the.applicati
e810: 6f 6e 2d 64 65 66 69 6e 65 64 20 53 51 4c 20 66  on-defined SQL f
e820: 75 6e 63 74 69 6f 6e 73 20 5b 6c 69 6b 65 28 3c  unctions [like(<
e830: 69 3e 59 3c 2f 69 3e 2c 3c 69 3e 58 3c 2f 69 3e  i>Y</i>,<i>X</i>
e840: 29 5d 20 6f 72 0a 5b 6c 69 6b 65 28 3c 69 3e 59  )] or.[like(<i>Y
e850: 3c 2f 69 3e 2c 3c 69 3e 58 3c 2f 69 3e 2c 3c 69  </i>,<i>X</i>,<i
e860: 3e 5a 3c 2f 69 3e 29 5d 3c 2f 61 3e 2e 3c 2f 70  >Z</i>)]</a>.</p
e870: 3e 0a 0a 3c 70 3e 5e 54 68 65 20 4c 49 4b 45 20  >..<p>^The LIKE 
e880: 6f 70 65 72 61 74 6f 72 20 63 61 6e 20 62 65 20  operator can be 
e890: 6d 61 64 65 20 63 61 73 65 20 73 65 6e 73 69 74  made case sensit
e8a0: 69 76 65 20 75 73 69 6e 67 20 74 68 65 0a 5b 63  ive using the.[c
e8b0: 61 73 65 5f 73 65 6e 73 69 74 69 76 65 5f 6c 69  ase_sensitive_li
e8c0: 6b 65 20 70 72 61 67 6d 61 5d 2e 3c 2f 70 3e 0a  ke pragma].</p>.
e8d0: 0a 3c 74 63 6c 3e 68 64 5f 66 72 61 67 6d 65 6e  .<tcl>hd_fragmen
e8e0: 74 20 67 6c 6f 62 20 47 4c 4f 42 3c 2f 74 63 6c  t glob GLOB</tcl
e8f0: 3e 0a 3c 70 3e 5e 54 68 65 20 47 4c 4f 42 20 6f  >.<p>^The GLOB o
e900: 70 65 72 61 74 6f 72 20 69 73 20 73 69 6d 69 6c  perator is simil
e910: 61 72 20 74 6f 20 4c 49 4b 45 20 62 75 74 20 75  ar to LIKE but u
e920: 73 65 73 20 74 68 65 20 55 6e 69 78 0a 66 69 6c  ses the Unix.fil
e930: 65 20 67 6c 6f 62 62 69 6e 67 20 73 79 6e 74 61  e globbing synta
e940: 78 20 66 6f 72 20 69 74 73 20 77 69 6c 64 63 61  x for its wildca
e950: 72 64 73 2e 20 20 5e 41 6c 73 6f 2c 20 47 4c 4f  rds.  ^Also, GLO
e960: 42 20 69 73 20 63 61 73 65 0a 73 65 6e 73 69 74  B is case.sensit
e970: 69 76 65 2c 20 75 6e 6c 69 6b 65 20 4c 49 4b 45  ive, unlike LIKE
e980: 2e 20 20 5e 42 6f 74 68 20 47 4c 4f 42 20 61 6e  .  ^Both GLOB an
e990: 64 20 4c 49 4b 45 20 6d 61 79 20 62 65 20 70 72  d LIKE may be pr
e9a0: 65 63 65 64 65 64 20 62 79 0a 74 68 65 20 4e 4f  eceded by.the NO
e9b0: 54 20 6b 65 79 77 6f 72 64 20 74 6f 20 69 6e 76  T keyword to inv
e9c0: 65 72 74 20 74 68 65 20 73 65 6e 73 65 20 6f 66  ert the sense of
e9d0: 20 74 68 65 20 74 65 73 74 2e 20 20 5e 54 68 65   the test.  ^The
e9e0: 20 69 6e 66 69 78 20 47 4c 4f 42 20 0a 6f 70 65   infix GLOB .ope
e9f0: 72 61 74 6f 72 20 69 73 20 69 6d 70 6c 65 6d 65  rator is impleme
ea00: 6e 74 65 64 20 62 79 20 63 61 6c 6c 69 6e 67 20  nted by calling 
ea10: 74 68 65 20 66 75 6e 63 74 69 6f 6e 0a 5b 67 6c  the function.[gl
ea20: 6f 62 28 3c 69 3e 59 3c 2f 69 3e 2c 3c 69 3e 58  ob(<i>Y</i>,<i>X
ea30: 3c 2f 69 3e 29 5d 20 61 6e 64 20 63 61 6e 20 62  </i>)] and can b
ea40: 65 20 6d 6f 64 69 66 69 65 64 20 62 79 20 6f 76  e modified by ov
ea50: 65 72 72 69 64 69 6e 67 0a 74 68 61 74 20 66 75  erriding.that fu
ea60: 6e 63 74 69 6f 6e 2e 3c 2f 70 3e 0a 0a 3c 74 63  nction.</p>..<tc
ea70: 6c 3e 68 64 5f 66 72 61 67 6d 65 6e 74 20 72 65  l>hd_fragment re
ea80: 67 65 78 70 20 52 45 47 45 58 50 3c 2f 74 63 6c  gexp REGEXP</tcl
ea90: 3e 0a 3c 70 3e 5e 54 68 65 20 52 45 47 45 58 50  >.<p>^The REGEXP
eaa0: 20 6f 70 65 72 61 74 6f 72 20 69 73 20 61 20 73   operator is a s
eab0: 70 65 63 69 61 6c 20 73 79 6e 74 61 78 20 66 6f  pecial syntax fo
eac0: 72 20 74 68 65 20 72 65 67 65 78 70 28 29 0a 75  r the regexp().u
ead0: 73 65 72 20 66 75 6e 63 74 69 6f 6e 2e 20 20 5e  ser function.  ^
eae0: 4e 6f 20 72 65 67 65 78 70 28 29 20 75 73 65 72  No regexp() user
eaf0: 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 64 65 66   function is def
eb00: 69 6e 65 64 20 62 79 20 64 65 66 61 75 6c 74 0a  ined by default.
eb10: 61 6e 64 20 73 6f 20 75 73 65 20 6f 66 20 74 68  and so use of th
eb20: 65 20 52 45 47 45 58 50 20 6f 70 65 72 61 74 6f  e REGEXP operato
eb30: 72 20 77 69 6c 6c 20 6e 6f 72 6d 61 6c 6c 79 20  r will normally 
eb40: 72 65 73 75 6c 74 20 69 6e 20 61 6e 0a 65 72 72  result in an.err
eb50: 6f 72 20 6d 65 73 73 61 67 65 2e 20 20 5e 49 66  or message.  ^If
eb60: 20 61 20 5b 61 70 70 6c 69 63 61 74 69 6f 6e 2d   a [application-
eb70: 64 65 66 69 6e 65 64 20 53 51 4c 20 66 75 6e 63  defined SQL func
eb80: 74 69 6f 6e 5d 20 6e 61 6d 65 64 20 22 72 65 67  tion] named "reg
eb90: 65 78 70 22 0a 69 73 20 61 64 64 65 64 20 61 74  exp".is added at
eba0: 20 72 75 6e 2d 74 69 6d 65 2c 20 74 68 61 74 20   run-time, that 
ebb0: 66 75 6e 63 74 69 6f 6e 20 77 69 6c 6c 20 62 65  function will be
ebc0: 20 63 61 6c 6c 65 64 20 69 6e 20 6f 72 64 65 72   called in order
ebd0: 0a 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 74 68  .to implement th
ebe0: 65 20 52 45 47 45 58 50 20 6f 70 65 72 61 74 6f  e REGEXP operato
ebf0: 72 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 68 64 5f  r.</p>..<tcl>hd_
ec00: 66 72 61 67 6d 65 6e 74 20 6d 61 74 63 68 20 4d  fragment match M
ec10: 41 54 43 48 3c 2f 74 63 6c 3e 0a 3c 70 3e 5e 54  ATCH</tcl>.<p>^T
ec20: 68 65 20 4d 41 54 43 48 20 6f 70 65 72 61 74 6f  he MATCH operato
ec30: 72 20 69 73 20 61 20 73 70 65 63 69 61 6c 20 73  r is a special s
ec40: 79 6e 74 61 78 20 66 6f 72 20 74 68 65 20 6d 61  yntax for the ma
ec50: 74 63 68 28 29 0a 61 70 70 6c 69 63 61 74 69 6f  tch().applicatio
ec60: 6e 2d 64 65 66 69 6e 65 64 20 66 75 6e 63 74 69  n-defined functi
ec70: 6f 6e 2e 20 20 5e 54 68 65 20 64 65 66 61 75 6c  on.  ^The defaul
ec80: 74 20 6d 61 74 63 68 28 29 20 66 75 6e 63 74 69  t match() functi
ec90: 6f 6e 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  on implementatio
eca0: 6e 0a 72 61 69 73 65 73 20 61 6e 20 65 78 63 65  n.raises an exce
ecb0: 70 74 69 6f 6e 20 61 6e 64 20 69 73 20 6e 6f 74  ption and is not
ecc0: 20 72 65 61 6c 6c 79 20 75 73 65 66 75 6c 20 66   really useful f
ecd0: 6f 72 20 61 6e 79 74 68 69 6e 67 2e 0a 5e 42 75  or anything..^Bu
ece0: 74 20 65 78 74 65 6e 73 69 6f 6e 73 20 63 61 6e  t extensions can
ecf0: 20 6f 76 65 72 72 69 64 65 20 74 68 65 20 6d 61   override the ma
ed00: 74 63 68 28 29 20 66 75 6e 63 74 69 6f 6e 20 77  tch() function w
ed10: 69 74 68 20 6d 6f 72 65 0a 68 65 6c 70 66 75 6c  ith more.helpful
ed20: 20 6c 6f 67 69 63 2e 3c 2f 70 3e 0a 0a 3c 74 63   logic.</p>..<tc
ed30: 6c 3e 68 64 5f 66 72 61 67 6d 65 6e 74 20 62 65  l>hd_fragment be
ed40: 74 77 65 65 6e 20 42 45 54 57 45 45 4e 3c 2f 74  tween BETWEEN</t
ed50: 63 6c 3e 0a 3c 68 33 3e 54 68 65 20 42 45 54 57  cl>.<h3>The BETW
ed60: 45 45 4e 20 6f 70 65 72 61 74 6f 72 3c 2f 68 33  EEN operator</h3
ed70: 3e 0a 3c 70 3e 5e 28 54 68 65 20 42 45 54 57 45  >.<p>^(The BETWE
ed80: 45 4e 20 6f 70 65 72 61 74 6f 72 20 69 73 20 6c  EN operator is l
ed90: 6f 67 69 63 61 6c 6c 79 20 65 71 75 69 76 61 6c  ogically equival
eda0: 65 6e 74 20 74 6f 20 61 20 70 61 69 72 20 6f 66  ent to a pair of
edb0: 20 63 6f 6d 70 61 72 69 73 6f 6e 73 2e 0a 22 3c   comparisons.."<
edc0: 69 3e 78 3c 2f 69 3e 20 3c 62 3e 42 45 54 57 45  i>x</i> <b>BETWE
edd0: 45 4e 3c 2f 62 3e 20 3c 69 3e 79 3c 2f 69 3e 20  EN</b> <i>y</i> 
ede0: 3c 62 3e 41 4e 44 3c 2f 62 3e 20 3c 69 3e 7a 3c  <b>AND</b> <i>z<
edf0: 2f 69 3e 22 20 69 73 20 0a 65 71 75 69 76 61 6c  /i>" is .equival
ee00: 65 6e 74 20 74 6f 20 0a 22 3c 69 3e 78 3c 2f 69  ent to ."<i>x</i
ee10: 3e 3c 62 3e 26 67 74 3b 3d 3c 2f 62 3e 3c 69 3e  ><b>&gt;=</b><i>
ee20: 79 3c 2f 69 3e 20 3c 62 3e 41 4e 44 3c 2f 62 3e  y</i> <b>AND</b>
ee30: 20 3c 69 3e 78 3c 2f 69 3e 3c 62 3e 26 6c 74 3b   <i>x</i><b>&lt;
ee40: 3d 3c 2f 62 3e 3c 69 3e 7a 3c 2f 69 3e 22 20 65  =</b><i>z</i>" e
ee50: 78 63 65 70 74 0a 74 68 61 74 20 77 69 74 68 20  xcept.that with 
ee60: 42 45 54 57 45 45 4e 2c 20 74 68 65 20 3c 69 3e  BETWEEN, the <i>
ee70: 78 3c 2f 69 3e 20 65 78 70 72 65 73 73 69 6f 6e  x</i> expression
ee80: 20 69 73 20 6f 6e 6c 79 20 65 76 61 6c 75 61 74   is only evaluat
ee90: 65 64 20 6f 6e 63 65 2e 29 5e 0a 5e 54 68 65 20  ed once.)^.^The 
eea0: 70 72 65 63 65 64 65 6e 63 65 20 6f 66 20 74 68  precedence of th
eeb0: 65 20 42 45 54 57 45 45 4e 20 6f 70 65 72 61 74  e BETWEEN operat
eec0: 6f 72 20 69 73 20 74 68 65 20 73 61 6d 65 20 61  or is the same a
eed0: 73 20 74 68 65 20 70 72 65 63 65 64 65 6e 63 65  s the precedence
eee0: 0a 61 73 20 6f 70 65 72 61 74 6f 72 73 20 3c 62  .as operators <b
eef0: 3e 3d 3d 3c 2f 62 3e 20 61 6e 64 20 3c 62 3e 21  >==</b> and <b>!
ef00: 3d 3c 2f 62 3e 20 61 6e 64 20 3c 62 3e 4c 49 4b  =</b> and <b>LIK
ef10: 45 3c 2f 62 3e 20 61 6e 64 20 67 72 6f 75 70 73  E</b> and groups
ef20: 20 6c 65 66 74 20 74 6f 20 72 69 67 68 74 2e 0a   left to right..
ef30: 0a 3c 74 63 6c 3e 68 64 5f 66 72 61 67 6d 65 6e  .<tcl>hd_fragmen
ef40: 74 20 63 61 73 65 20 7b 43 41 53 45 20 65 78 70  t case {CASE exp
ef50: 72 65 73 73 69 6f 6e 7d 3c 2f 74 63 6c 3e 0a 3c  ression}</tcl>.<
ef60: 68 33 3e 54 68 65 20 43 41 53 45 20 65 78 70 72  h3>The CASE expr
ef70: 65 73 73 69 6f 6e 3c 2f 68 33 3e 0a 3c 70 3e 41  ession</h3>.<p>A
ef80: 20 43 41 53 45 20 65 78 70 72 65 73 73 69 6f 6e   CASE expression
ef90: 20 73 65 72 76 65 73 20 61 20 72 6f 6c 65 20 73   serves a role s
efa0: 69 6d 69 6c 61 72 20 74 6f 20 49 46 2d 54 48 45  imilar to IF-THE
efb0: 4e 2d 45 4c 53 45 20 69 6e 20 6f 74 68 65 72 0a  N-ELSE in other.
efc0: 70 72 6f 67 72 61 6d 6d 69 6e 67 20 6c 61 6e 67  programming lang
efd0: 75 61 67 65 73 2e 20 20 0a 0a 3c 70 3e 54 68 65  uages.  ..<p>The
efe0: 20 6f 70 74 69 6f 6e 61 6c 20 65 78 70 72 65 73   optional expres
eff0: 73 69 6f 6e 20 74 68 61 74 20 6f 63 63 75 72 73  sion that occurs
f000: 20 69 6e 20 62 65 74 77 65 65 6e 20 74 68 65 20   in between the 
f010: 43 41 53 45 20 6b 65 79 77 6f 72 64 20 61 6e 64  CASE keyword and
f020: 20 74 68 65 0a 66 69 72 73 74 20 57 48 45 4e 20   the.first WHEN 
f030: 6b 65 79 77 6f 72 64 20 69 73 20 63 61 6c 6c 65  keyword is calle
f040: 64 20 74 68 65 20 22 62 61 73 65 22 20 65 78 70  d the "base" exp
f050: 72 65 73 73 69 6f 6e 2e 20 5e 54 68 65 72 65 20  ression. ^There 
f060: 61 72 65 20 74 77 6f 20 62 61 73 69 63 20 66 6f  are two basic fo
f070: 72 6d 73 0a 6f 66 20 74 68 65 20 43 41 53 45 20  rms.of the CASE 
f080: 65 78 70 72 65 73 73 69 6f 6e 3a 20 74 68 6f 73  expression: thos
f090: 65 20 77 69 74 68 20 61 20 62 61 73 65 20 65 78  e with a base ex
f0a0: 70 72 65 73 73 69 6f 6e 20 61 6e 64 20 74 68 6f  pression and tho
f0b0: 73 65 20 77 69 74 68 6f 75 74 2e 0a 0a 3c 70 3e  se without...<p>
f0c0: 5e 49 6e 20 61 20 43 41 53 45 20 77 69 74 68 6f  ^In a CASE witho
f0d0: 75 74 20 61 20 62 61 73 65 20 65 78 70 72 65 73  ut a base expres
f0e0: 73 69 6f 6e 2c 20 65 61 63 68 20 57 48 45 4e 20  sion, each WHEN 
f0f0: 65 78 70 72 65 73 73 69 6f 6e 20 69 73 20 65 76  expression is ev
f100: 61 6c 75 61 74 65 64 0a 61 6e 64 20 74 68 65 20  aluated.and the 
f110: 72 65 73 75 6c 74 20 74 72 65 61 74 65 64 20 61  result treated a
f120: 73 20 61 20 62 6f 6f 6c 65 61 6e 2c 20 73 74 61  s a boolean, sta
f130: 72 74 69 6e 67 20 77 69 74 68 20 74 68 65 20 6c  rting with the l
f140: 65 66 74 6d 6f 73 74 20 61 6e 64 20 63 6f 6e 74  eftmost and cont
f150: 69 6e 75 69 6e 67 0a 74 6f 20 74 68 65 20 72 69  inuing.to the ri
f160: 67 68 74 2e 20 5e 54 68 65 20 72 65 73 75 6c 74  ght. ^The result
f170: 20 6f 66 20 74 68 65 20 43 41 53 45 20 65 78 70   of the CASE exp
f180: 72 65 73 73 69 6f 6e 20 69 73 20 74 68 65 20 65  ression is the e
f190: 76 61 6c 75 61 74 69 6f 6e 20 6f 66 20 74 68 65  valuation of the
f1a0: 20 54 48 45 4e 0a 65 78 70 72 65 73 73 69 6f 6e   THEN.expression
f1b0: 20 74 68 61 74 20 63 6f 72 72 65 73 70 6f 6e 64   that correspond
f1c0: 73 20 74 6f 20 74 68 65 20 66 69 72 73 74 20 57  s to the first W
f1d0: 48 45 4e 20 65 78 70 72 65 73 73 69 6f 6e 20 74  HEN expression t
f1e0: 68 61 74 20 65 76 61 6c 75 61 74 65 73 20 74 6f  hat evaluates to
f1f0: 0a 74 72 75 65 2e 20 5e 4f 72 2c 20 69 66 20 6e  .true. ^Or, if n
f200: 6f 6e 65 20 6f 66 20 74 68 65 20 57 48 45 4e 20  one of the WHEN 
f210: 65 78 70 72 65 73 73 69 6f 6e 73 20 65 76 61 6c  expressions eval
f220: 75 61 74 65 20 74 6f 20 74 72 75 65 2c 20 74 68  uate to true, th
f230: 65 20 72 65 73 75 6c 74 20 6f 66 0a 65 76 61 6c  e result of.eval
f240: 75 61 74 69 6e 67 20 74 68 65 20 45 4c 53 45 20  uating the ELSE 
f250: 65 78 70 72 65 73 73 69 6f 6e 2c 20 69 66 20 61  expression, if a
f260: 6e 79 2e 20 5e 49 66 20 74 68 65 72 65 20 69 73  ny. ^If there is
f270: 20 6e 6f 20 45 4c 53 45 20 65 78 70 72 65 73 73   no ELSE express
f280: 69 6f 6e 20 61 6e 64 0a 6e 6f 6e 65 20 6f 66 20  ion and.none of 
f290: 74 68 65 20 57 48 45 4e 20 65 78 70 72 65 73 73  the WHEN express
f2a0: 69 6f 6e 73 20 61 72 65 20 74 72 75 65 2c 20 74  ions are true, t
f2b0: 68 65 6e 20 74 68 65 20 6f 76 65 72 61 6c 6c 20  hen the overall 
f2c0: 72 65 73 75 6c 74 20 69 73 20 4e 55 4c 4c 2e 0a  result is NULL..
f2d0: 0a 3c 70 3e 5e 41 20 4e 55 4c 4c 20 72 65 73 75  .<p>^A NULL resu
f2e0: 6c 74 20 69 73 20 63 6f 6e 73 69 64 65 72 65 64  lt is considered
f2f0: 20 75 6e 74 72 75 65 20 77 68 65 6e 20 65 76 61   untrue when eva
f300: 6c 75 61 74 69 6e 67 20 57 48 45 4e 20 74 65 72  luating WHEN ter
f310: 6d 73 2e 0a 0a 3c 70 3e 5e 49 6e 20 61 20 43 41  ms...<p>^In a CA
f320: 53 45 20 77 69 74 68 20 61 20 62 61 73 65 20 65  SE with a base e
f330: 78 70 72 65 73 73 69 6f 6e 2c 20 74 68 65 20 62  xpression, the b
f340: 61 73 65 20 65 78 70 72 65 73 73 69 6f 6e 20 69  ase expression i
f350: 73 20 65 76 61 6c 75 61 74 65 64 20 6a 75 73 74  s evaluated just
f360: 0a 6f 6e 63 65 20 61 6e 64 20 74 68 65 20 72 65  .once and the re
f370: 73 75 6c 74 20 69 73 20 63 6f 6d 70 61 72 65 64  sult is compared
f380: 20 61 67 61 69 6e 73 74 20 74 68 65 20 65 76 61   against the eva
f390: 6c 75 61 74 69 6f 6e 20 6f 66 20 65 61 63 68 20  luation of each 
f3a0: 57 48 45 4e 20 0a 65 78 70 72 65 73 73 69 6f 6e  WHEN .expression
f3b0: 20 66 72 6f 6d 20 6c 65 66 74 20 74 6f 20 72 69   from left to ri
f3c0: 67 68 74 2e 20 5e 54 68 65 20 72 65 73 75 6c 74  ght. ^The result
f3d0: 20 6f 66 20 74 68 65 20 43 41 53 45 20 65 78 70   of the CASE exp
f3e0: 72 65 73 73 69 6f 6e 20 69 73 20 74 68 65 20 0a  ression is the .
f3f0: 65 76 61 6c 75 61 74 69 6f 6e 20 6f 66 20 74 68  evaluation of th
f400: 65 20 54 48 45 4e 20 65 78 70 72 65 73 73 69 6f  e THEN expressio
f410: 6e 20 74 68 61 74 20 63 6f 72 72 65 73 70 6f 6e  n that correspon
f420: 64 73 20 74 6f 20 74 68 65 20 66 69 72 73 74 20  ds to the first 
f430: 57 48 45 4e 0a 65 78 70 72 65 73 73 69 6f 6e 20  WHEN.expression 
f440: 66 6f 72 20 77 68 69 63 68 20 74 68 65 20 63 6f  for which the co
f450: 6d 70 61 72 69 73 6f 6e 20 69 73 20 74 72 75 65  mparison is true
f460: 2e 20 5e 4f 72 2c 20 69 66 20 6e 6f 6e 65 20 6f  . ^Or, if none o
f470: 66 20 74 68 65 20 57 48 45 4e 0a 65 78 70 72 65  f the WHEN.expre
f480: 73 73 69 6f 6e 73 20 65 76 61 6c 75 61 74 65 20  ssions evaluate 
f490: 74 6f 20 61 20 76 61 6c 75 65 20 65 71 75 61 6c  to a value equal
f4a0: 20 74 6f 20 74 68 65 20 62 61 73 65 20 65 78 70   to the base exp
f4b0: 72 65 73 73 69 6f 6e 2c 20 74 68 65 20 72 65 73  ression, the res
f4c0: 75 6c 74 0a 6f 66 20 65 76 61 6c 75 61 74 69 6e  ult.of evaluatin
f4d0: 67 20 74 68 65 20 45 4c 53 45 20 65 78 70 72 65  g the ELSE expre
f4e0: 73 73 69 6f 6e 2c 20 69 66 20 61 6e 79 2e 20 5e  ssion, if any. ^
f4f0: 49 66 20 74 68 65 72 65 20 69 73 20 6e 6f 20 45  If there is no E
f500: 4c 53 45 20 65 78 70 72 65 73 73 69 6f 6e 20 61  LSE expression a
f510: 6e 64 0a 6e 6f 6e 65 20 6f 66 20 74 68 65 20 57  nd.none of the W
f520: 48 45 4e 20 65 78 70 72 65 73 73 69 6f 6e 73 20  HEN expressions 
f530: 70 72 6f 64 75 63 65 20 61 20 72 65 73 75 6c 74  produce a result
f540: 20 65 71 75 61 6c 20 74 6f 20 74 68 65 20 62 61   equal to the ba
f550: 73 65 20 65 78 70 72 65 73 73 69 6f 6e 2c 0a 74  se expression,.t
f560: 68 65 20 6f 76 65 72 61 6c 6c 20 72 65 73 75 6c  he overall resul
f570: 74 20 69 73 20 4e 55 4c 4c 2e 0a 0a 3c 70 3e 5e  t is NULL...<p>^
f580: 57 68 65 6e 20 63 6f 6d 70 61 72 69 6e 67 20 61  When comparing a
f590: 20 62 61 73 65 20 65 78 70 72 65 73 73 69 6f 6e   base expression
f5a0: 20 61 67 61 69 6e 73 74 20 61 20 57 48 45 4e 20   against a WHEN 
f5b0: 65 78 70 72 65 73 73 69 6f 6e 2c 20 74 68 65 20  expression, the 
f5c0: 73 61 6d 65 0a 63 6f 6c 6c 61 74 69 6e 67 20 73  same.collating s
f5d0: 65 71 75 65 6e 63 65 2c 20 61 66 66 69 6e 69 74  equence, affinit
f5e0: 79 2c 20 61 6e 64 20 4e 55 4c 4c 2d 68 61 6e 64  y, and NULL-hand
f5f0: 6c 69 6e 67 20 72 75 6c 65 73 20 61 70 70 6c 79  ling rules apply
f600: 20 61 73 20 69 66 20 74 68 65 0a 62 61 73 65 20   as if the.base 
f610: 65 78 70 72 65 73 73 69 6f 6e 20 61 6e 64 20 57  expression and W
f620: 48 45 4e 20 65 78 70 72 65 73 73 69 6f 6e 20 61  HEN expression a
f630: 72 65 20 72 65 73 70 65 63 74 69 76 65 6c 79 20  re respectively 
f640: 74 68 65 20 6c 65 66 74 2d 20 61 6e 64 0a 72 69  the left- and.ri
f650: 67 68 74 2d 68 61 6e 64 20 6f 70 65 72 61 6e 64  ght-hand operand
f660: 73 20 6f 66 20 61 6e 20 3c 62 69 67 3e 3c 62 3e  s of an <big><b>
f670: 3d 3c 2f 62 3e 3c 2f 62 69 67 3e 20 6f 70 65 72  =</b></big> oper
f680: 61 74 6f 72 2e 3c 2f 70 3e 20 5e 49 66 20 74 68  ator.</p> ^If th
f690: 65 20 62 61 73 65 20 0a 65 78 70 72 65 73 73 69  e base .expressi
f6a0: 6f 6e 20 69 73 20 4e 55 4c 4c 20 74 68 65 6e 20  on is NULL then 
f6b0: 74 68 65 20 72 65 73 75 6c 74 20 6f 66 20 74 68  the result of th
f6c0: 65 20 43 41 53 45 20 69 73 20 61 6c 77 61 79 73  e CASE is always
f6d0: 20 74 68 65 20 72 65 73 75 6c 74 20 0a 6f 66 20   the result .of 
f6e0: 65 76 61 6c 75 61 74 69 6e 67 20 74 68 65 20 45  evaluating the E
f6f0: 4c 53 45 20 65 78 70 72 65 73 73 69 6f 6e 20 69  LSE expression i
f700: 66 20 69 74 20 65 78 69 73 74 73 2c 20 6f 72 20  f it exists, or 
f710: 4e 55 4c 4c 20 69 66 20 69 74 20 64 6f 65 73 20  NULL if it does 
f720: 6e 6f 74 2e 0a 0a 3c 70 3e 5e 42 6f 74 68 20 66  not...<p>^Both f
f730: 6f 72 6d 73 20 6f 66 20 74 68 65 20 43 41 53 45  orms of the CASE
f740: 20 65 78 70 72 65 73 73 69 6f 6e 20 75 73 65 20   expression use 
f750: 6c 61 7a 79 2c 20 6f 72 20 73 68 6f 72 74 2d 63  lazy, or short-c
f760: 69 72 63 75 69 74 2c 20 0a 65 76 61 6c 75 61 74  ircuit, .evaluat
f770: 69 6f 6e 2e 0a 0a 3c 70 3e 5e 28 54 68 65 20 6f  ion...<p>^(The o
f780: 6e 6c 79 20 64 69 66 66 65 72 65 6e 63 65 20 62  nly difference b
f790: 65 74 77 65 65 6e 20 74 68 65 20 66 6f 6c 6c 6f  etween the follo
f7a0: 77 69 6e 67 20 74 77 6f 20 43 41 53 45 20 65 78  wing two CASE ex
f7b0: 70 72 65 73 73 69 6f 6e 73 20 69 73 20 74 68 61  pressions is tha
f7c0: 74 20 0a 74 68 65 20 3c 69 3e 78 3c 2f 69 3e 20  t .the <i>x</i> 
f7d0: 65 78 70 72 65 73 73 69 6f 6e 20 69 73 20 65 76  expression is ev
f7e0: 61 6c 75 61 74 65 64 20 65 78 61 63 74 6c 79 20  aluated exactly 
f7f0: 6f 6e 63 65 20 69 6e 20 74 68 65 20 66 69 72 73  once in the firs
f800: 74 20 65 78 61 6d 70 6c 65 20 62 75 74 20 0a 6d  t example but .m
f810: 69 67 68 74 20 62 65 20 65 76 61 6c 75 61 74 65  ight be evaluate
f820: 64 20 6d 75 6c 74 69 70 6c 65 20 74 69 6d 65 73  d multiple times
f830: 20 69 6e 20 74 68 65 20 73 65 63 6f 6e 64 3a 0a   in the second:.
f840: 0a 3c 75 6c 3e 3c 70 72 65 3e 0a 3c 6c 69 3e 43  .<ul><pre>.<li>C
f850: 41 53 45 20 78 20 57 48 45 4e 20 77 31 20 54 48  ASE x WHEN w1 TH
f860: 45 4e 20 72 31 20 57 48 45 4e 20 77 32 20 54 48  EN r1 WHEN w2 TH
f870: 45 4e 20 72 32 20 45 4c 53 45 20 72 33 20 45 4e  EN r2 ELSE r3 EN
f880: 44 0a 3c 6c 69 3e 43 41 53 45 20 57 48 45 4e 20  D.<li>CASE WHEN 
f890: 78 3d 77 31 20 54 48 45 4e 20 72 31 20 57 48 45  x=w1 THEN r1 WHE
f8a0: 4e 20 78 3d 77 32 20 54 48 45 4e 20 72 32 20 45  N x=w2 THEN r2 E
f8b0: 4c 53 45 20 72 33 20 45 4e 44 0a 3c 2f 70 72 65  LSE r3 END.</pre
f8c0: 3e 3c 2f 75 6c 3e 29 5e 0a 0a 0a 3c 74 63 6c 3e  ></ul>)^...<tcl>
f8d0: 68 64 5f 66 72 61 67 6d 65 6e 74 20 69 6e 5f 6f  hd_fragment in_o
f8e0: 70 20 7b 49 4e 20 6f 70 65 72 61 74 6f 72 7d 20  p {IN operator} 
f8f0: 7b 4e 4f 54 20 49 4e 20 6f 70 65 72 61 74 6f 72  {NOT IN operator
f900: 7d 3c 2f 74 63 6c 3e 0a 3c 68 33 3e 54 68 65 20  }</tcl>.<h3>The 
f910: 49 4e 20 61 6e 64 20 4e 4f 54 20 49 4e 20 6f 70  IN and NOT IN op
f920: 65 72 61 74 6f 72 73 3c 2f 68 33 3e 0a 3c 70 3e  erators</h3>.<p>
f930: 5e 54 68 65 20 49 4e 20 61 6e 64 20 4e 4f 54 20  ^The IN and NOT 
f940: 49 4e 20 6f 70 65 72 61 74 6f 72 73 20 74 61 6b  IN operators tak
f950: 65 20 61 20 73 69 6e 67 6c 65 20 73 63 61 6c 61  e a single scala
f960: 72 20 6f 70 65 72 61 6e 64 20 6f 6e 20 74 68 65  r operand on the
f970: 0a 6c 65 66 74 20 61 6e 64 20 61 20 76 65 63 74  .left and a vect
f980: 6f 72 20 6f 70 65 72 61 6e 64 20 6f 6e 20 74 68  or operand on th
f990: 65 20 72 69 67 68 74 0a 66 6f 72 6d 65 64 20 62  e right.formed b
f9a0: 79 20 61 6e 20 65 78 70 6c 69 63 69 74 20 6c 69  y an explicit li
f9b0: 73 74 20 6f 66 20 7a 65 72 6f 20 6f 72 20 6d 6f  st of zero or mo
f9c0: 72 65 20 73 63 61 6c 61 72 73 20 6f 72 20 62 79  re scalars or by
f9d0: 20 61 20 0a 73 69 6e 67 6c 65 20 73 75 62 71 75   a .single subqu
f9e0: 65 72 79 2e 0a 5e 57 68 65 6e 20 74 68 65 20 72  ery..^When the r
f9f0: 69 67 68 74 20 6f 70 65 72 61 6e 64 20 6f 66 20  ight operand of 
fa00: 61 6e 20 49 4e 20 6f 72 20 4e 4f 54 20 49 4e 20  an IN or NOT IN 
fa10: 6f 70 65 72 61 74 6f 72 20 69 73 20 61 20 73 75  operator is a su
fa20: 62 71 75 65 72 79 2c 20 74 68 65 0a 73 75 62 71  bquery, the.subq
fa30: 75 65 72 79 20 6d 75 73 74 20 68 61 76 65 20 61  uery must have a
fa40: 20 73 69 6e 67 6c 65 20 72 65 73 75 6c 74 20 63   single result c
fa50: 6f 6c 75 6d 6e 2e 0a 5e 57 68 65 6e 20 74 68 65  olumn..^When the
fa60: 20 72 69 67 68 74 20 6f 70 65 72 61 6e 64 20 69   right operand i
fa70: 73 20 61 6e 20 65 6d 70 74 79 20 73 65 74 2c 20  s an empty set, 
fa80: 74 68 65 20 72 65 73 75 6c 74 20 6f 66 20 49 4e  the result of IN
fa90: 20 69 73 20 66 61 6c 73 65 20 61 6e 64 20 74 68   is false and th
faa0: 65 0a 72 65 73 75 6c 74 20 6f 66 20 4e 4f 54 20  e.result of NOT 
fab0: 49 4e 20 69 73 20 74 72 75 65 2c 20 72 65 67 61  IN is true, rega
fac0: 72 64 6c 65 73 73 20 6f 66 20 74 68 65 20 6c 65  rdless of the le
fad0: 66 74 20 6f 70 65 72 61 6e 64 20 61 6e 64 20 65  ft operand and e
fae0: 76 65 6e 20 69 66 20 74 68 65 0a 6c 65 66 74 20  ven if the.left 
faf0: 6f 70 65 72 61 6e 64 20 69 73 20 4e 55 4c 4c 2e  operand is NULL.
fb00: 0a 5e 28 54 68 65 20 72 65 73 75 6c 74 20 6f 66  .^(The result of
fb10: 20 61 6e 20 49 4e 20 6f 72 20 4e 4f 54 20 49 4e   an IN or NOT IN
fb20: 20 6f 70 65 72 61 74 6f 72 20 69 73 20 64 65 74   operator is det
fb30: 65 72 6d 69 6e 65 64 20 62 79 20 74 68 65 20 66  ermined by the f
fb40: 6f 6c 6c 6f 77 69 6e 67 0a 6d 61 74 72 69 78 3a  ollowing.matrix:
fb50: 0a 0a 3c 63 65 6e 74 65 72 3e 0a 3c 74 61 62 6c  ..<center>.<tabl
fb60: 65 20 62 6f 72 64 65 72 3d 31 3e 0a 3c 74 72 3e  e border=1>.<tr>
fb70: 0a 3c 74 68 3e 4c 65 66 74 20 6f 70 65 72 61 6e  .<th>Left operan
fb80: 64 20 3c 62 72 3e 69 73 20 4e 55 4c 4c 0a 3c 74  d <br>is NULL.<t
fb90: 68 3e 52 69 67 68 74 20 6f 70 65 72 61 6e 64 20  h>Right operand 
fba0: 3c 62 72 3e 63 6f 6e 74 61 69 6e 73 20 4e 55 4c  <br>contains NUL
fbb0: 4c 0a 3c 74 68 3e 52 69 67 68 74 20 6f 70 65 72  L.<th>Right oper
fbc0: 61 6e 64 20 3c 62 72 3e 69 73 20 61 6e 20 65 6d  and <br>is an em
fbd0: 70 74 79 20 73 65 74 0a 3c 74 68 3e 4c 65 66 74  pty set.<th>Left
fbe0: 20 6f 70 65 72 61 6e 64 20 66 6f 75 6e 64 20 3c   operand found <
fbf0: 62 72 3e 77 69 74 68 69 6e 20 72 69 67 68 74 20  br>within right 
fc00: 6f 70 65 72 61 6e 64 0a 3c 74 68 3e 52 65 73 75  operand.<th>Resu
fc10: 6c 74 20 6f 66 20 3c 62 72 3e 49 4e 20 6f 70 65  lt of <br>IN ope
fc20: 72 61 74 6f 72 0a 3c 74 68 3e 52 65 73 75 6c 74  rator.<th>Result
fc30: 20 6f 66 20 3c 62 72 3e 4e 4f 54 20 49 4e 20 6f   of <br>NOT IN o
fc40: 70 65 72 61 74 6f 72 0a 3c 74 72 3e 0a 3c 74 64  perator.<tr>.<td
fc50: 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e   align="center">
fc60: 6e 6f 0a 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65  no.<td align="ce
fc70: 6e 74 65 72 22 3e 6e 6f 0a 3c 74 64 20 61 6c 69  nter">no.<td ali
fc80: 67 6e 3d 22 63 65 6e 74 65 72 22 3e 6e 6f 0a 3c  gn="center">no.<
fc90: 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72  td align="center
fca0: 22 3e 6e 6f 0a 3c 74 64 20 61 6c 69 67 6e 3d 22  ">no.<td align="
fcb0: 63 65 6e 74 65 72 22 3e 66 61 6c 73 65 0a 3c 74  center">false.<t
fcc0: 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22  d align="center"
fcd0: 3e 74 72 75 65 0a 3c 74 72 3e 0a 3c 74 64 20 61  >true.<tr>.<td a
fce0: 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 64 6f  lign="center">do
fcf0: 65 73 20 6e 6f 74 20 6d 61 74 74 65 72 0a 3c 74  es not matter.<t
fd00: 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22  d align="center"
fd10: 3e 6e 6f 0a 3c 74 64 20 61 6c 69 67 6e 3d 22 63  >no.<td align="c
fd20: 65 6e 74 65 72 22 3e 79 65 73 0a 3c 74 64 20 61  enter">yes.<td a
fd30: 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 6e 6f  lign="center">no
fd40: 0a 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74  .<td align="cent
fd50: 65 72 22 3e 66 61 6c 73 65 0a 3c 74 64 20 61 6c  er">false.<td al
fd60: 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 74 72 75  ign="center">tru
fd70: 65 0a 3c 74 72 3e 0a 3c 74 64 20 61 6c 69 67 6e  e.<tr>.<td align
fd80: 3d 22 63 65 6e 74 65 72 22 3e 6e 6f 0a 3c 74 64  ="center">no.<td
fd90: 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e   align="center">
fda0: 64 6f 65 73 20 6e 6f 74 20 6d 61 74 74 65 72 0a  does not matter.
fdb0: 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65  <td align="cente
fdc0: 72 22 3e 6e 6f 0a 3c 74 64 20 61 6c 69 67 6e 3d  r">no.<td align=
fdd0: 22 63 65 6e 74 65 72 22 3e 79 65 73 0a 3c 74 64  "center">yes.<td
fde0: 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e   align="center">
fdf0: 74 72 75 65 0a 3c 74 64 20 61 6c 69 67 6e 3d 22  true.<td align="
fe00: 63 65 6e 74 65 72 22 3e 66 61 6c 73 65 0a 3c 74  center">false.<t
fe10: 72 3e 0a 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65  r>.<td align="ce
fe20: 6e 74 65 72 22 3e 6e 6f 0a 3c 74 64 20 61 6c 69  nter">no.<td ali
fe30: 67 6e 3d 22 63 65 6e 74 65 72 22 3e 79 65 73 0a  gn="center">yes.
fe40: 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65  <td align="cente
fe50: 72 22 3e 6e 6f 0a 3c 74 64 20 61 6c 69 67 6e 3d  r">no.<td align=
fe60: 22 63 65 6e 74 65 72 22 3e 6e 6f 0a 3c 74 64 20  "center">no.<td 
fe70: 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 4e  align="center">N
fe80: 55 4c 4c 0a 3c 74 64 20 61 6c 69 67 6e 3d 22 63  ULL.<td align="c
fe90: 65 6e 74 65 72 22 3e 4e 55 4c 4c 0a 3c 74 72 3e  enter">NULL.<tr>
fea0: 0a 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74  .<td align="cent
feb0: 65 72 22 3e 79 65 73 0a 3c 74 64 20 61 6c 69 67  er">yes.<td alig
fec0: 6e 3d 22 63 65 6e 74 65 72 22 3e 64 6f 65 73 20  n="center">does 
fed0: 6e 6f 74 20 6d 61 74 74 65 72 0a 3c 74 64 20 61  not matter.<td a
fee0: 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 6e 6f  lign="center">no
fef0: 0a 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74  .<td align="cent
ff00: 65 72 22 3e 64 6f 65 73 20 6e 6f 74 20 6d 61 74  er">does not mat
ff10: 74 65 72 0a 3c 74 64 20 61 6c 69 67 6e 3d 22 63  ter.<td align="c
ff20: 65 6e 74 65 72 22 3e 4e 55 4c 4c 0a 3c 74 64 20  enter">NULL.<td 
ff30: 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 4e  align="center">N
ff40: 55 4c 4c 0a 3c 2f 74 61 62 6c 65 3e 0a 3c 2f 63  ULL.</table>.</c
ff50: 65 6e 74 65 72 3e 29 5e 0a 0a 3c 70 3e 5e 4e 6f  enter>)^..<p>^No
ff60: 74 65 20 74 68 61 74 20 53 51 4c 69 74 65 20 61  te that SQLite a
ff70: 6c 6c 6f 77 73 20 74 68 65 20 70 61 72 65 6e 74  llows the parent
ff80: 68 65 73 69 7a 65 64 20 6c 69 73 74 20 6f 66 20  hesized list of 
ff90: 73 63 61 6c 61 72 20 76 61 6c 75 65 73 20 6f 6e  scalar values on
ffa0: 0a 74 68 65 20 72 69 67 68 74 2d 68 61 6e 64 20  .the right-hand 
ffb0: 73 69 64 65 20 6f 66 20 61 6e 20 49 4e 20 6f 72  side of an IN or
ffc0: 20 4e 4f 54 20 49 4e 20 6f 70 65 72 61 74 6f 72   NOT IN operator
ffd0: 20 74 6f 20 62 65 20 61 6e 20 65 6d 70 74 79 20   to be an empty 
ffe0: 6c 69 73 74 20 62 75 74 0a 6d 6f 73 74 20 6f 74  list but.most ot
fff0: 68 65 72 20 53 51 4c 20 64 61 74 61 62 61 73 65  her SQL database
10000 20 64 61 74 61 62 61 73 65 20 65 6e 67 69 6e 65   database engine
10010 73 20 61 6e 64 20 74 68 65 20 53 51 4c 39 32 20  s and the SQL92 
10020 73 74 61 6e 64 61 72 64 20 72 65 71 75 69 72 65  standard require
10030 0a 74 68 65 20 6c 69 73 74 20 74 6f 20 63 6f 6e  .the list to con
10040 74 61 69 6e 20 61 74 20 6c 65 61 73 74 20 6f 6e  tain at least on
10050 65 20 65 6c 65 6d 65 6e 74 2e 3c 2f 70 3e 0a 0a  e element.</p>..
10060 3c 74 63 6c 3e 68 64 5f 66 72 61 67 6d 65 6e 74  <tcl>hd_fragment
10070 20 69 6e 5f 6f 70 20 7b 45 58 49 53 54 53 20 6f   in_op {EXISTS o
10080 70 65 72 61 74 6f 72 7d 20 7b 4e 4f 54 20 45 58  perator} {NOT EX
10090 49 53 54 53 20 6f 70 65 72 61 74 6f 72 7d 3c 2f  ISTS operator}</
100a0 74 63 6c 3e 0a 3c 68 33 3e 54 68 65 20 45 58 49  tcl>.<h3>The EXI
100b0 53 54 53 20 6f 70 65 72 61 74 6f 72 3c 2f 68 33  STS operator</h3
100c0 3e 0a 0a 3c 70 3e 5e 54 68 65 20 45 58 49 53 54  >..<p>^The EXIST
100d0 53 20 6f 70 65 72 61 74 6f 72 20 61 6c 77 61 79  S operator alway
100e0 73 20 65 76 61 6c 75 61 74 65 73 20 74 6f 20 6f  s evaluates to o
100f0 6e 65 20 6f 66 20 74 68 65 20 69 6e 74 65 67 65  ne of the intege
10100 72 20 76 61 6c 75 65 73 20 30 20 0a 61 6e 64 20  r values 0 .and 
10110 31 2e 20 5e 49 66 20 65 78 65 63 75 74 69 6e 67  1. ^If executing
10120 20 74 68 65 20 53 45 4c 45 43 54 20 73 74 61 74   the SELECT stat
10130 65 6d 65 6e 74 20 73 70 65 63 69 66 69 65 64 20  ement specified 
10140 61 73 20 74 68 65 20 72 69 67 68 74 2d 68 61 6e  as the right-han
10150 64 20 0a 6f 70 65 72 61 6e 64 20 6f 66 20 74 68  d .operand of th
10160 65 20 45 58 49 53 54 53 20 6f 70 65 72 61 74 6f  e EXISTS operato
10170 72 20 77 6f 75 6c 64 20 72 65 74 75 72 6e 20 6f  r would return o
10180 6e 65 20 6f 72 20 6d 6f 72 65 20 72 6f 77 73 2c  ne or more rows,
10190 20 74 68 65 6e 20 74 68 65 0a 45 58 49 53 54 53   then the.EXISTS
101a0 20 6f 70 65 72 61 74 6f 72 20 65 76 61 6c 75 61   operator evalua
101b0 74 65 73 20 74 6f 20 31 2e 20 5e 49 66 20 65 78  tes to 1. ^If ex
101c0 65 63 75 74 69 6e 67 20 74 68 65 20 53 45 4c 45  ecuting the SELE
101d0 43 54 20 77 6f 75 6c 64 20 72 65 74 75 72 6e 0a  CT would return.
101e0 6e 6f 20 72 6f 77 73 20 61 74 20 61 6c 6c 2c 20  no rows at all, 
101f0 74 68 65 6e 20 74 68 65 20 45 58 49 53 54 53 20  then the EXISTS 
10200 6f 70 65 72 61 74 6f 72 20 65 76 61 6c 75 61 74  operator evaluat
10210 65 73 20 74 6f 20 30 2e 20 0a 0a 3c 70 3e 5e 54  es to 0. ..<p>^T
10220 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c  he number of col
10230 75 6d 6e 73 20 69 6e 20 65 61 63 68 20 72 6f 77  umns in each row
10240 20 72 65 74 75 72 6e 65 64 20 62 79 20 74 68 65   returned by the
10250 20 53 45 4c 45 43 54 20 73 74 61 74 65 6d 65 6e   SELECT statemen
10260 74 0a 28 69 66 20 61 6e 79 29 20 61 6e 64 20 74  t.(if any) and t
10270 68 65 20 73 70 65 63 69 66 69 63 20 76 61 6c 75  he specific valu
10280 65 73 20 72 65 74 75 72 6e 65 64 20 68 61 76 65  es returned have
10290 20 6e 6f 20 65 66 66 65 63 74 20 6f 6e 20 74 68   no effect on th
102a0 65 20 72 65 73 75 6c 74 73 0a 6f 66 20 74 68 65  e results.of the
102b0 20 45 58 49 53 54 53 20 6f 70 65 72 61 74 6f 72   EXISTS operator
102c0 2e 20 5e 49 6e 20 70 61 72 74 69 63 75 6c 61 72  . ^In particular
102d0 2c 20 72 6f 77 73 20 63 6f 6e 74 61 69 6e 69 6e  , rows containin
102e0 67 20 4e 55 4c 4c 20 76 61 6c 75 65 73 20 61 72  g NULL values ar
102f0 65 0a 6e 6f 74 20 68 61 6e 64 6c 65 64 20 61 6e  e.not handled an
10300 79 20 64 69 66 66 65 72 65 6e 74 6c 79 20 66 72  y differently fr
10310 6f 6d 20 72 6f 77 73 20 77 69 74 68 6f 75 74 20  om rows without 
10320 4e 55 4c 4c 20 76 61 6c 75 65 73 2e 0a 0a 3c 68  NULL values...<h
10330 33 3e 53 63 61 6c 61 72 20 53 75 62 71 75 65 72  3>Scalar Subquer
10340 69 65 73 3c 2f 68 33 3e 0a 0a 3c 70 3e 5e 41 20  ies</h3>..<p>^A 
10350 5b 53 45 4c 45 43 54 5d 20 73 74 61 74 65 6d 65  [SELECT] stateme
10360 6e 74 20 65 6e 63 6c 6f 73 65 64 20 69 6e 20 70  nt enclosed in p
10370 61 72 65 6e 74 68 65 73 65 73 20 6d 61 79 20 61  arentheses may a
10380 70 70 65 61 72 20 61 73 20 61 20 73 63 61 6c 61  ppear as a scala
10390 72 0a 71 75 61 6e 74 69 74 79 2e 20 5e 41 20 5b  r.quantity. ^A [
103a0 53 45 4c 45 43 54 5d 20 75 73 65 64 20 61 73 20  SELECT] used as 
103b0 61 20 73 63 61 6c 61 72 20 71 75 61 6e 74 69 74  a scalar quantit
103c0 79 20 6d 75 73 74 20 72 65 74 75 72 6e 20 61 20  y must return a 
103d0 72 65 73 75 6c 74 20 73 65 74 0a 77 69 74 68 20  result set.with 
103e0 61 20 73 69 6e 67 6c 65 20 63 6f 6c 75 6d 6e 2e  a single column.
103f0 20 5e 54 68 65 20 72 65 73 75 6c 74 20 6f 66 20   ^The result of 
10400 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20 69  the expression i
10410 73 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74  s the value of t
10420 68 65 0a 6f 6e 6c 79 20 63 6f 6c 75 6d 6e 20 69  he.only column i
10430 6e 20 74 68 65 20 66 69 72 73 74 20 72 6f 77 20  n the first row 
10440 72 65 74 75 72 6e 65 64 20 62 79 20 74 68 65 20  returned by the 
10450 53 45 4c 45 43 54 20 73 74 61 74 65 6d 65 6e 74  SELECT statement
10460 2e 20 5e 49 66 20 74 68 65 20 53 45 4c 45 43 54  . ^If the SELECT
10470 20 0a 79 69 65 6c 64 73 20 6d 6f 72 65 20 74 68   .yields more th
10480 61 6e 20 6f 6e 65 20 72 65 73 75 6c 74 20 72 6f  an one result ro
10490 77 2c 20 61 6c 6c 20 72 6f 77 73 20 61 66 74 65  w, all rows afte
104a0 72 20 74 68 65 20 66 69 72 73 74 20 61 72 65 20  r the first are 
104b0 69 67 6e 6f 72 65 64 2e 20 5e 49 66 0a 74 68 65  ignored. ^If.the
104c0 20 53 45 4c 45 43 54 20 79 69 65 6c 64 73 20 6e   SELECT yields n
104d0 6f 20 72 6f 77 73 2c 20 74 68 65 6e 20 74 68 65  o rows, then the
104e0 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 65 78   value of the ex
104f0 70 72 65 73 73 69 6f 6e 20 69 73 20 4e 55 4c 4c  pression is NULL
10500 2e 0a 0a 3c 70 3e 5e 41 6c 6c 20 74 79 70 65 73  ...<p>^All types
10510 20 6f 66 20 5b 53 45 4c 45 43 54 5d 20 73 74 61   of [SELECT] sta
10520 74 65 6d 65 6e 74 2c 20 69 6e 63 6c 75 64 69 6e  tement, includin
10530 67 20 61 67 67 72 65 67 61 74 65 20 61 6e 64 20  g aggregate and 
10540 63 6f 6d 70 6f 75 6e 64 20 53 45 4c 45 43 54 0a  compound SELECT.
10550 71 75 65 72 69 65 73 20 28 71 75 65 72 69 65 73  queries (queries
10560 20 77 69 74 68 20 6b 65 79 77 6f 72 64 73 20 6c   with keywords l
10570 69 6b 65 20 55 4e 49 4f 4e 20 6f 72 20 45 58 43  ike UNION or EXC
10580 45 50 54 29 20 61 72 65 20 61 6c 6c 6f 77 65 64  EPT) are allowed
10590 20 61 73 20 73 63 61 6c 61 72 0a 73 75 62 71 75   as scalar.subqu
105a0 65 72 69 65 73 2e 0a 0a 3c 68 33 3e 54 61 62 6c  eries...<h3>Tabl
105b0 65 20 43 6f 6c 75 6d 6e 20 4e 61 6d 65 73 3c 2f  e Column Names</
105c0 68 33 3e 0a 0a 3c 70 3e 5e 41 20 63 6f 6c 75 6d  h3>..<p>^A colum
105d0 6e 20 6e 61 6d 65 20 63 61 6e 20 62 65 20 61 6e  n name can be an
105e0 79 20 6f 66 20 74 68 65 20 6e 61 6d 65 73 20 64  y of the names d
105f0 65 66 69 6e 65 64 20 69 6e 20 74 68 65 20 5b 43  efined in the [C
10600 52 45 41 54 45 20 54 41 42 4c 45 5d 0a 73 74 61  REATE TABLE].sta
10610 74 65 6d 65 6e 74 20 6f 72 20 6f 6e 65 20 6f 66  tement or one of
10620 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 73   the following s
10630 70 65 63 69 61 6c 20 69 64 65 6e 74 69 66 69 65  pecial identifie
10640 72 73 3a 20 22 3c 62 3e 52 4f 57 49 44 3c 2f 62  rs: "<b>ROWID</b
10650 3e 22 2c 0a 22 3c 62 3e 4f 49 44 3c 2f 62 3e 22  >",."<b>OID</b>"
10660 2c 20 6f 72 20 22 3c 62 3e 5f 52 4f 57 49 44 5f  , or "<b>_ROWID_
10670 3c 2f 62 3e 22 2e 0a 5e 54 68 65 73 65 20 73 70  </b>"..^These sp
10680 65 63 69 61 6c 20 69 64 65 6e 74 69 66 69 65 72  ecial identifier
10690 73 20 61 6c 6c 20 64 65 73 63 72 69 62 65 20 74  s all describe t
106a0 68 65 0a 75 6e 69 71 75 65 20 69 6e 74 65 67 65  he.unique intege
106b0 72 20 6b 65 79 20 28 74 68 65 20 5b 72 6f 77 69  r key (the [rowi
106c0 64 5d 29 20 61 73 73 6f 63 69 61 74 65 64 20 77  d]) associated w
106d0 69 74 68 20 65 76 65 72 79 20 0a 72 6f 77 20 6f  ith every .row o
106e0 66 20 65 76 65 72 79 20 74 61 62 6c 65 2e 0a 5e  f every table..^
106f0 54 68 65 20 73 70 65 63 69 61 6c 20 69 64 65 6e  The special iden
10700 74 69 66 69 65 72 73 20 6f 6e 6c 79 20 72 65 66  tifiers only ref
10710 65 72 20 74 6f 20 74 68 65 20 72 6f 77 20 6b 65  er to the row ke
10720 79 20 69 66 20 74 68 65 20 5b 43 52 45 41 54 45  y if the [CREATE
10730 20 54 41 42 4c 45 5d 0a 73 74 61 74 65 6d 65 6e   TABLE].statemen
10740 74 20 64 6f 65 73 20 6e 6f 74 20 64 65 66 69 6e  t does not defin
10750 65 20 61 20 72 65 61 6c 20 63 6f 6c 75 6d 6e 20  e a real column 
10760 77 69 74 68 20 74 68 65 20 73 61 6d 65 20 6e 61  with the same na
10770 6d 65 2e 0a 5e 54 68 65 20 72 6f 77 69 64 20 63  me..^The rowid c
10780 61 6e 20 62 65 20 75 73 65 64 20 61 6e 79 77 68  an be used anywh
10790 65 72 65 20 61 20 72 65 67 75 6c 61 72 0a 63 6f  ere a regular.co
107a0 6c 75 6d 6e 20 63 61 6e 20 62 65 20 75 73 65 64  lumn can be used
107b0 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 41 20 5b 53 45  .</p>..<p>^A [SE
107c0 4c 45 43 54 5d 20 73 74 61 74 65 6d 65 6e 74 20  LECT] statement 
107d0 75 73 65 64 20 61 73 20 65 69 74 68 65 72 20 61  used as either a
107e0 20 73 63 61 6c 61 72 20 73 75 62 71 75 65 72 79   scalar subquery
107f0 20 6f 72 20 61 73 20 74 68 65 20 0a 72 69 67 68   or as the .righ
10800 74 2d 68 61 6e 64 20 6f 70 65 72 61 6e 64 20 6f  t-hand operand o
10810 66 20 61 6e 20 49 4e 2c 20 4e 4f 54 20 49 4e 20  f an IN, NOT IN 
10820 6f 72 20 45 58 49 53 54 53 20 65 78 70 72 65 73  or EXISTS expres
10830 73 69 6f 6e 20 6d 61 79 20 63 6f 6e 74 61 69 6e  sion may contain
10840 20 0a 72 65 66 65 72 65 6e 63 65 73 20 74 6f 20   .references to 
10850 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65 20 6f  columns in the o
10860 75 74 65 72 20 71 75 65 72 79 2e 20 53 75 63 68  uter query. Such
10870 20 61 20 73 75 62 71 75 65 72 79 20 69 73 20 6b   a subquery is k
10880 6e 6f 77 6e 20 61 73 0a 61 20 63 6f 72 72 65 6c  nown as.a correl
10890 61 74 65 64 20 73 75 62 71 75 65 72 79 2e 20 5e  ated subquery. ^
108a0 41 20 63 6f 72 72 65 6c 61 74 65 64 20 73 75 62  A correlated sub
108b0 71 75 65 72 79 20 69 73 20 72 65 65 76 61 6c 75  query is reevalu
108c0 61 74 65 64 20 65 61 63 68 20 74 69 6d 65 0a 69  ated each time.i
108d0 74 73 20 72 65 73 75 6c 74 20 69 73 20 72 65 71  ts result is req
108e0 75 69 72 65 64 2e 20 5e 41 6e 20 75 6e 63 6f 72  uired. ^An uncor
108f0 72 65 6c 61 74 65 64 20 73 75 62 71 75 65 72 79  related subquery
10900 20 69 73 20 65 76 61 6c 75 61 74 65 64 20 6f 6e   is evaluated on
10910 6c 79 20 6f 6e 63 65 0a 61 6e 64 20 74 68 65 20  ly once.and the 
10920 72 65 73 75 6c 74 20 72 65 75 73 65 64 20 61 73  result reused as
10930 20 6e 65 63 65 73 73 61 72 79 2e 0a 0a 3c 74 63   necessary...<tc
10940 6c 3e 68 64 5f 66 72 61 67 6d 65 6e 74 20 63 61  l>hd_fragment ca
10950 73 74 65 78 70 72 20 7b 43 41 53 54 20 65 78 70  stexpr {CAST exp
10960 72 65 73 73 69 6f 6e 7d 3c 2f 74 63 6c 3e 0a 3c  ression}</tcl>.<
10970 68 33 3e 43 41 53 54 20 65 78 70 72 65 73 73 69  h3>CAST expressi
10980 6f 6e 73 3c 2f 68 33 3e 0a 0a 3c 70 3e 41 20 43  ons</h3>..<p>A C
10990 41 53 54 20 65 78 70 72 65 73 73 69 6f 6e 20 69  AST expression i
109a0 73 20 75 73 65 64 20 74 6f 20 63 6f 6e 76 65 72  s used to conver
109b0 74 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 26  t the value of &
109c0 6c 74 3b 65 78 70 72 26 67 74 3b 20 74 6f 20 0a  lt;expr&gt; to .
109d0 61 20 64 69 66 66 65 72 65 6e 74 20 5b 73 74 6f  a different [sto
109e0 72 61 67 65 20 63 6c 61 73 73 5d 20 69 6e 20 61  rage class] in a
109f0 20 73 69 6d 69 6c 61 72 20 77 61 79 20 74 6f 20   similar way to 
10a00 74 68 65 20 63 6f 6e 76 65 72 73 69 6f 6e 20 74  the conversion t
10a10 68 61 74 20 74 61 6b 65 73 0a 70 6c 61 63 65 20  hat takes.place 
10a20 77 68 65 6e 20 61 20 5b 63 6f 6c 75 6d 6e 20 61  when a [column a
10a30 66 66 69 6e 69 74 79 5d 20 69 73 20 61 70 70 6c  ffinity] is appl
10a40 69 65 64 20 74 6f 20 61 20 76 61 6c 75 65 2e 20  ied to a value. 
10a50 5e 41 70 70 6c 69 63 61 74 69 6f 6e 20 6f 66 20  ^Application of 
10a60 61 20 43 41 53 54 0a 65 78 70 72 65 73 73 69 6f  a CAST.expressio
10a70 6e 20 69 73 20 64 69 66 66 65 72 65 6e 74 20 74  n is different t
10a80 6f 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 6f 66  o application of
10a90 20 61 20 63 6f 6c 75 6d 6e 20 61 66 66 69 6e 69   a column affini
10aa0 74 79 2c 20 61 73 0a 77 69 74 68 20 61 20 43 41  ty, as.with a CA
10ab0 53 54 20 65 78 70 72 65 73 73 69 6f 6e 20 74 68  ST expression th
10ac0 65 20 73 74 6f 72 61 67 65 20 63 6c 61 73 73 20  e storage class 
10ad0 63 6f 6e 76 65 72 73 69 6f 6e 20 69 73 20 66 6f  conversion is fo
10ae0 72 63 65 64 20 65 76 65 6e 20 0a 69 66 20 69 74  rced even .if it
10af0 20 69 73 20 6c 6f 73 73 79 20 61 6e 64 20 69 72   is lossy and ir
10b00 72 72 65 76 65 72 73 69 62 6c 65 2e 0a 0a 3c 70  rreversible...<p
10b10 3e 5e 49 66 20 74 68 65 20 76 61 6c 75 65 20 6f  >^If the value o
10b20 66 20 26 6c 74 3b 65 78 70 72 26 67 74 3b 20 69  f &lt;expr&gt; i
10b30 73 20 4e 55 4c 4c 2c 20 74 68 65 6e 20 74 68 65  s NULL, then the
10b40 20 72 65 73 75 6c 74 20 6f 66 20 74 68 65 20 43   result of the C
10b50 41 53 54 0a 65 78 70 72 65 73 73 69 6f 6e 20 69  AST.expression i
10b60 73 20 61 6c 73 6f 20 4e 55 4c 4c 2e 20 5e 4f 74  s also NULL. ^Ot
10b70 68 65 72 77 69 73 65 2c 20 74 68 65 20 73 74 6f  herwise, the sto
10b80 72 61 67 65 20 63 6c 61 73 73 20 6f 66 20 74 68  rage class of th
10b90 65 20 72 65 73 75 6c 74 20 76 61 6c 75 65 0a 69  e result value.i
10ba0 73 20 64 65 74 65 72 6d 69 6e 65 64 20 62 79 20  s determined by 
10bb0 61 70 70 6c 79 69 6e 67 20 74 68 65 20 5b 72 75  applying the [ru
10bc0 6c 65 73 20 66 6f 72 20 64 65 74 65 72 6d 69 6e  les for determin
10bd0 69 6e 67 20 63 6f 6c 75 6d 6e 20 61 66 66 69 6e  ing column affin
10be0 69 74 79 5d 20 74 6f 0a 74 68 65 20 26 6c 74 3b  ity] to.the &lt;
10bf0 74 79 70 65 2d 6e 61 6d 65 26 67 74 3b 20 73 70  type-name&gt; sp
10c00 65 63 69 66 69 65 64 20 61 73 20 70 61 72 74 20  ecified as part 
10c10 6f 66 20 74 68 65 20 43 41 53 54 20 65 78 70 72  of the CAST expr
10c20 65 73 73 69 6f 6e 2e 0a 0a 3c 74 61 62 6c 65 20  ession...<table 
10c30 62 6f 72 64 65 72 3d 31 3e 0a 3c 74 72 3e 0a 20  border=1>.<tr>. 
10c40 20 3c 74 68 3e 20 41 66 66 69 6e 69 74 79 20 6f   <th> Affinity o
10c50 66 20 26 6c 74 3b 74 79 70 65 2d 6e 61 6d 65 26  f &lt;type-name&
10c60 67 74 3b 0a 20 20 3c 74 68 3e 20 43 6f 6e 76 65  gt;.  <th> Conve
10c70 72 73 69 6f 6e 20 50 72 6f 63 65 73 73 69 6e 67  rsion Processing
10c80 0a 3c 74 72 3e 0a 20 20 3c 74 64 3e 20 4e 4f 4e  .<tr>.  <td> NON
10c90 45 20 0a 20 20 3c 74 64 3e 20 5e 43 61 73 74 69  E .  <td> ^Casti
10ca0 6e 67 20 61 20 76 61 6c 75 65 20 74 6f 20 61 20  ng a value to a 
10cb0 26 6c 74 3b 74 79 70 65 2d 6e 61 6d 65 26 67 74  &lt;type-name&gt
10cc0 3b 20 77 69 74 68 20 6e 6f 20 61 66 66 69 6e 69  ; with no affini
10cd0 74 79 20 63 61 75 73 65 73 20 74 68 65 20 76 61  ty causes the va
10ce0 6c 75 65 20 74 6f 0a 20 20 62 65 20 63 6f 6e 76  lue to.  be conv
10cf0 65 72 74 65 64 20 69 6e 74 6f 20 61 20 42 4c 4f  erted into a BLO
10d00 42 2e 20 20 5e 43 61 73 74 69 6e 67 20 74 6f 20  B.  ^Casting to 
10d10 61 20 42 4c 4f 42 20 63 6f 6e 73 69 73 74 73 20  a BLOB consists 
10d20 6f 66 20 66 69 72 73 74 20 63 61 73 74 69 6e 67  of first casting
10d30 0a 20 20 74 68 65 20 76 61 6c 75 65 20 74 6f 20  .  the value to 
10d40 54 45 58 54 20 69 6e 20 74 68 65 20 5b 65 6e 63  TEXT in the [enc
10d50 6f 64 69 6e 67 5d 20 6f 66 20 74 68 65 20 64 61  oding] of the da
10d60 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
10d70 6e 2c 20 74 68 65 6e 0a 20 20 69 6e 74 65 72 70  n, then.  interp
10d80 72 65 74 69 6e 67 20 74 68 65 20 72 65 73 75 6c  reting the resul
10d90 74 69 6e 67 20 62 79 74 65 20 73 65 71 75 65 6e  ting byte sequen
10da0 63 65 20 61 73 20 61 20 42 4c 4f 42 20 69 6e 73  ce as a BLOB ins
10db0 74 65 61 64 20 6f 66 20 61 73 20 54 45 58 54 2e  tead of as TEXT.
10dc0 0a 0a 3c 74 72 3e 0a 20 20 3c 74 64 3e 20 54 45  ..<tr>.  <td> TE
10dd0 58 54 0a 20 20 3c 74 64 3e 20 5e 54 6f 20 63 61  XT.  <td> ^To ca
10de0 73 74 20 61 20 42 4c 4f 42 20 76 61 6c 75 65 20  st a BLOB value 
10df0 74 6f 20 54 45 58 54 2c 20 74 68 65 20 73 65 71  to TEXT, the seq
10e00 75 65 6e 63 65 20 6f 66 20 62 79 74 65 73 20 74  uence of bytes t
10e10 68 61 74 20 6d 61 6b 65 20 75 70 20 74 68 65 0a  hat make up the.
10e20 20 20 42 4c 4f 42 20 69 73 20 69 6e 74 65 72 70    BLOB is interp
10e30 72 65 74 65 64 20 61 73 20 74 65 78 74 20 65 6e  reted as text en
10e40 63 6f 64 65 64 20 75 73 69 6e 67 20 74 68 65 20  coded using the 
10e50 64 61 74 61 62 61 73 65 20 65 6e 63 6f 64 69 6e  database encodin
10e60 67 2e 0a 20 20 3c 70 3e 0a 20 20 20 5e 43 61 73  g..  <p>.   ^Cas
10e70 74 69 6e 67 20 61 6e 20 49 4e 54 45 47 45 52 20  ting an INTEGER 
10e80 6f 72 20 52 45 41 4c 20 76 61 6c 75 65 20 69 6e  or REAL value in
10e90 74 6f 20 54 45 58 54 20 72 65 6e 64 65 72 73 20  to TEXT renders 
10ea0 74 68 65 20 76 61 6c 75 65 20 61 73 20 69 66 20  the value as if 
10eb0 76 69 61 20 0a 20 20 20 20 5b 73 71 6c 69 74 65  via .    [sqlite
10ec0 33 5f 73 6e 70 72 69 6e 74 66 28 29 5d 20 65 78  3_snprintf()] ex
10ed0 63 65 70 74 20 74 68 61 74 20 74 68 65 20 72 65  cept that the re
10ee0 73 75 6c 74 69 6e 67 20 54 45 58 54 20 75 73 65  sulting TEXT use
10ef0 73 20 74 68 65 20 5b 65 6e 63 6f 64 69 6e 67 5d  s the [encoding]
10f00 20 6f 66 0a 20 20 20 20 74 68 65 20 64 61 74 61   of.    the data
10f10 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e  base connection.
10f20 0a 0a 3c 74 72 3e 0a 20 20 3c 74 64 3e 20 52 45  ..<tr>.  <td> RE
10f30 41 4c 0a 20 20 3c 74 64 3e 20 5e 57 68 65 6e 20  AL.  <td> ^When 
10f40 63 61 73 74 69 6e 67 20 61 20 42 4c 4f 42 20 76  casting a BLOB v
10f50 61 6c 75 65 20 74 6f 20 61 20 52 45 41 4c 2c 20  alue to a REAL, 
10f60 74 68 65 20 76 61 6c 75 65 20 69 73 20 66 69 72  the value is fir
10f70 73 74 20 63 6f 6e 76 65 72 74 65 64 20 74 6f 0a  st converted to.
10f80 20 20 20 20 20 20 20 20 54 45 58 54 2e 0a 20 20          TEXT..  
10f90 20 20 20 20 20 3c 70 3e 5e 57 68 65 6e 20 63 61       <p>^When ca
10fa0 73 74 69 6e 67 20 61 20 54 45 58 54 20 76 61 6c  sting a TEXT val
10fb0 75 65 20 74 6f 20 52 45 41 4c 2c 20 74 68 65 20  ue to REAL, the 
10fc0 6c 6f 6e 67 65 73 74 20 70 6f 73 73 69 62 6c 65  longest possible
10fd0 20 70 72 65 66 69 78 20 6f 66 0a 20 20 20 20 20   prefix of.     
10fe0 20 20 20 74 68 65 20 76 61 6c 75 65 20 74 68 61     the value tha
10ff0 74 20 63 61 6e 20 62 65 20 69 6e 74 65 72 70 72  t can be interpr
11000 65 74 65 64 20 61 73 20 61 20 72 65 61 6c 20 6e  eted as a real n
11010 75 6d 62 65 72 20 69 73 20 65 78 74 72 61 63 74  umber is extract
11020 65 64 20 66 72 6f 6d 0a 20 20 20 20 20 20 20 20  ed from.        
11030 74 68 65 20 54 45 58 54 20 76 61 6c 75 65 20 61  the TEXT value a
11040 6e 64 20 74 68 65 20 72 65 6d 61 69 6e 64 65 72  nd the remainder
11050 20 69 67 6e 6f 72 65 64 2e 20 5e 41 6e 79 20 6c   ignored. ^Any l
11060 65 61 64 69 6e 67 20 73 70 61 63 65 73 20 69 6e  eading spaces in
11070 20 74 68 65 0a 20 20 20 20 20 20 20 20 54 45 58   the.        TEX
11080 54 20 76 61 6c 75 65 20 61 72 65 20 69 67 6e 6f  T value are igno
11090 72 65 64 20 77 68 65 6e 20 63 6f 6e 76 65 72 67  red when converg
110a0 69 6e 67 20 66 72 6f 6d 20 54 45 58 54 20 74 6f  ing from TEXT to
110b0 20 52 45 41 4c 2e 20 5e 28 49 66 20 74 68 65 72   REAL. ^(If ther
110c0 65 20 69 73 0a 20 20 20 20 20 20 20 20 6e 6f 20  e is.        no 
110d0 70 72 65 66 69 78 20 74 68 61 74 20 63 61 6e 20  prefix that can 
110e0 62 65 20 69 6e 74 65 72 70 72 65 74 65 64 20 61  be interpreted a
110f0 73 20 61 20 72 65 61 6c 20 6e 75 6d 62 65 72 2c  s a real number,
11100 20 74 68 65 20 72 65 73 75 6c 74 20 6f 66 20 74   the result of t
11110 68 65 0a 20 20 20 20 20 20 20 20 63 6f 6e 76 65  he.        conve
11120 72 73 69 6f 6e 20 69 73 20 30 2e 30 2e 29 5e 0a  rsion is 0.0.)^.
11130 0a 3c 74 72 3e 0a 20 20 3c 74 64 3e 20 49 4e 54  .<tr>.  <td> INT
11140 45 47 45 52 0a 20 20 3c 74 64 3e 20 5e 57 68 65  EGER.  <td> ^Whe
11150 6e 20 63 61 73 74 69 6e 67 20 61 20 42 4c 4f 42  n casting a BLOB
11160 20 76 61 6c 75 65 20 74 6f 20 49 4e 54 45 47 45   value to INTEGE
11170 52 2c 20 74 68 65 20 76 61 6c 75 65 20 69 73 20  R, the value is 
11180 66 69 72 73 74 20 63 6f 6e 76 65 72 74 65 64 20  first converted 
11190 74 6f 0a 20 20 20 20 20 20 20 20 54 45 58 54 2e  to.        TEXT.
111a0 0a 20 20 20 20 20 20 20 3c 70 3e 5e 57 68 65 6e  .       <p>^When
111b0 20 63 61 73 74 69 6e 67 20 61 20 54 45 58 54 20   casting a TEXT 
111c0 76 61 6c 75 65 20 74 6f 20 49 4e 54 45 47 45 52  value to INTEGER
111d0 2c 20 74 68 65 20 6c 6f 6e 67 65 73 74 20 70 6f  , the longest po
111e0 73 73 69 62 6c 65 20 70 72 65 66 69 78 20 6f 66  ssible prefix of
111f0 0a 20 20 20 20 20 20 20 20 74 68 65 20 76 61 6c  .        the val
11200 75 65 20 74 68 61 74 20 63 61 6e 20 62 65 20 69  ue that can be i
11210 6e 74 65 72 70 72 65 74 65 64 20 61 73 20 61 6e  nterpreted as an
11220 20 69 6e 74 65 67 65 72 20 6e 75 6d 62 65 72 20   integer number 
11230 69 73 20 65 78 74 72 61 63 74 65 64 20 66 72 6f  is extracted fro
11240 6d 0a 20 20 20 20 20 20 20 20 74 68 65 20 54 45  m.        the TE
11250 58 54 20 76 61 6c 75 65 20 61 6e 64 20 74 68 65  XT value and the
11260 20 72 65 6d 61 69 6e 64 65 72 20 69 67 6e 6f 72   remainder ignor
11270 65 64 2e 20 5e 41 6e 79 20 6c 65 61 64 69 6e 67  ed. ^Any leading
11280 20 73 70 61 63 65 73 20 69 6e 20 74 68 65 0a 20   spaces in the. 
11290 20 20 20 20 20 20 20 54 45 58 54 20 76 61 6c 75         TEXT valu
112a0 65 20 77 68 65 6e 20 63 6f 6e 76 65 72 74 69 6e  e when convertin
112b0 67 20 66 72 6f 6d 20 54 45 58 54 20 74 6f 20 49  g from TEXT to I
112c0 4e 54 45 47 45 52 20 61 72 65 20 69 67 6e 6f 72  NTEGER are ignor
112d0 65 64 2e 20 5e 49 66 20 74 68 65 72 65 0a 20 20  ed. ^If there.  
112e0 20 20 20 20 20 20 69 73 20 6e 6f 20 70 72 65 66        is no pref
112f0 69 78 20 74 68 61 74 20 63 61 6e 20 62 65 20 69  ix that can be i
11300 6e 74 65 72 70 72 65 74 65 64 20 61 73 20 61 6e  nterpreted as an
11310 20 69 6e 74 65 67 65 72 20 6e 75 6d 62 65 72 2c   integer number,
11320 20 74 68 65 20 72 65 73 75 6c 74 0a 20 20 20 20   the result.    
11330 20 20 20 20 6f 66 20 74 68 65 20 63 6f 6e 76 65      of the conve
11340 72 73 69 6f 6e 20 69 73 20 30 2e 0a 0a 20 20 20  rsion is 0...   
11350 20 20 20 3c 70 3e 5e 41 20 63 61 73 74 20 6f 66     <p>^A cast of
11360 20 61 20 52 45 41 4c 20 76 61 6c 75 65 20 69 6e   a REAL value in
11370 74 6f 20 61 6e 20 49 4e 54 45 47 45 52 20 77 69  to an INTEGER wi
11380 6c 6c 20 74 72 75 6e 63 61 74 65 20 74 68 65 20  ll truncate the 
11390 66 72 61 63 74 69 6f 6e 61 6c 0a 20 20 20 20 20  fractional.     
113a0 20 70 61 72 74 20 6f 66 20 74 68 65 20 52 45 41   part of the REA
113b0 4c 2e 20 20 5e 49 66 20 61 6e 20 52 45 41 4c 20  L.  ^If an REAL 
113c0 69 73 20 74 6f 6f 20 6c 61 72 67 65 20 74 6f 20  is too large to 
113d0 62 65 20 72 65 70 72 65 73 65 6e 74 65 64 20 61  be represented a
113e0 73 20 61 6e 20 0a 20 20 20 20 20 20 49 4e 54 45  s an .      INTE
113f0 47 45 52 20 74 68 65 6e 20 74 68 65 20 72 65 73  GER then the res
11400 75 6c 74 20 6f 66 20 74 68 65 20 63 61 73 74 20  ult of the cast 
11410 69 73 20 74 68 65 20 6c 61 72 67 65 73 74 20 6e  is the largest n
11420 65 67 61 74 69 76 65 20 69 6e 74 65 67 65 72 3a  egative integer:
11430 20 0a 20 20 20 20 20 20 2d 39 32 32 33 33 37 32   .      -9223372
11440 30 33 36 38 35 34 37 37 35 38 30 38 2e 0a 0a 3c  036854775808...<
11450 74 72 3e 0a 20 20 3c 74 64 3e 20 4e 55 4d 45 52  tr>.  <td> NUMER
11460 49 43 0a 20 20 3c 74 64 3e 20 5e 43 61 73 74 69  IC.  <td> ^Casti
11470 6e 67 20 61 20 54 45 58 54 20 6f 72 20 42 4c 4f  ng a TEXT or BLO
11480 42 20 76 61 6c 75 65 20 69 6e 74 6f 20 4e 55 4d  B value into NUM
11490 45 52 49 43 20 66 69 72 73 74 20 64 6f 65 73 20  ERIC first does 
114a0 61 20 66 6f 72 63 65 64 0a 20 20 20 63 6f 6e 76  a forced.   conv
114b0 65 72 73 69 6f 6e 20 69 6e 74 6f 20 52 45 41 4c  ersion into REAL
114c0 20 62 75 74 20 74 68 65 6e 20 66 75 72 74 68 65   but then furthe
114d0 72 20 63 6f 6e 76 65 72 74 73 20 74 68 65 20 72  r converts the r
114e0 65 73 75 6c 74 20 69 6e 74 6f 20 49 4e 54 45 47  esult into INTEG
114f0 45 52 20 69 66 0a 20 20 20 61 6e 64 20 6f 6e 6c  ER if.   and onl
11500 79 20 69 66 20 74 68 65 20 63 6f 6e 76 65 72 73  y if the convers
11510 69 6f 6e 20 66 72 6f 6d 20 52 45 41 4c 20 74 6f  ion from REAL to
11520 20 49 4e 54 45 47 45 52 20 69 73 20 6c 6f 73 73   INTEGER is loss
11530 6c 65 73 73 20 61 6e 64 20 72 65 76 65 72 73 69  less and reversi
11540 62 6c 65 2e 0a 20 20 20 54 68 69 73 20 69 73 20  ble..   This is 
11550 74 68 65 20 6f 6e 6c 79 20 63 6f 6e 74 65 78 74  the only context
11560 20 69 6e 20 53 51 4c 69 74 65 20 77 68 65 72 65   in SQLite where
11570 20 74 68 65 20 4e 55 4d 45 52 49 43 20 61 6e 64   the NUMERIC and
11580 20 49 4e 54 45 47 45 52 20 5b 61 66 66 69 6e 69   INTEGER [affini
11590 74 69 65 73 5d 0a 20 20 20 62 65 68 61 76 65 20  ties].   behave 
115a0 64 69 66 66 65 72 65 6e 74 6c 79 2e 0a 20 20 20  differently..   
115b0 3c 70 3e 20 5e 43 61 73 74 69 6e 67 20 61 20 52  <p> ^Casting a R
115c0 45 41 4c 20 6f 72 20 49 4e 54 45 47 45 52 20 76  EAL or INTEGER v
115d0 61 6c 75 65 20 74 6f 20 4e 55 4d 45 52 49 43 20  alue to NUMERIC 
115e0 69 73 20 61 20 6e 6f 2d 6f 70 2c 20 65 76 65 6e  is a no-op, even
115f0 20 69 66 20 61 20 72 65 61 6c 0a 20 20 20 76 61   if a real.   va
11600 6c 75 65 20 63 6f 75 6c 64 20 62 65 20 6c 6f 73  lue could be los
11610 73 6c 65 73 73 6c 79 20 63 6f 6e 76 65 72 74 65  slessly converte
11620 64 20 74 6f 20 61 6e 20 69 6e 74 65 67 65 72 2e  d to an integer.
11630 0a 0a 3c 2f 74 72 3e 0a 0a 3c 2f 74 61 62 6c 65  ..</tr>..</table
11640 3e 0a 0a 3c 70 3e 5e 4e 6f 74 65 20 74 68 61 74  >..<p>^Note that
11650 20 74 68 65 20 72 65 73 75 6c 74 20 66 72 6f 6d   the result from
11660 20 63 61 73 74 69 6e 67 20 61 6e 79 20 6e 6f 6e   casting any non
11670 2d 42 4c 4f 42 20 76 61 6c 75 65 20 69 6e 74 6f  -BLOB value into
11680 20 61 20 0a 42 4c 4f 42 20 61 6e 64 20 74 68 65   a .BLOB and the
11690 20 72 65 73 75 6c 74 20 66 72 6f 6d 20 63 61 73   result from cas
116a0 74 69 6e 67 20 61 6e 79 20 42 4c 4f 42 20 76 61  ting any BLOB va
116b0 6c 75 65 20 69 6e 74 6f 20 61 20 6e 6f 6e 2d 42  lue into a non-B
116c0 4c 4f 42 20 76 61 6c 75 65 0a 6d 61 79 20 62 65  LOB value.may be
116d0 20 64 69 66 66 65 72 65 6e 74 20 64 65 70 65 6e   different depen
116e0 64 69 6e 67 20 6f 6e 20 77 68 65 74 68 65 72 20  ding on whether 
116f0 74 68 65 20 64 61 74 61 62 61 73 65 20 5b 65 6e  the database [en
11700 63 6f 64 69 6e 67 5d 20 69 73 20 55 54 46 2d 38  coding] is UTF-8
11710 2c 0a 55 54 46 2d 31 36 62 65 2c 20 6f 72 20 55  ,.UTF-16be, or U
11720 54 46 2d 31 36 6c 65 2e 0a 0a 3c 68 33 3e 46 75  TF-16le...<h3>Fu
11730 6e 63 74 69 6f 6e 73 3c 2f 68 33 3e 0a 3c 70 3e  nctions</h3>.<p>
11740 5e 42 6f 74 68 20 5b 63 6f 72 65 66 75 6e 63 7c  ^Both [corefunc|
11750 73 69 6d 70 6c 65 5d 20 61 6e 64 20 5b 61 67 67  simple] and [agg
11760 66 75 6e 63 7c 61 67 67 72 65 67 61 74 65 5d 20  func|aggregate] 
11770 66 75 6e 63 74 69 6f 6e 73 20 61 72 65 20 73 75  functions are su
11780 70 70 6f 72 74 65 64 2e 0a 28 46 6f 72 20 70 72  pported..(For pr
11790 65 73 65 6e 74 61 74 69 6f 6e 20 70 75 72 70 6f  esentation purpo
117a0 73 65 73 2c 20 73 69 6d 70 6c 65 20 66 75 6e 63  ses, simple func
117b0 74 69 6f 6e 73 20 61 72 65 20 66 75 72 74 68 65  tions are furthe
117c0 72 20 73 75 62 64 69 76 69 64 65 64 20 69 6e 74  r subdivided int
117d0 6f 0a 5b 63 6f 72 65 66 75 6e 63 20 7c 20 63 6f  o.[corefunc | co
117e0 72 65 20 66 75 6e 63 74 69 6f 6e 73 5d 20 61 6e  re functions] an
117f0 64 20 5b 64 61 74 65 66 75 6e 63 20 7c 20 64 61  d [datefunc | da
11800 74 65 2d 74 69 6d 65 20 66 75 6e 63 74 69 6f 6e  te-time function
11810 73 5d 2e 29 0a 5e 41 20 73 69 6d 70 6c 65 20 66  s].).^A simple f
11820 75 6e 63 74 69 6f 6e 20 63 61 6e 20 62 65 20 75  unction can be u
11830 73 65 64 20 69 6e 20 61 6e 79 20 65 78 70 72 65  sed in any expre
11840 73 73 69 6f 6e 2e 20 20 5e 53 69 6d 70 6c 65 20  ssion.  ^Simple 
11850 66 75 6e 63 74 69 6f 6e 73 20 72 65 74 75 72 6e  functions return
11860 0a 61 20 72 65 73 75 6c 74 20 69 6d 6d 65 64 69  .a result immedi
11870 61 74 65 6c 79 20 62 61 73 65 64 20 6f 6e 20 74  ately based on t
11880 68 65 69 72 20 69 6e 70 75 74 73 2e 20 20 5e 41  heir inputs.  ^A
11890 67 67 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f  ggregate functio
118a0 6e 73 0a 6d 61 79 20 6f 6e 6c 79 20 62 65 20 75  ns.may only be u
118b0 73 65 64 20 69 6e 20 61 20 53 45 4c 45 43 54 20  sed in a SELECT 
118c0 73 74 61 74 65 6d 65 6e 74 2e 20 20 5e 41 67 67  statement.  ^Agg
118d0 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 73  regate functions
118e0 20 63 6f 6d 70 75 74 65 0a 74 68 65 69 72 20 72   compute.their r
118f0 65 73 75 6c 74 20 61 63 72 6f 73 73 20 61 6c 6c  esult across all
11900 20 72 6f 77 73 20 6f 66 20 74 68 65 20 72 65 73   rows of the res
11910 75 6c 74 20 73 65 74 2e 3c 2f 70 3e 0a 0a 3c 74  ult set.</p>..<t
11920 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23  cl>.############
11930 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
11940 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
11950 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
11960 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
11970 23 23 0a 53 65 63 74 69 6f 6e 20 7b 43 6f 72 65  ##.Section {Core
11980 20 46 75 6e 63 74 69 6f 6e 73 7d 20 63 6f 72 65   Functions} core
11990 66 75 6e 63 20 7b 2a 63 6f 72 65 66 75 6e 63 7d  func {*corefunc}
119a0 0a 70 72 6f 63 20 66 75 6e 63 64 65 66 20 7b 73  .proc funcdef {s
119b0 79 6e 74 61 78 20 6b 65 79 77 6f 72 64 73 20 64  yntax keywords d
119c0 65 73 63 7d 20 7b 0a 20 20 68 64 5f 70 75 74 73  esc} {.  hd_puts
119d0 20 7b 3c 74 72 3e 7d 0a 20 20 72 65 67 73 75 62   {<tr>}.  regsub
119e0 20 2d 61 6c 6c 20 7b 5c 73 2b 7d 20 5b 73 74 72   -all {\s+} [str
119f0 69 6e 67 20 74 72 69 6d 20 24 73 79 6e 74 61 78  ing trim $syntax
11a00 5d 20 7b 3c 62 72 3e 3c 2f 62 72 3e 7d 20 73 79  ] {<br></br>} sy
11a10 6e 74 61 78 0a 20 20 72 65 67 73 75 62 20 2d 61  ntax.  regsub -a
11a20 6c 6c 20 7b 5c 28 28 5b 5e 2a 29 5d 2b 29 5c 29  ll {\(([^*)]+)\)
11a30 7d 20 24 73 79 6e 74 61 78 20 7b 28 3c 69 3e 5c  } $syntax {(<i>\
11a40 31 3c 2f 69 3e 29 7d 20 73 79 6e 74 61 78 0a 20  1</i>)} syntax. 
11a50 20 72 65 67 73 75 62 20 2d 61 6c 6c 20 7b 2c 7d   regsub -all {,}
11a60 20 24 73 79 6e 74 61 78 20 7b 3c 2f 69 3e 2c 3c   $syntax {</i>,<
11a70 69 3e 7d 20 73 79 6e 74 61 78 0a 20 20 72 65 67  i>} syntax.  reg
11a80 73 75 62 20 2d 61 6c 6c 20 7b 3c 69 3e 5c 2e 5c  sub -all {<i>\.\
11a90 2e 5c 2e 3c 2f 69 3e 7d 20 24 73 79 6e 74 61 78  .\.</i>} $syntax
11aa0 20 7b 2e 2e 2e 7d 20 73 79 6e 74 61 78 0a 20 20   {...} syntax.  
11ab0 68 64 5f 70 75 74 73 20 22 3c 74 64 20 76 61 6c  hd_puts "<td val
11ac0 69 67 6e 3d 5c 22 74 6f 70 5c 22 20 61 6c 69 67  ign=\"top\" alig
11ad0 6e 3d 5c 22 72 69 67 68 74 5c 22 20 77 69 64 74  n=\"right\" widt
11ae0 68 3d 5c 22 31 32 30 5c 22 3e 22 0a 20 20 69 66  h=\"120\">".  if
11af0 20 7b 5b 6c 6c 65 6e 67 74 68 20 24 6b 65 79 77   {[llength $keyw
11b00 6f 72 64 73 5d 3d 3d 30 7d 20 7b 0a 20 20 20 20  ords]==0} {.    
11b10 72 65 67 65 78 70 20 7b 5b 61 2d 7a 5f 5d 2b 7d  regexp {[a-z_]+}
11b20 20 24 73 79 6e 74 61 78 20 6e 61 6d 65 0a 20 20   $syntax name.  
11b30 20 20 68 64 5f 66 72 61 67 6d 65 6e 74 20 24 6e    hd_fragment $n
11b40 61 6d 65 20 2a 24 6e 61 6d 65 20 22 24 7b 6e 61  ame *$name "${na
11b50 6d 65 7d 28 29 20 53 51 4c 20 66 75 6e 63 74 69  me}() SQL functi
11b60 6f 6e 22 0a 20 20 7d 20 65 6c 73 65 20 7b 0a 20  on".  } else {. 
11b70 20 20 20 73 65 74 20 66 72 61 67 6e 61 6d 65 20     set fragname 
11b80 5b 6c 69 6e 64 65 78 20 24 6b 65 79 77 6f 72 64  [lindex $keyword
11b90 73 20 30 5d 0a 20 20 20 20 72 65 67 73 75 62 20  s 0].    regsub 
11ba0 2d 61 6c 6c 20 7b 5b 5e 61 2d 7a 5d 7d 20 24 66  -all {[^a-z]} $f
11bb0 72 61 67 6e 61 6d 65 20 7b 7d 20 66 72 61 67 6e  ragname {} fragn
11bc0 61 6d 65 0a 20 20 20 20 68 64 5f 66 72 61 67 6d  ame.    hd_fragm
11bd0 65 6e 74 20 24 66 72 61 67 6e 61 6d 65 0a 20 20  ent $fragname.  
11be0 20 20 65 76 61 6c 20 68 64 5f 6b 65 79 77 6f 72    eval hd_keywor
11bf0 64 73 20 5b 73 74 72 69 6e 67 20 6d 61 70 20 7b  ds [string map {
11c00 5c 6e 20 7b 20 7d 7d 20 24 6b 65 79 77 6f 72 64  \n { }} $keyword
11c10 73 5d 0a 20 20 7d 0a 20 20 68 64 5f 70 75 74 73  s].  }.  hd_puts
11c20 20 22 24 73 79 6e 74 61 78 3c 2f 74 64 3e 22 0a   "$syntax</td>".
11c30 20 20 68 64 5f 70 75 74 73 20 7b 3c 74 64 20 76    hd_puts {<td v
11c40 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 7d 0a 20 20  align="top">}.  
11c50 68 64 5f 72 65 73 6f 6c 76 65 20 24 64 65 73 63  hd_resolve $desc
11c60 0a 20 20 68 64 5f 70 75 74 73 20 7b 3c 2f 74 64  .  hd_puts {</td
11c70 3e 3c 2f 74 72 3e 7d 0a 7d 0a 3c 2f 74 63 6c 3e  ></tr>}.}.</tcl>
11c80 0a 0a 3c 70 3e 54 68 65 20 63 6f 72 65 20 66 75  ..<p>The core fu
11c90 6e 63 74 69 6f 6e 73 20 73 68 6f 77 6e 20 62 65  nctions shown be
11ca0 6c 6f 77 20 61 72 65 20 61 76 61 69 6c 61 62 6c  low are availabl
11cb0 65 20 62 79 20 64 65 66 61 75 6c 74 2e 20 0a 5b  e by default. .[
11cc0 64 61 74 65 66 75 6e 63 20 7c 20 44 61 74 65 20  datefunc | Date 
11cd0 26 61 6d 70 3b 20 54 69 6d 65 20 66 75 6e 63 74  &amp; Time funct
11ce0 69 6f 6e 73 5d 20 61 6e 64 0a 5b 61 67 67 66 75  ions] and.[aggfu
11cf0 6e 63 20 7c 20 61 67 67 72 65 67 61 74 65 20 66  nc | aggregate f
11d00 75 6e 63 74 69 6f 6e 73 5d 20 61 72 65 20 64 6f  unctions] are do
11d10 63 75 6d 65 6e 74 65 64 20 73 65 70 61 72 61 74  cumented separat
11d20 65 6c 79 2e 20 20 41 6e 0a 61 70 70 6c 69 63 61  ely.  An.applica
11d30 74 69 6f 6e 20 6d 61 79 20 64 65 66 69 6e 65 20  tion may define 
11d40 61 64 64 69 74 69 6f 6e 61 6c 0a 66 75 6e 63 74  additional.funct
11d50 69 6f 6e 73 20 77 72 69 74 74 65 6e 20 69 6e 20  ions written in 
11d60 43 20 61 6e 64 20 61 64 64 65 64 20 74 6f 20 74  C and added to t
11d70 68 65 20 64 61 74 61 62 61 73 65 20 65 6e 67 69  he database engi
11d80 6e 65 20 75 73 69 6e 67 0a 74 68 65 20 5b 73 71  ne using.the [sq
11d90 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 66 75 6e  lite3_create_fun
11da0 63 74 69 6f 6e 28 29 5d 20 41 50 49 2e 3c 2f 70  ction()] API.</p
11db0 3e 0a 0a 3c 74 61 62 6c 65 20 62 6f 72 64 65 72  >..<table border
11dc0 3d 30 20 63 65 6c 6c 70 61 64 64 69 6e 67 3d 31  =0 cellpadding=1
11dd0 30 3e 0a 3c 74 63 6c 3e 0a 66 75 6e 63 64 65 66  0>.<tcl>.funcdef
11de0 20 7b 61 62 73 28 58 29 7d 20 7b 7d 20 7b 0a 20   {abs(X)} {} {. 
11df0 20 5e 54 68 65 20 61 62 73 28 58 29 20 66 75 6e   ^The abs(X) fun
11e00 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 74 68  ction returns th
11e10 65 20 61 62 73 6f 6c 75 74 65 20 76 61 6c 75 65  e absolute value
11e20 20 6f 66 20 74 68 65 20 6e 75 6d 65 72 69 63 0a   of the numeric.
11e30 20 20 61 72 67 75 6d 65 6e 74 20 58 2e 20 20 5e    argument X.  ^
11e40 41 62 73 28 58 29 20 72 65 74 75 72 6e 73 20 4e  Abs(X) returns N
11e50 55 4c 4c 20 69 66 20 58 20 69 73 20 4e 55 4c 4c  ULL if X is NULL
11e60 2e 20 0a 20 20 5e 28 41 62 73 28 58 29 20 72 65  . .  ^(Abs(X) re
11e70 74 75 72 6e 20 30 2e 30 20 69 66 20 58 20 69 73  turn 0.0 if X is
11e80 20 61 20 73 74 72 69 6e 67 20 6f 72 20 62 6c 6f   a string or blo
11e90 62 0a 20 20 74 68 61 74 20 63 61 6e 6e 6f 74 20  b.  that cannot 
11ea0 62 65 20 63 6f 6e 76 65 72 74 65 64 20 74 6f 20  be converted to 
11eb0 61 20 6e 75 6d 65 72 69 63 20 76 61 6c 75 65 2e  a numeric value.
11ec0 29 5e 20 20 5e 49 66 20 58 20 69 73 20 74 68 65  )^  ^If X is the
11ed0 20 0a 20 20 69 6e 74 65 67 65 72 20 2d 39 32 32   .  integer -922
11ee0 33 33 37 32 30 33 36 38 35 34 37 37 35 38 30 37  3372036854775807
11ef0 20 74 68 65 6e 20 61 62 73 28 58 29 20 74 68 72   then abs(X) thr
11f00 6f 77 73 20 61 6e 20 69 6e 74 65 67 65 72 20 6f  ows an integer o
11f10 76 65 72 66 6c 6f 77 0a 20 20 65 72 72 6f 72 20  verflow.  error 
11f20 73 69 6e 63 65 20 74 68 65 72 65 20 69 73 20 6e  since there is n
11f30 6f 20 65 71 75 69 76 61 6c 65 6e 74 20 70 6f 73  o equivalent pos
11f40 69 74 69 76 65 20 36 34 2d 62 69 74 20 74 77 6f  itive 64-bit two
11f50 20 63 6f 6d 70 6c 65 6d 65 6e 74 20 76 61 6c 75   complement valu
11f60 65 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 63  e..}..funcdef {c
11f70 68 61 6e 67 65 73 28 29 7d 20 7b 7d 20 7b 0a 20  hanges()} {} {. 
11f80 20 5e 54 68 65 20 63 68 61 6e 67 65 73 28 29 20   ^The changes() 
11f90 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73  function returns
11fa0 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 64   the number of d
11fb0 61 74 61 62 61 73 65 20 72 6f 77 73 20 74 68 61  atabase rows tha
11fc0 74 20 77 65 72 65 20 63 68 61 6e 67 65 64 0a 20  t were changed. 
11fd0 20 6f 72 20 69 6e 73 65 72 74 65 64 20 6f 72 20   or inserted or 
11fe0 64 65 6c 65 74 65 64 20 62 79 20 74 68 65 20 6d  deleted by the m
11ff0 6f 73 74 20 72 65 63 65 6e 74 6c 79 20 63 6f 6d  ost recently com
12000 70 6c 65 74 65 64 20 49 4e 53 45 52 54 2c 20 44  pleted INSERT, D
12010 45 4c 45 54 45 2c 0a 20 20 6f 72 20 55 50 44 41  ELETE,.  or UPDA
12020 54 45 20 73 74 61 74 65 6d 65 6e 74 2c 20 65 78  TE statement, ex
12030 63 6c 75 73 69 76 65 20 6f 66 20 73 74 61 74 65  clusive of state
12040 6d 65 6e 74 73 20 69 6e 20 6c 6f 77 65 72 2d 6c  ments in lower-l
12050 65 76 65 6c 20 74 72 69 67 67 65 72 73 2e 0a 20  evel triggers.. 
12060 20 5e 54 68 65 20 63 68 61 6e 67 65 73 28 29 20   ^The changes() 
12070 53 51 4c 20 66 75 6e 63 74 69 6f 6e 20 69 73 20  SQL function is 
12080 61 20 77 72 61 70 70 65 72 20 61 72 6f 75 6e 64  a wrapper around
12090 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 63 68   the [sqlite3_ch
120a0 61 6e 67 65 73 28 29 5d 0a 20 20 43 2f 43 2b 2b  anges()].  C/C++
120b0 20 66 75 6e 63 74 69 6f 6e 20 61 6e 64 20 68 65   function and he
120c0 6e 63 65 20 66 6f 6c 6c 6f 77 73 20 74 68 65 20  nce follows the 
120d0 73 61 6d 65 20 72 75 6c 65 73 20 66 6f 72 20 63  same rules for c
120e0 6f 75 6e 74 69 6e 67 20 63 68 61 6e 67 65 73 2e  ounting changes.
120f0 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 63 6f 61  .}..funcdef {coa
12100 6c 65 73 63 65 28 58 2c 59 2c 2e 2e 2e 29 7d 20  lesce(X,Y,...)} 
12110 7b 7d 20 7b 0a 20 20 5e 54 68 65 20 63 6f 61 6c  {} {.  ^The coal
12120 65 73 63 65 28 29 20 66 75 6e 63 74 69 6f 6e 20  esce() function 
12130 72 65 74 75 72 6e 73 20 61 20 63 6f 70 79 20 6f  returns a copy o
12140 66 20 69 74 73 20 66 69 72 73 74 20 6e 6f 6e 2d  f its first non-
12150 4e 55 4c 4c 20 61 72 67 75 6d 65 6e 74 2c 20 6f  NULL argument, o
12160 72 0a 20 20 4e 55 4c 4c 20 69 66 20 61 6c 6c 20  r.  NULL if all 
12170 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20 4e 55  arguments are NU
12180 4c 4c 2e 20 20 5e 43 6f 61 6c 65 73 63 65 28 29  LL.  ^Coalesce()
12190 20 6d 75 73 74 20 62 65 20 61 74 20 6c 65 61 73   must be at leas
121a0 74 20 0a 20 20 32 20 61 72 67 75 6d 65 6e 74 73  t .  2 arguments
121b0 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 67 6c  ..}..funcdef {gl
121c0 6f 62 28 58 2c 59 29 7d 20 7b 7d 20 7b 0a 20 20  ob(X,Y)} {} {.  
121d0 5e 54 68 65 20 67 6c 6f 62 28 58 2c 59 29 20 66  ^The glob(X,Y) f
121e0 75 6e 63 74 69 6f 6e 20 69 73 20 65 71 75 69 76  unction is equiv
121f0 61 6c 65 6e 74 20 74 6f 20 74 68 65 0a 20 20 65  alent to the.  e
12200 78 70 72 65 73 73 69 6f 6e 20 22 3c 62 3e 59 20  xpression "<b>Y 
12210 47 4c 4f 42 20 58 3c 2f 62 3e 22 2e 0a 20 20 4e  GLOB X</b>"..  N
12220 6f 74 65 20 74 68 61 74 20 74 68 65 20 58 20 61  ote that the X a
12230 6e 64 20 59 20 61 72 67 75 6d 65 6e 74 73 20 61  nd Y arguments a
12240 72 65 20 72 65 76 65 72 73 65 64 20 69 6e 20 74  re reversed in t
12250 68 65 20 67 6c 6f 62 28 29 20 66 75 6e 63 74 69  he glob() functi
12260 6f 6e 0a 20 20 72 65 6c 61 74 69 76 65 20 74 6f  on.  relative to
12270 20 74 68 65 20 69 6e 66 69 78 20 5b 47 4c 4f 42   the infix [GLOB
12280 5d 20 6f 70 65 72 61 74 6f 72 2e 0a 20 20 5e 49  ] operator..  ^I
12290 66 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 63  f the [sqlite3_c
122a0 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 28 29  reate_function()
122b0 5d 20 69 6e 74 65 72 66 61 63 65 20 69 73 20 75  ] interface is u
122c0 73 65 64 20 74 6f 0a 20 20 6f 76 65 72 72 69 64  sed to.  overrid
122d0 65 20 74 68 65 20 67 6c 6f 62 28 58 2c 59 29 20  e the glob(X,Y) 
122e0 66 75 6e 63 74 69 6f 6e 20 77 69 74 68 20 61 6e  function with an
122f0 20 61 6c 74 65 72 6e 61 74 69 76 65 20 69 6d 70   alternative imp
12300 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 74 68 65 6e  lementation then
12310 0a 20 20 74 68 65 20 5b 47 4c 4f 42 5d 20 6f 70  .  the [GLOB] op
12320 65 72 61 74 6f 72 20 77 69 6c 6c 20 69 6e 76 6f  erator will invo
12330 6b 65 20 74 68 65 20 61 6c 74 65 72 6e 61 74 69  ke the alternati
12340 76 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  ve implementatio
12350 6e 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 69  n..}..funcdef {i
12360 66 6e 75 6c 6c 28 58 2c 59 29 7d 20 7b 7d 20 7b  fnull(X,Y)} {} {
12370 0a 20 20 5e 54 68 65 20 69 66 6e 75 6c 6c 28 29  .  ^The ifnull()
12380 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e   function return
12390 73 20 61 20 63 6f 70 79 20 6f 66 20 69 74 73 20  s a copy of its 
123a0 66 69 72 73 74 20 6e 6f 6e 2d 4e 55 4c 4c 20 61  first non-NULL a
123b0 72 67 75 6d 65 6e 74 2c 20 6f 72 0a 20 20 4e 55  rgument, or.  NU
123c0 4c 4c 20 69 66 20 62 6f 74 68 20 61 72 67 75 6d  LL if both argum
123d0 65 6e 74 73 20 61 72 65 20 4e 55 4c 4c 2e 20 20  ents are NULL.  
123e0 5e 49 66 6e 75 6c 6c 28 29 20 6d 75 73 74 20 68  ^Ifnull() must h
123f0 61 76 65 20 65 78 61 63 74 6c 79 20 32 20 61 72  ave exactly 2 ar
12400 67 75 6d 65 6e 74 73 2e 0a 20 20 5e 54 68 65 20  guments..  ^The 
12410 69 66 6e 75 6c 6c 28 29 20 66 75 6e 63 74 69 6f  ifnull() functio
12420 6e 20 69 73 20 65 71 75 69 76 61 6c 65 6e 74 20  n is equivalent 
12430 74 6f 20 5b 63 6f 61 6c 65 73 63 65 28 29 5d 20  to [coalesce()] 
12440 77 69 74 68 20 74 77 6f 20 61 72 67 75 6d 65 6e  with two argumen
12450 74 73 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b  ts..}..funcdef {
12460 68 65 78 28 58 29 7d 20 7b 7d 20 7b 0a 20 20 5e  hex(X)} {} {.  ^
12470 54 68 65 20 68 65 78 28 29 20 66 75 6e 63 74 69  The hex() functi
12480 6f 6e 20 69 6e 74 65 72 70 72 65 74 73 20 69 74  on interprets it
12490 73 20 61 72 67 75 6d 65 6e 74 20 61 73 20 61 20  s argument as a 
124a0 42 4c 4f 42 20 61 6e 64 20 72 65 74 75 72 6e 73  BLOB and returns
124b0 0a 20 20 61 20 73 74 72 69 6e 67 20 77 68 69 63  .  a string whic
124c0 68 20 69 73 20 74 68 65 20 75 70 70 65 72 2d 63  h is the upper-c
124d0 61 73 65 20 68 65 78 61 64 65 63 69 6d 61 6c 20  ase hexadecimal 
124e0 72 65 6e 64 65 72 69 6e 67 20 6f 66 20 74 68 65  rendering of the
124f0 20 63 6f 6e 74 65 6e 74 20 6f 66 0a 20 20 74 68   content of.  th
12500 61 74 20 62 6c 6f 62 2e 0a 7d 0a 0a 66 75 6e 63  at blob..}..func
12510 64 65 66 20 7b 6c 61 73 74 5f 69 6e 73 65 72 74  def {last_insert
12520 5f 72 6f 77 69 64 28 29 7d 20 7b 7d 20 7b 0a 20  _rowid()} {} {. 
12530 20 5e 54 68 65 20 6c 61 73 74 5f 69 6e 73 65 72   ^The last_inser
12540 74 5f 72 6f 77 69 64 28 29 20 66 75 6e 63 74 69  t_rowid() functi
12550 6f 6e 20 72 65 74 75 72 6e 73 20 74 68 65 20 5b  on returns the [
12560 52 4f 57 49 44 5d 0a 20 20 6f 66 20 74 68 65 20  ROWID].  of the 
12570 6c 61 73 74 20 72 6f 77 20 69 6e 73 65 72 74 20  last row insert 
12580 66 72 6f 6d 20 74 68 65 20 64 61 74 61 62 61 73  from the databas
12590 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 77 68 69  e connection whi
125a0 63 68 20 69 6e 76 6f 6b 65 64 20 74 68 65 0a 20  ch invoked the. 
125b0 20 66 75 6e 63 74 69 6f 6e 2e 0a 20 20 5e 54 68   function..  ^Th
125c0 65 20 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f  e last_insert_ro
125d0 77 69 64 28 29 20 53 51 4c 20 66 75 6e 63 74 69  wid() SQL functi
125e0 6f 6e 20 69 73 20 61 20 77 72 61 70 70 65 72 20  on is a wrapper 
125f0 61 72 6f 75 6e 64 20 74 68 65 0a 20 20 5b 73 71  around the.  [sq
12600 6c 69 74 65 33 5f 6c 61 73 74 5f 69 6e 73 65 72  lite3_last_inser
12610 74 5f 72 6f 77 69 64 28 29 5d 20 43 2f 43 2b 2b  t_rowid()] C/C++
12620 20 69 6e 74 65 72 66 61 63 65 20 66 75 6e 63 74   interface funct
12630 69 6f 6e 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20  ion..}..funcdef 
12640 7b 6c 65 6e 67 74 68 28 58 29 7d 20 7b 7d 20 7b  {length(X)} {} {
12650 0a 20 20 5e 54 68 65 20 6c 65 6e 67 74 68 28 58  .  ^The length(X
12660 29 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72  ) function retur
12670 6e 73 20 74 68 65 20 6c 65 6e 67 74 68 20 6f 66  ns the length of
12680 20 58 20 69 6e 20 0a 20 20 63 68 61 72 61 63 74   X in .  charact
12690 65 72 73 20 69 66 20 58 20 69 73 20 61 20 73 74  ers if X is a st
126a0 72 69 6e 67 2c 20 6f 72 20 69 6e 20 62 79 74 65  ring, or in byte
126b0 73 20 69 66 20 58 20 69 73 20 61 20 62 6c 6f 62  s if X is a blob
126c0 2e 0a 20 20 5e 49 66 20 58 20 69 73 20 4e 55 4c  ..  ^If X is NUL
126d0 4c 20 74 68 65 6e 20 6c 65 6e 67 74 68 28 58 29  L then length(X)
126e0 20 69 73 20 4e 55 4c 4c 2e 0a 20 20 5e 49 66 20   is NULL..  ^If 
126f0 58 20 69 73 20 6e 75 6d 65 72 69 63 20 74 68 65  X is numeric the
12700 6e 20 6c 65 6e 67 74 68 28 58 29 20 72 65 74 75  n length(X) retu
12710 72 6e 73 20 74 68 65 20 6c 65 6e 67 74 68 20 6f  rns the length o
12720 66 20 61 20 73 74 72 69 6e 67 0a 20 20 72 65 70  f a string.  rep
12730 72 65 73 65 6e 74 61 74 69 6f 6e 20 6f 66 20 58  resentation of X
12740 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 6c 69  ..}..funcdef {li
12750 6b 65 28 58 2c 59 29 20 6c 69 6b 65 28 58 2c 59  ke(X,Y) like(X,Y
12760 2c 5a 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68 65  ,Z)} {} {.  ^The
12770 20 6c 69 6b 65 28 29 20 66 75 6e 63 74 69 6f 6e   like() function
12780 20 69 73 20 75 73 65 64 20 74 6f 20 69 6d 70 6c   is used to impl
12790 65 6d 65 6e 74 20 74 68 65 0a 20 20 22 3c 62 3e  ement the.  "<b>
127a0 59 20 4c 49 4b 45 20 58 20 26 23 39 31 3b 45 53  Y LIKE X &#91;ES
127b0 43 41 50 45 20 5a 26 23 39 33 3b 3c 2f 62 3e 22  CAPE Z&#93;</b>"
127c0 20 65 78 70 72 65 73 73 69 6f 6e 2e 20 0a 20 20   expression. .  
127d0 5e 49 66 20 74 68 65 20 6f 70 74 69 6f 6e 61 6c  ^If the optional
127e0 20 45 53 43 41 50 45 20 63 6c 61 75 73 65 20 69   ESCAPE clause i
127f0 73 20 70 72 65 73 65 6e 74 2c 20 74 68 65 6e 20  s present, then 
12800 74 68 65 0a 20 20 6c 69 6b 65 28 29 20 66 75 6e  the.  like() fun
12810 63 74 69 6f 6e 20 69 73 20 69 6e 76 6f 6b 65 64  ction is invoked
12820 20 77 69 74 68 20 74 68 72 65 65 20 61 72 67 75   with three argu
12830 6d 65 6e 74 73 2e 20 20 5e 4f 74 68 65 72 77 69  ments.  ^Otherwi
12840 73 65 2c 20 69 74 20 69 73 0a 20 20 69 6e 76 6f  se, it is.  invo
12850 6b 65 64 20 77 69 74 68 20 74 77 6f 20 61 72 67  ked with two arg
12860 75 6d 65 6e 74 73 20 6f 6e 6c 79 2e 20 4e 6f 74  uments only. Not
12870 65 20 74 68 61 74 20 74 68 65 20 58 20 61 6e 64  e that the X and
12880 20 59 20 70 61 72 61 6d 65 74 65 72 73 20 61 72   Y parameters ar
12890 65 0a 20 20 72 65 76 65 72 73 65 64 20 69 6e 20  e.  reversed in 
128a0 74 68 65 20 6c 69 6b 65 28 29 20 66 75 6e 63 74  the like() funct
128b0 69 6f 6e 20 72 65 6c 61 74 69 76 65 20 74 6f 20  ion relative to 
128c0 74 68 65 20 69 6e 66 69 78 20 5b 4c 49 4b 45 5d  the infix [LIKE]
128d0 20 6f 70 65 72 61 74 6f 72 2e 0a 20 20 5e 54 68   operator..  ^Th
128e0 65 20 5b 73 71 6c 69 74 65 33 5f 63 72 65 61 74  e [sqlite3_creat
128f0 65 5f 66 75 6e 63 74 69 6f 6e 28 29 5d 20 69 6e  e_function()] in
12900 74 65 72 66 61 63 65 20 63 61 6e 20 62 65 20 75  terface can be u
12910 73 65 64 20 74 6f 20 6f 76 65 72 72 69 64 65 20  sed to override 
12920 74 68 65 0a 20 20 6c 69 6b 65 28 29 20 66 75 6e  the.  like() fun
12930 63 74 69 6f 6e 20 61 6e 64 20 74 68 65 72 65 62  ction and thereb
12940 79 20 63 68 61 6e 67 65 20 74 68 65 20 6f 70 65  y change the ope
12950 72 61 74 69 6f 6e 20 6f 66 20 74 68 65 0a 20 20  ration of the.  
12960 5b 4c 49 4b 45 5d 20 6f 70 65 72 61 74 6f 72 2e  [LIKE] operator.
12970 20 20 57 68 65 6e 20 6f 76 65 72 72 69 64 69 6e    When overridin
12980 67 20 74 68 65 20 6c 69 6b 65 28 29 20 66 75 6e  g the like() fun
12990 63 74 69 6f 6e 2c 20 69 74 20 6d 61 79 20 62 65  ction, it may be
129a0 20 69 6d 70 6f 72 74 61 6e 74 0a 20 20 74 6f 20   important.  to 
129b0 6f 76 65 72 72 69 64 65 20 62 6f 74 68 20 74 68  override both th
129c0 65 20 74 77 6f 20 61 6e 64 20 74 68 72 65 65 20  e two and three 
129d0 61 72 67 75 6d 65 6e 74 20 76 65 72 73 69 6f 6e  argument version
129e0 73 20 6f 66 20 74 68 65 20 6c 69 6b 65 28 29 20  s of the like() 
129f0 0a 20 20 66 75 6e 63 74 69 6f 6e 2e 20 4f 74 68  .  function. Oth
12a00 65 72 77 69 73 65 2c 20 64 69 66 66 65 72 65 6e  erwise, differen
12a10 74 20 63 6f 64 65 20 6d 61 79 20 62 65 20 63 61  t code may be ca
12a20 6c 6c 65 64 20 74 6f 20 69 6d 70 6c 65 6d 65 6e  lled to implemen
12a30 74 20 74 68 65 0a 20 20 5b 4c 49 4b 45 5d 20 6f  t the.  [LIKE] o
12a40 70 65 72 61 74 6f 72 20 64 65 70 65 6e 64 69 6e  perator dependin
12a50 67 20 6f 6e 20 77 68 65 74 68 65 72 20 6f 72 20  g on whether or 
12a60 6e 6f 74 20 61 6e 20 45 53 43 41 50 45 20 63 6c  not an ESCAPE cl
12a70 61 75 73 65 20 77 61 73 20 0a 20 20 73 70 65 63  ause was .  spec
12a80 69 66 69 65 64 2e 0a 7d 0a 0a 66 75 6e 63 64 65  ified..}..funcde
12a90 66 20 7b 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f  f {load_extensio
12aa0 6e 28 58 29 20 6c 6f 61 64 5f 65 78 74 65 6e 73  n(X) load_extens
12ab0 69 6f 6e 28 58 2c 59 29 7d 20 7b 7d 20 7b 0a 20  ion(X,Y)} {} {. 
12ac0 20 5e 54 68 65 20 6c 6f 61 64 5f 65 78 74 65 6e   ^The load_exten
12ad0 73 69 6f 6e 28 58 2c 59 29 20 66 75 6e 63 74 69  sion(X,Y) functi
12ae0 6f 6e 20 6c 6f 61 64 73 20 53 51 4c 69 74 65 20  on loads SQLite 
12af0 65 78 74 65 6e 73 69 6f 6e 73 20 6f 75 74 20 6f  extensions out o
12b00 66 20 74 68 65 20 73 68 61 72 65 64 0a 20 20 6c  f the shared.  l
12b10 69 62 72 61 72 79 20 66 69 6c 65 20 6e 61 6d 65  ibrary file name
12b20 64 20 58 20 75 73 69 6e 67 20 74 68 65 20 65 6e  d X using the en
12b30 74 72 79 20 70 6f 69 6e 74 20 59 2e 20 20 5e 54  try point Y.  ^T
12b40 68 65 20 72 65 73 75 6c 74 20 6f 66 20 6c 6f 61  he result of loa
12b50 64 5f 65 78 74 65 6e 73 69 6f 6e 28 29 0a 20 20  d_extension().  
12b60 69 73 20 61 6c 77 61 79 73 20 61 20 4e 55 4c 4c  is always a NULL
12b70 2e 20 20 5e 49 66 20 59 20 69 73 20 6f 6d 69 74  .  ^If Y is omit
12b80 74 65 64 20 74 68 65 6e 20 74 68 65 20 64 65 66  ted then the def
12b90 61 75 6c 74 20 65 6e 74 72 79 20 70 6f 69 6e 74  ault entry point
12ba0 0a 20 20 6f 66 20 3c 62 3e 73 71 6c 69 74 65 33  .  of <b>sqlite3
12bb0 5f 65 78 74 65 6e 73 69 6f 6e 5f 69 6e 69 74 3c  _extension_init<
12bc0 2f 62 3e 20 69 73 20 75 73 65 64 2e 20 20 5e 54  /b> is used.  ^T
12bd0 68 65 20 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f  he load_extensio
12be0 6e 28 29 20 66 75 6e 63 74 69 6f 6e 0a 20 20 72  n() function.  r
12bf0 61 69 73 65 73 20 61 6e 20 65 78 63 65 70 74 69  aises an excepti
12c00 6f 6e 20 69 66 20 74 68 65 20 65 78 74 65 6e 73  on if the extens
12c10 69 6f 6e 20 66 61 69 6c 73 20 74 6f 20 6c 6f 61  ion fails to loa
12c20 64 20 6f 72 20 69 6e 69 74 69 61 6c 69 7a 65 20  d or initialize 
12c30 63 6f 72 72 65 63 74 6c 79 2e 0a 0a 20 20 3c 70  correctly...  <p
12c40 3e 5e 54 68 65 20 6c 6f 61 64 5f 65 78 74 65 6e  >^The load_exten
12c50 73 69 6f 6e 28 29 20 66 75 6e 63 74 69 6f 6e 20  sion() function 
12c60 77 69 6c 6c 20 66 61 69 6c 20 69 66 20 74 68 65  will fail if the
12c70 20 65 78 74 65 6e 73 69 6f 6e 20 61 74 74 65 6d   extension attem
12c80 70 74 73 20 74 6f 20 0a 20 20 6d 6f 64 69 66 79  pts to .  modify
12c90 20 6f 72 20 64 65 6c 65 74 65 20 61 20 53 51 4c   or delete a SQL
12ca0 20 66 75 6e 63 74 69 6f 6e 20 6f 72 20 63 6f 6c   function or col
12cb0 6c 61 74 69 6e 67 20 73 65 71 75 65 6e 63 65 2e  lating sequence.
12cc0 20 20 5e 54 68 65 0a 20 20 65 78 74 65 6e 73 69    ^The.  extensi
12cd0 6f 6e 20 63 61 6e 20 61 64 64 20 6e 65 77 20 66  on can add new f
12ce0 75 6e 63 74 69 6f 6e 73 20 6f 72 20 63 6f 6c 6c  unctions or coll
12cf0 61 74 69 6e 67 20 73 65 71 75 65 6e 63 65 73 2c  ating sequences,
12d00 20 62 75 74 20 63 61 6e 6e 6f 74 0a 20 20 6d 6f   but cannot.  mo
12d10 64 69 66 79 20 6f 72 20 64 65 6c 65 74 65 20 65  dify or delete e
12d20 78 69 73 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e  xisting function
12d30 73 20 6f 72 20 63 6f 6c 6c 61 74 69 6e 67 20 73  s or collating s
12d40 65 71 75 65 6e 63 65 73 20 62 65 63 61 75 73 65  equences because
12d50 0a 20 20 74 68 6f 73 65 20 66 75 6e 63 74 69 6f  .  those functio
12d60 6e 73 20 61 6e 64 2f 6f 72 20 63 6f 6c 6c 61 74  ns and/or collat
12d70 69 6e 67 20 73 65 71 75 65 6e 63 65 73 20 6d 69  ing sequences mi
12d80 67 68 74 20 62 65 20 75 73 65 64 20 65 6c 73 65  ght be used else
12d90 77 68 65 72 65 0a 20 20 69 6e 20 74 68 65 20 63  where.  in the c
12da0 75 72 72 65 6e 74 6c 79 20 72 75 6e 6e 69 6e 67  urrently running
12db0 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 2e 20   SQL statement. 
12dc0 20 54 6f 20 6c 6f 61 64 20 61 6e 20 65 78 74 65   To load an exte
12dd0 6e 73 69 6f 6e 20 74 68 61 74 0a 20 20 63 68 61  nsion that.  cha
12de0 6e 67 65 73 20 6f 72 20 64 65 6c 65 74 65 73 20  nges or deletes 
12df0 66 75 6e 63 74 69 6f 6e 73 20 6f 72 20 63 6f 6c  functions or col
12e00 6c 61 74 69 6e 67 20 73 65 71 75 65 6e 63 65 73  lating sequences
12e10 2c 20 75 73 65 20 74 68 65 0a 20 20 5b 73 71 6c  , use the.  [sql
12e20 69 74 65 33 5f 6c 6f 61 64 5f 65 78 74 65 6e 73  ite3_load_extens
12e30 69 6f 6e 28 29 5d 20 43 2d 6c 61 6e 67 75 61 67  ion()] C-languag
12e40 65 20 41 50 49 2e 3c 2f 70 3e 0a 7d 0a 0a 66 75  e API.</p>.}..fu
12e50 6e 63 64 65 66 20 7b 6c 6f 77 65 72 28 58 29 7d  ncdef {lower(X)}
12e60 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20 6c 6f 77   {} {.  ^The low
12e70 65 72 28 58 29 20 66 75 6e 63 74 69 6f 6e 20 72  er(X) function r
12e80 65 74 75 72 6e 73 20 61 20 63 6f 70 79 20 6f 66  eturns a copy of
12e90 20 73 74 72 69 6e 67 20 58 20 77 69 74 68 20 61   string X with a
12ea0 6c 6c 20 41 53 43 49 49 20 63 68 61 72 61 63 74  ll ASCII charact
12eb0 65 72 73 0a 20 20 63 6f 6e 76 65 72 74 65 64 20  ers.  converted 
12ec0 74 6f 20 6c 6f 77 65 72 20 63 61 73 65 2e 20 20  to lower case.  
12ed0 5e 54 68 65 20 64 65 66 61 75 6c 74 20 62 75 69  ^The default bui
12ee0 6c 74 2d 69 6e 20 6c 6f 77 65 72 28 29 20 66 75  lt-in lower() fu
12ef0 6e 63 74 69 6f 6e 20 77 6f 72 6b 73 0a 20 20 66  nction works.  f
12f00 6f 72 20 41 53 43 49 49 20 63 68 61 72 61 63 74  or ASCII charact
12f10 65 72 73 20 6f 6e 6c 79 2e 20 20 54 6f 20 64 6f  ers only.  To do
12f20 20 63 61 73 65 20 63 6f 6e 76 65 72 73 69 6f 6e   case conversion
12f30 73 20 6f 6e 20 6e 6f 6e 2d 41 53 43 49 49 0a 20  s on non-ASCII. 
12f40 20 63 68 61 72 61 63 74 65 72 73 2c 20 6c 6f 61   characters, loa
12f50 64 20 74 68 65 20 49 43 55 20 65 78 74 65 6e 73  d the ICU extens
12f60 69 6f 6e 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20  ion..}..funcdef 
12f70 7b 6c 74 72 69 6d 28 58 29 20 6c 74 72 69 6d 28  {ltrim(X) ltrim(
12f80 58 2c 59 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68  X,Y)} {} {.  ^Th
12f90 65 20 6c 74 72 69 6d 28 58 2c 59 29 20 66 75 6e  e ltrim(X,Y) fun
12fa0 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 61 20  ction returns a 
12fb0 73 74 72 69 6e 67 20 66 6f 72 6d 65 64 20 62 79  string formed by
12fc0 20 72 65 6d 6f 76 69 6e 67 20 61 6e 79 20 61 6e   removing any an
12fd0 64 20 61 6c 6c 0a 20 20 63 68 61 72 61 63 74 65  d all.  characte
12fe0 72 73 20 74 68 61 74 20 61 70 70 65 61 72 20 69  rs that appear i
12ff0 6e 20 59 20 66 72 6f 6d 20 74 68 65 20 6c 65 66  n Y from the lef
13000 74 20 73 69 64 65 20 6f 66 20 58 2e 0a 20 20 5e  t side of X..  ^
13010 49 66 20 74 68 65 20 59 20 61 72 67 75 6d 65 6e  If the Y argumen
13020 74 20 69 73 20 6f 6d 69 74 74 65 64 2c 20 6c 74  t is omitted, lt
13030 72 69 6d 28 58 29 20 72 65 6d 6f 76 65 73 20 73  rim(X) removes s
13040 70 61 63 65 73 20 66 72 6f 6d 20 74 68 65 20 6c  paces from the l
13050 65 66 74 20 73 69 64 65 0a 20 20 6f 66 20 58 2e  eft side.  of X.
13060 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 6d 61 78  .}..funcdef {max
13070 28 58 2c 59 2c 2e 2e 2e 29 7d 20 7b 2a 6d 61 78  (X,Y,...)} {*max
13080 43 6f 72 65 46 75 6e 63 20 2a 6d 61 78 20 7b 6d  CoreFunc *max {m
13090 61 78 28 29 20 53 51 4c 20 66 75 6e 63 74 69 6f  ax() SQL functio
130a0 6e 7d 7d 20 7b 0a 20 20 5e 54 68 65 20 6d 75 6c  n}} {.  ^The mul
130b0 74 69 2d 61 72 67 75 6d 65 6e 74 20 6d 61 78 28  ti-argument max(
130c0 29 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72  ) function retur
130d0 6e 73 20 74 68 65 20 61 72 67 75 6d 65 6e 74 20  ns the argument 
130e0 77 69 74 68 20 74 68 65 20 0a 20 20 6d 61 78 69  with the .  maxi
130f0 6d 75 6d 20 76 61 6c 75 65 2c 20 6f 72 20 72 65  mum value, or re
13100 74 75 72 6e 20 4e 55 4c 4c 20 69 66 20 61 6e 79  turn NULL if any
13110 20 61 72 67 75 6d 65 6e 74 20 69 73 20 4e 55 4c   argument is NUL
13120 4c 2e 20 0a 20 20 5e 54 68 65 20 6d 75 6c 74 69  L. .  ^The multi
13130 2d 61 72 67 75 6d 65 6e 74 20 6d 61 78 28 29 20  -argument max() 
13140 66 75 6e 63 74 69 6f 6e 20 73 65 61 72 63 68 65  function searche
13150 73 20 69 74 73 20 61 72 67 75 6d 65 6e 74 73 20  s its arguments 
13160 66 72 6f 6d 20 6c 65 66 74 20 74 6f 20 72 69 67  from left to rig
13170 68 74 0a 20 20 66 6f 72 20 61 6e 20 61 72 67 75  ht.  for an argu
13180 6d 65 6e 74 20 74 68 61 74 20 64 65 66 69 6e 65  ment that define
13190 73 20 61 20 63 6f 6c 6c 61 74 69 6e 67 20 66 75  s a collating fu
131a0 6e 63 74 69 6f 6e 20 61 6e 64 20 75 73 65 73 20  nction and uses 
131b0 74 68 61 74 20 63 6f 6c 6c 61 74 69 6e 67 0a 20  that collating. 
131c0 20 66 75 6e 63 74 69 6f 6e 20 66 6f 72 20 61 6c   function for al
131d0 6c 20 73 74 72 69 6e 67 20 63 6f 6d 70 61 72 69  l string compari
131e0 73 6f 6e 73 2e 20 20 5e 49 66 20 6e 6f 6e 65 20  sons.  ^If none 
131f0 6f 66 20 74 68 65 20 61 72 67 75 6d 65 6e 74 73  of the arguments
13200 20 74 6f 20 6d 61 78 28 29 0a 20 20 64 65 66 69   to max().  defi
13210 6e 65 20 61 20 63 6f 6c 6c 61 74 69 6e 67 20 66  ne a collating f
13220 75 6e 63 74 69 6f 6e 2c 20 74 68 65 6e 20 74 68  unction, then th
13230 65 20 42 49 4e 41 52 59 20 63 6f 6c 6c 61 74 69  e BINARY collati
13240 6e 67 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 75  ng function is u
13250 73 65 64 2e 0a 20 20 4e 6f 74 65 20 74 68 61 74  sed..  Note that
13260 20 3c 62 3e 6d 61 78 28 29 3c 2f 62 3e 20 69 73   <b>max()</b> is
13270 20 61 20 73 69 6d 70 6c 65 20 66 75 6e 63 74 69   a simple functi
13280 6f 6e 20 77 68 65 6e 0a 20 20 69 74 20 68 61 73  on when.  it has
13290 20 32 20 6f 72 20 6d 6f 72 65 20 61 72 67 75 6d   2 or more argum
132a0 65 6e 74 73 20 62 75 74 20 6f 70 65 72 61 74 65  ents but operate
132b0 73 20 61 73 20 61 6e 0a 20 20 5b 6d 69 6e 41 67  s as an.  [minAg
132c0 67 46 75 6e 63 20 7c 20 61 67 67 72 65 67 61 74  gFunc | aggregat
132d0 65 20 66 75 6e 63 74 69 6f 6e 5d 20 69 66 20 67  e function] if g
132e0 69 76 65 6e 20 6f 6e 6c 79 20 61 20 73 69 6e 67  iven only a sing
132f0 6c 65 20 61 72 67 75 6d 65 6e 74 2e 0a 7d 0a 0a  le argument..}..
13300 66 75 6e 63 64 65 66 20 7b 6d 69 6e 28 58 2c 59  funcdef {min(X,Y
13310 2c 2e 2e 2e 29 7d 20 7b 2a 6d 69 6e 43 6f 72 65  ,...)} {*minCore
13320 46 75 6e 63 20 2a 6d 69 6e 20 7b 6d 69 6e 28 29  Func *min {min()
13330 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 7d 7d 20   SQL function}} 
13340 7b 0a 20 20 5e 54 68 65 20 6d 75 6c 74 69 2d 61  {.  ^The multi-a
13350 72 67 75 6d 65 6e 74 20 6d 69 6e 28 29 20 66 75  rgument min() fu
13360 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 74  nction returns t
13370 68 65 20 61 72 67 75 6d 65 6e 74 20 77 69 74 68  he argument with
13380 20 74 68 65 0a 20 20 6d 69 6e 69 6d 75 6d 20 76   the.  minimum v
13390 61 6c 75 65 2e 0a 20 20 5e 54 68 65 20 6d 75 6c  alue..  ^The mul
133a0 74 69 2d 61 72 67 75 6d 65 6e 74 20 6d 69 6e 28  ti-argument min(
133b0 29 20 66 75 6e 63 74 69 6f 6e 20 73 65 61 72 63  ) function searc
133c0 68 65 73 20 69 74 73 20 61 72 67 75 6d 65 6e 74  hes its argument
133d0 73 20 66 72 6f 6d 20 6c 65 66 74 20 74 6f 20 72  s from left to r
133e0 69 67 68 74 0a 20 20 66 6f 72 20 61 6e 20 61 72  ight.  for an ar
133f0 67 75 6d 65 6e 74 20 74 68 61 74 20 64 65 66 69  gument that defi
13400 6e 65 73 20 61 20 63 6f 6c 6c 61 74 69 6e 67 20  nes a collating 
13410 66 75 6e 63 74 69 6f 6e 20 61 6e 64 20 75 73 65  function and use
13420 73 20 74 68 61 74 20 63 6f 6c 6c 61 74 69 6e 67  s that collating
13430 0a 20 20 66 75 6e 63 74 69 6f 6e 20 66 6f 72 20  .  function for 
13440 61 6c 6c 20 73 74 72 69 6e 67 20 63 6f 6d 70 61  all string compa
13450 72 69 73 6f 6e 73 2e 20 20 5e 49 66 20 6e 6f 6e  risons.  ^If non
13460 65 20 6f 66 20 74 68 65 20 61 72 67 75 6d 65 6e  e of the argumen
13470 74 73 20 74 6f 20 6d 69 6e 28 29 0a 20 20 64 65  ts to min().  de
13480 66 69 6e 65 20 61 20 63 6f 6c 6c 61 74 69 6e 67  fine a collating
13490 20 66 75 6e 63 74 69 6f 6e 2c 20 74 68 65 6e 20   function, then 
134a0 74 68 65 20 42 49 4e 41 52 59 20 63 6f 6c 6c 61  the BINARY colla
134b0 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e 20 69 73  ting function is
134c0 20 75 73 65 64 2e 0a 20 20 4e 6f 74 65 20 74 68   used..  Note th
134d0 61 74 20 3c 62 3e 6d 69 6e 28 29 3c 2f 62 3e 20  at <b>min()</b> 
134e0 69 73 20 61 20 73 69 6d 70 6c 65 20 66 75 6e 63  is a simple func
134f0 74 69 6f 6e 20 77 68 65 6e 0a 20 20 69 74 20 68  tion when.  it h
13500 61 73 20 32 20 6f 72 20 6d 6f 72 65 20 61 72 67  as 2 or more arg
13510 75 6d 65 6e 74 73 20 62 75 74 20 6f 70 65 72 61  uments but opera
13520 74 65 73 20 61 73 20 61 6e 20 0a 20 20 5b 6d 61  tes as an .  [ma
13530 78 41 67 67 46 75 6e 63 20 7c 20 61 67 67 72 65  xAggFunc | aggre
13540 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 5d 20 69  gate function] i
13550 66 20 67 69 76 65 6e 0a 20 20 6f 6e 6c 79 20 61  f given.  only a
13560 20 73 69 6e 67 6c 65 20 61 72 67 75 6d 65 6e 74   single argument
13570 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 6e 75  ..}..funcdef {nu
13580 6c 6c 69 66 28 58 2c 59 29 7d 20 7b 7d 20 7b 0a  llif(X,Y)} {} {.
13590 20 20 5e 54 68 65 20 6e 75 6c 6c 69 66 28 58 2c    ^The nullif(X,
135a0 59 29 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75  Y) function retu
135b0 72 6e 73 20 69 74 73 20 66 69 72 73 74 20 61 72  rns its first ar
135c0 67 75 6d 65 6e 74 20 69 66 20 74 68 65 20 61 72  gument if the ar
135d0 67 75 6d 65 6e 74 73 20 61 72 65 0a 20 20 64 69  guments are.  di
135e0 66 66 65 72 65 6e 74 20 61 6e 64 20 4e 55 4c 4c  fferent and NULL
135f0 20 69 66 20 74 68 65 20 61 72 67 75 6d 65 6e 74   if the argument
13600 73 20 61 72 65 20 74 68 65 20 73 61 6d 65 2e 20  s are the same. 
13610 20 5e 54 68 65 20 6e 75 6c 6c 69 66 28 58 2c 59   ^The nullif(X,Y
13620 29 20 66 75 6e 63 74 69 6f 6e 0a 20 20 73 65 61  ) function.  sea
13630 72 63 68 65 73 20 69 74 73 20 61 72 67 75 6d 65  rches its argume
13640 6e 74 73 20 66 72 6f 6d 20 6c 65 66 74 20 74 6f  nts from left to
13650 20 72 69 67 68 74 20 66 6f 72 20 61 6e 20 61 72   right for an ar
13660 67 75 6d 65 6e 74 20 74 68 61 74 20 64 65 66 69  gument that defi
13670 6e 65 73 20 61 0a 20 20 63 6f 6c 6c 61 74 69 6e  nes a.  collatin
13680 67 20 66 75 6e 63 74 69 6f 6e 20 61 6e 64 20 75  g function and u
13690 73 65 73 20 74 68 61 74 20 63 6f 6c 6c 61 74 69  ses that collati
136a0 6e 67 20 66 75 6e 63 74 69 6f 6e 20 66 6f 72 20  ng function for 
136b0 61 6c 6c 20 73 74 72 69 6e 67 0a 20 20 63 6f 6d  all string.  com
136c0 70 61 72 69 73 6f 6e 73 2e 20 20 5e 49 66 20 6e  parisons.  ^If n
136d0 65 69 74 68 65 72 20 61 72 67 75 6d 65 6e 74 20  either argument 
136e0 74 6f 20 6e 75 6c 6c 69 66 28 29 20 64 65 66 69  to nullif() defi
136f0 6e 65 73 20 61 20 63 6f 6c 6c 61 74 69 6e 67 20  nes a collating 
13700 66 75 6e 63 74 69 6f 6e 0a 20 20 74 68 65 6e 20  function.  then 
13710 74 68 65 20 42 49 4e 41 52 59 20 69 73 20 75 73  the BINARY is us
13720 65 64 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b  ed..}..funcdef {
13730 71 75 6f 74 65 28 58 29 7d 20 7b 7d 20 7b 0a 20  quote(X)} {} {. 
13740 20 5e 54 68 65 20 71 75 6f 74 65 28 58 29 20 66   ^The quote(X) f
13750 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20  unction returns 
13760 61 20 73 74 72 69 6e 67 20 77 68 69 63 68 20 69  a string which i
13770 73 20 74 68 65 20 76 61 6c 75 65 20 6f 66 0a 20  s the value of. 
13780 20 69 74 73 20 61 72 67 75 6d 65 6e 74 20 73 75   its argument su
13790 69 74 61 62 6c 65 20 66 6f 72 20 69 6e 63 6c 75  itable for inclu
137a0 73 69 6f 6e 20 69 6e 74 6f 20 61 6e 6f 74 68 65  sion into anothe
137b0 72 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 2e  r SQL statement.
137c0 0a 20 20 5e 53 74 72 69 6e 67 73 20 61 72 65 20  .  ^Strings are 
137d0 73 75 72 72 6f 75 6e 64 65 64 20 62 79 20 73 69  surrounded by si
137e0 6e 67 6c 65 2d 71 75 6f 74 65 73 20 77 69 74 68  ngle-quotes with
137f0 20 65 73 63 61 70 65 73 20 6f 6e 20 69 6e 74 65   escapes on inte
13800 72 69 6f 72 20 71 75 6f 74 65 73 0a 20 20 61 73  rior quotes.  as
13810 20 6e 65 65 64 65 64 2e 20 20 5e 42 4c 4f 42 73   needed.  ^BLOBs
13820 20 61 72 65 20 65 6e 63 6f 64 65 64 20 61 73 20   are encoded as 
13830 68 65 78 61 64 65 63 69 6d 61 6c 20 6c 69 74 65  hexadecimal lite
13840 72 61 6c 73 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66  rals..}..funcdef
13850 20 7b 72 61 6e 64 6f 6d 28 29 7d 20 7b 7d 20 7b   {random()} {} {
13860 0a 20 20 5e 54 68 65 20 72 61 6e 64 6f 6d 28 29  .  ^The random()
13870 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e   function return
13880 73 20 61 20 70 73 65 75 64 6f 2d 72 61 6e 64 6f  s a pseudo-rando
13890 6d 20 69 6e 74 65 67 65 72 0a 20 20 62 65 74 77  m integer.  betw
138a0 65 65 6e 20 2d 39 32 32 33 33 37 32 30 33 36 38  een -92233720368
138b0 35 34 37 37 35 38 30 38 20 61 6e 64 20 2b 39 32  54775808 and +92
138c0 32 33 33 37 32 30 33 36 38 35 34 37 37 35 38 30  2337203685477580
138d0 37 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 72  7..}..funcdef {r
138e0 61 6e 64 6f 6d 62 6c 6f 62 28 4e 29 7d 20 7b 7d  andomblob(N)} {}
138f0 20 7b 0a 20 20 5e 54 68 65 20 72 61 6e 64 6f 6d   {.  ^The random
13900 62 6c 6f 62 28 4e 29 20 66 75 6e 63 74 69 6f 6e  blob(N) function
13910 20 72 65 74 75 72 6e 20 61 6e 20 4e 2d 62 79 74   return an N-byt
13920 65 20 62 6c 6f 62 20 63 6f 6e 74 61 69 6e 69 6e  e blob containin
13930 67 20 70 73 65 75 64 6f 2d 72 61 6e 64 6f 6d 0a  g pseudo-random.
13940 20 20 62 79 74 65 73 2e 20 5e 49 66 20 4e 20 69    bytes. ^If N i
13950 73 20 6c 65 73 73 20 74 68 61 6e 20 31 20 74 68  s less than 1 th
13960 65 6e 20 61 20 31 2d 62 79 74 65 20 72 61 6e 64  en a 1-byte rand
13970 6f 6d 20 62 6c 6f 62 20 69 73 20 72 65 74 75 72  om blob is retur
13980 6e 65 64 2e 0a 0a 20 20 3c 70 3e 48 69 6e 74 3a  ned...  <p>Hint:
13990 20 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 63    applications c
139a0 61 6e 20 67 65 6e 65 72 61 74 65 20 67 6c 6f 62  an generate glob
139b0 61 6c 6c 79 20 75 6e 69 71 75 65 20 69 64 65 6e  ally unique iden
139c0 74 69 66 69 65 72 73 0a 20 20 75 73 69 6e 67 20  tifiers.  using 
139d0 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 74 6f  this function to
139e0 67 65 74 68 65 72 20 77 69 74 68 20 5b 68 65 78  gether with [hex
139f0 28 29 5d 20 61 6e 64 2f 6f 72 0a 20 20 5b 6c 6f  ()] and/or.  [lo
13a00 77 65 72 28 29 5d 20 6c 69 6b 65 20 74 68 69 73  wer()] like this
13a10 3a 3c 2f 70 3e 0a 0a 20 20 3c 62 6c 6f 63 6b 71  :</p>..  <blockq
13a20 75 6f 74 65 3e 0a 20 20 68 65 78 28 72 61 6e 64  uote>.  hex(rand
13a30 6f 6d 62 6c 6f 62 28 31 36 29 29 3c 62 72 3e 3c  omblob(16))<br><
13a40 2f 62 72 3e 0a 20 20 6c 6f 77 65 72 28 68 65 78  /br>.  lower(hex
13a50 28 72 61 6e 64 6f 6d 62 6c 6f 62 28 31 36 29 29  (randomblob(16))
13a60 29 0a 20 20 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65  ).  </blockquote
13a70 3e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 72 65  >.}..funcdef {re
13a80 70 6c 61 63 65 28 58 2c 59 2c 5a 29 7d 20 7b 7d  place(X,Y,Z)} {}
13a90 20 7b 0a 20 20 5e 54 68 65 20 72 65 70 6c 61 63   {.  ^The replac
13aa0 65 28 58 2c 59 2c 5a 29 20 66 75 6e 63 74 69 6f  e(X,Y,Z) functio
13ab0 6e 20 72 65 74 75 72 6e 73 20 61 20 73 74 72 69  n returns a stri
13ac0 6e 67 20 66 6f 72 6d 65 64 20 62 79 20 73 75 62  ng formed by sub
13ad0 73 74 69 74 75 74 69 6e 67 0a 20 20 73 74 72 69  stituting.  stri
13ae0 6e 67 20 5a 20 66 6f 72 20 65 76 65 72 79 20 6f  ng Z for every o
13af0 63 63 75 72 72 65 6e 63 65 20 6f 66 20 73 74 72  ccurrence of str
13b00 69 6e 67 20 59 20 69 6e 20 73 74 72 69 6e 67 20  ing Y in string 
13b10 58 2e 20 20 5e 54 68 65 20 5b 42 49 4e 41 52 59  X.  ^The [BINARY
13b20 5d 0a 20 20 63 6f 6c 6c 61 74 69 6e 67 20 73 65  ].  collating se
13b30 71 75 65 6e 63 65 20 69 73 20 75 73 65 64 20 66  quence is used f
13b40 6f 72 20 63 6f 6d 70 61 72 69 73 6f 6e 73 2e 20  or comparisons. 
13b50 20 5e 49 66 20 59 20 69 73 20 61 6e 20 65 6d 70   ^If Y is an emp
13b60 74 79 0a 20 20 73 74 72 69 6e 67 20 74 68 65 6e  ty.  string then
13b70 20 72 65 74 75 72 6e 20 58 20 75 6e 63 68 61 6e   return X unchan
13b80 67 65 64 2e 20 20 5e 49 66 20 5a 20 69 73 20 6e  ged.  ^If Z is n
13b90 6f 74 20 69 6e 69 74 69 61 6c 6c 79 0a 20 20 61  ot initially.  a
13ba0 20 73 74 72 69 6e 67 2c 20 69 74 20 69 73 20 63   string, it is c
13bb0 61 73 74 20 74 6f 20 61 20 55 54 46 2d 38 20 73  ast to a UTF-8 s
13bc0 74 72 69 6e 67 20 70 72 69 6f 72 20 74 6f 20 70  tring prior to p
13bd0 72 6f 63 65 73 73 69 6e 67 2e 0a 7d 0a 0a 66 75  rocessing..}..fu
13be0 6e 63 64 65 66 20 7b 72 6f 75 6e 64 28 58 29 20  ncdef {round(X) 
13bf0 72 6f 75 6e 64 28 58 2c 59 29 7d 20 7b 7d 20 7b  round(X,Y)} {} {
13c00 0a 20 20 5e 54 68 65 20 72 6f 75 6e 64 28 58 2c  .  ^The round(X,
13c10 59 29 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75  Y) function retu
13c20 72 6e 73 20 61 20 73 74 72 69 6e 67 20 72 65 70  rns a string rep
13c30 72 65 73 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74  resentation of t
13c40 68 65 20 66 6c 6f 61 74 69 6e 67 2d 70 6f 69 6e  he floating-poin
13c50 74 0a 20 20 76 61 6c 75 65 20 58 20 72 6f 75 6e  t.  value X roun
13c60 64 65 64 20 74 6f 20 59 20 64 69 67 69 74 73 20  ded to Y digits 
13c70 74 6f 20 74 68 65 20 72 69 67 68 74 20 6f 66 20  to the right of 
13c80 74 68 65 20 64 65 63 69 6d 61 6c 20 70 6f 69 6e  the decimal poin
13c90 74 2e 0a 20 20 5e 49 66 20 74 68 65 20 59 20 61  t..  ^If the Y a
13ca0 72 67 75 6d 65 6e 74 20 69 73 20 6f 6d 69 74 74  rgument is omitt
13cb0 65 64 2c 20 74 68 65 20 58 20 76 61 6c 75 65 20  ed, the X value 
13cc0 69 73 20 74 72 75 6e 63 61 74 65 64 20 74 6f 20  is truncated to 
13cd0 61 6e 20 69 6e 74 65 67 65 72 2e 0a 7d 0a 0a 66  an integer..}..f
13ce0 75 6e 63 64 65 66 20 7b 72 74 72 69 6d 28 58 29  uncdef {rtrim(X)
13cf0 20 72 74 72 69 6d 28 58 2c 59 29 7d 20 7b 7d 20   rtrim(X,Y)} {} 
13d00 7b 0a 20 20 5e 54 68 65 20 72 74 72 69 6d 28 58  {.  ^The rtrim(X
13d10 2c 59 29 20 66 75 6e 63 74 69 6f 6e 20 72 65 74  ,Y) function ret
13d20 75 72 6e 73 20 61 20 73 74 72 69 6e 67 20 66 6f  urns a string fo
13d30 72 6d 65 64 20 62 79 20 72 65 6d 6f 76 69 6e 67  rmed by removing
13d40 20 61 6e 79 20 61 6e 64 20 61 6c 6c 0a 20 20 63   any and all.  c
13d50 68 61 72 61 63 74 65 72 73 20 74 68 61 74 20 61  haracters that a
13d60 70 70 65 61 72 20 69 6e 20 59 20 66 72 6f 6d 20  ppear in Y from 
13d70 74 68 65 20 72 69 67 68 74 20 73 69 64 65 20 6f  the right side o
13d80 66 20 58 2e 0a 20 20 5e 49 66 20 74 68 65 20 59  f X..  ^If the Y
13d90 20 61 72 67 75 6d 65 6e 74 20 69 73 20 6f 6d 69   argument is omi
13da0 74 74 65 64 2c 20 72 74 72 69 6d 28 58 29 20 72  tted, rtrim(X) r
13db0 65 6d 6f 76 65 73 20 73 70 61 63 65 73 20 66 72  emoves spaces fr
13dc0 6f 6d 20 74 68 65 20 72 69 67 68 74 0a 20 20 73  om the right.  s
13dd0 69 64 65 20 6f 66 20 58 2e 0a 7d 0a 0a 66 75 6e  ide of X..}..fun
13de0 63 64 65 66 20 7b 73 6f 75 6e 64 65 78 28 58 29  cdef {soundex(X)
13df0 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20 73 6f  } {} {.  ^The so
13e00 75 6e 64 65 78 28 58 29 20 66 75 6e 63 74 69 6f  undex(X) functio
13e10 6e 20 72 65 74 75 72 6e 73 20 61 20 73 74 72 69  n returns a stri
13e20 6e 67 20 74 68 61 74 20 69 73 20 74 68 65 20 73  ng that is the s
13e30 6f 75 6e 64 65 78 20 65 6e 63 6f 64 69 6e 67 20  oundex encoding 
13e40 0a 20 20 6f 66 20 74 68 65 20 73 74 72 69 6e 67  .  of the string
13e50 20 58 2e 0a 20 20 5e 54 68 65 20 73 74 72 69 6e   X..  ^The strin
13e60 67 20 22 3f 30 30 30 22 20 69 73 20 72 65 74 75  g "?000" is retu
13e70 72 6e 65 64 20 69 66 20 74 68 65 20 61 72 67 75  rned if the argu
13e80 6d 65 6e 74 20 69 73 20 4e 55 4c 4c 20 6f 72 20  ment is NULL or 
13e90 63 6f 6e 74 61 69 6e 73 0a 20 20 6e 6f 20 41 53  contains.  no AS
13ea0 43 49 49 20 61 6c 70 68 61 62 65 74 69 63 20 63  CII alphabetic c
13eb0 68 61 72 61 63 74 65 72 73 2e 0a 20 20 5e 28 54  haracters..  ^(T
13ec0 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20  his function is 
13ed0 6f 6d 69 74 74 65 64 20 66 72 6f 6d 20 53 51 4c  omitted from SQL
13ee0 69 74 65 20 62 79 20 64 65 66 61 75 6c 74 2e 0a  ite by default..
13ef0 20 20 49 74 20 69 73 20 6f 6e 6c 79 20 61 76 61    It is only ava
13f00 69 6c 61 62 6c 65 20 69 66 20 74 68 65 20 5b 53  ilable if the [S
13f10 51 4c 49 54 45 5f 53 4f 55 4e 44 45 58 5d 20 63  QLITE_SOUNDEX] c
13f20 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
13f30 6f 6e 0a 20 20 69 73 20 75 73 65 64 20 77 68 65  on.  is used whe
13f40 6e 20 53 51 4c 69 74 65 20 69 73 20 62 75 69 6c  n SQLite is buil
13f50 74 2e 29 5e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20  t.)^.}..funcdef 
13f60 7b 73 71 6c 69 74 65 5f 63 6f 6d 70 69 6c 65 6f  {sqlite_compileo
13f70 70 74 69 6f 6e 5f 67 65 74 28 4e 29 7d 20 7b 7d  ption_get(N)} {}
13f80 20 7b 0a 20 20 5e 54 68 65 20 73 71 6c 69 74 65   {.  ^The sqlite
13f90 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 67  _compileoption_g
13fa0 65 74 28 29 20 53 51 4c 20 66 75 6e 63 74 69 6f  et() SQL functio
13fb0 6e 20 69 73 20 61 20 77 72 61 70 70 65 72 20 61  n is a wrapper a
13fc0 72 6f 75 6e 64 20 74 68 65 0a 20 20 5b 73 71 6c  round the.  [sql
13fd0 69 74 65 33 5f 63 6f 6d 70 69 6c 65 6f 70 74 69  ite3_compileopti
13fe0 6f 6e 5f 67 65 74 28 29 5d 20 43 2f 43 2b 2b 20  on_get()] C/C++ 
13ff0 66 75 6e 63 74 69 6f 6e 2e 0a 20 20 5e 54 68 69  function..  ^Thi
14000 73 20 72 6f 75 74 69 6e 65 20 72 65 74 75 72 6e  s routine return
14010 73 20 74 68 65 20 4e 2d 74 68 20 63 6f 6d 70 69  s the N-th compi
14020 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 75  le-time option u
14030 73 65 64 20 74 6f 20 62 75 69 6c 64 20 53 51 4c  sed to build SQL
14040 69 74 65 0a 20 20 6f 72 20 4e 55 4c 4c 20 69 66  ite.  or NULL if
14050 20 4e 20 69 73 20 6f 75 74 20 6f 66 20 72 61 6e   N is out of ran
14060 67 65 2e 20 20 53 65 65 20 61 6c 73 6f 20 74 68  ge.  See also th
14070 65 20 5b 63 6f 6d 70 69 6c 65 5f 6f 70 74 69 6f  e [compile_optio
14080 6e 73 20 70 72 61 67 6d 61 5d 2e 0a 7d 0a 0a 66  ns pragma]..}..f
14090 75 6e 63 64 65 66 20 7b 73 71 6c 69 74 65 5f 63  uncdef {sqlite_c
140a0 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 75 73 65  ompileoption_use
140b0 64 28 58 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68  d(X)} {} {.  ^Th
140c0 65 20 73 71 6c 69 74 65 5f 63 6f 6d 70 69 6c 65  e sqlite_compile
140d0 6f 70 74 69 6f 6e 5f 75 73 65 64 28 29 20 53 51  option_used() SQ
140e0 4c 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 61 20  L function is a 
140f0 77 72 61 70 70 65 72 20 61 72 6f 75 6e 64 20 74  wrapper around t
14100 68 65 0a 20 20 5b 73 71 6c 69 74 65 33 5f 63 6f  he.  [sqlite3_co
14110 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 75 73 65 64  mpileoption_used
14120 28 29 5d 20 43 2f 43 2b 2b 20 66 75 6e 63 74 69  ()] C/C++ functi
14130 6f 6e 2e 0a 20 20 5e 57 68 65 6e 20 74 68 65 20  on..  ^When the 
14140 61 72 67 75 6d 65 6e 74 20 58 20 74 6f 20 73 71  argument X to sq
14150 6c 69 74 65 5f 63 6f 6d 70 69 6c 65 6f 70 74 69  lite_compileopti
14160 6f 6e 5f 75 73 65 64 28 58 29 20 69 73 20 61 20  on_used(X) is a 
14170 73 74 72 69 6e 67 20 77 68 69 63 68 0a 20 20 69  string which.  i
14180 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 61 20  s the name of a 
14190 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
141a0 69 6f 6e 2c 20 74 68 69 73 20 72 6f 75 74 69 6e  ion, this routin
141b0 65 20 72 65 74 75 72 6e 73 20 74 72 75 65 20 28  e returns true (
141c0 31 29 20 6f 72 0a 20 20 66 61 6c 73 65 20 28 30  1) or.  false (0
141d0 29 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 77  ) depending on w
141e0 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 74 68  hether or not th
141f0 61 74 20 6f 70 74 69 6f 6e 20 77 61 73 20 75 73  at option was us
14200 65 64 20 64 75 72 69 6e 67 20 74 68 65 0a 20 20  ed during the.  
14210 62 75 69 6c 64 2e 0a 7d 0a 0a 66 75 6e 63 64 65  build..}..funcde
14220 66 20 7b 73 71 6c 69 74 65 5f 73 6f 75 72 63 65  f {sqlite_source
14230 5f 69 64 28 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54  _id()} {} {.  ^T
14240 68 65 20 73 71 6c 69 74 65 5f 73 6f 75 72 63 65  he sqlite_source
14250 5f 69 64 28 29 20 66 75 6e 63 74 69 6f 6e 20 72  _id() function r
14260 65 74 75 72 6e 73 20 61 20 73 74 72 69 6e 67 20  eturns a string 
14270 74 68 61 74 20 69 64 65 6e 74 69 66 69 65 73 20  that identifies 
14280 74 68 65 0a 20 20 73 70 65 63 69 66 69 63 20 76  the.  specific v
14290 65 72 73 69 6f 6e 20 6f 66 20 74 68 65 20 73 6f  ersion of the so
142a0 75 72 63 65 20 63 6f 64 65 20 74 68 61 74 20 77  urce code that w
142b0 61 73 20 75 73 65 64 20 74 6f 20 62 75 69 6c 64  as used to build
142c0 20 74 68 65 20 53 51 4c 69 74 65 0a 20 20 6c 69   the SQLite.  li
142d0 62 72 61 72 79 2e 20 20 5e 54 68 65 20 73 74 72  brary.  ^The str
142e0 69 6e 67 20 72 65 74 75 72 6e 65 64 20 62 79 20  ing returned by 
142f0 73 71 6c 69 74 65 5f 73 6f 75 72 63 65 5f 69 64  sqlite_source_id
14300 28 29 20 62 65 67 69 6e 73 20 77 69 74 68 0a 20  () begins with. 
14310 20 74 68 65 20 64 61 74 65 20 61 6e 64 20 74 69   the date and ti
14320 6d 65 20 74 68 61 74 20 74 68 65 20 73 6f 75 72  me that the sour
14330 63 65 20 63 6f 64 65 20 77 61 73 20 63 68 65 63  ce code was chec
14340 6b 65 64 20 69 6e 20 61 6e 64 20 69 73 20 66 6f  ked in and is fo
14350 6c 6c 6f 77 73 20 62 79 0a 20 20 61 6e 20 53 48  llows by.  an SH
14360 41 31 20 68 61 73 68 20 74 68 61 74 20 75 6e 69  A1 hash that uni
14370 71 75 65 6c 79 20 69 64 65 6e 74 69 66 69 65 73  quely identifies
14380 20 74 68 65 20 73 6f 75 72 63 65 20 74 72 65 65   the source tree
14390 2e 20 20 5e 54 68 69 73 20 66 75 6e 63 74 69 6f  .  ^This functio
143a0 6e 20 69 73 0a 20 20 61 6e 20 53 51 4c 20 77 72  n is.  an SQL wr
143b0 61 70 70 65 72 20 61 72 6f 75 6e 64 20 74 68 65  apper around the
143c0 20 5b 73 71 6c 69 74 65 33 5f 73 6f 75 72 63 65   [sqlite3_source
143d0 69 64 28 29 5d 20 43 20 69 6e 74 65 72 66 61 63  id()] C interfac
143e0 65 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 73  e..}..funcdef {s
143f0 71 6c 69 74 65 5f 76 65 72 73 69 6f 6e 28 29 7d  qlite_version()}
14400 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20 73 71 6c   {} {.  ^The sql
14410 69 74 65 5f 76 65 72 73 69 6f 6e 28 29 20 66 75  ite_version() fu
14420 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 74  nction returns t
14430 68 65 20 76 65 72 73 69 6f 6e 20 73 74 72 69 6e  he version strin
14440 67 20 66 6f 72 20 74 68 65 20 53 51 4c 69 74 65  g for the SQLite
14450 0a 20 20 6c 69 62 72 61 72 79 20 74 68 61 74 20  .  library that 
14460 69 73 20 72 75 6e 6e 69 6e 67 2e 20 20 5e 54 68  is running.  ^Th
14470 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 61  is function is a
14480 6e 20 53 51 4c 0a 20 20 77 72 61 70 70 65 72 20  n SQL.  wrapper 
14490 61 72 6f 75 6e 64 20 74 68 65 20 5b 73 71 6c 69  around the [sqli
144a0 74 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e 28 29  te3_libversion()
144b0 5d 20 43 2d 69 6e 74 65 72 66 61 63 65 2e 0a 7d  ] C-interface..}
144c0 0a 0a 66 75 6e 63 64 65 66 20 7b 73 75 62 73 74  ..funcdef {subst
144d0 72 28 58 2c 59 2c 5a 29 20 73 75 62 73 74 72 28  r(X,Y,Z) substr(
144e0 58 2c 59 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68  X,Y)} {} {.  ^Th
144f0 65 20 73 75 62 73 74 72 28 58 2c 59 2c 5a 29 20  e substr(X,Y,Z) 
14500 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73  function returns
14510 20 61 20 73 75 62 73 74 72 69 6e 67 20 6f 66 20   a substring of 
14520 69 6e 70 75 74 20 73 74 72 69 6e 67 20 58 20 74  input string X t
14530 68 61 74 20 62 65 67 69 6e 73 0a 20 20 77 69 74  hat begins.  wit
14540 68 20 74 68 65 20 59 2d 74 68 20 63 68 61 72 61  h the Y-th chara
14550 63 74 65 72 20 61 6e 64 20 77 68 69 63 68 20 69  cter and which i
14560 73 20 5a 20 63 68 61 72 61 63 74 65 72 73 20 6c  s Z characters l
14570 6f 6e 67 2e 0a 20 20 5e 49 66 20 5a 20 69 73 20  ong..  ^If Z is 
14580 6f 6d 69 74 74 65 64 20 74 68 65 6e 20 73 75 62  omitted then sub
14590 73 74 72 28 58 2c 59 29 20 72 65 74 75 72 6e 73  str(X,Y) returns
145a0 20 61 6c 6c 20 63 68 61 72 61 63 74 65 72 73 20   all characters 
145b0 74 68 72 6f 75 67 68 20 74 68 65 20 65 6e 64 0a  through the end.
145c0 20 20 6f 66 20 74 68 65 20 73 74 72 69 6e 67 20    of the string 
145d0 58 20 62 65 67 69 6e 6e 69 6e 67 20 77 69 74 68  X beginning with
145e0 20 74 68 65 20 59 2d 74 68 2e 0a 20 20 5e 54 68   the Y-th..  ^Th
145f0 65 20 6c 65 66 74 2d 6d 6f 73 74 20 63 68 61 72  e left-most char
14600 61 63 74 65 72 20 6f 66 20 58 20 69 73 20 6e 75  acter of X is nu
14610 6d 62 65 72 20 31 2e 20 20 5e 49 66 20 59 20 69  mber 1.  ^If Y i
14620 73 20 6e 65 67 61 74 69 76 65 0a 20 20 74 68 65  s negative.  the
14630 6e 20 74 68 65 20 66 69 72 73 74 20 63 68 61 72  n the first char
14640 61 63 74 65 72 20 6f 66 20 74 68 65 20 73 75 62  acter of the sub
14650 73 74 72 69 6e 67 20 69 73 20 66 6f 75 6e 64 20  string is found 
14660 62 79 20 63 6f 75 6e 74 69 6e 67 20 66 72 6f 6d  by counting from
14670 20 74 68 65 0a 20 20 72 69 67 68 74 20 72 61 74   the.  right rat
14680 68 65 72 20 74 68 61 6e 20 74 68 65 20 6c 65 66  her than the lef
14690 74 2e 20 20 5e 49 66 20 5a 20 69 73 20 6e 65 67  t.  ^If Z is neg
146a0 61 74 69 76 65 20 74 68 65 6e 0a 20 20 74 68 65  ative then.  the
146b0 20 61 62 73 28 5a 29 20 63 68 61 72 61 63 74 65   abs(Z) characte
146c0 72 73 20 70 72 65 63 65 64 69 6e 67 20 74 68 65  rs preceding the
146d0 20 59 2d 74 68 20 63 68 61 72 61 63 74 65 72 20   Y-th character 
146e0 61 72 65 20 72 65 74 75 72 6e 65 64 2e 0a 20 20  are returned..  
146f0 5e 49 66 20 58 20 69 73 20 61 20 73 74 72 69 6e  ^If X is a strin
14700 67 20 74 68 65 6e 20 63 68 61 72 61 63 74 65 72  g then character
14710 73 20 69 6e 64 69 63 65 73 20 72 65 66 65 72 20  s indices refer 
14720 74 6f 20 61 63 74 75 61 6c 20 55 54 46 2d 38 20  to actual UTF-8 
14730 0a 20 20 63 68 61 72 61 63 74 65 72 73 2e 20 20  .  characters.  
14740 5e 49 66 20 58 20 69 73 20 61 20 42 4c 4f 42 20  ^If X is a BLOB 
14750 74 68 65 6e 20 74 68 65 20 69 6e 64 69 63 65 73  then the indices
14760 20 72 65 66 65 72 20 74 6f 20 62 79 74 65 73 2e   refer to bytes.
14770 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 74 6f 74  .}..funcdef {tot
14780 61 6c 5f 63 68 61 6e 67 65 73 28 29 7d 20 7b 7d  al_changes()} {}
14790 20 7b 0a 20 20 5e 54 68 65 20 74 6f 74 61 6c 5f   {.  ^The total_
147a0 63 68 61 6e 67 65 73 28 29 20 66 75 6e 63 74 69  changes() functi
147b0 6f 6e 20 72 65 74 75 72 6e 73 20 74 68 65 20 6e  on returns the n
147c0 75 6d 62 65 72 20 6f 66 20 72 6f 77 20 63 68 61  umber of row cha
147d0 6e 67 65 73 0a 20 20 63 61 75 73 65 64 20 62 79  nges.  caused by
147e0 20 49 4e 53 45 52 54 2c 20 55 50 44 41 54 45 20   INSERT, UPDATE 
147f0 6f 72 20 44 45 4c 45 54 45 0a 20 20 73 74 61 74  or DELETE.  stat
14800 65 6d 65 6e 74 73 20 73 69 6e 63 65 20 74 68 65  ements since the
14810 20 63 75 72 72 65 6e 74 20 64 61 74 61 62 61 73   current databas
14820 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 77 61 73  e connection was
14830 20 6f 70 65 6e 65 64 2e 0a 20 20 5e 54 68 69 73   opened..  ^This
14840 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 61 20 77   function is a w
14850 72 61 70 70 65 72 20 61 72 6f 75 6e 64 20 74 68  rapper around th
14860 65 20 5b 73 71 6c 69 74 65 33 5f 74 6f 74 61 6c  e [sqlite3_total
14870 5f 63 68 61 6e 67 65 73 28 29 5d 0a 20 20 43 2f  _changes()].  C/
14880 43 2b 2b 20 69 6e 74 65 72 66 61 63 65 2e 0a 7d  C++ interface..}
14890 0a 0a 66 75 6e 63 64 65 66 20 7b 74 72 69 6d 28  ..funcdef {trim(
148a0 58 29 20 74 72 69 6d 28 58 2c 59 29 7d 20 7b 7d  X) trim(X,Y)} {}
148b0 20 7b 0a 20 20 5e 54 68 65 20 74 72 69 6d 28 58   {.  ^The trim(X
148c0 2c 59 29 20 66 75 6e 63 74 69 6f 6e 20 72 65 74  ,Y) function ret
148d0 75 72 6e 73 20 61 20 73 74 72 69 6e 67 20 66 6f  urns a string fo
148e0 72 6d 65 64 20 62 79 20 72 65 6d 6f 76 69 6e 67  rmed by removing
148f0 20 61 6e 79 20 61 6e 64 20 61 6c 6c 0a 20 20 63   any and all.  c
14900 68 61 72 61 63 74 65 72 73 20 74 68 61 74 20 61  haracters that a
14910 70 70 65 61 72 20 69 6e 20 59 20 66 72 6f 6d 20  ppear in Y from 
14920 62 6f 74 68 20 65 6e 64 73 20 6f 66 20 58 2e 0a  both ends of X..
14930 20 20 5e 49 66 20 74 68 65 20 59 20 61 72 67 75    ^If the Y argu
14940 6d 65 6e 74 20 69 73 20 6f 6d 69 74 74 65 64 2c  ment is omitted,
14950 20 74 72 69 6d 28 58 29 20 72 65 6d 6f 76 65 73   trim(X) removes
14960 20 73 70 61 63 65 73 20 66 72 6f 6d 20 62 6f 74   spaces from bot
14970 68 20 65 6e 64 73 20 6f 66 20 58 2e 0a 7d 0a 0a  h ends of X..}..
14980 66 75 6e 63 64 65 66 20 7b 74 79 70 65 6f 66 28  funcdef {typeof(
14990 58 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20  X)} {} {.  ^The 
149a0 74 79 70 65 6f 66 28 58 29 20 66 75 6e 63 74 69  typeof(X) functi
149b0 6f 6e 20 72 65 74 75 72 6e 73 20 61 20 73 74 72  on returns a str
149c0 69 6e 67 20 74 68 61 74 20 69 6e 64 69 63 61 74  ing that indicat
149d0 65 73 20 74 68 65 20 5b 64 61 74 61 74 79 70 65  es the [datatype
149e0 5d 20 6f 66 0a 20 20 74 68 65 20 65 78 70 72 65  ] of.  the expre
149f0 73 73 69 6f 6e 20 58 3a 20 22 6e 75 6c 6c 22 2c  ssion X: "null",
14a00 20 22 69 6e 74 65 67 65 72 22 2c 20 22 72 65 61   "integer", "rea
14a10 6c 22 2c 20 22 74 65 78 74 22 2c 20 6f 72 20 22  l", "text", or "
14a20 62 6c 6f 62 22 2e 0a 7d 0a 0a 66 75 6e 63 64 65  blob"..}..funcde
14a30 66 20 7b 75 70 70 65 72 28 58 29 7d 20 7b 7d 20  f {upper(X)} {} 
14a40 7b 0a 20 20 5e 54 68 65 20 75 70 70 65 72 28 58  {.  ^The upper(X
14a50 29 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72  ) function retur
14a60 6e 73 20 61 20 63 6f 70 79 20 6f 66 20 69 6e 70  ns a copy of inp
14a70 75 74 20 73 74 72 69 6e 67 20 58 20 69 6e 20 77  ut string X in w
14a80 68 69 63 68 20 61 6c 6c 20 0a 20 20 6c 6f 77 65  hich all .  lowe
14a90 72 2d 63 61 73 65 20 41 53 43 49 49 20 63 68 61  r-case ASCII cha
14aa0 72 61 63 74 65 72 73 20 61 72 65 20 63 6f 6e 76  racters are conv
14ab0 65 72 74 65 64 20 74 6f 20 74 68 65 69 72 20 75  erted to their u
14ac0 70 70 65 72 2d 63 61 73 65 20 65 71 75 69 76 61  pper-case equiva
14ad0 6c 65 6e 74 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66  lent..}..funcdef
14ae0 20 7b 7a 65 72 6f 62 6c 6f 62 28 4e 29 7d 20 7b   {zeroblob(N)} {
14af0 7d 20 7b 0a 20 20 5e 54 68 65 20 7a 65 72 6f 62  } {.  ^The zerob
14b00 6c 6f 62 28 4e 29 20 66 75 6e 63 74 69 6f 6e 20  lob(N) function 
14b10 72 65 74 75 72 6e 73 20 61 20 42 4c 4f 42 20 63  returns a BLOB c
14b20 6f 6e 73 69 73 74 69 6e 67 20 6f 66 20 4e 20 62  onsisting of N b
14b30 79 74 65 73 20 6f 66 20 30 78 30 30 2e 0a 20 20  ytes of 0x00..  
14b40 53 51 4c 69 74 65 20 6d 61 6e 61 67 65 73 20 74  SQLite manages t
14b50 68 65 73 65 20 7a 65 72 6f 62 6c 6f 62 73 20 76  hese zeroblobs v
14b60 65 72 79 20 65 66 66 69 63 69 65 6e 74 6c 79 2e  ery efficiently.
14b70 20 20 5a 65 72 6f 62 6c 6f 62 73 20 63 61 6e 20    Zeroblobs can 
14b80 62 65 20 75 73 65 64 20 74 6f 0a 20 20 72 65 73  be used to.  res
14b90 65 72 76 65 20 73 70 61 63 65 20 66 6f 72 20 61  erve space for a
14ba0 20 42 4c 4f 42 20 74 68 61 74 20 69 73 20 6c 61   BLOB that is la
14bb0 74 65 72 20 77 72 69 74 74 65 6e 20 75 73 69 6e  ter written usin
14bc0 67 20 0a 20 20 5b 73 71 6c 69 74 65 33 5f 62 6c  g .  [sqlite3_bl
14bd0 6f 62 5f 6f 70 65 6e 28 29 20 7c 20 69 6e 63 72  ob_open() | incr
14be0 65 6d 65 6e 74 61 6c 20 42 4c 4f 42 20 49 2f 4f  emental BLOB I/O
14bf0 5d 2e 0a 20 20 5e 54 68 69 73 20 53 51 4c 20 66  ]..  ^This SQL f
14c00 75 6e 63 74 69 6f 6e 20 69 73 20 69 6d 70 6c 65  unction is imple
14c10 6d 65 6e 74 65 64 20 75 73 69 6e 67 20 74 68 65  mented using the
14c20 20 5b 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74   [sqlite3_result
14c30 5f 7a 65 72 6f 62 6c 6f 62 28 29 5d 0a 20 20 72  _zeroblob()].  r
14c40 6f 75 74 69 6e 65 20 66 72 6f 6d 20 74 68 65 20  outine from the 
14c50 43 2f 43 2b 2b 20 69 6e 74 65 72 66 61 63 65 2e  C/C++ interface.
14c60 0a 7d 0a 3c 2f 74 63 6c 3e 0a 3c 2f 74 61 62 6c  .}.</tcl>.</tabl
14c70 65 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23  e>..<tcl>.######
14c80 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14c90 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14ca0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14cb0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14cc0 23 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e  ########.Section
14cd0 20 7b 44 61 74 65 20 41 6e 64 20 54 69 6d 65 20   {Date And Time 
14ce0 46 75 6e 63 74 69 6f 6e 73 7d 20 64 61 74 65 66  Functions} datef
14cf0 75 6e 63 20 7b 2a 64 61 74 65 66 75 6e 63 7d 0a  unc {*datefunc}.
14d00 68 64 5f 6b 65 79 77 6f 72 64 73 20 7b 64 61 74  hd_keywords {dat
14d10 65 28 29 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e  e() SQL function
14d20 7d 20 7b 74 69 6d 65 28 29 20 53 51 4c 20 66 75  } {time() SQL fu
14d30 6e 63 74 69 6f 6e 7d 0a 68 64 5f 6b 65 79 77 6f  nction}.hd_keywo
14d40 72 64 73 20 7b 64 61 74 65 74 69 6d 65 28 29 20  rds {datetime() 
14d50 53 51 4c 20 66 75 6e 63 74 69 6f 6e 7d 20 7b 6a  SQL function} {j
14d60 75 6c 69 61 6e 64 61 79 28 29 20 53 51 4c 20 66  ulianday() SQL f
14d70 75 6e 63 74 69 6f 6e 7d 0a 68 64 5f 6b 65 79 77  unction}.hd_keyw
14d80 6f 72 64 73 20 7b 73 74 72 66 74 69 6d 65 28 29  ords {strftime()
14d90 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 7d 0a 3c   SQL function}.<
14da0 2f 74 63 6c 3e 0a 0a 3c 70 3e 0a 53 51 4c 69 74  /tcl>..<p>.SQLit
14db0 65 20 73 75 70 70 6f 72 74 73 20 66 69 76 65 20  e supports five 
14dc0 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20 66 75  date and time fu
14dd0 6e 63 74 69 6f 6e 73 20 61 73 20 66 6f 6c 6c 6f  nctions as follo
14de0 77 73 3a 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 3c 6f  ws:.</p>..<p>.<o
14df0 6c 3e 0a 3c 6c 69 3e 20 5e 28 3c 62 3e 64 61 74  l>.<li> ^(<b>dat
14e00 65 28 3c 2f 62 3e 3c 69 3e 74 69 6d 65 73 74 72  e(</b><i>timestr
14e10 69 6e 67 2c 20 6d 6f 64 69 66 69 65 72 2c 20 6d  ing, modifier, m
14e20 6f 64 69 66 69 65 72 2c 20 2e 2e 2e 3c 2f 69 3e  odifier, ...</i>
14e30 3c 62 3e 29 3c 2f 62 3e 29 5e 20 3c 2f 6c 69 3e  <b>)</b>)^ </li>
14e40 0a 3c 6c 69 3e 20 5e 28 3c 62 3e 74 69 6d 65 28  .<li> ^(<b>time(
14e50 3c 2f 62 3e 3c 69 3e 74 69 6d 65 73 74 72 69 6e  </b><i>timestrin
14e60 67 2c 20 6d 6f 64 69 66 69 65 72 2c 20 6d 6f 64  g, modifier, mod
14e70 69 66 69 65 72 2c 20 2e 2e 2e 3c 2f 69 3e 3c 62  ifier, ...</i><b
14e80 3e 29 3c 2f 62 3e 29 5e 20 3c 2f 6c 69 3e 0a 3c  >)</b>)^ </li>.<
14e90 6c 69 3e 20 5e 28 3c 62 3e 64 61 74 65 74 69 6d  li> ^(<b>datetim
14ea0 65 28 3c 2f 62 3e 3c 69 3e 74 69 6d 65 73 74 72  e(</b><i>timestr
14eb0 69 6e 67 2c 20 6d 6f 64 69 66 69 65 72 2c 20 6d  ing, modifier, m
14ec0 6f 64 69 66 69 65 72 2c 20 2e 2e 2e 3c 2f 69 3e  odifier, ...</i>
14ed0 3c 62 3e 29 3c 2f 62 3e 29 5e 20 3c 2f 6c 69 3e  <b>)</b>)^ </li>
14ee0 0a 3c 6c 69 3e 20 5e 28 3c 62 3e 6a 75 6c 69 61  .<li> ^(<b>julia
14ef0 6e 64 61 79 28 3c 2f 62 3e 3c 69 3e 74 69 6d 65  nday(</b><i>time
14f00 73 74 72 69 6e 67 2c 20 6d 6f 64 69 66 69 65 72  string, modifier
14f10 2c 20 6d 6f 64 69 66 69 65 72 2c 20 2e 2e 2e 3c  , modifier, ...<
14f20 2f 69 3e 3c 62 3e 29 3c 2f 62 3e 29 5e 20 3c 2f  /i><b>)</b>)^ </
14f30 6c 69 3e 0a 3c 6c 69 3e 20 5e 28 3c 62 3e 73 74  li>.<li> ^(<b>st
14f40 72 66 74 69 6d 65 28 3c 2f 62 3e 3c 69 3e 66 6f  rftime(</b><i>fo
14f50 72 6d 61 74 2c 20 74 69 6d 65 73 74 72 69 6e 67  rmat, timestring
14f60 2c 20 6d 6f 64 69 66 69 65 72 2c 20 6d 6f 64 69  , modifier, modi
14f70 66 69 65 72 2c 20 2e 2e 2e 3c 2f 69 3e 3c 62 3e  fier, ...</i><b>
14f80 29 3c 2f 62 3e 29 5e 20 3c 2f 6c 69 3e 0a 3c 2f  )</b>)^ </li>.</
14f90 6f 6c 3e 0a 0a 3c 70 3e 0a 5e 41 6c 6c 20 66 69  ol>..<p>.^All fi
14fa0 76 65 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65  ve date and time
14fb0 20 66 75 6e 63 74 69 6f 6e 73 20 74 61 6b 65 20   functions take 
14fc0 61 20 74 69 6d 65 20 73 74 72 69 6e 67 20 61 73  a time string as
14fd0 20 61 6e 20 61 72 67 75 6d 65 6e 74 2e 20 0a 5e   an argument. .^
14fe0 54 68 65 20 74 69 6d 65 20 73 74 72 69 6e 67 20  The time string 
14ff0 69 73 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 7a  is followed by z
15000 65 72 6f 20 6f 72 20 6d 6f 72 65 20 6d 6f 64 69  ero or more modi
15010 66 69 65 72 73 2e 20 0a 5e 54 68 65 20 73 74 72  fiers. .^The str
15020 66 74 69 6d 65 28 29 20 66 75 6e 63 74 69 6f 6e  ftime() function
15030 20 61 6c 73 6f 20 74 61 6b 65 73 20 61 20 66 6f   also takes a fo
15040 72 6d 61 74 20 73 74 72 69 6e 67 20 61 73 20 69  rmat string as i
15050 74 73 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e  ts first argumen
15060 74 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 54 68 65  t..</p>..<p>.The
15070 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20 66   date and time f
15080 75 6e 63 74 69 6f 6e 73 20 75 73 65 20 61 20 73  unctions use a s
15090 75 62 73 65 74 20 6f 66 0a 5b 68 74 74 70 3a 2f  ubset of.[http:/
150a0 2f 65 6e 2e 77 69 6b 69 70 65 64 69 61 2e 6f 72  /en.wikipedia.or
150b0 67 2f 77 69 6b 69 2f 49 53 4f 5f 38 36 30 31 20  g/wiki/ISO_8601 
150c0 7c 20 49 53 30 2d 38 36 30 31 5d 20 64 61 74 65  | IS0-8601] date
150d0 20 61 6e 64 20 74 69 6d 65 0a 66 6f 72 6d 61 74   and time.format
150e0 73 2e 0a 5e 54 68 65 20 64 61 74 65 28 29 20 66  s..^The date() f
150f0 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20  unction returns 
15100 74 68 65 20 64 61 74 65 20 69 6e 20 74 68 69 73  the date in this
15110 20 66 6f 72 6d 61 74 3a 20 59 59 59 59 2d 4d 4d   format: YYYY-MM
15120 2d 44 44 2e 20 0a 5e 54 68 65 20 74 69 6d 65 28  -DD. .^The time(
15130 29 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72  ) function retur
15140 6e 73 20 74 68 65 20 74 69 6d 65 20 61 73 20 48  ns the time as H
15150 48 3a 4d 4d 3a 53 53 2e 20 0a 5e 54 68 65 20 64  H:MM:SS. .^The d
15160 61 74 65 74 69 6d 65 28 29 20 66 75 6e 63 74 69  atetime() functi
15170 6f 6e 20 72 65 74 75 72 6e 73 20 22 59 59 59 59  on returns "YYYY
15180 2d 4d 4d 2d 44 44 20 48 48 3a 4d 4d 3a 53 53 22  -MM-DD HH:MM:SS"
15190 2e 20 0a 5e 28 54 68 65 20 6a 75 6c 69 61 6e 64  . .^(The juliand
151a0 61 79 28 29 20 66 75 6e 63 74 69 6f 6e 20 72 65  ay() function re
151b0 74 75 72 6e 73 20 74 68 65 20 0a 5b 68 74 74 70  turns the .[http
151c0 3a 2f 2f 65 6e 2e 77 69 6b 69 70 65 64 69 61 2e  ://en.wikipedia.
151d0 6f 72 67 2f 77 69 6b 69 2f 4a 75 6c 69 61 6e 5f  org/wiki/Julian_
151e0 64 61 79 20 7c 20 4a 75 6c 69 61 6e 20 64 61 79  day | Julian day
151f0 5d 20 2d 20 74 68 65 0a 6e 75 6d 62 65 72 20 6f  ] - the.number o
15200 66 20 64 61 79 73 20 73 69 6e 63 65 20 6e 6f 6f  f days since noo
15210 6e 20 69 6e 20 47 72 65 65 6e 77 69 63 68 20 6f  n in Greenwich o
15220 6e 20 4e 6f 76 65 6d 62 65 72 20 32 34 2c 20 34  n November 24, 4
15230 37 31 34 20 42 2e 43 2e 20 0a 28 5b 68 74 74 70  714 B.C. .([http
15240 3a 2f 2f 65 6e 2e 77 69 6b 69 70 65 64 69 61 2e  ://en.wikipedia.
15250 6f 72 67 2f 77 69 6b 69 2f 50 72 6f 6c 65 70 74  org/wiki/Prolept
15260 69 63 5f 47 72 65 67 6f 72 69 61 6e 5f 63 61 6c  ic_Gregorian_cal
15270 65 6e 64 61 72 20 7c 20 50 72 6f 6c 65 70 74 69  endar | Prolepti
15280 63 20 47 72 65 67 6f 72 69 61 6e 20 63 61 6c 65  c Gregorian cale
15290 6e 64 61 72 5d 29 2e 29 5e 0a 5e 54 68 65 20 73  ndar]).)^.^The s
152a0 74 72 66 74 69 6d 65 28 29 20 72 6f 75 74 69 6e  trftime() routin
152b0 65 20 72 65 74 75 72 6e 73 20 74 68 65 20 64 61  e returns the da
152c0 74 65 20 66 6f 72 6d 61 74 74 65 64 20 61 63 63  te formatted acc
152d0 6f 72 64 69 6e 67 20 74 6f 20 0a 74 68 65 20 66  ording to .the f
152e0 6f 72 6d 61 74 20 73 74 72 69 6e 67 20 73 70 65  ormat string spe
152f0 63 69 66 69 65 64 20 61 73 20 74 68 65 20 66 69  cified as the fi
15300 72 73 74 20 61 72 67 75 6d 65 6e 74 2e 0a 5e 54  rst argument..^T
15310 68 65 20 66 6f 72 6d 61 74 20 73 74 72 69 6e 67  he format string
15320 20 73 75 70 70 6f 72 74 73 20 74 68 65 20 6d 6f   supports the mo
15330 73 74 20 63 6f 6d 6d 6f 6e 20 73 75 62 73 74 69  st common substi
15340 74 75 74 69 6f 6e 73 20 66 6f 75 6e 64 20 69 6e  tutions found in
15350 20 74 68 65 20 0a 5b 68 74 74 70 3a 2f 2f 6f 70   the .[http://op
15360 65 6e 67 72 6f 75 70 2e 6f 72 67 2f 6f 6e 6c 69  engroup.org/onli
15370 6e 65 70 75 62 73 2f 30 30 37 39 30 38 37 39 39  nepubs/007908799
15380 2f 78 73 68 2f 73 74 72 66 74 69 6d 65 2e 68 74  /xsh/strftime.ht
15390 6d 6c 20 7c 20 73 74 72 66 74 69 6d 65 28 29 20  ml | strftime() 
153a0 66 75 6e 63 74 69 6f 6e 5d 0a 66 72 6f 6d 20 74  function].from t
153b0 68 65 20 73 74 61 6e 64 61 72 64 20 43 20 6c 69  he standard C li
153c0 62 72 61 72 79 20 70 6c 75 73 20 74 77 6f 20 6e  brary plus two n
153d0 65 77 20 73 75 62 73 74 69 74 75 74 69 6f 6e 73  ew substitutions
153e0 2c 20 25 66 20 61 6e 64 20 25 4a 2e 0a 5e 28 54  , %f and %J..^(T
153f0 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 69 73 20  he following is 
15400 61 20 63 6f 6d 70 6c 65 74 65 20 6c 69 73 74 20  a complete list 
15410 6f 66 20 76 61 6c 69 64 20 73 74 72 66 74 69 6d  of valid strftim
15420 65 28 29 20 73 75 62 73 74 69 74 75 74 69 6f 6e  e() substitution
15430 73 3a 0a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71  s:.</p>..<blockq
15440 75 6f 74 65 3e 0a 3c 74 61 62 6c 65 20 62 6f 72  uote>.<table bor
15450 64 65 72 3d 22 30 22 20 63 65 6c 6c 70 61 64 64  der="0" cellpadd
15460 69 6e 67 3d 22 30 22 20 63 65 6c 6c 73 70 61 63  ing="0" cellspac
15470 69 6e 67 3d 22 30 22 3e 0a 3c 74 72 3e 3c 74 64  ing="0">.<tr><td
15480 3e 3c 74 64 20 77 69 64 74 68 3d 22 31 30 22 3e  ><td width="10">
15490 3c 74 64 3e 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 3c  <td></tr>..<tr><
154a0 74 64 3e 20 25 64 20 3c 74 64 3e 3c 74 64 3e 20  td> %d <td><td> 
154b0 64 61 79 20 6f 66 20 6d 6f 6e 74 68 3a 20 30 30  day of month: 00
154c0 0a 3c 74 72 3e 3c 74 64 3e 20 25 66 20 3c 74 64  .<tr><td> %f <td
154d0 3e 3c 74 64 3e 20 66 72 61 63 74 69 6f 6e 61 6c  ><td> fractional
154e0 20 73 65 63 6f 6e 64 73 3a 20 53 53 2e 53 53 53   seconds: SS.SSS
154f0 0a 3c 74 72 3e 3c 74 64 3e 20 25 48 20 3c 74 64  .<tr><td> %H <td
15500 3e 3c 74 64 3e 20 68 6f 75 72 3a 20 30 30 2d 32  ><td> hour: 00-2
15510 34 20 0a 3c 74 72 3e 3c 74 64 3e 20 25 6a 20 3c  4 .<tr><td> %j <
15520 74 64 3e 3c 74 64 3e 20 64 61 79 20 6f 66 20 79  td><td> day of y
15530 65 61 72 3a 20 30 30 31 2d 33 36 36 0a 3c 74 72  ear: 001-366.<tr
15540 3e 3c 74 64 3e 20 25 4a 20 3c 74 64 3e 3c 74 64  ><td> %J <td><td
15550 3e 20 4a 75 6c 69 61 6e 20 64 61 79 20 6e 75 6d  > Julian day num
15560 62 65 72 0a 3c 74 72 3e 3c 74 64 3e 20 25 6d 20  ber.<tr><td> %m 
15570 3c 74 64 3e 3c 74 64 3e 20 6d 6f 6e 74 68 3a 20  <td><td> month: 
15580 30 31 2d 31 32 0a 3c 74 72 3e 3c 74 64 3e 20 25  01-12.<tr><td> %
15590 4d 20 3c 74 64 3e 3c 74 64 3e 20 6d 69 6e 75 74  M <td><td> minut
155a0 65 3a 20 30 30 2d 35 39 0a 3c 74 72 3e 3c 74 64  e: 00-59.<tr><td
155b0 3e 20 25 73 20 3c 74 64 3e 3c 74 64 3e 20 73 65  > %s <td><td> se
155c0 63 6f 6e 64 73 20 73 69 6e 63 65 20 31 39 37 30  conds since 1970
155d0 2d 30 31 2d 30 31 0a 3c 74 72 3e 3c 74 64 3e 20  -01-01.<tr><td> 
155e0 25 53 20 3c 74 64 3e 3c 74 64 3e 20 73 65 63 6f  %S <td><td> seco
155f0 6e 64 73 3a 20 30 30 2d 35 39 0a 3c 74 72 3e 3c  nds: 00-59.<tr><
15600 74 64 3e 20 25 77 20 3c 74 64 3e 3c 74 64 3e 20  td> %w <td><td> 
15610 64 61 79 20 6f 66 20 77 65 65 6b 20 30 2d 36 20  day of week 0-6 
15620 77 69 74 68 20 53 75 6e 64 61 79 3d 3d 30 0a 3c  with Sunday==0.<
15630 74 72 3e 3c 74 64 3e 20 25 57 20 3c 74 64 3e 3c  tr><td> %W <td><
15640 74 64 3e 20 77 65 65 6b 20 6f 66 20 79 65 61 72  td> week of year
15650 3a 20 30 30 2d 35 33 0a 3c 74 72 3e 3c 74 64 3e  : 00-53.<tr><td>
15660 20 25 59 20 3c 74 64 3e 3c 74 64 3e 20 79 65 61   %Y <td><td> yea
15670 72 3a 20 30 30 30 30 2d 39 39 39 39 0a 3c 74 72  r: 0000-9999.<tr
15680 3e 3c 74 64 3e 20 25 25 20 3c 74 64 3e 3c 74 64  ><td> %% <td><td
15690 3e 20 25 0a 3c 2f 74 61 62 6c 65 3e 0a 3c 2f 62  > %.</table>.</b
156a0 6c 6f 63 6b 71 75 6f 74 65 3e 29 5e 0a 0a 3c 70  lockquote>)^..<p
156b0 3e 0a 5e 28 4e 6f 74 69 63 65 20 74 68 61 74 20  >.^(Notice that 
156c0 61 6c 6c 20 6f 74 68 65 72 20 64 61 74 65 20 61  all other date a
156d0 6e 64 20 74 69 6d 65 20 66 75 6e 63 74 69 6f 6e  nd time function
156e0 73 20 63 61 6e 20 62 65 20 65 78 70 72 65 73 73  s can be express
156f0 65 64 0a 69 6e 20 74 65 72 6d 73 20 6f 66 20 73  ed.in terms of s
15700 74 72 66 74 69 6d 65 28 29 3a 0a 3c 2f 70 3e 0a  trftime():.</p>.
15710 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 3c 74  .<blockquote>.<t
15720 61 62 6c 65 20 62 6f 72 64 65 72 3d 22 30 22 20  able border="0" 
15730 63 65 6c 6c 70 61 64 64 69 6e 67 3d 22 30 22 20  cellpadding="0" 
15740 63 65 6c 6c 73 70 61 63 69 6e 67 3d 22 30 22 3e  cellspacing="0">
15750 0a 3c 74 72 3e 3c 74 64 3e 3c 62 3e 46 75 6e 63  .<tr><td><b>Func
15760 74 69 6f 6e 3c 2f 62 3e 3c 74 64 20 77 69 64 74  tion</b><td widt
15770 68 3d 22 33 30 22 3e 3c 74 64 3e 3c 62 3e 45 71  h="30"><td><b>Eq
15780 75 69 76 61 6c 65 6e 74 20 73 74 72 66 74 69 6d  uivalent strftim
15790 65 28 29 3c 2f 62 3e 0a 3c 74 72 3e 3c 74 64 3e  e()</b>.<tr><td>
157a0 20 20 20 64 61 74 65 28 2e 2e 2e 29 20 20 20 20     date(...)    
157b0 20 20 3c 74 64 3e 3c 74 64 3e 20 20 73 74 72 66    <td><td>  strf
157c0 74 69 6d 65 28 27 25 59 2d 25 6d 2d 25 64 27 2c  time('%Y-%m-%d',
157d0 20 2e 2e 2e 29 0a 3c 74 72 3e 3c 74 64 3e 20 20   ...).<tr><td>  
157e0 20 74 69 6d 65 28 2e 2e 2e 29 20 20 20 20 20 20   time(...)      
157f0 3c 74 64 3e 3c 74 64 3e 20 20 73 74 72 66 74 69  <td><td>  strfti
15800 6d 65 28 27 25 48 3a 25 4d 3a 25 53 27 2c 20 2e  me('%H:%M:%S', .
15810 2e 2e 29 0a 3c 74 72 3e 3c 74 64 3e 20 20 20 64  ..).<tr><td>   d
15820 61 74 65 74 69 6d 65 28 2e 2e 2e 29 20 20 3c 74  atetime(...)  <t
15830 64 3e 3c 74 64 3e 20 20 73 74 72 66 74 69 6d 65  d><td>  strftime
15840 28 27 25 59 2d 25 6d 2d 25 64 20 25 48 3a 25 4d  ('%Y-%m-%d %H:%M
15850 3a 25 53 27 2c 20 2e 2e 2e 29 0a 3c 74 72 3e 3c  :%S', ...).<tr><
15860 74 64 3e 20 20 20 6a 75 6c 69 61 6e 64 61 79 28  td>   julianday(
15870 2e 2e 2e 29 20 3c 74 64 3e 3c 74 64 3e 20 20 73  ...) <td><td>  s
15880 74 72 66 74 69 6d 65 28 27 25 4a 27 2c 20 2e 2e  trftime('%J', ..
15890 2e 29 0a 3c 2f 74 61 62 6c 65 3e 0a 3c 2f 62 6c  .).</table>.</bl
158a0 6f 63 6b 71 75 6f 74 65 3e 29 5e 0a 0a 3c 70 3e  ockquote>)^..<p>
158b0 0a 54 68 65 20 6f 6e 6c 79 20 72 65 61 73 6f 6e  .The only reason
158c0 73 20 66 6f 72 20 70 72 6f 76 69 64 69 6e 67 20  s for providing 
158d0 66 75 6e 63 74 69 6f 6e 73 20 6f 74 68 65 72 20  functions other 
158e0 74 68 61 6e 20 73 74 72 66 74 69 6d 65 28 29 20  than strftime() 
158f0 69 73 0a 66 6f 72 20 63 6f 6e 76 65 6e 69 65 6e  is.for convenien
15900 63 65 20 61 6e 64 20 66 6f 72 20 65 66 66 69 63  ce and for effic
15910 69 65 6e 63 79 2e 0a 3c 2f 70 3e 0a 0a 3c 68 33  iency..</p>..<h3
15920 3e 54 69 6d 65 20 53 74 72 69 6e 67 73 3c 2f 68  >Time Strings</h
15930 33 3e 0a 0a 3c 70 3e 5e 28 41 20 74 69 6d 65 20  3>..<p>^(A time 
15940 73 74 72 69 6e 67 20 63 61 6e 20 62 65 20 69 6e  string can be in
15950 20 61 6e 79 20 6f 66 20 74 68 65 20 66 6f 6c 6c   any of the foll
15960 6f 77 69 6e 67 20 66 6f 72 6d 61 74 73 3a 3c 2f  owing formats:</
15970 70 3e 0a 0a 3c 6f 6c 3e 0a 3c 6c 69 3e 20 3c 69  p>..<ol>.<li> <i
15980 3e 59 59 59 59 2d 4d 4d 2d 44 44 3c 2f 69 3e 0a  >YYYY-MM-DD</i>.
15990 3c 6c 69 3e 20 3c 69 3e 59 59 59 59 2d 4d 4d 2d  <li> <i>YYYY-MM-
159a0 44 44 20 48 48 3a 4d 4d 3c 2f 69 3e 0a 3c 6c 69  DD HH:MM</i>.<li
159b0 3e 20 3c 69 3e 59 59 59 59 2d 4d 4d 2d 44 44 20  > <i>YYYY-MM-DD 
159c0 48 48 3a 4d 4d 3a 53 53 3c 2f 69 3e 0a 3c 6c 69  HH:MM:SS</i>.<li
159d0 3e 20 3c 69 3e 59 59 59 59 2d 4d 4d 2d 44 44 20  > <i>YYYY-MM-DD 
159e0 48 48 3a 4d 4d 3a 53 53 2e 53 53 53 3c 2f 69 3e  HH:MM:SS.SSS</i>
159f0 0a 3c 6c 69 3e 20 3c 69 3e 59 59 59 59 2d 4d 4d  .<li> <i>YYYY-MM
15a00 2d 44 44 3c 2f 69 3e 3c 62 3e 54 3c 2f 62 3e 3c  -DD</i><b>T</b><
15a10 69 3e 48 48 3a 4d 4d 3c 2f 69 3e 0a 3c 6c 69 3e  i>HH:MM</i>.<li>
15a20 20 3c 69 3e 59 59 59 59 2d 4d 4d 2d 44 44 3c 2f   <i>YYYY-MM-DD</
15a30 69 3e 3c 62 3e 54 3c 2f 62 3e 3c 69 3e 48 48 3a  i><b>T</b><i>HH:
15a40 4d 4d 3a 53 53 3c 2f 69 3e 0a 3c 6c 69 3e 20 3c  MM:SS</i>.<li> <
15a50 69 3e 59 59 59 59 2d 4d 4d 2d 44 44 3c 2f 69 3e  i>YYYY-MM-DD</i>
15a60 3c 62 3e 54 3c 2f 62 3e 3c 69 3e 48 48 3a 4d 4d  <b>T</b><i>HH:MM
15a70 3a 53 53 2e 53 53 53 3c 2f 69 3e 0a 3c 6c 69 3e  :SS.SSS</i>.<li>
15a80 20 3c 69 3e 48 48 3a 4d 4d 3c 2f 69 3e 0a 3c 6c   <i>HH:MM</i>.<l
15a90 69 3e 20 3c 69 3e 48 48 3a 4d 4d 3a 53 53 3c 2f  i> <i>HH:MM:SS</
15aa0 69 3e 0a 3c 6c 69 3e 20 3c 69 3e 48 48 3a 4d 4d  i>.<li> <i>HH:MM
15ab0 3a 53 53 2e 53 53 53 3c 2f 69 3e 0a 3c 6c 69 3e  :SS.SSS</i>.<li>
15ac0 20 3c 62 3e 6e 6f 77 3c 2f 62 3e 0a 3c 6c 69 3e   <b>now</b>.<li>
15ad0 20 3c 69 3e 44 44 44 44 44 44 44 44 44 44 3c 2f   <i>DDDDDDDDDD</
15ae0 69 3e 0a 3c 2f 6f 6c 3e 29 5e 0a 0a 3c 70 3e 0a  i>.</ol>)^..<p>.
15af0 5e 49 6e 20 66 6f 72 6d 61 74 73 20 35 20 74 68  ^In formats 5 th
15b00 72 6f 75 67 68 20 37 2c 20 74 68 65 20 22 54 22  rough 7, the "T"
15b10 20 69 73 20 61 20 6c 69 74 65 72 61 6c 20 63 68   is a literal ch
15b20 61 72 61 63 74 65 72 20 73 65 70 61 72 61 74 69  aracter separati
15b30 6e 67 20 0a 74 68 65 20 64 61 74 65 20 61 6e 64  ng .the date and
15b40 20 74 68 65 20 74 69 6d 65 2c 20 61 73 20 72 65   the time, as re
15b50 71 75 69 72 65 64 20 62 79 20 0a 5b 68 74 74 70  quired by .[http
15b60 3a 2f 2f 77 77 77 2e 77 33 63 2e 6f 72 67 2f 54  ://www.w3c.org/T
15b70 52 2f 4e 4f 54 45 2d 64 61 74 65 74 69 6d 65 20  R/NOTE-datetime 
15b80 7c 20 49 53 4f 2d 38 36 30 31 5d 2e 20 0a 5e 46  | ISO-8601]. .^F
15b90 6f 72 6d 61 74 73 20 38 20 74 68 72 6f 75 67 68  ormats 8 through
15ba0 20 31 30 20 74 68 61 74 20 73 70 65 63 69 66 79   10 that specify
15bb0 20 6f 6e 6c 79 20 61 20 74 69 6d 65 20 61 73 73   only a time ass
15bc0 75 6d 65 20 61 20 64 61 74 65 20 6f 66 20 0a 32  ume a date of .2
15bd0 30 30 30 2d 30 31 2d 30 31 2e 20 46 6f 72 6d 61  000-01-01. Forma
15be0 74 20 31 31 2c 20 74 68 65 20 73 74 72 69 6e 67  t 11, the string
15bf0 20 27 6e 6f 77 27 2c 20 69 73 20 63 6f 6e 76 65   'now', is conve
15c00 72 74 65 64 20 69 6e 74 6f 20 74 68 65 20 0a 63  rted into the .c
15c10 75 72 72 65 6e 74 20 64 61 74 65 20 61 6e 64 20  urrent date and 
15c20 74 69 6d 65 20 61 73 20 6f 62 74 61 69 6e 65 64  time as obtained
15c30 20 66 72 6f 6d 20 74 68 65 20 78 43 75 72 72 65   from the xCurre
15c40 6e 74 54 69 6d 65 20 6d 65 74 68 6f 64 0a 6f 66  ntTime method.of
15c50 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 76 66   the [sqlite3_vf
15c60 73 5d 20 6f 62 6a 65 63 74 20 69 6e 20 75 73 65  s] object in use
15c70 2e 0a 5e 5b 68 74 74 70 3a 2f 2f 65 6e 2e 77 69  ..^[http://en.wi
15c80 6b 69 70 65 64 69 61 2e 6f 72 67 2f 77 69 6b 69  kipedia.org/wiki
15c90 2f 43 6f 6f 72 64 69 6e 61 74 65 64 5f 55 6e 69  /Coordinated_Uni
15ca0 76 65 72 73 61 6c 5f 54 69 6d 65 20 7c 20 55 6e  versal_Time | Un
15cb0 69 76 65 72 73 61 6c 20 43 6f 6f 72 64 69 6e 61  iversal Coordina
15cc0 74 65 64 20 54 69 6d 65 20 28 55 54 43 29 5d 20  ted Time (UTC)] 
15cd0 69 73 20 75 73 65 64 2e 20 0a 5e 46 6f 72 6d 61  is used. .^Forma
15ce0 74 20 31 32 20 69 73 20 74 68 65 20 0a 5b 68 74  t 12 is the .[ht
15cf0 74 70 3a 2f 2f 65 6e 2e 77 69 6b 69 70 65 64 69  tp://en.wikipedi
15d00 61 2e 6f 72 67 2f 77 69 6b 69 2f 4a 75 6c 69 61  a.org/wiki/Julia
15d10 6e 5f 64 61 79 20 7c 20 4a 75 6c 69 61 6e 20 64  n_day | Julian d
15d20 61 79 20 6e 75 6d 62 65 72 5d 0a 65 78 70 72 65  ay number].expre
15d30 73 73 65 64 20 61 73 20 61 20 66 6c 6f 61 74 69  ssed as a floati
15d40 6e 67 20 70 6f 69 6e 74 20 76 61 6c 75 65 2e 0a  ng point value..
15d50 3c 2f 70 3e 0a 0a 3c 68 33 3e 4d 6f 64 69 66 69  </p>..<h3>Modifi
15d60 65 72 73 3c 2f 68 33 3e 0a 0a 3c 70 3e 5e 54 68  ers</h3>..<p>^Th
15d70 65 20 74 69 6d 65 20 73 74 72 69 6e 67 20 63 61  e time string ca
15d80 6e 20 62 65 20 66 6f 6c 6c 6f 77 65 64 20 62 79  n be followed by
15d90 20 7a 65 72 6f 20 6f 72 20 6d 6f 72 65 20 6d 6f   zero or more mo
15da0 64 69 66 69 65 72 73 20 74 68 61 74 20 0a 61 6c  difiers that .al
15db0 74 65 72 20 74 68 65 20 64 61 74 65 20 61 6e 64  ter the date and
15dc0 20 74 69 6d 65 20 73 74 72 69 6e 67 2e 20 5e 45   time string. ^E
15dd0 61 63 68 20 6d 6f 64 69 66 69 65 72 0a 69 73 20  ach modifier.is 
15de0 61 20 74 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e  a transformation
15df0 20 74 68 61 74 20 69 73 20 61 70 70 6c 69 65 64   that is applied
15e00 20 74 6f 20 74 68 65 20 74 69 6d 65 20 76 61 6c   to the time val
15e10 75 65 20 74 6f 20 69 74 73 20 6c 65 66 74 2e 0a  ue to its left..
15e20 5e 4d 6f 64 69 66 69 65 72 73 20 61 72 65 20 61  ^Modifiers are a
15e30 70 70 6c 69 65 64 20 66 72 6f 6d 20 6c 65 66 74  pplied from left
15e40 20 74 6f 20 72 69 67 68 74 3b 20 6f 72 64 65 72   to right; order
15e50 20 69 73 20 69 6d 70 6f 72 74 61 6e 74 2e 0a 5e   is important..^
15e60 28 54 68 65 20 61 76 61 69 6c 61 62 6c 65 20 6d  (The available m
15e70 6f 64 69 66 69 65 72 73 20 61 72 65 20 61 73 20  odifiers are as 
15e80 66 6f 6c 6c 6f 77 73 2e 3c 2f 70 3e 0a 0a 3c 6f  follows.</p>..<o
15e90 6c 3e 0a 3c 6c 69 3e 20 4e 4e 4e 20 64 61 79 73  l>.<li> NNN days
15ea0 0a 3c 6c 69 3e 20 4e 4e 4e 20 68 6f 75 72 73 0a  .<li> NNN hours.
15eb0 3c 6c 69 3e 20 4e 4e 4e 20 6d 69 6e 75 74 65 73  <li> NNN minutes
15ec0 0a 3c 6c 69 3e 20 4e 4e 4e 2e 4e 4e 4e 4e 20 73  .<li> NNN.NNNN s
15ed0 65 63 6f 6e 64 73 0a 3c 6c 69 3e 20 4e 4e 4e 20  econds.<li> NNN 
15ee0 6d 6f 6e 74 68 73 0a 3c 6c 69 3e 20 4e 4e 4e 20  months.<li> NNN 
15ef0 79 65 61 72 73 0a 3c 6c 69 3e 20 73 74 61 72 74  years.<li> start
15f00 20 6f 66 20 6d 6f 6e 74 68 0a 3c 6c 69 3e 20 73   of month.<li> s
15f10 74 61 72 74 20 6f 66 20 79 65 61 72 0a 3c 6c 69  tart of year.<li
15f20 3e 20 73 74 61 72 74 20 6f 66 20 64 61 79 0a 3c  > start of day.<
15f30 6c 69 3e 20 77 65 65 6b 64 61 79 20 4e 0a 3c 6c  li> weekday N.<l
15f40 69 3e 20 75 6e 69 78 65 70 6f 63 68 0a 3c 6c 69  i> unixepoch.<li
15f50 3e 20 6c 6f 63 61 6c 74 69 6d 65 0a 3c 6c 69 3e  > localtime.<li>
15f60 20 75 74 63 20 0a 3c 2f 6f 6c 3e 29 5e 0a 0a 3c   utc .</ol>)^..<
15f70 70 3e 5e 54 68 65 20 66 69 72 73 74 20 73 69 78  p>^The first six
15f80 20 6d 6f 64 69 66 69 65 72 73 20 28 31 20 74 68   modifiers (1 th
15f90 72 6f 75 67 68 20 36 29 20 0a 73 69 6d 70 6c 79  rough 6) .simply
15fa0 20 61 64 64 20 74 68 65 20 73 70 65 63 69 66 69   add the specifi
15fb0 65 64 20 61 6d 6f 75 6e 74 20 6f 66 20 74 69 6d  ed amount of tim
15fc0 65 20 74 6f 20 74 68 65 20 64 61 74 65 20 61 6e  e to the date an
15fd0 64 20 74 69 6d 65 20 0a 73 70 65 63 69 66 69 65  d time .specifie
15fe0 64 20 62 79 20 74 68 65 20 70 72 65 63 65 64 69  d by the precedi
15ff0 6e 67 20 74 69 6d 65 73 74 72 69 6e 67 20 61 6e  ng timestring an
16000 64 20 6d 6f 64 69 66 69 65 72 73 2e 0a 5e 4e 6f  d modifiers..^No
16010 74 65 20 74 68 61 74 20 22 26 70 6c 75 73 6d 6e  te that "&plusmn
16020 3b 4e 4e 4e 20 6d 6f 6e 74 68 73 22 20 77 6f 72  ;NNN months" wor
16030 6b 73 20 62 79 20 72 65 6e 64 65 72 69 6e 67 20  ks by rendering 
16040 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 64 61 74  the original dat
16050 65 20 69 6e 74 6f 0a 74 68 65 20 59 59 59 59 2d  e into.the YYYY-
16060 4d 4d 2d 44 44 20 66 6f 72 6d 61 74 2c 20 61 64  MM-DD format, ad
16070 64 69 6e 67 20 74 68 65 20 26 70 6c 75 73 6d 6e  ding the &plusmn
16080 3b 4e 4e 4e 20 74 6f 20 74 68 65 20 4d 4d 20 6d  ;NNN to the MM m
16090 6f 6e 74 68 20 76 61 6c 75 65 2c 20 74 68 65 6e  onth value, then
160a0 0a 6e 6f 72 6d 61 6c 69 7a 69 6e 67 20 74 68 65  .normalizing the
160b0 20 72 65 73 75 6c 74 2e 20 20 5e 54 68 75 73 2c   result.  ^Thus,
160c0 20 66 6f 72 20 65 78 61 6d 70 6c 65 2c 20 74 68   for example, th
160d0 65 20 64 61 74 61 20 32 30 30 31 2d 30 33 2d 33  e data 2001-03-3
160e0 31 20 6d 6f 64 69 66 69 65 64 0a 62 79 20 27 2b  1 modified.by '+
160f0 31 20 6d 6f 6e 74 68 27 20 69 6e 69 74 69 61 6c  1 month' initial
16100 6c 79 20 79 69 65 6c 64 73 20 32 30 30 31 2d 30  ly yields 2001-0
16110 34 2d 33 31 2c 20 62 75 74 20 41 70 72 69 6c 20  4-31, but April 
16120 6f 6e 6c 79 20 68 61 73 20 33 30 20 64 61 79 73  only has 30 days
16130 0a 73 6f 20 74 68 65 20 64 61 74 65 20 69 73 20  .so the date is 
16140 6e 6f 72 6d 61 6c 69 7a 65 64 20 74 6f 20 32 30  normalized to 20
16150 30 31 2d 30 35 2d 30 31 2e 20 20 5e 41 20 73 69  01-05-01.  ^A si
16160 6d 69 6c 61 72 20 65 66 66 65 63 74 20 6f 63 63  milar effect occ
16170 75 72 73 20 77 68 65 6e 0a 74 68 65 20 6f 72 69  urs when.the ori
16180 67 69 6e 61 6c 20 64 61 74 65 20 69 73 20 46 65  ginal date is Fe
16190 62 72 75 61 72 79 20 32 39 20 6f 66 20 61 20 6c  bruary 29 of a l
161a0 65 61 70 79 65 61 72 20 61 6e 64 20 74 68 65 20  eapyear and the 
161b0 6d 6f 64 69 66 69 65 72 20 69 73 0a 26 70 6c 75  modifier is.&plu
161c0 73 6d 6e 3b 4e 20 79 65 61 72 73 20 77 68 65 72  smn;N years wher
161d0 65 20 4e 20 69 73 20 6e 6f 74 20 61 20 6d 75 6c  e N is not a mul
161e0 74 69 70 6c 65 20 6f 66 20 66 6f 75 72 2e 3c 2f  tiple of four.</
161f0 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20 22 73 74 61  p>..<p>^The "sta
16200 72 74 20 6f 66 22 20 6d 6f 64 69 66 69 65 72 73  rt of" modifiers
16210 20 28 37 20 74 68 72 6f 75 67 68 20 39 29 20 73   (7 through 9) s
16220 68 69 66 74 20 74 68 65 20 64 61 74 65 20 62 61  hift the date ba
16230 63 6b 77 61 72 64 73 20 0a 74 6f 20 74 68 65 20  ckwards .to the 
16240 62 65 67 69 6e 6e 69 6e 67 20 6f 66 20 74 68 65  beginning of the
16250 20 63 75 72 72 65 6e 74 20 6d 6f 6e 74 68 2c 20   current month, 
16260 79 65 61 72 20 6f 72 20 64 61 79 2e 3c 2f 70 3e  year or day.</p>
16270 0a 0a 3c 70 3e 5e 54 68 65 20 22 77 65 65 6b 64  ..<p>^The "weekd
16280 61 79 22 20 6d 6f 64 69 66 69 65 72 20 61 64 76  ay" modifier adv
16290 61 6e 63 65 73 20 74 68 65 20 64 61 74 65 20 66  ances the date f
162a0 6f 72 77 61 72 64 20 74 6f 20 74 68 65 20 6e 65  orward to the ne
162b0 78 74 20 64 61 74 65 20 0a 77 68 65 72 65 20 74  xt date .where t
162c0 68 65 20 77 65 65 6b 64 61 79 20 6e 75 6d 62 65  he weekday numbe
162d0 72 20 69 73 20 4e 2e 20 53 75 6e 64 61 79 20 69  r is N. Sunday i
162e0 73 20 30 2c 20 4d 6f 6e 64 61 79 20 69 73 20 31  s 0, Monday is 1
162f0 2c 20 61 6e 64 20 73 6f 20 66 6f 72 74 68 2e 3c  , and so forth.<
16300 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20 22 75 6e  /p>..<p>^The "un
16310 69 78 65 70 6f 63 68 22 20 6d 6f 64 69 66 69 65  ixepoch" modifie
16320 72 20 28 31 31 29 20 6f 6e 6c 79 20 77 6f 72 6b  r (11) only work
16330 73 20 69 66 20 69 74 20 69 6d 6d 65 64 69 61 74  s if it immediat
16340 65 6c 79 20 66 6f 6c 6c 6f 77 73 20 0a 61 20 74  ely follows .a t
16350 69 6d 65 73 74 72 69 6e 67 20 69 6e 20 74 68 65  imestring in the
16360 20 44 44 44 44 44 44 44 44 44 44 20 66 6f 72 6d   DDDDDDDDDD form
16370 61 74 2e 20 0a 5e 54 68 69 73 20 6d 6f 64 69 66  at. .^This modif
16380 69 65 72 20 63 61 75 73 65 73 20 74 68 65 20 44  ier causes the D
16390 44 44 44 44 44 44 44 44 44 20 74 6f 20 62 65 20  DDDDDDDDD to be 
163a0 69 6e 74 65 72 70 72 65 74 65 64 20 6e 6f 74 20  interpreted not 
163b0 0a 61 73 20 61 20 4a 75 6c 69 61 6e 20 64 61 79  .as a Julian day
163c0 20 6e 75 6d 62 65 72 20 61 73 20 69 74 20 6e 6f   number as it no
163d0 72 6d 61 6c 6c 79 20 77 6f 75 6c 64 20 62 65 2c  rmally would be,
163e0 20 62 75 74 20 61 73 0a 5b 68 74 74 70 3a 2f 2f   but as.[http://
163f0 65 6e 2e 77 69 6b 69 70 65 64 69 61 2e 6f 72 67  en.wikipedia.org
16400 2f 77 69 6b 69 2f 55 6e 69 78 5f 74 69 6d 65 20  /wiki/Unix_time 
16410 7c 20 55 6e 69 78 20 54 69 6d 65 5d 20 2d 20 74  | Unix Time] - t
16420 68 65 20 0a 6e 75 6d 62 65 72 20 6f 66 20 73 65  he .number of se
16430 63 6f 6e 64 73 20 73 69 6e 63 65 20 31 39 37 30  conds since 1970
16440 2e 20 20 49 66 20 74 68 65 20 22 75 6e 69 78 65  .  If the "unixe
16450 70 6f 63 68 22 20 6d 6f 64 69 66 69 65 72 20 64  poch" modifier d
16460 6f 65 73 20 6e 6f 74 0a 66 6f 6c 6c 6f 77 20 61  oes not.follow a
16470 20 74 69 6d 65 73 74 72 69 6e 67 20 6f 66 20 74   timestring of t
16480 68 65 20 66 6f 72 6d 20 44 44 44 44 44 44 44 44  he form DDDDDDDD
16490 44 44 20 77 68 69 63 68 20 65 78 70 72 65 73 73  DD which express
164a0 65 73 20 74 68 65 20 6e 75 6d 62 65 72 0a 6f 66  es the number.of
164b0 20 73 65 63 6f 6e 64 73 20 73 69 6e 63 65 20 31   seconds since 1
164c0 39 37 30 20 6f 72 20 69 66 20 6f 74 68 65 72 20  970 or if other 
164d0 6d 6f 64 69 66 69 65 72 73 0a 73 65 70 61 72 61  modifiers.separa
164e0 74 65 20 74 68 65 20 22 75 6e 69 78 65 70 6f 63  te the "unixepoc
164f0 68 22 20 6d 6f 64 69 66 69 65 72 20 66 72 6f 6d  h" modifier from
16500 20 70 72 69 6f 72 20 44 44 44 44 44 44 44 44 44   prior DDDDDDDDD
16510 44 20 74 68 65 6e 20 74 68 65 0a 62 65 68 61 76  D then the.behav
16520 69 6f 72 20 69 73 20 75 6e 64 65 66 69 6e 65 64  ior is undefined
16530 2e 0a 44 75 65 20 74 6f 20 70 72 65 63 69 73 69  ..Due to precisi
16540 6f 6e 20 6c 69 6d 69 74 61 74 69 6f 6e 73 20 69  on limitations i
16550 6d 70 6f 73 65 64 20 62 79 20 74 68 65 20 69 6d  mposed by the im
16560 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 75 73  plementations us
16570 65 0a 6f 66 20 36 34 2d 62 69 74 20 69 6e 74 65  e.of 64-bit inte
16580 67 65 72 73 2c 20 74 68 65 20 22 75 6e 69 78 65  gers, the "unixe
16590 70 6f 63 68 22 20 6d 6f 64 69 66 69 65 72 20 6f  poch" modifier o
165a0 6e 6c 79 20 77 6f 72 6b 73 20 66 6f 72 0a 64 61  nly works for.da
165b0 74 65 73 20 62 65 74 77 65 65 6e 20 30 30 30 30  tes between 0000
165c0 2d 30 31 2d 30 31 20 30 30 3a 30 30 3a 30 30 20  -01-01 00:00:00 
165d0 61 6e 64 20 35 33 35 32 2d 31 31 2d 30 31 20 31  and 5352-11-01 1
165e0 30 3a 35 32 3a 34 37 20 28 75 6e 69 78 20 74 69  0:52:47 (unix ti
165f0 6d 65 73 0a 6f 66 20 2d 36 32 31 36 37 32 31 39  mes.of -62167219
16600 32 30 30 20 74 68 72 6f 75 67 68 20 31 30 36 37  200 through 1067
16610 35 31 39 39 31 36 37 29 2e 3c 2f 70 3e 0a 0a 3c  5199167).</p>..<
16620 70 3e 5e 54 68 65 20 22 6c 6f 63 61 6c 74 69 6d  p>^The "localtim
16630 65 22 20 6d 6f 64 69 66 69 65 72 20 28 31 32 29  e" modifier (12)
16640 20 61 73 73 75 6d 65 73 20 74 68 65 20 74 69 6d   assumes the tim
16650 65 20 73 74 72 69 6e 67 20 74 6f 20 69 74 73 20  e string to its 
16660 6c 65 66 74 20 69 73 20 69 6e 0a 55 6e 69 76 65  left is in.Unive
16670 72 73 61 6c 20 43 6f 6f 72 64 69 6e 61 74 65 64  rsal Coordinated
16680 20 54 69 6d 65 20 28 55 54 43 29 20 61 6e 64 20   Time (UTC) and 
16690 61 64 6a 75 73 74 73 20 74 68 65 20 74 69 6d 65  adjusts the time
166a0 0a 73 74 72 69 6e 67 20 73 6f 20 74 68 61 74 20  .string so that 
166b0 69 74 20 64 69 73 70 6c 61 79 73 20 6c 6f 63 61  it displays loca
166c0 6c 74 69 6d 65 2e 20 20 49 66 20 22 6c 6f 63 61  ltime.  If "loca
166d0 6c 74 69 6d 65 22 0a 66 6f 6c 6c 6f 77 73 20 61  ltime".follows a
166e0 20 74 69 6d 65 20 74 68 61 74 20 69 73 20 6e 6f   time that is no
166f0 74 20 55 54 43 2c 20 74 68 65 6e 20 74 68 65 20  t UTC, then the 
16700 62 65 68 61 76 69 6f 72 20 69 73 20 75 6e 64 65  behavior is unde
16710 66 69 6e 65 64 2e 0a 5e 28 54 68 65 20 22 75 74  fined..^(The "ut
16720 63 22 20 69 73 20 74 68 65 20 6f 70 70 6f 73 69  c" is the opposi
16730 74 65 20 6f 66 20 22 6c 6f 63 61 6c 74 69 6d 65  te of "localtime
16740 22 2e 20 20 22 75 74 63 22 20 61 73 73 75 6d 65  ".  "utc" assume
16750 73 20 74 68 61 74 20 74 68 65 20 73 74 72 69 6e  s that the strin
16760 67 0a 74 6f 20 69 74 73 20 6c 65 66 74 20 69 73  g.to its left is
16770 20 69 6e 20 74 68 65 20 6c 6f 63 61 6c 20 74 69   in the local ti
16780 6d 65 7a 6f 6e 65 20 61 6e 64 20 61 64 6a 75 73  mezone and adjus
16790 74 73 20 74 68 61 74 20 73 74 72 69 6e 67 20 74  ts that string t
167a0 6f 20 62 65 20 69 6e 20 55 54 43 2e 29 5e 0a 49  o be in UTC.)^.I
167b0 66 20 74 68 65 20 70 72 69 6f 72 20 73 74 72 69  f the prior stri
167c0 6e 67 20 69 73 20 6e 6f 74 20 69 6e 20 6c 6f 63  ng is not in loc
167d0 61 6c 74 69 6d 65 2c 20 74 68 65 6e 20 74 68 65  altime, then the
167e0 20 72 65 73 75 6c 74 20 6f 66 20 22 75 74 63 22   result of "utc"
167f0 20 69 73 0a 75 6e 64 65 66 69 6e 65 64 2e 3c 2f   is.undefined.</
16800 70 3e 0a 0a 3c 68 33 3e 45 78 61 6d 70 6c 65 73  p>..<h3>Examples
16810 3c 2f 68 33 3e 0a 0a 5e 28 3c 70 3e 43 6f 6d 70  </h3>..^(<p>Comp
16820 75 74 65 20 74 68 65 20 63 75 72 72 65 6e 74 20  ute the current 
16830 64 61 74 65 2e 3c 70 3e 0a 0a 3c 62 6c 6f 63 6b  date.<p>..<block
16840 71 75 6f 74 65 3e 53 45 4c 45 43 54 20 64 61 74  quote>SELECT dat
16850 65 28 27 6e 6f 77 27 29 3b 3c 2f 62 6c 6f 63 6b  e('now');</block
16860 71 75 6f 74 65 3e 29 5e 0a 0a 5e 28 3c 70 3e 43  quote>)^..^(<p>C
16870 6f 6d 70 75 74 65 20 74 68 65 20 6c 61 73 74 20  ompute the last 
16880 64 61 79 20 6f 66 20 74 68 65 20 63 75 72 72 65  day of the curre
16890 6e 74 20 6d 6f 6e 74 68 2e 3c 2f 70 3e 0a 0a 3c  nt month.</p>..<
168a0 62 6c 6f 63 6b 71 75 6f 74 65 3e 53 45 4c 45 43  blockquote>SELEC
168b0 54 20 64 61 74 65 28 27 6e 6f 77 27 2c 27 73 74  T date('now','st
168c0 61 72 74 20 6f 66 20 6d 6f 6e 74 68 27 2c 27 2b  art of month','+
168d0 31 20 6d 6f 6e 74 68 27 2c 27 2d 31 20 64 61 79  1 month','-1 day
168e0 27 29 3b 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65  ');.</blockquote
168f0 3e 29 5e 0a 0a 5e 28 3c 70 3e 43 6f 6d 70 75 74  >)^..^(<p>Comput
16900 65 20 74 68 65 20 64 61 74 65 20 61 6e 64 20 74  e the date and t
16910 69 6d 65 20 67 69 76 65 6e 20 61 20 75 6e 69 78  ime given a unix
16920 20 74 69 6d 65 73 74 61 6d 70 20 31 30 39 32 39   timestamp 10929
16930 34 31 34 36 36 2e 3c 2f 70 3e 0a 0a 3c 62 6c 6f  41466.</p>..<blo
16940 63 6b 71 75 6f 74 65 3e 0a 20 20 20 20 53 45 4c  ckquote>.    SEL
16950 45 43 54 20 64 61 74 65 74 69 6d 65 28 31 30 39  ECT datetime(109
16960 32 39 34 31 34 36 36 2c 20 27 75 6e 69 78 65 70  2941466, 'unixep
16970 6f 63 68 27 29 3b 0a 3c 2f 62 6c 6f 63 6b 71 75  och');.</blockqu
16980 6f 74 65 3e 29 5e 0a 0a 5e 28 3c 70 3e 43 6f 6d  ote>)^..^(<p>Com
16990 70 75 74 65 20 74 68 65 20 64 61 74 65 20 61 6e  pute the date an
169a0 64 20 74 69 6d 65 20 67 69 76 65 6e 20 61 20 75  d time given a u
169b0 6e 69 78 20 74 69 6d 65 73 74 61 6d 70 20 31 30  nix timestamp 10
169c0 39 32 39 34 31 34 36 36 2c 20 61 6e 64 20 0a 63  92941466, and .c
169d0 6f 6d 70 65 6e 73 61 74 65 20 66 6f 72 20 79 6f  ompensate for yo
169e0 75 72 20 6c 6f 63 61 6c 20 74 69 6d 65 7a 6f 6e  ur local timezon
169f0 65 2e 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75  e.</p>..<blockqu
16a00 6f 74 65 3e 0a 20 20 53 45 4c 45 43 54 20 64 61  ote>.  SELECT da
16a10 74 65 74 69 6d 65 28 31 30 39 32 39 34 31 34 36  tetime(109294146
16a20 36 2c 20 27 75 6e 69 78 65 70 6f 63 68 27 2c 20  6, 'unixepoch', 
16a30 27 6c 6f 63 61 6c 74 69 6d 65 27 29 3b 0a 3c 2f  'localtime');.</
16a40 62 6c 6f 63 6b 71 75 6f 74 65 3e 29 5e 0a 0a 5e  blockquote>)^..^
16a50 28 3c 70 3e 43 6f 6d 70 75 74 65 20 74 68 65 20  (<p>Compute the 
16a60 63 75 72 72 65 6e 74 20 75 6e 69 78 20 74 69 6d  current unix tim
16a70 65 73 74 61 6d 70 2e 3c 2f 70 3e 0a 0a 3c 62 6c  estamp.</p>..<bl
16a80 6f 63 6b 71 75 6f 74 65 3e 0a 20 20 53 45 4c 45  ockquote>.  SELE
16a90 43 54 20 73 74 72 66 74 69 6d 65 28 27 25 73 27  CT strftime('%s'
16aa0 2c 27 6e 6f 77 27 29 3b 0a 3c 2f 62 6c 6f 63 6b  ,'now');.</block
16ab0 71 75 6f 74 65 3e 29 5e 0a 0a 5e 28 3c 70 3e 43  quote>)^..^(<p>C
16ac0 6f 6d 70 75 74 65 20 74 68 65 20 6e 75 6d 62 65  ompute the numbe
16ad0 72 20 6f 66 20 64 61 79 73 20 73 69 6e 63 65 20  r of days since 
16ae0 74 68 65 20 73 69 67 6e 69 6e 67 20 6f 66 20 74  the signing of t
16af0 68 65 20 55 53 20 44 65 63 6c 61 72 61 74 69 6f  he US Declaratio
16b00 6e 0a 6f 66 20 49 6e 64 65 70 65 6e 64 65 6e 63  n.of Independenc
16b10 65 2e 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75  e.</p>..<blockqu
16b20 6f 74 65 3e 0a 20 20 53 45 4c 45 43 54 20 6a 75  ote>.  SELECT ju
16b30 6c 69 61 6e 64 61 79 28 27 6e 6f 77 27 29 20 2d  lianday('now') -
16b40 20 6a 75 6c 69 61 6e 64 61 79 28 27 31 37 37 36   julianday('1776
16b50 2d 30 37 2d 30 34 27 29 3b 0a 3c 2f 62 6c 6f 63  -07-04');.</bloc
16b60 6b 71 75 6f 74 65 3e 29 5e 0a 0a 5e 28 3c 70 3e  kquote>)^..^(<p>
16b70 43 6f 6d 70 75 74 65 20 74 68 65 20 6e 75 6d 62  Compute the numb
16b80 65 72 20 6f 66 20 73 65 63 6f 6e 64 73 20 73 69  er of seconds si
16b90 6e 63 65 20 61 20 70 61 72 74 69 63 75 6c 61 72  nce a particular
16ba0 20 6d 6f 6d 65 6e 74 20 69 6e 20 32 30 30 34 3a   moment in 2004:
16bb0 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74  </p>..<blockquot
16bc0 65 3e 0a 20 20 53 45 4c 45 43 54 20 73 74 72 66  e>.  SELECT strf
16bd0 74 69 6d 65 28 27 25 73 27 2c 27 6e 6f 77 27 29  time('%s','now')
16be0 20 2d 20 73 74 72 66 74 69 6d 65 28 27 25 73 27   - strftime('%s'
16bf0 2c 27 32 30 30 34 2d 30 31 2d 30 31 20 30 32 3a  ,'2004-01-01 02:
16c00 33 34 3a 35 36 27 29 3b 0a 3c 2f 62 6c 6f 63 6b  34:56');.</block
16c10 71 75 6f 74 65 3e 29 5e 0a 0a 5e 28 3c 70 3e 0a  quote>)^..^(<p>.
16c20 43 6f 6d 70 75 74 65 20 74 68 65 20 64 61 74 65  Compute the date
16c30 20 6f 66 20 74 68 65 20 66 69 72 73 74 20 54 75   of the first Tu
16c40 65 73 64 61 79 20 69 6e 20 4f 63 74 6f 62 65 72  esday in October
16c50 0a 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74  .for the current
16c60 20 79 65 61 72 2e 0a 3c 2f 70 3e 0a 0a 3c 62 6c   year..</p>..<bl
16c70 6f 63 6b 71 75 6f 74 65 3e 0a 20 20 53 45 4c 45  ockquote>.  SELE
16c80 43 54 20 64 61 74 65 28 27 6e 6f 77 27 2c 27 73  CT date('now','s
16c90 74 61 72 74 20 6f 66 20 79 65 61 72 27 2c 27 2b  tart of year','+
16ca0 39 20 6d 6f 6e 74 68 73 27 2c 27 77 65 65 6b 64  9 months','weekd
16cb0 61 79 20 32 27 29 3b 0a 3c 2f 62 6c 6f 63 6b 71  ay 2');.</blockq
16cc0 75 6f 74 65 3e 29 5e 0a 0a 5e 28 3c 70 3e 43 6f  uote>)^..^(<p>Co
16cd0 6d 70 75 74 65 20 74 68 65 20 74 69 6d 65 20 73  mpute the time s
16ce0 69 6e 63 65 20 74 68 65 20 75 6e 69 78 20 65 70  ince the unix ep
16cf0 6f 63 68 20 69 6e 20 73 65 63 6f 6e 64 73 20 0a  och in seconds .
16d00 28 6c 69 6b 65 20 73 74 72 66 74 69 6d 65 28 27  (like strftime('
16d10 25 73 27 2c 27 6e 6f 77 27 29 20 65 78 63 65 70  %s','now') excep
16d20 74 20 69 6e 63 6c 75 64 65 73 20 66 72 61 63 74  t includes fract
16d30 69 6f 6e 61 6c 20 70 61 72 74 29 3a 3c 2f 70 3e  ional part):</p>
16d40 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 20  ..<blockquote>. 
16d50 20 53 45 4c 45 43 54 20 28 6a 75 6c 69 61 6e 64   SELECT (juliand
16d60 61 79 28 27 6e 6f 77 27 29 20 2d 20 32 34 34 30  ay('now') - 2440
16d70 35 38 37 2e 35 29 2a 38 36 34 30 30 2e 30 3b 0a  587.5)*86400.0;.
16d80 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 29 5e 0a  </blockquote>)^.
16d90 0a 3c 68 33 3e 43 61 76 65 61 74 73 20 41 6e 64  .<h3>Caveats And
16da0 20 42 75 67 73 3c 2f 68 33 3e 0a 0a 3c 70 3e 54   Bugs</h3>..<p>T
16db0 68 65 20 63 6f 6d 70 75 74 61 74 69 6f 6e 20 6f  he computation o
16dc0 66 20 6c 6f 63 61 6c 20 74 69 6d 65 20 64 65 70  f local time dep
16dd0 65 6e 64 73 20 68 65 61 76 69 6c 79 20 6f 6e 20  ends heavily on 
16de0 74 68 65 20 77 68 69 6d 20 0a 6f 66 20 70 6f 6c  the whim .of pol
16df0 69 74 69 63 69 61 6e 73 20 61 6e 64 20 69 73 20  iticians and is 
16e00 74 68 75 73 20 64 69 66 66 69 63 75 6c 74 20 74  thus difficult t
16e10 6f 20 67 65 74 20 63 6f 72 72 65 63 74 20 66 6f  o get correct fo
16e20 72 20 0a 61 6c 6c 20 6c 6f 63 61 6c 65 73 2e 20  r .all locales. 
16e30 5e 49 6e 20 74 68 69 73 20 69 6d 70 6c 65 6d 65  ^In this impleme
16e40 6e 74 61 74 69 6f 6e 2c 20 74 68 65 20 73 74 61  ntation, the sta
16e50 6e 64 61 72 64 20 43 20 6c 69 62 72 61 72 79 20  ndard C library 
16e60 0a 66 75 6e 63 74 69 6f 6e 20 6c 6f 63 61 6c 74  .function localt
16e70 69 6d 65 5f 72 28 29 20 69 73 20 75 73 65 64 20  ime_r() is used 
16e80 74 6f 20 61 73 73 69 73 74 20 69 6e 20 74 68 65  to assist in the
16e90 20 63 61 6c 63 75 6c 61 74 69 6f 6e 20 6f 66 20   calculation of 
16ea0 0a 6c 6f 63 61 6c 20 74 69 6d 65 2e 20 20 5e 28  .local time.  ^(
16eb0 54 68 65 20 0a 6c 6f 63 61 6c 74 69 6d 65 5f 72  The .localtime_r
16ec0 28 29 20 43 20 66 75 6e 63 74 69 6f 6e 20 6e 6f  () C function no
16ed0 72 6d 61 6c 6c 79 20 6f 6e 6c 79 20 77 6f 72 6b  rmally only work
16ee0 73 20 66 6f 72 20 79 65 61 72 73 0a 62 65 74 77  s for years.betw
16ef0 65 65 6e 20 31 39 37 30 20 61 6e 64 20 32 30 33  een 1970 and 203
16f00 37 2e 20 46 6f 72 20 64 61 74 65 73 20 6f 75 74  7. For dates out
16f10 73 69 64 65 20 74 68 69 73 20 72 61 6e 67 65 2c  side this range,
16f20 20 53 51 4c 69 74 65 20 0a 61 74 74 65 6d 70 74   SQLite .attempt
16f30 73 20 74 6f 20 6d 61 70 20 74 68 65 20 79 65 61  s to map the yea
16f40 72 20 69 6e 74 6f 20 61 6e 20 65 71 75 69 76 61  r into an equiva
16f50 6c 65 6e 74 20 79 65 61 72 20 77 69 74 68 69 6e  lent year within
16f60 20 0a 74 68 69 73 20 72 61 6e 67 65 2c 20 64 6f   .this range, do
16f70 20 74 68 65 20 63 61 6c 63 75 6c 61 74 69 6f 6e   the calculation
16f80 2c 20 74 68 65 6e 20 6d 61 70 20 74 68 65 20 79  , then map the y
16f90 65 61 72 20 62 61 63 6b 2e 29 5e 3c 2f 70 3e 0a  ear back.)^</p>.
16fa0 0a 0a 3c 70 3e 5e 28 54 68 65 73 65 20 66 75 6e  ..<p>^(These fun
16fb0 63 74 69 6f 6e 73 20 6f 6e 6c 79 20 77 6f 72 6b  ctions only work
16fc0 20 66 6f 72 20 64 61 74 65 73 20 62 65 74 77 65   for dates betwe
16fd0 65 6e 20 30 30 30 30 2d 30 31 2d 30 31 20 30 30  en 0000-01-01 00
16fe0 3a 30 30 3a 30 30 0a 61 6e 64 20 39 39 39 39 2d  :00:00.and 9999-
16ff0 31 32 2d 33 31 20 32 33 3a 35 39 3a 35 39 20 28  12-31 23:59:59 (
17000 6a 75 6c 69 64 61 6e 20 64 61 79 20 6e 75 6d 62  julidan day numb
17010 65 72 73 20 31 37 32 31 30 35 39 2e 35 20 74 68  ers 1721059.5 th
17020 72 6f 75 67 68 20 35 33 37 33 34 38 34 2e 35 29  rough 5373484.5)
17030 2e 29 5e 0a 46 6f 72 20 64 61 74 65 73 20 6f 75  .)^.For dates ou
17040 74 73 69 64 65 20 74 68 61 74 20 72 61 6e 67 65  tside that range
17050 2c 20 74 68 65 20 72 65 73 75 6c 74 73 20 6f 66  , the results of
17060 20 74 68 65 73 65 0a 66 75 6e 63 74 69 6f 6e 73   these.functions
17070 20 61 72 65 20 75 6e 64 65 66 69 6e 65 64 2e 3c   are undefined.<
17080 2f 70 3e 0a 0a 3c 70 3e 4e 6f 6e 2d 56 69 73 74  /p>..<p>Non-Vist
17090 61 20 57 69 6e 64 6f 77 73 20 70 6c 61 74 66 6f  a Windows platfo
170a0 72 6d 73 20 6f 6e 6c 79 20 73 75 70 70 6f 72 74  rms only support
170b0 20 6f 6e 65 20 73 65 74 20 6f 66 20 44 53 54 20   one set of DST 
170c0 72 75 6c 65 73 2e 20 0a 56 69 73 74 61 20 6f 6e  rules. .Vista on
170d0 6c 79 20 73 75 70 70 6f 72 74 73 20 74 77 6f 2e  ly supports two.
170e0 20 54 68 65 72 65 66 6f 72 65 2c 20 6f 6e 20 74   Therefore, on t
170f0 68 65 73 65 20 70 6c 61 74 66 6f 72 6d 73 2c 20  hese platforms, 
17100 0a 68 69 73 74 6f 72 69 63 61 6c 20 44 53 54 20  .historical DST 
17110 63 61 6c 63 75 6c 61 74 69 6f 6e 73 20 77 69 6c  calculations wil
17120 6c 20 62 65 20 69 6e 63 6f 72 72 65 63 74 2e 20  l be incorrect. 
17130 0a 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 69 6e  .For example, in
17140 20 74 68 65 20 55 53 2c 20 69 6e 20 32 30 30 37   the US, in 2007
17150 20 74 68 65 20 44 53 54 20 72 75 6c 65 73 20 63   the DST rules c
17160 68 61 6e 67 65 64 2e 20 0a 4e 6f 6e 2d 56 69 73  hanged. .Non-Vis
17170 74 61 20 57 69 6e 64 6f 77 73 20 70 6c 61 74 66  ta Windows platf
17180 6f 72 6d 73 20 61 70 70 6c 79 20 74 68 65 20 6e  orms apply the n
17190 65 77 20 32 30 30 37 20 44 53 54 20 72 75 6c 65  ew 2007 DST rule
171a0 73 20 0a 74 6f 20 61 6c 6c 20 70 72 65 76 69 6f  s .to all previo
171b0 75 73 20 79 65 61 72 73 20 61 73 20 77 65 6c 6c  us years as well
171c0 2e 20 56 69 73 74 61 20 64 6f 65 73 20 73 6f 6d  . Vista does som
171d0 65 77 68 61 74 20 62 65 74 74 65 72 0a 67 65 74  ewhat better.get
171e0 74 69 6e 67 20 72 65 73 75 6c 74 73 20 63 6f 72  ting results cor
171f0 72 65 63 74 20 62 61 63 6b 20 74 6f 20 31 39 38  rect back to 198
17200 36 2c 20 77 68 65 6e 20 74 68 65 20 72 75 6c 65  6, when the rule
17210 73 20 77 65 72 65 20 61 6c 73 6f 20 63 68 61 6e  s were also chan
17220 67 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41 6c 6c  ged.</p>..<p>All
17230 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6d 70 75 74   internal comput
17240 61 74 69 6f 6e 73 20 61 73 73 75 6d 65 20 74 68  ations assume th
17250 65 20 0a 5b 68 74 74 70 3a 2f 2f 65 6e 2e 77 69  e .[http://en.wi
17260 6b 69 70 65 64 69 61 2e 6f 72 67 2f 77 69 6b 69  kipedia.org/wiki
17270 2f 47 72 65 67 6f 72 69 61 6e 5f 63 61 6c 65 6e  /Gregorian_calen
17280 64 61 72 20 7c 20 47 72 65 67 6f 72 69 61 6e 20  dar | Gregorian 
17290 63 61 6c 65 6e 64 61 72 5d 0a 73 79 73 74 65 6d  calendar].system
172a0 2e 20 20 49 74 20 69 73 20 61 6c 73 6f 20 61 73  .  It is also as
172b0 73 75 6d 65 64 20 74 68 61 74 20 65 76 65 72 79  sumed that every
172c0 0a 64 61 79 20 69 73 20 65 78 61 63 74 6c 79 20  .day is exactly 
172d0 38 36 34 30 30 20 73 65 63 6f 6e 64 73 20 69 6e  86400 seconds in
172e0 20 64 75 72 61 74 69 6f 6e 2e 3c 2f 70 3e 0a 0a   duration.</p>..
172f0 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23  <tcl>.##########
17300 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17310 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17320 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17330 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17340 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b 41 67  ####.Section {Ag
17350 67 72 65 67 61 74 65 20 46 75 6e 63 74 69 6f 6e  gregate Function
17360 73 7d 20 61 67 67 66 75 6e 63 20 7b 2a 61 67 67  s} aggfunc {*agg
17370 66 75 6e 63 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70  func}.</tcl>..<p
17380 3e 0a 54 68 65 20 61 67 67 72 65 67 61 74 65 20  >.The aggregate 
17390 66 75 6e 63 74 69 6f 6e 73 20 73 68 6f 77 6e 20  functions shown 
173a0 62 65 6c 6f 77 20 61 72 65 20 61 76 61 69 6c 61  below are availa
173b0 62 6c 65 20 62 79 20 64 65 66 61 75 6c 74 2e 20  ble by default. 
173c0 20 41 64 64 69 74 69 6f 6e 61 6c 0a 61 67 67 72   Additional.aggr
173d0 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 73 20  egate functions 
173e0 77 72 69 74 74 65 6e 20 69 6e 20 43 20 6d 61 79  written in C may
173f0 20 62 65 20 61 64 64 65 64 20 75 73 69 6e 67 20   be added using 
17400 74 68 65 20 0a 5b 73 71 6c 69 74 65 33 5f 63 72  the .[sqlite3_cr
17410 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 28 29 5d  eate_function()]
17420 3c 2f 61 3e 0a 41 50 49 2e 3c 2f 70 3e 0a 0a 3c  </a>.API.</p>..<
17430 70 3e 0a 5e 49 6e 20 61 6e 79 20 61 67 67 72 65  p>.^In any aggre
17440 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 20 74 68  gate function th
17450 61 74 20 74 61 6b 65 73 20 61 20 73 69 6e 67 6c  at takes a singl
17460 65 20 61 72 67 75 6d 65 6e 74 2c 20 74 68 61 74  e argument, that
17470 20 61 72 67 75 6d 65 6e 74 0a 63 61 6e 20 62 65   argument.can be
17480 20 70 72 65 63 65 64 65 64 20 62 79 20 74 68 65   preceded by the
17490 20 6b 65 79 77 6f 72 64 20 44 49 53 54 49 4e 43   keyword DISTINC
174a0 54 2e 20 20 5e 49 6e 20 73 75 63 68 20 63 61 73  T.  ^In such cas
174b0 65 73 2c 20 64 75 70 6c 69 63 61 74 65 0a 65 6c  es, duplicate.el
174c0 65 6d 65 6e 74 73 20 61 72 65 20 66 69 6c 74 65  ements are filte
174d0 72 65 64 20 62 65 66 6f 72 65 20 62 65 69 6e 67  red before being
174e0 20 70 61 73 73 65 64 20 69 6e 74 6f 20 74 68 65   passed into the
174f0 20 61 67 67 72 65 67 61 74 65 20 66 75 6e 63 74   aggregate funct
17500 69 6f 6e 2e 0a 5e 46 6f 72 20 65 78 61 6d 70 6c  ion..^For exampl
17510 65 2c 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20  e, the function 
17520 22 63 6f 75 6e 74 28 64 69 73 74 69 6e 63 74 20  "count(distinct 
17530 58 29 22 20 77 69 6c 6c 20 72 65 74 75 72 6e 20  X)" will return 
17540 74 68 65 20 6e 75 6d 62 65 72 0a 6f 66 20 64 69  the number.of di
17550 73 74 69 6e 63 74 20 76 61 6c 75 65 73 20 6f 66  stinct values of
17560 20 63 6f 6c 75 6d 6e 20 58 20 69 6e 73 74 65 61   column X instea
17570 64 20 6f 66 20 74 68 65 20 74 6f 74 61 6c 20 6e  d of the total n
17580 75 6d 62 65 72 20 6f 66 20 6e 6f 6e 2d 6e 75 6c  umber of non-nul
17590 6c 0a 76 61 6c 75 65 73 20 69 6e 20 63 6f 6c 75  l.values in colu
175a0 6d 6e 20 58 2e 0a 3c 2f 70 3e 0a 0a 3c 74 61 62  mn X..</p>..<tab
175b0 6c 65 20 62 6f 72 64 65 72 3d 30 20 63 65 6c 6c  le border=0 cell
175c0 70 61 64 64 69 6e 67 3d 31 30 3e 0a 3c 74 63 6c  padding=10>.<tcl
175d0 3e 0a 66 75 6e 63 64 65 66 20 7b 61 76 67 28 58  >.funcdef {avg(X
175e0 29 7d 20 7b 2a 61 76 67 20 7b 61 76 67 28 29 20  )} {*avg {avg() 
175f0 61 67 67 72 65 67 61 74 65 20 66 75 6e 63 74 69  aggregate functi
17600 6f 6e 7d 7d 20 7b 0a 20 20 5e 54 68 65 20 61 76  on}} {.  ^The av
17610 67 28 29 20 66 75 6e 63 74 69 6f 6e 0a 20 20 72  g() function.  r
17620 65 74 75 72 6e 73 20 74 68 65 20 61 76 65 72 61  eturns the avera
17630 67 65 20 76 61 6c 75 65 20 6f 66 20 61 6c 6c 20  ge value of all 
17640 6e 6f 6e 2d 4e 55 4c 4c 20 3c 69 3e 58 3c 2f 69  non-NULL <i>X</i
17650 3e 20 77 69 74 68 69 6e 20 61 0a 20 20 67 72 6f  > within a.  gro
17660 75 70 2e 20 20 5e 53 74 72 69 6e 67 20 61 6e 64  up.  ^String and
17670 20 42 4c 4f 42 20 76 61 6c 75 65 73 20 74 68 61   BLOB values tha
17680 74 20 64 6f 20 6e 6f 74 20 6c 6f 6f 6b 20 6c 69  t do not look li
17690 6b 65 20 6e 75 6d 62 65 72 73 20 61 72 65 0a 20  ke numbers are. 
176a0 20 69 6e 74 65 72 70 72 65 74 65 64 20 61 73 20   interpreted as 
176b0 30 2e 0a 20 20 5e 54 68 65 20 72 65 73 75 6c 74  0..  ^The result
176c0 20 6f 66 20 61 76 67 28 29 20 69 73 20 61 6c 77   of avg() is alw
176d0 61 79 73 20 61 20 66 6c 6f 61 74 69 6e 67 20 70  ays a floating p
176e0 6f 69 6e 74 20 76 61 6c 75 65 20 61 73 20 6c 6f  oint value as lo
176f0 6e 67 20 61 73 0a 20 20 61 74 20 74 68 65 72 65  ng as.  at there
17700 20 69 73 20 61 74 20 6c 65 61 73 74 20 6f 6e 65   is at least one
17710 20 6e 6f 6e 2d 4e 55 4c 4c 20 69 6e 70 75 74 20   non-NULL input 
17720 65 76 65 6e 20 69 66 20 61 6c 6c 0a 20 20 69 6e  even if all.  in
17730 70 75 74 73 20 61 72 65 20 69 6e 74 65 67 65 72  puts are integer
17740 73 2e 20 20 5e 54 68 65 20 72 65 73 75 6c 74 20  s.  ^The result 
17750 6f 66 20 61 76 67 28 29 20 69 73 20 4e 55 4c 4c  of avg() is NULL
17760 20 69 66 20 61 6e 64 20 6f 6e 6c 79 20 69 66 0a   if and only if.
17770 20 20 74 68 65 72 65 20 61 72 65 20 6e 6f 20 6e    there are no n
17780 6f 6e 2d 4e 55 4c 4c 20 69 6e 70 75 74 73 2e 20  on-NULL inputs. 
17790 20 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 63 6f   .}..funcdef {co
177a0 75 6e 74 28 58 29 20 63 6f 75 6e 74 28 2a 29 7d  unt(X) count(*)}
177b0 20 7b 2a 63 6f 75 6e 74 20 7b 63 6f 75 6e 74 28   {*count {count(
177c0 29 20 61 67 67 72 65 67 61 74 65 20 66 75 6e 63  ) aggregate func
177d0 74 69 6f 6e 7d 7d 20 7b 0a 20 20 5e 54 68 65 20  tion}} {.  ^The 
177e0 63 6f 75 6e 74 28 58 29 20 66 75 6e 63 74 69 6f  count(X) functio
177f0 6e 20 72 65 74 75 72 6e 73 0a 20 20 61 20 63 6f  n returns.  a co
17800 75 6e 74 20 6f 66 20 74 68 65 20 6e 75 6d 62 65  unt of the numbe
17810 72 20 6f 66 20 74 69 6d 65 73 0a 20 20 74 68 61  r of times.  tha
17820 74 20 3c 69 3e 58 3c 2f 69 3e 20 69 73 20 6e 6f  t <i>X</i> is no
17830 74 20 4e 55 4c 4c 20 69 6e 20 61 20 67 72 6f 75  t NULL in a grou
17840 70 2e 20 20 5e 54 68 65 20 63 6f 75 6e 74 28 2a  p.  ^The count(*
17850 29 20 66 75 6e 63 74 69 6f 6e 0a 20 20 28 77 69  ) function.  (wi
17860 74 68 20 6e 6f 20 61 72 67 75 6d 65 6e 74 73 29  th no arguments)
17870 20 72 65 74 75 72 6e 73 20 74 68 65 20 74 6f 74   returns the tot
17880 61 6c 20 6e 75 6d 62 65 72 20 6f 66 20 72 6f 77  al number of row
17890 73 20 69 6e 20 74 68 65 20 67 72 6f 75 70 2e 0a  s in the group..
178a0 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 67 72 6f 75  }..funcdef {grou
178b0 70 5f 63 6f 6e 63 61 74 28 58 29 20 67 72 6f 75  p_concat(X) grou
178c0 70 5f 63 6f 6e 63 61 74 28 58 2c 59 29 7d 20 7b  p_concat(X,Y)} {
178d0 0a 20 20 2a 67 72 6f 75 70 5f 63 6f 6e 63 61 74  .  *group_concat
178e0 20 7b 67 72 6f 75 70 5f 63 6f 6e 63 61 74 28 29   {group_concat()
178f0 20 61 67 67 72 65 67 61 74 65 20 66 75 6e 63 74   aggregate funct
17900 69 6f 6e 7d 0a 7d 20 7b 0a 20 20 5e 54 68 65 20  ion}.} {.  ^The 
17910 67 72 6f 75 70 5f 63 6f 6e 63 61 74 28 29 20 66  group_concat() f
17920 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 0a  unction returns.
17930 20 20 61 20 73 74 72 69 6e 67 20 77 68 69 63 68    a string which
17940 20 69 73 20 74 68 65 20 63 6f 6e 63 61 74 65 6e   is the concaten
17950 61 74 69 6f 6e 20 6f 66 0a 20 20 61 6c 6c 20 6e  ation of.  all n
17960 6f 6e 2d 4e 55 4c 4c 20 76 61 6c 75 65 73 20 6f  on-NULL values o
17970 66 20 3c 69 3e 58 3c 2f 69 3e 2e 20 20 5e 49 66  f <i>X</i>.  ^If
17980 20 70 61 72 61 6d 65 74 65 72 20 3c 69 3e 59 3c   parameter <i>Y<
17990 2f 69 3e 20 69 73 20 70 72 65 73 65 6e 74 20 74  /i> is present t
179a0 68 65 6e 0a 20 20 69 74 20 69 73 20 75 73 65 64  hen.  it is used
179b0 20 61 73 20 74 68 65 20 73 65 70 61 72 61 74 6f   as the separato
179c0 72 0a 20 20 62 65 74 77 65 65 6e 20 69 6e 73 74  r.  between inst
179d0 61 6e 63 65 73 20 6f 66 20 3c 69 3e 58 3c 2f 69  ances of <i>X</i
179e0 3e 2e 20 20 5e 41 20 63 6f 6d 6d 61 20 28 22 2c  >.  ^A comma (",
179f0 22 29 20 69 73 20 75 73 65 64 20 61 73 20 74 68  ") is used as th
17a00 65 20 73 65 70 61 72 61 74 6f 72 0a 20 20 69 66  e separator.  if
17a10 20 3c 69 3e 59 3c 2f 69 3e 20 69 73 20 6f 6d 69   <i>Y</i> is omi
17a20 74 74 65 64 2e 20 20 54 68 65 20 6f 72 64 65 72  tted.  The order
17a30 20 6f 66 20 74 68 65 20 63 6f 6e 63 61 74 65 6e   of the concaten
17a40 61 74 65 64 20 65 6c 65 6d 65 6e 74 73 20 69 73  ated elements is
17a50 0a 20 20 61 72 62 69 74 72 61 72 79 2e 0a 7d 0a  .  arbitrary..}.
17a60 0a 66 75 6e 63 64 65 66 20 7b 6d 61 78 28 58 29  .funcdef {max(X)
17a70 7d 20 7b 2a 6d 61 78 41 67 67 46 75 6e 63 20 2a  } {*maxAggFunc *
17a80 61 67 67 5f 6d 61 78 20 7b 6d 61 78 28 29 20 61  agg_max {max() a
17a90 67 67 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f  ggregate functio
17aa0 6e 7d 7d 20 7b 0a 20 20 5e 54 68 65 20 6d 61 78  n}} {.  ^The max
17ab0 28 29 20 61 67 67 72 65 67 61 74 65 20 66 75 6e  () aggregate fun
17ac0 63 74 69 6f 6e 0a 20 20 72 65 74 75 72 6e 73 20  ction.  returns 
17ad0 74 68 65 20 6d 61 78 69 6d 75 6d 20 76 61 6c 75  the maximum valu
17ae0 65 20 6f 66 20 61 6c 6c 20 76 61 6c 75 65 73 20  e of all values 
17af0 69 6e 20 74 68 65 20 67 72 6f 75 70 2e 0a 20 20  in the group..  
17b00 5e 54 68 65 20 6d 61 78 69 6d 75 6d 20 76 61 6c  ^The maximum val
17b10 75 65 20 69 73 20 74 68 65 20 76 61 6c 75 65 20  ue is the value 
17b20 74 68 61 74 20 77 6f 75 6c 64 20 62 65 20 72 65  that would be re
17b30 74 75 72 6e 65 64 20 6c 61 73 74 20 69 6e 20 61  turned last in a
17b40 6e 0a 20 20 4f 52 44 45 52 20 42 59 20 6f 6e 20  n.  ORDER BY on 
17b50 74 68 65 20 73 61 6d 65 20 63 6f 6c 75 6d 6e 2e  the same column.
17b60 20 20 5e 41 67 67 72 65 67 61 74 65 20 6d 61 78    ^Aggregate max
17b70 28 29 20 72 65 74 75 72 6e 73 20 4e 55 4c 4c 20  () returns NULL 
17b80 0a 20 20 69 66 20 61 6e 64 20 6f 6e 6c 79 20 69  .  if and only i
17b90 66 20 74 68 65 72 65 20 61 72 65 20 6e 6f 20 6e  f there are no n
17ba0 6f 6e 2d 4e 55 4c 4c 20 76 61 6c 75 65 73 20 69  on-NULL values i
17bb0 6e 20 74 68 65 20 67 72 6f 75 70 2e 0a 7d 0a 0a  n the group..}..
17bc0 66 75 6e 63 64 65 66 20 7b 6d 69 6e 28 58 29 7d  funcdef {min(X)}
17bd0 20 7b 2a 6d 69 6e 41 67 67 46 75 6e 63 20 2a 61   {*minAggFunc *a
17be0 67 67 5f 6d 69 6e 20 7b 6d 69 6e 28 29 20 61 67  gg_min {min() ag
17bf0 67 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e  gregate function
17c00 7d 7d 20 7b 0a 20 20 5e 54 68 65 20 6d 69 6e 28  }} {.  ^The min(
17c10 29 20 61 67 67 72 65 67 61 74 65 20 66 75 6e 63  ) aggregate func
17c20 74 69 6f 6e 0a 20 20 72 65 74 75 72 6e 73 20 74  tion.  returns t
17c30 68 65 20 6d 69 6e 69 6d 75 6d 20 6e 6f 6e 2d 4e  he minimum non-N
17c40 55 4c 4c 20 76 61 6c 75 65 20 6f 66 20 61 6c 6c  ULL value of all
17c50 20 76 61 6c 75 65 73 20 69 6e 20 74 68 65 20 67   values in the g
17c60 72 6f 75 70 2e 0a 20 20 5e 54 68 65 20 6d 69 6e  roup..  ^The min
17c70 69 6d 75 6d 20 76 61 6c 75 65 20 69 73 20 74 68  imum value is th
17c80 65 20 66 69 72 73 74 20 6e 6f 6e 2d 4e 55 4c 4c  e first non-NULL
17c90 20 76 61 6c 75 65 20 74 68 61 74 20 77 6f 75 6c   value that woul
17ca0 64 20 61 70 70 65 61 72 0a 20 20 69 6e 20 61 6e  d appear.  in an
17cb0 20 4f 52 44 45 52 20 42 59 20 6f 66 20 74 68 65   ORDER BY of the
17cc0 20 63 6f 6c 75 6d 6e 2e 0a 20 20 5e 41 67 67 72   column..  ^Aggr
17cd0 65 67 61 74 65 20 6d 69 6e 28 29 20 72 65 74 75  egate min() retu
17ce0 72 6e 73 20 4e 55 4c 4c 20 69 66 20 61 6e 64 20  rns NULL if and 
17cf0 6f 6e 6c 79 20 69 66 20 74 68 65 72 65 20 61 72  only if there ar
17d00 65 20 6e 6f 20 6e 6f 6e 2d 4e 55 4c 4c 0a 20 20  e no non-NULL.  
17d10 76 61 6c 75 65 73 20 69 6e 20 74 68 65 20 67 72  values in the gr
17d20 6f 75 70 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20  oup..}..funcdef 
17d30 7b 73 75 6d 28 58 29 20 74 6f 74 61 6c 28 58 29  {sum(X) total(X)
17d40 7d 20 7b 0a 20 20 2a 73 75 6d 46 75 6e 63 20 2a  } {.  *sumFunc *
17d50 73 75 6d 20 2a 74 6f 74 61 6c 0a 20 20 7b 73 75  sum *total.  {su
17d60 6d 28 29 20 61 67 67 72 65 67 61 74 65 20 66 75  m() aggregate fu
17d70 6e 63 74 69 6f 6e 7d 0a 20 20 7b 74 6f 74 61 6c  nction}.  {total
17d80 28 29 20 61 67 67 72 65 67 61 74 65 20 66 75 6e  () aggregate fun
17d90 63 74 69 6f 6e 7d 0a 7d 20 7b 0a 20 20 5e 54 68  ction}.} {.  ^Th
17da0 65 20 73 75 6d 28 29 20 61 6e 64 20 74 6f 74 61  e sum() and tota
17db0 6c 28 29 20 61 67 67 72 65 67 61 74 65 20 66 75  l() aggregate fu
17dc0 6e 63 74 69 6f 6e 73 0a 20 20 72 65 74 75 72 6e  nctions.  return
17dd0 20 73 75 6d 20 6f 66 20 61 6c 6c 20 6e 6f 6e 2d   sum of all non-
17de0 4e 55 4c 4c 20 76 61 6c 75 65 73 20 69 6e 20 74  NULL values in t
17df0 68 65 20 67 72 6f 75 70 2e 0a 20 20 5e 49 66 20  he group..  ^If 
17e00 74 68 65 72 65 20 61 72 65 20 6e 6f 20 6e 6f 6e  there are no non
17e10 2d 4e 55 4c 4c 20 69 6e 70 75 74 20 72 6f 77 73  -NULL input rows
17e20 20 74 68 65 6e 20 73 75 6d 28 29 20 72 65 74 75   then sum() retu
17e30 72 6e 73 0a 20 20 4e 55 4c 4c 20 62 75 74 20 74  rns.  NULL but t
17e40 6f 74 61 6c 28 29 20 72 65 74 75 72 6e 73 20 30  otal() returns 0
17e50 2e 30 2e 0a 20 20 4e 55 4c 4c 20 69 73 20 6e 6f  .0..  NULL is no
17e60 74 20 6e 6f 72 6d 61 6c 6c 79 20 61 20 68 65 6c  t normally a hel
17e70 70 66 75 6c 20 72 65 73 75 6c 74 20 66 6f 72 20  pful result for 
17e80 74 68 65 20 73 75 6d 20 6f 66 20 6e 6f 20 72 6f  the sum of no ro
17e90 77 73 0a 20 20 62 75 74 20 74 68 65 20 53 51 4c  ws.  but the SQL
17ea0 20 73 74 61 6e 64 61 72 64 20 72 65 71 75 69 72   standard requir
17eb0 65 73 20 69 74 20 61 6e 64 20 6d 6f 73 74 20 6f  es it and most o
17ec0 74 68 65 72 0a 20 20 53 51 4c 20 64 61 74 61 62  ther.  SQL datab
17ed0 61 73 65 20 65 6e 67 69 6e 65 73 20 69 6d 70 6c  ase engines impl
17ee0 65 6d 65 6e 74 20 73 75 6d 28 29 20 74 68 61 74  ement sum() that
17ef0 20 77 61 79 20 73 6f 20 53 51 4c 69 74 65 20 64   way so SQLite d
17f00 6f 65 73 20 69 74 20 69 6e 20 74 68 65 0a 20 20  oes it in the.  
17f10 73 61 6d 65 20 77 61 79 20 69 6e 20 6f 72 64 65  same way in orde
17f20 72 20 74 6f 20 62 65 20 63 6f 6d 70 61 74 69 62  r to be compatib
17f30 6c 65 2e 20 20 20 54 68 65 20 6e 6f 6e 2d 73 74  le.   The non-st
17f40 61 6e 64 61 72 64 20 74 6f 74 61 6c 28 29 20 66  andard total() f
17f50 75 6e 63 74 69 6f 6e 0a 20 20 69 73 20 70 72 6f  unction.  is pro
17f60 76 69 64 65 64 20 61 73 20 61 20 63 6f 6e 76 65  vided as a conve
17f70 6e 69 65 6e 74 20 77 61 79 20 74 6f 20 77 6f 72  nient way to wor
17f80 6b 20 61 72 6f 75 6e 64 20 74 68 69 73 20 64 65  k around this de
17f90 73 69 67 6e 20 70 72 6f 62 6c 65 6d 0a 20 20 69  sign problem.  i
17fa0 6e 20 74 68 65 20 53 51 4c 20 6c 61 6e 67 75 61  n the SQL langua
17fb0 67 65 2e 3c 2f 70 3e 0a 0a 20 20 3c 70 3e 5e 54  ge.</p>..  <p>^T
17fc0 68 65 20 72 65 73 75 6c 74 20 6f 66 20 74 6f 74  he result of tot
17fd0 61 6c 28 29 20 69 73 20 61 6c 77 61 79 73 20 61  al() is always a
17fe0 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20   floating point 
17ff0 76 61 6c 75 65 2e 0a 20 20 5e 54 68 65 20 72 65  value..  ^The re
18000 73 75 6c 74 20 6f 66 20 73 75 6d 28 29 20 69 73  sult of sum() is
18010 20 61 6e 20 69 6e 74 65 67 65 72 20 76 61 6c 75   an integer valu
18020 65 20 69 66 20 61 6c 6c 20 6e 6f 6e 2d 4e 55 4c  e if all non-NUL
18030 4c 20 69 6e 70 75 74 73 20 61 72 65 20 69 6e 74  L inputs are int
18040 65 67 65 72 73 2e 0a 20 20 5e 49 66 20 61 6e 79  egers..  ^If any
18050 20 69 6e 70 75 74 20 74 6f 20 73 75 6d 28 29 20   input to sum() 
18060 69 73 20 6e 65 69 74 68 65 72 20 61 6e 20 69 6e  is neither an in
18070 74 65 67 65 72 20 6f 72 20 61 20 4e 55 4c 4c 0a  teger or a NULL.
18080 20 20 74 68 65 6e 20 73 75 6d 28 29 20 72 65 74    then sum() ret
18090 75 72 6e 73 20 61 20 66 6c 6f 61 74 69 6e 67 20  urns a floating 
180a0 70 6f 69 6e 74 20 76 61 6c 75 65 0a 20 20 77 68  point value.  wh
180b0 69 63 68 20 6d 69 67 68 74 20 62 65 20 61 6e 20  ich might be an 
180c0 61 70 70 72 6f 78 69 6d 61 74 69 6f 6e 20 74 6f  approximation to
180d0 20 74 68 65 20 74 72 75 65 20 73 75 6d 2e 3c 2f   the true sum.</
180e0 70 3e 0a 0a 20 20 3c 70 3e 5e 53 75 6d 28 29 20  p>..  <p>^Sum() 
180f0 77 69 6c 6c 20 74 68 72 6f 77 20 61 6e 20 22 69  will throw an "i
18100 6e 74 65 67 65 72 20 6f 76 65 72 66 6c 6f 77 22  nteger overflow"
18110 20 65 78 63 65 70 74 69 6f 6e 20 69 66 20 61 6c   exception if al
18120 6c 20 69 6e 70 75 74 73 0a 20 20 61 72 65 20 69  l inputs.  are i
18130 6e 74 65 67 65 72 73 20 6f 72 20 4e 55 4c 4c 0a  ntegers or NULL.
18140 20 20 61 6e 64 20 61 6e 20 69 6e 74 65 67 65 72    and an integer
18150 20 6f 76 65 72 66 6c 6f 77 20 6f 63 63 75 72 73   overflow occurs
18160 20 61 74 20 61 6e 79 20 70 6f 69 6e 74 20 64 75   at any point du
18170 72 69 6e 67 20 74 68 65 20 63 6f 6d 70 75 74 61  ring the computa
18180 74 69 6f 6e 2e 0a 20 20 5e 54 6f 74 61 6c 28 29  tion..  ^Total()
18190 20 6e 65 76 65 72 20 74 68 72 6f 77 73 20 61 6e   never throws an
181a0 20 69 6e 74 65 67 65 72 20 6f 76 65 72 66 6c 6f   integer overflo
181b0 77 2e 0a 7d 0a 3c 2f 74 63 6c 3e 0a 3c 2f 74 61  w..}.</tcl>.</ta
181c0 62 6c 65 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23  ble>..<tcl>.####
181d0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
181e0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
181f0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18200 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18210 23 23 23 23 23 23 23 23 23 23 0a 53 65 63 74 69  ##########.Secti
18220 6f 6e 20 49 4e 53 45 52 54 20 69 6e 73 65 72 74  on INSERT insert
18230 20 7b 49 4e 53 45 52 54 20 2a 49 4e 53 45 52 54   {INSERT *INSERT
18240 73 7d 0a 0a 42 75 62 62 6c 65 44 69 61 67 72 61  s}..BubbleDiagra
18250 6d 20 69 6e 73 65 72 74 2d 73 74 6d 74 20 31 0a  m insert-stmt 1.
18260 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20 49  </tcl>..<p>The I
18270 4e 53 45 52 54 20 73 74 61 74 65 6d 65 6e 74 20  NSERT statement 
18280 63 6f 6d 65 73 20 69 6e 20 74 68 72 65 65 20 62  comes in three b
18290 61 73 69 63 20 66 6f 72 6d 73 2e 20 20 5e 54 68  asic forms.  ^Th
182a0 65 20 66 69 72 73 74 20 66 6f 72 6d 0a 28 77 69  e first form.(wi
182b0 74 68 20 74 68 65 20 22 56 41 4c 55 45 53 22 20  th the "VALUES" 
182c0 6b 65 79 77 6f 72 64 29 20 63 72 65 61 74 65 73  keyword) creates
182d0 20 61 20 73 69 6e 67 6c 65 20 6e 65 77 20 72 6f   a single new ro
182e0 77 20 69 6e 20 61 6e 20 65 78 69 73 74 69 6e 67  w in an existing
182f0 20 74 61 62 6c 65 2e 0a 5e 49 66 20 6e 6f 20 63   table..^If no c
18300 6f 6c 75 6d 6e 2d 6c 69 73 74 20 69 73 20 73 70  olumn-list is sp
18310 65 63 69 66 69 65 64 20 74 68 65 6e 20 74 68 65  ecified then the
18320 20 6e 75 6d 62 65 72 20 6f 66 20 76 61 6c 75 65   number of value
18330 73 20 6d 75 73 74 0a 62 65 20 74 68 65 20 73 61  s must.be the sa
18340 6d 65 20 61 73 20 74 68 65 20 6e 75 6d 62 65 72  me as the number
18350 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74   of columns in t
18360 68 65 20 74 61 62 6c 65 2e 20 20 5e 49 66 20 61  he table.  ^If a
18370 20 63 6f 6c 75 6d 6e 2d 6c 69 73 74 0a 69 73 20   column-list.is 
18380 73 70 65 63 69 66 69 65 64 2c 20 74 68 65 6e 20  specified, then 
18390 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 76 61  the number of va
183a0 6c 75 65 73 20 6d 75 73 74 20 6d 61 74 63 68 20  lues must match 
183b0 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 0a 73 70  the number of.sp
183c0 65 63 69 66 69 65 64 20 63 6f 6c 75 6d 6e 73 2e  ecified columns.
183d0 20 20 5e 43 6f 6c 75 6d 6e 73 20 6f 66 20 74 68    ^Columns of th
183e0 65 20 74 61 62 6c 65 20 74 68 61 74 20 64 6f 20  e table that do 
183f0 6e 6f 74 20 61 70 70 65 61 72 20 69 6e 20 74 68  not appear in th
18400 65 0a 63 6f 6c 75 6d 6e 20 6c 69 73 74 20 61 72  e.column list ar
18410 65 20 66 69 6c 6c 65 64 20 77 69 74 68 20 74 68  e filled with th
18420 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 2c  e default value,
18430 20 6f 72 20 77 69 74 68 20 4e 55 4c 4c 20 69 66   or with NULL if
18440 20 6e 6f 0a 64 65 66 61 75 6c 74 20 76 61 6c 75   no.default valu
18450 65 20 69 73 20 73 70 65 63 69 66 69 65 64 2e 0a  e is specified..
18460 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20 73 65  </p>..<p>^The se
18470 63 6f 6e 64 20 66 6f 72 6d 20 6f 66 20 74 68 65  cond form of the
18480 20 49 4e 53 45 52 54 20 73 74 61 74 65 6d 65 6e   INSERT statemen
18490 74 20 74 61 6b 65 73 20 69 74 73 20 64 61 74 61  t takes its data
184a0 20 66 72 6f 6d 20 61 0a 53 45 4c 45 43 54 20 73   from a.SELECT s
184b0 74 61 74 65 6d 65 6e 74 2e 20 20 5e 54 68 65 20  tatement.  ^The 
184c0 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e  number of column
184d0 73 20 69 6e 20 74 68 65 20 72 65 73 75 6c 74 20  s in the result 
184e0 6f 66 20 74 68 65 0a 53 45 4c 45 43 54 20 6d 75  of the.SELECT mu
184f0 73 74 20 65 78 61 63 74 6c 79 20 6d 61 74 63 68  st exactly match
18500 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 63   the number of c
18510 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65 20 74 61  olumns in the ta
18520 62 6c 65 20 69 66 0a 6e 6f 20 63 6f 6c 75 6d 6e  ble if.no column
18530 20 6c 69 73 74 20 69 73 20 73 70 65 63 69 66 69   list is specifi
18540 65 64 2c 20 6f 72 20 69 74 20 6d 75 73 74 20 6d  ed, or it must m
18550 61 74 63 68 20 74 68 65 20 6e 75 6d 62 65 72 20  atch the number 
18560 6f 66 20 63 6f 6c 75 6d 6e 73 0a 6e 61 6d 65 64  of columns.named
18570 20 69 6e 20 74 68 65 20 63 6f 6c 75 6d 6e 20 6c   in the column l
18580 69 73 74 2e 20 20 5e 41 20 6e 65 77 20 65 6e 74  ist.  ^A new ent
18590 72 79 20 69 73 20 6d 61 64 65 20 69 6e 20 74 68  ry is made in th
185a0 65 20 74 61 62 6c 65 0a 66 6f 72 20 65 76 65 72  e table.for ever
185b0 79 20 72 6f 77 20 6f 66 20 74 68 65 20 53 45 4c  y row of the SEL
185c0 45 43 54 20 72 65 73 75 6c 74 2e 20 20 5e 54 68  ECT result.  ^Th
185d0 65 20 53 45 4c 45 43 54 20 6d 61 79 20 62 65 20  e SELECT may be 
185e0 73 69 6d 70 6c 65 0a 6f 72 20 63 6f 6d 70 6f 75  simple.or compou
185f0 6e 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65  nd.</p>..<p>^The
18600 20 74 68 69 72 64 20 66 6f 72 6d 20 6f 66 20 61   third form of a
18610 6e 20 49 4e 53 45 52 54 20 73 74 61 74 65 6d 65  n INSERT stateme
18620 6e 74 20 69 73 20 77 69 74 68 20 44 45 46 41 55  nt is with DEFAU
18630 4c 54 20 56 41 4c 55 45 53 2e 0a 5e 28 54 68 65  LT VALUES..^(The
18640 20 49 4e 53 45 52 54 20 2e 2e 2e 20 44 45 46 41   INSERT ... DEFA
18650 55 4c 54 20 56 41 4c 55 45 53 20 73 74 61 74 65  ULT VALUES state
18660 6d 65 6e 74 20 73 69 6d 70 6c 79 20 63 72 65 61  ment simply crea
18670 74 65 73 20 61 20 73 69 6e 67 6c 65 20 6e 65 77  tes a single new
18680 0a 72 6f 77 20 69 6e 20 74 68 65 20 74 61 62 6c  .row in the tabl
18690 65 20 69 6e 20 77 68 69 63 68 20 65 61 63 68 20  e in which each 
186a0 63 6f 6c 75 6d 6e 20 69 73 20 66 69 6c 6c 65 64  column is filled
186b0 20 77 69 74 68 20 69 74 73 20 64 65 66 61 75 6c   with its defaul
186c0 74 20 76 61 6c 75 65 2e 29 5e 3c 2f 70 3e 0a 0a  t value.)^</p>..
186d0 3c 70 3e 5e 54 68 65 20 6f 70 74 69 6f 6e 61 6c  <p>^The optional
186e0 20 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65   conflict-clause
186f0 20 61 6c 6c 6f 77 73 20 74 68 65 20 73 70 65 63   allows the spec
18700 69 66 69 63 61 74 69 6f 6e 20 6f 66 20 61 6e 20  ification of an 
18710 61 6c 74 65 72 6e 61 74 69 76 65 0a 63 6f 6e 73  alternative.cons
18720 74 72 61 69 6e 74 20 63 6f 6e 66 6c 69 63 74 20  traint conflict 
18730 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72  resolution algor
18740 69 74 68 6d 20 74 6f 20 75 73 65 20 64 75 72 69  ithm to use duri
18750 6e 67 20 74 68 69 73 20 6f 6e 65 20 49 4e 53 45  ng this one INSE
18760 52 54 20 63 6f 6d 6d 61 6e 64 2e 0a 53 65 65 20  RT command..See 
18770 74 68 65 20 73 65 63 74 69 6f 6e 20 74 69 74 6c  the section titl
18780 65 64 0a 5b 4f 4e 20 43 4f 4e 46 4c 49 43 54 5d  ed.[ON CONFLICT]
18790 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20   for additional 
187a0 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a 5e 46 6f  information..^Fo
187b0 72 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20  r compatibility 
187c0 77 69 74 68 20 4d 79 53 51 4c 2c 20 74 68 65 20  with MySQL, the 
187d0 70 61 72 73 65 72 20 61 6c 6c 6f 77 73 20 74 68  parser allows th
187e0 65 20 75 73 65 20 6f 66 20 74 68 65 0a 73 69 6e  e use of the.sin
187f0 67 6c 65 20 6b 65 79 77 6f 72 64 20 3c 61 20 68  gle keyword <a h
18800 72 65 66 3d 22 6c 61 6e 67 5f 72 65 70 6c 61 63  ref="lang_replac
18810 65 2e 68 74 6d 6c 22 3e 52 45 50 4c 41 43 45 3c  e.html">REPLACE<
18820 2f 61 3e 20 61 73 20 61 6e 20 0a 61 6c 69 61 73  /a> as an .alias
18830 20 66 6f 72 20 22 49 4e 53 45 52 54 20 4f 52 20   for "INSERT OR 
18840 52 45 50 4c 41 43 45 22 2e 0a 3c 2f 70 3e 0a 0a  REPLACE"..</p>..
18850 3c 70 3e 5e 28 54 68 65 20 6f 70 74 69 6f 6e 61  <p>^(The optiona
18860 6c 20 22 3c 69 3e 64 61 74 61 62 61 73 65 2d 6e  l "<i>database-n
18870 61 6d 65 3c 2f 69 3e 3c 62 3e 2e 3c 2f 62 3e 22  ame</i><b>.</b>"
18880 20 70 72 65 66 69 78 20 6f 6e 20 74 68 65 20 3c   prefix on the <
18890 69 3e 74 61 62 6c 65 2d 6e 61 6d 65 3c 2f 69 3e  i>table-name</i>
188a0 0a 69 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20  .is support for 
188b0 74 6f 70 2d 6c 65 76 65 6c 20 49 4e 53 45 52 54  top-level INSERT
188c0 20 73 74 61 74 65 6d 65 6e 74 73 20 6f 6e 6c 79   statements only
188d0 2e 29 5e 20 20 5e 54 68 65 20 74 61 62 6c 65 20  .)^  ^The table 
188e0 6e 61 6d 65 20 6d 75 73 74 20 62 65 0a 75 6e 71  name must be.unq
188f0 75 61 6c 69 66 69 65 64 20 66 6f 72 20 49 4e 53  ualified for INS
18900 45 52 54 20 73 74 61 74 65 6d 65 6e 74 73 20 74  ERT statements t
18910 68 61 74 20 6f 63 63 75 72 20 77 69 74 68 69 6e  hat occur within
18920 20 5b 43 52 45 41 54 45 20 54 52 49 47 47 45 52   [CREATE TRIGGER
18930 5d 20 73 74 61 74 65 6d 65 6e 74 73 2e 0a 5e 53  ] statements..^S
18940 69 6d 69 6c 61 72 6c 79 2c 20 74 68 65 20 22 44  imilarly, the "D
18950 45 46 41 55 4c 54 20 56 41 4c 55 45 53 22 20 66  EFAULT VALUES" f
18960 6f 72 6d 20 6f 66 20 74 68 65 20 49 4e 53 45 52  orm of the INSER
18970 54 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 73  T statement is s
18980 75 70 70 6f 72 74 65 64 20 66 6f 72 0a 74 6f 70  upported for.top
18990 2d 6c 65 76 65 6c 20 49 4e 53 45 52 54 20 73 74  -level INSERT st
189a0 61 74 65 6d 65 6e 74 73 20 6f 6e 6c 79 20 61 6e  atements only an
189b0 64 20 6e 6f 74 20 66 6f 72 20 49 4e 53 45 52 54  d not for INSERT
189c0 20 73 74 61 74 65 6d 65 6e 74 73 20 77 69 74 68   statements with
189d0 69 6e 0a 74 72 69 67 67 65 72 73 2e 0a 3c 70 3e  in.triggers..<p>
189e0 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23  ..<tcl>.########
189f0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18a00 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18a10 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18a20 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18a30 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b  ######.Section {
18a40 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 63 6c 61 75  ON CONFLICT clau
18a50 73 65 7d 20 63 6f 6e 66 6c 69 63 74 20 7b 7b 63  se} conflict {{c
18a60 6f 6e 66 6c 69 63 74 20 63 6c 61 75 73 65 7d 20  onflict clause} 
18a70 7b 4f 4e 20 43 4f 4e 46 4c 49 43 54 7d 7d 0a 0a  {ON CONFLICT}}..
18a80 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 63 6f  BubbleDiagram co
18a90 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65 0a 3c 2f  nflict-clause.</
18aa0 74 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20 4f 4e 20  tcl>..<p>The ON 
18ab0 43 4f 4e 46 4c 49 43 54 20 63 6c 61 75 73 65 20  CONFLICT clause 
18ac0 69 73 20 6e 6f 74 20 61 20 73 65 70 61 72 61 74  is not a separat
18ad0 65 20 53 51 4c 20 63 6f 6d 6d 61 6e 64 2e 20 20  e SQL command.  
18ae0 49 74 20 69 73 20 61 0a 6e 6f 6e 2d 73 74 61 6e  It is a.non-stan
18af0 64 61 72 64 20 63 6c 61 75 73 65 20 74 68 61 74  dard clause that
18b00 20 63 61 6e 20 61 70 70 65 61 72 20 69 6e 20 6d   can appear in m
18b10 61 6e 79 20 6f 74 68 65 72 20 53 51 4c 20 63 6f  any other SQL co
18b20 6d 6d 61 6e 64 73 2e 0a 49 74 20 69 73 20 67 69  mmands..It is gi
18b30 76 65 6e 20 69 74 73 20 6f 77 6e 20 73 65 63 74  ven its own sect
18b40 69 6f 6e 20 69 6e 20 74 68 69 73 20 64 6f 63 75  ion in this docu
18b50 6d 65 6e 74 20 62 65 63 61 75 73 65 20 69 74 20  ment because it 
18b60 69 73 20 6e 6f 74 0a 70 61 72 74 20 6f 66 20 73  is not.part of s
18b70 74 61 6e 64 61 72 64 20 53 51 4c 20 61 6e 64 20  tandard SQL and 
18b80 74 68 65 72 65 66 6f 72 65 20 6d 69 67 68 74 20  therefore might 
18b90 6e 6f 74 20 62 65 20 66 61 6d 69 6c 69 61 72 2e  not be familiar.
18ba0 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20 73 79  </p>..<p>^The sy
18bb0 6e 74 61 78 20 66 6f 72 20 74 68 65 20 4f 4e 20  ntax for the ON 
18bc0 43 4f 4e 46 4c 49 43 54 20 63 6c 61 75 73 65 20  CONFLICT clause 
18bd0 69 73 20 61 73 20 73 68 6f 77 6e 20 61 62 6f 76  is as shown abov
18be0 65 20 66 6f 72 0a 74 68 65 20 43 52 45 41 54 45  e for.the CREATE
18bf0 20 54 41 42 4c 45 20 63 6f 6d 6d 61 6e 64 2e 20   TABLE command. 
18c00 20 5e 46 6f 72 20 74 68 65 20 49 4e 53 45 52 54   ^For the INSERT
18c10 20 61 6e 64 0a 55 50 44 41 54 45 20 63 6f 6d 6d   and.UPDATE comm
18c20 61 6e 64 73 2c 20 74 68 65 20 6b 65 79 77 6f 72  ands, the keywor
18c30 64 73 20 22 4f 4e 20 43 4f 4e 46 4c 49 43 54 22  ds "ON CONFLICT"
18c40 20 61 72 65 20 72 65 70 6c 61 63 65 64 20 62 79   are replaced by
18c50 20 22 4f 52 22 20 73 6f 20 74 68 61 74 0a 74 68   "OR" so that.th
18c60 65 20 73 79 6e 74 61 78 20 72 65 61 64 73 20 6d  e syntax reads m
18c70 6f 72 65 20 6e 61 74 75 72 61 6c 6c 79 2e 20 20  ore naturally.  
18c80 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 69 6e 73  For example, ins
18c90 74 65 61 64 20 6f 66 0a 22 49 4e 53 45 52 54 20  tead of."INSERT 
18ca0 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 49 47 4e 4f  ON CONFLICT IGNO
18cb0 52 45 22 20 77 65 20 68 61 76 65 20 22 49 4e 53  RE" we have "INS
18cc0 45 52 54 20 4f 52 20 49 47 4e 4f 52 45 22 2e 0a  ERT OR IGNORE"..
18cd0 54 68 65 20 6b 65 79 77 6f 72 64 73 20 63 68 61  The keywords cha
18ce0 6e 67 65 20 62 75 74 20 74 68 65 20 6d 65 61 6e  nge but the mean
18cf0 69 6e 67 20 6f 66 20 74 68 65 20 63 6c 61 75 73  ing of the claus
18d00 65 20 69 73 20 74 68 65 20 73 61 6d 65 0a 65 69  e is the same.ei
18d10 74 68 65 72 20 77 61 79 2e 3c 2f 70 3e 0a 0a 3c  ther way.</p>..<
18d20 70 3e 54 68 65 20 4f 4e 20 43 4f 4e 46 4c 49 43  p>The ON CONFLIC
18d30 54 20 63 6c 61 75 73 65 20 61 70 70 6c 69 65 73  T clause applies
18d40 20 74 6f 20 55 4e 49 51 55 45 2c 20 4e 4f 54 20   to UNIQUE, NOT 
18d50 4e 55 4c 4c 2c 20 61 6e 64 20 43 48 45 43 4b 0a  NULL, and CHECK.
18d60 63 6f 6e 73 74 72 61 69 6e 74 73 20 28 61 6e 64  constraints (and
18d70 20 74 6f 20 50 52 49 4d 41 52 59 20 4b 45 59 20   to PRIMARY KEY 
18d80 63 6f 6e 73 74 72 61 69 6e 74 73 20 77 68 69 63  constraints whic
18d90 68 20 66 6f 72 20 74 68 65 20 70 75 72 70 6f 73  h for the purpos
18da0 65 73 20 0a 6f 66 20 74 68 69 73 20 73 65 63 74  es .of this sect
18db0 69 6f 6e 20 61 72 65 20 74 68 65 20 73 61 6d 65  ion are the same
18dc0 20 74 68 69 6e 67 20 61 73 20 55 4e 49 51 55 45   thing as UNIQUE
18dd0 20 63 6f 6e 73 74 72 61 69 6e 74 73 29 2e 0a 54   constraints)..T
18de0 68 65 20 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 61  he ON CONFLICT a
18df0 6c 67 6f 72 69 74 68 6d 20 64 6f 65 73 20 6e 6f  lgorithm does no
18e00 74 0a 61 70 70 6c 79 20 74 6f 20 5b 46 4f 52 45  t.apply to [FORE
18e10 49 47 4e 20 4b 45 59 20 63 6f 6e 73 74 72 61 69  IGN KEY constrai
18e20 6e 74 73 5d 2e 0a 54 68 65 72 65 20 61 72 65 20  nts]..There are 
18e30 66 69 76 65 20 63 6f 6e 66 6c 69 63 74 20 72 65  five conflict re
18e40 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74  solution algorit
18e50 68 6d 20 63 68 6f 69 63 65 73 3a 0a 52 4f 4c 4c  hm choices:.ROLL
18e60 42 41 43 4b 2c 20 41 42 4f 52 54 2c 20 46 41 49  BACK, ABORT, FAI
18e70 4c 2c 20 49 47 4e 4f 52 45 2c 20 61 6e 64 20 52  L, IGNORE, and R
18e80 45 50 4c 41 43 45 2e 0a 5e 54 68 65 20 64 65 66  EPLACE..^The def
18e90 61 75 6c 74 20 63 6f 6e 66 6c 69 63 74 20 72 65  ault conflict re
18ea0 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74  solution algorit
18eb0 68 6d 20 69 73 20 41 42 4f 52 54 2e 20 20 54 68  hm is ABORT.  Th
18ec0 69 73 0a 69 73 20 77 68 61 74 20 74 68 65 79 20  is.is what they 
18ed0 6d 65 61 6e 3a 3c 2f 70 3e 0a 0a 3c 64 6c 3e 0a  mean:</p>..<dl>.
18ee0 3c 64 74 3e 3c 62 3e 52 4f 4c 4c 42 41 43 4b 3c  <dt><b>ROLLBACK<
18ef0 2f 62 3e 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e  /b></dt>.<dd><p>
18f00 20 5e 57 68 65 6e 20 61 6e 20 61 70 70 6c 69 63   ^When an applic
18f10 61 62 6c 65 20 63 6f 6e 73 74 72 61 69 6e 74 20  able constraint 
18f20 76 69 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72 73  violation occurs
18f30 2c 20 74 68 65 20 52 4f 4c 4c 42 41 43 4b 0a 72  , the ROLLBACK.r
18f40 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69  esolution algori
18f50 74 68 6d 20 61 62 6f 72 74 73 20 74 68 65 20 63  thm aborts the c
18f60 75 72 72 65 6e 74 20 53 51 4c 20 73 74 61 74 65  urrent SQL state
18f70 6d 65 6e 74 20 77 69 74 68 0a 61 6e 20 53 51 4c  ment with.an SQL
18f80 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 20 65  ITE_CONSTRAINT e
18f90 72 72 6f 72 20 61 6e 64 20 72 6f 6c 6c 73 20 62  rror and rolls b
18fa0 61 63 6b 20 74 68 65 20 63 75 72 72 65 6e 74 20  ack the current 
18fb0 74 72 61 6e 73 61 63 74 69 6f 6e 2e 0a 5e 49 66  transaction..^If
18fc0 20 6e 6f 20 74 72 61 6e 73 61 63 74 69 6f 6e 20   no transaction 
18fd0 69 73 0a 61 63 74 69 76 65 20 28 6f 74 68 65 72  is.active (other
18fe0 20 74 68 61 6e 20 74 68 65 20 69 6d 70 6c 69 65   than the implie
18ff0 64 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 74 68  d transaction th
19000 61 74 20 69 73 20 63 72 65 61 74 65 64 20 6f 6e  at is created on
19010 20 65 76 65 72 79 0a 63 6f 6d 6d 61 6e 64 29 20   every.command) 
19020 74 68 65 6e 20 74 68 65 20 52 4f 4c 4c 42 41 43  then the ROLLBAC
19030 4b 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67  K resolution alg
19040 6f 72 69 74 68 6d 20 77 6f 72 6b 73 20 74 68 65  orithm works the
19050 20 73 61 6d 65 20 61 73 20 74 68 65 0a 41 42 4f   same as the.ABO
19060 52 54 20 61 6c 67 6f 72 69 74 68 6d 2e 3c 2f 70  RT algorithm.</p
19070 3e 3c 2f 64 64 3e 0a 0a 3c 64 74 3e 3c 62 3e 41  ></dd>..<dt><b>A
19080 42 4f 52 54 3c 2f 62 3e 3c 2f 64 74 3e 0a 3c 64  BORT</b></dt>.<d
19090 64 3e 3c 70 3e 20 5e 57 68 65 6e 20 61 6e 20 61  d><p> ^When an a
190a0 70 70 6c 69 63 61 62 6c 65 20 63 6f 6e 73 74 72  pplicable constr
190b0 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 6f  aint violation o
190c0 63 63 75 72 73 2c 20 74 68 65 20 41 42 4f 52 54  ccurs, the ABORT
190d0 0a 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f  .resolution algo
190e0 72 69 74 68 6d 20 61 62 6f 72 74 73 20 74 68 65  rithm aborts the
190f0 20 63 75 72 72 65 6e 74 20 53 51 4c 20 73 74 61   current SQL sta
19100 74 65 6d 65 6e 74 0a 77 69 74 68 20 61 6e 20 53  tement.with an S
19110 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49 54 20  QLITE_CONSTRAIT 
19120 65 72 72 6f 72 20 61 6e 64 20 62 61 63 6b 73 20  error and backs 
19130 6f 75 74 20 61 6e 79 20 63 68 61 6e 67 65 73 0a  out any changes.
19140 6d 61 64 65 20 62 79 20 74 68 65 20 63 75 72 72  made by the curr
19150 65 6e 74 20 53 51 4c 20 73 74 61 74 65 6d 65 6e  ent SQL statemen
19160 74 3b 20 62 75 74 20 63 68 61 6e 67 65 73 20 63  t; but changes c
19170 61 75 73 65 64 0a 62 79 20 70 72 69 6f 72 20 53  aused.by prior S
19180 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 20 77 69  QL statements wi
19190 74 68 69 6e 20 74 68 65 20 73 61 6d 65 20 74 72  thin the same tr
191a0 61 6e 73 61 63 74 69 6f 6e 20 61 72 65 20 70 72  ansaction are pr
191b0 65 73 65 72 76 65 64 20 61 6e 64 20 74 68 65 0a  eserved and the.
191c0 74 72 61 6e 73 61 63 74 69 6f 6e 20 72 65 6d 61  transaction rema
191d0 69 6e 73 20 61 63 74 69 76 65 2e 0a 54 68 69 73  ins active..This
191e0 20 69 73 20 74 68 65 20 64 65 66 61 75 6c 74 20   is the default 
191f0 62 65 68 61 76 69 6f 72 20 61 6e 64 20 74 68 65  behavior and the
19200 20 62 65 68 61 76 69 6f 72 20 70 72 6f 73 63 72   behavior proscr
19210 69 62 65 64 20 74 68 65 20 53 51 4c 0a 73 74 61  ibed the SQL.sta
19220 6e 64 61 72 64 2e 3c 2f 70 3e 3c 2f 64 64 3e 0a  ndard.</p></dd>.
19230 0a 3c 64 74 3e 3c 62 3e 46 41 49 4c 3c 2f 62 3e  .<dt><b>FAIL</b>
19240 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 20 5e 57  </dt>.<dd><p> ^W
19250 68 65 6e 20 61 6e 20 61 70 70 6c 69 63 61 62 6c  hen an applicabl
19260 65 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f  e constraint vio
19270 6c 61 74 69 6f 6e 20 6f 63 63 75 72 73 2c 20 74  lation occurs, t
19280 68 65 20 46 41 49 4c 0a 72 65 73 6f 6c 75 74 69  he FAIL.resoluti
19290 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 20 61 62 6f  on algorithm abo
192a0 72 74 73 20 74 68 65 20 63 75 72 72 65 6e 74 20  rts the current 
192b0 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 77 69  SQL statement wi
192c0 74 68 20 61 6e 0a 53 51 4c 49 54 45 5f 43 4f 4e  th an.SQLITE_CON
192d0 53 54 52 41 49 4e 54 20 65 72 72 6f 72 2e 20 20  STRAINT error.  
192e0 5e 42 75 74 20 74 68 65 20 46 41 49 4c 20 72 65  ^But the FAIL re
192f0 73 6f 6c 75 74 69 6f 6e 20 64 6f 65 73 20 6e 6f  solution does no
19300 74 0a 62 61 63 6b 20 6f 75 74 20 70 72 69 6f 72  t.back out prior
19310 20 63 68 61 6e 67 65 73 20 6f 66 20 74 68 65 20   changes of the 
19320 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 74 68  SQL statement th
19330 61 74 20 66 61 69 6c 65 64 20 6e 6f 72 20 64 6f  at failed nor do
19340 65 73 0a 69 74 20 65 6e 64 20 74 68 65 20 74 72  es.it end the tr
19350 61 6e 73 61 63 74 69 6f 6e 2e 0a 5e 46 6f 72 20  ansaction..^For 
19360 65 78 61 6d 70 6c 65 2c 20 69 66 20 61 6e 20 55  example, if an U
19370 50 44 41 54 45 0a 73 74 61 74 65 6d 65 6e 74 20  PDATE.statement 
19380 65 6e 63 6f 75 6e 74 65 72 65 64 20 61 20 63 6f  encountered a co
19390 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69  nstraint violati
193a0 6f 6e 20 6f 6e 20 74 68 65 20 31 30 30 74 68 20  on on the 100th 
193b0 72 6f 77 20 74 68 61 74 0a 69 74 20 61 74 74 65  row that.it atte
193c0 6d 70 74 73 20 74 6f 20 75 70 64 61 74 65 2c 20  mpts to update, 
193d0 74 68 65 6e 20 74 68 65 20 66 69 72 73 74 20 39  then the first 9
193e0 39 20 72 6f 77 20 63 68 61 6e 67 65 73 20 61 72  9 row changes ar
193f0 65 20 70 72 65 73 65 72 76 65 64 0a 62 75 74 20  e preserved.but 
19400 63 68 61 6e 67 65 73 20 74 6f 20 72 6f 77 73 20  changes to rows 
19410 31 30 30 20 61 6e 64 20 62 65 79 6f 6e 64 20 6e  100 and beyond n
19420 65 76 65 72 20 6f 63 63 75 72 2e 3c 2f 70 3e 3c  ever occur.</p><
19430 2f 64 64 3e 0a 0a 28 3c 64 74 3e 3c 62 3e 49 47  /dd>..(<dt><b>IG
19440 4e 4f 52 45 3c 2f 62 3e 3c 2f 64 74 3e 0a 3c 64  NORE</b></dt>.<d
19450 64 3e 3c 70 3e 20 5e 57 68 65 6e 20 61 6e 20 61  d><p> ^When an a
19460 70 70 6c 69 63 61 62 6c 65 20 63 6f 6e 73 74 72  pplicable constr
19470 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 6f  aint violation o
19480 63 63 75 72 73 2c 20 0a 74 68 65 20 49 47 4e 4f  ccurs, .the IGNO
19490 52 45 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c  RE resolution al
194a0 67 6f 72 69 74 68 6d 20 73 6b 69 70 73 20 74 68  gorithm skips th
194b0 65 20 6f 6e 65 20 72 6f 77 20 74 68 61 74 20 63  e one row that c
194c0 6f 6e 74 61 69 6e 73 0a 74 68 65 20 63 6f 6e 73  ontains.the cons
194d0 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e  traint violation
194e0 20 61 6e 64 20 63 6f 6e 74 69 6e 75 65 73 20 70   and continues p
194f0 72 6f 63 65 73 73 69 6e 67 20 73 75 62 73 65 71  rocessing subseq
19500 75 65 6e 74 20 72 6f 77 73 0a 6f 66 20 74 68 65  uent rows.of the
19510 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 61   SQL statement a
19520 73 20 69 66 20 6e 6f 74 68 69 6e 67 20 77 65 6e  s if nothing wen
19530 74 20 77 72 6f 6e 67 2e 0a 4f 74 68 65 72 20 72  t wrong..Other r
19540 6f 77 73 20 62 65 66 6f 72 65 20 61 6e 64 20 61  ows before and a
19550 66 74 65 72 20 74 68 65 20 72 6f 77 20 74 68 61  fter the row tha
19560 74 0a 63 6f 6e 74 61 69 6e 65 64 20 74 68 65 20  t.contained the 
19570 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61  constraint viola
19580 74 69 6f 6e 20 61 72 65 20 69 6e 73 65 72 74 65  tion are inserte
19590 64 20 6f 72 20 75 70 64 61 74 65 64 0a 6e 6f 72  d or updated.nor
195a0 6d 61 6c 6c 79 2e 20 5e 4e 6f 20 65 72 72 6f 72  mally. ^No error
195b0 20 69 73 20 72 65 74 75 72 6e 65 64 20 77 68 65   is returned whe
195c0 6e 20 74 68 65 20 49 47 4e 4f 52 45 20 63 6f 6e  n the IGNORE con
195d0 66 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e  flict resolution
195e0 0a 61 6c 67 6f 72 69 74 68 6d 20 69 73 20 75 73  .algorithm is us
195f0 65 64 2e 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a 3c 64  ed.</p></dd>..<d
19600 74 3e 3c 62 3e 52 45 50 4c 41 43 45 3c 2f 62 3e  t><b>REPLACE</b>
19610 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 20 5e 57  </dt>.<dd><p> ^W
19620 68 65 6e 20 61 20 55 4e 49 51 55 45 20 63 6f 6e  hen a UNIQUE con
19630 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f  straint violatio
19640 6e 20 6f 63 63 75 72 73 2c 20 74 68 65 20 52 45  n occurs, the RE
19650 50 4c 41 43 45 20 61 6c 67 6f 72 69 74 68 6d 0a  PLACE algorithm.
19660 64 65 6c 65 74 65 73 20 70 72 65 2d 65 78 69 73  deletes pre-exis
19670 74 69 6e 67 20 72 6f 77 73 20 74 68 61 74 20 61  ting rows that a
19680 72 65 20 63 61 75 73 69 6e 67 20 74 68 65 20 63  re causing the c
19690 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74  onstraint violat
196a0 69 6f 6e 0a 70 72 69 6f 72 20 74 6f 20 69 6e 73  ion.prior to ins
196b0 65 72 74 69 6e 67 20 6f 72 20 75 70 64 61 74 69  erting or updati
196c0 6e 67 20 74 68 65 20 63 75 72 72 65 6e 74 20 72  ng the current r
196d0 6f 77 20 61 6e 64 20 74 68 65 20 63 6f 6d 6d 61  ow and the comma
196e0 6e 64 20 63 6f 6e 74 69 6e 75 65 73 20 0a 65 78  nd continues .ex
196f0 65 63 75 74 69 6e 67 20 6e 6f 72 6d 61 6c 6c 79  ecuting normally
19700 2e 0a 5e 49 66 20 61 20 4e 4f 54 20 4e 55 4c 4c  ..^If a NOT NULL
19710 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c   constraint viol
19720 61 74 69 6f 6e 20 6f 63 63 75 72 73 2c 20 74 68  ation occurs, th
19730 65 20 52 45 50 4c 41 43 45 20 63 6f 6e 66 6c 69  e REPLACE confli
19740 63 74 0a 72 65 73 6f 6c 75 74 69 6f 6e 20 72 65  ct.resolution re
19750 70 6c 61 63 65 73 20 74 68 65 20 4e 55 4c 4c 20  places the NULL 
19760 76 61 6c 75 65 20 77 69 74 68 0a 68 65 20 64 65  value with.he de
19770 66 61 75 6c 74 20 76 61 6c 75 65 20 66 6f 72 20  fault value for 
19780 74 68 61 74 20 63 6f 6c 75 6d 6e 2c 20 6f 72 20  that column, or 
19790 69 66 20 74 68 65 20 63 6f 6c 75 6d 6e 20 68 61  if the column ha
197a0 73 20 6e 6f 20 64 65 66 61 75 6c 74 0a 76 61 6c  s no default.val
197b0 75 65 2c 20 74 68 65 6e 20 74 68 65 20 41 42 4f  ue, then the ABO
197c0 52 54 20 61 6c 67 6f 72 69 74 68 6d 20 69 73 20  RT algorithm is 
197d0 75 73 65 64 2e 0a 5e 49 66 20 61 20 43 48 45 43  used..^If a CHEC
197e0 4b 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f  K constraint vio
197f0 6c 61 74 69 6f 6e 20 6f 63 63 75 72 73 2c 20 74  lation occurs, t
19800 68 65 20 52 45 50 4c 41 43 45 20 63 6f 6e 66 6c  he REPLACE confl
19810 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 0a 61  ict resolution.a
19820 6c 67 6f 72 69 74 68 6d 20 61 6c 77 61 79 73 20  lgorithm always 
19830 77 6f 72 6b 73 20 6c 69 6b 65 20 41 42 4f 52 54  works like ABORT
19840 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 57 68 65 6e 20  .</p>..<p>^When 
19850 74 68 65 20 52 45 50 4c 41 43 45 20 63 6f 6e 66  the REPLACE conf
19860 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20  lict resolution 
19870 73 74 72 61 74 65 67 79 20 64 65 6c 65 74 65 73  strategy deletes
19880 20 72 6f 77 73 20 69 6e 20 6f 72 64 65 72 20 74   rows in order t
19890 6f 0a 73 61 74 69 73 66 79 20 61 20 63 6f 6e 73  o.satisfy a cons
198a0 74 72 61 69 6e 74 2c 20 5b 43 52 45 41 54 45 20  traint, [CREATE 
198b0 54 52 49 47 47 45 52 20 7c 20 64 65 6c 65 74 65  TRIGGER | delete
198c0 20 74 72 69 67 67 65 72 73 5d 20 66 69 72 65 20   triggers] fire 
198d0 69 66 20 61 6e 64 20 6f 6e 6c 79 20 69 66 0a 5b  if and only if.[
198e0 72 65 63 75 72 73 69 76 65 5f 74 72 69 67 67 65  recursive_trigge
198f0 72 73 20 70 72 61 67 6d 61 20 7c 20 72 65 63 75  rs pragma | recu
19900 72 73 69 76 65 20 74 72 69 67 67 65 72 73 5d 20  rsive triggers] 
19910 61 72 65 20 65 6e 61 62 6c 65 64 2e 3c 2f 70 3e  are enabled.</p>
19920 0a 0a 3c 70 3e 5e 54 68 65 20 5b 73 71 6c 69 74  ..<p>^The [sqlit
19930 65 33 5f 75 70 64 61 74 65 5f 68 6f 6f 6b 20 7c  e3_update_hook |
19940 20 75 70 64 61 74 65 20 68 6f 6f 6b 5d 20 69 73   update hook] is
19950 20 6e 6f 74 20 69 6e 76 6f 6b 65 64 20 66 6f 72   not invoked for
19960 20 72 6f 77 73 20 74 68 61 74 0a 61 72 65 20 64   rows that.are d
19970 65 6c 65 74 65 64 20 62 79 20 74 68 65 20 52 45  eleted by the RE
19980 50 4c 41 43 45 20 63 6f 6e 66 6c 69 63 74 20 72  PLACE conflict r
19990 65 73 6f 6c 75 74 69 6f 6e 20 73 74 72 61 74 65  esolution strate
199a0 67 79 2e 20 20 5e 4e 6f 72 20 64 6f 65 73 0a 52  gy.  ^Nor does.R
199b0 45 50 4c 41 43 45 20 69 6e 63 72 65 6d 65 6e 74  EPLACE increment
199c0 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 63 68   the [sqlite3_ch
199d0 61 6e 67 65 73 20 7c 20 63 68 61 6e 67 65 20 63  anges | change c
199e0 6f 75 6e 74 65 72 5d 2e 0a 54 68 65 20 65 78 63  ounter]..The exc
199f0 65 70 74 69 6f 6e 61 6c 20 62 65 68 61 76 69 6f  eptional behavio
19a00 72 73 20 64 65 66 69 6e 65 64 20 69 6e 20 74 68  rs defined in th
19a10 69 73 20 70 61 72 61 67 72 61 70 68 20 6d 69 67  is paragraph mig
19a20 68 74 20 63 68 61 6e 67 65 20 0a 69 6e 20 61 20  ht change .in a 
19a30 66 75 74 75 72 65 20 72 65 6c 65 61 73 65 2e 3c  future release.<
19a40 2f 70 3e 0a 3c 2f 64 6c 3e 0a 0a 3c 70 3e 5e 54  /p>.</dl>..<p>^T
19a50 68 65 20 61 6c 67 6f 72 69 74 68 6d 20 73 70 65  he algorithm spe
19a60 63 69 66 69 65 64 20 69 6e 20 74 68 65 20 4f 52  cified in the OR
19a70 20 63 6c 61 75 73 65 20 6f 66 20 61 20 49 4e 53   clause of a INS
19a80 45 52 54 20 6f 72 20 55 50 44 41 54 45 0a 6f 76  ERT or UPDATE.ov
19a90 65 72 72 69 64 65 73 20 61 6e 79 20 61 6c 67 6f  errides any algo
19aa0 72 69 74 68 6d 20 73 70 65 63 69 66 69 65 64 20  rithm specified 
19ab0 69 6e 20 61 20 43 52 45 41 54 45 20 54 41 42 4c  in a CREATE TABL
19ac0 45 2e 0a 5e 49 66 20 6e 6f 20 61 6c 67 6f 72 69  E..^If no algori
19ad0 74 68 6d 20 69 73 20 73 70 65 63 69 66 69 65 64  thm is specified
19ae0 20 61 6e 79 77 68 65 72 65 2c 20 74 68 65 20 41   anywhere, the A
19af0 42 4f 52 54 20 61 6c 67 6f 72 69 74 68 6d 20 69  BORT algorithm i
19b00 73 20 75 73 65 64 2e 3c 2f 70 3e 0a 0a 3c 74 63  s used.</p>..<tc
19b10 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23 23  l>.#############
19b20 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
19b30 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
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 0a 53 65 63 74 69 6f 6e 20 52 45 49 4e 44 45  #.Section REINDE
19b70 58 20 72 65 69 6e 64 65 78 20 52 45 49 4e 44 45  X reindex REINDE
19b80 58 0a 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d  X..BubbleDiagram
19b90 20 72 65 69 6e 64 65 78 2d 73 74 6d 74 20 31 0a   reindex-stmt 1.
19ba0 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 5e 54 68 65 20  </tcl>..<p>^The 
19bb0 52 45 49 4e 44 45 58 20 63 6f 6d 6d 61 6e 64 20  REINDEX command 
19bc0 69 73 20 75 73 65 64 20 74 6f 20 64 65 6c 65 74  is used to delet
19bd0 65 20 61 6e 64 20 72 65 63 72 65 61 74 65 20 69  e and recreate i
19be0 6e 64 69 63 65 73 20 66 72 6f 6d 20 73 63 72 61  ndices from scra
19bf0 74 63 68 2e 0a 54 68 69 73 20 69 73 20 75 73 65  tch..This is use
19c00 66 75 6c 20 77 68 65 6e 20 74 68 65 20 64 65 66  ful when the def
19c10 69 6e 69 74 69 6f 6e 20 6f 66 20 61 20 63 6f 6c  inition of a col
19c20 6c 61 74 69 6f 6e 20 73 65 71 75 65 6e 63 65 20  lation sequence 
19c30 68 61 73 20 63 68 61 6e 67 65 64 2e 0a 3c 2f 70  has changed..</p
19c40 3e 0a 0a 3c 70 3e 5e 49 6e 20 74 68 65 20 66 69  >..<p>^In the fi
19c50 72 73 74 20 66 6f 72 6d 2c 20 61 6c 6c 20 69 6e  rst form, all in
19c60 64 69 63 65 73 20 69 6e 20 61 6c 6c 20 61 74 74  dices in all att
19c70 61 63 68 65 64 20 64 61 74 61 62 61 73 65 73 20  ached databases 
19c80 74 68 61 74 20 75 73 65 20 74 68 65 0a 6e 61 6d  that use the.nam
19c90 65 64 20 63 6f 6c 6c 61 74 69 6f 6e 20 73 65 71  ed collation seq
19ca0 75 65 6e 63 65 20 61 72 65 20 72 65 63 72 65 61  uence are recrea
19cb0 74 65 64 2e 20 5e 28 49 6e 20 74 68 65 20 73 65  ted. ^(In the se
19cc0 63 6f 6e 64 20 66 6f 72 6d 2c 20 69 66 20 0a 3c  cond form, if .<
19cd0 69 3e 26 23 39 31 3b 64 61 74 61 62 61 73 65 2d  i>&#91;database-
19ce0 6e 61 6d 65 2e 26 23 39 33 3b 74 61 62 6c 65 2f  name.&#93;table/
19cf0 69 6e 64 65 78 2d 6e 61 6d 65 3c 2f 69 3e 20 69  index-name</i> i
19d00 64 65 6e 74 69 66 69 65 73 20 61 20 74 61 62 6c  dentifies a tabl
19d10 65 2c 0a 74 68 65 6e 20 61 6c 6c 20 69 6e 64 69  e,.then all indi
19d20 63 65 73 0a 61 73 73 6f 63 69 61 74 65 64 20 77  ces.associated w
19d30 69 74 68 20 74 68 65 20 74 61 62 6c 65 20 61 72  ith the table ar
19d40 65 20 72 65 62 75 69 6c 74 2e 29 5e 20 5e 49 66  e rebuilt.)^ ^If
19d50 20 61 6e 20 69 6e 64 65 78 20 69 73 20 69 64 65   an index is ide
19d60 6e 74 69 66 69 65 64 2c 20 74 68 65 6e 20 6f 6e  ntified, then on
19d70 6c 79 0a 74 68 69 73 20 73 70 65 63 69 66 69 63  ly.this specific
19d80 20 69 6e 64 65 78 20 69 73 20 64 65 6c 65 74 65   index is delete
19d90 64 20 61 6e 64 20 72 65 63 72 65 61 74 65 64 2e  d and recreated.
19da0 0a 3c 2f 70 3e 0a 0a 3c 70 3e 5e 49 66 20 6e 6f  .</p>..<p>^If no
19db0 20 3c 69 3e 64 61 74 61 62 61 73 65 2d 6e 61 6d   <i>database-nam
19dc0 65 3c 2f 69 3e 20 69 73 20 73 70 65 63 69 66 69  e</i> is specifi
19dd0 65 64 20 61 6e 64 20 74 68 65 72 65 20 65 78 69  ed and there exi
19de0 73 74 73 20 62 6f 74 68 20 61 20 74 61 62 6c 65  sts both a table
19df0 20 6f 72 0a 69 6e 64 65 78 20 61 6e 64 20 61 20   or.index and a 
19e00 63 6f 6c 6c 61 74 69 6f 6e 20 73 65 71 75 65 6e  collation sequen
19e10 63 65 20 6f 66 20 74 68 65 20 73 70 65 63 69 66  ce of the specif
19e20 69 65 64 20 6e 61 6d 65 2c 20 74 68 65 6e 20 69  ied name, then i
19e30 6e 64 69 63 65 73 20 61 73 73 6f 63 69 61 74 65  ndices associate
19e40 64 0a 77 69 74 68 20 74 68 65 20 63 6f 6c 6c 61  d.with the colla
19e50 74 69 6f 6e 20 73 65 71 75 65 6e 63 65 20 6f 6e  tion sequence on
19e60 6c 79 20 61 72 65 20 72 65 63 6f 6e 73 74 72 75  ly are reconstru
19e70 63 74 65 64 2e 20 54 68 69 73 20 61 6d 62 69 67  cted. This ambig
19e80 75 69 74 79 20 6d 61 79 20 62 65 0a 64 69 73 70  uity may be.disp
19e90 65 6c 6c 65 64 20 62 79 20 61 6c 77 61 79 73 20  elled by always 
19ea0 73 70 65 63 69 66 79 69 6e 67 20 61 20 3c 69 3e  specifying a <i>
19eb0 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3c 2f 69  database-name</i
19ec0 3e 20 77 68 65 6e 20 72 65 69 6e 64 65 78 69 6e  > when reindexin
19ed0 67 20 61 0a 73 70 65 63 69 66 69 63 20 74 61 62  g a.specific tab
19ee0 6c 65 20 6f 72 20 69 6e 64 65 78 2e 0a 0a 3c 74  le or index...<t
19ef0 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23  cl>.############
19f00 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
19f10 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
19f20 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
19f30 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
19f40 23 23 23 0a 53 65 63 74 69 6f 6e 20 52 45 50 4c  ###.Section REPL
19f50 41 43 45 20 72 65 70 6c 61 63 65 20 52 45 50 4c  ACE replace REPL
19f60 41 43 45 0a 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e  ACE..</tcl>..<p>
19f70 5e 54 68 65 20 52 45 50 4c 41 43 45 20 63 6f 6d  ^The REPLACE com
19f80 6d 61 6e 64 20 69 73 20 61 6e 20 61 6c 69 61 73  mand is an alias
19f90 20 66 6f 72 20 74 68 65 20 22 5b 4f 4e 20 43 4f   for the "[ON CO
19fa0 4e 46 4c 49 43 54 20 7c 20 49 4e 53 45 52 54 20  NFLICT | INSERT 
19fb0 4f 52 20 52 45 50 4c 41 43 45 5d 22 0a 76 61 72  OR REPLACE]".var
19fc0 69 61 6e 74 20 6f 66 20 74 68 65 20 5b 49 4e 53  iant of the [INS
19fd0 45 52 54 5d 20 63 6f 6d 6d 61 6e 64 2e 20 20 0a  ERT] command.  .
19fe0 54 68 69 73 20 61 6c 69 61 73 20 69 73 20 70 72  This alias is pr
19ff0 6f 76 69 64 65 64 20 66 6f 72 20 63 6f 6d 70 61  ovided for compa
1a000 74 69 62 69 6c 69 74 79 20 6f 74 68 65 72 20 53  tibility other S
1a010 51 4c 20 64 61 74 61 62 61 73 65 20 65 6e 67 69  QL database engi
1a020 6e 65 73 2e 20 20 53 65 65 20 74 68 65 20 0a 5b  nes.  See the .[
1a030 49 4e 53 45 52 54 5d 20 63 6f 6d 6d 61 6e 64 20  INSERT] command 
1a040 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f  documentation fo
1a050 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66  r additional inf
1a060 6f 72 6d 61 74 69 6f 6e 2e 3c 2f 70 3e 20 20 0a  ormation.</p>  .
1a070 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23  .<tcl>.#########
1a080 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1a090 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1a0a0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1a0b0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1a0c0 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 53  ######.Section S
1a0d0 45 4c 45 43 54 20 73 65 6c 65 63 74 20 7b 53 45  ELECT select {SE
1a0e0 4c 45 43 54 20 71 75 65 72 79 7d 0a 0a 42 75 62  LECT query}..Bub
1a0f0 62 6c 65 44 69 61 67 72 61 6d 20 73 65 6c 65 63  bleDiagram selec
1a100 74 2d 73 74 6d 74 20 31 0a 42 75 62 62 6c 65 44  t-stmt 1.BubbleD
1a110 69 61 67 72 61 6d 20 73 65 6c 65 63 74 2d 63 6f  iagram select-co
1a120 72 65 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d  re.BubbleDiagram
1a130 20 72 65 73 75 6c 74 2d 63 6f 6c 75 6d 6e 0a 42   result-column.B
1a140 75 62 62 6c 65 44 69 61 67 72 61 6d 20 6a 6f 69  ubbleDiagram joi
1a150 6e 2d 73 6f 75 72 63 65 0a 42 75 62 62 6c 65 44  n-source.BubbleD
1a160 69 61 67 72 61 6d 20 73 69 6e 67 6c 65 2d 73 6f  iagram single-so
1a170 75 72 63 65 0a 42 75 62 62 6c 65 44 69 61 67 72  urce.BubbleDiagr
1a180 61 6d 20 6a 6f 69 6e 2d 6f 70 0a 42 75 62 62 6c  am join-op.Bubbl
1a190 65 44 69 61 67 72 61 6d 20 6a 6f 69 6e 2d 63 6f  eDiagram join-co
1a1a0 6e 73 74 72 61 69 6e 74 0a 42 75 62 62 6c 65 44  nstraint.BubbleD
1a1b0 69 61 67 72 61 6d 20 6f 72 64 65 72 69 6e 67 2d  iagram ordering-
1a1c0 74 65 72 6d 0a 42 75 62 62 6c 65 44 69 61 67 72  term.BubbleDiagr
1a1d0 61 6d 20 63 6f 6d 70 6f 75 6e 64 2d 6f 70 65 72  am compound-oper
1a1e0 61 74 6f 72 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e  ator.</tcl>..<p>
1a1f0 54 68 65 20 53 45 4c 45 43 54 20 73 74 61 74 65  The SELECT state
1a200 6d 65 6e 74 20 69 73 20 75 73 65 64 20 74 6f 20  ment is used to 
1a210 71 75 65 72 79 20 74 68 65 20 64 61 74 61 62 61  query the databa
1a220 73 65 2e 20 20 5e 54 68 65 0a 72 65 73 75 6c 74  se.  ^The.result
1a230 20 6f 66 20 61 20 53 45 4c 45 43 54 20 69 73 20   of a SELECT is 
1a240 7a 65 72 6f 20 6f 72 20 6d 6f 72 65 20 72 6f 77  zero or more row
1a250 73 20 6f 66 20 64 61 74 61 20 77 68 65 72 65 20  s of data where 
1a260 65 61 63 68 20 72 6f 77 0a 68 61 73 20 61 20 66  each row.has a f
1a270 69 78 65 64 20 6e 75 6d 62 65 72 20 6f 66 20 63  ixed number of c
1a280 6f 6c 75 6d 6e 73 2e 20 20 5e 54 68 65 20 6e 75  olumns.  ^The nu
1a290 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20  mber of columns 
1a2a0 69 6e 20 74 68 65 0a 72 65 73 75 6c 74 20 69 73  in the.result is
1a2b0 20 73 70 65 63 69 66 69 65 64 20 62 79 20 74 68   specified by th
1a2c0 65 20 65 78 70 72 65 73 73 69 6f 6e 20 6c 69 73  e expression lis
1a2d0 74 20 69 6e 20 62 65 74 77 65 65 6e 20 74 68 65  t in between the
1a2e0 0a 53 45 4c 45 43 54 20 61 6e 64 20 46 52 4f 4d  .SELECT and FROM
1a2f0 20 6b 65 79 77 6f 72 64 73 2e 20 20 5e 41 6e 79   keywords.  ^Any
1a300 20 61 72 62 69 74 72 61 72 79 20 65 78 70 72 65   arbitrary expre
1a310 73 73 69 6f 6e 20 63 61 6e 20 62 65 20 75 73 65  ssion can be use
1a320 64 0a 61 73 20 61 20 72 65 73 75 6c 74 2e 20 20  d.as a result.  
1a330 5e 49 66 20 61 20 72 65 73 75 6c 74 20 65 78 70  ^If a result exp
1a340 72 65 73 73 69 6f 6e 20 69 73 20 7d 0a 68 64 5f  ression is }.hd_
1a350 70 75 74 73 20 22 5b 4f 70 65 72 61 74 6f 72 20  puts "[Operator 
1a360 2a 5d 20 74 68 65 6e 20 61 6c 6c 20 63 6f 6c 75  *] then all colu
1a370 6d 6e 73 20 6f 66 20 61 6c 6c 20 74 61 62 6c 65  mns of all table
1a380 73 20 61 72 65 20 73 75 62 73 74 69 74 75 74 65  s are substitute
1a390 64 5c 6e 22 0a 68 64 5f 70 75 74 73 20 22 66 6f  d\n".hd_puts "fo
1a3a0 72 20 74 68 61 74 20 6f 6e 65 20 65 78 70 72 65  r that one expre
1a3b0 73 73 69 6f 6e 2e 20 20 5e 28 49 66 20 74 68 65  ssion.  ^(If the
1a3c0 20 65 78 70 72 65 73 73 69 6f 6e 20 69 73 20 74   expression is t
1a3d0 68 65 20 6e 61 6d 65 20 6f 66 5c 6e 22 0a 68 64  he name of\n".hd
1a3e0 5f 70 75 74 73 20 22 61 20 74 61 62 6c 65 20 66  _puts "a table f
1a3f0 6f 6c 6c 6f 77 65 64 20 62 79 20 5b 4f 70 65 72  ollowed by [Oper
1a400 61 74 6f 72 20 2e 2a 5d 20 74 68 65 6e 20 74 68  ator .*] then th
1a410 65 20 72 65 73 75 6c 74 20 69 73 20 61 6c 6c 20  e result is all 
1a420 63 6f 6c 75 6d 6e 73 5c 6e 22 0a 68 64 5f 70 75  columns\n".hd_pu
1a430 74 73 20 7b 69 6e 20 74 68 61 74 20 6f 6e 65 20  ts {in that one 
1a440 74 61 62 6c 65 2e 3c 2f 70 3e 29 5e 0a 0a 3c 70  table.</p>)^..<p
1a450 3e 5e 54 68 65 20 44 49 53 54 49 4e 43 54 20 6b  >^The DISTINCT k
1a460 65 79 77 6f 72 64 20 63 61 75 73 65 73 20 61 20  eyword causes a 
1a470 73 75 62 73 65 74 20 6f 66 20 72 65 73 75 6c 74  subset of result
1a480 20 72 6f 77 73 20 74 6f 20 62 65 20 72 65 74 75   rows to be retu
1a490 72 6e 65 64 2c 20 0a 69 6e 20 77 68 69 63 68 20  rned, .in which 
1a4a0 65 61 63 68 20 72 65 73 75 6c 74 20 72 6f 77 20  each result row 
1a4b0 69 73 20 64 69 66 66 65 72 65 6e 74 2e 20 20 5e  is different.  ^
1a4c0 4e 55 4c 4c 20 76 61 6c 75 65 73 20 61 72 65 20  NULL values are 
1a4d0 6e 6f 74 20 74 72 65 61 74 65 64 20 61 73 20 0a  not treated as .
1a4e0 64 69 73 74 69 6e 63 74 20 66 72 6f 6d 20 65 61  distinct from ea
1a4f0 63 68 20 6f 74 68 65 72 2e 20 20 5e 54 68 65 20  ch other.  ^The 
1a500 64 65 66 61 75 6c 74 20 62 65 68 61 76 69 6f 72  default behavior
1a510 20 69 73 20 74 68 61 74 20 61 6c 6c 20 72 65 73   is that all res
1a520 75 6c 74 20 72 6f 77 73 20 0a 62 65 20 72 65 74  ult rows .be ret
1a530 75 72 6e 65 64 2c 20 77 68 69 63 68 20 63 61 6e  urned, which can
1a540 20 62 65 20 6d 61 64 65 20 65 78 70 6c 69 63 69   be made explici
1a550 74 20 77 69 74 68 20 74 68 65 20 6b 65 79 77 6f  t with the keywo
1a560 72 64 20 41 4c 4c 2e 3c 2f 70 3e 0a 0a 3c 70 3e  rd ALL.</p>..<p>
1a570 5e 54 68 65 20 71 75 65 72 79 20 69 73 20 65 78  ^The query is ex
1a580 65 63 75 74 65 64 20 61 67 61 69 6e 73 74 20 6f  ecuted against o
1a590 6e 65 20 6f 72 20 6d 6f 72 65 20 74 61 62 6c 65  ne or more table
1a5a0 73 20 73 70 65 63 69 66 69 65 64 20 61 66 74 65  s specified afte
1a5b0 72 0a 74 68 65 20 46 52 4f 4d 20 6b 65 79 77 6f  r.the FROM keywo
1a5c0 72 64 2e 20 20 5e 49 66 20 6d 75 6c 74 69 70 6c  rd.  ^If multipl
1a5d0 65 20 74 61 62 6c 65 73 20 6e 61 6d 65 73 20 61  e tables names a
1a5e0 72 65 20 73 65 70 61 72 61 74 65 64 20 62 79 20  re separated by 
1a5f0 63 6f 6d 6d 61 73 2c 0a 74 68 65 6e 20 74 68 65  commas,.then the
1a600 20 71 75 65 72 79 20 69 73 20 61 67 61 69 6e 73   query is agains
1a610 74 20 74 68 65 20 63 72 6f 73 73 20 6a 6f 69 6e  t the cross join
1a620 20 6f 66 20 74 68 65 20 76 61 72 69 6f 75 73 20   of the various 
1a630 74 61 62 6c 65 73 2e 0a 5e 54 68 65 20 66 75 6c  tables..^The ful
1a640 6c 20 53 51 4c 2d 39 32 20 6a 6f 69 6e 20 73 79  l SQL-92 join sy
1a650 6e 74 61 78 20 63 61 6e 20 61 6c 73 6f 20 62 65  ntax can also be
1a660 20 75 73 65 64 20 74 6f 20 73 70 65 63 69 66 79   used to specify
1a670 20 6a 6f 69 6e 73 2e 0a 5e 41 20 73 75 62 2d 71   joins..^A sub-q
1a680 75 65 72 79 0a 69 6e 20 70 61 72 65 6e 74 68 65  uery.in parenthe
1a690 73 65 73 20 6d 61 79 20 62 65 20 73 75 62 73 74  ses may be subst
1a6a0 69 74 75 74 65 64 20 66 6f 72 20 61 6e 79 20 74  ituted for any t
1a6b0 61 62 6c 65 20 6e 61 6d 65 20 69 6e 20 74 68 65  able name in the
1a6c0 20 46 52 4f 4d 20 63 6c 61 75 73 65 2e 0a 5e 54   FROM clause..^T
1a6d0 68 65 20 65 6e 74 69 72 65 20 46 52 4f 4d 20 63  he entire FROM c
1a6e0 6c 61 75 73 65 20 6d 61 79 20 62 65 20 6f 6d 69  lause may be omi
1a6f0 74 74 65 64 2c 20 69 6e 20 77 68 69 63 68 20 63  tted, in which c
1a700 61 73 65 20 74 68 65 20 72 65 73 75 6c 74 20 69  ase the result i
1a710 73 20 61 0a 73 69 6e 67 6c 65 20 72 6f 77 20 63  s a.single row c
1a720 6f 6e 73 69 73 74 69 6e 67 20 6f 66 20 74 68 65  onsisting of the
1a730 20 76 61 6c 75 65 73 20 6f 66 20 74 68 65 20 65   values of the e
1a740 78 70 72 65 73 73 69 6f 6e 20 6c 69 73 74 2e 0a  xpression list..
1a750 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20 57 48  </p>..<p>^The WH
1a760 45 52 45 20 63 6c 61 75 73 65 20 63 61 6e 20 62  ERE clause can b
1a770 65 20 75 73 65 64 20 74 6f 20 6c 69 6d 69 74 20  e used to limit 
1a780 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 72 6f  the number of ro
1a790 77 73 20 6f 76 65 72 0a 77 68 69 63 68 20 74 68  ws over.which th
1a7a0 65 20 71 75 65 72 79 20 6f 70 65 72 61 74 65 73  e query operates
1a7b0 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20 47  .</p>..<p>^The G
1a7c0 52 4f 55 50 20 42 59 20 63 6c 61 75 73 65 20 63  ROUP BY clause c
1a7d0 61 75 73 65 73 20 6f 6e 65 20 6f 72 20 6d 6f 72  auses one or mor
1a7e0 65 20 72 6f 77 73 20 6f 66 20 74 68 65 20 72 65  e rows of the re
1a7f0 73 75 6c 74 20 74 6f 0a 62 65 20 63 6f 6d 62 69  sult to.be combi
1a800 6e 65 64 20 69 6e 74 6f 20 61 20 73 69 6e 67 6c  ned into a singl
1a810 65 20 72 6f 77 20 6f 66 20 6f 75 74 70 75 74 2e  e row of output.
1a820 20 20 54 68 69 73 20 69 73 20 65 73 70 65 63 69    This is especi
1a830 61 6c 6c 79 20 75 73 65 66 75 6c 0a 77 68 65 6e  ally useful.when
1a840 20 74 68 65 20 72 65 73 75 6c 74 20 63 6f 6e 74   the result cont
1a850 61 69 6e 73 20 61 67 67 72 65 67 61 74 65 20 66  ains aggregate f
1a860 75 6e 63 74 69 6f 6e 73 2e 20 20 5e 54 68 65 20  unctions.  ^The 
1a870 65 78 70 72 65 73 73 69 6f 6e 73 20 69 6e 0a 74  expressions in.t
1a880 68 65 20 47 52 4f 55 50 20 42 59 20 63 6c 61 75  he GROUP BY clau
1a890 73 65 20 64 6f 20 3c 65 6d 3e 6e 6f 74 3c 2f 65  se do <em>not</e
1a8a0 6d 3e 20 68 61 76 65 20 74 6f 20 62 65 20 65 78  m> have to be ex
1a8b0 70 72 65 73 73 69 6f 6e 73 20 74 68 61 74 0a 61  pressions that.a
1a8c0 70 70 65 61 72 20 69 6e 20 74 68 65 20 72 65 73  ppear in the res
1a8d0 75 6c 74 2e 20 20 5e 54 68 65 20 48 41 56 49 4e  ult.  ^The HAVIN
1a8e0 47 20 63 6c 61 75 73 65 20 69 73 20 73 69 6d 69  G clause is simi
1a8f0 6c 61 72 20 74 6f 20 57 48 45 52 45 20 65 78 63  lar to WHERE exc
1a900 65 70 74 0a 74 68 61 74 20 48 41 56 49 4e 47 20  ept.that HAVING 
1a910 61 70 70 6c 69 65 73 20 61 66 74 65 72 20 67 72  applies after gr
1a920 6f 75 70 69 6e 67 20 68 61 73 20 6f 63 63 75 72  ouping has occur
1a930 72 65 64 2e 20 20 5e 54 68 65 20 48 41 56 49 4e  red.  ^The HAVIN
1a940 47 20 65 78 70 72 65 73 73 69 6f 6e 0a 6d 61 79  G expression.may
1a950 20 72 65 66 65 72 20 74 6f 20 76 61 6c 75 65 73   refer to values
1a960 2c 20 65 76 65 6e 20 61 67 67 72 65 67 61 74 65  , even aggregate
1a970 20 66 75 6e 63 74 69 6f 6e 73 2c 20 74 68 61 74   functions, that
1a980 20 61 72 65 20 6e 6f 74 20 69 6e 20 74 68 65 20   are not in the 
1a990 72 65 73 75 6c 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e  result.</p>..<p>
1a9a0 5e 54 68 65 20 4f 52 44 45 52 20 42 59 20 63 6c  ^The ORDER BY cl
1a9b0 61 75 73 65 20 63 61 75 73 65 73 20 74 68 65 20  ause causes the 
1a9c0 6f 75 74 70 75 74 20 72 6f 77 73 20 74 6f 20 62  output rows to b
1a9d0 65 20 73 6f 72 74 65 64 2e 20 20 0a 5e 54 68 65  e sorted.  .^The
1a9e0 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 4f 52 44   argument to ORD
1a9f0 45 52 20 42 59 20 69 73 20 61 20 6c 69 73 74 20  ER BY is a list 
1aa00 6f 66 20 65 78 70 72 65 73 73 69 6f 6e 73 20 74  of expressions t
1aa10 68 61 74 20 61 72 65 20 75 73 65 64 20 61 73 20  hat are used as 
1aa20 74 68 65 0a 6b 65 79 20 66 6f 72 20 74 68 65 20  the.key for the 
1aa30 73 6f 72 74 2e 20 20 5e 54 68 65 20 65 78 70 72  sort.  ^The expr
1aa40 65 73 73 69 6f 6e 73 20 64 6f 20 6e 6f 74 20 68  essions do not h
1aa50 61 76 65 20 74 6f 20 62 65 20 70 61 72 74 20 6f  ave to be part o
1aa60 66 20 74 68 65 0a 72 65 73 75 6c 74 20 66 6f 72  f the.result for
1aa70 20 61 20 73 69 6d 70 6c 65 20 53 45 4c 45 43 54   a simple SELECT
1aa80 2c 20 62 75 74 20 69 6e 20 61 20 63 6f 6d 70 6f  , but in a compo
1aa90 75 6e 64 20 53 45 4c 45 43 54 20 65 61 63 68 20  und SELECT each 
1aaa0 73 6f 72 74 0a 65 78 70 72 65 73 73 69 6f 6e 20  sort.expression 
1aab0 6d 75 73 74 20 65 78 61 63 74 6c 79 20 6d 61 74  must exactly mat
1aac0 63 68 20 6f 6e 65 20 6f 66 20 74 68 65 20 72 65  ch one of the re
1aad0 73 75 6c 74 20 63 6f 6c 75 6d 6e 73 2e 20 20 5e  sult columns.  ^
1aae0 45 61 63 68 0a 73 6f 72 74 20 65 78 70 72 65 73  Each.sort expres
1aaf0 73 69 6f 6e 20 6d 61 79 20 62 65 20 6f 70 74 69  sion may be opti
1ab00 6f 6e 61 6c 6c 79 20 66 6f 6c 6c 6f 77 65 64 20  onally followed 
1ab10 62 79 20 61 20 43 4f 4c 4c 41 54 45 20 6b 65 79  by a COLLATE key
1ab20 77 6f 72 64 20 61 6e 64 0a 74 68 65 20 6e 61 6d  word and.the nam
1ab30 65 20 6f 66 20 61 20 63 6f 6c 6c 61 74 69 6e 67  e of a collating
1ab40 20 66 75 6e 63 74 69 6f 6e 20 75 73 65 64 20 66   function used f
1ab50 6f 72 20 6f 72 64 65 72 69 6e 67 20 74 65 78 74  or ordering text
1ab60 20 61 6e 64 2f 6f 72 0a 6b 65 79 77 6f 72 64 73   and/or.keywords
1ab70 20 41 53 43 20 6f 72 20 44 45 53 43 20 74 6f 20   ASC or DESC to 
1ab80 73 70 65 63 69 66 79 20 74 68 65 20 73 6f 72 74  specify the sort
1ab90 20 6f 72 64 65 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e   order.</p>..<p>
1aba0 45 61 63 68 20 74 65 72 6d 20 6f 66 20 61 6e 20  Each term of an 
1abb0 4f 52 44 45 52 20 42 59 20 65 78 70 72 65 73 73  ORDER BY express
1abc0 69 6f 6e 20 69 73 20 70 72 6f 63 65 73 73 65 64  ion is processed
1abd0 20 61 73 20 66 6f 6c 6c 6f 77 73 3a 3c 2f 70 3e   as follows:</p>
1abe0 0a 0a 3c 6f 6c 3e 0a 3c 6c 69 3e 3c 70 3e 5e 49  ..<ol>.<li><p>^I
1abf0 66 20 74 68 65 20 4f 52 44 45 52 20 42 59 20 65  f the ORDER BY e
1ac00 78 70 72 65 73 73 69 6f 6e 20 69 73 20 61 20 63  xpression is a c
1ac10 6f 6e 73 74 61 6e 74 20 69 6e 74 65 67 65 72 20  onstant integer 
1ac20 4b 20 74 68 65 6e 20 74 68 65 0a 6f 75 74 70 75  K then the.outpu
1ac30 74 20 69 73 20 6f 72 64 65 72 65 64 20 62 79 20  t is ordered by 
1ac40 74 68 65 20 4b 2d 74 68 20 63 6f 6c 75 6d 6e 20  the K-th column 
1ac50 6f 66 20 74 68 65 20 72 65 73 75 6c 74 20 73 65  of the result se
1ac60 74 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e  t.</p></li>.<li>
1ac70 3c 70 3e 5e 49 66 20 74 68 65 20 4f 52 44 45 52  <p>^If the ORDER
1ac80 20 42 59 20 65 78 70 72 65 73 73 69 6f 6e 20 69   BY expression i
1ac90 73 20 61 6e 20 69 64 65 6e 74 69 66 69 65 72 20  s an identifier 
1aca0 61 6e 64 20 6f 6e 65 20 6f 66 20 74 68 65 0a 6f  and one of the.o
1acb0 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 20 68 61  utput columns ha
1acc0 73 20 61 6e 20 61 6c 69 61 73 20 62 79 20 74 68  s an alias by th
1acd0 65 20 73 61 6d 65 20 6e 61 6d 65 2c 20 74 68 65  e same name, the
1ace0 6e 20 74 68 65 20 6f 75 74 70 75 74 20 69 73 0a  n the output is.
1acf0 6f 72 64 65 72 65 64 20 62 79 20 74 68 65 20 69  ordered by the i
1ad00 64 65 6e 74 69 66 69 65 64 20 63 6f 6c 75 6d 6e  dentified column
1ad10 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c  .</p></li>.<li><
1ad20 70 3e 5e 4f 74 68 65 72 77 69 73 65 2c 20 74 68  p>^Otherwise, th
1ad30 65 20 4f 52 44 45 52 20 42 59 20 65 78 70 72 65  e ORDER BY expre
1ad40 73 73 69 6f 6e 20 69 73 20 65 76 61 6c 75 61 74  ssion is evaluat
1ad50 65 64 20 61 6e 64 20 74 68 65 20 6f 75 74 70 75  ed and the outpu
1ad60 74 20 0a 69 73 20 6f 72 64 65 72 65 64 20 62 79  t .is ordered by
1ad70 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68   the value of th
1ad80 61 74 20 65 78 70 72 65 73 73 69 6f 6e 2e 3c 2f  at expression.</
1ad90 70 3e 3c 2f 6c 69 3e 0a 3c 2f 6f 6c 3e 0a 0a 3c  p></li>.</ol>..<
1ada0 70 3e 5e 49 6e 20 61 20 63 6f 6d 70 6f 75 6e 64  p>^In a compound
1adb0 20 53 45 4c 45 43 54 20 73 74 61 74 65 6d 65 6e   SELECT statemen
1adc0 74 2c 20 74 68 65 20 74 68 69 72 64 20 4f 52 44  t, the third ORD
1add0 45 52 20 42 59 20 6d 61 74 63 68 69 6e 67 20 72  ER BY matching r
1ade0 75 6c 65 0a 72 65 71 75 69 72 65 73 20 74 68 61  ule.requires tha
1adf0 74 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e  t the expression
1ae00 20 62 65 20 69 64 65 6e 74 69 63 61 6c 20 74 6f   be identical to
1ae10 20 6f 6e 65 20 6f 66 20 74 68 65 20 63 6f 6c 75   one of the colu
1ae20 6d 6e 73 20 69 6e 0a 74 68 65 20 72 65 73 75 6c  mns in.the resul
1ae30 74 20 73 65 74 2e 20 20 5e 28 54 68 65 20 74 68  t set.  ^(The th
1ae40 72 65 65 20 72 75 6c 65 73 20 61 72 65 20 66 69  ree rules are fi
1ae50 72 73 74 20 61 70 70 6c 69 65 64 20 74 6f 20 74  rst applied to t
1ae60 68 65 20 6c 65 66 74 2d 6d 6f 73 74 0a 53 45 4c  he left-most.SEL
1ae70 45 43 54 20 69 6e 20 74 68 65 20 63 6f 6d 70 6f  ECT in the compo
1ae80 75 6e 64 2e 20 20 49 66 20 61 20 6d 61 74 63 68  und.  If a match
1ae90 20 69 73 20 66 6f 75 6e 64 2c 20 74 68 65 20 73   is found, the s
1aea0 65 61 72 63 68 20 73 74 6f 70 73 2e 20 20 4f 74  earch stops.  Ot
1aeb0 68 65 72 77 69 73 65 2c 0a 74 68 65 20 6e 65 78  herwise,.the nex
1aec0 74 20 53 45 4c 45 43 54 20 74 6f 20 74 68 65 20  t SELECT to the 
1aed0 72 69 67 68 74 20 69 73 20 74 72 69 65 64 2e 20  right is tried. 
1aee0 20 54 68 69 73 20 63 6f 6e 74 69 6e 75 65 73 20   This continues 
1aef0 75 6e 74 69 6c 20 61 20 6d 61 74 63 68 0a 69 73  until a match.is
1af00 20 66 6f 75 6e 64 2e 29 5e 20 20 5e 45 61 63 68   found.)^  ^Each
1af10 20 74 65 72 6d 20 6f 66 20 74 68 65 20 4f 52 44   term of the ORD
1af20 45 52 20 42 59 20 63 6c 61 75 73 65 20 69 73 20  ER BY clause is 
1af30 70 72 6f 63 65 73 73 65 64 20 73 65 70 61 72 61  processed separa
1af40 74 65 6c 79 20 0a 61 6e 64 20 6d 61 79 20 63 6f  tely .and may co
1af50 6d 65 20 66 72 6f 6d 20 64 69 66 66 65 72 65 6e  me from differen
1af60 74 20 53 45 4c 45 43 54 20 73 74 61 74 65 6d 65  t SELECT stateme
1af70 6e 74 73 20 69 6e 20 74 68 65 20 63 6f 6d 70 6f  nts in the compo
1af80 75 6e 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68  und.</p>..<p>^Th
1af90 65 20 4c 49 4d 49 54 20 63 6c 61 75 73 65 20 70  e LIMIT clause p
1afa0 6c 61 63 65 73 20 61 6e 20 75 70 70 65 72 20 62  laces an upper b
1afb0 6f 75 6e 64 20 6f 6e 20 74 68 65 20 6e 75 6d 62  ound on the numb
1afc0 65 72 20 6f 66 20 72 6f 77 73 0a 72 65 74 75 72  er of rows.retur
1afd0 6e 65 64 20 69 6e 20 74 68 65 20 72 65 73 75 6c  ned in the resul
1afe0 74 2e 20 20 5e 41 20 6e 65 67 61 74 69 76 65 20  t.  ^A negative 
1aff0 4c 49 4d 49 54 20 69 6e 64 69 63 61 74 65 73 20  LIMIT indicates 
1b000 6e 6f 20 75 70 70 65 72 20 62 6f 75 6e 64 2e 0a  no upper bound..
1b010 5e 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20 4f 46  ^The optional OF
1b020 46 53 45 54 20 66 6f 6c 6c 6f 77 69 6e 67 20 4c  FSET following L
1b030 49 4d 49 54 20 73 70 65 63 69 66 69 65 73 20 68  IMIT specifies h
1b040 6f 77 20 6d 61 6e 79 0a 72 6f 77 73 20 74 6f 20  ow many.rows to 
1b050 73 6b 69 70 20 61 74 20 74 68 65 20 62 65 67 69  skip at the begi
1b060 6e 6e 69 6e 67 20 6f 66 20 74 68 65 20 72 65 73  nning of the res
1b070 75 6c 74 20 73 65 74 2e 0a 5e 49 6e 20 61 20 63  ult set..^In a c
1b080 6f 6d 70 6f 75 6e 64 20 71 75 65 72 79 2c 20 74  ompound query, t
1b090 68 65 20 4c 49 4d 49 54 20 63 6c 61 75 73 65 20  he LIMIT clause 
1b0a0 6d 61 79 20 6f 6e 6c 79 20 61 70 70 65 61 72 20  may only appear 
1b0b0 6f 6e 20 74 68 65 0a 66 69 6e 61 6c 20 53 45 4c  on the.final SEL
1b0c0 45 43 54 20 73 74 61 74 65 6d 65 6e 74 2e 0a 5e  ECT statement..^
1b0d0 54 68 65 20 6c 69 6d 69 74 20 69 73 20 61 70 70  The limit is app
1b0e0 6c 69 65 64 20 74 6f 20 74 68 65 20 65 6e 74 69  lied to the enti
1b0f0 72 65 20 71 75 65 72 79 20 6e 6f 74 0a 74 6f 20  re query not.to 
1b100 74 68 65 20 69 6e 64 69 76 69 64 75 61 6c 20 53  the individual S
1b110 45 4c 45 43 54 20 73 74 61 74 65 6d 65 6e 74 20  ELECT statement 
1b120 74 6f 20 77 68 69 63 68 20 69 74 20 69 73 20 61  to which it is a
1b130 74 74 61 63 68 65 64 2e 0a 5e 4e 6f 74 65 20 74  ttached..^Note t
1b140 68 61 74 20 69 66 20 74 68 65 20 4f 46 46 53 45  hat if the OFFSE
1b150 54 20 6b 65 79 77 6f 72 64 20 69 73 20 75 73 65  T keyword is use
1b160 64 20 69 6e 20 74 68 65 20 4c 49 4d 49 54 20 63  d in the LIMIT c
1b170 6c 61 75 73 65 2c 20 74 68 65 6e 20 74 68 65 0a  lause, then the.
1b180 6c 69 6d 69 74 20 69 73 20 74 68 65 20 66 69 72  limit is the fir
1b190 73 74 20 6e 75 6d 62 65 72 20 61 6e 64 20 74 68  st number and th
1b1a0 65 20 6f 66 66 73 65 74 20 69 73 20 74 68 65 20  e offset is the 
1b1b0 73 65 63 6f 6e 64 20 6e 75 6d 62 65 72 2e 20 20  second number.  
1b1c0 5e 49 66 20 61 0a 63 6f 6d 6d 61 20 69 73 20 75  ^If a.comma is u
1b1d0 73 65 64 20 69 6e 73 74 65 61 64 20 6f 66 20 74  sed instead of t
1b1e0 68 65 20 4f 46 46 53 45 54 20 6b 65 79 77 6f 72  he OFFSET keywor
1b1f0 64 2c 20 74 68 65 6e 20 74 68 65 20 6f 66 66 73  d, then the offs
1b200 65 74 20 69 73 20 74 68 65 0a 66 69 72 73 74 20  et is the.first 
1b210 6e 75 6d 62 65 72 20 61 6e 64 20 74 68 65 20 6c  number and the l
1b220 69 6d 69 74 20 69 73 20 74 68 65 20 73 65 63 6f  imit is the seco
1b230 6e 64 20 6e 75 6d 62 65 72 2e 20 20 54 68 69 73  nd number.  This
1b240 20 73 65 65 6d 69 6e 67 0a 63 6f 6e 74 72 61 64   seeming.contrad
1b250 69 63 74 69 6f 6e 20 69 73 20 69 6e 74 65 6e 74  iction is intent
1b260 69 6f 6e 61 6c 20 2d 20 69 74 20 6d 61 78 69 6d  ional - it maxim
1b270 69 7a 65 73 20 63 6f 6d 70 61 74 69 62 69 6c 69  izes compatibili
1b280 74 79 20 77 69 74 68 20 6c 65 67 61 63 79 0a 53  ty with legacy.S
1b290 51 4c 20 64 61 74 61 62 61 73 65 20 73 79 73 74  QL database syst
1b2a0 65 6d 73 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 5e 41  ems..</p>..<p>^A
1b2b0 20 63 6f 6d 70 6f 75 6e 64 20 53 45 4c 45 43 54   compound SELECT
1b2c0 20 69 73 20 66 6f 72 6d 65 64 20 66 72 6f 6d 20   is formed from 
1b2d0 74 77 6f 20 6f 72 20 6d 6f 72 65 20 73 69 6d 70  two or more simp
1b2e0 6c 65 20 53 45 4c 45 43 54 73 20 63 6f 6e 6e 65  le SELECTs conne
1b2f0 63 74 65 64 0a 62 79 20 6f 6e 65 20 6f 66 20 74  cted.by one of t
1b300 68 65 20 6f 70 65 72 61 74 6f 72 73 20 55 4e 49  he operators UNI
1b310 4f 4e 2c 20 55 4e 49 4f 4e 20 41 4c 4c 2c 20 49  ON, UNION ALL, I
1b320 4e 54 45 52 53 45 43 54 2c 20 6f 72 20 45 58 43  NTERSECT, or EXC
1b330 45 50 54 2e 20 20 5e 49 6e 0a 61 20 63 6f 6d 70  EPT.  ^In.a comp
1b340 6f 75 6e 64 20 53 45 4c 45 43 54 2c 20 61 6c 6c  ound SELECT, all
1b350 20 74 68 65 20 63 6f 6e 73 74 69 74 75 65 6e 74   the constituent
1b360 20 53 45 4c 45 43 54 73 20 6d 75 73 74 20 73 70   SELECTs must sp
1b370 65 63 69 66 79 20 74 68 65 0a 73 61 6d 65 20 6e  ecify the.same n
1b380 75 6d 62 65 72 20 6f 66 20 72 65 73 75 6c 74 20  umber of result 
1b390 63 6f 6c 75 6d 6e 73 2e 20 20 5e 54 68 65 72 65  columns.  ^There
1b3a0 20 6d 61 79 20 62 65 20 6f 6e 6c 79 20 61 20 73   may be only a s
1b3b0 69 6e 67 6c 65 20 4f 52 44 45 52 20 42 59 0a 63  ingle ORDER BY.c
1b3c0 6c 61 75 73 65 20 61 74 20 74 68 65 20 65 6e 64  lause at the end
1b3d0 20 6f 66 20 74 68 65 20 63 6f 6d 70 6f 75 6e 64   of the compound
1b3e0 20 53 45 4c 45 43 54 2e 20 20 5e 54 68 65 20 55   SELECT.  ^The U
1b3f0 4e 49 4f 4e 20 61 6e 64 20 55 4e 49 4f 4e 20 41  NION and UNION A
1b400 4c 4c 0a 6f 70 65 72 61 74 6f 72 73 20 63 6f 6d  LL.operators com
1b410 62 69 6e 65 20 74 68 65 20 72 65 73 75 6c 74 73  bine the results
1b420 20 6f 66 20 74 68 65 20 53 45 4c 45 43 54 73 20   of the SELECTs 
1b430 74 6f 20 74 68 65 20 72 69 67 68 74 20 61 6e 64  to the right and
1b440 20 6c 65 66 74 20 69 6e 74 6f 0a 61 20 73 69 6e   left into.a sin
1b450 67 6c 65 20 62 69 67 20 74 61 62 6c 65 2e 20 20  gle big table.  
1b460 5e 54 68 65 20 64 69 66 66 65 72 65 6e 63 65 20  ^The difference 
1b470 69 73 20 74 68 61 74 20 69 6e 20 55 4e 49 4f 4e  is that in UNION
1b480 20 61 6c 6c 20 72 65 73 75 6c 74 20 72 6f 77 73   all result rows
1b490 0a 61 72 65 20 64 69 73 74 69 6e 63 74 20 77 68  .are distinct wh
1b4a0 65 72 65 20 69 6e 20 55 4e 49 4f 4e 20 41 4c 4c  ere in UNION ALL
1b4b0 20 74 68 65 72 65 20 6d 61 79 20 62 65 20 64 75   there may be du
1b4c0 70 6c 69 63 61 74 65 73 2e 0a 5e 54 68 65 20 49  plicates..^The I
1b4d0 4e 54 45 52 53 45 43 54 20 6f 70 65 72 61 74 6f  NTERSECT operato
1b4e0 72 20 74 61 6b 65 73 20 74 68 65 20 69 6e 74 65  r takes the inte
1b4f0 72 73 65 63 74 69 6f 6e 20 6f 66 20 74 68 65 20  rsection of the 
1b500 72 65 73 75 6c 74 73 20 6f 66 20 74 68 65 0a 6c  results of the.l
1b510 65 66 74 20 61 6e 64 20 72 69 67 68 74 20 53 45  eft and right SE
1b520 4c 45 43 54 73 2e 20 20 5e 45 58 43 45 50 54 20  LECTs.  ^EXCEPT 
1b530 74 61 6b 65 73 20 74 68 65 20 72 65 73 75 6c 74  takes the result
1b540 20 6f 66 20 6c 65 66 74 20 53 45 4c 45 43 54 20   of left SELECT 
1b550 61 66 74 65 72 0a 72 65 6d 6f 76 69 6e 67 20 74  after.removing t
1b560 68 65 20 72 65 73 75 6c 74 73 20 6f 66 20 74 68  he results of th
1b570 65 20 72 69 67 68 74 20 53 45 4c 45 43 54 2e 20  e right SELECT. 
1b580 20 5e 57 68 65 6e 20 74 68 72 65 65 20 6f 72 20   ^When three or 
1b590 6d 6f 72 65 20 53 45 4c 45 43 54 73 0a 61 72 65  more SELECTs.are
1b5a0 20 63 6f 6e 6e 65 63 74 65 64 20 69 6e 74 6f 20   connected into 
1b5b0 61 20 63 6f 6d 70 6f 75 6e 64 2c 20 74 68 65 79  a compound, they
1b5c0 20 67 72 6f 75 70 20 66 72 6f 6d 20 6c 65 66 74   group from left
1b5d0 20 74 6f 20 72 69 67 68 74 2e 3c 2f 70 3e 0a 0a   to right.</p>..
1b5e0 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23  .<tcl>.#########
1b5f0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1b600 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1b610 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1b620 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1b630 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 55 50  #####.Section UP
1b640 44 41 54 45 20 75 70 64 61 74 65 20 7b 55 50 44  DATE update {UPD
1b650 41 54 45 20 2a 55 50 44 41 54 45 73 7d 0a 0a 42  ATE *UPDATEs}..B
1b660 75 62 62 6c 65 44 69 61 67 72 61 6d 20 75 70 64  ubbleDiagram upd
1b670 61 74 65 2d 73 74 6d 74 20 31 0a 42 75 62 62 6c  ate-stmt 1.Bubbl
1b680 65 44 69 61 67 72 61 6d 20 71 75 61 6c 69 66 69  eDiagram qualifi
1b690 65 64 2d 74 61 62 6c 65 2d 6e 61 6d 65 0a 3c 2f  ed-table-name.</
1b6a0 74 63 6c 3e 0a 0a 3c 70 3e 5e 54 68 65 20 55 50  tcl>..<p>^The UP
1b6b0 44 41 54 45 20 73 74 61 74 65 6d 65 6e 74 20 69  DATE statement i
1b6c0 73 20 75 73 65 64 20 74 6f 20 63 68 61 6e 67 65  s used to change
1b6d0 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 63 6f   the value of co
1b6e0 6c 75 6d 6e 73 20 69 6e 20 0a 73 65 6c 65 63 74  lumns in .select
1b6f0 65 64 20 72 6f 77 73 20 6f 66 20 61 20 74 61 62  ed rows of a tab
1b700 6c 65 2e 20 20 5e 45 61 63 68 20 61 73 73 69 67  le.  ^Each assig
1b710 6e 6d 65 6e 74 20 69 6e 20 61 6e 20 55 50 44 41  nment in an UPDA
1b720 54 45 20 73 70 65 63 69 66 69 65 73 0a 61 20 63  TE specifies.a c
1b730 6f 6c 75 6d 6e 20 6e 61 6d 65 20 74 6f 20 74 68  olumn name to th
1b740 65 20 6c 65 66 74 20 6f 66 20 74 68 65 20 65 71  e left of the eq
1b750 75 61 6c 73 20 73 69 67 6e 20 61 6e 64 20 61 6e  uals sign and an
1b760 20 61 72 62 69 74 72 61 72 79 20 65 78 70 72 65   arbitrary expre
1b770 73 73 69 6f 6e 0a 74 6f 20 74 68 65 20 72 69 67  ssion.to the rig
1b780 68 74 2e 20 20 5e 54 68 65 20 65 78 70 72 65 73  ht.  ^The expres
1b790 73 69 6f 6e 73 20 6d 61 79 20 75 73 65 20 74 68  sions may use th
1b7a0 65 20 76 61 6c 75 65 73 20 6f 66 20 6f 74 68 65  e values of othe
1b7b0 72 20 63 6f 6c 75 6d 6e 73 2e 0a 5e 41 6c 6c 20  r columns..^All 
1b7c0 65 78 70 72 65 73 73 69 6f 6e 73 20 61 72 65 20  expressions are 
1b7d0 65 76 61 6c 75 61 74 65 64 20 62 65 66 6f 72 65  evaluated before
1b7e0 20 61 6e 79 20 61 73 73 69 67 6e 6d 65 6e 74 73   any assignments
1b7f0 20 61 72 65 20 6d 61 64 65 2e 0a 5e 41 20 57 48   are made..^A WH
1b800 45 52 45 20 63 6c 61 75 73 65 20 63 61 6e 20 62  ERE clause can b
1b810 65 20 75 73 65 64 20 74 6f 20 72 65 73 74 72 69  e used to restri
1b820 63 74 20 77 68 69 63 68 20 72 6f 77 73 20 61 72  ct which rows ar
1b830 65 20 75 70 64 61 74 65 64 2e 3c 2f 70 3e 0a 0a  e updated.</p>..
1b840 3c 70 3e 5e 54 68 65 20 6f 70 74 69 6f 6e 61 6c  <p>^The optional
1b850 20 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65   conflict-clause
1b860 20 61 6c 6c 6f 77 73 20 74 68 65 20 73 70 65 63   allows the spec
1b870 69 66 69 63 61 74 69 6f 6e 20 6f 66 20 61 6e 20  ification of an 
1b880 61 6c 74 65 72 6e 61 74 69 76 65 0a 63 6f 6e 73  alternative.cons
1b890 74 72 61 69 6e 74 20 63 6f 6e 66 6c 69 63 74 20  traint conflict 
1b8a0 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72  resolution algor
1b8b0 69 74 68 6d 20 74 6f 20 75 73 65 20 64 75 72 69  ithm to use duri
1b8c0 6e 67 20 74 68 69 73 20 6f 6e 65 20 55 50 44 41  ng this one UPDA
1b8d0 54 45 20 63 6f 6d 6d 61 6e 64 2e 0a 53 65 65 20  TE command..See 
1b8e0 74 68 65 20 73 65 63 74 69 6f 6e 20 74 69 74 6c  the section titl
1b8f0 65 64 0a 5b 4f 4e 20 43 4f 4e 46 4c 49 43 54 5d  ed.[ON CONFLICT]
1b900 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20   for additional 
1b910 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 3c 2f 70 3e  information.</p>
1b920 0a 0a 3c 68 33 3e 52 65 73 74 72 69 63 74 69 6f  ..<h3>Restrictio
1b930 6e 73 20 6f 6e 20 55 50 44 41 54 45 20 53 74 61  ns on UPDATE Sta
1b940 74 65 6d 65 6e 74 73 20 57 69 74 68 69 6e 20 43  tements Within C
1b950 52 45 41 54 45 20 54 52 49 47 47 45 52 3c 2f 68  REATE TRIGGER</h
1b960 33 3e 0a 0a 3c 70 3e 5e 54 68 65 72 65 20 61 72  3>..<p>^There ar
1b970 65 20 61 64 64 69 74 69 6f 6e 61 6c 20 73 79 6e  e additional syn
1b980 74 61 78 20 72 65 73 74 72 69 63 74 69 6f 6e 73  tax restrictions
1b990 20 6f 6e 20 55 50 44 41 54 45 20 73 74 61 74 65   on UPDATE state
1b9a0 6d 65 6e 74 73 20 74 68 61 74 0a 6f 63 63 75 72  ments that.occur
1b9b0 20 77 69 74 68 69 6e 20 74 68 65 20 62 6f 64 79   within the body
1b9c0 20 6f 66 20 61 20 5b 43 52 45 41 54 45 20 54 52   of a [CREATE TR
1b9d0 49 47 47 45 52 5d 20 73 74 61 74 65 6d 65 6e 74  IGGER] statement
1b9e0 2e 20 20 5e 54 68 65 20 3c 69 3e 74 61 62 6c 65  .  ^The <i>table
1b9f0 2d 6e 61 6d 65 3c 2f 69 3e 0a 6f 66 20 74 68 65  -name</i>.of the
1ba00 20 55 50 44 41 54 45 20 6d 75 73 74 20 62 65 20   UPDATE must be 
1ba10 75 6e 71 75 61 6c 69 66 69 65 64 2e 20 0a 5e 28  unqualified. .^(
1ba20 49 6e 20 6f 74 68 65 72 20 77 6f 72 64 73 2c 20  In other words, 
1ba30 74 68 65 20 3c 69 3e 64 61 74 61 62 61 73 65 2d  the <i>database-
1ba40 6e 61 6d 65 3c 2f 69 3e 3c 62 3e 2e 3c 2f 62 3e  name</i><b>.</b>
1ba50 20 70 72 65 66 69 78 20 0a 6f 6e 20 74 68 65 20   prefix .on the 
1ba60 74 61 62 6c 65 20 6e 61 6d 65 20 6f 66 20 74 68  table name of th
1ba70 65 20 55 50 44 41 54 45 20 69 73 20 6e 6f 74 20  e UPDATE is not 
1ba80 61 6c 6c 6f 77 65 64 20 77 69 74 68 69 6e 20 74  allowed within t
1ba90 72 69 67 67 65 72 73 2e 29 5e 0a 5e 54 68 65 20  riggers.)^.^The 
1baa0 74 61 62 6c 65 20 74 6f 20 62 65 20 75 70 64 61  table to be upda
1bab0 74 65 64 20 6d 75 73 74 20 62 65 20 69 6e 20 74  ted must be in t
1bac0 68 65 20 73 61 6d 65 0a 64 61 74 61 62 61 73 65  he same.database
1bad0 20 61 73 20 74 68 65 20 74 61 62 6c 65 20 74 6f   as the table to
1bae0 20 77 68 69 63 68 20 74 68 65 20 74 72 69 67 67   which the trigg
1baf0 65 72 20 69 73 20 61 74 74 61 63 68 65 64 2e 3c  er is attached.<
1bb00 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20 49 4e 44  /p>..<p>^The IND
1bb10 45 58 45 44 20 42 59 20 61 6e 64 20 4e 4f 54 20  EXED BY and NOT 
1bb20 49 4e 44 45 58 45 44 20 63 6c 61 75 73 65 73 20  INDEXED clauses 
1bb30 61 72 65 20 6e 6f 74 20 61 6c 6c 6f 77 65 64 20  are not allowed 
1bb40 6f 6e 20 55 50 44 41 54 45 0a 73 74 61 74 65 6d  on UPDATE.statem
1bb50 65 6e 74 73 20 77 69 74 68 69 6e 20 74 72 69 67  ents within trig
1bb60 67 65 72 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54  gers.</p>..<p>^T
1bb70 68 65 20 4c 49 4d 49 54 20 63 6c 61 75 73 65 20  he LIMIT clause 
1bb80 66 6f 72 20 55 50 44 41 54 45 20 69 73 20 75 6e  for UPDATE is un
1bb90 73 75 70 70 6f 72 74 65 64 20 77 69 74 68 69 6e  supported within
1bba0 20 74 72 69 67 67 65 72 73 2e 3c 2f 70 3e 0a 0a   triggers.</p>..
1bbb0 3c 68 33 3e 4f 70 74 69 6f 6e 61 6c 20 4c 49 4d  <h3>Optional LIM
1bbc0 49 54 20 61 6e 64 20 4f 52 44 45 52 20 42 59 20  IT and ORDER BY 
1bbd0 43 6c 61 75 73 65 73 3c 2f 68 33 3e 0a 0a 3c 70  Clauses</h3>..<p
1bbe0 3e 5e 28 49 66 20 53 51 4c 69 74 65 20 69 73 20  >^(If SQLite is 
1bbf0 62 75 69 6c 74 20 77 69 74 68 20 74 68 65 20 5b  built with the [
1bc00 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 55 50  SQLITE_ENABLE_UP
1bc10 44 41 54 45 5f 44 45 4c 45 54 45 5f 4c 49 4d 49  DATE_DELETE_LIMI
1bc20 54 5d 0a 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  T].compile-time 
1bc30 6f 70 74 69 6f 6e 20 74 68 65 6e 20 74 68 65 20  option then the 
1bc40 73 79 6e 74 61 78 20 6f 66 20 74 68 65 20 55 50  syntax of the UP
1bc50 44 41 54 45 20 73 74 61 74 65 6d 65 6e 74 20 69  DATE statement i
1bc60 73 20 65 78 74 65 6e 64 65 64 0a 77 69 74 68 20  s extended.with 
1bc70 6f 70 74 69 6f 6e 61 6c 20 4f 52 44 45 52 20 42  optional ORDER B
1bc80 59 20 61 6e 64 20 4c 49 4d 49 54 20 63 6c 61 75  Y and LIMIT clau
1bc90 73 65 73 29 5e 20 61 73 20 66 6f 6c 6c 6f 77 73  ses)^ as follows
1bca0 3a 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 42 75 62 62  :</p>..<tcl>Bubb
1bcb0 6c 65 44 69 61 67 72 61 6d 20 75 70 64 61 74 65  leDiagram update
1bcc0 2d 73 74 6d 74 2d 6c 69 6d 69 74 65 64 3c 2f 74  -stmt-limited</t
1bcd0 63 6c 3e 0a 0a 3c 70 3e 5e 54 68 65 20 6f 70 74  cl>..<p>^The opt
1bce0 69 6f 6e 61 6c 20 4c 49 4d 49 54 20 63 6c 61 75  ional LIMIT clau
1bcf0 73 65 20 63 61 6e 20 62 65 20 75 73 65 64 20 74  se can be used t
1bd00 6f 20 6c 69 6d 69 74 20 74 68 65 20 6e 75 6d 62  o limit the numb
1bd10 65 72 20 6f 66 0a 72 6f 77 73 20 6d 6f 64 69 66  er of.rows modif
1bd20 69 65 64 2c 20 61 6e 64 20 74 68 65 72 65 62 79  ied, and thereby
1bd30 20 6c 69 6d 69 74 20 74 68 65 20 73 69 7a 65 20   limit the size 
1bd40 6f 66 20 74 68 65 20 74 72 61 6e 73 61 63 74 69  of the transacti
1bd50 6f 6e 2e 0a 5e 54 68 65 20 4f 52 44 45 52 20 42  on..^The ORDER B
1bd60 59 20 63 6c 61 75 73 65 20 6f 6e 20 61 6e 20 55  Y clause on an U
1bd70 50 44 41 54 45 20 73 74 61 74 65 6d 65 6e 74 0a  PDATE statement.
1bd80 69 73 20 75 73 65 64 20 6f 6e 6c 79 20 74 6f 20  is used only to 
1bd90 64 65 74 65 72 6d 69 6e 65 20 77 68 69 63 68 20  determine which 
1bda0 72 6f 77 73 20 66 61 6c 6c 0a 77 69 74 68 69 6e  rows fall.within
1bdb0 20 74 68 65 20 4c 49 4d 49 54 2e 20 20 5e 54 68   the LIMIT.  ^Th
1bdc0 65 20 6f 72 64 65 72 20 69 6e 20 77 68 69 63 68  e order in which
1bdd0 20 72 6f 77 73 20 61 72 65 20 6d 6f 64 69 66 69   rows are modifi
1bde0 65 64 20 69 73 20 61 72 62 69 74 72 61 72 79 0a  ed is arbitrary.
1bdf0 61 6e 64 20 69 73 20 6e 6f 74 20 64 65 74 65 72  and is not deter
1be00 6d 69 6e 65 64 20 62 79 20 74 68 65 20 4f 52 44  mined by the ORD
1be10 45 52 20 42 59 20 63 6c 61 75 73 65 2e 3c 2f 70  ER BY clause.</p
1be20 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23  >..<tcl>.#######
1be30 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1be40 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1be50 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1be60 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1be70 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20  #######.Section 
1be80 56 41 43 55 55 4d 20 76 61 63 75 75 6d 20 56 41  VACUUM vacuum VA
1be90 43 55 55 4d 0a 0a 42 75 62 62 6c 65 44 69 61 67  CUUM..BubbleDiag
1bea0 72 61 6d 20 76 61 63 75 75 6d 2d 73 74 6d 74 20  ram vacuum-stmt 
1beb0 31 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 5e 57 68  1.</tcl>..<p>^Wh
1bec0 65 6e 20 61 6e 20 6f 62 6a 65 63 74 20 28 74 61  en an object (ta
1bed0 62 6c 65 2c 20 69 6e 64 65 78 2c 20 74 72 69 67  ble, index, trig
1bee0 67 65 72 2c 20 6f 72 20 76 69 65 77 29 20 69 73  ger, or view) is
1bef0 20 64 72 6f 70 70 65 64 20 66 72 6f 6d 20 74 68   dropped from th
1bf00 65 20 0a 64 61 74 61 62 61 73 65 2c 20 69 74 20  e .database, it 
1bf10 6c 65 61 76 65 73 20 62 65 68 69 6e 64 20 65 6d  leaves behind em
1bf20 70 74 79 20 73 70 61 63 65 2e 20 0a 5e 54 68 69  pty space. .^Thi
1bf30 73 20 65 6d 70 74 79 20 73 70 61 63 65 20 77 69  s empty space wi
1bf40 6c 6c 20 62 65 20 72 65 75 73 65 64 20 74 68 65  ll be reused the
1bf50 20 6e 65 78 74 20 74 69 6d 65 20 6e 65 77 20 69   next time new i
1bf60 6e 66 6f 72 6d 61 74 69 6f 6e 20 69 73 0a 61 64  nformation is.ad
1bf70 64 65 64 20 74 6f 20 74 68 65 20 64 61 74 61 62  ded to the datab
1bf80 61 73 65 2e 20 20 42 75 74 20 69 6e 20 74 68 65  ase.  But in the
1bf90 20 6d 65 61 6e 74 69 6d 65 2c 20 74 68 65 20 64   meantime, the d
1bfa0 61 74 61 62 61 73 65 20 66 69 6c 65 20 6d 69 67  atabase file mig
1bfb0 68 74 0a 62 65 20 6c 61 72 67 65 72 20 74 68 61  ht.be larger tha
1bfc0 6e 20 73 74 72 69 63 74 6c 79 20 6e 65 63 65 73  n strictly neces
1bfd0 73 61 72 79 2e 20 20 41 6c 73 6f 2c 20 66 72 65  sary.  Also, fre
1bfe0 71 75 65 6e 74 20 69 6e 73 65 72 74 73 2c 20 75  quent inserts, u
1bff0 70 64 61 74 65 73 2c 0a 61 6e 64 20 64 65 6c 65  pdates,.and dele
1c000 74 65 73 20 63 61 6e 20 63 61 75 73 65 20 74 68  tes can cause th
1c010 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 69 6e  e information in
1c020 20 74 68 65 20 64 61 74 61 62 61 73 65 20 74 6f   the database to
1c030 20 62 65 63 6f 6d 65 0a 66 72 61 67 6d 65 6e 74   become.fragment
1c040 65 64 20 2d 20 73 63 61 74 74 65 72 65 64 20 6f  ed - scattered o
1c050 75 74 20 61 6c 6c 20 61 63 72 6f 73 73 20 74 68  ut all across th
1c060 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20  e database file 
1c070 72 61 74 68 65 72 0a 74 68 61 6e 20 63 6c 75 73  rather.than clus
1c080 74 65 72 65 64 20 74 6f 67 65 74 68 65 72 20 69  tered together i
1c090 6e 20 6f 6e 65 20 70 6c 61 63 65 2e 3c 2f 70 3e  n one place.</p>
1c0a0 0a 0a 3c 70 3e 5e 54 68 65 20 56 41 43 55 55 4d  ..<p>^The VACUUM
1c0b0 20 63 6f 6d 6d 61 6e 64 20 63 6c 65 61 6e 73 0a   command cleans.
1c0c0 74 68 65 20 6d 61 69 6e 20 64 61 74 61 62 61 73  the main databas
1c0d0 65 20 62 79 20 63 6f 70 79 69 6e 67 20 69 74 73  e by copying its
1c0e0 20 63 6f 6e 74 65 6e 74 73 20 74 6f 20 61 20 74   contents to a t
1c0f0 65 6d 70 6f 72 61 72 79 20 64 61 74 61 62 61 73  emporary databas
1c100 65 20 66 69 6c 65 20 61 6e 64 20 0a 72 65 6c 6f  e file and .relo
1c110 61 64 69 6e 67 20 74 68 65 20 6f 72 69 67 69 6e  ading the origin
1c120 61 6c 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  al database file
1c130 20 66 72 6f 6d 20 74 68 65 20 63 6f 70 79 2e 20   from the copy. 
1c140 20 54 68 69 73 20 65 6c 69 6d 69 6e 61 74 65 73   This eliminates
1c150 20 0a 66 72 65 65 20 70 61 67 65 73 2c 20 20 61   .free pages,  a
1c160 6c 69 67 6e 73 20 74 61 62 6c 65 20 64 61 74 61  ligns table data
1c170 20 74 6f 20 62 65 20 63 6f 6e 74 69 67 75 6f 75   to be contiguou
1c180 73 2c 20 61 6e 64 20 6f 74 68 65 72 77 69 73 65  s, and otherwise
1c190 20 63 6c 65 61 6e 73 20 0a 75 70 20 74 68 65 20   cleans .up the 
1c1a0 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 73 74  database file st
1c1b0 72 75 63 74 75 72 65 2e 3c 2f 70 3e 0a 0a 3c 70  ructure.</p>..<p
1c1c0 3e 5e 54 68 65 20 56 41 43 55 55 4d 20 63 6f 6d  >^The VACUUM com
1c1d0 6d 61 6e 64 20 6d 61 79 20 63 68 61 6e 67 65 20  mand may change 
1c1e0 74 68 65 20 0a 5b 52 4f 57 49 44 20 7c 20 52 4f  the .[ROWID | RO
1c1f0 57 49 44 73 5d 20 6f 66 20 65 6e 74 72 69 65 73  WIDs] of entries
1c200 20 69 6e 20 74 61 62 6c 65 73 20 74 68 61 74 20   in tables that 
1c210 64 6f 0a 6e 6f 74 20 68 61 76 65 20 61 6e 20 65  do.not have an e
1c220 78 70 6c 69 63 69 74 20 5b 49 4e 54 45 47 45 52  xplicit [INTEGER
1c230 20 50 52 49 4d 41 52 59 20 4b 45 59 5d 2e 3c 2f   PRIMARY KEY].</
1c240 70 3e 0a 0a 3c 70 3e 5e 56 41 43 55 55 4d 20 6f  p>..<p>^VACUUM o
1c250 6e 6c 79 20 77 6f 72 6b 73 20 6f 6e 20 74 68 65  nly works on the
1c260 20 6d 61 69 6e 20 64 61 74 61 62 61 73 65 2e 0a   main database..
1c270 49 74 20 69 73 20 6e 6f 74 20 70 6f 73 73 69 62  It is not possib
1c280 6c 65 20 74 6f 20 56 41 43 55 55 4d 20 61 6e 20  le to VACUUM an 
1c290 61 74 74 61 63 68 65 64 20 64 61 74 61 62 61 73  attached databas
1c2a0 65 20 66 69 6c 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e  e file.</p>..<p>
1c2b0 5e 54 68 65 20 56 41 43 55 55 4d 20 63 6f 6d 6d  ^The VACUUM comm
1c2c0 61 6e 64 20 77 69 6c 6c 20 66 61 69 6c 20 69 66  and will fail if
1c2d0 20 74 68 65 72 65 20 69 73 20 61 6e 20 61 63 74   there is an act
1c2e0 69 76 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 2e  ive transaction.
1c2f0 0a 5e 54 68 65 20 56 41 43 55 55 4d 20 63 6f 6d  .^The VACUUM com
1c300 6d 61 6e 64 20 69 73 20 61 20 6e 6f 2d 6f 70 20  mand is a no-op 
1c310 66 6f 72 20 69 6e 2d 6d 65 6d 6f 72 79 20 64 61  for in-memory da
1c320 74 61 62 61 73 65 73 2e 3c 2f 70 3e 0a 0a 3c 70  tabases.</p>..<p
1c330 3e 5e 28 41 73 20 6f 66 20 53 51 4c 69 74 65 20  >^(As of SQLite 
1c340 76 65 72 73 69 6f 6e 20 33 2e 31 2c 20 61 6e 20  version 3.1, an 
1c350 61 6c 74 65 72 6e 61 74 69 76 65 20 74 6f 20 75  alternative to u
1c360 73 69 6e 67 20 74 68 65 20 56 41 43 55 55 4d 20  sing the VACUUM 
1c370 63 6f 6d 6d 61 6e 64 0a 69 73 20 61 75 74 6f 2d  command.is auto-
1c380 76 61 63 75 75 6d 20 6d 6f 64 65 2c 20 65 6e 61  vacuum mode, ena
1c390 62 6c 65 64 20 75 73 69 6e 67 20 74 68 65 20 0a  bled using the .
1c3a0 5b 61 75 74 6f 5f 76 61 63 75 75 6d 5d 20 70 72  [auto_vacuum] pr
1c3b0 61 67 6d 61 2e 29 5e 20 20 5e 57 68 65 6e 20 5b  agma.)^  ^When [
1c3c0 61 75 74 6f 5f 76 61 63 75 75 6d 5d 20 69 73 20  auto_vacuum] is 
1c3d0 65 6e 61 62 6c 65 64 20 66 6f 72 20 61 20 64 61  enabled for a da
1c3e0 74 61 62 61 73 65 2c 20 0a 6c 61 72 67 65 20 64  tabase, .large d
1c3f0 65 6c 65 74 65 73 20 63 61 75 73 65 0a 74 68 65  eletes cause.the
1c400 20 73 69 7a 65 20 6f 66 20 74 68 65 20 64 61 74   size of the dat
1c410 61 62 61 73 65 20 66 69 6c 65 20 74 6f 20 73 68  abase file to sh
1c420 72 69 6e 6b 2e 20 20 48 6f 77 65 76 65 72 2c 20  rink.  However, 
1c430 5b 61 75 74 6f 5f 76 61 63 75 75 6d 5d 0a 61 6c  [auto_vacuum].al
1c440 73 6f 20 63 61 75 73 65 73 20 65 78 63 65 73 73  so causes excess
1c450 20 66 72 61 67 6d 65 6e 74 61 74 69 6f 6e 20 6f   fragmentation o
1c460 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66  f the database f
1c470 69 6c 65 2e 20 20 5e 41 6e 64 20 5b 61 75 74 6f  ile.  ^And [auto
1c480 5f 76 61 63 75 75 6d 5d 0a 64 6f 65 73 20 6e 6f  _vacuum].does no
1c490 74 20 63 6f 6d 70 61 63 74 20 70 61 72 74 69 61  t compact partia
1c4a0 6c 6c 79 20 66 69 6c 6c 65 64 20 70 61 67 65 73  lly filled pages
1c4b0 20 6f 66 20 74 68 65 20 64 61 74 61 62 61 73 65   of the database
1c4c0 20 61 73 20 56 41 43 55 55 4d 0a 64 6f 65 73 2e   as VACUUM.does.
1c4d0 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20 5b 70  </p>..<p>^The [p
1c4e0 61 67 65 5f 73 69 7a 65 5d 20 61 6e 64 2f 6f 72  age_size] and/or
1c4f0 20 5b 61 75 74 6f 5f 76 61 63 75 75 6d 5d 20 6d   [auto_vacuum] m
1c500 6f 64 65 20 6f 66 20 61 20 64 61 74 61 62 61 73  ode of a databas
1c510 65 20 63 61 6e 20 62 65 20 63 68 61 6e 67 65 64  e can be changed
1c520 0a 62 79 20 69 6e 76 6f 6b 69 6e 67 20 74 68 65  .by invoking the
1c530 20 5b 70 61 67 65 5f 73 69 7a 65 20 70 72 61 67   [page_size prag
1c540 6d 61 5d 20 61 6e 64 2f 6f 72 20 5b 61 75 74 6f  ma] and/or [auto
1c550 5f 76 61 63 75 75 6d 20 70 72 61 67 6d 61 5d 20  _vacuum pragma] 
1c560 61 6e 64 20 74 68 65 6e 0a 69 6d 6d 65 64 69 61  and then.immedia
1c570 74 65 6c 79 20 56 41 43 55 55 4d 69 6e 67 20 74  tely VACUUMing t
1c580 68 65 20 64 61 74 61 62 61 73 65 2e 20 5e 45 78  he database. ^Ex
1c590 63 65 70 74 2c 20 74 68 65 20 70 61 67 65 20 73  cept, the page s
1c5a0 69 7a 65 20 63 61 6e 6e 6f 74 20 62 65 0a 63 68  ize cannot be.ch
1c5b0 61 6e 67 65 64 20 77 68 65 6e 20 5b 77 72 69 74  anged when [writ
1c5c0 65 2d 61 68 65 61 64 20 6c 6f 67 5d 20 6d 6f 64  e-ahead log] mod
1c5d0 65 20 69 73 20 69 6e 20 75 73 65 2e 3c 2f 70 3e  e is in use.</p>
1c5e0 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23  ..<tcl>.########
1c5f0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1c600 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1c610 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1c620 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1c630 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b  ######.Section {
1c640 49 4e 44 45 58 45 44 20 42 59 7d 20 69 6e 64 65  INDEXED BY} inde
1c650 78 65 64 62 79 20 7b 7b 49 4e 44 45 58 45 44 20  xedby {{INDEXED 
1c660 42 59 7d 20 7b 4e 4f 54 20 49 4e 44 45 58 45 44  BY} {NOT INDEXED
1c670 7d 7d 0a 0a 3c 2f 74 63 6c 3e 0a 3c 70 3e 5e 54  }}..</tcl>.<p>^T
1c680 68 65 20 49 4e 44 45 58 45 44 20 42 59 20 70 68  he INDEXED BY ph
1c690 72 61 73 65 20 69 73 20 61 20 53 51 4c 20 65 78  rase is a SQL ex
1c6a0 74 65 6e 73 69 6f 6e 20 66 6f 75 6e 64 20 6f 6e  tension found on
1c6b0 6c 79 20 69 6e 20 53 51 4c 69 74 65 20 77 68 69  ly in SQLite whi
1c6c0 63 68 20 63 61 6e 0a 62 65 20 75 73 65 64 20 74  ch can.be used t
1c6d0 6f 20 76 65 72 69 66 79 20 74 68 61 74 20 74 68  o verify that th
1c6e0 65 20 63 6f 72 72 65 63 74 20 69 6e 64 69 63 65  e correct indice
1c6f0 73 20 61 72 65 20 62 65 69 6e 67 20 75 73 65 64  s are being used
1c700 20 6f 6e 20 61 20 5b 44 45 4c 45 54 45 5d 2c 0a   on a [DELETE],.
1c710 5b 53 45 4c 45 43 54 5d 2c 20 6f 72 20 5b 55 50  [SELECT], or [UP
1c720 44 41 54 45 5d 20 73 74 61 74 65 6d 65 6e 74 2e  DATE] statement.
1c730 0a 5e 54 68 65 20 49 4e 44 45 58 45 44 20 42 59  .^The INDEXED BY
1c740 20 70 68 72 61 73 65 20 61 6c 77 61 79 73 20 66   phrase always f
1c750 6f 6c 6c 6f 77 73 20 74 68 65 20 6e 61 6d 65 20  ollows the name 
1c760 6f 66 20 61 20 74 61 62 6c 65 20 74 68 61 74 20  of a table that 
1c770 53 51 4c 69 74 65 20 77 69 6c 6c 0a 62 65 20 72  SQLite will.be r
1c780 65 61 64 69 6e 67 2e 20 20 54 68 65 20 49 4e 44  eading.  The IND
1c790 45 58 45 44 20 42 59 20 70 68 72 61 73 65 20 63  EXED BY phrase c
1c7a0 61 6e 20 62 65 20 73 65 65 6e 20 69 6e 20 74 68  an be seen in th
1c7b0 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 73 79 6e 74  e following synt
1c7c0 61 78 0a 64 69 61 67 72 61 6d 73 3a 3c 2f 70 3e  ax.diagrams:</p>
1c7d0 0a 0a 3c 74 63 6c 3e 0a 42 75 62 62 6c 65 44 69  ..<tcl>.BubbleDi
1c7e0 61 67 72 61 6d 20 71 75 61 6c 69 66 69 65 64 2d  agram qualified-
1c7f0 74 61 62 6c 65 2d 6e 61 6d 65 0a 42 75 62 62 6c  table-name.Bubbl
1c800 65 44 69 61 67 72 61 6d 20 73 69 6e 67 6c 65 2d  eDiagram single-
1c810 73 6f 75 72 63 65 0a 3c 2f 74 63 6c 3e 0a 0a 3c  source.</tcl>..<
1c820 70 3e 5e 54 68 65 20 22 49 4e 44 45 58 45 44 20  p>^The "INDEXED 
1c830 42 59 20 69 6e 64 65 78 2d 6e 61 6d 65 22 20 63  BY index-name" c
1c840 6c 61 75 73 65 20 73 70 65 63 69 66 69 65 73 20  lause specifies 
1c850 74 68 61 74 20 74 68 65 20 6e 61 6d 65 64 20 69  that the named i
1c860 6e 64 65 78 0a 6d 75 73 74 20 62 65 20 75 73 65  ndex.must be use
1c870 64 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 6c 6f  d in order to lo
1c880 6f 6b 20 75 70 20 76 61 6c 75 65 73 20 6f 6e 20  ok up values on 
1c890 74 68 65 20 70 72 65 63 65 64 69 6e 67 20 74 61  the preceding ta
1c8a0 62 6c 65 2e 0a 5e 49 66 20 69 6e 64 65 78 2d 6e  ble..^If index-n
1c8b0 61 6d 65 20 64 6f 65 73 20 6e 6f 74 20 65 78 69  ame does not exi
1c8c0 73 74 20 6f 72 20 63 61 6e 6e 6f 74 20 62 65 20  st or cannot be 
1c8d0 75 73 65 64 20 66 6f 72 20 74 68 65 20 71 75 65  used for the que
1c8e0 72 79 2c 20 74 68 65 6e 0a 74 68 65 20 70 72 65  ry, then.the pre
1c8f0 70 61 72 61 74 69 6f 6e 20 6f 66 20 74 68 65 20  paration of the 
1c900 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 66 61  SQL statement fa
1c910 69 6c 73 2e 0a 5e 28 54 68 65 20 22 4e 4f 54 20  ils..^(The "NOT 
1c920 49 4e 44 45 58 45 44 22 20 63 6c 61 75 73 65 20  INDEXED" clause 
1c930 73 70 65 63 69 66 69 65 73 20 74 68 61 74 20 6e  specifies that n
1c940 6f 20 69 6e 64 65 78 20 73 68 61 6c 6c 20 62 65  o index shall be
1c950 20 75 73 65 64 20 77 68 65 6e 0a 61 63 63 65 73   used when.acces
1c960 73 69 6e 67 20 74 68 65 20 70 72 65 63 65 64 69  sing the precedi
1c970 6e 67 20 74 61 62 6c 65 2c 20 69 6e 63 6c 75 64  ng table, includ
1c980 69 6e 67 20 69 6d 70 6c 69 65 64 20 69 6e 64 69  ing implied indi
1c990 63 65 73 20 63 72 65 61 74 65 20 62 79 0a 55 4e  ces create by.UN
1c9a0 49 51 55 45 20 61 6e 64 20 50 52 49 4d 41 52 59  IQUE and PRIMARY
1c9b0 20 4b 45 59 20 63 6f 6e 73 74 72 61 69 6e 74 73   KEY constraints
1c9c0 2e 20 20 48 6f 77 65 76 65 72 2c 20 74 68 65 20  .  However, the 
1c9d0 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59 20  INTEGER PRIMARY 
1c9e0 4b 45 59 0a 63 61 6e 20 73 74 69 6c 6c 20 62 65  KEY.can still be
1c9f0 20 75 73 65 64 20 74 6f 20 6c 6f 6f 6b 20 75 70   used to look up
1ca00 20 65 6e 74 72 69 65 73 20 65 76 65 6e 20 77 68   entries even wh
1ca10 65 6e 20 22 4e 4f 54 20 49 4e 44 45 58 45 44 22  en "NOT INDEXED"
1ca20 20 69 73 20 73 70 65 63 69 66 69 65 64 2e 29 5e   is specified.)^
1ca30 3c 2f 70 3e 0a 0a 3c 70 3e 53 6f 6d 65 20 53 51  </p>..<p>Some SQ
1ca40 4c 20 64 61 74 61 62 61 73 65 20 65 6e 67 69 6e  L database engin
1ca50 65 73 20 70 72 6f 76 69 64 65 20 6e 6f 6e 2d 73  es provide non-s
1ca60 74 61 6e 64 61 72 64 20 22 68 69 6e 74 22 20 6d  tandard "hint" m
1ca70 65 63 68 61 6e 69 73 6d 73 20 77 68 69 63 68 0a  echanisms which.
1ca80 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 67  can be used to g
1ca90 69 76 65 20 74 68 65 20 71 75 65 72 79 20 6f 70  ive the query op
1caa0 74 69 6d 69 7a 65 72 20 63 6c 75 65 73 20 61 62  timizer clues ab
1cab0 6f 75 74 20 77 68 61 74 20 69 6e 64 69 63 65 73  out what indices
1cac0 20 69 74 20 73 68 6f 75 6c 64 0a 75 73 65 20 66   it should.use f
1cad0 6f 72 20 61 20 70 61 72 74 69 63 75 6c 61 72 20  or a particular 
1cae0 73 74 61 74 65 6d 65 6e 74 2e 20 20 54 68 65 20  statement.  The 
1caf0 49 4e 44 45 58 20 42 59 20 63 6c 61 75 73 65 20  INDEX BY clause 
1cb00 6f 66 20 53 51 4c 69 74 65 20 69 73 20 0a 3c 65  of SQLite is .<e
1cb10 6d 3e 6e 6f 74 3c 2f 65 6d 3e 20 61 20 68 69 6e  m>not</em> a hin
1cb20 74 69 6e 67 20 6d 65 63 68 61 6e 69 73 6d 20 61  ting mechanism a
1cb30 6e 64 20 69 74 20 73 68 6f 75 6c 64 20 6e 6f 74  nd it should not
1cb40 20 62 65 20 75 73 65 64 20 61 73 20 73 75 63 68   be used as such
1cb50 2e 0a 5e 54 68 65 20 49 4e 44 45 58 45 44 20 42  ..^The INDEXED B
1cb60 59 20 63 6c 61 75 73 65 20 64 6f 65 73 20 6e 6f  Y clause does no
1cb70 74 20 67 69 76 65 20 74 68 65 20 6f 70 74 69 6d  t give the optim
1cb80 69 7a 65 72 20 68 69 6e 74 73 20 61 62 6f 75 74  izer hints about
1cb90 20 77 68 69 63 68 20 69 6e 64 65 78 0a 74 6f 20   which index.to 
1cba0 75 73 65 3b 20 69 74 20 67 69 76 65 73 20 74 68  use; it gives th
1cbb0 65 20 6f 70 74 69 6d 69 7a 65 72 20 61 20 72 65  e optimizer a re
1cbc0 71 75 69 72 65 6d 65 6e 74 20 6f 66 20 77 68 69  quirement of whi
1cbd0 63 68 20 69 6e 64 65 78 20 74 6f 20 75 73 65 2e  ch index to use.
1cbe0 0a 5e 49 66 20 74 68 65 20 71 75 65 72 79 20 6f  .^If the query o
1cbf0 70 74 69 6d 69 7a 65 72 20 69 73 20 75 6e 61 62  ptimizer is unab
1cc00 6c 65 20 74 6f 20 75 73 65 20 74 68 65 20 69 6e  le to use the in
1cc10 64 65 78 20 73 70 65 63 69 66 69 65 64 20 62 79  dex specified by
1cc20 20 74 68 65 0a 49 4e 44 45 58 20 42 59 20 63 6c   the.INDEX BY cl
1cc30 61 75 73 65 2c 20 74 68 65 6e 20 74 68 65 20 71  ause, then the q
1cc40 75 65 72 79 20 77 69 6c 6c 20 66 61 69 6c 20 77  uery will fail w
1cc50 69 74 68 20 61 6e 20 65 72 72 6f 72 2e 3c 2f 70  ith an error.</p
1cc60 3e 0a 0a 3c 70 3e 54 68 65 20 49 4e 44 45 58 45  >..<p>The INDEXE
1cc70 44 20 42 59 20 63 6c 61 75 73 65 20 69 73 20 3c  D BY clause is <
1cc80 65 6d 3e 6e 6f 74 3c 2f 65 6d 3e 20 69 6e 74 65  em>not</em> inte
1cc90 6e 64 65 64 20 66 6f 72 20 75 73 65 20 69 6e 20  nded for use in 
1cca0 74 75 6e 69 6e 67 0a 74 68 65 20 70 65 72 66 6f  tuning.the perfo
1ccb0 72 6d 61 6e 63 65 20 6f 66 20 61 20 71 75 65 72  rmance of a quer
1ccc0 79 2e 20 20 54 68 65 20 69 6e 74 65 6e 74 20 6f  y.  The intent o
1ccd0 66 20 74 68 65 20 49 4e 44 45 58 45 44 20 42 59  f the INDEXED BY
1cce0 20 63 6c 61 75 73 65 20 69 73 0a 74 6f 20 72 61   clause is.to ra
1ccf0 69 73 65 20 61 20 72 75 6e 2d 74 69 6d 65 20 65  ise a run-time e
1cd00 72 72 6f 72 20 69 66 20 61 20 73 63 68 65 6d 61  rror if a schema
1cd10 20 63 68 61 6e 67 65 2c 20 73 75 63 68 20 61 73   change, such as
1cd20 20 64 72 6f 70 70 69 6e 67 20 6f 72 0a 63 72 65   dropping or.cre
1cd30 61 74 69 6e 67 20 61 6e 20 69 6e 64 65 78 2c 20  ating an index, 
1cd40 63 61 75 73 65 73 20 74 68 65 20 71 75 65 72 79  causes the query
1cd50 20 70 6c 61 6e 20 66 6f 72 20 61 20 74 69 6d 65   plan for a time
1cd60 2d 73 65 6e 73 69 74 69 76 65 20 71 75 65 72 79  -sensitive query
1cd70 0a 74 6f 20 63 68 61 6e 67 65 2e 20 20 54 68 65  .to change.  The
1cd80 20 49 4e 44 45 58 45 44 20 42 59 20 63 6c 61 75   INDEXED BY clau
1cd90 73 65 20 69 73 20 64 65 73 69 67 6e 65 64 20 74  se is designed t
1cda0 6f 20 68 65 6c 70 20 64 65 74 65 63 74 0a 75 6e  o help detect.un
1cdb0 64 65 73 69 72 61 62 6c 65 20 71 75 65 72 79 20  desirable query 
1cdc0 70 6c 61 6e 20 63 68 61 6e 67 65 73 20 64 75 72  plan changes dur
1cdd0 69 6e 67 20 72 65 67 72 65 73 73 69 6f 6e 20 74  ing regression t
1cde0 65 73 74 69 6e 67 2e 0a 44 65 76 65 6c 6f 70 65  esting..Develope
1cdf0 72 73 20 61 72 65 20 61 64 6d 6f 6e 69 73 68 65  rs are admonishe
1ce00 64 20 74 6f 20 6f 6d 69 74 20 61 6c 6c 20 75 73  d to omit all us
1ce10 65 20 6f 66 20 49 4e 44 45 58 45 44 20 42 59 20  e of INDEXED BY 
1ce20 64 75 72 69 6e 67 0a 61 70 70 6c 69 63 61 74 69  during.applicati
1ce30 6f 6e 20 64 65 73 69 67 6e 2c 20 69 6d 70 6c 65  on design, imple
1ce40 6d 65 6e 74 61 74 69 6f 6e 2c 20 74 65 73 74 69  mentation, testi
1ce50 6e 67 2c 20 61 6e 64 20 74 75 6e 69 6e 67 2e 20  ng, and tuning. 
1ce60 20 49 66 0a 49 4e 44 45 58 45 44 20 42 59 20 69   If.INDEXED BY i
1ce70 73 20 74 6f 20 62 65 20 75 73 65 64 20 61 74 20  s to be used at 
1ce80 61 6c 6c 2c 20 69 74 20 73 68 6f 75 6c 64 20 62  all, it should b
1ce90 65 20 69 6e 73 65 72 74 65 64 20 61 74 20 74 68  e inserted at th
1cea0 65 20 76 65 72 79 0a 65 6e 64 20 6f 66 20 74 68  e very.end of th
1ceb0 65 20 64 65 76 65 6c 6f 70 6d 65 6e 74 20 70 72  e development pr
1cec0 6f 63 65 73 73 20 77 68 65 6e 20 22 6c 6f 63 6b  ocess when "lock
1ced0 69 6e 67 20 64 6f 77 6e 22 20 61 20 64 65 73 69  ing down" a desi
1cee0 67 6e 2e 3c 2f 70 3e 0a 0a 3c 68 33 3e 53 65 65  gn.</p>..<h3>See
1cef0 20 41 6c 73 6f 3a 3c 2f 68 33 3e 0a 0a 3c 70 3e   Also:</h3>..<p>
1cf00 54 68 65 20 5b 73 71 6c 69 74 65 33 5f 73 74 6d  The [sqlite3_stm
1cf10 74 5f 73 74 61 74 75 73 28 29 5d 20 43 2f 43 2b  t_status()] C/C+
1cf20 2b 20 69 6e 74 65 72 66 61 63 65 20 74 6f 67 65  + interface toge
1cf30 74 68 65 72 20 77 69 74 68 20 74 68 65 0a 5b 53  ther with the.[S
1cf40 51 4c 49 54 45 5f 53 54 4d 54 53 54 41 54 55 53  QLITE_STMTSTATUS
1cf50 5f 46 55 4c 4c 53 43 41 4e 5f 53 54 45 50 5d 20  _FULLSCAN_STEP] 
1cf60 61 6e 64 20 5b 53 51 4c 49 54 45 5f 53 54 4d 54  and [SQLITE_STMT
1cf70 53 54 41 54 55 53 5f 53 4f 52 54 5d 20 76 65 72  STATUS_SORT] ver
1cf80 62 73 0a 63 61 6e 20 62 65 20 75 73 65 64 20 74  bs.can be used t
1cf90 6f 20 64 65 74 65 63 74 20 61 74 20 72 75 6e 2d  o detect at run-
1cfa0 74 69 6d 65 20 77 68 65 6e 20 61 6e 20 53 51 4c  time when an SQL
1cfb0 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 6e 6f   statement is no
1cfc0 74 0a 6d 61 6b 69 6e 67 20 65 66 66 65 63 74 69  t.making effecti
1cfd0 76 65 20 75 73 65 20 6f 66 20 69 6e 64 69 63 65  ve use of indice
1cfe0 73 2e 20 20 4d 61 6e 79 20 61 70 70 6c 69 63 61  s.  Many applica
1cff0 74 69 6f 6e 73 20 6d 61 79 20 70 72 65 66 65 72  tions may prefer
1d000 20 74 6f 0a 75 73 65 20 74 68 65 20 5b 73 71 6c   to.use the [sql
1d010 69 74 65 33 5f 73 74 6d 74 5f 73 74 61 74 75 73  ite3_stmt_status
1d020 28 29 5d 20 69 6e 74 65 72 66 61 63 65 20 74 6f  ()] interface to
1d030 20 64 65 74 65 63 74 20 69 6e 64 65 78 20 6d 69   detect index mi
1d040 73 75 73 65 0a 72 61 74 68 65 72 20 74 68 61 6e  suse.rather than
1d050 20 74 68 65 20 49 4e 44 45 58 45 44 20 42 59 20   the INDEXED BY 
1d060 70 68 72 61 73 65 20 64 65 73 63 72 69 62 65 64  phrase described
1d070 20 68 65 72 65 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c   here.</p>..<tcl
1d080 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23  >.##############
1d090 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1d0a0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1d0b0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1d0c0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a  ###############.
1d0d0 23 20 41 20 6c 69 73 74 20 6f 66 20 6b 65 79 77  # A list of keyw
1d0e0 6f 72 64 73 2e 20 20 41 20 61 73 74 65 72 69 73  ords.  A asteris
1d0f0 6b 20 6f 63 63 75 72 73 20 61 66 74 65 72 20 74  k occurs after t
1d100 68 65 20 6b 65 79 77 6f 72 64 20 69 66 20 69 74  he keyword if it
1d110 20 69 73 20 6f 6e 0a 23 20 74 68 65 20 66 61 6c   is on.# the fal
1d120 6c 62 61 63 6b 20 6c 69 73 74 2e 0a 23 0a 73 65  lback list..#.se
1d130 74 20 6b 65 79 77 6f 72 64 5f 6c 69 73 74 20 5b  t keyword_list [
1d140 6c 73 6f 72 74 20 7b 0a 20 20 20 41 42 4f 52 54  lsort {.   ABORT
1d150 0a 20 20 20 41 43 54 49 4f 4e 0a 20 20 20 41 44  .   ACTION.   AD
1d160 44 0a 20 20 20 41 46 54 45 52 0a 20 20 20 41 4c  D.   AFTER.   AL
1d170 4c 0a 20 20 20 41 4c 54 45 52 0a 20 20 20 41 4e  L.   ALTER.   AN
1d180 41 4c 59 5a 45 0a 20 20 20 41 4e 44 0a 20 20 20  ALYZE.   AND.   
1d190 41 53 0a 20 20 20 41 53 43 0a 20 20 20 41 54 54  AS.   ASC.   ATT
1d1a0 41 43 48 0a 20 20 20 41 55 54 4f 49 4e 43 52 45  ACH.   AUTOINCRE
1d1b0 4d 45 4e 54 0a 20 20 20 42 45 46 4f 52 45 0a 20  MENT.   BEFORE. 
1d1c0 20 20 42 45 47 49 4e 0a 20 20 20 42 45 54 57 45    BEGIN.   BETWE
1d1d0 45 4e 0a 20 20 20 42 59 0a 20 20 20 43 41 53 43  EN.   BY.   CASC
1d1e0 41 44 45 0a 20 20 20 43 41 53 45 0a 20 20 20 43  ADE.   CASE.   C
1d1f0 41 53 54 0a 20 20 20 43 48 45 43 4b 0a 20 20 20  AST.   CHECK.   
1d200 43 4f 4c 4c 41 54 45 0a 20 20 20 43 4f 4c 55 4d  COLLATE.   COLUM
1d210 4e 0a 20 20 20 43 4f 4d 4d 49 54 0a 20 20 20 43  N.   COMMIT.   C
1d220 4f 4e 46 4c 49 43 54 0a 20 20 20 43 4f 4e 53 54  ONFLICT.   CONST
1d230 52 41 49 4e 54 0a 20 20 20 43 52 45 41 54 45 0a  RAINT.   CREATE.
1d240 20 20 20 43 52 4f 53 53 0a 20 20 20 43 55 52 52     CROSS.   CURR
1d250 45 4e 54 5f 44 41 54 45 0a 20 20 20 43 55 52 52  ENT_DATE.   CURR
1d260 45 4e 54 5f 54 49 4d 45 0a 20 20 20 43 55 52 52  ENT_TIME.   CURR
1d270 45 4e 54 5f 54 49 4d 45 53 54 41 4d 50 0a 20 20  ENT_TIMESTAMP.  
1d280 20 44 41 54 41 42 41 53 45 0a 20 20 20 44 45 46   DATABASE.   DEF
1d290 41 55 4c 54 0a 20 20 20 44 45 46 45 52 52 45 44  AULT.   DEFERRED
1d2a0 0a 20 20 20 44 45 46 45 52 52 41 42 4c 45 0a 20  .   DEFERRABLE. 
1d2b0 20 20 44 45 4c 45 54 45 0a 20 20 20 44 45 53 43    DELETE.   DESC
1d2c0 0a 20 20 20 44 45 54 41 43 48 0a 20 20 20 44 49  .   DETACH.   DI
1d2d0 53 54 49 4e 43 54 0a 20 20 20 44 52 4f 50 0a 20  STINCT.   DROP. 
1d2e0 20 20 45 4e 44 0a 20 20 20 45 41 43 48 0a 20 20    END.   EACH.  
1d2f0 20 45 4c 53 45 0a 20 20 20 45 53 43 41 50 45 0a   ELSE.   ESCAPE.
1d300 20 20 20 45 58 43 45 50 54 0a 20 20 20 45 58 43     EXCEPT.   EXC
1d310 4c 55 53 49 56 45 0a 20 20 20 45 58 49 53 54 53  LUSIVE.   EXISTS
1d320 0a 20 20 20 45 58 50 4c 41 49 4e 0a 20 20 20 46  .   EXPLAIN.   F
1d330 41 49 4c 0a 20 20 20 46 4f 52 0a 20 20 20 46 4f  AIL.   FOR.   FO
1d340 52 45 49 47 4e 0a 20 20 20 46 52 4f 4d 0a 20 20  REIGN.   FROM.  
1d350 20 46 55 4c 4c 0a 20 20 20 47 4c 4f 42 0a 20 20   FULL.   GLOB.  
1d360 20 47 52 4f 55 50 0a 20 20 20 48 41 56 49 4e 47   GROUP.   HAVING
1d370 0a 20 20 20 49 46 0a 20 20 20 49 47 4e 4f 52 45  .   IF.   IGNORE
1d380 0a 20 20 20 49 4d 4d 45 44 49 41 54 45 0a 20 20  .   IMMEDIATE.  
1d390 20 49 4e 0a 20 20 20 49 4e 44 45 58 0a 20 20 20   IN.   INDEX.   
1d3a0 49 4e 44 45 58 45 44 0a 20 20 20 49 4e 49 54 49  INDEXED.   INITI
1d3b0 41 4c 4c 59 0a 20 20 20 49 4e 4e 45 52 0a 20 20  ALLY.   INNER.  
1d3c0 20 49 4e 53 45 52 54 0a 20 20 20 49 4e 53 54 45   INSERT.   INSTE
1d3d0 41 44 0a 20 20 20 49 4e 54 45 52 53 45 43 54 0a  AD.   INTERSECT.
1d3e0 20 20 20 49 4e 54 4f 0a 20 20 20 49 53 0a 20 20     INTO.   IS.  
1d3f0 20 49 53 4e 55 4c 4c 0a 20 20 20 4a 4f 49 4e 0a   ISNULL.   JOIN.
1d400 20 20 20 4b 45 59 0a 20 20 20 4c 45 46 54 0a 20     KEY.   LEFT. 
1d410 20 20 4c 49 4b 45 0a 20 20 20 4c 49 4d 49 54 0a    LIKE.   LIMIT.
1d420 20 20 20 4d 41 54 43 48 0a 20 20 20 4e 41 54 55     MATCH.   NATU
1d430 52 41 4c 0a 20 20 20 4e 4f 0a 20 20 20 4e 4f 54  RAL.   NO.   NOT
1d440 0a 20 20 20 4e 4f 54 4e 55 4c 4c 0a 20 20 20 4e  .   NOTNULL.   N
1d450 55 4c 4c 0a 20 20 20 4f 46 0a 20 20 20 4f 46 46  ULL.   OF.   OFF
1d460 53 45 54 0a 20 20 20 4f 4e 0a 20 20 20 4f 52 0a  SET.   ON.   OR.
1d470 20 20 20 4f 52 44 45 52 0a 20 20 20 4f 55 54 45     ORDER.   OUTE
1d480 52 0a 20 20 20 50 4c 41 4e 0a 20 20 20 50 52 41  R.   PLAN.   PRA
1d490 47 4d 41 0a 20 20 20 50 52 49 4d 41 52 59 0a 20  GMA.   PRIMARY. 
1d4a0 20 20 51 55 45 52 59 0a 20 20 20 52 41 49 53 45    QUERY.   RAISE
1d4b0 0a 20 20 20 52 45 46 45 52 45 4e 43 45 53 0a 20  .   REFERENCES. 
1d4c0 20 20 52 45 47 45 58 50 0a 20 20 20 52 45 49 4e    REGEXP.   REIN
1d4d0 44 45 58 0a 20 20 20 52 45 4c 45 41 53 45 0a 20  DEX.   RELEASE. 
1d4e0 20 20 52 45 4e 41 4d 45 0a 20 20 20 52 45 50 4c    RENAME.   REPL
1d4f0 41 43 45 0a 20 20 20 52 45 53 54 52 49 43 54 0a  ACE.   RESTRICT.
1d500 20 20 20 52 49 47 48 54 0a 20 20 20 52 4f 4c 4c     RIGHT.   ROLL
1d510 42 41 43 4b 0a 20 20 20 52 4f 57 0a 20 20 20 53  BACK.   ROW.   S
1d520 41 56 45 50 4f 49 4e 54 0a 20 20 20 53 45 4c 45  AVEPOINT.   SELE
1d530 43 54 0a 20 20 20 53 45 54 0a 20 20 20 54 41 42  CT.   SET.   TAB
1d540 4c 45 0a 20 20 20 54 45 4d 50 0a 20 20 20 54 45  LE.   TEMP.   TE
1d550 4d 50 4f 52 41 52 59 0a 20 20 20 54 48 45 4e 0a  MPORARY.   THEN.
1d560 20 20 20 54 4f 0a 20 20 20 54 52 41 4e 53 41 43     TO.   TRANSAC
1d570 54 49 4f 4e 0a 20 20 20 54 52 49 47 47 45 52 0a  TION.   TRIGGER.
1d580 20 20 20 55 4e 49 4f 4e 0a 20 20 20 55 4e 49 51     UNION.   UNIQ
1d590 55 45 0a 20 20 20 55 50 44 41 54 45 0a 20 20 20  UE.   UPDATE.   
1d5a0 55 53 49 4e 47 0a 20 20 20 56 41 43 55 55 4d 0a  USING.   VACUUM.
1d5b0 20 20 20 56 41 4c 55 45 53 0a 20 20 20 56 49 45     VALUES.   VIE
1d5c0 57 0a 20 20 20 56 49 52 54 55 41 4c 0a 20 20 20  W.   VIRTUAL.   
1d5d0 57 48 45 4e 0a 20 20 20 57 48 45 52 45 0a 7d 5d  WHEN.   WHERE.}]
1d5e0 0a 0a 68 64 5f 70 75 74 73 20 7b 3c 44 49 56 20  ..hd_puts {<DIV 
1d5f0 63 6c 61 73 73 3d 22 70 64 66 5f 73 65 63 74 69  class="pdf_secti
1d600 6f 6e 22 3e 7d 0a 53 65 63 74 69 6f 6e 20 7b 53  on">}.Section {S
1d610 51 4c 69 74 65 20 4b 65 79 77 6f 72 64 73 7d 20  QLite Keywords} 
1d620 6b 65 79 77 6f 72 64 73 20 7b 7b 2a 53 51 4c 20  keywords {{*SQL 
1d630 6b 65 79 77 6f 72 64 7d 20 7b 53 51 4c 20 6b 65  keyword} {SQL ke
1d640 79 77 6f 72 64 73 7d 7d 0a 68 64 5f 70 75 74 73  ywords}}.hd_puts
1d650 20 7b 3c 2f 44 49 56 3e 7d 0a 3c 2f 74 63 6c 3e   {</DIV>}.</tcl>
1d660 0a 0a 3c 70 3e 54 68 65 20 53 51 4c 20 73 74 61  ..<p>The SQL sta
1d670 6e 64 61 72 64 20 73 70 65 63 69 66 69 65 73 20  ndard specifies 
1d680 61 20 68 75 67 65 20 6e 75 6d 62 65 72 20 6f 66  a huge number of
1d690 20 6b 65 79 77 6f 72 64 73 20 77 68 69 63 68 20   keywords which 
1d6a0 6d 61 79 20 6e 6f 74 0a 62 65 20 75 73 65 64 20  may not.be used 
1d6b0 61 73 20 74 68 65 20 6e 61 6d 65 73 20 6f 66 20  as the names of 
1d6c0 74 61 62 6c 65 73 2c 20 69 6e 64 69 63 65 73 2c  tables, indices,
1d6d0 20 63 6f 6c 75 6d 6e 73 2c 20 64 61 74 61 62 61   columns, databa
1d6e0 73 65 73 2c 20 75 73 65 72 2d 64 65 66 69 6e 65  ses, user-define
1d6f0 64 0a 66 75 6e 63 74 69 6f 6e 73 2c 20 63 6f 6c  d.functions, col
1d700 6c 61 74 69 6f 6e 73 2c 20 76 69 72 74 75 61 6c  lations, virtual
1d710 20 74 61 62 6c 65 20 6d 6f 64 75 6c 65 73 2c 20   table modules, 
1d720 6f 72 20 61 6e 79 20 6f 74 68 65 72 20 6e 61 6d  or any other nam
1d730 65 64 20 6f 62 6a 65 63 74 2e 0a 54 68 65 20 6c  ed object..The l
1d740 69 73 74 20 6f 66 20 6b 65 79 77 6f 72 64 73 20  ist of keywords 
1d750 69 73 20 73 6f 20 6c 6f 6e 67 20 74 68 61 74 20  is so long that 
1d760 66 65 77 20 70 65 6f 70 6c 65 20 63 61 6e 20 72  few people can r
1d770 65 6d 65 6d 62 65 72 20 74 68 65 6d 20 61 6c 6c  emember them all
1d780 2e 0a 46 6f 72 20 6d 6f 73 74 20 53 51 4c 20 63  ..For most SQL c
1d790 6f 64 65 2c 20 79 6f 75 72 20 73 61 66 65 73 74  ode, your safest
1d7a0 20 62 65 74 20 69 73 20 74 6f 20 6e 65 76 65 72   bet is to never
1d7b0 20 75 73 65 20 61 6e 79 20 45 6e 67 6c 69 73 68   use any English
1d7c0 20 6c 61 6e 67 75 61 67 65 0a 77 6f 72 64 20 61   language.word a
1d7d0 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 61 20  s the name of a 
1d7e0 75 73 65 72 2d 64 65 66 69 6e 65 64 20 6f 62 6a  user-defined obj
1d7f0 65 63 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20  ect.</p>..<p>If 
1d800 79 6f 75 20 77 61 6e 74 20 74 6f 20 75 73 65 20  you want to use 
1d810 61 20 6b 65 79 77 6f 72 64 20 61 73 20 61 20 6e  a keyword as a n
1d820 61 6d 65 2c 20 79 6f 75 20 6e 65 65 64 20 74 6f  ame, you need to
1d830 20 71 75 6f 74 65 20 69 74 2e 20 20 54 68 65 72   quote it.  Ther
1d840 65 0a 61 72 65 20 74 68 72 65 65 20 77 61 79 73  e.are three ways
1d850 20 6f 66 20 71 75 6f 74 69 6e 67 20 6b 65 79 77   of quoting keyw
1d860 6f 72 64 73 20 69 6e 20 53 51 4c 69 74 65 3a 3c  ords in SQLite:<
1d870 2f 70 3e 0a 0a 3c 70 3e 0a 3c 62 6c 6f 63 6b 71  /p>..<p>.<blockq
1d880 75 6f 74 65 3e 0a 3c 74 61 62 6c 65 3e 0a 3c 74  uote>.<table>.<t
1d890 72 3e 09 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  r>.<td valign="t
1d8a0 6f 70 22 3e 3c 62 3e 27 6b 65 79 77 6f 72 64 27  op"><b>'keyword'
1d8b0 3c 2f 62 3e 3c 2f 74 64 3e 3c 74 64 20 77 69 64  </b></td><td wid
1d8c0 74 68 3d 22 32 30 22 3e 3c 2f 74 64 3e 0a 09 3c  th="20"></td>..<
1d8d0 74 64 3e 5e 41 20 6b 65 79 77 6f 72 64 20 69 6e  td>^A keyword in
1d8e0 20 73 69 6e 67 6c 65 20 71 75 6f 74 65 73 20 69   single quotes i
1d8f0 73 20 61 20 73 74 72 69 6e 67 20 6c 69 74 65 72  s a string liter
1d900 61 6c 2e 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 0a 3c  al.</td></tr>..<
1d910 74 72 3e 09 3c 74 64 20 76 61 6c 69 67 6e 3d 22  tr>.<td valign="
1d920 74 6f 70 22 3e 3c 62 3e 22 6b 65 79 77 6f 72 64  top"><b>"keyword
1d930 22 3c 2f 62 3e 3c 2f 74 64 3e 3c 74 64 3e 3c 2f  "</b></td><td></
1d940 74 64 3e 0a 09 3c 74 64 3e 5e 41 20 6b 65 79 77  td>..<td>^A keyw
1d950 6f 72 64 20 69 6e 20 64 6f 75 62 6c 65 2d 71 75  ord in double-qu
1d960 6f 74 65 73 20 69 73 20 61 6e 20 69 64 65 6e 74  otes is an ident
1d970 69 66 69 65 72 2e 3c 2f 74 64 3e 3c 2f 74 72 3e  ifier.</td></tr>
1d980 0a 0a 3c 74 72 3e 09 3c 74 64 20 76 61 6c 69 67  ..<tr>.<td valig
1d990 6e 3d 22 74 6f 70 22 3e 3c 62 3e 26 23 39 31 3b  n="top"><b>&#91;
1d9a0 6b 65 79 77 6f 72 64 26 23 39 33 3b 3c 2f 62 3e  keyword&#93;</b>
1d9b0 3c 2f 74 64 3e 3c 74 64 3e 3c 2f 74 64 3e 0a 09  </td><td></td>..
1d9c0 3c 74 64 3e 5e 41 20 6b 65 79 77 6f 72 64 20 65  <td>^A keyword e
1d9d0 6e 63 6c 6f 73 65 64 20 69 6e 20 73 71 75 61 72  nclosed in squar
1d9e0 65 20 62 72 61 63 6b 65 74 73 20 69 73 20 0a 20  e brackets is . 
1d9f0 20 20 20 20 20 20 20 61 6e 20 69 64 65 6e 74 69         an identi
1da00 66 69 65 72 2e 20 20 54 68 69 73 20 69 73 20 6e  fier.  This is n
1da10 6f 74 20 73 74 61 6e 64 61 72 64 20 53 51 4c 2e  ot standard SQL.
1da20 20 20 54 68 69 73 20 71 75 6f 74 69 6e 67 20 6d    This quoting m
1da30 65 63 68 61 6e 69 73 6d 0a 20 20 20 20 20 20 20  echanism.       
1da40 20 69 73 20 75 73 65 64 20 62 79 20 4d 53 20 41   is used by MS A
1da50 63 63 65 73 73 20 61 6e 64 20 53 51 4c 20 53 65  ccess and SQL Se
1da60 72 76 65 72 20 61 6e 64 20 69 73 20 69 6e 63 6c  rver and is incl
1da70 75 64 65 64 20 69 6e 20 53 51 4c 69 74 65 20 66  uded in SQLite f
1da80 6f 72 0a 20 20 20 20 20 20 20 20 63 6f 6d 70 61  or.        compa
1da90 74 69 62 69 6c 69 74 79 2e 3c 2f 74 64 3e 3c 2f  tibility.</td></
1daa0 74 72 3e 0a 0a 3c 74 72 3e 09 3c 74 64 20 76 61  tr>..<tr>.<td va
1dab0 6c 69 67 6e 3d 22 74 6f 70 22 3e 3c 62 3e 26 23  lign="top"><b>&#
1dac0 39 36 3b 6b 65 79 77 6f 72 64 26 23 39 36 3b 3c  96;keyword&#96;<
1dad0 2f 62 3e 3c 2f 74 64 3e 3c 74 64 3e 3c 2f 74 64  /b></td><td></td
1dae0 3e 0a 09 3c 74 64 3e 5e 41 20 6b 65 79 77 6f 72  >..<td>^A keywor
1daf0 64 20 65 6e 63 6c 6f 73 65 64 20 69 6e 20 67 72  d enclosed in gr
1db00 61 76 65 20 61 63 63 65 6e 74 73 20 28 41 53 43  ave accents (ASC
1db10 49 49 20 63 6f 64 65 20 39 36 29 20 69 73 20 0a  II code 96) is .
1db20 20 20 20 20 20 20 20 20 61 6e 20 69 64 65 6e 74          an ident
1db30 69 66 69 65 72 2e 20 20 54 68 69 73 20 69 73 20  ifier.  This is 
1db40 6e 6f 74 20 73 74 61 6e 64 61 72 64 20 53 51 4c  not standard SQL
1db50 2e 20 20 54 68 69 73 20 71 75 6f 74 69 6e 67 20  .  This quoting 
1db60 6d 65 63 68 61 6e 69 73 6d 0a 20 20 20 20 20 20  mechanism.      
1db70 20 20 69 73 20 75 73 65 64 20 62 79 20 4d 79 53    is used by MyS
1db80 51 4c 20 61 6e 64 20 69 73 20 69 6e 63 6c 75 64  QL and is includ
1db90 65 64 20 69 6e 20 53 51 4c 69 74 65 20 66 6f 72  ed in SQLite for
1dba0 0a 20 20 20 20 20 20 20 20 63 6f 6d 70 61 74 69  .        compati
1dbb0 62 69 6c 69 74 79 2e 3c 2f 74 64 3e 3c 2f 74 72  bility.</td></tr
1dbc0 3e 0a 3c 2f 74 61 62 6c 65 3e 0a 3c 2f 62 6c 6f  >.</table>.</blo
1dbd0 63 6b 71 75 6f 74 65 3e 0a 3c 2f 70 3e 0a 0a 3c  ckquote>.</p>..<
1dbe0 70 3e 46 6f 72 20 72 65 73 69 6c 69 65 6e 63 65  p>For resilience
1dbf0 20 77 68 65 6e 20 63 6f 6e 66 72 6f 6e 74 65 64   when confronted
1dc00 20 77 69 74 68 20 68 69 73 74 6f 72 69 63 61 6c   with historical
1dc10 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 2c   SQL statements,
1dc20 20 53 51 4c 69 74 65 0a 77 69 6c 6c 20 73 6f 6d   SQLite.will som
1dc30 65 74 69 6d 65 73 20 62 65 6e 64 20 74 68 65 20  etimes bend the 
1dc40 71 75 6f 74 69 6e 67 20 72 75 6c 65 73 20 61 62  quoting rules ab
1dc50 6f 76 65 3a 3c 2f 70 3e 0a 0a 3c 75 6c 3e 0a 3c  ove:</p>..<ul>.<
1dc60 6c 69 3e 3c 70 3e 5e 49 66 20 61 20 6b 65 79 77  li><p>^If a keyw
1dc70 6f 72 64 20 69 6e 20 73 69 6e 67 6c 65 0a 71 75  ord in single.qu
1dc80 6f 74 65 73 20 28 65 78 3a 20 3c 62 3e 27 6b 65  otes (ex: <b>'ke
1dc90 79 27 3c 2f 62 3e 20 6f 72 20 3c 62 3e 27 67 6c  y'</b> or <b>'gl
1dca0 6f 62 27 3c 2f 62 3e 29 20 69 73 20 75 73 65 64  ob'</b>) is used
1dcb0 20 69 6e 20 61 20 63 6f 6e 74 65 78 74 20 77 68   in a context wh
1dcc0 65 72 65 0a 61 6e 20 69 64 65 6e 74 69 66 69 65  ere.an identifie
1dcd0 72 20 69 73 20 61 6c 6c 6f 77 65 64 20 62 75 74  r is allowed but
1dce0 20 77 68 65 72 65 20 61 20 73 74 72 69 6e 67 20   where a string 
1dcf0 6c 69 74 65 72 61 6c 20 69 73 20 6e 6f 74 20 61  literal is not a
1dd00 6c 6c 6f 77 65 64 2c 20 74 68 65 6e 0a 74 68 65  llowed, then.the
1dd10 20 74 6f 6b 65 6e 20 69 73 20 75 6e 64 65 72 73   token is unders
1dd20 74 6f 6f 64 20 74 6f 20 62 65 20 61 6e 20 69 64  tood to be an id
1dd30 65 6e 74 69 66 69 65 72 20 69 6e 73 74 65 61 64  entifier instead
1dd40 20 6f 66 20 61 20 73 74 72 69 6e 67 20 6c 69 74   of a string lit
1dd50 65 72 61 6c 2e 0a 3c 2f 70 3e 3c 2f 6c 69 3e 0a  eral..</p></li>.
1dd60 0a 3c 6c 69 3e 3c 70 3e 5e 49 66 20 61 20 6b 65  .<li><p>^If a ke
1dd70 79 77 6f 72 64 20 69 6e 20 64 6f 75 62 6c 65 0a  yword in double.
1dd80 71 75 6f 74 65 73 20 28 65 78 3a 20 3c 62 3e 22  quotes (ex: <b>"
1dd90 6b 65 79 22 3c 2f 62 3e 20 6f 72 20 3c 62 3e 22  key"</b> or <b>"
1dda0 67 6c 6f 62 22 3c 2f 62 3e 29 20 69 73 20 75 73  glob"</b>) is us
1ddb0 65 64 20 69 6e 20 61 20 63 6f 6e 74 65 78 74 20  ed in a context 
1ddc0 77 68 65 72 65 0a 69 74 20 63 61 6e 6e 6f 74 20  where.it cannot 
1ddd0 62 65 20 72 65 73 6f 6c 76 65 64 20 74 6f 20 61  be resolved to a
1dde0 6e 20 69 64 65 6e 74 69 66 69 65 72 20 62 75 74  n identifier but
1ddf0 20 77 68 65 72 65 20 61 20 73 74 72 69 6e 67 20   where a string 
1de00 6c 69 74 65 72 61 6c 0a 69 73 20 61 6c 6c 6f 77  literal.is allow
1de10 65 64 2c 20 74 68 65 6e 20 74 68 65 20 74 6f 6b  ed, then the tok
1de20 65 6e 20 69 73 20 75 6e 64 65 72 73 74 6f 6f 64  en is understood
1de30 20 74 6f 20 62 65 20 61 20 73 74 72 69 6e 67 20   to be a string 
1de40 6c 69 74 65 72 61 6c 20 69 6e 73 74 65 61 64 0a  literal instead.
1de50 6f 66 20 61 6e 20 69 64 65 6e 74 69 66 69 65 72  of an identifier
1de60 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e  .</p></li>.</ul>
1de70 0a 0a 3c 70 3e 50 72 6f 67 72 61 6d 6d 65 72 73  ..<p>Programmers
1de80 20 61 72 65 20 63 61 75 74 69 6f 6e 65 64 20 6e   are cautioned n
1de90 6f 74 20 74 6f 20 75 73 65 20 74 68 65 20 74 77  ot to use the tw
1dea0 6f 20 65 78 63 65 70 74 69 6f 6e 73 20 64 65 73  o exceptions des
1deb0 63 72 69 62 65 64 20 69 6e 0a 74 68 65 20 70 72  cribed in.the pr
1dec0 65 76 69 6f 75 73 20 62 75 6c 6c 65 74 73 2e 20  evious bullets. 
1ded0 20 57 65 20 65 6d 70 68 61 73 69 7a 65 20 74 68   We emphasize th
1dee0 61 74 20 74 68 65 79 20 65 78 69 73 74 20 6f 6e  at they exist on
1def0 6c 79 20 73 6f 20 74 68 61 74 20 6f 6c 64 0a 61  ly so that old.a
1df00 6e 64 20 69 6c 6c 2d 66 6f 72 6d 65 64 20 53 51  nd ill-formed SQ
1df10 4c 20 73 74 61 74 65 6d 65 6e 74 73 20 77 69 6c  L statements wil
1df20 6c 20 72 75 6e 20 63 6f 72 72 65 63 74 6c 79 2e  l run correctly.
1df30 20 20 46 75 74 75 72 65 20 76 65 72 73 69 6f 6e    Future version
1df40 73 20 6f 66 0a 53 51 4c 69 74 65 20 6d 69 67 68  s of.SQLite migh
1df50 74 20 63 68 61 6e 67 65 20 74 6f 20 72 61 69 73  t change to rais
1df60 65 20 65 72 72 6f 72 73 20 69 6e 73 74 65 61 64  e errors instead
1df70 20 6f 66 20 61 63 63 65 70 74 69 6e 67 20 74 68   of accepting th
1df80 65 20 6d 61 6c 66 6f 72 6d 65 64 0a 73 74 61 74  e malformed.stat
1df90 65 6d 65 6e 74 73 20 63 6f 76 65 72 65 64 20 62  ements covered b
1dfa0 79 20 74 68 65 20 65 78 63 65 70 74 69 6f 6e 73  y the exceptions
1dfb0 20 61 62 6f 76 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e   above.</p>..<p>
1dfc0 0a 53 51 4c 69 74 65 20 61 64 64 73 20 6e 65 77  .SQLite adds new
1dfd0 20 6b 65 79 77 6f 72 64 73 20 66 72 6f 6d 20 74   keywords from t
1dfe0 69 6d 65 20 74 6f 20 74 69 6d 65 20 77 68 65 6e  ime to time when
1dff0 20 69 74 20 74 61 6b 65 73 20 6f 6e 20 6e 65 77   it takes on new
1e000 20 66 65 61 74 75 72 65 73 2e 0a 53 6f 20 74 6f   features..So to
1e010 20 70 72 65 76 65 6e 74 20 79 6f 75 72 20 63 6f   prevent your co
1e020 64 65 20 66 72 6f 6d 20 62 65 69 6e 67 20 62 72  de from being br
1e030 6f 6b 65 6e 20 62 79 20 66 75 74 75 72 65 20 65  oken by future e
1e040 6e 68 61 6e 63 65 6d 65 6e 74 73 2c 20 79 6f 75  nhancements, you
1e050 20 73 68 6f 75 6c 64 0a 6e 6f 72 6d 61 6c 6c 79   should.normally
1e060 20 71 75 6f 74 65 20 61 6e 79 20 69 64 65 6e 74   quote any ident
1e070 69 66 69 65 72 20 74 68 61 74 20 69 73 20 61 6e  ifier that is an
1e080 20 45 6e 67 6c 69 73 68 20 6c 61 6e 67 75 61 67   English languag
1e090 65 20 77 6f 72 64 2c 20 65 76 65 6e 20 69 66 0a  e word, even if.
1e0a0 79 6f 75 20 64 6f 20 6e 6f 74 20 68 61 76 65 20  you do not have 
1e0b0 74 6f 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 54 68  to..</p>..<p>.Th
1e0c0 65 20 6c 69 73 74 20 62 65 6c 6f 77 20 73 68 6f  e list below sho
1e0d0 77 73 20 61 6c 6c 20 70 6f 73 73 69 62 6c 65 20  ws all possible 
1e0e0 6b 65 79 77 6f 72 64 73 20 75 73 65 64 20 62 79  keywords used by
1e0f0 20 61 6e 79 20 62 75 69 6c 64 20 6f 66 0a 53 51   any build of.SQ
1e100 4c 69 74 65 20 72 65 67 61 72 64 6c 65 73 73 20  Lite regardless 
1e110 6f 66 20 5b 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  of [compile-time
1e120 20 6f 70 74 69 6f 6e 73 5d 2e 20 20 0a 4d 6f 73   options].  .Mos
1e130 74 20 72 65 61 73 6f 6e 61 62 6c 65 20 63 6f 6e  t reasonable con
1e140 66 69 67 75 72 61 74 69 6f 6e 73 20 75 73 65 20  figurations use 
1e150 6d 6f 72 65 20 6f 72 20 61 6c 6c 20 6f 66 20 74  more or all of t
1e160 68 65 73 65 20 6b 65 79 77 6f 72 64 73 2c 0a 62  hese keywords,.b
1e170 75 74 20 73 6f 6d 65 20 6b 65 79 77 6f 72 64 73  ut some keywords
1e180 20 6d 61 79 20 62 65 20 6f 6d 69 74 74 65 64 20   may be omitted 
1e190 77 68 65 6e 20 53 51 4c 20 6c 61 6e 67 75 61 67  when SQL languag
1e1a0 65 20 66 65 61 74 75 72 65 73 20 61 72 65 0a 64  e features are.d
1e1b0 69 73 61 62 6c 65 64 2e 0a 5e 28 52 65 67 61 72  isabled..^(Regar
1e1c0 64 6c 65 73 73 20 6f 66 20 74 68 65 20 63 6f 6d  dless of the com
1e1d0 70 69 6c 65 2d 74 69 6d 65 20 63 6f 6e 66 69 67  pile-time config
1e1e0 75 72 61 74 69 6f 6e 2c 20 61 6e 79 20 69 64 65  uration, any ide
1e1f0 6e 74 69 66 69 65 72 20 74 68 61 74 20 69 73 20  ntifier that is 
1e200 6e 6f 74 20 6f 6e 0a 74 68 65 20 66 6f 6c 6c 6f  not on.the follo
1e210 77 69 6e 67 20 3c 74 63 6c 3e 68 64 5f 70 75 74  wing <tcl>hd_put
1e220 73 20 5b 6c 6c 65 6e 67 74 68 20 24 6b 65 79 77  s [llength $keyw
1e230 6f 72 64 5f 6c 69 73 74 5d 3c 2f 74 63 6c 3e 20  ord_list]</tcl> 
1e240 65 6c 65 6d 65 6e 74 0a 6c 69 73 74 20 69 73 20  element.list is 
1e250 6e 6f 74 20 61 20 6b 65 79 77 6f 72 64 20 74 6f  not a keyword to
1e260 20 74 68 65 20 53 51 4c 20 70 61 72 73 65 72 20   the SQL parser 
1e270 69 6e 20 53 51 4c 69 74 65 3a 0a 3c 2f 70 3e 0a  in SQLite:.</p>.
1e280 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 3c 74  .<blockquote>.<t
1e290 61 62 6c 65 20 77 69 64 74 68 3d 22 31 30 30 25  able width="100%
1e2a0 22 3e 3c 74 72 3e 0a 3c 74 64 20 61 6c 69 67 6e  "><tr>.<td align
1e2b0 3d 22 6c 65 66 74 22 20 76 61 6c 69 67 6e 3d 22  ="left" valign="
1e2c0 74 6f 70 22 20 77 69 64 74 68 3d 22 32 30 25 22  top" width="20%"
1e2d0 3e 0a 3c 74 63 6c 3e 0a 73 65 74 20 6e 20 5b 6c  >.<tcl>.set n [l
1e2e0 6c 65 6e 67 74 68 20 24 6b 65 79 77 6f 72 64 5f  length $keyword_
1e2f0 6c 69 73 74 5d 0a 73 65 74 20 6e 43 6f 6c 20 35  list].set nCol 5
1e300 0a 73 65 74 20 6e 52 6f 77 20 5b 65 78 70 72 20  .set nRow [expr 
1e310 7b 28 24 6e 2b 24 6e 43 6f 6c 2d 31 29 2f 24 6e  {($n+$nCol-1)/$n
1e320 43 6f 6c 7d 5d 0a 73 65 74 20 69 20 30 0a 66 6f  Col}].set i 0.fo
1e330 72 65 61 63 68 20 77 6f 72 64 20 24 6b 65 79 77  reach word $keyw
1e340 6f 72 64 5f 6c 69 73 74 20 7b 0a 20 20 69 66 20  ord_list {.  if 
1e350 7b 24 69 3d 3d 24 6e 52 6f 77 7d 20 7b 0a 20 20  {$i==$nRow} {.  
1e360 20 20 68 64 5f 70 75 74 73 20 22 3c 2f 74 64 3e    hd_puts "</td>
1e370 3c 74 64 20 76 61 6c 69 67 6e 3d 5c 22 74 6f 70  <td valign=\"top
1e380 5c 22 20 61 6c 69 67 6e 3d 5c 22 6c 65 66 74 5c  \" align=\"left\
1e390 22 20 77 69 64 74 68 3d 5c 22 32 30 25 5c 22 3e  " width=\"20%\">
1e3a0 22 0a 20 20 20 20 73 65 74 20 69 20 31 0a 20 20  ".    set i 1.  
1e3b0 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 69 6e 63  } else {.    inc
1e3c0 72 20 69 0a 20 20 7d 0a 20 20 68 64 5f 70 75 74  r i.  }.  hd_put
1e3d0 73 20 22 24 77 6f 72 64 3c 62 72 3e 5c 6e 22 0a  s "$word<br>\n".
1e3e0 7d 0a 3c 2f 74 63 6c 3e 0a 3c 2f 74 64 3e 3c 2f  }.</tcl>.</td></
1e3f0 74 72 3e 3c 2f 74 61 62 6c 65 3e 3c 2f 62 6c 6f  tr></table></blo
1e400 63 6b 71 75 6f 74 65 3e 29 5e 0a                 ckquote>)^.