Documentation Source Text

Hex Artifact Content
Login

Artifact 3993ed4d3d6780c0446d3540afc4cbdc35123fe4:


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 61 62 6c 65 20 69 6e 20 61 20  ermissable 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 69 73 20 61 20 6c  ^There is is a l
2640: 69 6d 69 74 2c 20 73 65 74 20 75 73 69 6e 67 20  imit, set using 
2650: 5b 73 71 6c 69 74 65 33 5f 6c 69 6d 69 74 28 29  [sqlite3_limit()
2660: 5d 20 61 6e 64 20 0a 5b 53 51 4c 49 54 45 5f 4c  ] and .[SQLITE_L
2670: 49 4d 49 54 5f 41 54 54 41 43 48 45 44 5d 2c 20  IMIT_ATTACHED], 
2680: 74 6f 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  to the number of
2690: 20 64 61 74 61 62 61 73 65 73 20 74 68 61 74 20   databases that 
26a0: 63 61 6e 20 62 65 0a 73 69 6d 75 6c 74 61 6e 65  can be.simultane
26b0: 6f 75 73 6c 79 20 61 74 74 61 63 68 65 64 20 74  ously attached t
26c0: 6f 20 61 20 73 69 6e 67 6c 65 20 64 61 74 61 62  o a single datab
26d0: 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 3c  ase connection.<
26e0: 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23  /p>..<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 23 23 23 0a 53 65 63 74 69  ##########.Secti
2740: 6f 6e 20 7b 42 45 47 49 4e 20 54 52 41 4e 53 41  on {BEGIN TRANSA
2750: 43 54 49 4f 4e 7d 20 74 72 61 6e 73 61 63 74 69  CTION} transacti
2760: 6f 6e 20 7b 2a 42 45 47 49 4e 20 43 4f 4d 4d 49  on {*BEGIN COMMI
2770: 54 20 52 4f 4c 4c 42 41 43 4b 7d 0a 0a 42 75 62  T ROLLBACK}..Bub
2780: 62 6c 65 44 69 61 67 72 61 6d 20 62 65 67 69 6e  bleDiagram begin
2790: 2d 73 74 6d 74 0a 42 75 62 62 6c 65 44 69 61 67  -stmt.BubbleDiag
27a0: 72 61 6d 20 63 6f 6d 6d 69 74 2d 73 74 6d 74 0a  ram commit-stmt.
27b0: 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 72 6f  BubbleDiagram ro
27c0: 6c 6c 62 61 63 6b 2d 73 74 6d 74 0a 3c 2f 74 63  llback-stmt.</tc
27d0: 6c 3e 0a 0a 3c 70 3e 0a 5e 4e 6f 20 63 68 61 6e  l>..<p>.^No chan
27e0: 67 65 73 20 63 61 6e 20 62 65 20 6d 61 64 65 20  ges can be made 
27f0: 74 6f 20 74 68 65 20 64 61 74 61 62 61 73 65 20  to the database 
2800: 65 78 63 65 70 74 20 77 69 74 68 69 6e 20 61 20  except within a 
2810: 74 72 61 6e 73 61 63 74 69 6f 6e 2e 0a 5e 41 6e  transaction..^An
2820: 79 20 63 6f 6d 6d 61 6e 64 20 74 68 61 74 20 63  y command that c
2830: 68 61 6e 67 65 73 20 74 68 65 20 64 61 74 61 62  hanges the datab
2840: 61 73 65 20 28 62 61 73 69 63 61 6c 6c 79 2c 20  ase (basically, 
2850: 61 6e 79 20 53 51 4c 20 63 6f 6d 6d 61 6e 64 0a  any SQL command.
2860: 6f 74 68 65 72 20 74 68 61 6e 20 5b 53 45 4c 45  other than [SELE
2870: 43 54 5d 29 20 77 69 6c 6c 20 61 75 74 6f 6d 61  CT]) will automa
2880: 74 69 63 61 6c 6c 79 20 73 74 61 72 74 20 61 20  tically start a 
2890: 74 72 61 6e 73 61 63 74 69 6f 6e 20 69 66 0a 6f  transaction if.o
28a0: 6e 65 20 69 73 20 6e 6f 74 20 61 6c 72 65 61 64  ne is not alread
28b0: 79 20 69 6e 20 65 66 66 65 63 74 2e 20 20 5e 41  y in effect.  ^A
28c0: 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 73 74 61  utomatically sta
28d0: 72 74 65 64 20 74 72 61 6e 73 61 63 74 69 6f 6e  rted transaction
28e0: 73 0a 61 72 65 20 63 6f 6d 6d 69 74 74 65 64 20  s.are committed 
28f0: 77 68 65 6e 20 74 68 65 20 6c 61 73 74 20 71 75  when the last qu
2900: 65 72 79 20 66 69 6e 69 73 68 65 73 2e 0a 3c 2f  ery finishes..</
2910: 70 3e 0a 0a 3c 70 3e 0a 5e 54 72 61 6e 73 61 63  p>..<p>.^Transac
2920: 74 69 6f 6e 73 20 63 61 6e 20 62 65 20 73 74 61  tions can be sta
2930: 72 74 65 64 20 6d 61 6e 75 61 6c 6c 79 20 75 73  rted manually us
2940: 69 6e 67 20 74 68 65 20 42 45 47 49 4e 0a 63 6f  ing the BEGIN.co
2950: 6d 6d 61 6e 64 2e 20 20 5e 28 53 75 63 68 20 74  mmand.  ^(Such t
2960: 72 61 6e 73 61 63 74 69 6f 6e 73 20 75 73 75 61  ransactions usua
2970: 6c 6c 79 20 70 65 72 73 69 73 74 20 75 6e 74 69  lly persist unti
2980: 6c 20 74 68 65 20 6e 65 78 74 0a 43 4f 4d 4d 49  l the next.COMMI
2990: 54 20 6f 72 20 52 4f 4c 4c 42 41 43 4b 20 63 6f  T or ROLLBACK co
29a0: 6d 6d 61 6e 64 2e 20 20 42 75 74 20 61 20 74 72  mmand.  But a tr
29b0: 61 6e 73 61 63 74 69 6f 6e 20 77 69 6c 6c 20 61  ansaction will a
29c0: 6c 73 6f 20 0a 52 4f 4c 4c 42 41 43 4b 20 69 66  lso .ROLLBACK if
29d0: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 69 73   the database is
29e0: 20 63 6c 6f 73 65 64 20 6f 72 20 69 66 20 61 6e   closed or if an
29f0: 20 65 72 72 6f 72 20 6f 63 63 75 72 73 0a 61 6e   error occurs.an
2a00: 64 20 74 68 65 20 52 4f 4c 4c 42 41 43 4b 20 63  d the ROLLBACK c
2a10: 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75 74 69  onflict resoluti
2a20: 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 20 69 73 20  on algorithm is 
2a30: 73 70 65 63 69 66 69 65 64 2e 29 5e 0a 53 65 65  specified.)^.See
2a40: 20 74 68 65 20 64 6f 63 75 6d 65 6e 74 61 74 69   the documentati
2a50: 6f 6e 20 6f 6e 20 74 68 65 20 5b 4f 4e 20 43 4f  on on the [ON CO
2a60: 4e 46 4c 49 43 54 5d 0a 63 6c 61 75 73 65 20 66  NFLICT].clause f
2a70: 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e  or additional in
2a80: 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20  formation about 
2a90: 74 68 65 20 52 4f 4c 4c 42 41 43 4b 0a 63 6f 6e  the ROLLBACK.con
2aa0: 66 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e  flict resolution
2ab0: 20 61 6c 67 6f 72 69 74 68 6d 2e 0a 3c 2f 70 3e   algorithm..</p>
2ac0: 0a 0a 3c 70 3e 0a 5e 45 4e 44 20 54 52 41 4e 53  ..<p>.^END TRANS
2ad0: 41 43 54 49 4f 4e 20 69 73 20 61 6e 20 61 6c 69  ACTION is an ali
2ae0: 61 73 20 66 6f 72 20 43 4f 4d 4d 49 54 2e 0a 3c  as for COMMIT..<
2af0: 2f 70 3e 0a 0a 3c 70 3e 20 5e 28 54 72 61 6e 73  /p>..<p> ^(Trans
2b00: 61 63 74 69 6f 6e 73 20 63 72 65 61 74 65 64 20  actions created 
2b10: 75 73 69 6e 67 20 42 45 47 49 4e 2e 2e 2e 43 4f  using BEGIN...CO
2b20: 4d 4d 49 54 20 64 6f 20 6e 6f 74 20 6e 65 73 74  MMIT do not nest
2b30: 2e 29 5e 0a 5e 46 6f 72 20 6e 65 73 74 65 64 20  .)^.^For nested 
2b40: 74 72 61 6e 73 61 63 74 69 6f 6e 73 2c 20 75 73  transactions, us
2b50: 65 20 74 68 65 20 5b 53 41 56 45 50 4f 49 4e 54  e the [SAVEPOINT
2b60: 5d 20 61 6e 64 20 5b 52 45 4c 45 41 53 45 5d 20  ] and [RELEASE] 
2b70: 63 6f 6d 6d 61 6e 64 73 2e 0a 54 68 65 20 22 54  commands..The "T
2b80: 4f 20 53 41 56 45 50 4f 49 4e 54 20 3c 69 3e 6e  O SAVEPOINT <i>n
2b90: 61 6d 65 3c 2f 69 3e 22 20 63 6c 61 75 73 65 20  ame</i>" clause 
2ba0: 6f 66 20 74 68 65 20 52 4f 4c 4c 42 41 43 4b 20  of the ROLLBACK 
2bb0: 63 6f 6d 6d 61 6e 64 20 73 68 6f 77 6e 0a 69 6e  command shown.in
2bc0: 20 74 68 65 20 73 79 6e 74 61 78 20 64 69 61 67   the syntax diag
2bd0: 72 61 6d 20 61 62 6f 76 65 20 69 73 20 6f 6e 6c  ram above is onl
2be0: 79 20 61 70 70 6c 69 63 61 62 6c 65 20 74 6f 20  y applicable to 
2bf0: 5b 53 41 56 45 50 4f 49 4e 54 5d 0a 74 72 61 6e  [SAVEPOINT].tran
2c00: 73 61 63 74 69 6f 6e 73 2e 20 20 5e 41 6e 20 61  sactions.  ^An a
2c10: 74 74 65 6d 70 74 20 74 6f 20 69 6e 76 6f 6b 65  ttempt to invoke
2c20: 20 74 68 65 20 42 45 47 49 4e 20 63 6f 6d 6d 61   the BEGIN comma
2c30: 6e 64 20 77 69 74 68 69 6e 0a 61 20 74 72 61 6e  nd within.a tran
2c40: 73 61 63 74 69 6f 6e 20 77 69 6c 6c 20 66 61 69  saction will fai
2c50: 6c 20 77 69 74 68 20 61 6e 20 65 72 72 6f 72 2c  l with an error,
2c60: 20 72 65 67 61 72 64 6c 65 73 73 20 6f 66 20 77   regardless of w
2c70: 68 65 74 68 65 72 0a 74 68 65 20 74 72 61 6e 73  hether.the trans
2c80: 61 63 74 69 6f 6e 20 77 61 73 20 73 74 61 72 74  action was start
2c90: 65 64 20 62 79 20 5b 53 41 56 45 50 4f 49 4e 54  ed by [SAVEPOINT
2ca0: 5d 20 6f 72 20 61 20 70 72 69 6f 72 20 42 45 47  ] or a prior BEG
2cb0: 49 4e 2e 0a 5e 54 68 65 20 43 4f 4d 4d 49 54 20  IN..^The COMMIT 
2cc0: 63 6f 6d 6d 61 6e 64 20 61 6e 64 20 74 68 65 20  command and the 
2cd0: 52 4f 4c 4c 42 41 43 4b 20 63 6f 6d 6d 61 6e 64  ROLLBACK command
2ce0: 20 77 69 74 68 6f 75 74 20 74 68 65 20 54 4f 20   without the TO 
2cf0: 63 6c 61 75 73 65 0a 77 6f 72 6b 20 74 68 65 20  clause.work the 
2d00: 73 61 6d 65 20 6f 6e 20 5b 53 41 56 45 50 4f 49  same on [SAVEPOI
2d10: 4e 54 5d 20 74 72 61 6e 73 61 63 74 69 6f 6e 73  NT] transactions
2d20: 20 61 73 20 74 68 65 79 20 64 6f 20 77 69 74 68   as they do with
2d30: 20 74 72 61 6e 73 61 63 74 69 6f 6e 73 0a 73 74   transactions.st
2d40: 61 72 74 65 64 20 62 79 20 42 45 47 49 4e 2e 3c  arted by BEGIN.<
2d50: 2f 70 3e 0a 0a 3c 70 3e 0a 5e 54 72 61 6e 73 61  /p>..<p>.^Transa
2d60: 63 74 69 6f 6e 73 20 63 61 6e 20 62 65 20 64 65  ctions can be de
2d70: 66 65 72 72 65 64 2c 20 69 6d 6d 65 64 69 61 74  ferred, immediat
2d80: 65 2c 20 6f 72 20 65 78 63 6c 75 73 69 76 65 2e  e, or exclusive.
2d90: 20 20 0a 5e 54 68 65 20 64 65 66 61 75 6c 74 20    .^The default 
2da0: 74 72 61 6e 73 61 63 74 69 6f 6e 20 62 65 68 61  transaction beha
2db0: 76 69 6f 72 20 69 73 20 64 65 66 65 72 72 65 64  vior is deferred
2dc0: 2e 0a 5e 44 65 66 65 72 72 65 64 20 6d 65 61 6e  ..^Deferred mean
2dd0: 73 20 74 68 61 74 20 6e 6f 20 6c 6f 63 6b 73 20  s that no locks 
2de0: 61 72 65 20 61 63 71 75 69 72 65 64 0a 6f 6e 20  are acquired.on 
2df0: 74 68 65 20 64 61 74 61 62 61 73 65 20 75 6e 74  the database unt
2e00: 69 6c 20 74 68 65 20 64 61 74 61 62 61 73 65 20  il the database 
2e10: 69 73 20 66 69 72 73 74 20 61 63 63 65 73 73 65  is first accesse
2e20: 64 2e 20 20 5e 54 68 75 73 20 77 69 74 68 20 61  d.  ^Thus with a
2e30: 0a 64 65 66 65 72 72 65 64 20 74 72 61 6e 73 61  .deferred transa
2e40: 63 74 69 6f 6e 2c 20 74 68 65 20 42 45 47 49 4e  ction, the BEGIN
2e50: 20 73 74 61 74 65 6d 65 6e 74 20 69 74 73 65 6c   statement itsel
2e60: 66 20 64 6f 65 73 20 6e 6f 74 68 69 6e 67 20 74  f does nothing t
2e70: 6f 20 74 68 65 0a 66 69 6c 65 73 79 73 74 65 6d  o the.filesystem
2e80: 2e 20 20 5e 4c 6f 63 6b 73 0a 61 72 65 20 6e 6f  .  ^Locks.are no
2e90: 74 20 61 63 71 75 69 72 65 64 20 75 6e 74 69 6c  t acquired until
2ea0: 20 74 68 65 20 66 69 72 73 74 20 72 65 61 64 20   the first read 
2eb0: 6f 72 20 77 72 69 74 65 20 6f 70 65 72 61 74 69  or write operati
2ec0: 6f 6e 2e 20 20 5e 54 68 65 20 66 69 72 73 74 20  on.  ^The first 
2ed0: 72 65 61 64 0a 6f 70 65 72 61 74 69 6f 6e 20 61  read.operation a
2ee0: 67 61 69 6e 73 74 20 61 20 64 61 74 61 62 61 73  gainst a databas
2ef0: 65 20 63 72 65 61 74 65 73 20 61 20 5b 53 48 41  e creates a [SHA
2f00: 52 45 44 5d 20 6c 6f 63 6b 20 61 6e 64 20 74 68  RED] lock and th
2f10: 65 20 66 69 72 73 74 0a 77 72 69 74 65 20 6f 70  e first.write op
2f20: 65 72 61 74 69 6f 6e 20 63 72 65 61 74 65 73 20  eration creates 
2f30: 61 20 5b 52 45 53 45 52 56 45 44 5d 20 6c 6f 63  a [RESERVED] loc
2f40: 6b 2e 20 20 20 5e 42 65 63 61 75 73 65 20 74 68  k.   ^Because th
2f50: 65 20 61 63 71 75 69 73 69 74 69 6f 6e 20 6f 66  e acquisition of
2f60: 0a 6c 6f 63 6b 73 20 69 73 20 64 65 66 65 72 72  .locks is deferr
2f70: 65 64 20 75 6e 74 69 6c 20 74 68 65 79 20 61 72  ed until they ar
2f80: 65 20 6e 65 65 64 65 64 2c 20 69 74 20 69 73 20  e needed, it is 
2f90: 70 6f 73 73 69 62 6c 65 20 74 68 61 74 20 61 6e  possible that an
2fa0: 6f 74 68 65 72 0a 74 68 72 65 61 64 20 6f 72 20  other.thread or 
2fb0: 70 72 6f 63 65 73 73 20 63 6f 75 6c 64 20 63 72  process could cr
2fc0: 65 61 74 65 20 61 20 73 65 70 61 72 61 74 65 20  eate a separate 
2fd0: 74 72 61 6e 73 61 63 74 69 6f 6e 20 61 6e 64 20  transaction and 
2fe0: 77 72 69 74 65 20 74 6f 0a 74 68 65 20 64 61 74  write to.the dat
2ff0: 61 62 61 73 65 20 61 66 74 65 72 20 74 68 65 20  abase after the 
3000: 42 45 47 49 4e 20 6f 6e 20 74 68 65 20 63 75 72  BEGIN on the cur
3010: 72 65 6e 74 20 74 68 72 65 61 64 20 68 61 73 20  rent thread has 
3020: 65 78 65 63 75 74 65 64 2e 0a 5e 49 66 20 74 68  executed..^If th
3030: 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 69 73  e transaction is
3040: 20 69 6d 6d 65 64 69 61 74 65 2c 20 74 68 65 6e   immediate, then
3050: 20 5b 52 45 53 45 52 56 45 44 5d 20 6c 6f 63 6b   [RESERVED] lock
3060: 73 0a 61 72 65 20 61 63 71 75 69 72 65 64 20 6f  s.are acquired o
3070: 6e 20 61 6c 6c 20 64 61 74 61 62 61 73 65 73 20  n all databases 
3080: 61 73 20 73 6f 6f 6e 20 61 73 20 74 68 65 20 42  as soon as the B
3090: 45 47 49 4e 20 63 6f 6d 6d 61 6e 64 20 69 73 0a  EGIN command is.
30a0: 65 78 65 63 75 74 65 64 2c 20 77 69 74 68 6f 75  executed, withou
30b0: 74 20 77 61 69 74 69 6e 67 20 66 6f 72 20 74 68  t waiting for th
30c0: 65 0a 64 61 74 61 62 61 73 65 20 74 6f 20 62 65  e.database to be
30d0: 20 75 73 65 64 2e 20 20 5e 41 66 74 65 72 20 61   used.  ^After a
30e0: 20 42 45 47 49 4e 20 49 4d 4d 45 44 49 41 54 45   BEGIN IMMEDIATE
30f0: 2c 20 0a 6e 6f 20 6f 74 68 65 72 20 5b 64 61 74  , .no other [dat
3100: 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
3110: 5d 20 77 69 6c 6c 20 62 65 20 61 62 6c 65 20 74  ] will be able t
3120: 6f 20 77 72 69 74 65 20 74 6f 20 74 68 65 20 64  o write to the d
3130: 61 74 61 62 61 73 65 20 6f 72 0a 64 6f 20 61 20  atabase or.do a 
3140: 42 45 47 49 4e 20 49 4d 4d 45 44 49 41 54 45 20  BEGIN IMMEDIATE 
3150: 6f 72 20 42 45 47 49 4e 20 45 58 43 4c 55 53 49  or BEGIN EXCLUSI
3160: 56 45 2e 20 20 5e 4f 74 68 65 72 20 70 72 6f 63  VE.  ^Other proc
3170: 65 73 73 65 73 20 63 61 6e 20 63 6f 6e 74 69 6e  esses can contin
3180: 75 65 0a 74 6f 20 72 65 61 64 20 66 72 6f 6d 20  ue.to read from 
3190: 74 68 65 20 64 61 74 61 62 61 73 65 2c 20 68 6f  the database, ho
31a0: 77 65 76 65 72 2e 20 20 5e 41 6e 20 65 78 63 6c  wever.  ^An excl
31b0: 75 73 69 76 65 20 74 72 61 6e 73 61 63 74 69 6f  usive transactio
31c0: 6e 20 63 61 75 73 65 73 0a 5b 45 58 43 4c 55 53  n causes.[EXCLUS
31d0: 49 56 45 5d 20 6c 6f 63 6b 73 20 74 6f 20 62 65  IVE] locks to be
31e0: 20 61 63 71 75 69 72 65 64 20 6f 6e 20 61 6c 6c   acquired on all
31f0: 20 64 61 74 61 62 61 73 65 73 2e 20 20 5e 41 66   databases.  ^Af
3200: 74 65 72 20 61 20 42 45 47 49 4e 0a 45 58 43 4c  ter a BEGIN.EXCL
3210: 55 53 49 56 45 2c 20 6e 6f 20 6f 74 68 65 72 20  USIVE, no other 
3220: 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63  [database connec
3230: 74 69 6f 6e 5d 20 65 78 63 65 70 74 20 66 6f 72  tion] except for
3240: 20 5b 72 65 61 64 5f 75 6e 63 6f 6d 6d 69 74 74   [read_uncommitt
3250: 65 64 5d 0a 63 6f 6e 6e 65 63 74 69 6f 6e 73 20  ed].connections 
3260: 77 69 6c 6c 20 62 65 20 61 62 6c 65 20 74 6f 20  will be able to 
3270: 72 65 61 64 20 74 68 65 20 64 61 74 61 62 61 73  read the databas
3280: 65 20 61 6e 64 20 6e 6f 20 6f 74 68 65 72 20 63  e and no other c
3290: 6f 6e 6e 65 63 74 69 6f 6e 20 77 69 74 68 6f 75  onnection withou
32a0: 74 0a 65 78 63 65 70 74 69 6f 6e 20 77 69 6c 6c  t.exception will
32b0: 20 62 65 20 61 62 6c 65 20 74 6f 20 77 72 69 74   be able to writ
32c0: 65 20 74 68 65 20 64 61 74 61 62 61 73 65 20 75  e the database u
32d0: 6e 74 69 6c 20 74 68 65 20 74 72 61 6e 73 61 63  ntil the transac
32e0: 74 69 6f 6e 20 69 73 0a 63 6f 6d 70 6c 65 74 65  tion is.complete
32f0: 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 5e 28 41 6e  ..</p>..<p>.^(An
3300: 20 69 6d 70 6c 69 63 69 74 20 74 72 61 6e 73 61   implicit transa
3310: 63 74 69 6f 6e 20 28 61 20 74 72 61 6e 73 61 63  ction (a transac
3320: 74 69 6f 6e 20 74 68 61 74 20 69 73 20 73 74 61  tion that is sta
3330: 72 74 65 64 20 61 75 74 6f 6d 61 74 69 63 61 6c  rted automatical
3340: 6c 79 2c 0a 6e 6f 74 20 61 20 74 72 61 6e 73 61  ly,.not a transa
3350: 63 74 69 6f 6e 20 73 74 61 72 74 65 64 20 62 79  ction started by
3360: 20 42 45 47 49 4e 29 20 69 73 20 63 6f 6d 6d 69   BEGIN) is commi
3370: 74 74 65 64 20 61 75 74 6f 6d 61 74 69 63 61 6c  tted automatical
3380: 6c 79 20 77 68 65 6e 0a 74 68 65 20 6c 61 73 74  ly when.the last
3390: 20 61 63 74 69 76 65 20 73 74 61 74 65 6d 65 6e   active statemen
33a0: 74 20 66 69 6e 69 73 68 65 73 2e 20 20 41 20 73  t finishes.  A s
33b0: 74 61 74 65 6d 65 6e 74 20 66 69 6e 69 73 68 65  tatement finishe
33c0: 73 20 77 68 65 6e 20 69 74 73 0a 70 72 65 70 61  s when its.prepa
33d0: 72 65 64 20 73 74 61 74 65 6d 65 6e 74 20 69 73  red statement is
33e0: 20 5b 73 71 6c 69 74 65 33 5f 72 65 73 65 74 28   [sqlite3_reset(
33f0: 29 20 7c 20 72 65 73 65 74 5d 20 6f 72 0a 5b 73  ) | reset] or.[s
3400: 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65 28  qlite3_finalize(
3410: 29 20 7c 20 66 69 6e 61 6c 69 7a 65 64 5d 2e 20  ) | finalized]. 
3420: 20 41 6e 20 6f 70 65 6e 20 5b 73 71 6c 69 74 65   An open [sqlite
3430: 33 5f 62 6c 6f 62 5d 20 75 73 65 64 20 66 6f 72  3_blob] used for
3440: 0a 69 6e 63 72 65 6d 65 6e 74 61 6c 20 42 4c 4f  .incremental BLO
3450: 42 20 49 2f 4f 20 63 6f 75 6e 74 73 20 61 73 20  B I/O counts as 
3460: 61 6e 20 75 6e 66 69 6e 69 73 68 65 64 20 73 74  an unfinished st
3470: 61 74 65 6d 65 6e 74 2e 20 20 54 68 65 20 5b 73  atement.  The [s
3480: 71 6c 69 74 65 33 5f 62 6c 6f 62 5d 0a 66 69 6e  qlite3_blob].fin
3490: 69 73 68 65 73 20 77 68 65 6e 20 69 74 20 69 73  ishes when it is
34a0: 20 5b 73 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 63   [sqlite3_blob_c
34b0: 6c 6f 73 65 28 29 20 7c 20 63 6c 6f 73 65 64 5d  lose() | closed]
34c0: 2e 29 5e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 5e 54  .)^.</p>..<p>.^T
34d0: 68 65 20 65 78 70 6c 69 63 69 74 20 43 4f 4d 4d  he explicit COMM
34e0: 49 54 20 63 6f 6d 6d 61 6e 64 20 72 75 6e 73 20  IT command runs 
34f0: 69 6d 6d 65 64 69 61 74 65 6c 79 2c 20 65 76 65  immediately, eve
3500: 6e 20 69 66 20 74 68 65 72 65 20 61 72 65 0a 70  n if there are.p
3510: 65 6e 64 69 6e 67 20 5b 53 45 4c 45 43 54 5d 20  ending [SELECT] 
3520: 73 74 61 74 65 6d 65 6e 74 73 2e 20 20 5e 48 6f  statements.  ^Ho
3530: 77 65 76 65 72 2c 20 69 66 20 74 68 65 72 65 20  wever, if there 
3540: 61 72 65 20 70 65 6e 64 69 6e 67 0a 77 72 69 74  are pending.writ
3550: 65 20 6f 70 65 72 61 74 69 6f 6e 73 2c 20 74 68  e operations, th
3560: 65 20 43 4f 4d 4d 49 54 20 63 6f 6d 6d 61 6e 64  e COMMIT command
3570: 0a 77 69 6c 6c 20 66 61 69 6c 20 77 69 74 68 20  .will fail with 
3580: 61 20 65 72 72 6f 72 20 63 6f 64 65 20 5b 53 51  a error code [SQ
3590: 4c 49 54 45 5f 42 55 53 59 5d 2e 0a 3c 2f 70 3e  LITE_BUSY]..</p>
35a0: 0a 0a 3c 70 3e 0a 5e 41 6e 20 61 74 74 65 6d 70  ..<p>.^An attemp
35b0: 74 20 74 6f 20 65 78 65 63 75 74 65 20 43 4f 4d  t to execute COM
35c0: 4d 49 54 20 6d 69 67 68 74 20 61 6c 73 6f 20 72  MIT might also r
35d0: 65 73 75 6c 74 20 69 6e 20 61 6e 20 5b 53 51 4c  esult in an [SQL
35e0: 49 54 45 5f 42 55 53 59 5d 20 72 65 74 75 72 6e  ITE_BUSY] return
35f0: 20 63 6f 64 65 0a 69 66 20 61 6e 20 61 6e 6f 74   code.if an anot
3600: 68 65 72 20 74 68 72 65 61 64 20 6f 72 20 70 72  her thread or pr
3610: 6f 63 65 73 73 20 68 61 73 20 61 20 5b 73 68 61  ocess has a [sha
3620: 72 65 64 20 6c 6f 63 6b 5d 20 6f 6e 20 74 68 65  red lock] on the
3630: 20 64 61 74 61 62 61 73 65 0a 74 68 61 74 20 70   database.that p
3640: 72 65 76 65 6e 74 65 64 20 74 68 65 20 64 61 74  revented the dat
3650: 61 62 61 73 65 20 66 72 6f 6d 20 62 65 69 6e 67  abase from being
3660: 20 75 70 64 61 74 65 64 2e 20 20 5e 57 68 65 6e   updated.  ^When
3670: 20 43 4f 4d 4d 49 54 20 66 61 69 6c 73 20 69 6e   COMMIT fails in
3680: 20 74 68 69 73 0a 77 61 79 2c 20 74 68 65 20 74   this.way, the t
3690: 72 61 6e 73 61 63 74 69 6f 6e 20 72 65 6d 61 69  ransaction remai
36a0: 6e 73 20 61 63 74 69 76 65 20 61 6e 64 20 74 68  ns active and th
36b0: 65 20 43 4f 4d 4d 49 54 20 63 61 6e 20 62 65 20  e COMMIT can be 
36c0: 72 65 74 72 69 65 64 20 6c 61 74 65 72 0a 61 66  retried later.af
36d0: 74 65 72 20 74 68 65 20 72 65 61 64 65 72 20 68  ter the reader h
36e0: 61 73 20 68 61 64 20 61 20 63 68 61 6e 63 65 20  as had a chance 
36f0: 74 6f 20 63 6c 65 61 72 2e 0a 3c 2f 70 3e 0a 0a  to clear..</p>..
3700: 3c 70 3e 0a 5e 54 68 65 20 52 4f 4c 4c 42 41 43  <p>.^The ROLLBAC
3710: 4b 20 77 69 6c 6c 20 66 61 69 6c 20 77 69 74 68  K will fail with
3720: 20 61 6e 20 65 72 72 6f 72 20 63 6f 64 65 20 5b   an error code [
3730: 53 51 4c 49 54 45 5f 42 55 53 59 5d 20 69 66 20  SQLITE_BUSY] if 
3740: 74 68 65 72 65 0a 61 72 65 20 61 6e 79 20 70 65  there.are any pe
3750: 6e 64 69 6e 67 20 71 75 65 72 69 65 73 2e 20 20  nding queries.  
3760: 5e 42 6f 74 68 20 72 65 61 64 2d 6f 6e 6c 79 20  ^Both read-only 
3770: 61 6e 64 20 72 65 61 64 2f 77 72 69 74 65 20 71  and read/write q
3780: 75 65 72 69 65 73 20 77 69 6c 6c 0a 63 61 75 73  ueries will.caus
3790: 65 20 61 20 52 4f 4c 4c 42 41 43 4b 20 74 6f 20  e a ROLLBACK to 
37a0: 66 61 69 6c 2e 20 20 41 20 52 4f 4c 4c 42 41 43  fail.  A ROLLBAC
37b0: 4b 20 6d 75 73 74 20 66 61 69 6c 20 69 66 20 74  K must fail if t
37c0: 68 65 72 65 20 61 72 65 20 70 65 6e 64 69 6e 67  here are pending
37d0: 0a 72 65 61 64 20 6f 70 65 72 61 74 69 6f 6e 73  .read operations
37e0: 20 28 75 6e 6c 69 6b 65 20 43 4f 4d 4d 49 54 20   (unlike COMMIT 
37f0: 77 68 69 63 68 20 63 61 6e 20 73 75 63 63 65 65  which can succee
3800: 64 29 20 62 65 63 61 75 73 65 20 62 61 64 20 74  d) because bad t
3810: 68 69 6e 67 73 0a 77 69 6c 6c 20 68 61 70 70 65  hings.will happe
3820: 6e 20 69 66 20 74 68 65 20 69 6e 2d 6d 65 6d 6f  n if the in-memo
3830: 72 79 20 69 6d 61 67 65 20 6f 66 20 74 68 65 20  ry image of the 
3840: 64 61 74 61 62 61 73 65 20 69 73 20 63 68 61 6e  database is chan
3850: 67 65 64 20 6f 75 74 20 66 72 6f 6d 20 75 6e 64  ged out from und
3860: 65 72 0a 61 6e 20 61 63 74 69 76 65 20 71 75 65  er.an active que
3870: 72 79 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 49 66  ry..</p>..<p>.If
3880: 20 5b 50 52 41 47 4d 41 20 6a 6f 75 72 6e 61 6c   [PRAGMA journal
3890: 5f 6d 6f 64 65 5d 20 69 73 20 73 65 74 20 74 6f  _mode] is set to
38a0: 20 4f 46 46 20 28 74 68 75 73 20 64 69 73 61 62   OFF (thus disab
38b0: 6c 69 6e 67 20 74 68 65 20 72 6f 6c 6c 62 61 63  ling the rollbac
38c0: 6b 20 6a 6f 75 72 6e 61 6c 0a 66 69 6c 65 29 20  k journal.file) 
38d0: 74 68 65 6e 20 74 68 65 20 62 65 68 61 76 69 6f  then the behavio
38e0: 72 20 6f 66 20 74 68 65 20 52 4f 4c 4c 42 41 43  r of the ROLLBAC
38f0: 4b 20 63 6f 6d 6d 61 6e 64 20 69 73 20 75 6e 64  K command is und
3900: 65 66 69 6e 65 64 2e 0a 3c 2f 70 3e 0a 0a 3c 68  efined..</p>..<h
3910: 33 3e 52 65 73 70 6f 6e 73 65 20 54 6f 20 45 72  3>Response To Er
3920: 72 6f 72 73 20 57 69 74 68 69 6e 20 41 20 54 72  rors Within A Tr
3930: 61 6e 73 61 63 74 69 6f 6e 3c 2f 68 33 3e 0a 0a  ansaction</h3>..
3940: 3c 70 3e 20 5e 28 49 66 20 63 65 72 74 61 69 6e  <p> ^(If certain
3950: 20 6b 69 6e 64 73 20 6f 66 20 65 72 72 6f 72 73   kinds of errors
3960: 20 6f 63 63 75 72 20 77 69 74 68 69 6e 20 61 20   occur within a 
3970: 74 72 61 6e 73 61 63 74 69 6f 6e 2c 20 74 68 65  transaction, the
3980: 0a 74 72 61 6e 73 61 63 74 69 6f 6e 20 6d 61 79  .transaction may
3990: 20 6f 72 20 6d 61 79 20 6e 6f 74 20 62 65 20 72   or may not be r
39a0: 6f 6c 6c 65 64 20 62 61 63 6b 20 61 75 74 6f 6d  olled back autom
39b0: 61 74 69 63 61 6c 6c 79 2e 20 20 54 68 65 0a 65  atically.  The.e
39c0: 72 72 6f 72 73 20 74 68 61 74 20 63 61 75 73 65  rrors that cause
39d0: 20 74 68 65 20 62 65 68 61 76 69 6f 72 20 69 6e   the behavior in
39e0: 63 6c 75 64 65 3a 3c 2f 70 3e 0a 0a 3c 75 6c 3e  clude:</p>..<ul>
39f0: 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 46 55  .<li> [SQLITE_FU
3a00: 4c 4c 5d 3a 20 64 61 74 61 62 61 73 65 20 6f 72  LL]: database or
3a10: 20 64 69 73 6b 20 66 75 6c 6c 0a 3c 6c 69 3e 20   disk full.<li> 
3a20: 5b 53 51 4c 49 54 45 5f 49 4f 45 52 52 5d 3a 20  [SQLITE_IOERR]: 
3a30: 64 69 73 6b 20 49 2f 4f 20 65 72 72 6f 72 0a 3c  disk I/O error.<
3a40: 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 42 55 53 59  li> [SQLITE_BUSY
3a50: 5d 3a 20 64 61 74 61 62 61 73 65 20 69 6e 20 75  ]: database in u
3a60: 73 65 20 62 79 20 61 6e 6f 74 68 65 72 20 70 72  se by another pr
3a70: 6f 63 65 73 73 0a 3c 6c 69 3e 20 5b 53 51 4c 49  ocess.<li> [SQLI
3a80: 54 45 5f 4e 4f 4d 45 4d 5d 3a 20 6f 75 74 20 6f  TE_NOMEM]: out o
3a90: 72 20 6d 65 6d 6f 72 79 0a 3c 6c 69 3e 20 5b 53  r memory.<li> [S
3aa0: 51 4c 49 54 45 5f 49 4e 54 45 52 52 55 50 54 5d  QLITE_INTERRUPT]
3ab0: 3a 20 70 72 6f 63 65 73 73 69 6e 67 20 5b 73 71  : processing [sq
3ac0: 6c 69 74 65 33 5f 69 6e 74 65 72 72 75 70 74 7c  lite3_interrupt|
3ad0: 69 6e 74 65 72 72 75 70 74 65 64 5d 0a 20 20 20  interrupted].   
3ae0: 20 20 62 79 20 61 70 70 6c 69 63 61 74 69 6f 6e    by application
3af0: 20 72 65 71 75 65 73 74 0a 3c 2f 75 6c 3e 29 5e   request.</ul>)^
3b00: 0a 0a 3c 70 3e 0a 5e 46 6f 72 20 61 6c 6c 20 6f  ..<p>.^For all o
3b10: 66 20 74 68 65 73 65 20 65 72 72 6f 72 73 2c 20  f these errors, 
3b20: 53 51 4c 69 74 65 20 61 74 74 65 6d 70 74 73 20  SQLite attempts 
3b30: 74 6f 20 75 6e 64 6f 20 6a 75 73 74 20 74 68 65  to undo just the
3b40: 20 6f 6e 65 20 73 74 61 74 65 6d 65 6e 74 0a 69   one statement.i
3b50: 74 20 77 61 73 20 77 6f 72 6b 69 6e 67 20 6f 6e  t was working on
3b60: 20 61 6e 64 20 6c 65 61 76 65 20 63 68 61 6e 67   and leave chang
3b70: 65 73 20 66 72 6f 6d 20 70 72 69 6f 72 20 73 74  es from prior st
3b80: 61 74 65 6d 65 6e 74 73 20 77 69 74 68 69 6e 20  atements within 
3b90: 74 68 65 0a 73 61 6d 65 20 74 72 61 6e 73 61 63  the.same transac
3ba0: 74 69 6f 6e 20 69 6e 74 61 63 74 20 61 6e 64 20  tion intact and 
3bb0: 63 6f 6e 74 69 6e 75 65 20 77 69 74 68 20 74 68  continue with th
3bc0: 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 2e 20 20  e transaction.  
3bd0: 5e 48 6f 77 65 76 65 72 2c 20 0a 64 65 70 65 6e  ^However, .depen
3be0: 64 69 6e 67 20 6f 6e 20 74 68 65 20 73 74 61 74  ding on the stat
3bf0: 65 6d 65 6e 74 20 62 65 69 6e 67 20 65 76 61 6c  ement being eval
3c00: 75 61 74 65 64 20 61 6e 64 20 74 68 65 20 70 6f  uated and the po
3c10: 69 6e 74 20 61 74 20 77 68 69 63 68 20 74 68 65  int at which the
3c20: 0a 65 72 72 6f 72 20 6f 63 63 75 72 73 2c 20 69  .error occurs, i
3c30: 74 20 6d 69 67 68 74 20 62 65 20 6e 65 63 65 73  t might be neces
3c40: 73 61 72 79 20 66 6f 72 20 53 51 4c 69 74 65 20  sary for SQLite 
3c50: 74 6f 20 72 6f 6c 6c 62 61 63 6b 20 61 6e 64 0a  to rollback and.
3c60: 63 61 6e 63 65 6c 20 74 68 65 20 65 6e 74 69 72  cancel the entir
3c70: 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 2e 20 20  e transaction.  
3c80: 5e 41 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e 20  ^An application 
3c90: 63 61 6e 20 74 65 6c 6c 20 77 68 69 63 68 0a 63  can tell which.c
3ca0: 6f 75 72 73 65 20 6f 66 20 61 63 74 69 6f 6e 20  ourse of action 
3cb0: 53 51 4c 69 74 65 20 74 6f 6f 6b 20 62 79 20 75  SQLite took by u
3cc0: 73 69 6e 67 20 74 68 65 0a 5b 73 71 6c 69 74 65  sing the.[sqlite
3cd0: 33 5f 67 65 74 5f 61 75 74 6f 63 6f 6d 6d 69 74  3_get_autocommit
3ce0: 28 29 5d 20 43 2d 6c 61 6e 67 75 61 67 65 20 69  ()] C-language i
3cf0: 6e 74 65 72 66 61 63 65 2e 3c 2f 70 3e 0a 0a 3c  nterface.</p>..<
3d00: 70 3e 49 74 20 69 73 20 72 65 63 6f 6d 6d 65 6e  p>It is recommen
3d10: 64 65 64 20 74 68 61 74 20 61 70 70 6c 69 63 61  ded that applica
3d20: 74 69 6f 6e 73 20 72 65 73 70 6f 6e 64 20 74 6f  tions respond to
3d30: 20 74 68 65 20 65 72 72 6f 72 73 0a 6c 69 73 74   the errors.list
3d40: 65 64 20 61 62 6f 76 65 20 62 79 20 65 78 70 6c  ed above by expl
3d50: 69 63 69 74 6c 79 20 69 73 73 75 69 6e 67 20 61  icitly issuing a
3d60: 20 52 4f 4c 4c 42 41 43 4b 20 63 6f 6d 6d 61 6e   ROLLBACK comman
3d70: 64 2e 20 20 5e 49 66 20 74 68 65 20 0a 74 72 61  d.  ^If the .tra
3d80: 6e 73 61 63 74 69 6f 6e 20 68 61 73 20 61 6c 72  nsaction has alr
3d90: 65 61 64 79 20 62 65 65 6e 20 72 6f 6c 6c 65 64  eady been rolled
3da0: 20 62 61 63 6b 20 61 75 74 6f 6d 61 74 69 63 61   back automatica
3db0: 6c 6c 79 0a 62 79 20 74 68 65 20 65 72 72 6f 72  lly.by the error
3dc0: 20 72 65 73 70 6f 6e 73 65 2c 20 74 68 65 6e 20   response, then 
3dd0: 74 68 65 20 52 4f 4c 4c 42 41 43 4b 20 63 6f 6d  the ROLLBACK com
3de0: 6d 61 6e 64 20 77 69 6c 6c 20 66 61 69 6c 20 77  mand will fail w
3df0: 69 74 68 20 61 6e 0a 65 72 72 6f 72 2c 20 62 75  ith an.error, bu
3e00: 74 20 6e 6f 20 68 61 72 6d 20 69 73 20 63 61 75  t no harm is cau
3e10: 73 65 64 20 62 79 20 74 68 69 73 2e 3c 2f 70 3e  sed by this.</p>
3e20: 0a 0a 3c 70 3e 46 75 74 75 72 65 20 76 65 72 73  ..<p>Future vers
3e30: 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 20 6d  ions of SQLite m
3e40: 61 79 20 65 78 74 65 6e 64 20 74 68 65 20 6c 69  ay extend the li
3e50: 73 74 20 6f 66 20 65 72 72 6f 72 73 20 77 68 69  st of errors whi
3e60: 63 68 0a 6d 69 67 68 74 20 63 61 75 73 65 20 61  ch.might cause a
3e70: 75 74 6f 6d 61 74 69 63 20 74 72 61 6e 73 61 63  utomatic transac
3e80: 74 69 6f 6e 20 72 6f 6c 6c 62 61 63 6b 2e 20 20  tion rollback.  
3e90: 46 75 74 75 72 65 20 76 65 72 73 69 6f 6e 73 20  Future versions 
3ea0: 6f 66 0a 53 51 4c 69 74 65 20 6d 69 67 68 74 20  of.SQLite might 
3eb0: 63 68 61 6e 67 65 20 74 68 65 20 65 72 72 6f 72  change the error
3ec0: 20 72 65 73 70 6f 6e 73 65 2e 20 20 49 6e 20 70   response.  In p
3ed0: 61 72 74 69 63 75 6c 61 72 2c 20 77 65 20 6d 61  articular, we ma
3ee0: 79 0a 63 68 6f 6f 73 65 20 74 6f 20 73 69 6d 70  y.choose to simp
3ef0: 6c 69 66 79 20 74 68 65 20 69 6e 74 65 72 66 61  lify the interfa
3f00: 63 65 20 69 6e 20 66 75 74 75 72 65 20 76 65 72  ce in future ver
3f10: 73 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 20  sions of SQLite 
3f20: 62 79 0a 63 61 75 73 69 6e 67 20 74 68 65 20 65  by.causing the e
3f30: 72 72 6f 72 73 20 61 62 6f 76 65 20 74 6f 20 66  rrors above to f
3f40: 6f 72 63 65 20 61 6e 20 75 6e 63 6f 6e 64 69 74  orce an uncondit
3f50: 69 6f 6e 61 6c 20 72 6f 6c 6c 62 61 63 6b 2e 3c  ional rollback.<
3f60: 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23  /p>..<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 23 23 23 0a 53 65 63 74 69  ##########.Secti
3fc0: 6f 6e 20 7b 53 41 56 45 50 4f 49 4e 54 7d 20 73  on {SAVEPOINT} s
3fd0: 61 76 65 70 6f 69 6e 74 20 7b 53 41 56 45 50 4f  avepoint {SAVEPO
3fe0: 49 4e 54 20 52 45 4c 45 41 53 45 7d 0a 0a 42 75  INT RELEASE}..Bu
3ff0: 62 62 6c 65 44 69 61 67 72 61 6d 20 73 61 76 65  bbleDiagram save
4000: 70 6f 69 6e 74 2d 73 74 6d 74 0a 42 75 62 62 6c  point-stmt.Bubbl
4010: 65 44 69 61 67 72 61 6d 20 72 65 6c 65 61 73 65  eDiagram release
4020: 2d 73 74 6d 74 0a 42 75 62 62 6c 65 44 69 61 67  -stmt.BubbleDiag
4030: 72 61 6d 20 72 6f 6c 6c 62 61 63 6b 2d 73 74 6d  ram rollback-stm
4040: 74 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 20 5e 53  t.</tcl>..<p> ^S
4050: 41 56 45 50 4f 49 4e 54 73 20 61 72 65 20 61 20  AVEPOINTs are a 
4060: 6d 65 74 68 6f 64 20 6f 66 20 63 72 65 61 74 69  method of creati
4070: 6e 67 20 74 72 61 6e 73 61 63 74 69 6f 6e 73 2c  ng transactions,
4080: 20 73 69 6d 69 6c 61 72 20 74 6f 0a 5b 42 45 47   similar to.[BEG
4090: 49 4e 5d 20 61 6e 64 20 5b 43 4f 4d 4d 49 54 5d  IN] and [COMMIT]
40a0: 2c 20 65 78 63 65 70 74 20 74 68 61 74 20 74 68  , except that th
40b0: 65 20 53 41 56 45 50 4f 49 4e 54 20 61 6e 64 20  e SAVEPOINT and 
40c0: 52 45 4c 45 41 53 45 20 63 6f 6d 6d 61 6e 64 73  RELEASE commands
40d0: 0a 61 72 65 20 6e 61 6d 65 64 20 61 6e 64 20 6d  .are named and m
40e0: 61 79 20 62 65 20 6e 65 73 74 65 64 2e 3c 2f 70  ay be nested.</p
40f0: 3e 0a 0a 3c 70 3e 20 5e 54 68 65 20 53 41 56 45  >..<p> ^The SAVE
4100: 50 4f 49 4e 54 20 63 6f 6d 6d 61 6e 64 20 73 74  POINT command st
4110: 61 72 74 73 20 61 20 6e 65 77 20 74 72 61 6e 73  arts a new trans
4120: 61 63 74 69 6f 6e 20 77 69 74 68 20 61 20 6e 61  action with a na
4130: 6d 65 2e 0a 5e 54 68 65 20 74 72 61 6e 73 61 63  me..^The transac
4140: 74 69 6f 6e 20 6e 61 6d 65 73 20 6e 65 65 64 20  tion names need 
4150: 6e 6f 74 20 62 65 20 75 6e 69 71 75 65 2e 0a 5e  not be unique..^
4160: 28 41 20 53 41 56 45 50 4f 49 4e 54 20 63 61 6e  (A SAVEPOINT can
4170: 20 62 65 20 73 74 61 72 74 65 64 20 65 69 74 68   be started eith
4180: 65 72 20 77 69 74 68 69 6e 20 6f 72 20 6f 75 74  er within or out
4190: 73 69 64 65 20 6f 66 0a 61 20 5b 42 45 47 49 4e  side of.a [BEGIN
41a0: 5d 2e 2e 2e 5b 43 4f 4d 4d 49 54 5d 2e 29 5e 20  ]...[COMMIT].)^ 
41b0: 20 5e 28 57 68 65 6e 20 61 20 53 41 56 45 50 4f   ^(When a SAVEPO
41c0: 49 4e 54 20 69 73 20 74 68 65 20 6f 75 74 65 72  INT is the outer
41d0: 2d 6d 6f 73 74 20 73 61 76 65 70 6f 69 6e 74 0a  -most savepoint.
41e0: 61 6e 64 20 69 74 20 69 73 20 6e 6f 74 20 77 69  and it is not wi
41f0: 74 68 69 6e 20 61 20 5b 42 45 47 49 4e 5d 2e 2e  thin a [BEGIN]..
4200: 2e 5b 43 4f 4d 4d 49 54 5d 20 74 68 65 6e 20 74  .[COMMIT] then t
4210: 68 65 20 62 65 68 61 76 69 6f 72 20 69 73 20 74  he behavior is t
4220: 68 65 0a 73 61 6d 65 20 61 73 20 42 45 47 49 4e  he.same as BEGIN
4230: 20 44 45 46 45 52 52 45 44 20 54 52 41 4e 53 41   DEFERRED TRANSA
4240: 43 54 49 4f 4e 2e 29 5e 3c 2f 70 3e 0a 0a 3c 70  CTION.)^</p>..<p
4250: 3e 5e 54 68 65 20 52 4f 4c 4c 42 41 43 4b 20 54  >^The ROLLBACK T
4260: 4f 20 63 6f 6d 6d 61 6e 64 20 72 65 76 65 72 74  O command revert
4270: 73 20 74 68 65 20 73 74 61 74 65 20 6f 66 20 74  s the state of t
4280: 68 65 20 64 61 74 61 62 61 73 65 20 62 61 63 6b  he database back
4290: 20 74 6f 20 77 68 61 74 0a 69 74 20 77 61 73 20   to what.it was 
42a0: 6a 75 73 74 20 61 66 74 65 72 20 74 68 65 20 63  just after the c
42b0: 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 53 41 56  orresponding SAV
42c0: 45 50 4f 49 4e 54 2e 20 20 5e 4e 6f 74 65 20 74  EPOINT.  ^Note t
42d0: 68 61 74 20 75 6e 6c 69 6b 65 20 74 68 61 74 0a  hat unlike that.
42e0: 70 6c 61 69 6e 20 5b 52 4f 4c 4c 42 41 43 4b 5d  plain [ROLLBACK]
42f0: 20 63 6f 6d 6d 61 6e 64 20 28 77 69 74 68 6f 75   command (withou
4300: 74 20 74 68 65 20 54 4f 20 6b 65 79 77 6f 72 64  t the TO keyword
4310: 29 20 74 68 65 20 52 4f 4c 4c 42 41 43 4b 20 54  ) the ROLLBACK T
4320: 4f 20 63 6f 6d 6d 61 6e 64 0a 64 6f 65 73 20 6e  O command.does n
4330: 6f 74 20 63 61 6e 63 65 6c 20 74 68 65 20 74 72  ot cancel the tr
4340: 61 6e 73 61 63 74 69 6f 6e 2e 20 20 5e 49 6e 73  ansaction.  ^Ins
4350: 74 65 61 64 20 6f 66 20 63 61 6e 63 65 6c 6c 69  tead of cancelli
4360: 6e 67 20 74 68 65 20 74 72 61 6e 73 61 63 74 69  ng the transacti
4370: 6f 6e 2c 0a 74 68 65 20 52 4f 4c 4c 42 41 43 4b  on,.the ROLLBACK
4380: 20 54 4f 20 63 6f 6d 6d 61 6e 64 20 72 65 73 74   TO command rest
4390: 61 72 74 73 20 74 68 65 20 74 72 61 6e 73 61 63  arts the transac
43a0: 74 69 6f 6e 20 61 67 61 69 6e 20 61 74 20 74 68  tion again at th
43b0: 65 20 62 65 67 69 6e 6e 69 6e 67 2e 0a 5e 41 6c  e beginning..^Al
43c0: 6c 20 69 6e 74 65 72 76 65 6e 69 6e 67 20 53 41  l intervening SA
43d0: 56 45 50 4f 49 4e 54 73 20 61 72 65 20 63 61 6e  VEPOINTs are can
43e0: 63 65 6c 6c 65 64 2c 20 68 6f 77 65 76 65 72 2e  celled, however.
43f0: 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20 52 45  </p>..<p>^The RE
4400: 4c 45 41 53 45 20 63 6f 6d 6d 61 6e 64 20 69 73  LEASE command is
4410: 20 6c 69 6b 65 20 61 20 5b 43 4f 4d 4d 49 54 5d   like a [COMMIT]
4420: 20 66 6f 72 20 61 20 53 41 56 45 50 4f 49 4e 54   for a SAVEPOINT
4430: 2e 0a 5e 54 68 65 20 52 45 4c 45 41 53 45 20 63  ..^The RELEASE c
4440: 6f 6d 6d 61 6e 64 20 63 61 75 73 65 73 20 61 6c  ommand causes al
4450: 6c 20 73 61 76 65 70 6f 69 6e 74 73 20 62 61 63  l savepoints bac
4460: 6b 20 74 6f 20 61 6e 64 20 69 6e 63 6c 75 64 69  k to and includi
4470: 6e 67 20 74 68 65 20 0a 6d 6f 73 74 20 72 65 63  ng the .most rec
4480: 65 6e 74 20 73 61 76 65 70 6f 69 6e 74 20 77 69  ent savepoint wi
4490: 74 68 20 61 20 6d 61 74 63 68 69 6e 67 20 6e 61  th a matching na
44a0: 6d 65 20 74 6f 20 62 65 20 72 65 6d 6f 76 65 64  me to be removed
44b0: 20 66 72 6f 6d 20 74 68 65 20 0a 74 72 61 6e 73   from the .trans
44c0: 61 63 74 69 6f 6e 20 73 74 61 63 6b 2e 20 20 5e  action stack.  ^
44d0: 54 68 65 20 52 45 4c 45 41 53 45 20 6f 66 20 61  The RELEASE of a
44e0: 6e 20 69 6e 6e 65 72 20 74 72 61 6e 73 61 63 74  n inner transact
44f0: 69 6f 6e 0a 64 6f 65 73 20 6e 6f 74 20 63 61 75  ion.does not cau
4500: 73 65 20 61 6e 79 20 63 68 61 6e 67 65 73 20 74  se any changes t
4510: 6f 20 62 65 20 77 72 69 74 74 65 6e 20 74 6f 20  o be written to 
4520: 74 68 65 20 64 61 74 61 62 61 73 65 20 66 69 6c  the database fil
4530: 65 3b 20 69 74 20 6d 65 72 65 6c 79 0a 72 65 6d  e; it merely.rem
4540: 6f 76 65 73 20 73 61 76 65 70 6f 69 6e 74 73 20  oves savepoints 
4550: 66 72 6f 6d 20 74 68 65 20 74 72 61 6e 73 61 63  from the transac
4560: 74 69 6f 6e 20 73 74 61 63 6b 20 73 75 63 68 20  tion stack such 
4570: 74 68 61 74 20 69 74 20 69 73 0a 6e 6f 20 6c 6f  that it is.no lo
4580: 6e 67 65 72 20 70 6f 73 73 69 62 6c 65 20 74 6f  nger possible to
4590: 20 52 4f 4c 4c 42 41 43 4b 20 54 4f 20 74 68 6f   ROLLBACK TO tho
45a0: 73 65 20 73 61 76 65 70 6f 69 6e 74 73 2e 0a 5e  se savepoints..^
45b0: 49 66 20 61 20 52 45 4c 45 41 53 45 20 63 6f 6d  If a RELEASE com
45c0: 6d 61 6e 64 20 72 65 6c 65 61 73 65 73 20 74 68  mand releases th
45d0: 65 20 6f 75 74 65 72 6d 6f 73 74 20 73 61 76 65  e outermost save
45e0: 70 6f 69 6e 74 2c 20 73 6f 0a 74 68 61 74 20 74  point, so.that t
45f0: 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 73  he transaction s
4600: 74 61 63 6b 20 62 65 63 6f 6d 65 73 20 65 6d 70  tack becomes emp
4610: 74 79 2c 20 74 68 65 6e 20 52 45 4c 45 41 53 45  ty, then RELEASE
4620: 20 69 73 20 74 68 65 20 73 61 6d 65 0a 61 73 20   is the same.as 
4630: 5b 43 4f 4d 4d 49 54 5d 2e 0a 5e 54 68 65 20 5b  [COMMIT]..^The [
4640: 43 4f 4d 4d 49 54 5d 20 63 6f 6d 6d 61 6e 64 20  COMMIT] command 
4650: 6d 61 79 20 62 65 20 75 73 65 64 20 74 6f 20 72  may be used to r
4660: 65 6c 65 61 73 65 20 61 6c 6c 20 73 61 76 65 70  elease all savep
4670: 6f 69 6e 74 73 20 61 6e 64 0a 63 6f 6d 6d 69 74  oints and.commit
4680: 20 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e   the transaction
4690: 20 65 76 65 6e 20 69 66 20 74 68 65 20 74 72 61   even if the tra
46a0: 6e 73 61 63 74 69 6f 6e 20 77 61 73 20 6f 72 69  nsaction was ori
46b0: 67 69 6e 61 6c 6c 79 20 73 74 61 72 74 65 64 0a  ginally started.
46c0: 62 79 20 61 20 53 41 56 45 50 4f 49 4e 54 20 63  by a SAVEPOINT c
46d0: 6f 6d 6d 61 6e 64 20 69 6e 73 74 65 61 64 20 6f  ommand instead o
46e0: 66 20 61 20 5b 42 45 47 49 4e 5d 20 63 6f 6d 6d  f a [BEGIN] comm
46f0: 61 6e 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 49 66  and.</p>..<p>^If
4700: 20 74 68 65 20 73 61 76 65 70 6f 69 6e 74 2d 6e   the savepoint-n
4710: 61 6d 65 20 69 6e 20 61 20 52 45 4c 45 41 53 45  ame in a RELEASE
4720: 20 63 6f 6d 6d 61 6e 64 20 64 6f 65 73 20 6e 6f   command does no
4730: 74 20 6d 61 74 63 68 20 61 6e 79 0a 73 61 76 65  t match any.save
4740: 70 6f 69 6e 74 20 63 75 72 72 65 6e 74 6c 79 20  point currently 
4750: 69 6e 20 74 68 65 20 74 72 61 6e 61 63 74 69 6f  in the tranactio
4760: 6e 20 73 74 61 63 6b 2c 20 74 68 65 6e 20 6e 6f  n stack, then no
4770: 20 73 61 76 65 70 6f 69 6e 74 73 20 61 72 65 0a   savepoints are.
4780: 72 65 6c 65 61 73 65 64 2c 20 74 68 65 20 64 61  released, the da
4790: 74 61 62 61 73 65 20 69 73 20 75 6e 63 68 61 6e  tabase is unchan
47a0: 67 65 64 2c 20 61 6e 64 20 74 68 65 20 52 45 4c  ged, and the REL
47b0: 45 41 53 45 20 63 6f 6d 6d 61 6e 64 20 72 65 74  EASE command ret
47c0: 75 72 6e 73 0a 61 6e 20 65 72 72 6f 72 2e 3c 2f  urns.an error.</
47d0: 70 3e 0a 0a 3c 70 3e 5e 4e 6f 74 65 20 74 68 61  p>..<p>^Note tha
47e0: 74 20 61 6e 20 69 6e 6e 65 72 20 74 72 61 6e 73  t an inner trans
47f0: 61 63 74 69 6f 6e 20 6d 69 67 68 74 20 63 6f 6d  action might com
4800: 6d 69 74 20 28 75 73 69 6e 67 20 74 68 65 20 52  mit (using the R
4810: 45 4c 45 41 53 45 20 63 6f 6d 6d 61 6e 64 29 0a  ELEASE command).
4820: 62 75 74 20 74 68 65 6e 20 6c 61 74 65 72 20 68  but then later h
4830: 61 76 65 20 69 74 73 20 77 6f 72 6b 20 75 6e 64  ave its work und
4840: 6f 6e 65 20 62 79 20 61 20 52 4f 4c 4c 42 41 43  one by a ROLLBAC
4850: 4b 20 69 6e 20 61 6e 20 6f 75 74 65 72 20 74 72  K in an outer tr
4860: 61 6e 73 61 63 74 69 6f 6e 2e 0a 5e 41 20 70 6f  ansaction..^A po
4870: 77 65 72 20 66 61 69 6c 75 72 65 20 6f 72 20 70  wer failure or p
4880: 72 6f 67 72 61 6d 20 63 72 61 73 68 20 6f 72 20  rogram crash or 
4890: 4f 53 20 63 72 61 73 68 20 77 69 6c 6c 20 63 61  OS crash will ca
48a0: 75 73 65 20 74 68 65 20 6f 75 74 65 72 2d 6d 6f  use the outer-mo
48b0: 73 74 0a 74 72 61 6e 73 61 63 74 69 6f 6e 20 74  st.transaction t
48c0: 6f 20 72 6f 6c 6c 62 61 63 6b 2c 20 75 6e 64 6f  o rollback, undo
48d0: 69 6e 67 20 61 6c 6c 20 63 68 61 6e 67 65 73 20  ing all changes 
48e0: 74 68 61 74 20 68 61 76 65 20 6f 63 63 75 72 72  that have occurr
48f0: 65 64 20 77 69 74 68 69 6e 0a 74 68 61 74 20 6f  ed within.that o
4900: 75 74 65 72 20 74 72 61 6e 73 61 63 74 69 6f 6e  uter transaction
4910: 2c 20 65 76 65 6e 20 63 68 61 6e 67 65 73 20 74  , even changes t
4920: 68 61 74 20 68 61 76 65 20 73 75 70 70 6f 73 65  hat have suppose
4930: 64 6c 79 20 62 65 65 6e 20 22 63 6f 6d 6d 69 74  dly been "commit
4940: 74 65 64 22 0a 62 79 20 74 68 65 20 52 45 4c 45  ted".by the RELE
4950: 41 53 45 20 63 6f 6d 6d 61 6e 64 2e 20 20 5e 43  ASE command.  ^C
4960: 6f 6e 74 65 6e 74 20 69 73 20 6e 6f 74 20 61 63  ontent is not ac
4970: 74 75 61 6c 6c 79 20 63 6f 6d 6d 69 74 74 65 64  tually committed
4980: 20 6f 6e 20 74 68 65 20 64 69 73 6b 20 0a 75 6e   on the disk .un
4990: 74 69 6c 20 74 68 65 20 6f 75 74 65 72 6d 6f 73  til the outermos
49a0: 74 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 63 6f  t transaction co
49b0: 6d 6d 69 74 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54  mmits.</p>..<p>T
49c0: 68 65 72 65 20 61 72 65 20 73 65 76 65 72 61 6c  here are several
49d0: 20 77 61 79 73 20 6f 66 20 74 68 69 6e 6b 69 6e   ways of thinkin
49e0: 67 20 61 62 6f 75 74 20 74 68 65 20 52 45 4c 45  g about the RELE
49f0: 41 53 45 20 63 6f 6d 6d 61 6e 64 3a 3c 2f 70 3e  ASE command:</p>
4a00: 0a 0a 3c 75 6c 3e 0a 3c 6c 69 3e 3c 70 3e 0a 53  ..<ul>.<li><p>.S
4a10: 6f 6d 65 20 70 65 6f 70 6c 65 20 76 69 65 77 20  ome people view 
4a20: 52 45 4c 45 41 53 45 20 61 73 20 74 68 65 20 65  RELEASE as the e
4a30: 71 75 69 76 61 6c 65 6e 74 20 6f 66 20 43 4f 4d  quivalent of COM
4a40: 4d 49 54 20 66 6f 72 20 61 20 53 41 56 45 50 4f  MIT for a SAVEPO
4a50: 49 4e 54 2e 0a 54 68 69 73 20 69 73 20 61 6e 20  INT..This is an 
4a60: 61 63 63 65 70 74 61 62 6c 65 20 70 6f 69 6e 74  acceptable point
4a70: 20 6f 66 20 76 69 65 77 20 61 73 20 6c 6f 6e 67   of view as long
4a80: 20 61 73 20 6f 6e 65 20 72 65 6d 65 6d 62 65 72   as one remember
4a90: 73 20 74 68 61 74 20 74 68 65 0a 63 68 61 6e 67  s that the.chang
4aa0: 65 73 20 63 6f 6d 6d 69 74 74 65 64 20 62 79 20  es committed by 
4ab0: 61 6e 20 69 6e 6e 65 72 20 74 72 61 6e 73 61 63  an inner transac
4ac0: 74 69 6f 6e 20 6d 69 67 68 74 20 6c 61 74 65 72  tion might later
4ad0: 20 62 65 20 75 6e 64 6f 6e 65 20 62 79 20 61 0a   be undone by a.
4ae0: 72 6f 6c 6c 62 61 63 6b 20 69 6e 20 61 6e 20 6f  rollback in an o
4af0: 75 74 65 72 20 74 72 61 6e 73 61 63 74 69 6f 6e  uter transaction
4b00: 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a 0a 3c 6c 69 3e  .</p></li>..<li>
4b10: 3c 70 3e 0a 41 6e 6f 74 68 65 72 20 76 69 65 77  <p>.Another view
4b20: 20 6f 66 20 52 45 4c 45 41 53 45 20 69 73 20 74   of RELEASE is t
4b30: 68 61 74 20 69 74 20 6d 65 72 67 65 73 20 61 20  hat it merges a 
4b40: 6e 61 6d 65 64 20 74 72 61 6e 73 61 63 74 69 6f  named transactio
4b50: 6e 20 69 6e 74 6f 20 69 74 73 0a 70 61 72 65 6e  n into its.paren
4b60: 74 20 74 72 61 6e 73 61 63 74 69 6f 6e 2c 20 73  t transaction, s
4b70: 6f 20 74 68 61 74 20 74 68 65 20 6e 61 6d 65 64  o that the named
4b80: 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 61 6e 64   transaction and
4b90: 20 69 74 73 20 70 61 72 65 6e 74 20 62 65 63 6f   its parent beco
4ba0: 6d 65 0a 74 68 65 20 73 61 6d 65 20 74 72 61 6e  me.the same tran
4bb0: 73 61 63 74 69 6f 6e 2e 20 20 41 66 74 65 72 20  saction.  After 
4bc0: 52 45 4c 45 41 53 45 2c 20 74 68 65 20 6e 61 6d  RELEASE, the nam
4bd0: 65 64 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 61  ed transaction a
4be0: 6e 64 20 69 74 73 20 70 61 72 65 6e 74 0a 77 69  nd its parent.wi
4bf0: 6c 6c 20 63 6f 6d 6d 69 74 20 6f 72 20 72 6f 6c  ll commit or rol
4c00: 6c 62 61 63 6b 20 74 6f 67 65 74 68 65 72 2c 20  lback together, 
4c10: 77 68 61 74 65 76 65 72 20 74 68 65 69 72 20 66  whatever their f
4c20: 61 74 65 20 6d 61 79 20 62 65 2e 0a 3c 2f 70 3e  ate may be..</p>
4c30: 3c 2f 6c 69 3e 0a 0a 3c 6c 69 3e 3c 70 3e 0a 4f  </li>..<li><p>.O
4c40: 6e 65 20 63 61 6e 20 61 6c 73 6f 20 74 68 69 6e  ne can also thin
4c50: 6b 20 6f 66 20 73 61 76 65 70 6f 69 6e 74 73 20  k of savepoints 
4c60: 61 73 0a 22 6d 61 72 6b 73 22 20 69 6e 20 74 68  as."marks" in th
4c70: 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 74 69  e transaction ti
4c80: 6d 65 6c 69 6e 65 2e 20 20 49 6e 20 74 68 69 73  meline.  In this
4c90: 20 76 69 65 77 2c 20 74 68 65 20 53 41 56 45 50   view, the SAVEP
4ca0: 4f 49 4e 54 20 63 6f 6d 6d 61 6e 64 0a 63 72 65  OINT command.cre
4cb0: 61 74 65 73 20 61 20 6e 65 77 20 6d 61 72 6b 2c  ates a new mark,
4cc0: 20 74 68 65 20 52 4f 4c 4c 42 41 43 4b 20 54 4f   the ROLLBACK TO
4cd0: 20 63 6f 6d 6d 61 6e 64 20 72 65 77 69 6e 64 73   command rewinds
4ce0: 20 74 68 65 20 74 69 6d 65 6c 69 6e 65 20 62 61   the timeline ba
4cf0: 63 6b 0a 74 6f 20 61 20 70 6f 69 6e 74 20 6a 75  ck.to a point ju
4d00: 73 74 20 61 66 74 65 72 20 74 68 65 20 6e 61 6d  st after the nam
4d10: 65 64 20 6d 61 72 6b 2c 20 61 6e 64 20 74 68 65  ed mark, and the
4d20: 20 52 45 4c 45 41 53 45 20 63 6f 6d 6d 61 6e 64   RELEASE command
4d30: 0a 65 72 61 73 65 73 20 6d 61 72 6b 73 20 66 72  .erases marks fr
4d40: 6f 6d 20 74 68 65 20 74 69 6d 65 6c 69 6e 65 20  om the timeline 
4d50: 77 69 74 68 6f 75 74 20 61 63 74 75 61 6c 6c 79  without actually
4d60: 20 6d 61 6b 69 6e 67 20 61 6e 79 0a 63 68 61 6e   making any.chan
4d70: 67 65 73 20 74 6f 20 74 68 65 20 64 61 74 61 62  ges to the datab
4d80: 61 73 65 2e 0a 3c 2f 70 3e 3c 2f 6c 69 3e 0a 3c  ase..</p></li>.<
4d90: 2f 75 6c 3e 0a 0a 0a 0a 3c 68 33 3e 54 72 61 6e  /ul>....<h3>Tran
4da0: 73 61 63 74 69 6f 6e 20 4e 65 73 74 69 6e 67 20  saction Nesting 
4db0: 52 75 6c 65 73 3c 2f 68 33 3e 0a 0a 3c 70 3e 5e  Rules</h3>..<p>^
4dc0: 54 68 65 20 6c 61 73 74 20 74 72 61 6e 73 61 63  The last transac
4dd0: 74 69 6f 6e 20 73 74 61 72 74 65 64 20 77 69 6c  tion started wil
4de0: 6c 20 62 65 20 74 68 65 20 66 69 72 73 74 0a 74  l be the first.t
4df0: 72 61 6e 73 61 63 74 69 6f 6e 20 63 6f 6d 6d 69  ransaction commi
4e00: 74 74 65 64 20 6f 72 20 72 6f 6c 6c 65 64 20 62  tted or rolled b
4e10: 61 63 6b 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68  ack.</p>..<p>^Th
4e20: 65 20 5b 42 45 47 49 4e 5d 20 63 6f 6d 6d 61 6e  e [BEGIN] comman
4e30: 64 20 6f 6e 6c 79 20 77 6f 72 6b 73 20 69 66 20  d only works if 
4e40: 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  the transaction 
4e50: 73 74 61 63 6b 20 69 73 20 65 6d 70 74 79 2c 20  stack is empty, 
4e60: 6f 72 0a 69 6e 20 6f 74 68 65 72 20 77 6f 72 64  or.in other word
4e70: 73 20 69 66 20 74 68 65 72 65 20 61 72 65 20 6e  s if there are n
4e80: 6f 20 70 65 6e 64 69 6e 67 20 74 72 61 6e 73 61  o pending transa
4e90: 63 74 69 6f 6e 73 2e 20 20 5e 49 66 20 74 68 65  ctions.  ^If the
4ea0: 20 74 72 61 6e 73 61 63 74 69 6f 6e 0a 73 74 61   transaction.sta
4eb0: 63 6b 20 69 73 20 6e 6f 74 20 65 6d 70 74 79 20  ck is not empty 
4ec0: 77 68 65 6e 20 74 68 65 20 5b 42 45 47 49 4e 5d  when the [BEGIN]
4ed0: 20 63 6f 6d 6d 61 6e 64 20 69 73 20 69 6e 76 6f   command is invo
4ee0: 6b 65 64 2c 20 74 68 65 6e 20 74 68 65 20 63 6f  ked, then the co
4ef0: 6d 6d 61 6e 64 0a 66 61 69 6c 73 20 77 69 74 68  mmand.fails with
4f00: 20 61 6e 20 65 72 72 6f 72 2e 3c 2f 70 3e 0a 0a   an error.</p>..
4f10: 3c 70 3e 5e 54 68 65 20 5b 43 4f 4d 4d 49 54 5d  <p>^The [COMMIT]
4f20: 20 63 6f 6d 6d 61 6e 64 20 63 6f 6d 6d 69 74 73   command commits
4f30: 20 61 6c 6c 20 6f 75 74 73 74 61 6e 64 69 6e 67   all outstanding
4f40: 20 74 72 61 6e 73 61 63 74 69 6f 6e 73 20 61 6e   transactions an
4f50: 64 20 6c 65 61 76 65 73 0a 74 68 65 20 74 72 61  d leaves.the tra
4f60: 6e 73 61 63 74 69 6f 6e 20 73 74 61 63 6b 20 65  nsaction stack e
4f70: 6d 70 74 79 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54  mpty.</p>..<p>^T
4f80: 68 65 20 52 45 4c 45 41 53 45 20 63 6f 6d 6d 61  he RELEASE comma
4f90: 6e 64 20 73 74 61 72 74 73 20 77 69 74 68 20 74  nd starts with t
4fa0: 68 65 20 6d 6f 73 74 20 72 65 63 65 6e 74 20 61  he most recent a
4fb0: 64 64 69 74 69 6f 6e 20 74 6f 20 74 68 65 0a 74  ddition to the.t
4fc0: 72 61 6e 73 61 63 74 69 6f 6e 20 73 74 61 63 6b  ransaction stack
4fd0: 20 61 6e 64 20 72 65 6c 65 61 73 65 73 20 73 61   and releases sa
4fe0: 76 65 70 6f 69 6e 74 73 20 62 61 63 6b 77 61 72  vepoints backwar
4ff0: 64 73 20 0a 69 6e 20 74 69 6d 65 20 75 6e 74 69  ds .in time unti
5000: 6c 20 69 74 20 72 65 6c 65 61 73 65 73 20 61 20  l it releases a 
5010: 73 61 76 65 70 6f 69 6e 74 20 77 69 74 68 20 61  savepoint with a
5020: 20 6d 61 74 63 68 69 6e 67 20 73 61 76 65 70 6f   matching savepo
5030: 69 6e 74 2d 6e 61 6d 65 2e 0a 5e 50 72 69 6f 72  int-name..^Prior
5040: 20 73 61 76 65 70 6f 69 6e 74 73 2c 20 65 76 65   savepoints, eve
5050: 6e 20 73 61 76 65 70 6f 69 6e 74 73 20 77 69 74  n savepoints wit
5060: 68 20 6d 61 74 63 68 69 6e 67 20 73 61 76 65 70  h matching savep
5070: 6f 69 6e 74 2d 6e 61 6d 65 73 2c 20 61 72 65 0a  oint-names, are.
5080: 75 6e 63 68 61 6e 67 65 64 2e 0a 5e 49 66 20 74  unchanged..^If t
5090: 68 65 20 52 45 4c 45 41 53 45 20 63 6f 6d 6d 61  he RELEASE comma
50a0: 6e 64 20 63 61 75 73 65 73 20 74 68 65 0a 74 72  nd causes the.tr
50b0: 61 6e 73 61 63 74 69 6f 6e 20 73 74 61 63 6b 20  ansaction stack 
50c0: 74 6f 20 62 65 63 6f 6d 65 20 65 6d 70 74 79 20  to become empty 
50d0: 28 69 66 20 74 68 65 20 52 45 4c 45 41 53 45 20  (if the RELEASE 
50e0: 63 6f 6d 6d 61 6e 64 20 72 65 6c 65 61 73 65 73  command releases
50f0: 20 74 68 65 0a 6f 75 74 65 72 6d 6f 73 74 20 74   the.outermost t
5100: 72 61 6e 73 61 63 74 69 6f 6e 20 66 72 6f 6d 20  ransaction from 
5110: 74 68 65 20 73 74 61 63 6b 29 20 74 68 65 6e 20  the stack) then 
5120: 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  the transaction 
5130: 63 6f 6d 6d 69 74 73 2e 3c 2f 70 3e 0a 0a 3c 70  commits.</p>..<p
5140: 3e 5e 54 68 65 20 5b 52 4f 4c 4c 42 41 43 4b 5d  >^The [ROLLBACK]
5150: 20 63 6f 6d 6d 61 6e 64 20 77 69 74 68 6f 75 74   command without
5160: 20 61 20 54 4f 20 63 6c 61 75 73 65 20 72 6f 6c   a TO clause rol
5170: 6c 73 20 62 61 63 6b 73 20 61 6c 6c 20 74 72 61  ls backs all tra
5180: 6e 73 61 63 74 69 6f 6e 73 0a 61 6e 64 20 6c 65  nsactions.and le
5190: 61 76 65 73 20 74 68 65 20 74 72 61 6e 73 61 63  aves the transac
51a0: 74 69 6f 6e 20 73 74 61 63 6b 20 65 6d 70 74 79  tion stack empty
51b0: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20 52  .</p>..<p>^The R
51c0: 4f 4c 4c 42 41 43 4b 20 63 6f 6d 6d 61 6e 64 20  OLLBACK command 
51d0: 77 69 74 68 20 61 20 54 4f 20 63 6c 61 75 73 65  with a TO clause
51e0: 20 72 6f 6c 6c 73 20 62 61 63 6b 20 74 72 61 6e   rolls back tran
51f0: 73 61 63 74 69 6f 6e 73 20 67 6f 69 6e 67 0a 62  sactions going.b
5200: 61 63 6b 77 61 72 64 73 20 69 6e 20 74 69 6d 65  ackwards in time
5210: 20 62 61 63 6b 20 74 6f 20 74 68 65 20 6d 6f 73   back to the mos
5220: 74 20 72 65 63 65 6e 74 20 53 41 56 45 50 4f 49  t recent SAVEPOI
5230: 4e 54 20 77 69 74 68 20 61 20 6d 61 74 63 68 69  NT with a matchi
5240: 6e 67 20 6e 61 6d 65 2e 0a 5e 54 68 65 20 53 41  ng name..^The SA
5250: 56 45 50 4f 49 4e 54 20 77 69 74 68 20 74 68 65  VEPOINT with the
5260: 20 6d 61 74 63 68 69 6e 67 20 6e 61 6d 65 20 72   matching name r
5270: 65 6d 61 69 6e 73 20 6f 6e 20 74 68 65 20 74 72  emains on the tr
5280: 61 6e 73 61 63 74 69 6f 6e 20 73 74 61 63 6b 2c  ansaction stack,
5290: 0a 62 75 74 20 61 6c 6c 20 64 61 74 61 62 61 73  .but all databas
52a0: 65 20 63 68 61 6e 67 65 73 20 74 68 61 74 20 6f  e changes that o
52b0: 63 63 75 72 72 65 64 20 61 66 74 65 72 20 74 68  ccurred after th
52c0: 61 74 20 53 41 56 45 50 4f 49 4e 54 20 77 61 73  at SAVEPOINT was
52d0: 20 63 72 65 61 74 65 64 0a 61 72 65 20 72 6f 6c   created.are rol
52e0: 6c 65 64 20 62 61 63 6b 2e 20 20 5e 49 66 20 74  led back.  ^If t
52f0: 68 65 20 73 61 76 65 70 6f 69 6e 74 2d 6e 61 6d  he savepoint-nam
5300: 65 20 69 6e 20 61 20 52 4f 4c 4c 42 41 43 4b 20  e in a ROLLBACK 
5310: 54 4f 20 63 6f 6d 6d 61 6e 64 20 64 6f 65 73 20  TO command does 
5320: 6e 6f 74 0a 6d 61 74 63 68 20 61 6e 79 20 53 41  not.match any SA
5330: 56 45 50 4f 49 4e 54 20 6f 6e 20 74 68 65 20 73  VEPOINT on the s
5340: 74 61 63 6b 2c 20 74 68 65 6e 20 74 68 65 20 52  tack, then the R
5350: 4f 4c 4c 42 41 43 4b 20 63 6f 6d 6d 61 6e 64 20  OLLBACK command 
5360: 66 61 69 6c 73 20 77 69 74 68 20 61 6e 0a 65 72  fails with an.er
5370: 72 6f 72 20 61 6e 64 20 6c 65 61 76 65 73 20 74  ror and leaves t
5380: 68 65 20 73 74 61 74 65 20 6f 66 20 74 68 65 20  he state of the 
5390: 64 61 74 61 62 61 73 65 20 75 6e 63 68 61 6e 67  database unchang
53a0: 65 64 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23  ed.</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 23 23 23 0a 53  ##############.S
5400: 65 63 74 69 6f 6e 20 63 6f 6d 6d 65 6e 74 20 63  ection comment c
5410: 6f 6d 6d 65 6e 74 20 7b 63 6f 6d 6d 65 6e 74 20  omment {comment 
5420: 2a 63 6f 6d 6d 65 6e 74 73 7d 0a 0a 42 75 62 62  *comments}..Bubb
5430: 6c 65 44 69 61 67 72 61 6d 20 63 6f 6d 6d 65 6e  leDiagram commen
5440: 74 2d 73 79 6e 74 61 78 0a 3c 2f 74 63 6c 3e 0a  t-syntax.</tcl>.
5450: 0a 3c 70 3e 5e 43 6f 6d 6d 65 6e 74 73 20 61 72  .<p>^Comments ar
5460: 65 20 6e 6f 74 20 53 51 4c 20 63 6f 6d 6d 61 6e  e not SQL comman
5470: 64 73 2c 20 62 75 74 20 63 61 6e 20 6f 63 63 75  ds, but can occu
5480: 72 20 77 69 74 68 69 6e 20 74 68 65 20 74 65 78  r within the tex
5490: 74 20 6f 66 0a 53 51 4c 20 71 75 65 72 69 65 73  t of.SQL queries
54a0: 20 70 61 73 73 65 64 20 74 6f 20 5b 73 71 6c 69   passed to [sqli
54b0: 74 65 33 5f 70 72 65 70 61 72 65 5f 76 32 28 29  te3_prepare_v2()
54c0: 5d 20 61 6e 64 20 72 65 6c 61 74 65 64 20 69 6e  ] and related in
54d0: 74 65 72 66 61 63 65 73 2e 0a 5e 43 6f 6d 6d 65  terfaces..^Comme
54e0: 6e 74 73 20 61 72 65 20 74 72 65 61 74 65 64 20  nts are treated 
54f0: 61 73 20 77 68 69 74 65 73 70 61 63 65 20 62 79  as whitespace by
5500: 20 74 68 65 20 70 61 72 73 65 72 2e 0a 5e 43 6f   the parser..^Co
5510: 6d 6d 65 6e 74 73 20 63 61 6e 20 62 65 67 69 6e  mments can begin
5520: 20 61 6e 79 77 68 65 72 65 20 77 68 69 74 65 73   anywhere whites
5530: 70 61 63 65 20 0a 63 61 6e 20 62 65 20 66 6f 75  pace .can be fou
5540: 6e 64 2c 20 69 6e 63 6c 75 64 69 6e 67 20 69 6e  nd, including in
5550: 73 69 64 65 20 65 78 70 72 65 73 73 69 6f 6e 73  side expressions
5560: 20 74 68 61 74 20 73 70 61 6e 20 6d 75 6c 74 69   that span multi
5570: 70 6c 65 20 6c 69 6e 65 73 2e 0a 3c 2f 70 3e 0a  ple lines..</p>.
5580: 0a 3c 70 3e 5e 53 51 4c 20 63 6f 6d 6d 65 6e 74  .<p>^SQL comment
5590: 73 20 62 65 67 69 6e 20 77 69 74 68 20 74 77 6f  s begin with two
55a0: 20 63 6f 6e 73 65 63 75 74 69 76 65 20 22 2d 22   consecutive "-"
55b0: 20 63 68 61 72 61 63 74 65 72 73 20 28 41 53 43   characters (ASC
55c0: 49 49 20 30 78 32 64 29 0a 61 6e 64 20 65 78 74  II 0x2d).and ext
55d0: 65 6e 64 20 75 70 20 74 6f 20 61 6e 64 20 69 6e  end up to and in
55e0: 63 6c 75 64 69 6e 67 20 74 68 65 20 6e 65 78 74  cluding the next
55f0: 20 6e 65 77 6c 69 6e 65 20 63 68 61 72 61 63 74   newline charact
5600: 65 72 20 28 41 53 43 49 49 20 30 78 30 61 29 0a  er (ASCII 0x0a).
5610: 6f 72 20 75 6e 74 69 6c 20 74 68 65 20 65 6e 64  or until the end
5620: 20 6f 66 20 69 6e 70 75 74 2c 20 77 68 69 63 68   of input, which
5630: 65 76 65 72 20 63 6f 6d 65 73 20 66 69 72 73 74  ever comes first
5640: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 43 2d 73 74 79  .</p>..<p>^C-sty
5650: 6c 65 20 63 6f 6d 6d 65 6e 74 73 20 62 65 67 69  le comments begi
5660: 6e 0a 77 69 74 68 20 22 2f 2a 22 20 61 6e 64 20  n.with "/*" and 
5670: 65 78 74 65 6e 64 20 75 70 20 74 6f 20 61 6e 64  extend up to and
5680: 20 69 6e 63 6c 75 64 69 6e 67 20 74 68 65 20 6e   including the n
5690: 65 78 74 20 22 2a 2f 22 20 63 68 61 72 61 63 74  ext "*/" charact
56a0: 65 72 20 70 61 69 72 0a 6f 72 20 75 6e 74 69 6c  er pair.or until
56b0: 20 74 68 65 20 65 6e 64 20 6f 66 20 69 6e 70 75   the end of inpu
56c0: 74 2c 20 77 68 69 63 68 65 76 65 72 20 63 6f 6d  t, whichever com
56d0: 65 73 20 66 69 72 73 74 2e 20 20 5e 43 2d 73 74  es first.  ^C-st
56e0: 79 6c 65 20 63 6f 6d 6d 65 6e 74 73 0a 63 61 6e  yle comments.can
56f0: 20 73 70 61 6e 20 6d 75 6c 74 69 70 6c 65 20 6c   span multiple l
5700: 69 6e 65 73 2e 20 3c 2f 70 3e 0a 0a 3c 70 3e 5e  ines. </p>..<p>^
5710: 43 6f 6d 6d 65 6e 74 73 20 63 61 6e 20 61 70 70  Comments can app
5720: 65 61 72 20 61 6e 79 77 68 65 72 65 20 77 68 69  ear anywhere whi
5730: 74 65 73 70 61 63 65 20 63 61 6e 20 6f 63 63 75  tespace can occu
5740: 72 2c 0a 69 6e 63 6c 75 64 69 6e 67 20 69 6e 73  r,.including ins
5750: 69 64 65 20 65 78 70 72 65 73 73 69 6f 6e 73 20  ide expressions 
5760: 61 6e 64 20 69 6e 20 74 68 65 20 6d 69 64 64 6c  and in the middl
5770: 65 20 6f 66 20 6f 74 68 65 72 20 53 51 4c 20 73  e of other SQL s
5780: 74 61 74 65 6d 65 6e 74 73 2e 0a 5e 43 6f 6d 6d  tatements..^Comm
5790: 65 6e 74 73 20 64 6f 20 6e 6f 74 20 6e 65 73 74  ents do not nest
57a0: 2e 0a 3c 2f 70 3e 0a 0a 0a 3c 74 63 6c 3e 0a 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 23 23 23 0a 53 65  #############.Se
5800: 63 74 69 6f 6e 20 7b 43 52 45 41 54 45 20 49 4e  ction {CREATE IN
5810: 44 45 58 7d 20 63 72 65 61 74 65 69 6e 64 65 78  DEX} createindex
5820: 20 7b 7b 43 52 45 41 54 45 20 49 4e 44 45 58 7d   {{CREATE INDEX}
5830: 7d 0a 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d  }..BubbleDiagram
5840: 20 63 72 65 61 74 65 2d 69 6e 64 65 78 2d 73 74   create-index-st
5850: 6d 74 20 31 0a 42 75 62 62 6c 65 44 69 61 67 72  mt 1.BubbleDiagr
5860: 61 6d 20 69 6e 64 65 78 65 64 2d 63 6f 6c 75 6d  am indexed-colum
5870: 6e 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 5e 54 68  n.</tcl>..<p>^Th
5880: 65 20 43 52 45 41 54 45 20 49 4e 44 45 58 20 63  e CREATE INDEX c
5890: 6f 6d 6d 61 6e 64 20 63 6f 6e 73 69 73 74 73 20  ommand consists 
58a0: 6f 66 20 74 68 65 20 6b 65 79 77 6f 72 64 73 20  of the keywords 
58b0: 22 43 52 45 41 54 45 20 49 4e 44 45 58 22 20 66  "CREATE INDEX" f
58c0: 6f 6c 6c 6f 77 65 64 0a 62 79 20 74 68 65 20 6e  ollowed.by the n
58d0: 61 6d 65 20 6f 66 20 74 68 65 20 6e 65 77 20 69  ame of the new i
58e0: 6e 64 65 78 2c 20 74 68 65 20 6b 65 79 77 6f 72  ndex, the keywor
58f0: 64 20 22 4f 4e 22 2c 20 74 68 65 20 6e 61 6d 65  d "ON", the name
5900: 20 6f 66 20 61 20 70 72 65 76 69 6f 75 73 6c 79   of a previously
5910: 0a 63 72 65 61 74 65 64 20 74 61 62 6c 65 20 74  .created table t
5920: 68 61 74 20 69 73 20 74 6f 20 62 65 20 69 6e 64  hat is to be ind
5930: 65 78 65 64 2c 20 61 6e 64 20 61 20 70 61 72 65  exed, and a pare
5940: 6e 74 68 65 73 69 7a 65 64 20 6c 69 73 74 20 6f  nthesized list o
5950: 66 20 6e 61 6d 65 73 20 6f 66 0a 63 6f 6c 75 6d  f names of.colum
5960: 6e 73 20 69 6e 20 74 68 65 20 74 61 62 6c 65 20  ns in the table 
5970: 74 68 61 74 20 61 72 65 20 75 73 65 64 20 66 6f  that are used fo
5980: 72 20 74 68 65 20 69 6e 64 65 78 20 6b 65 79 2e  r the index key.
5990: 3c 2f 70 3e 0a 0a 3c 70 3e 5e 45 61 63 68 20 63  </p>..<p>^Each c
59a0: 6f 6c 75 6d 6e 20 6e 61 6d 65 20 63 61 6e 20 62  olumn name can b
59b0: 65 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 6f 6e  e followed by on
59c0: 65 20 6f 66 20 74 68 65 20 22 41 53 43 22 20 6f  e of the "ASC" o
59d0: 72 20 22 44 45 53 43 22 20 6b 65 79 77 6f 72 64  r "DESC" keyword
59e0: 73 0a 74 6f 20 69 6e 64 69 63 61 74 65 20 73 6f  s.to indicate so
59f0: 72 74 20 6f 72 64 65 72 2e 20 20 5e 54 68 65 20  rt order.  ^The 
5a00: 73 6f 72 74 20 6f 72 64 65 72 20 6d 61 79 20 6f  sort order may o
5a10: 72 20 6d 61 79 20 6e 6f 74 20 62 65 20 69 67 6e  r may not be ign
5a20: 6f 72 65 64 20 64 65 70 65 6e 64 69 6e 67 0a 6f  ored depending.o
5a30: 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66  n the database f
5a40: 69 6c 65 20 66 6f 72 6d 61 74 2e 20 20 5e 54 68  ile format.  ^Th
5a50: 65 20 22 6c 65 67 61 63 79 22 20 66 69 6c 65 20  e "legacy" file 
5a60: 66 6f 72 6d 61 74 20 69 67 6e 6f 72 65 73 20 69  format ignores i
5a70: 6e 64 65 78 0a 73 6f 72 74 20 6f 72 64 65 72 2e  ndex.sort order.
5a80: 20 20 5e 54 68 65 20 64 65 73 63 65 6e 64 69 6e    ^The descendin
5a90: 67 20 69 6e 64 65 78 20 66 69 6c 65 20 66 6f 72  g index file for
5aa0: 6d 61 74 20 74 61 6b 65 73 20 69 6e 64 65 78 20  mat takes index 
5ab0: 73 6f 72 74 20 6f 72 64 65 72 0a 69 6e 74 6f 20  sort order.into 
5ac0: 61 63 63 6f 75 6e 74 2e 20 20 5e 28 4f 6e 6c 79  account.  ^(Only
5ad0: 20 63 6f 70 69 65 73 20 6f 66 20 53 51 4c 69 74   copies of SQLit
5ae0: 65 20 6e 65 77 65 72 20 74 68 61 6e 20 5b 76 65  e newer than [ve
5af0: 72 73 69 6f 6e 20 33 2e 33 2e 30 5d 20 0a 28 72  rsion 3.3.0] .(r
5b00: 65 6c 65 61 73 65 64 20 6f 6e 20 32 30 30 36 2d  eleased on 2006-
5b10: 30 31 2d 31 30 29 20 61 72 65 20 61 62 6c 65 20  01-10) are able 
5b20: 74 6f 20 75 6e 64 65 72 73 74 61 6e 64 20 74 68  to understand th
5b30: 65 20 6e 65 77 65 72 20 64 65 73 63 65 6e 64 69  e newer descendi
5b40: 6e 67 0a 69 6e 64 65 78 20 66 69 6c 65 20 66 6f  ng.index file fo
5b50: 72 6d 61 74 20 61 6e 64 20 73 6f 20 66 6f 72 20  rmat and so for 
5b60: 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 77 69  compatibility wi
5b70: 74 68 20 6f 6c 64 65 72 20 76 65 72 73 69 6f 6e  th older version
5b80: 73 20 6f 66 0a 53 51 4c 69 74 65 2c 20 74 68 65  s of.SQLite, the
5b90: 20 6c 65 67 61 63 79 20 66 69 6c 65 20 66 6f 72   legacy file for
5ba0: 6d 61 74 20 69 73 20 67 65 6e 65 72 61 74 65 64  mat is generated
5bb0: 20 62 79 20 64 65 66 61 75 6c 74 2e 29 5e 20 20   by default.)^  
5bc0: 5e 55 73 65 20 74 68 65 0a 5b 6c 65 67 61 63 79  ^Use the.[legacy
5bd0: 5f 66 69 6c 65 5f 66 6f 72 6d 61 74 5d 20 70 72  _file_format] pr
5be0: 61 67 6d 61 20 74 6f 20 6d 6f 64 69 66 79 20 74  agma to modify t
5bf0: 68 69 73 20 62 65 68 61 76 69 6f 72 20 61 6e 64  his behavior and
5c00: 20 67 65 6e 65 72 61 74 65 0a 64 61 74 61 62 61   generate.databa
5c10: 73 65 73 20 74 68 61 74 20 75 73 65 20 74 68 65  ses that use the
5c20: 20 6e 65 77 65 72 20 66 69 6c 65 20 66 6f 72 6d   newer file form
5c30: 61 74 2e 20 20 46 75 74 75 72 65 20 76 65 72 73  at.  Future vers
5c40: 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 0a 6d  ions of SQLite.m
5c50: 61 79 20 62 65 67 69 6e 20 74 6f 20 67 65 6e 65  ay begin to gene
5c60: 72 61 74 65 20 74 68 65 20 6e 65 77 65 72 20 66  rate the newer f
5c70: 69 6c 65 20 66 6f 72 6d 61 74 20 62 79 20 64 65  ile format by de
5c80: 66 61 75 6c 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e  fault.</p>..<p>^
5c90: 54 68 65 20 43 4f 4c 4c 41 54 45 20 63 6c 61 75  The COLLATE clau
5ca0: 73 65 20 6f 70 74 69 6f 6e 61 6c 6c 79 20 66 6f  se optionally fo
5cb0: 6c 6c 6f 77 69 6e 67 20 65 61 63 68 20 63 6f 6c  llowing each col
5cc0: 75 6d 6e 20 6e 61 6d 65 20 64 65 66 69 6e 65 73  umn name defines
5cd0: 20 61 0a 63 6f 6c 6c 61 74 69 6e 67 20 73 65 71   a.collating seq
5ce0: 75 65 6e 63 65 20 75 73 65 64 20 66 6f 72 20 74  uence used for t
5cf0: 65 78 74 20 65 6e 74 72 69 65 73 20 69 6e 20 74  ext entries in t
5d00: 68 61 74 20 63 6f 6c 75 6d 6e 2e 0a 5e 54 68 65  hat column..^The
5d10: 20 64 65 66 61 75 6c 74 20 63 6f 6c 6c 61 74 69   default collati
5d20: 6e 67 0a 73 65 71 75 65 6e 63 65 20 69 73 20 74  ng.sequence is t
5d30: 68 65 20 63 6f 6c 6c 61 74 69 6e 67 20 73 65 71  he collating seq
5d40: 75 65 6e 63 65 20 64 65 66 69 6e 65 64 20 66 6f  uence defined fo
5d50: 72 20 74 68 61 74 20 63 6f 6c 75 6d 6e 20 69 6e  r that column in
5d60: 20 74 68 65 0a 5b 43 52 45 41 54 45 20 54 41 42   the.[CREATE TAB
5d70: 4c 45 5d 20 73 74 61 74 65 6d 65 6e 74 2e 20 20  LE] statement.  
5d80: 5e 4f 72 20 69 66 20 6e 6f 20 63 6f 6c 6c 61 74  ^Or if no collat
5d90: 69 6e 67 20 73 65 71 75 65 6e 63 65 20 69 73 20  ing sequence is 
5da0: 6f 74 68 65 72 77 69 73 65 20 64 65 66 69 6e 65  otherwise define
5db0: 64 2c 0a 74 68 65 20 62 75 69 6c 74 2d 69 6e 20  d,.the built-in 
5dc0: 42 49 4e 41 52 59 20 63 6f 6c 6c 61 74 69 6e 67  BINARY collating
5dd0: 20 73 65 71 75 65 6e 63 65 20 69 73 20 75 73 65   sequence is use
5de0: 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 72 65  d.</p>..<p>There
5df0: 20 61 72 65 20 6e 6f 20 61 72 62 69 74 72 61 72   are no arbitrar
5e00: 79 20 6c 69 6d 69 74 73 20 6f 6e 20 74 68 65 20  y limits on the 
5e10: 6e 75 6d 62 65 72 20 6f 66 20 69 6e 64 69 63 65  number of indice
5e20: 73 20 74 68 61 74 20 63 61 6e 20 62 65 0a 61 74  s that can be.at
5e30: 74 61 63 68 65 64 20 74 6f 20 61 20 73 69 6e 67  tached to a sing
5e40: 6c 65 20 74 61 62 6c 65 2e 20 20 5e 28 54 68 65  le table.  ^(The
5e50: 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d   number of colum
5e60: 6e 73 20 69 6e 20 61 6e 20 69 6e 64 65 78 20 69  ns in an index i
5e70: 73 20 0a 6c 69 6d 69 74 65 64 20 74 6f 20 74 68  s .limited to th
5e80: 65 20 76 61 6c 75 65 20 73 65 74 20 62 79 0a 5b  e value set by.[
5e90: 73 71 6c 69 74 65 33 5f 6c 69 6d 69 74 5d 28 5b  sqlite3_limit]([
5ea0: 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 43 4f 4c  SQLITE_LIMIT_COL
5eb0: 55 4d 4e 5d 2c 2e 2e 2e 29 2e 29 5e 3c 2f 70 3e  UMN],...).)^</p>
5ec0: 0a 0a 3c 70 3e 5e 49 66 20 74 68 65 20 55 4e 49  ..<p>^If the UNI
5ed0: 51 55 45 20 6b 65 79 77 6f 72 64 20 61 70 70 65  QUE keyword appe
5ee0: 61 72 73 20 62 65 74 77 65 65 6e 20 43 52 45 41  ars between CREA
5ef0: 54 45 20 61 6e 64 20 49 4e 44 45 58 20 74 68 65  TE and INDEX the
5f00: 6e 20 64 75 70 6c 69 63 61 74 65 0a 69 6e 64 65  n duplicate.inde
5f10: 78 20 65 6e 74 72 69 65 73 20 61 72 65 20 6e 6f  x entries are no
5f20: 74 20 61 6c 6c 6f 77 65 64 2e 20 20 5e 41 6e 79  t allowed.  ^Any
5f30: 20 61 74 74 65 6d 70 74 20 74 6f 20 69 6e 73 65   attempt to inse
5f40: 72 74 20 61 20 64 75 70 6c 69 63 61 74 65 20 65  rt a duplicate e
5f50: 6e 74 72 79 0a 77 69 6c 6c 20 72 65 73 75 6c 74  ntry.will result
5f60: 20 69 6e 20 61 6e 20 65 72 72 6f 72 2e 20 20 5e   in an error.  ^
5f70: 46 6f 72 20 74 68 65 20 70 75 72 70 6f 73 65 73  For the purposes
5f80: 20 6f 66 20 75 6e 69 71 75 65 20 69 6e 64 69 63   of unique indic
5f90: 65 73 2c 20 61 6c 6c 20 4e 55 4c 4c 20 76 61 6c  es, all NULL val
5fa0: 75 65 73 0a 61 72 65 20 63 6f 6e 73 69 64 65 72  ues.are consider
5fb0: 65 64 20 74 6f 20 64 69 66 66 65 72 65 6e 74 20  ed to different 
5fc0: 66 72 6f 6d 20 61 6c 6c 20 6f 74 68 65 72 20 4e  from all other N
5fd0: 55 4c 4c 20 76 61 6c 75 65 73 20 61 6e 64 20 61  ULL values and a
5fe0: 72 65 20 74 68 75 73 20 75 6e 69 71 75 65 2e 0a  re thus unique..
5ff0: 54 68 69 73 20 69 73 20 6f 6e 65 20 6f 66 20 74  This is one of t
6000: 68 65 20 74 77 6f 20 70 6f 73 73 69 62 6c 65 20  he two possible 
6010: 69 6e 74 65 72 70 72 65 74 61 74 69 6f 6e 73 20  interpretations 
6020: 6f 66 20 74 68 65 20 53 51 4c 2d 39 32 20 73 74  of the SQL-92 st
6030: 61 6e 64 61 72 64 0a 28 74 68 65 20 6c 61 6e 67  andard.(the lang
6040: 75 61 67 65 20 69 6e 20 74 68 65 20 73 74 61 6e  uage in the stan
6050: 64 61 72 64 20 69 73 20 61 6d 62 69 67 75 69 6f  dard is ambiguio
6060: 75 73 29 20 61 6e 64 20 69 73 20 74 68 65 20 69  us) and is the i
6070: 6e 74 65 72 70 72 65 74 61 74 69 6f 6e 0a 66 6f  nterpretation.fo
6080: 6c 6c 6f 77 65 64 20 62 79 20 50 6f 73 74 67 72  llowed by Postgr
6090: 65 53 51 4c 2c 20 4d 79 53 51 4c 2c 20 46 69 72  eSQL, MySQL, Fir
60a0: 65 62 69 72 64 2c 20 61 6e 64 20 4f 72 61 63 6c  ebird, and Oracl
60b0: 65 2e 20 20 49 6e 66 6f 72 6d 69 78 20 61 6e 64  e.  Informix and
60c0: 0a 4d 69 63 72 6f 73 6f 66 74 20 53 51 4c 20 53  .Microsoft SQL S
60d0: 65 72 76 65 72 20 66 6f 6c 6c 6f 77 20 74 68 65  erver follow the
60e0: 20 6f 74 68 65 72 20 69 6e 74 65 72 70 72 65 74   other interpret
60f0: 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 73 74 61  ation of the sta
6100: 6e 64 61 72 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e  ndard.</p>..<p>^
6110: 49 66 20 74 68 65 20 6f 70 74 69 6f 6e 61 6c 20  If the optional 
6120: 49 46 20 4e 4f 54 20 45 58 49 53 54 53 20 63 6c  IF NOT EXISTS cl
6130: 61 75 73 65 20 69 73 20 70 72 65 73 65 6e 74 20  ause is present 
6140: 61 6e 64 20 61 6e 6f 74 68 65 72 20 69 6e 64 65  and another inde
6150: 78 0a 77 69 74 68 20 74 68 65 20 73 61 6d 65 20  x.with the same 
6160: 6e 61 6d 65 20 61 6c 65 61 64 79 20 65 78 69 73  name aleady exis
6170: 74 73 2c 20 74 68 65 6e 20 74 68 69 73 20 63 6f  ts, then this co
6180: 6d 6d 61 6e 64 20 62 65 63 6f 6d 65 73 20 61 20  mmand becomes a 
6190: 6e 6f 2d 6f 70 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e  no-op.</p>..<p>^
61a0: 49 6e 64 65 78 65 73 20 61 72 65 20 72 65 6d 6f  Indexes are remo
61b0: 76 65 64 20 77 69 74 68 20 74 68 65 20 5b 44 52  ved with the [DR
61c0: 4f 50 20 49 4e 44 45 58 5d 20 63 6f 6d 6d 61 6e  OP INDEX] comman
61d0: 64 2e 3c 2f 70 3e 0a 0a 0a 3c 74 63 6c 3e 0a 23  d.</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 23 23 23 0a 53 65  #############.Se
6230: 63 74 69 6f 6e 20 7b 43 52 45 41 54 45 20 54 41  ction {CREATE TA
6240: 42 4c 45 7d 20 7b 63 72 65 61 74 65 74 61 62 6c  BLE} {createtabl
6250: 65 7d 20 7b 7b 43 52 45 41 54 45 20 54 41 42 4c  e} {{CREATE TABL
6260: 45 7d 7d 0a 0a 42 75 62 62 6c 65 44 69 61 67 72  E}}..BubbleDiagr
6270: 61 6d 20 63 72 65 61 74 65 2d 74 61 62 6c 65 2d  am create-table-
6280: 73 74 6d 74 20 31 0a 42 75 62 62 6c 65 44 69 61  stmt 1.BubbleDia
6290: 67 72 61 6d 20 63 6f 6c 75 6d 6e 2d 64 65 66 0a  gram column-def.
62a0: 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 74 79  BubbleDiagram ty
62b0: 70 65 2d 6e 61 6d 65 0a 42 75 62 62 6c 65 44 69  pe-name.BubbleDi
62c0: 61 67 72 61 6d 20 63 6f 6c 75 6d 6e 2d 63 6f 6e  agram column-con
62d0: 73 74 72 61 69 6e 74 0a 42 75 62 62 6c 65 44 69  straint.BubbleDi
62e0: 61 67 72 61 6d 20 74 61 62 6c 65 2d 63 6f 6e 73  agram table-cons
62f0: 74 72 61 69 6e 74 0a 42 75 62 62 6c 65 44 69 61  traint.BubbleDia
6300: 67 72 61 6d 20 66 6f 72 65 69 67 6e 2d 6b 65 79  gram foreign-key
6310: 2d 63 6c 61 75 73 65 0a 3c 2f 74 63 6c 3e 0a 0a  -clause.</tcl>..
6320: 3c 70 3e 5e 41 20 43 52 45 41 54 45 20 54 41 42  <p>^A CREATE TAB
6330: 4c 45 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20  LE statement is 
6340: 62 61 73 69 63 61 6c 6c 79 20 74 68 65 20 6b 65  basically the ke
6350: 79 77 6f 72 64 73 20 22 43 52 45 41 54 45 20 54  ywords "CREATE T
6360: 41 42 4c 45 22 0a 66 6f 6c 6c 6f 77 65 64 20 62  ABLE".followed b
6370: 79 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 61 20  y the name of a 
6380: 6e 65 77 20 74 61 62 6c 65 20 61 6e 64 20 61 20  new table and a 
6390: 70 61 72 65 6e 74 68 65 73 69 7a 65 64 20 6c 69  parenthesized li
63a0: 73 74 20 6f 66 20 63 6f 6c 75 6d 6e 0a 64 65 66  st of column.def
63b0: 69 6e 69 74 69 6f 6e 73 20 61 6e 64 20 63 6f 6e  initions and con
63c0: 73 74 72 61 69 6e 74 73 2e 20 20 0a 5e 54 61 62  straints.  .^Tab
63d0: 6c 65 73 20 6e 61 6d 65 73 20 74 68 61 74 20 62  les names that b
63e0: 65 67 69 6e 20 77 69 74 68 20 22 3c 62 3e 73 71  egin with "<b>sq
63f0: 6c 69 74 65 5f 3c 2f 62 3e 22 20 61 72 65 20 72  lite_</b>" are r
6400: 65 73 65 72 76 65 64 0a 66 6f 72 20 75 73 65 20  eserved.for use 
6410: 62 79 20 53 51 4c 69 74 65 20 69 74 73 65 6c 66  by SQLite itself
6420: 20 61 6e 64 20 63 61 6e 6e 6f 74 20 6e 6f 72 6d   and cannot norm
6430: 61 6c 6c 79 0a 61 70 70 65 61 72 20 69 6e 20 61  ally.appear in a
6440: 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 73 74   CREATE TABLE st
6450: 61 74 65 6d 65 6e 74 2e 3c 2f 70 3e 0a 0a 3c 70  atement.</p>..<p
6460: 3e 5e 45 61 63 68 20 63 6f 6c 75 6d 6e 20 64 65  >^Each column de
6470: 66 69 6e 69 74 69 6f 6e 20 69 73 20 74 68 65 20  finition is the 
6480: 6e 61 6d 65 20 6f 66 20 74 68 65 20 63 6f 6c 75  name of the colu
6490: 6d 6e 20 6f 70 74 69 6f 6e 61 6c 6c 79 20 66 6f  mn optionally fo
64a0: 6c 6c 6f 77 65 64 20 62 79 20 74 68 65 0a 5b 64  llowed by the.[d
64b0: 61 74 61 74 79 70 65 5d 20 66 6f 72 20 74 68 61  atatype] for tha
64c0: 74 20 63 6f 6c 75 6d 6e 2c 20 74 68 65 6e 20 6f  t column, then o
64d0: 6e 65 20 6f 72 20 6d 6f 72 65 20 6f 70 74 69 6f  ne or more optio
64e0: 6e 61 6c 20 63 6f 6c 75 6d 6e 20 63 6f 6e 73 74  nal column const
64f0: 72 61 69 6e 74 73 2e 0a 5e 53 51 4c 69 74 65 20  raints..^SQLite 
6500: 75 73 65 73 20 5b 64 79 6e 61 6d 69 63 20 74 79  uses [dynamic ty
6510: 70 69 6e 67 5d 3b 20 0a 74 68 65 20 64 61 74 61  ping]; .the data
6520: 74 79 70 65 20 66 6f 72 20 74 68 65 20 63 6f 6c  type for the col
6530: 75 6d 6e 20 64 6f 65 73 20 6e 6f 74 20 72 65 73  umn does not res
6540: 74 72 69 63 74 20 77 68 61 74 20 64 61 74 61 20  trict what data 
6550: 6d 61 79 20 62 65 20 70 75 74 0a 69 6e 20 74 68  may be put.in th
6560: 61 74 20 63 6f 6c 75 6d 6e 2e 0a 5e 54 68 65 20  at column..^The 
6570: 55 4e 49 51 55 45 20 63 6f 6e 73 74 72 61 69 6e  UNIQUE constrain
6580: 74 20 63 61 75 73 65 73 20 61 6e 20 75 6e 69 71  t causes an uniq
6590: 75 65 20 69 6e 64 65 78 20 74 6f 20 62 65 20 63  ue index to be c
65a0: 72 65 61 74 65 64 20 6f 6e 20 74 68 65 20 73 70  reated on the sp
65b0: 65 63 69 66 69 65 64 0a 63 6f 6c 75 6d 6e 73 2e  ecified.columns.
65c0: 20 20 5e 41 6c 6c 20 4e 55 4c 4c 20 76 61 6c 75    ^All NULL valu
65d0: 65 73 20 61 72 65 20 63 6f 6e 73 69 64 65 72 65  es are considere
65e0: 64 20 64 69 66 66 65 72 65 6e 74 20 66 72 6f 6d  d different from
65f0: 20 65 61 63 68 20 6f 74 68 65 72 20 61 6e 64 20   each other and 
6600: 66 72 6f 6d 0a 61 6c 6c 20 6f 74 68 65 72 20 76  from.all other v
6610: 61 6c 75 65 73 20 66 6f 72 20 74 68 65 20 70 75  alues for the pu
6620: 72 70 6f 73 65 20 6f 66 20 64 65 74 65 72 6d 69  rpose of determi
6630: 6e 69 6e 67 20 75 6e 69 71 75 65 6e 65 73 73 2c  ning uniqueness,
6640: 20 68 65 6e 63 65 20 61 20 55 4e 49 51 55 45 0a   hence a UNIQUE.
6650: 63 6f 6c 75 6d 6e 20 6d 61 79 20 63 6f 6e 74 61  column may conta
6660: 69 6e 20 6d 75 6c 74 69 70 6c 65 20 65 6e 74 72  in multiple entr
6670: 69 65 73 20 77 69 74 68 20 74 68 65 20 76 61 6c  ies with the val
6680: 75 65 20 6f 66 20 4e 55 4c 4c 2e 0a 5e 54 68 65  ue of NULL..^The
6690: 20 43 4f 4c 4c 41 54 45 20 63 6c 61 75 73 65 20   COLLATE clause 
66a0: 73 70 65 63 69 66 69 65 73 20 77 68 61 74 20 74  specifies what t
66b0: 65 78 74 20 0a 5b 63 6f 6c 6c 61 74 69 6e 67 20  ext .[collating 
66c0: 66 75 6e 63 74 69 6f 6e 5d 20 74 6f 20 75 73 65  function] to use
66d0: 20 77 68 65 6e 20 63 6f 6d 70 61 72 69 6e 67 20   when comparing 
66e0: 74 65 78 74 20 65 6e 74 72 69 65 73 20 66 6f 72  text entries for
66f0: 20 74 68 65 20 63 6f 6c 75 6d 6e 2e 20 20 0a 5e   the column.  .^
6700: 54 68 65 20 62 75 69 6c 74 2d 69 6e 20 5b 42 49  The built-in [BI
6710: 4e 41 52 59 5d 20 63 6f 6c 6c 61 74 69 6e 67 20  NARY] collating 
6720: 66 75 6e 63 74 69 6f 6e 20 69 73 20 75 73 65 64  function is used
6730: 20 62 79 20 64 65 66 61 75 6c 74 2e 0a 3c 70 3e   by default..<p>
6740: 0a 5e 54 68 65 20 44 45 46 41 55 4c 54 20 63 6f  .^The DEFAULT co
6750: 6e 73 74 72 61 69 6e 74 20 73 70 65 63 69 66 69  nstraint specifi
6760: 65 73 20 61 20 64 65 66 61 75 6c 74 20 76 61 6c  es a default val
6770: 75 65 20 74 6f 20 75 73 65 20 77 68 65 6e 20 64  ue to use when d
6780: 6f 69 6e 67 20 61 6e 20 5b 49 4e 53 45 52 54 5d  oing an [INSERT]
6790: 2e 0a 5e 54 68 65 20 76 61 6c 75 65 20 6d 61 79  ..^The value may
67a0: 20 62 65 20 4e 55 4c 4c 2c 20 61 20 73 74 72 69   be NULL, a stri
67b0: 6e 67 20 63 6f 6e 73 74 61 6e 74 2c 20 61 20 6e  ng constant, a n
67c0: 75 6d 62 65 72 2c 20 6f 72 20 61 20 63 6f 6e 73  umber, or a cons
67d0: 74 61 6e 74 20 65 78 70 72 65 73 73 69 6f 6e 0a  tant expression.
67e0: 65 6e 63 6c 6f 73 65 64 20 69 6e 20 70 61 72 65  enclosed in pare
67f0: 6e 74 68 65 73 65 73 2e 0a 5e 54 68 65 20 64 65  ntheses..^The de
6800: 66 61 75 6c 74 20 76 61 6c 75 65 20 6d 61 79 20  fault value may 
6810: 61 6c 73 6f 20 62 65 20 6f 6e 65 20 6f 66 20 74  also be one of t
6820: 68 65 20 73 70 65 63 69 61 6c 20 63 61 73 65 2d  he special case-
6830: 69 6e 64 65 70 65 6e 64 61 6e 74 0a 6b 65 79 77  independant.keyw
6840: 6f 72 64 73 20 43 55 52 52 45 4e 54 5f 54 49 4d  ords CURRENT_TIM
6850: 45 2c 20 43 55 52 52 45 4e 54 5f 44 41 54 45 20  E, CURRENT_DATE 
6860: 6f 72 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 53  or CURRENT_TIMES
6870: 54 41 4d 50 2e 20 20 5e 49 66 20 74 68 65 20 76  TAMP.  ^If the v
6880: 61 6c 75 65 20 69 73 0a 4e 55 4c 4c 2c 20 61 20  alue is.NULL, a 
6890: 73 74 72 69 6e 67 20 63 6f 6e 73 74 61 6e 74 20  string constant 
68a0: 6f 72 20 6e 75 6d 62 65 72 2c 20 69 74 20 69 73  or number, it is
68b0: 20 69 6e 73 65 72 74 65 64 20 69 6e 74 6f 20 74   inserted into t
68c0: 68 65 20 63 6f 6c 75 6d 6e 0a 77 68 65 6e 65 76  he column.whenev
68d0: 65 72 20 61 6e 20 49 4e 53 45 52 54 20 73 74 61  er an INSERT sta
68e0: 74 65 6d 65 6e 74 20 74 68 61 74 20 64 6f 65 73  tement that does
68f0: 20 6e 6f 74 20 73 70 65 63 69 66 79 20 61 20 76   not specify a v
6900: 61 6c 75 65 20 66 6f 72 20 74 68 65 20 63 6f 6c  alue for the col
6910: 75 6d 6e 20 69 73 0a 65 78 65 63 75 74 65 64 2e  umn is.executed.
6920: 20 5e 49 66 20 74 68 65 20 76 61 6c 75 65 20 69   ^If the value i
6930: 73 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 2c 20  s CURRENT_TIME, 
6940: 43 55 52 52 45 4e 54 5f 44 41 54 45 20 6f 72 20  CURRENT_DATE or 
6950: 43 55 52 52 45 4e 54 5f 54 49 4d 45 53 54 41 4d  CURRENT_TIMESTAM
6960: 50 2c 20 74 68 65 6e 0a 74 68 65 20 63 75 72 72  P, then.the curr
6970: 65 6e 74 20 55 54 43 20 64 61 74 65 20 61 6e 64  ent UTC date and
6980: 2f 6f 72 20 74 69 6d 65 20 69 73 20 69 6e 73 65  /or time is inse
6990: 72 74 65 64 20 69 6e 74 6f 20 74 68 65 20 63 6f  rted into the co
69a0: 6c 75 6d 6e 73 2e 20 5e 46 6f 72 0a 43 55 52 52  lumns. ^For.CURR
69b0: 45 4e 54 5f 54 49 4d 45 2c 20 74 68 65 20 66 6f  ENT_TIME, the fo
69c0: 72 6d 61 74 20 69 73 20 48 48 3a 4d 4d 3a 53 53  rmat is HH:MM:SS
69d0: 2e 20 5e 46 6f 72 20 43 55 52 52 45 4e 54 5f 44  . ^For CURRENT_D
69e0: 41 54 45 2c 20 59 59 59 59 2d 4d 4d 2d 44 44 2e  ATE, YYYY-MM-DD.
69f0: 0a 5e 54 68 65 20 66 6f 72 6d 61 74 20 66 6f 72  .^The format for
6a00: 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 53 54 41   CURRENT_TIMESTA
6a10: 4d 50 20 69 73 20 22 59 59 59 59 2d 4d 4d 2d 44  MP is "YYYY-MM-D
6a20: 44 20 48 48 3a 4d 4d 3a 53 53 22 2e 0a 3c 2f 70  D HH:MM:SS"..</p
6a30: 3e 0a 0a 3c 70 3e 5e 28 54 68 65 20 50 52 49 4d  >..<p>^(The PRIM
6a40: 41 52 59 20 4b 45 59 20 61 74 74 72 69 62 75 74  ARY KEY attribut
6a50: 65 20 6e 6f 72 6d 61 6c 6c 79 20 63 72 65 61 74  e normally creat
6a60: 65 73 20 61 20 55 4e 49 51 55 45 20 69 6e 64 65  es a UNIQUE inde
6a70: 78 20 6f 6e 0a 74 68 65 20 63 6f 6c 75 6d 6e 20  x on.the column 
6a80: 6f 72 20 63 6f 6c 75 6d 6e 73 20 74 68 61 74 20  or columns that 
6a90: 61 72 65 20 73 70 65 63 69 66 69 65 64 20 61 73  are specified as
6aa0: 20 74 68 65 20 50 52 49 4d 41 52 59 20 4b 45 59   the PRIMARY KEY
6ab0: 2e 20 20 54 68 65 20 6f 6e 6c 79 0a 65 78 63 65  .  The only.exce
6ac0: 70 74 69 6f 6e 20 74 6f 20 74 68 69 73 20 62 65  ption to this be
6ad0: 68 61 76 69 6f 72 20 69 73 20 73 70 65 63 69 61  havior is specia
6ae0: 6c 20 5b 49 4e 54 45 47 45 52 20 50 52 49 4d 41  l [INTEGER PRIMA
6af0: 52 59 20 4b 45 59 5d 20 63 6f 6c 75 6d 6e 2c 0a  RY KEY] column,.
6b00: 64 65 73 63 72 69 62 65 64 20 62 65 6c 6f 77 2e  described below.
6b10: 29 5e 0a 5e 28 41 63 63 6f 72 64 69 6e 67 20 74  )^.^(According t
6b20: 6f 20 74 68 65 20 53 51 4c 20 73 74 61 6e 64 61  o the SQL standa
6b30: 72 64 2c 20 50 52 49 4d 41 52 59 20 4b 45 59 20  rd, PRIMARY KEY 
6b40: 73 68 6f 75 6c 64 20 69 6d 70 6c 79 20 4e 4f 54  should imply NOT
6b50: 20 4e 55 4c 4c 2e 0a 55 6e 66 6f 72 74 75 6e 61   NULL..Unfortuna
6b60: 74 65 6c 79 2c 20 64 75 65 20 74 6f 20 61 20 6c  tely, due to a l
6b70: 6f 6e 67 2d 73 74 61 6e 64 69 6e 67 20 63 6f 64  ong-standing cod
6b80: 69 6e 67 20 6f 76 65 72 73 69 67 68 74 2c 20 74  ing oversight, t
6b90: 68 69 73 20 69 73 20 6e 6f 74 20 0a 74 68 65 20  his is not .the 
6ba0: 63 61 73 65 20 69 6e 20 53 51 4c 69 74 65 2e 20  case in SQLite. 
6bb0: 20 53 51 4c 69 74 65 20 61 6c 6c 6f 77 73 20 4e   SQLite allows N
6bc0: 55 4c 4c 20 76 61 6c 75 65 73 0a 69 6e 20 61 20  ULL values.in a 
6bd0: 50 52 49 4d 41 52 59 20 4b 45 59 20 63 6f 6c 75  PRIMARY KEY colu
6be0: 6d 6e 2e 29 5e 20 20 57 65 20 63 6f 75 6c 64 20  mn.)^  We could 
6bf0: 63 68 61 6e 67 65 20 53 51 4c 69 74 65 20 74 6f  change SQLite to
6c00: 20 63 6f 6e 66 6f 72 6d 20 74 6f 20 74 68 65 0a   conform to the.
6c10: 73 74 61 6e 64 61 72 64 20 28 61 6e 64 20 77 65  standard (and we
6c20: 20 6d 69 67 68 74 20 64 6f 20 73 6f 20 69 6e 20   might do so in 
6c30: 74 68 65 20 66 75 74 75 72 65 29 2c 20 62 75 74  the future), but
6c40: 20 62 79 20 74 68 65 20 74 69 6d 65 20 74 68 65   by the time the
6c50: 0a 6f 76 65 72 73 69 67 68 74 20 77 61 73 20 64  .oversight was d
6c60: 69 73 63 6f 76 65 72 65 64 2c 20 53 51 4c 69 74  iscovered, SQLit
6c70: 65 20 77 61 73 20 69 6e 20 73 75 63 68 20 77 69  e was in such wi
6c80: 64 65 20 75 73 65 20 74 68 61 74 20 77 65 20 66  de use that we f
6c90: 65 61 72 65 64 0a 62 72 65 61 6b 69 6e 67 20 6c  eared.breaking l
6ca0: 65 67 61 63 79 20 63 6f 64 65 20 69 66 20 77 65  egacy code if we
6cb0: 20 66 69 78 65 64 20 74 68 65 20 70 72 6f 62 6c   fixed the probl
6cc0: 65 6d 2e 20 20 53 6f 20 66 6f 72 20 6e 6f 77 20  em.  So for now 
6cd0: 77 65 20 68 61 76 65 0a 63 68 6f 73 65 6e 20 74  we have.chosen t
6ce0: 6f 20 63 6f 6e 74 69 6e 75 65 20 61 6c 6c 6f 77  o continue allow
6cf0: 69 6e 67 20 4e 55 4c 4c 73 20 69 6e 20 50 52 49  ing NULLs in PRI
6d00: 4d 41 52 59 20 4b 45 59 20 63 6f 6c 75 6d 6e 73  MARY KEY columns
6d10: 2e 0a 44 65 76 65 6c 6f 70 65 72 73 20 73 68 6f  ..Developers sho
6d20: 75 6c 64 20 62 65 20 61 77 61 72 65 2c 20 68 6f  uld be aware, ho
6d30: 77 65 76 65 72 2c 20 74 68 61 74 20 77 65 20 6d  wever, that we m
6d40: 61 79 20 63 68 61 6e 67 65 20 53 51 4c 69 74 65  ay change SQLite
6d50: 20 74 6f 0a 63 6f 6e 66 6f 72 6d 20 74 6f 20 74   to.conform to t
6d60: 68 65 20 53 51 4c 20 73 74 61 6e 64 61 72 64 20  he SQL standard 
6d70: 69 6e 20 66 75 74 75 72 65 20 61 6e 64 20 73 68  in future and sh
6d80: 6f 75 6c 64 20 64 65 73 69 67 6e 20 6e 65 77 20  ould design new 
6d90: 70 72 6f 67 72 61 6d 73 0a 61 63 63 6f 72 64 69  programs.accordi
6da0: 6e 67 6c 79 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 53  ngly.</p>..<p>^S
6db0: 51 4c 69 74 65 20 75 73 65 73 20 5b 64 79 6e 61  QLite uses [dyna
6dc0: 6d 69 63 20 74 79 70 69 6e 67 5d 20 69 6e 73 74  mic typing] inst
6dd0: 65 61 64 20 6f 66 20 73 74 61 74 69 63 20 74 79  ead of static ty
6de0: 70 69 6e 67 2e 20 20 5e 45 78 63 65 70 74 20 66  ping.  ^Except f
6df0: 6f 72 20 74 68 65 0a 73 70 65 63 69 61 6c 20 63  or the.special c
6e00: 61 73 65 20 6f 66 20 5b 49 4e 54 45 47 45 52 20  ase of [INTEGER 
6e10: 50 52 49 4d 41 52 59 20 4b 45 59 5d 2c 20 53 51  PRIMARY KEY], SQ
6e20: 4c 69 74 65 20 77 69 6c 6c 20 61 6c 6c 6f 77 20  Lite will allow 
6e30: 76 61 6c 75 65 73 20 6f 66 20 61 6e 79 0a 74 79  values of any.ty
6e40: 70 65 20 74 6f 20 62 65 20 73 74 6f 72 65 64 20  pe to be stored 
6e50: 69 6e 20 61 6e 79 20 63 6f 6c 75 6d 6e 20 72 65  in any column re
6e60: 67 61 72 64 6c 65 73 73 20 6f 66 20 74 68 65 20  gardless of the 
6e70: 64 65 63 6c 61 72 65 64 20 64 61 74 61 74 79 70  declared datatyp
6e80: 65 20 6f 66 0a 74 68 61 74 20 63 6f 6c 75 6d 6e  e of.that column
6e90: 2e 20 20 5e 54 68 65 20 64 65 63 6c 61 72 65 64  .  ^The declared
6ea0: 20 64 61 74 61 74 79 70 65 20 69 73 20 61 20 5b   datatype is a [
6eb0: 61 66 66 69 6e 69 74 79 20 7c 20 74 79 70 65 20  affinity | type 
6ec0: 61 66 66 69 6e 69 74 79 5d 20 74 68 61 74 0a 53  affinity] that.S
6ed0: 51 4c 69 74 65 20 61 74 74 65 6d 70 74 73 20 74  QLite attempts t
6ee0: 6f 20 63 6f 6d 70 6c 79 20 77 69 74 68 2c 20 62  o comply with, b
6ef0: 75 74 20 74 68 65 20 6f 70 65 72 61 74 69 6f 6e  ut the operation
6f00: 20 77 69 6c 6c 20 70 72 6f 63 65 65 64 20 65 76   will proceed ev
6f10: 65 6e 20 69 66 0a 63 6f 6d 70 6c 69 61 6e 63 65  en if.compliance
6f20: 20 69 73 20 6e 6f 74 20 70 6f 73 73 69 62 6c 65   is not possible
6f30: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 49 66 20 74 68  .</p>..<p>^If th
6f40: 65 20 22 54 45 4d 50 22 20 6f 72 20 22 54 45 4d  e "TEMP" or "TEM
6f50: 50 4f 52 41 52 59 22 20 6b 65 79 77 6f 72 64 20  PORARY" keyword 
6f60: 6f 63 63 75 72 73 20 69 6e 20 62 65 74 77 65 65  occurs in betwee
6f70: 6e 20 22 43 52 45 41 54 45 22 0a 61 6e 64 20 22  n "CREATE".and "
6f80: 54 41 42 4c 45 22 20 74 68 65 6e 20 74 68 65 20  TABLE" then the 
6f90: 74 61 62 6c 65 20 74 68 61 74 20 69 73 20 63 72  table that is cr
6fa0: 65 61 74 65 64 20 69 73 20 6f 6e 6c 79 20 76 69  eated is only vi
6fb0: 73 69 62 6c 65 0a 77 69 74 68 69 6e 20 74 68 61  sible.within tha
6fc0: 74 20 73 61 6d 65 20 64 61 74 61 62 61 73 65 20  t same database 
6fd0: 63 6f 6e 6e 65 63 74 69 6f 6e 0a 61 6e 64 20 69  connection.and i
6fe0: 73 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20  s automatically 
6ff0: 64 65 6c 65 74 65 64 20 77 68 65 6e 0a 74 68 65  deleted when.the
7000: 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
7010: 74 69 6f 6e 20 69 73 20 63 6c 6f 73 65 64 2e 20  tion is closed. 
7020: 20 5e 41 6e 79 20 69 6e 64 69 63 65 73 20 63 72   ^Any indices cr
7030: 65 61 74 65 64 20 6f 6e 20 61 20 74 65 6d 70 6f  eated on a tempo
7040: 72 61 72 79 20 74 61 62 6c 65 0a 61 72 65 20 61  rary table.are a
7050: 6c 73 6f 20 74 65 6d 70 6f 72 61 72 79 2e 20 20  lso temporary.  
7060: 5e 54 65 6d 70 6f 72 61 72 79 20 74 61 62 6c 65  ^Temporary table
7070: 73 20 61 6e 64 20 69 6e 64 69 63 65 73 20 61 72  s and indices ar
7080: 65 20 73 74 6f 72 65 64 20 69 6e 20 61 0a 73 65  e stored in a.se
7090: 70 61 72 61 74 65 20 66 69 6c 65 20 64 69 73 74  parate file dist
70a0: 69 6e 63 74 20 66 72 6f 6d 20 74 68 65 20 6d 61  inct from the ma
70b0: 69 6e 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  in database file
70c0: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 20 5e 49 66 20 61  .</p>..<p> ^If a
70d0: 20 26 6c 74 3b 64 61 74 61 62 61 73 65 2d 6e 61   &lt;database-na
70e0: 6d 65 26 67 74 3b 20 69 73 20 73 70 65 63 69 66  me&gt; is specif
70f0: 69 65 64 2c 20 74 68 65 6e 20 74 68 65 20 74 61  ied, then the ta
7100: 62 6c 65 20 69 73 20 63 72 65 61 74 65 64 20 69  ble is created i
7110: 6e 20 0a 74 68 65 20 6e 61 6d 65 64 20 64 61 74  n .the named dat
7120: 61 62 61 73 65 2e 20 5e 49 74 20 69 73 20 61 6e  abase. ^It is an
7130: 20 65 72 72 6f 72 20 74 6f 20 73 70 65 63 69 66   error to specif
7140: 79 20 62 6f 74 68 20 61 20 26 6c 74 3b 64 61 74  y both a &lt;dat
7150: 61 62 61 73 65 2d 6e 61 6d 65 26 67 74 3b 0a 61  abase-name&gt;.a
7160: 6e 64 20 74 68 65 20 54 45 4d 50 20 6b 65 79 77  nd the TEMP keyw
7170: 6f 72 64 2c 20 75 6e 6c 65 73 73 20 74 68 65 20  ord, unless the 
7180: 26 6c 74 3b 64 61 74 61 62 61 73 65 2d 6e 61 6d  &lt;database-nam
7190: 65 26 67 74 3b 20 69 73 20 22 74 65 6d 70 22 2e  e&gt; is "temp".
71a0: 20 5e 49 66 20 6e 6f 0a 64 61 74 61 62 61 73 65   ^If no.database
71b0: 20 6e 61 6d 65 20 69 73 20 73 70 65 63 69 66 69   name is specifi
71c0: 65 64 20 61 6e 64 20 74 68 65 20 54 45 4d 50 20  ed and the TEMP 
71d0: 6b 65 79 77 6f 72 64 20 69 73 20 6e 6f 74 20 70  keyword is not p
71e0: 72 65 73 65 6e 74 20 74 68 65 6e 0a 74 68 65 20  resent then.the 
71f0: 74 61 62 6c 65 20 69 73 20 63 72 65 61 74 65 64  table is created
7200: 20 69 6e 20 74 68 65 20 6d 61 69 6e 20 64 61 74   in the main dat
7210: 61 62 61 73 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e  abase.</p>..<p>^
7220: 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20 5b 63 6f  The optional [co
7230: 6e 66 6c 69 63 74 20 63 6c 61 75 73 65 5d 20 66  nflict clause] f
7240: 6f 6c 6c 6f 77 69 6e 67 20 65 61 63 68 20 63 6f  ollowing each co
7250: 6e 73 74 72 61 69 6e 74 0a 61 6c 6c 6f 77 73 20  nstraint.allows 
7260: 74 68 65 20 73 70 65 63 69 66 69 63 61 74 69 6f  the specificatio
7270: 6e 20 6f 66 20 61 6e 20 61 6c 74 65 72 6e 61 74  n of an alternat
7280: 69 76 65 20 64 65 66 61 75 6c 74 0a 63 6f 6e 73  ive default.cons
7290: 74 72 61 69 6e 74 20 63 6f 6e 66 6c 69 63 74 20  traint conflict 
72a0: 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72  resolution algor
72b0: 69 74 68 6d 20 66 6f 72 20 74 68 61 74 20 63 6f  ithm for that co
72c0: 6e 73 74 72 61 69 6e 74 2e 0a 5e 49 66 20 6e 6f  nstraint..^If no
72d0: 20 63 6f 6e 66 6c 69 63 74 20 63 6c 61 75 73 65   conflict clause
72e0: 20 69 73 20 73 70 65 63 69 66 69 65 64 2c 20 74   is specified, t
72f0: 68 65 20 41 42 4f 52 54 20 61 6c 67 6f 72 69 74  he ABORT algorit
7300: 68 6d 20 69 73 20 75 73 65 64 2e 0a 5e 44 69 66  hm is used..^Dif
7310: 66 65 72 65 6e 74 20 63 6f 6e 73 74 72 61 69 6e  ferent constrain
7320: 74 73 20 77 69 74 68 69 6e 20 74 68 65 20 73 61  ts within the sa
7330: 6d 65 0a 74 61 62 6c 65 20 6d 61 79 20 68 61 76  me.table may hav
7340: 65 20 64 69 66 66 65 72 65 6e 74 20 63 6f 6e 66  e different conf
7350: 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20  lict resolution 
7360: 61 6c 67 6f 72 69 74 68 6d 73 2e 0a 5e 49 66 20  algorithms..^If 
7370: 61 6e 20 5b 49 4e 53 45 52 54 5d 20 6f 72 20 5b  an [INSERT] or [
7380: 55 50 44 41 54 45 5d 20 73 74 61 74 65 6d 65 6e  UPDATE] statemen
7390: 74 20 73 70 65 63 69 66 69 65 73 20 61 20 63 6f  t specifies a co
73a0: 6e 66 6c 69 63 74 0a 72 65 73 6f 6c 75 74 69 6f  nflict.resolutio
73b0: 6e 20 61 6c 67 6f 72 69 74 68 6d 2c 20 74 68 65  n algorithm, the
73c0: 6e 20 74 68 65 20 61 6c 67 6f 72 69 74 68 6d 20  n the algorithm 
73d0: 73 70 65 63 69 66 69 65 64 20 6f 6e 20 74 68 65  specified on the
73e0: 20 49 4e 53 45 52 54 20 6f 72 0a 55 50 44 41 54   INSERT or.UPDAT
73f0: 45 20 73 74 61 74 65 6d 65 6e 74 20 6f 76 65 72  E statement over
7400: 72 69 64 65 73 20 74 68 65 20 61 6c 67 6f 72 69  rides the algori
7410: 74 68 6d 20 73 70 65 63 69 66 69 65 64 20 69 6e  thm specified in
7420: 20 74 68 65 20 0a 43 52 45 41 54 45 20 54 41 42   the .CREATE TAB
7430: 4c 45 20 73 74 61 74 65 6d 65 6e 74 2e 0a 53 65  LE statement..Se
7440: 65 20 74 68 65 20 73 65 63 74 69 6f 6e 20 74 69  e the section ti
7450: 74 6c 65 64 0a 5b 4f 4e 20 43 4f 4e 46 4c 49 43  tled.[ON CONFLIC
7460: 54 5d 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61  T] for additiona
7470: 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 3c 2f  l information.</
7480: 70 3e 0a 0a 3c 70 3e 43 48 45 43 4b 20 63 6f 6e  p>..<p>CHECK con
7490: 73 74 72 61 69 6e 74 73 20 61 72 65 20 73 75 70  straints are sup
74a0: 70 6f 72 74 65 64 20 61 73 20 6f 66 20 5b 76 65  ported as of [ve
74b0: 72 73 69 6f 6e 20 33 2e 33 2e 30 5d 2e 20 20 50  rsion 3.3.0].  P
74c0: 72 69 6f 72 0a 74 6f 20 76 65 72 73 69 6f 6e 20  rior.to version 
74d0: 33 2e 33 2e 30 2c 20 43 48 45 43 4b 20 63 6f 6e  3.3.0, CHECK con
74e0: 73 74 72 61 69 6e 74 73 20 77 65 72 65 20 70 61  straints were pa
74f0: 72 73 65 64 20 62 75 74 20 6e 6f 74 20 65 6e 66  rsed but not enf
7500: 6f 72 63 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e  orced.</p>..<p>^
7510: 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f  The number of co
7520: 6c 75 6d 6e 73 20 69 6e 20 61 20 74 61 62 6c 65  lumns in a table
7530: 20 69 73 20 6c 69 6d 69 74 65 64 20 62 79 20 74   is limited by t
7540: 68 65 0a 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 43  he.[SQLITE_MAX_C
7550: 4f 4c 55 4d 4e 5d 20 63 6f 6d 70 69 6c 65 2d 74  OLUMN] compile-t
7560: 69 6d 65 20 70 61 72 61 6d 65 74 65 72 2e 0a 5e  ime parameter..^
7570: 41 20 73 69 6e 67 6c 65 20 72 6f 77 20 6f 66 20  A single row of 
7580: 61 20 74 61 62 6c 65 20 63 61 6e 6e 6f 74 20 73  a table cannot s
7590: 74 6f 72 65 20 6d 6f 72 65 20 74 68 61 6e 0a 5b  tore more than.[
75a0: 53 51 4c 49 54 45 5f 4d 41 58 5f 4c 45 4e 47 54  SQLITE_MAX_LENGT
75b0: 48 5d 20 62 79 74 65 73 20 6f 66 20 64 61 74 61  H] bytes of data
75c0: 2e 0a 5e 42 6f 74 68 20 6f 66 20 74 68 65 73 65  ..^Both of these
75d0: 20 6c 69 6d 69 74 73 20 63 61 6e 20 62 65 20 6c   limits can be l
75e0: 6f 77 65 72 65 64 20 61 74 20 72 75 6e 74 69 6d  owered at runtim
75f0: 65 20 75 73 69 6e 67 20 74 68 65 0a 5b 73 71 6c  e using the.[sql
7600: 69 74 65 33 5f 6c 69 6d 69 74 28 29 5d 20 43 2f  ite3_limit()] C/
7610: 43 2b 2b 20 69 6e 74 65 72 66 61 63 65 2e 3c 2f  C++ interface.</
7620: 70 3e 0a 0a 0a 3c 70 3e 5e 54 68 65 20 43 52 45  p>...<p>^The CRE
7630: 41 54 45 20 54 41 42 4c 45 20 41 53 20 66 6f 72  ATE TABLE AS for
7640: 6d 20 64 65 66 69 6e 65 73 20 74 68 65 20 74 61  m defines the ta
7650: 62 6c 65 20 74 6f 20 62 65 0a 74 68 65 20 72 65  ble to be.the re
7660: 73 75 6c 74 20 73 65 74 20 6f 66 20 61 20 71 75  sult set of a qu
7670: 65 72 79 2e 20 20 5e 54 68 65 20 6e 61 6d 65 73  ery.  ^The names
7680: 20 6f 66 20 74 68 65 20 74 61 62 6c 65 20 63 6f   of the table co
7690: 6c 75 6d 6e 73 20 61 72 65 0a 74 68 65 20 6e 61  lumns are.the na
76a0: 6d 65 73 20 6f 66 20 74 68 65 20 63 6f 6c 75 6d  mes of the colum
76b0: 6e 73 20 69 6e 20 74 68 65 20 72 65 73 75 6c 74  ns in the result
76c0: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 49 66 20 74 68  .</p>..<p>^If th
76d0: 65 20 6f 70 74 69 6f 6e 61 6c 20 49 46 20 4e 4f  e optional IF NO
76e0: 54 20 45 58 49 53 54 53 20 63 6c 61 75 73 65 20  T EXISTS clause 
76f0: 69 73 20 70 72 65 73 65 6e 74 20 61 6e 64 20 61  is present and a
7700: 6e 6f 74 68 65 72 20 74 61 62 6c 65 0a 77 69 74  nother table.wit
7710: 68 20 74 68 65 20 73 61 6d 65 20 6e 61 6d 65 20  h the same name 
7720: 61 6c 65 61 64 79 20 65 78 69 73 74 73 2c 20 74  aleady exists, t
7730: 68 65 6e 20 74 68 69 73 20 63 6f 6d 6d 61 6e 64  hen this command
7740: 20 62 65 63 6f 6d 65 73 20 61 20 6e 6f 2d 6f 70   becomes a no-op
7750: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 61 62 6c 65  .</p>..<p>^Table
7760: 73 20 61 72 65 20 72 65 6d 6f 76 65 64 20 75 73  s are removed us
7770: 69 6e 67 20 74 68 65 20 5b 44 52 4f 50 20 54 41  ing the [DROP TA
7780: 42 4c 45 5d 20 73 74 61 74 65 6d 65 6e 74 2e 20  BLE] statement. 
7790: 20 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 68 64 5f 66   </p>..<tcl>hd_f
77a0: 72 61 67 6d 65 6e 74 20 72 6f 77 69 64 20 7b 49  ragment rowid {I
77b0: 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b  NTEGER PRIMARY K
77c0: 45 59 7d 20 52 4f 57 49 44 20 72 6f 77 69 64 3c  EY} ROWID rowid<
77d0: 2f 74 63 6c 3e 0a 3c 68 33 3e 52 4f 57 49 44 73  /tcl>.<h3>ROWIDs
77e0: 20 61 6e 64 20 74 68 65 20 49 4e 54 45 47 45 52   and the INTEGER
77f0: 20 50 52 49 4d 41 52 59 20 4b 45 59 3c 2f 68 33   PRIMARY KEY</h3
7800: 3e 0a 0a 3c 70 3e 5e 45 76 65 72 79 20 72 6f 77  >..<p>^Every row
7810: 20 6f 66 20 65 76 65 72 79 20 53 51 4c 69 74 65   of every SQLite
7820: 20 74 61 62 6c 65 20 68 61 73 20 61 20 36 34 2d   table has a 64-
7830: 62 69 74 20 73 69 67 6e 65 64 20 69 6e 74 65 67  bit signed integ
7840: 65 72 20 6b 65 79 20 0a 74 68 61 74 20 69 73 20  er key .that is 
7850: 75 6e 69 71 75 65 20 77 69 74 68 69 6e 20 74 68  unique within th
7860: 65 20 73 61 6d 65 20 74 61 62 6c 65 2e 0a 54 68  e same table..Th
7870: 69 73 20 69 6e 74 65 67 65 72 20 69 73 20 75 73  is integer is us
7880: 75 61 6c 6c 79 20 63 61 6c 6c 65 64 20 74 68 65  ually called the
7890: 20 22 72 6f 77 69 64 22 2e 20 20 5e 54 68 65 20   "rowid".  ^The 
78a0: 72 6f 77 69 64 20 69 73 20 74 68 65 20 61 63 74  rowid is the act
78b0: 75 61 6c 20 6b 65 79 20 75 73 65 64 0a 69 6e 20  ual key used.in 
78c0: 74 68 65 20 42 2d 54 72 65 65 20 74 68 61 74 20  the B-Tree that 
78d0: 69 6d 70 6c 65 6d 65 6e 74 73 20 61 6e 20 53 51  implements an SQ
78e0: 4c 69 74 65 20 74 61 62 6c 65 2e 20 20 5e 52 6f  Lite table.  ^Ro
78f0: 77 73 20 61 72 65 20 73 74 6f 72 65 64 20 69 6e  ws are stored in
7900: 0a 72 6f 77 69 64 20 6f 72 64 65 72 2e 20 5e 54  .rowid order. ^T
7910: 68 65 0a 72 6f 77 69 64 20 76 61 6c 75 65 20 63  he.rowid value c
7920: 61 6e 20 62 65 20 61 63 63 65 73 73 65 64 20 75  an be accessed u
7930: 73 69 6e 67 20 6f 6e 65 20 6f 66 20 74 68 65 20  sing one of the 
7940: 73 70 65 63 69 61 6c 20 6e 61 6d 65 73 0a 22 3c  special names."<
7950: 62 3e 52 4f 57 49 44 3c 2f 62 3e 22 2c 20 22 3c  b>ROWID</b>", "<
7960: 62 3e 4f 49 44 3c 2f 62 3e 22 2c 20 6f 72 20 22  b>OID</b>", or "
7970: 3c 62 3e 5f 52 4f 57 49 44 5f 3c 2f 62 3e 22 20  <b>_ROWID_</b>" 
7980: 61 73 73 75 6d 69 6e 67 20 74 68 6f 73 65 20 6e  assuming those n
7990: 61 6d 65 73 0a 61 72 65 20 6e 6f 20 75 73 65 64  ames.are no used
79a0: 20 62 79 20 6f 74 68 65 72 20 63 6f 6e 76 65 6e   by other conven
79b0: 74 69 6f 6e 61 6c 20 74 61 62 6c 65 20 63 6f 6c  tional table col
79c0: 75 6d 6e 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 0a 5e  umns.</p>..<p>.^
79d0: 49 66 20 61 20 63 6f 6c 75 6d 6e 20 69 73 20 64  If a column is d
79e0: 65 63 6c 61 72 65 64 20 74 6f 20 62 65 20 61 6e  eclared to be an
79f0: 20 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59   INTEGER PRIMARY
7a00: 20 4b 45 59 2c 20 74 68 65 6e 20 74 68 61 74 20   KEY, then that 
7a10: 63 6f 6c 75 6d 6e 20 69 73 20 6e 6f 74 0a 61 20  column is not.a 
7a20: 22 72 65 61 6c 22 20 64 61 74 61 62 61 73 65 20  "real" database 
7a30: 63 6f 6c 75 6d 6e 20 62 75 74 20 69 6e 73 74 65  column but inste
7a40: 61 64 20 62 65 63 6f 6d 65 73 0a 61 6e 20 61 6c  ad becomes.an al
7a50: 69 61 73 20 66 6f 72 20 74 68 65 20 72 6f 77 69  ias for the rowi
7a60: 64 2e 20 20 5e 55 6e 6c 69 6b 65 20 6e 6f 72 6d  d.  ^Unlike norm
7a70: 61 6c 20 53 51 4c 69 74 65 20 63 6f 6c 75 6d 6e  al SQLite column
7a80: 73 2c 20 74 68 65 20 72 6f 77 69 64 0a 6d 75 73  s, the rowid.mus
7a90: 74 20 62 65 20 61 20 6e 6f 6e 2d 4e 55 4c 4c 20  t be a non-NULL 
7aa0: 69 6e 74 65 67 65 72 20 76 61 6c 75 65 2e 20 20  integer value.  
7ab0: 5e 54 68 65 20 72 6f 77 69 64 20 69 73 20 6e 6f  ^The rowid is no
7ac0: 74 20 61 62 6c 65 20 74 6f 20 68 6f 6c 64 0a 66  t able to hold.f
7ad0: 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20 76 61  loating point va
7ae0: 6c 75 65 73 2c 20 73 74 72 69 6e 67 73 2c 20 42  lues, strings, B
7af0: 4c 4f 42 73 2c 20 6f 72 20 4e 55 4c 4c 73 2e 3c  LOBs, or NULLs.<
7b00: 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65  /p>..<blockquote
7b10: 3e 3c 69 3e 0a 5e 41 6e 20 49 4e 54 45 47 45 52  ><i>.^An INTEGER
7b20: 20 50 52 49 4d 41 52 59 20 4b 45 59 20 63 6f 6c   PRIMARY KEY col
7b30: 75 6d 6e 20 69 73 20 61 6e 20 61 6c 69 61 73 20  umn is an alias 
7b40: 66 6f 72 20 74 68 65 20 36 34 2d 62 69 74 20 73  for the 64-bit s
7b50: 69 67 6e 65 64 20 69 6e 74 65 67 65 72 20 72 6f  igned integer ro
7b60: 77 69 64 2e 0a 3c 2f 69 3e 3c 2f 62 6c 6f 63 6b  wid..</i></block
7b70: 71 75 6f 74 65 3e 0a 0a 3c 70 3e 5e 41 6e 20 49  quote>..<p>^An I
7b80: 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b  NTEGER PRIMARY K
7b90: 45 59 20 63 6f 6c 75 6d 6e 20 63 61 6e 20 61 6c  EY column can al
7ba0: 73 6f 20 69 6e 63 6c 75 64 65 20 74 68 65 0a 6b  so include the.k
7bb0: 65 79 77 6f 72 64 20 5b 41 55 54 4f 49 4e 43 52  eyword [AUTOINCR
7bc0: 45 4d 45 4e 54 5d 2e 20 20 5e 54 68 65 20 5b 41  EMENT].  ^The [A
7bd0: 55 54 4f 49 4e 43 52 45 4d 45 4e 54 5d 20 6b 65  UTOINCREMENT] ke
7be0: 79 77 6f 72 64 20 6d 6f 64 69 66 69 65 64 20 74  yword modified t
7bf0: 68 65 20 77 61 79 0a 74 68 61 74 20 42 2d 54 72  he way.that B-Tr
7c00: 65 65 20 6b 65 79 73 20 61 72 65 20 61 75 74 6f  ee keys are auto
7c10: 6d 61 74 69 63 61 6c 6c 79 20 67 65 6e 65 72 61  matically genera
7c20: 74 65 64 2e 20 20 41 64 64 69 74 69 6f 6e 61 6c  ted.  Additional
7c30: 20 64 65 74 61 69 6c 0a 6f 6e 20 61 75 74 6f 6d   detail.on autom
7c40: 61 74 69 63 20 42 2d 54 72 65 65 20 6b 65 79 20  atic B-Tree key 
7c50: 67 65 6e 65 72 61 74 69 6f 6e 20 69 73 20 61 76  generation is av
7c60: 61 69 6c 61 62 6c 65 0a 3c 61 20 68 72 65 66 3d  ailable.<a href=
7c70: 22 61 75 74 6f 69 6e 63 2e 68 74 6d 6c 22 3e 73  "autoinc.html">s
7c80: 65 70 61 72 61 74 65 6c 79 3c 2f 61 3e 2e 3c 2f  eparately</a>.</
7c90: 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20 73 70 65 63  p>..<p>^The spec
7ca0: 69 61 6c 20 62 65 68 61 76 69 6f 72 20 6f 66 20  ial behavior of 
7cb0: 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59 20  INTEGER PRIMARY 
7cc0: 4b 45 59 0a 69 73 20 6f 6e 6c 79 20 61 76 61 69  KEY.is only avai
7cd0: 6c 61 62 6c 65 20 69 66 20 74 68 65 20 74 79 70  lable if the typ
7ce0: 65 20 6e 61 6d 65 20 69 73 20 65 78 61 63 74 6c  e name is exactl
7cf0: 79 20 22 49 4e 54 45 47 45 52 22 20 69 6e 20 61  y "INTEGER" in a
7d00: 6e 79 20 6d 69 78 74 75 72 65 0a 6f 66 20 75 70  ny mixture.of up
7d10: 70 65 72 20 61 6e 64 20 6c 6f 77 65 72 20 63 61  per and lower ca
7d20: 73 65 2e 20 20 5e 4f 74 68 65 72 20 69 6e 74 65  se.  ^Other inte
7d30: 67 65 72 20 74 79 70 65 20 6e 61 6d 65 73 0a 6c  ger type names.l
7d40: 69 6b 65 20 22 49 4e 54 22 20 6f 72 20 22 42 49  ike "INT" or "BI
7d50: 47 49 4e 54 22 20 6f 72 20 22 53 48 4f 52 54 20  GINT" or "SHORT 
7d60: 49 4e 54 45 47 45 52 22 20 6f 72 20 22 55 4e 53  INTEGER" or "UNS
7d70: 49 47 4e 45 44 20 49 4e 54 45 47 45 52 22 0a 63  IGNED INTEGER".c
7d80: 61 75 73 65 73 20 74 68 65 20 70 72 69 6d 61 72  auses the primar
7d90: 79 20 6b 65 79 20 63 6f 6c 75 6d 6e 20 74 6f 20  y key column to 
7da0: 62 65 68 61 76 65 20 61 73 20 61 6e 20 6f 72 64  behave as an ord
7db0: 69 6e 61 72 79 20 74 61 62 6c 65 20 63 6f 6c 75  inary table colu
7dc0: 6d 6e 20 77 69 74 68 0a 69 6e 74 65 67 65 72 20  mn with.integer 
7dd0: 5b 61 66 66 69 6e 69 74 79 5d 20 61 6e 64 20 61  [affinity] and a
7de0: 20 75 6e 69 71 75 65 20 69 6e 64 65 78 2c 20 6e   unique index, n
7df0: 6f 74 20 61 73 20 61 6e 20 61 6c 69 61 73 20 66  ot as an alias f
7e00: 6f 72 20 74 68 65 20 72 6f 77 69 64 2e 0a 5e 28  or the rowid..^(
7e10: 54 68 65 20 73 70 65 63 69 61 6c 20 62 65 68 61  The special beha
7e20: 76 69 6f 72 20 6f 66 20 49 4e 54 45 47 45 52 20  vior of INTEGER 
7e30: 50 52 49 4d 41 52 59 20 4b 45 59 20 69 73 20 6f  PRIMARY KEY is o
7e40: 6e 6c 79 20 61 76 61 69 6c 61 62 6c 65 20 69 66  nly available if
7e50: 20 74 68 65 0a 70 72 69 6d 61 72 79 20 6b 65 79   the.primary key
7e60: 20 69 73 20 61 20 73 69 6e 67 6c 65 20 63 6f 6c   is a single col
7e70: 75 6d 6e 2e 20 20 4d 75 6c 74 69 2d 63 6f 6c 75  umn.  Multi-colu
7e80: 6d 6e 20 70 72 69 6d 61 72 79 20 6b 65 79 73 20  mn primary keys 
7e90: 64 6f 20 6e 6f 74 20 62 65 63 6f 6d 65 0a 61 6c  do not become.al
7ea0: 69 61 73 65 73 20 66 6f 72 20 74 68 65 20 72 6f  iases for the ro
7eb0: 77 69 64 2e 29 5e 0a 5e 54 68 65 20 41 55 54 4f  wid.)^.^The AUTO
7ec0: 49 4e 43 52 45 4d 45 4e 54 20 6b 65 79 77 6f 72  INCREMENT keywor
7ed0: 64 20 6f 6e 6c 79 20 77 6f 72 6b 73 20 6f 6e 20  d only works on 
7ee0: 61 20 63 6f 6c 75 6d 6e 20 74 68 61 74 20 69 73  a column that is
7ef0: 20 61 6e 20 61 6c 69 61 73 0a 66 6f 72 20 74 68   an alias.for th
7f00: 65 20 72 6f 77 69 64 2e 3c 2f 70 3e 0a 0a 3c 70  e rowid.</p>..<p
7f10: 3e 4e 6f 74 65 20 74 68 61 74 20 73 65 61 72 63  >Note that searc
7f20: 68 65 73 20 61 67 61 69 6e 73 74 20 61 20 72 6f  hes against a ro
7f30: 77 69 64 20 61 72 65 20 67 65 6e 65 72 61 6c 6c  wid are generall
7f40: 79 20 61 62 6f 75 74 20 74 77 69 63 65 20 61 73  y about twice as
7f50: 0a 66 61 73 74 20 61 73 20 73 65 61 72 63 68 65  .fast as searche
7f60: 73 20 61 67 61 69 6e 73 74 20 61 6e 79 20 6f 74  s against any ot
7f70: 68 65 72 20 50 52 49 4d 41 52 59 20 4b 45 59 20  her PRIMARY KEY 
7f80: 6f 72 20 69 6e 64 65 78 65 64 20 76 61 6c 75 65  or indexed value
7f90: 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 3c 62 3e 47 6f  ..</p>..<p><b>Go
7fa0: 6f 66 79 20 62 65 68 61 76 69 6f 72 20 61 6c 65  ofy behavior ale
7fb0: 72 74 3a 3c 2f 62 3e 20 20 5e 28 54 68 65 20 66  rt:</b>  ^(The f
7fc0: 6f 6c 6c 6f 77 69 6e 67 20 74 68 72 65 65 20 64  ollowing three d
7fd0: 65 63 6c 61 72 61 74 69 6f 6e 73 20 61 6c 6c 20  eclarations all 
7fe0: 63 61 75 73 65 0a 74 68 65 20 63 6f 6c 75 6d 6e  cause.the column
7ff0: 20 22 78 22 20 62 65 20 61 6e 20 61 6c 69 61 73   "x" be an alias
8000: 20 66 6f 72 20 74 68 65 20 72 6f 77 69 64 3a 3c   for the rowid:<
8010: 2f 70 3e 0a 0a 3c 75 6c 3e 0a 3c 6c 69 3e 3c 74  /p>..<ul>.<li><t
8020: 74 3e 43 52 45 41 54 45 20 54 41 42 4c 45 20 74  t>CREATE TABLE t
8030: 28 78 20 49 4e 54 45 47 45 52 20 50 52 49 4d 41  (x INTEGER PRIMA
8040: 52 59 20 4b 45 59 20 41 53 43 2c 20 79 2c 20 7a  RY KEY ASC, y, z
8050: 29 3b 3c 2f 74 74 3e 0a 3c 6c 69 3e 3c 74 74 3e  );</tt>.<li><tt>
8060: 43 52 45 41 54 45 20 54 41 42 4c 45 20 74 28 78  CREATE TABLE t(x
8070: 20 49 4e 54 45 47 45 52 2c 20 79 2c 20 7a 2c 20   INTEGER, y, z, 
8080: 50 52 49 4d 41 52 59 20 4b 45 59 28 78 20 41 53  PRIMARY KEY(x AS
8090: 43 29 29 3b 3c 2f 74 74 3e 0a 3c 6c 69 3e 3c 74  C));</tt>.<li><t
80a0: 74 3e 43 52 45 41 54 45 20 54 41 42 4c 45 20 74  t>CREATE TABLE t
80b0: 28 78 20 49 4e 54 45 47 45 52 2c 20 79 2c 20 7a  (x INTEGER, y, z
80c0: 2c 20 50 52 49 4d 41 52 59 20 4b 45 59 28 78 20  , PRIMARY KEY(x 
80d0: 44 45 53 43 29 29 3b 3c 2f 74 74 3e 0a 3c 2f 75  DESC));</tt>.</u
80e0: 6c 3e 29 5e 0a 0a 3c 70 3e 42 75 74 2c 20 69 6e  l>)^..<p>But, in
80f0: 20 63 6f 6e 74 72 61 73 74 2c 20 5e 28 74 68 65   contrast, ^(the
8100: 20 66 6f 6c 6c 6f 77 69 6e 67 20 64 65 63 6c 61   following decla
8110: 72 61 74 69 6f 6e 20 64 6f 65 73 20 3c 75 3e 6e  ration does <u>n
8120: 6f 74 3c 2f 75 3e 20 72 65 73 75 6c 74 20 69 6e  ot</u> result in
8130: 0a 22 78 22 20 62 65 69 6e 67 20 61 6e 20 61 6c  ."x" being an al
8140: 69 61 73 20 66 6f 72 20 74 68 65 20 72 6f 77 69  ias for the rowi
8150: 64 3a 3c 2f 70 3e 0a 0a 3c 75 6c 3e 0a 3c 6c 69  d:</p>..<ul>.<li
8160: 3e 3c 74 74 3e 43 52 45 41 54 45 20 54 41 42 4c  ><tt>CREATE TABL
8170: 45 20 74 28 78 20 49 4e 54 45 47 45 52 20 50 52  E t(x INTEGER PR
8180: 49 4d 41 52 59 20 4b 45 59 20 44 45 53 43 2c 20  IMARY KEY DESC, 
8190: 79 2c 20 7a 29 3b 3c 2f 74 74 3e 0a 3c 2f 75 6c  y, z);</tt>.</ul
81a0: 3e 29 5e 0a 0a 3c 70 3e 54 68 69 73 20 61 73 79  >)^..<p>This asy
81b0: 6d 6d 65 74 72 69 63 61 6c 20 62 65 68 61 76 69  mmetrical behavi
81c0: 6f 72 20 69 73 20 75 6e 66 6f 72 74 75 6e 61 74  or is unfortunat
81d0: 65 20 61 6e 64 20 69 73 20 72 65 61 6c 6c 79 20  e and is really 
81e0: 64 75 65 20 74 6f 20 61 20 62 75 67 0a 69 6e 20  due to a bug.in 
81f0: 74 68 65 20 70 61 72 73 65 72 20 69 6e 20 65 61  the parser in ea
8200: 72 6c 79 20 76 65 72 73 69 6f 6e 73 20 6f 66 20  rly versions of 
8210: 53 51 4c 69 74 65 2e 20 20 42 75 74 20 66 69 78  SQLite.  But fix
8220: 69 6e 67 20 74 68 65 20 62 75 67 20 77 6f 75 6c  ing the bug woul
8230: 64 0a 72 65 73 75 6c 74 20 69 6e 20 76 65 72 79  d.result in very
8240: 20 73 65 72 69 6f 75 73 20 62 61 63 6b 77 61 72   serious backwar
8250: 64 73 20 69 6e 63 6f 6d 70 61 74 69 62 69 6c 69  ds incompatibili
8260: 74 69 65 73 2e 20 20 54 68 65 20 53 51 4c 69 74  ties.  The SQLit
8270: 65 20 64 65 76 65 6c 6f 70 65 72 73 0a 66 65 65  e developers.fee
8280: 6c 20 74 68 61 74 20 67 6f 6f 66 79 20 62 65 68  l that goofy beh
8290: 61 76 69 6f 72 20 69 6e 20 61 6e 20 63 6f 72 6e  avior in an corn
82a0: 65 72 20 63 61 73 65 20 69 73 20 66 61 72 20 62  er case is far b
82b0: 65 74 74 65 72 20 74 68 61 6e 0a 61 20 63 6f 6d  etter than.a com
82c0: 70 61 74 69 62 69 6c 69 74 79 20 62 72 65 61 6b  patibility break
82d0: 2c 20 73 6f 20 74 68 65 20 6f 72 69 67 69 6e 61  , so the origina
82e0: 6c 20 62 65 68 61 76 69 6f 72 20 69 73 20 72 65  l behavior is re
82f0: 74 61 69 6e 65 64 2e 3c 2f 70 3e 0a 0a 3c 74 63  tained.</p>..<tc
8300: 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23 23  l>.#############
8310: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8320: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8330: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8340: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8350: 23 0a 53 65 63 74 69 6f 6e 20 7b 43 52 45 41 54  #.Section {CREAT
8360: 45 20 54 52 49 47 47 45 52 7d 20 63 72 65 61 74  E TRIGGER} creat
8370: 65 74 72 69 67 67 65 72 20 7b 7b 43 52 45 41 54  etrigger {{CREAT
8380: 45 20 54 52 49 47 47 45 52 7d 7d 0a 0a 42 75 62  E TRIGGER}}..Bub
8390: 62 6c 65 44 69 61 67 72 61 6d 20 63 72 65 61 74  bleDiagram creat
83a0: 65 2d 74 72 69 67 67 65 72 2d 73 74 6d 74 20 31  e-trigger-stmt 1
83b0: 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 5e 54 68 65  .</tcl>..<p>^The
83c0: 20 43 52 45 41 54 45 20 54 52 49 47 47 45 52 20   CREATE TRIGGER 
83d0: 73 74 61 74 65 6d 65 6e 74 20 69 73 20 75 73 65  statement is use
83e0: 64 20 74 6f 20 61 64 64 20 74 72 69 67 67 65 72  d to add trigger
83f0: 73 20 74 6f 20 74 68 65 20 0a 64 61 74 61 62 61  s to the .databa
8400: 73 65 20 73 63 68 65 6d 61 2e 20 5e 54 72 69 67  se schema. ^Trig
8410: 67 65 72 73 20 61 72 65 20 64 61 74 61 62 61 73  gers are databas
8420: 65 20 6f 70 65 72 61 74 69 6f 6e 73 20 0a 74 68  e operations .th
8430: 61 74 20 61 72 65 20 61 75 74 6f 6d 61 74 69 63  at are automatic
8440: 61 6c 6c 79 20 70 65 72 66 6f 72 6d 65 64 20 77  ally performed w
8450: 68 65 6e 20 61 20 73 70 65 63 69 66 69 65 64 20  hen a specified 
8460: 64 61 74 61 62 61 73 65 20 65 76 65 6e 74 0a 6f  database event.o
8470: 63 63 75 72 73 2e 20 20 3c 2f 70 3e 0a 0a 3c 70  ccurs.  </p>..<p
8480: 3e 5e 41 20 74 72 69 67 67 65 72 20 6d 61 79 20  >^A trigger may 
8490: 62 65 20 73 70 65 63 69 66 69 65 64 20 74 6f 20  be specified to 
84a0: 66 69 72 65 20 77 68 65 6e 65 76 65 72 20 61 20  fire whenever a 
84b0: 5b 44 45 4c 45 54 45 5d 2c 20 5b 49 4e 53 45 52  [DELETE], [INSER
84c0: 54 5d 2c 0a 6f 72 20 5b 55 50 44 41 54 45 5d 20  T],.or [UPDATE] 
84d0: 6f 66 20 61 0a 70 61 72 74 69 63 75 6c 61 72 20  of a.particular 
84e0: 64 61 74 61 62 61 73 65 20 74 61 62 6c 65 20 6f  database table o
84f0: 63 63 75 72 73 2c 20 6f 72 20 77 68 65 6e 65 76  ccurs, or whenev
8500: 65 72 20 61 6e 20 5b 55 50 44 41 54 45 5d 20 6f  er an [UPDATE] o
8510: 63 63 75 72 73 20 6f 6e 0a 6f 6e 20 6f 6e 65 20  ccurs on.on one 
8520: 6f 72 20 6d 6f 72 65 20 73 70 65 63 69 66 69 65  or more specifie
8530: 64 20 63 6f 6c 75 6d 6e 73 20 6f 66 20 61 20 74  d columns of a t
8540: 61 62 6c 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 41  able.</p>..<p>^A
8550: 74 20 74 68 69 73 20 74 69 6d 65 20 53 51 4c 69  t this time SQLi
8560: 74 65 20 73 75 70 70 6f 72 74 73 20 6f 6e 6c 79  te supports only
8570: 20 46 4f 52 20 45 41 43 48 20 52 4f 57 20 74 72   FOR EACH ROW tr
8580: 69 67 67 65 72 73 2c 20 6e 6f 74 20 46 4f 52 20  iggers, not FOR 
8590: 45 41 43 48 0a 53 54 41 54 45 4d 45 4e 54 20 74  EACH.STATEMENT t
85a0: 72 69 67 67 65 72 73 2e 20 5e 48 65 6e 63 65 20  riggers. ^Hence 
85b0: 65 78 70 6c 69 63 69 74 6c 79 20 73 70 65 63 69  explicitly speci
85c0: 66 79 69 6e 67 20 46 4f 52 20 45 41 43 48 20 52  fying FOR EACH R
85d0: 4f 57 20 69 73 20 6f 70 74 69 6f 6e 61 6c 2e 0a  OW is optional..
85e0: 5e 46 4f 52 20 45 41 43 48 20 52 4f 57 20 69 6d  ^FOR EACH ROW im
85f0: 70 6c 69 65 73 20 74 68 61 74 20 74 68 65 20 53  plies that the S
8600: 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 20 73 70  QL statements sp
8610: 65 63 69 66 69 65 64 20 69 6e 20 74 68 65 20 74  ecified in the t
8620: 72 69 67 67 65 72 0a 6d 61 79 20 62 65 20 65 78  rigger.may be ex
8630: 65 63 75 74 65 64 20 28 64 65 70 65 6e 64 69 6e  ecuted (dependin
8640: 67 20 6f 6e 20 74 68 65 20 57 48 45 4e 20 63 6c  g on the WHEN cl
8650: 61 75 73 65 29 20 66 6f 72 20 65 61 63 68 20 64  ause) for each d
8660: 61 74 61 62 61 73 65 20 72 6f 77 20 62 65 69 6e  atabase row bein
8670: 67 0a 69 6e 73 65 72 74 65 64 2c 20 75 70 64 61  g.inserted, upda
8680: 74 65 64 20 6f 72 20 64 65 6c 65 74 65 64 20 62  ted or deleted b
8690: 79 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74 20  y the statement 
86a0: 63 61 75 73 69 6e 67 20 74 68 65 20 74 72 69 67  causing the trig
86b0: 67 65 72 20 74 6f 20 66 69 72 65 2e 3c 2f 70 3e  ger to fire.</p>
86c0: 0a 0a 3c 70 3e 5e 28 42 6f 74 68 20 74 68 65 20  ..<p>^(Both the 
86d0: 57 48 45 4e 20 63 6c 61 75 73 65 20 61 6e 64 20  WHEN clause and 
86e0: 74 68 65 20 74 72 69 67 67 65 72 20 61 63 74 69  the trigger acti
86f0: 6f 6e 73 20 6d 61 79 20 61 63 63 65 73 73 20 65  ons may access e
8700: 6c 65 6d 65 6e 74 73 20 6f 66 20 0a 74 68 65 20  lements of .the 
8710: 72 6f 77 20 62 65 69 6e 67 20 69 6e 73 65 72 74  row being insert
8720: 65 64 2c 20 64 65 6c 65 74 65 64 20 6f 72 20 75  ed, deleted or u
8730: 70 64 61 74 65 64 20 75 73 69 6e 67 20 72 65 66  pdated using ref
8740: 65 72 65 6e 63 65 73 20 6f 66 20 74 68 65 20 66  erences of the f
8750: 6f 72 6d 20 0a 22 4e 45 57 2e 3c 69 3e 63 6f 6c  orm ."NEW.<i>col
8760: 75 6d 6e 2d 6e 61 6d 65 3c 2f 69 3e 22 20 61 6e  umn-name</i>" an
8770: 64 20 22 4f 4c 44 2e 3c 69 3e 63 6f 6c 75 6d 6e  d "OLD.<i>column
8780: 2d 6e 61 6d 65 3c 2f 69 3e 22 2c 20 77 68 65 72  -name</i>", wher
8790: 65 0a 3c 69 3e 63 6f 6c 75 6d 6e 2d 6e 61 6d 65  e.<i>column-name
87a0: 3c 2f 69 3e 20 69 73 20 74 68 65 20 6e 61 6d 65  </i> is the name
87b0: 20 6f 66 20 61 20 63 6f 6c 75 6d 6e 20 66 72 6f   of a column fro
87c0: 6d 20 74 68 65 20 74 61 62 6c 65 20 74 68 61 74  m the table that
87d0: 20 74 68 65 20 74 72 69 67 67 65 72 0a 69 73 20   the trigger.is 
87e0: 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 2e  associated with.
87f0: 29 5e 20 5e 28 4f 4c 44 20 61 6e 64 20 4e 45 57  )^ ^(OLD and NEW
8800: 20 72 65 66 65 72 65 6e 63 65 73 20 6d 61 79 20   references may 
8810: 6f 6e 6c 79 20 62 65 20 75 73 65 64 20 69 6e 20  only be used in 
8820: 74 72 69 67 67 65 72 73 20 6f 6e 0a 65 76 65 6e  triggers on.even
8830: 74 73 20 66 6f 72 20 77 68 69 63 68 20 74 68 65  ts for which the
8840: 79 20 61 72 65 20 72 65 6c 65 76 61 6e 74 2c 20  y are relevant, 
8850: 61 73 20 66 6f 6c 6c 6f 77 73 3a 3c 2f 70 3e 0a  as follows:</p>.
8860: 0a 3c 74 61 62 6c 65 20 62 6f 72 64 65 72 3d 30  .<table border=0
8870: 20 63 65 6c 6c 70 61 64 64 69 6e 67 3d 31 30 3e   cellpadding=10>
8880: 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e  .<tr>.<td valign
8890: 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69  ="top" align="ri
88a0: 67 68 74 22 20 77 69 64 74 68 3d 31 32 30 3e 3c  ght" width=120><
88b0: 69 3e 49 4e 53 45 52 54 3c 2f 69 3e 3c 2f 74 64  i>INSERT</i></td
88c0: 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
88d0: 70 22 3e 4e 45 57 20 72 65 66 65 72 65 6e 63 65  p">NEW reference
88e0: 73 20 61 72 65 20 76 61 6c 69 64 3c 2f 74 64 3e  s are valid</td>
88f0: 0a 3c 2f 74 72 3e 0a 3c 74 72 3e 0a 3c 74 64 20  .</tr>.<tr>.<td 
8900: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69  valign="top" ali
8910: 67 6e 3d 22 72 69 67 68 74 22 20 77 69 64 74 68  gn="right" width
8920: 3d 31 32 30 3e 3c 69 3e 55 50 44 41 54 45 3c 2f  =120><i>UPDATE</
8930: 69 3e 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69  i></td>.<td vali
8940: 67 6e 3d 22 74 6f 70 22 3e 4e 45 57 20 61 6e 64  gn="top">NEW and
8950: 20 4f 4c 44 20 72 65 66 65 72 65 6e 63 65 73 20   OLD references 
8960: 61 72 65 20 76 61 6c 69 64 3c 2f 74 64 3e 0a 3c  are valid</td>.<
8970: 2f 74 72 3e 0a 3c 74 72 3e 0a 3c 74 64 20 76 61  /tr>.<tr>.<td va
8980: 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e  lign="top" align
8990: 3d 22 72 69 67 68 74 22 20 77 69 64 74 68 3d 31  ="right" width=1
89a0: 32 30 3e 3c 69 3e 44 45 4c 45 54 45 3c 2f 69 3e  20><i>DELETE</i>
89b0: 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e  </td>.<td valign
89c0: 3d 22 74 6f 70 22 3e 4f 4c 44 20 72 65 66 65 72  ="top">OLD refer
89d0: 65 6e 63 65 73 20 61 72 65 20 76 61 6c 69 64 3c  ences are valid<
89e0: 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 2f 74 61 62  /td>.</tr>.</tab
89f0: 6c 65 3e 0a 3c 2f 70 3e 29 5e 0a 0a 3c 70 3e 5e  le>.</p>)^..<p>^
8a00: 49 66 20 61 20 57 48 45 4e 20 63 6c 61 75 73 65  If a WHEN clause
8a10: 20 69 73 20 73 75 70 70 6c 69 65 64 2c 20 74 68   is supplied, th
8a20: 65 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73  e SQL statements
8a30: 20 73 70 65 63 69 66 69 65 64 0a 61 72 65 20 6f   specified.are o
8a40: 6e 6c 79 20 65 78 65 63 75 74 65 64 20 66 6f 72  nly executed for
8a50: 20 72 6f 77 73 20 66 6f 72 20 77 68 69 63 68 20   rows for which 
8a60: 74 68 65 20 57 48 45 4e 0a 63 6c 61 75 73 65 20  the WHEN.clause 
8a70: 69 73 20 74 72 75 65 2e 20 5e 49 66 20 6e 6f 20  is true. ^If no 
8a80: 57 48 45 4e 20 63 6c 61 75 73 65 20 69 73 20 73  WHEN clause is s
8a90: 75 70 70 6c 69 65 64 2c 20 74 68 65 20 53 51 4c  upplied, the SQL
8aa0: 20 73 74 61 74 65 6d 65 6e 74 73 0a 61 72 65 20   statements.are 
8ab0: 65 78 65 63 75 74 65 64 20 66 6f 72 20 61 6c 6c  executed for all
8ac0: 20 72 6f 77 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e   rows.</p>..<p>^
8ad0: 54 68 65 20 42 45 46 4f 52 45 20 6f 72 20 41 46  The BEFORE or AF
8ae0: 54 45 52 20 6b 65 79 77 6f 72 64 20 64 65 74 65  TER keyword dete
8af0: 72 6d 69 6e 65 73 20 77 68 65 6e 20 74 68 65 20  rmines when the 
8b00: 74 72 69 67 67 65 72 20 61 63 74 69 6f 6e 73 0a  trigger actions.
8b10: 77 69 6c 6c 20 62 65 20 65 78 65 63 75 74 65 64  will be executed
8b20: 20 72 65 6c 61 74 69 76 65 20 74 6f 20 74 68 65   relative to the
8b30: 20 69 6e 73 65 72 74 69 6f 6e 2c 20 6d 6f 64 69   insertion, modi
8b40: 66 69 63 61 74 69 6f 6e 20 6f 72 20 72 65 6d 6f  fication or remo
8b50: 76 61 6c 20 6f 66 20 74 68 65 0a 61 73 73 6f 63  val of the.assoc
8b60: 69 61 74 65 64 20 72 6f 77 2e 3c 2f 70 3e 0a 0a  iated row.</p>..
8b70: 3c 70 3e 5e 41 6e 20 5b 4f 4e 20 43 4f 4e 46 4c  <p>^An [ON CONFL
8b80: 49 43 54 5d 20 63 6c 61 75 73 65 20 6d 61 79 20  ICT] clause may 
8b90: 62 65 20 73 70 65 63 69 66 69 65 64 20 61 73 20  be specified as 
8ba0: 70 61 72 74 20 6f 66 20 61 6e 20 5b 55 50 44 41  part of an [UPDA
8bb0: 54 45 5d 20 6f 72 20 5b 49 4e 53 45 52 54 5d 0a  TE] or [INSERT].
8bc0: 61 63 74 69 6f 6e 20 77 69 74 68 69 6e 20 74 68  action within th
8bd0: 65 20 62 6f 64 79 20 6f 66 20 74 68 65 20 74 72  e body of the tr
8be0: 69 67 67 65 72 2e 0a 5e 48 6f 77 65 76 65 72 20  igger..^However 
8bf0: 69 66 20 61 6e 20 5b 4f 4e 20 43 4f 4e 46 4c 49  if an [ON CONFLI
8c00: 43 54 5d 20 63 6c 61 75 73 65 20 69 73 20 73 70  CT] clause is sp
8c10: 65 63 69 66 69 65 64 20 61 73 20 70 61 72 74 20  ecified as part 
8c20: 6f 66 20 0a 74 68 65 20 73 74 61 74 65 6d 65 6e  of .the statemen
8c30: 74 20 63 61 75 73 69 6e 67 20 74 68 65 20 74 72  t causing the tr
8c40: 69 67 67 65 72 20 74 6f 20 66 69 72 65 2c 20 74  igger to fire, t
8c50: 68 65 6e 20 63 6f 6e 66 6c 69 63 74 20 68 61 6e  hen conflict han
8c60: 64 6c 69 6e 67 0a 70 6f 6c 69 63 79 20 6f 66 20  dling.policy of 
8c70: 74 68 65 20 6f 75 74 65 72 20 73 74 61 74 65 6d  the outer statem
8c80: 65 6e 74 20 69 73 20 75 73 65 64 20 69 6e 73 74  ent is used inst
8c90: 65 61 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 72  ead.</p>..<p>^Tr
8ca0: 69 67 67 65 72 73 20 61 72 65 20 61 75 74 6f 6d  iggers are autom
8cb0: 61 74 69 63 61 6c 6c 79 20 5b 44 52 4f 50 20 54  atically [DROP T
8cc0: 52 49 47 47 45 52 20 7c 20 64 72 6f 70 70 65 64  RIGGER | dropped
8cd0: 5d 0a 77 68 65 6e 20 74 68 65 20 74 61 62 6c 65  ].when the table
8ce0: 20 74 68 61 74 20 74 68 65 79 20 61 72 65 20 0a   that they are .
8cf0: 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
8d00: 28 74 68 65 20 3c 69 3e 74 61 62 6c 65 2d 6e 61  (the <i>table-na
8d10: 6d 65 3c 2f 69 3e 20 74 61 62 6c 65 29 20 69 73  me</i> table) is
8d20: 20 0a 5b 44 52 4f 50 20 54 41 42 4c 45 20 7c 20   .[DROP TABLE | 
8d30: 64 72 6f 70 70 65 64 5d 2e 20 20 5e 48 6f 77 65  dropped].  ^Howe
8d40: 76 65 72 20 69 66 20 74 68 65 20 74 68 65 20 74  ver if the the t
8d50: 72 69 67 67 65 72 20 61 63 74 69 6f 6e 73 20 72  rigger actions r
8d60: 65 66 65 72 65 6e 63 65 0a 6f 74 68 65 72 20 74  eference.other t
8d70: 61 62 6c 65 73 2c 20 74 68 65 20 74 72 69 67 67  ables, the trigg
8d80: 65 72 20 69 73 20 6e 6f 74 20 64 72 6f 70 70 65  er is not droppe
8d90: 64 20 6f 72 20 6d 6f 64 69 66 69 65 64 20 69 66  d or modified if
8da0: 20 74 68 6f 73 65 20 6f 74 68 65 72 0a 74 61 62   those other.tab
8db0: 6c 65 73 20 61 72 65 20 5b 44 52 4f 50 20 54 41  les are [DROP TA
8dc0: 42 4c 45 20 7c 20 64 72 6f 70 70 65 64 5d 20 6f  BLE | dropped] o
8dd0: 72 20 5b 41 4c 54 45 52 20 54 41 42 4c 45 20 7c  r [ALTER TABLE |
8de0: 20 6d 6f 64 69 66 69 65 64 5d 2e 3c 2f 70 3e 0a   modified].</p>.
8df0: 0a 3c 70 3e 5e 54 72 69 67 67 65 72 73 20 61 72  .<p>^Triggers ar
8e00: 65 20 72 65 6d 6f 76 65 64 20 75 73 69 6e 67 20  e removed using 
8e10: 74 68 65 20 5b 44 52 4f 50 20 54 52 49 47 47 45  the [DROP TRIGGE
8e20: 52 5d 20 73 74 61 74 65 6d 65 6e 74 2e 3c 2f 70  R] statement.</p
8e30: 3e 0a 0a 3c 68 33 3e 53 79 6e 74 61 78 20 52 65  >..<h3>Syntax Re
8e40: 73 74 72 69 63 74 69 6f 6e 73 20 4f 6e 20 55 50  strictions On UP
8e50: 44 41 54 45 2c 20 44 45 4c 45 54 45 2c 20 61 6e  DATE, DELETE, an
8e60: 64 20 49 4e 53 45 52 54 20 53 74 61 74 65 6d 65  d INSERT Stateme
8e70: 6e 74 73 20 57 69 74 68 69 6e 0a 20 20 20 20 54  nts Within.    T
8e80: 72 69 67 67 65 72 73 3c 2f 68 33 3e 0a 0a 3c 70  riggers</h3>..<p
8e90: 3e 5e 54 68 65 20 5b 55 50 44 41 54 45 5d 2c 20  >^The [UPDATE], 
8ea0: 5b 44 45 4c 45 54 45 5d 2c 20 61 6e 64 20 5b 49  [DELETE], and [I
8eb0: 4e 53 45 52 54 5d 0a 73 74 61 74 65 6d 65 6e 74  NSERT].statement
8ec0: 73 20 77 69 74 68 69 6e 20 74 72 69 67 67 65 72  s within trigger
8ed0: 73 20 64 6f 20 6e 6f 74 20 73 75 70 70 6f 72 74  s do not support
8ee0: 0a 74 68 65 20 66 75 6c 6c 20 73 79 6e 74 61 78  .the full syntax
8ef0: 20 66 6f 72 20 5b 55 50 44 41 54 45 5d 2c 20 5b   for [UPDATE], [
8f00: 44 45 4c 45 54 45 5d 2c 20 61 6e 64 20 5b 49 4e  DELETE], and [IN
8f10: 53 45 52 54 5d 20 73 74 61 74 65 6d 65 6e 74 73  SERT] statements
8f20: 2e 20 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  .  The following
8f30: 0a 72 65 73 74 72 69 63 74 69 6f 6e 73 20 61 70  .restrictions ap
8f40: 70 6c 79 3a 3c 2f 70 3e 0a 0a 3c 75 6c 3e 0a 3c  ply:</p>..<ul>.<
8f50: 6c 69 3e 3c 70 3e 0a 20 20 5e 28 54 68 65 20 6e  li><p>.  ^(The n
8f60: 61 6d 65 20 6f 66 20 74 68 65 20 74 61 62 6c 65  ame of the table
8f70: 20 74 6f 20 62 65 20 6d 6f 64 69 66 69 65 64 20   to be modified 
8f80: 69 6e 20 61 6e 20 5b 55 50 44 41 54 45 5d 2c 20  in an [UPDATE], 
8f90: 5b 44 45 4c 45 54 45 5d 2c 20 6f 72 20 5b 49 4e  [DELETE], or [IN
8fa0: 53 45 52 54 5d 0a 20 20 73 74 61 74 65 6d 65 6e  SERT].  statemen
8fb0: 74 20 6d 75 73 74 20 62 65 20 61 6e 20 75 6e 71  t must be an unq
8fc0: 75 61 6c 69 66 69 65 64 20 74 61 62 6c 65 20 6e  ualified table n
8fd0: 61 6d 65 2e 20 20 49 6e 20 6f 74 68 65 72 20 77  ame.  In other w
8fe0: 6f 72 64 73 2c 20 6f 6e 65 20 6d 75 73 74 0a 20  ords, one must. 
8ff0: 20 75 73 65 20 6a 75 73 74 20 22 3c 69 3e 74 61   use just "<i>ta
9000: 62 6c 65 6e 61 6d 65 3c 2f 69 3e 22 20 6e 6f 74  blename</i>" not
9010: 20 22 3c 69 3e 64 61 74 61 62 61 73 65 3c 2f 69   "<i>database</i
9020: 3e 3c 62 3e 2e 3c 2f 62 3e 3c 69 3e 74 61 62 6c  ><b>.</b><i>tabl
9030: 65 6e 61 6d 65 3c 2f 69 3e 22 0a 20 20 77 68 65  ename</i>".  whe
9040: 6e 20 73 70 65 63 69 66 79 69 6e 67 20 74 68 65  n specifying the
9050: 20 74 61 62 6c 65 2e 29 5e 20 20 5e 54 68 65 20   table.)^  ^The 
9060: 74 61 62 6c 65 20 74 6f 20 62 65 20 6d 6f 64 69  table to be modi
9070: 66 69 65 64 20 6d 75 73 74 20 65 78 69 73 74 20  fied must exist 
9080: 69 6e 20 74 68 65 0a 20 20 73 61 6d 65 20 64 61  in the.  same da
9090: 74 61 62 61 73 65 20 61 73 20 74 68 65 20 74 61  tabase as the ta
90a0: 62 6c 65 20 6f 72 20 76 69 65 77 20 74 6f 20 77  ble or view to w
90b0: 68 69 63 68 20 74 68 65 20 74 72 69 67 67 65 72  hich the trigger
90c0: 20 69 73 20 61 74 74 61 63 68 65 64 2e 0a 20 20   is attached..  
90d0: 3c 2f 70 3e 3c 2f 6c 69 3e 0a 0a 3c 6c 69 3e 3c  </p></li>..<li><
90e0: 70 3e 0a 20 20 5e 54 68 65 20 22 49 4e 53 45 52  p>.  ^The "INSER
90f0: 54 20 49 4e 54 4f 20 3c 69 3e 74 61 62 6c 65 3c  T INTO <i>table<
9100: 2f 69 3e 20 44 45 46 41 55 4c 54 20 56 41 4c 55  /i> DEFAULT VALU
9110: 45 53 22 20 66 6f 72 6d 20 6f 66 20 74 68 65 20  ES" form of the 
9120: 5b 49 4e 53 45 52 54 5d 20 73 74 61 74 65 6d 65  [INSERT] stateme
9130: 6e 74 0a 20 20 69 73 20 6e 6f 74 20 73 75 70 70  nt.  is not supp
9140: 6f 72 74 65 64 2e 0a 20 20 3c 2f 70 3e 3c 2f 6c  orted..  </p></l
9150: 69 3e 0a 0a 3c 6c 69 3e 3c 70 3e 0a 20 20 5e 54  i>..<li><p>.  ^T
9160: 68 65 20 49 4e 44 45 58 45 44 20 42 59 20 61 6e  he INDEXED BY an
9170: 64 20 4e 4f 54 20 49 4e 44 45 58 45 44 20 63 6c  d NOT INDEXED cl
9180: 61 75 73 65 73 20 61 72 65 20 6e 6f 74 20 73 75  auses are not su
9190: 70 70 6f 72 74 65 64 20 66 6f 72 20 5b 55 50 44  pported for [UPD
91a0: 41 54 45 5d 20 61 6e 64 0a 20 20 5b 44 45 4c 45  ATE] and.  [DELE
91b0: 54 45 5d 20 73 74 61 74 65 6d 65 6e 74 73 2e 0a  TE] statements..
91c0: 20 20 3c 2f 70 3e 3c 2f 6c 69 3e 0a 0a 3c 6c 69    </p></li>..<li
91d0: 3e 3c 70 3e 0a 20 20 5e 28 54 68 65 20 4f 52 44  ><p>.  ^(The ORD
91e0: 45 52 20 42 59 20 61 6e 64 20 4c 49 4d 49 54 20  ER BY and LIMIT 
91f0: 63 6c 61 75 73 65 73 20 6f 6e 20 5b 55 50 44 41  clauses on [UPDA
9200: 54 45 5d 20 61 6e 64 20 5b 44 45 4c 45 54 45 5d  TE] and [DELETE]
9210: 20 73 74 61 74 65 6d 65 6e 74 73 20 61 72 65 20   statements are 
9220: 6e 6f 74 0a 20 20 73 75 70 70 6f 72 74 65 64 2e  not.  supported.
9230: 20 20 4f 52 44 45 52 20 42 59 20 61 6e 64 20 4c    ORDER BY and L
9240: 49 4d 49 54 20 61 72 65 20 6e 6f 74 20 6e 6f 72  IMIT are not nor
9250: 6d 61 6c 6c 79 20 73 75 70 70 6f 72 74 65 64 20  mally supported 
9260: 66 6f 72 20 5b 55 50 44 41 54 45 5d 20 6f 72 0a  for [UPDATE] or.
9270: 20 20 5b 44 45 4c 45 54 45 5d 20 69 6e 20 61 6e    [DELETE] in an
9280: 79 20 63 6f 6e 74 65 78 74 20 62 75 74 20 63 61  y context but ca
9290: 6e 20 62 65 20 65 6e 61 62 6c 65 64 20 66 6f 72  n be enabled for
92a0: 20 74 6f 70 2d 6c 65 76 65 6c 20 73 74 61 74 65   top-level state
92b0: 6d 65 6e 74 73 0a 20 20 75 73 69 6e 67 20 74 68  ments.  using th
92c0: 65 20 5b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  e [SQLITE_ENABLE
92d0: 5f 55 50 44 41 54 45 5f 44 45 4c 45 54 45 5f 4c  _UPDATE_DELETE_L
92e0: 49 4d 49 54 5d 20 63 6f 6d 70 69 6c 65 2d 74 69  IMIT] compile-ti
92f0: 6d 65 20 6f 70 74 69 6f 6e 2e 20 20 48 6f 77 65  me option.  Howe
9300: 76 65 72 2c 0a 20 20 74 68 61 74 20 63 6f 6d 70  ver,.  that comp
9310: 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20  ile-time option 
9320: 6f 6e 6c 79 20 61 70 70 6c 69 65 73 20 74 6f 20  only applies to 
9330: 74 6f 70 2d 6c 65 76 65 6c 20 5b 55 50 44 41 54  top-level [UPDAT
9340: 45 5d 20 61 6e 64 20 5b 44 45 4c 45 54 45 5d 0a  E] and [DELETE].
9350: 20 20 73 74 61 74 65 6d 65 6e 74 73 2c 20 6e 6f    statements, no
9360: 74 20 5b 55 50 44 41 54 45 5d 20 61 6e 64 20 5b  t [UPDATE] and [
9370: 44 45 4c 45 54 45 5d 20 73 74 61 74 65 6d 65 6e  DELETE] statemen
9380: 74 73 20 77 69 74 68 69 6e 20 74 72 69 67 67 65  ts within trigge
9390: 72 73 2e 29 5e 0a 20 20 3c 2f 70 3e 3c 2f 6c 69  rs.)^.  </p></li
93a0: 3e 0a 3c 2f 75 6c 3e 0a 0a 3c 74 63 6c 3e 68 64  >.</ul>..<tcl>hd
93b0: 5f 66 72 61 67 6d 65 6e 74 20 69 6e 73 74 65 61  _fragment instea
93c0: 64 5f 6f 66 5f 74 72 69 67 67 65 72 20 7b 49 4e  d_of_trigger {IN
93d0: 53 54 45 41 44 20 4f 46 7d 20 7b 49 4e 53 54 45  STEAD OF} {INSTE
93e0: 41 44 20 4f 46 20 74 72 69 67 67 65 72 7d 3c 2f  AD OF trigger}</
93f0: 74 63 6c 3e 0a 3c 68 33 3e 49 4e 53 54 45 41 44  tcl>.<h3>INSTEAD
9400: 20 4f 46 20 74 72 69 67 67 65 72 3c 2f 68 33 3e   OF trigger</h3>
9410: 0a 0a 3c 70 3e 5e 54 72 69 67 67 65 72 73 20 6d  ..<p>^Triggers m
9420: 61 79 20 62 65 20 63 72 65 61 74 65 64 20 6f 6e  ay be created on
9430: 20 5b 76 69 65 77 73 5d 2c 20 61 73 20 77 65 6c   [views], as wel
9440: 6c 20 61 73 20 6f 72 64 69 6e 61 72 79 20 74 61  l as ordinary ta
9450: 62 6c 65 73 2c 20 62 79 0a 73 70 65 63 69 66 79  bles, by.specify
9460: 69 6e 67 20 49 4e 53 54 45 41 44 20 4f 46 20 69  ing INSTEAD OF i
9470: 6e 20 74 68 65 20 43 52 45 41 54 45 20 54 52 49  n the CREATE TRI
9480: 47 47 45 52 20 73 74 61 74 65 6d 65 6e 74 2e 20  GGER statement. 
9490: 0a 5e 49 66 20 6f 6e 65 20 6f 72 20 6d 6f 72 65  .^If one or more
94a0: 20 4f 4e 20 49 4e 53 45 52 54 2c 20 4f 4e 20 44   ON INSERT, ON D
94b0: 45 4c 45 54 45 0a 6f 72 20 4f 4e 20 55 50 44 41  ELETE.or ON UPDA
94c0: 54 45 20 74 72 69 67 67 65 72 73 20 61 72 65 20  TE triggers are 
94d0: 64 65 66 69 6e 65 64 20 6f 6e 20 61 20 76 69 65  defined on a vie
94e0: 77 2c 20 74 68 65 6e 20 69 74 20 69 73 20 6e 6f  w, then it is no
94f0: 74 20 61 6e 0a 65 72 72 6f 72 20 74 6f 20 65 78  t an.error to ex
9500: 65 63 75 74 65 20 61 6e 20 49 4e 53 45 52 54 2c  ecute an INSERT,
9510: 20 44 45 4c 45 54 45 20 6f 72 20 55 50 44 41 54   DELETE or UPDAT
9520: 45 20 73 74 61 74 65 6d 65 6e 74 20 6f 6e 20 74  E statement on t
9530: 68 65 20 76 69 65 77 2c 20 0a 72 65 73 70 65 63  he view, .respec
9540: 74 69 76 65 6c 79 2e 20 20 5e 49 6e 73 74 65 61  tively.  ^Instea
9550: 64 2c 0a 65 78 65 63 75 74 69 6e 67 20 61 6e 20  d,.executing an 
9560: 49 4e 53 45 52 54 2c 20 44 45 4c 45 54 45 20 6f  INSERT, DELETE o
9570: 72 20 55 50 44 41 54 45 20 6f 6e 20 74 68 65 20  r UPDATE on the 
9580: 76 69 65 77 20 63 61 75 73 65 73 20 74 68 65 20  view causes the 
9590: 61 73 73 6f 63 69 61 74 65 64 0a 74 72 69 67 67  associated.trigg
95a0: 65 72 73 20 74 6f 20 66 69 72 65 2e 20 5e 54 68  ers to fire. ^Th
95b0: 65 20 72 65 61 6c 20 74 61 62 6c 65 73 20 75 6e  e real tables un
95c0: 64 65 72 6c 79 69 6e 67 20 74 68 65 20 76 69 65  derlying the vie
95d0: 77 20 61 72 65 20 6e 6f 74 20 6d 6f 64 69 66 69  w are not modifi
95e0: 65 64 0a 28 65 78 63 65 70 74 20 70 6f 73 73 69  ed.(except possi
95f0: 62 6c 79 20 65 78 70 6c 69 63 69 74 6c 79 2c 20  bly explicitly, 
9600: 62 79 20 61 20 74 72 69 67 67 65 72 20 70 72 6f  by a trigger pro
9610: 67 72 61 6d 29 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e  gram).</p>..<p>^
9620: 4e 6f 74 65 20 74 68 61 74 20 74 68 65 20 5b 73  Note that the [s
9630: 71 6c 69 74 65 33 5f 63 68 61 6e 67 65 73 28 29  qlite3_changes()
9640: 5d 20 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f 74  ] and [sqlite3_t
9650: 6f 74 61 6c 5f 63 68 61 6e 67 65 73 28 29 5d 20  otal_changes()] 
9660: 69 6e 74 65 72 66 61 63 65 73 0a 64 6f 20 6e 6f  interfaces.do no
9670: 74 20 63 6f 75 6e 74 20 49 4e 53 54 45 41 44 20  t count INSTEAD 
9680: 4f 46 20 74 72 69 67 67 65 72 20 66 69 72 69 6e  OF trigger firin
9690: 67 73 2c 20 62 75 74 20 74 68 65 0a 5b 63 6f 75  gs, but the.[cou
96a0: 6e 74 5f 63 68 61 6e 67 65 73 20 70 72 61 67 6d  nt_changes pragm
96b0: 61 5d 20 64 6f 65 73 20 63 6f 75 6e 74 20 49 4e  a] does count IN
96c0: 53 54 45 41 44 20 4f 46 20 74 72 69 67 67 65 72  STEAD OF trigger
96d0: 20 66 69 72 69 6e 67 2e 3c 2f 70 3e 0a 0a 3c 68   firing.</p>..<h
96e0: 33 3e 45 78 61 6d 70 6c 65 73 3c 2f 68 33 3e 0a  3>Examples</h3>.
96f0: 0a 3c 70 3e 5e 28 41 73 73 75 6d 69 6e 67 20 74  .<p>^(Assuming t
9700: 68 61 74 20 63 75 73 74 6f 6d 65 72 20 72 65 63  hat customer rec
9710: 6f 72 64 73 20 61 72 65 20 73 74 6f 72 65 64 20  ords are stored 
9720: 69 6e 20 74 68 65 20 22 63 75 73 74 6f 6d 65 72  in the "customer
9730: 73 22 20 74 61 62 6c 65 2c 20 61 6e 64 0a 74 68  s" table, and.th
9740: 61 74 20 6f 72 64 65 72 20 72 65 63 6f 72 64 73  at order records
9750: 20 61 72 65 20 73 74 6f 72 65 64 20 69 6e 20 74   are stored in t
9760: 68 65 20 22 6f 72 64 65 72 73 22 20 74 61 62 6c  he "orders" tabl
9770: 65 2c 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  e, the following
9780: 20 74 72 69 67 67 65 72 0a 65 6e 73 75 72 65 73   trigger.ensures
9790: 20 74 68 61 74 20 61 6c 6c 20 61 73 73 6f 63 69   that all associ
97a0: 61 74 65 64 20 6f 72 64 65 72 73 20 61 72 65 20  ated orders are 
97b0: 72 65 64 69 72 65 63 74 65 64 20 77 68 65 6e 20  redirected when 
97c0: 61 20 63 75 73 74 6f 6d 65 72 20 63 68 61 6e 67  a customer chang
97d0: 65 73 0a 68 69 73 20 6f 72 20 68 65 72 20 61 64  es.his or her ad
97e0: 64 72 65 73 73 3a 3c 2f 70 3e 0a 0a 3c 74 63 6c  dress:</p>..<tcl
97f0: 3e 45 78 61 6d 70 6c 65 20 7b 0a 43 52 45 41 54  >Example {.CREAT
9800: 45 20 54 52 49 47 47 45 52 20 75 70 64 61 74 65  E TRIGGER update
9810: 5f 63 75 73 74 6f 6d 65 72 5f 61 64 64 72 65 73  _customer_addres
9820: 73 20 55 50 44 41 54 45 20 4f 46 20 61 64 64 72  s UPDATE OF addr
9830: 65 73 73 20 4f 4e 20 63 75 73 74 6f 6d 65 72 73  ess ON customers
9840: 20 0a 20 20 42 45 47 49 4e 0a 20 20 20 20 55 50   .  BEGIN.    UP
9850: 44 41 54 45 20 6f 72 64 65 72 73 20 53 45 54 20  DATE orders SET 
9860: 61 64 64 72 65 73 73 20 3d 20 6e 65 77 2e 61 64  address = new.ad
9870: 64 72 65 73 73 20 57 48 45 52 45 20 63 75 73 74  dress WHERE cust
9880: 6f 6d 65 72 5f 6e 61 6d 65 20 3d 20 6f 6c 64 2e  omer_name = old.
9890: 6e 61 6d 65 3b 0a 20 20 45 4e 44 3b 0a 7d 3c 2f  name;.  END;.}</
98a0: 74 63 6c 3e 0a 0a 3c 70 3e 57 69 74 68 20 74 68  tcl>..<p>With th
98b0: 69 73 20 74 72 69 67 67 65 72 20 69 6e 73 74 61  is trigger insta
98c0: 6c 6c 65 64 2c 20 65 78 65 63 75 74 69 6e 67 20  lled, executing 
98d0: 74 68 65 20 73 74 61 74 65 6d 65 6e 74 3a 3c 2f  the statement:</
98e0: 70 3e 0a 0a 3c 74 63 6c 3e 45 78 61 6d 70 6c 65  p>..<tcl>Example
98f0: 20 7b 0a 55 50 44 41 54 45 20 63 75 73 74 6f 6d   {.UPDATE custom
9900: 65 72 73 20 53 45 54 20 61 64 64 72 65 73 73 20  ers SET address 
9910: 3d 20 27 31 20 4d 61 69 6e 20 53 74 2e 27 20 57  = '1 Main St.' W
9920: 48 45 52 45 20 6e 61 6d 65 20 3d 20 27 4a 61 63  HERE name = 'Jac
9930: 6b 20 4a 6f 6e 65 73 27 3b 0a 7d 3c 2f 74 63 6c  k Jones';.}</tcl
9940: 3e 0a 0a 3c 70 3e 63 61 75 73 65 73 20 74 68 65  >..<p>causes the
9950: 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 6f 20 62 65   following to be
9960: 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 65   automatically e
9970: 78 65 63 75 74 65 64 3a 3c 2f 70 3e 0a 0a 3c 74  xecuted:</p>..<t
9980: 63 6c 3e 45 78 61 6d 70 6c 65 20 7b 0a 55 50 44  cl>Example {.UPD
9990: 41 54 45 20 6f 72 64 65 72 73 20 53 45 54 20 61  ATE orders SET a
99a0: 64 64 72 65 73 73 20 3d 20 27 31 20 4d 61 69 6e  ddress = '1 Main
99b0: 20 53 74 2e 27 20 57 48 45 52 45 20 63 75 73 74   St.' WHERE cust
99c0: 6f 6d 65 72 5f 6e 61 6d 65 20 3d 20 27 4a 61 63  omer_name = 'Jac
99d0: 6b 20 4a 6f 6e 65 73 27 3b 0a 7d 3c 2f 74 63 6c  k Jones';.}</tcl
99e0: 3e 29 5e 0a 0a 3c 74 63 6c 3e 68 64 5f 66 72 61  >)^..<tcl>hd_fra
99f0: 67 6d 65 6e 74 20 75 6e 64 65 66 5f 62 65 66 6f  gment undef_befo
9a00: 72 65 20 7b 75 6e 64 65 66 69 6e 65 64 20 42 45  re {undefined BE
9a10: 46 4f 52 45 20 74 72 69 67 67 65 72 20 62 65 68  FORE trigger beh
9a20: 61 76 69 6f 72 7d 3c 2f 74 63 6c 3e 0a 3c 68 33  avior}</tcl>.<h3
9a30: 3e 43 61 75 74 69 6f 6e 73 20 4f 6e 20 54 68 65  >Cautions On The
9a40: 20 55 73 65 20 4f 66 20 42 45 46 4f 52 45 20 74   Use Of BEFORE t
9a50: 72 69 67 67 65 72 73 3c 2f 68 33 3e 0a 0a 3c 70  riggers</h3>..<p
9a60: 3e 49 66 20 61 20 42 45 46 4f 52 45 20 55 50 44  >If a BEFORE UPD
9a70: 41 54 45 20 6f 72 20 42 45 46 4f 52 45 20 44 45  ATE or BEFORE DE
9a80: 4c 45 54 45 20 74 72 69 67 67 65 72 20 6d 6f 64  LETE trigger mod
9a90: 69 66 69 65 73 20 6f 72 20 64 65 6c 65 74 65 73  ifies or deletes
9aa0: 20 61 20 72 6f 77 0a 74 68 61 74 20 77 61 73 20   a row.that was 
9ab0: 74 6f 20 68 61 76 65 20 62 65 65 6e 20 75 70 64  to have been upd
9ac0: 61 74 65 64 20 6f 72 20 64 65 6c 65 74 65 64 2c  ated or deleted,
9ad0: 20 74 68 65 6e 20 74 68 65 20 72 65 73 75 6c 74   then the result
9ae0: 20 6f 66 20 74 68 65 20 73 75 62 73 65 71 75 65   of the subseque
9af0: 6e 74 0a 75 70 64 61 74 65 20 6f 72 20 64 65 6c  nt.update or del
9b00: 65 74 65 20 6f 70 65 72 61 74 69 6f 6e 20 69 73  ete operation is
9b10: 20 75 6e 64 65 66 69 6e 65 64 2e 20 20 46 75 72   undefined.  Fur
9b20: 74 68 65 72 6d 6f 72 65 2c 20 69 66 20 61 20 42  thermore, if a B
9b30: 45 46 4f 52 45 20 74 72 69 67 67 65 72 0a 6d 6f  EFORE trigger.mo
9b40: 64 69 66 69 65 73 20 6f 72 20 64 65 6c 65 74 65  difies or delete
9b50: 73 20 61 20 72 6f 77 2c 20 74 68 65 6e 20 69 74  s a row, then it
9b60: 20 69 73 20 75 6e 64 65 66 69 6e 65 64 20 77 68   is undefined wh
9b70: 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 41 46 54  ether or not AFT
9b80: 45 52 20 74 72 69 67 67 65 72 73 0a 74 68 61 74  ER triggers.that
9b90: 20 77 6f 75 6c 64 20 68 61 76 65 20 6f 74 68 65   would have othe
9ba0: 72 77 69 73 65 20 72 75 6e 20 6f 6e 20 74 68 6f  rwise run on tho
9bb0: 73 65 20 72 6f 77 73 20 77 69 6c 6c 20 69 6e 20  se rows will in 
9bc0: 66 61 63 74 20 72 75 6e 2e 0a 3c 2f 70 3e 0a 0a  fact run..</p>..
9bd0: 3c 70 3e 54 68 65 20 76 61 6c 75 65 20 6f 66 20  <p>The value of 
9be0: 4e 45 57 2e 72 6f 77 69 64 20 69 73 20 75 6e 64  NEW.rowid is und
9bf0: 65 66 69 6e 65 64 20 69 6e 20 61 20 42 45 46 4f  efined in a BEFO
9c00: 52 45 20 49 4e 53 45 52 54 20 74 72 69 67 67 65  RE INSERT trigge
9c10: 72 20 69 6e 20 77 68 69 63 68 0a 74 68 65 20 72  r in which.the r
9c20: 6f 77 69 64 20 69 73 20 6e 6f 74 20 65 78 70 6c  owid is not expl
9c30: 69 63 69 74 6c 79 20 73 65 74 20 74 6f 20 61 6e  icitly set to an
9c40: 20 69 6e 74 65 67 65 72 2e 3c 2f 70 3e 0a 0a 3c   integer.</p>..<
9c50: 70 3e 42 65 63 61 75 73 65 20 6f 66 20 74 68 65  p>Because of the
9c60: 20 62 65 68 61 76 69 6f 72 73 20 64 65 73 63 72   behaviors descr
9c70: 69 62 65 64 20 61 62 6f 76 65 2c 20 70 72 6f 67  ibed above, prog
9c80: 72 61 6d 6d 65 72 73 20 61 72 65 20 65 6e 63 6f  rammers are enco
9c90: 75 72 61 67 65 64 20 74 6f 0a 70 72 65 66 65 72  uraged to.prefer
9ca0: 20 41 46 54 45 52 20 74 72 69 67 67 65 72 73 20   AFTER triggers 
9cb0: 6f 76 65 72 20 42 45 46 4f 52 45 20 74 72 69 67  over BEFORE trig
9cc0: 67 65 72 73 2e 3c 2f 70 3e 0a 0a 3c 68 33 3e 54  gers.</p>..<h3>T
9cd0: 68 65 20 52 41 49 53 45 28 29 20 66 75 6e 63 74  he RAISE() funct
9ce0: 69 6f 6e 3c 2f 68 33 3e 0a 0a 3c 70 3e 5e 28 41  ion</h3>..<p>^(A
9cf0: 20 73 70 65 63 69 61 6c 20 53 51 4c 20 66 75 6e   special SQL fun
9d00: 63 74 69 6f 6e 20 52 41 49 53 45 28 29 20 6d 61  ction RAISE() ma
9d10: 79 20 62 65 20 75 73 65 64 20 77 69 74 68 69 6e  y be used within
9d20: 20 61 20 74 72 69 67 67 65 72 2d 70 72 6f 67 72   a trigger-progr
9d30: 61 6d 2c 29 5e 0a 77 69 74 68 20 74 68 65 20 66  am,)^.with the f
9d40: 6f 6c 6c 6f 77 69 6e 67 20 73 79 6e 74 61 78 3c  ollowing syntax<
9d50: 2f 70 3e 20 0a 0a 3c 74 63 6c 3e 42 75 62 62 6c  /p> ..<tcl>Bubbl
9d60: 65 44 69 61 67 72 61 6d 20 72 61 69 73 65 2d 66  eDiagram raise-f
9d70: 75 6e 63 74 69 6f 6e 3c 2f 74 63 6c 3e 0a 0a 3c  unction</tcl>..<
9d80: 70 3e 5e 57 68 65 6e 20 6f 6e 65 20 6f 66 20 74  p>^When one of t
9d90: 68 65 20 66 69 72 73 74 20 74 68 72 65 65 20 66  he first three f
9da0: 6f 72 6d 73 20 69 73 20 63 61 6c 6c 65 64 20 64  orms is called d
9db0: 75 72 69 6e 67 20 74 72 69 67 67 65 72 2d 70 72  uring trigger-pr
9dc0: 6f 67 72 61 6d 0a 65 78 65 63 75 74 69 6f 6e 2c  ogram.execution,
9dd0: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 5b   the specified [
9de0: 4f 4e 20 43 4f 4e 46 4c 49 43 54 5d 20 70 72 6f  ON CONFLICT] pro
9df0: 63 65 73 73 69 6e 67 20 69 73 20 70 65 72 66 6f  cessing is perfo
9e00: 72 6d 65 64 0a 28 65 69 74 68 65 72 20 41 42 4f  rmed.(either ABO
9e10: 52 54 2c 20 46 41 49 4c 20 6f 72 20 52 4f 4c 4c  RT, FAIL or ROLL
9e20: 42 41 43 4b 29 20 61 6e 64 20 74 68 65 20 63 75  BACK) and the cu
9e30: 72 72 65 6e 74 20 71 75 65 72 79 20 74 65 72 6d  rrent query term
9e40: 69 6e 61 74 65 73 2e 0a 41 6e 20 65 72 72 6f 72  inates..An error
9e50: 20 63 6f 64 65 20 6f 66 20 5b 53 51 4c 49 54 45   code of [SQLITE
9e60: 5f 43 4f 4e 53 54 52 41 49 4e 54 5d 20 69 73 20  _CONSTRAINT] is 
9e70: 72 65 74 75 72 6e 65 64 20 74 6f 20 74 68 65 20  returned to the 
9e80: 61 70 70 6c 69 63 61 74 69 6f 6e 2c 0a 61 6c 6f  application,.alo
9e90: 6e 67 20 77 69 74 68 20 74 68 65 20 73 70 65 63  ng with the spec
9ea0: 69 66 69 65 64 20 65 72 72 6f 72 20 6d 65 73 73  ified error mess
9eb0: 61 67 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 57 68  age.</p>..<p>^Wh
9ec0: 65 6e 20 52 41 49 53 45 28 49 47 4e 4f 52 45 29  en RAISE(IGNORE)
9ed0: 20 69 73 20 63 61 6c 6c 65 64 2c 20 74 68 65 20   is called, the 
9ee0: 72 65 6d 61 69 6e 64 65 72 20 6f 66 20 74 68 65  remainder of the
9ef0: 20 63 75 72 72 65 6e 74 20 74 72 69 67 67 65 72   current trigger
9f00: 20 70 72 6f 67 72 61 6d 2c 0a 74 68 65 20 73 74   program,.the st
9f10: 61 74 65 6d 65 6e 74 20 74 68 61 74 20 63 61 75  atement that cau
9f20: 73 65 64 20 74 68 65 20 74 72 69 67 67 65 72 20  sed the trigger 
9f30: 70 72 6f 67 72 61 6d 20 74 6f 20 65 78 65 63 75  program to execu
9f40: 74 65 20 61 6e 64 20 61 6e 79 20 73 75 62 73 65  te and any subse
9f50: 71 75 65 6e 74 0a 74 72 69 67 67 65 72 20 70 72  quent.trigger pr
9f60: 6f 67 72 61 6d 73 20 74 68 61 74 20 77 6f 75 6c  ograms that woul
9f70: 64 20 6f 66 20 62 65 65 6e 20 65 78 65 63 75 74  d of been execut
9f80: 65 64 20 61 72 65 20 61 62 61 6e 64 6f 6e 65 64  ed are abandoned
9f90: 2e 20 5e 4e 6f 20 64 61 74 61 62 61 73 65 0a 63  . ^No database.c
9fa0: 68 61 6e 67 65 73 20 61 72 65 20 72 6f 6c 6c 65  hanges are rolle
9fb0: 64 20 62 61 63 6b 2e 20 20 5e 49 66 20 74 68 65  d back.  ^If the
9fc0: 20 73 74 61 74 65 6d 65 6e 74 20 74 68 61 74 20   statement that 
9fd0: 63 61 75 73 65 64 20 74 68 65 20 74 72 69 67 67  caused the trigg
9fe0: 65 72 20 70 72 6f 67 72 61 6d 0a 74 6f 20 65 78  er program.to ex
9ff0: 65 63 75 74 65 20 69 73 20 69 74 73 65 6c 66 20  ecute is itself 
a000: 70 61 72 74 20 6f 66 20 61 20 74 72 69 67 67 65  part of a trigge
a010: 72 20 70 72 6f 67 72 61 6d 2c 20 74 68 65 6e 20  r program, then 
a020: 74 68 61 74 20 74 72 69 67 67 65 72 20 70 72 6f  that trigger pro
a030: 67 72 61 6d 0a 72 65 73 75 6d 65 73 20 65 78 65  gram.resumes exe
a040: 63 75 74 69 6f 6e 20 61 74 20 74 68 65 20 62 65  cution at the be
a050: 67 69 6e 6e 69 6e 67 20 6f 66 20 74 68 65 20 6e  ginning of the n
a060: 65 78 74 20 73 74 65 70 2e 0a 3c 2f 70 3e 0a 0a  ext step..</p>..
a070: 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23  .<tcl>.#########
a080: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a090: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a0a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a0b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a0c0: 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b  ######.Section {
a0d0: 43 52 45 41 54 45 20 56 49 45 57 7d 20 7b 63 72  CREATE VIEW} {cr
a0e0: 65 61 74 65 76 69 65 77 7d 20 7b 7b 43 52 45 41  eateview} {{CREA
a0f0: 54 45 20 56 49 45 57 7d 20 76 69 65 77 20 2a 76  TE VIEW} view *v
a100: 69 65 77 73 7d 0a 0a 42 75 62 62 6c 65 44 69 61  iews}..BubbleDia
a110: 67 72 61 6d 20 63 72 65 61 74 65 2d 76 69 65 77  gram create-view
a120: 2d 73 74 6d 74 20 31 0a 3c 2f 74 63 6c 3e 0a 0a  -stmt 1.</tcl>..
a130: 3c 70 3e 5e 54 68 65 20 43 52 45 41 54 45 20 56  <p>^The CREATE V
a140: 49 45 57 20 63 6f 6d 6d 61 6e 64 20 61 73 73 69  IEW command assi
a150: 67 6e 73 20 61 20 6e 61 6d 65 20 74 6f 20 61 20  gns a name to a 
a160: 70 72 65 2d 70 61 63 6b 61 67 65 64 20 0a 5b 53  pre-packaged .[S
a170: 45 4c 45 43 54 5d 20 73 74 61 74 65 6d 65 6e 74  ELECT] statement
a180: 2e 20 0a 5e 4f 6e 63 65 20 74 68 65 20 76 69 65  . .^Once the vie
a190: 77 20 69 73 20 63 72 65 61 74 65 64 2c 20 69 74  w is created, it
a1a0: 20 63 61 6e 20 62 65 20 75 73 65 64 20 69 6e 20   can be used in 
a1b0: 74 68 65 20 46 52 4f 4d 20 63 6c 61 75 73 65 0a  the FROM clause.
a1c0: 6f 66 20 61 6e 6f 74 68 65 72 20 5b 53 45 4c 45  of another [SELE
a1d0: 43 54 5d 20 69 6e 20 70 6c 61 63 65 20 6f 66 20  CT] in place of 
a1e0: 61 20 74 61 62 6c 65 20 6e 61 6d 65 2e 0a 3c 2f  a table name..</
a1f0: 70 3e 0a 0a 3c 70 3e 5e 49 66 20 74 68 65 20 22  p>..<p>^If the "
a200: 54 45 4d 50 22 20 6f 72 20 22 54 45 4d 50 4f 52  TEMP" or "TEMPOR
a210: 41 52 59 22 20 6b 65 79 77 6f 72 64 20 6f 63 63  ARY" keyword occ
a220: 75 72 73 20 69 6e 20 62 65 74 77 65 65 6e 20 22  urs in between "
a230: 43 52 45 41 54 45 22 0a 61 6e 64 20 22 56 49 45  CREATE".and "VIE
a240: 57 22 20 74 68 65 6e 20 74 68 65 20 76 69 65 77  W" then the view
a250: 20 74 68 61 74 20 69 73 20 63 72 65 61 74 65 64   that is created
a260: 20 69 73 20 6f 6e 6c 79 20 76 69 73 69 62 6c 65   is only visible
a270: 20 74 6f 20 74 68 65 0a 70 72 6f 63 65 73 73 20   to the.process 
a280: 74 68 61 74 20 6f 70 65 6e 65 64 20 74 68 65 20  that opened the 
a290: 64 61 74 61 62 61 73 65 20 61 6e 64 20 69 73 20  database and is 
a2a0: 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 64 65  automatically de
a2b0: 6c 65 74 65 64 20 77 68 65 6e 0a 74 68 65 20 64  leted when.the d
a2c0: 61 74 61 62 61 73 65 20 69 73 20 63 6c 6f 73 65  atabase is close
a2d0: 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 20 5e 49 66 20  d.</p>..<p> ^If 
a2e0: 61 20 26 6c 74 3b 64 61 74 61 62 61 73 65 2d 6e  a &lt;database-n
a2f0: 61 6d 65 26 67 74 3b 20 69 73 20 73 70 65 63 69  ame&gt; is speci
a300: 66 69 65 64 2c 20 74 68 65 6e 20 74 68 65 20 76  fied, then the v
a310: 69 65 77 20 69 73 20 63 72 65 61 74 65 64 20 69  iew is created i
a320: 6e 20 0a 74 68 65 20 6e 61 6d 65 64 20 64 61 74  n .the named dat
a330: 61 62 61 73 65 2e 20 5e 49 74 20 69 73 20 61 6e  abase. ^It is an
a340: 20 65 72 72 6f 72 20 74 6f 20 73 70 65 63 69 66   error to specif
a350: 79 20 62 6f 74 68 20 61 20 26 6c 74 3b 64 61 74  y both a &lt;dat
a360: 61 62 61 73 65 2d 6e 61 6d 65 26 67 74 3b 0a 61  abase-name&gt;.a
a370: 6e 64 20 74 68 65 20 54 45 4d 50 20 6b 65 79 77  nd the TEMP keyw
a380: 6f 72 64 20 6f 6e 20 61 20 56 49 45 57 2c 20 75  ord on a VIEW, u
a390: 6e 6c 65 73 73 20 74 68 65 20 26 6c 74 3b 64 61  nless the &lt;da
a3a0: 74 61 62 61 73 65 2d 6e 61 6d 65 26 67 74 3b 20  tabase-name&gt; 
a3b0: 69 73 20 22 74 65 6d 70 22 2e 0a 5e 49 66 20 6e  is "temp"..^If n
a3c0: 6f 20 64 61 74 61 62 61 73 65 20 6e 61 6d 65 20  o database name 
a3d0: 69 73 20 73 70 65 63 69 66 69 65 64 2c 20 61 6e  is specified, an
a3e0: 64 20 74 68 65 20 54 45 4d 50 20 6b 65 79 77 6f  d the TEMP keywo
a3f0: 72 64 20 69 73 20 6e 6f 74 20 70 72 65 73 65 6e  rd is not presen
a400: 74 2c 0a 74 68 65 20 56 49 45 57 20 69 73 20 63  t,.the VIEW is c
a410: 72 65 61 74 65 64 20 69 6e 20 74 68 65 20 6d 61  reated in the ma
a420: 69 6e 20 64 61 74 61 62 61 73 65 2e 3c 2f 70 3e  in database.</p>
a430: 0a 0a 3c 70 3e 5e 59 6f 75 20 63 61 6e 6e 6f 74  ..<p>^You cannot
a440: 20 5b 44 45 4c 45 54 45 5d 2c 20 5b 49 4e 53 45   [DELETE], [INSE
a450: 52 54 5d 2c 20 6f 72 20 5b 55 50 44 41 54 45 5d  RT], or [UPDATE]
a460: 20 61 20 76 69 65 77 2e 20 20 5e 56 69 65 77 73   a view.  ^Views
a470: 20 61 72 65 20 72 65 61 64 2d 6f 6e 6c 79 20 0a   are read-only .
a480: 69 6e 20 53 51 4c 69 74 65 2e 20 20 5e 48 6f 77  in SQLite.  ^How
a490: 65 76 65 72 2c 20 69 6e 20 6d 61 6e 79 20 63 61  ever, in many ca
a4a0: 73 65 73 20 79 6f 75 20 63 61 6e 20 75 73 65 20  ses you can use 
a4b0: 61 6e 0a 5b 49 4e 53 54 45 41 44 20 4f 46 20 74  an.[INSTEAD OF t
a4c0: 72 69 67 67 65 72 5d 20 6f 6e 20 74 68 65 20 76  rigger] on the v
a4d0: 69 65 77 20 74 6f 20 61 63 63 6f 6d 70 6c 69 73  iew to accomplis
a4e0: 68 20 0a 74 68 65 20 73 61 6d 65 20 74 68 69 6e  h .the same thin
a4f0: 67 2e 20 20 5e 56 69 65 77 73 20 61 72 65 20 72  g.  ^Views are r
a500: 65 6d 6f 76 65 64 20 0a 77 69 74 68 20 74 68 65  emoved .with the
a510: 20 5b 44 52 4f 50 20 56 49 45 57 5d 20 63 6f 6d   [DROP VIEW] com
a520: 6d 61 6e 64 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e  mand.</p>..<tcl>
a530: 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  .###############
a540: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a550: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a560: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a570: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a  ###############.
a580: 53 65 63 74 69 6f 6e 20 7b 43 52 45 41 54 45 20  Section {CREATE 
a590: 56 49 52 54 55 41 4c 20 54 41 42 4c 45 7d 20 7b  VIRTUAL TABLE} {
a5a0: 63 72 65 61 74 65 76 74 61 62 7d 20 7b 7b 43 52  createvtab} {{CR
a5b0: 45 41 54 45 20 56 49 52 54 55 41 4c 20 54 41 42  EATE VIRTUAL TAB
a5c0: 4c 45 7d 7d 0a 0a 42 75 62 62 6c 65 44 69 61 67  LE}}..BubbleDiag
a5d0: 72 61 6d 20 63 72 65 61 74 65 2d 76 69 72 74 75  ram create-virtu
a5e0: 61 6c 2d 74 61 62 6c 65 2d 73 74 6d 74 20 31 0a  al-table-stmt 1.
a5f0: 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 41 20 5b 76 69  </tcl>..<p>A [vi
a600: 72 74 75 61 6c 20 74 61 62 6c 65 5d 20 69 73 20  rtual table] is 
a610: 61 6e 20 69 6e 74 65 72 66 61 63 65 20 74 6f 20  an interface to 
a620: 61 6e 20 65 78 74 65 72 6e 61 6c 20 73 74 6f 72  an external stor
a630: 61 67 65 20 6f 72 20 63 6f 6d 70 75 74 61 74 69  age or computati
a640: 6f 6e 0a 65 6e 67 69 6e 65 20 74 68 61 74 20 61  on.engine that a
a650: 70 70 65 61 72 73 20 74 6f 20 62 65 20 61 20 74  ppears to be a t
a660: 61 62 6c 65 20 62 75 74 20 64 6f 65 73 20 6e 6f  able but does no
a670: 74 20 61 63 74 75 61 6c 6c 79 20 73 74 6f 72 65  t actually store
a680: 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 0a 69 6e 20   information.in 
a690: 74 68 65 20 64 61 74 61 62 61 73 65 20 66 69 6c  the database fil
a6a0: 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 6e 20 67 65  e.</p>..<p>In ge
a6b0: 6e 65 72 61 6c 2c 20 79 6f 75 20 63 61 6e 20 64  neral, you can d
a6c0: 6f 20 61 6e 79 74 68 69 6e 67 20 77 69 74 68 20  o anything with 
a6d0: 61 20 5b 76 69 72 74 75 61 6c 20 74 61 62 6c 65  a [virtual table
a6e0: 5d 20 74 68 61 74 20 63 61 6e 20 62 65 20 64 6f  ] that can be do
a6f0: 6e 65 0a 77 69 74 68 20 61 6e 20 6f 72 64 69 6e  ne.with an ordin
a700: 61 72 79 20 74 61 62 6c 65 2c 20 65 78 63 65 70  ary table, excep
a710: 74 20 74 68 61 74 20 5e 79 6f 75 20 63 61 6e 6e  t that ^you cann
a720: 6f 74 20 63 72 65 61 74 65 20 69 6e 64 69 63 65  ot create indice
a730: 73 20 6f 72 20 74 72 69 67 67 65 72 73 20 6f 6e  s or triggers on
a740: 20 61 0a 76 69 72 74 75 61 6c 20 74 61 62 6c 65   a.virtual table
a750: 2e 20 20 5e 53 6f 6d 65 20 76 69 72 74 75 61 6c  .  ^Some virtual
a760: 20 74 61 62 6c 65 20 69 6d 70 6c 65 6d 65 6e 74   table implement
a770: 61 74 69 6f 6e 73 20 6d 69 67 68 74 20 69 6d 70  ations might imp
a780: 6f 73 65 20 61 64 64 69 74 69 6f 6e 61 6c 0a 72  ose additional.r
a790: 65 73 74 72 69 63 74 69 6f 6e 73 2e 20 20 46 6f  estrictions.  Fo
a7a0: 72 20 65 78 61 6d 70 6c 65 2c 20 6d 61 6e 79 20  r example, many 
a7b0: 76 69 72 74 75 61 6c 20 74 61 62 6c 65 73 20 61  virtual tables a
a7c0: 72 65 20 72 65 61 64 2d 6f 6e 6c 79 2e 3c 2f 70  re read-only.</p
a7d0: 3e 0a 0a 3c 70 3e 54 68 65 20 26 6c 74 3b 6d 6f  >..<p>The &lt;mo
a7e0: 64 75 6c 65 2d 6e 61 6d 65 26 67 74 3b 20 69 73  dule-name&gt; is
a7f0: 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 61 6e 20   the name of an 
a800: 6f 62 6a 65 63 74 20 74 68 61 74 20 69 6d 70 6c  object that impl
a810: 65 6d 65 6e 74 73 0a 74 68 65 20 76 69 72 74 75  ements.the virtu
a820: 61 6c 20 74 61 62 6c 65 2e 20 20 5e 54 68 65 20  al table.  ^The 
a830: 26 6c 74 3b 6d 6f 64 75 6c 65 2d 6e 61 6d 65 26  &lt;module-name&
a840: 67 74 3b 20 6d 75 73 74 20 62 65 20 72 65 67 69  gt; must be regi
a850: 73 74 65 72 65 64 20 77 69 74 68 0a 74 68 65 20  stered with.the 
a860: 53 51 4c 69 74 65 20 64 61 74 61 62 61 73 65 20  SQLite database 
a870: 63 6f 6e 6e 65 63 74 69 6f 6e 20 75 73 69 6e 67  connection using
a880: 0a 5b 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65  .[sqlite3_create
a890: 5f 6d 6f 64 75 6c 65 28 29 5d 20 6f 72 20 5b 73  _module()] or [s
a8a0: 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 6d 6f  qlite3_create_mo
a8b0: 64 75 6c 65 5f 76 32 28 29 5d 0a 70 72 69 6f 72  dule_v2()].prior
a8c0: 20 74 6f 20 69 73 73 75 69 6e 67 20 74 68 65 20   to issuing the 
a8d0: 43 52 45 41 54 45 20 56 49 52 54 55 41 4c 20 54  CREATE VIRTUAL T
a8e0: 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 2e 0a  ABLE statement..
a8f0: 5e 54 68 65 20 6d 6f 64 75 6c 65 20 74 61 6b 65  ^The module take
a900: 73 20 7a 65 72 6f 20 6f 72 20 6d 6f 72 65 20 63  s zero or more c
a910: 6f 6d 6d 61 2d 73 65 70 61 72 61 74 65 64 20 61  omma-separated a
a920: 72 67 75 6d 65 6e 74 73 2e 0a 5e 54 68 65 20 61  rguments..^The a
a930: 72 67 75 6d 65 6e 74 73 20 63 61 6e 20 62 65 20  rguments can be 
a940: 6a 75 73 74 20 61 62 6f 75 74 20 61 6e 79 20 74  just about any t
a950: 65 78 74 20 61 73 20 6c 6f 6e 67 20 61 73 20 69  ext as long as i
a960: 74 20 68 61 73 20 62 61 6c 61 6e 63 65 64 0a 70  t has balanced.p
a970: 61 72 65 6e 74 68 65 73 65 73 2e 20 20 54 68 65  arentheses.  The
a980: 20 61 72 67 75 6d 65 6e 74 20 73 79 6e 74 61 78   argument syntax
a990: 20 69 73 20 73 75 66 66 69 63 69 65 6e 74 6c 79   is sufficiently
a9a0: 20 67 65 6e 65 72 61 6c 20 74 68 61 74 20 74 68   general that th
a9b0: 65 0a 61 72 67 75 6d 65 6e 74 73 20 63 61 6e 20  e.arguments can 
a9c0: 62 65 20 6d 61 64 65 20 74 6f 20 61 70 70 65 61  be made to appea
a9d0: 72 20 61 73 20 63 6f 6c 75 6d 6e 20 64 65 66 69  r as column defi
a9e0: 6e 69 74 69 6f 6e 73 20 69 6e 20 61 20 74 72 61  nitions in a tra
a9f0: 64 69 74 69 6f 6e 61 6c 0a 5b 43 52 45 41 54 45  ditional.[CREATE
aa00: 20 54 41 42 4c 45 5d 20 73 74 61 74 65 6d 65 6e   TABLE] statemen
aa10: 74 2e 20 20 0a 5e 53 51 4c 69 74 65 20 70 61 73  t.  .^SQLite pas
aa20: 73 65 73 20 74 68 65 20 6d 6f 64 75 6c 65 20 61  ses the module a
aa30: 72 67 75 6d 65 6e 74 73 20 64 69 72 65 63 74 6c  rguments directl
aa40: 79 0a 74 6f 20 74 68 65 20 5b 78 43 72 65 61 74  y.to the [xCreat
aa50: 65 5d 20 61 6e 64 20 5b 78 43 6f 6e 6e 65 63 74  e] and [xConnect
aa60: 5d 20 6d 65 74 68 6f 64 73 20 6f 66 20 74 68 65  ] methods of the
aa70: 20 6d 6f 64 75 6c 65 20 69 6d 70 6c 65 6d 65 6e   module implemen
aa80: 74 61 74 69 6f 6e 0a 77 69 74 68 6f 75 74 20 61  tation.without a
aa90: 6e 79 20 69 6e 74 65 72 70 72 65 74 61 74 69 6f  ny interpretatio
aaa0: 6e 2e 20 20 49 74 20 69 73 20 74 68 65 20 72 65  n.  It is the re
aab0: 73 70 6f 6e 73 69 62 69 6c 69 74 79 0a 6f 66 20  sponsibility.of 
aac0: 74 68 65 20 6d 6f 64 75 6c 65 20 69 6d 70 6c 65  the module imple
aad0: 6d 65 6e 74 61 74 69 6f 6e 20 74 6f 20 70 61 72  mentation to par
aae0: 73 65 20 61 6e 64 20 69 6e 74 65 72 70 72 65 74  se and interpret
aaf0: 20 69 74 73 20 6f 77 6e 20 61 72 67 75 6d 65 6e   its own argumen
ab00: 74 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 41 20 76  ts.</p>..<p>^A v
ab10: 69 72 74 75 61 6c 20 74 61 62 6c 65 20 69 73 20  irtual table is 
ab20: 64 65 73 74 72 6f 79 65 64 20 75 73 69 6e 67 20  destroyed using 
ab30: 74 68 65 20 6f 72 64 69 6e 61 72 79 0a 5b 44 52  the ordinary.[DR
ab40: 4f 50 20 54 41 42 4c 45 5d 20 73 74 61 74 65 6d  OP TABLE] statem
ab50: 65 6e 74 2e 20 20 54 68 65 72 65 20 69 73 20 6e  ent.  There is n
ab60: 6f 0a 44 52 4f 50 20 56 49 52 54 55 41 4c 20 54  o.DROP VIRTUAL T
ab70: 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 2e 3c  ABLE statement.<
ab80: 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23  /p>..<tcl>.#####
ab90: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
aba0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
abb0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
abc0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
abd0: 23 23 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f  #########.Sectio
abe0: 6e 20 44 45 4c 45 54 45 20 64 65 6c 65 74 65 20  n DELETE delete 
abf0: 7b 44 45 4c 45 54 45 20 2a 44 45 4c 45 54 45 73  {DELETE *DELETEs
ac00: 7d 0a 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d  }..BubbleDiagram
ac10: 20 64 65 6c 65 74 65 2d 73 74 6d 74 20 31 0a 42   delete-stmt 1.B
ac20: 75 62 62 6c 65 44 69 61 67 72 61 6d 20 71 75 61  ubbleDiagram qua
ac30: 6c 69 66 69 65 64 2d 74 61 62 6c 65 2d 6e 61 6d  lified-table-nam
ac40: 65 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 5e 54 68  e.</tcl>..<p>^Th
ac50: 65 20 44 45 4c 45 54 45 20 63 6f 6d 6d 61 6e 64  e DELETE command
ac60: 20 69 73 20 75 73 65 64 20 74 6f 20 72 65 6d 6f   is used to remo
ac70: 76 65 20 72 65 63 6f 72 64 73 20 66 72 6f 6d 20  ve records from 
ac80: 61 20 74 61 62 6c 65 2e 0a 5e 54 68 65 20 63 6f  a table..^The co
ac90: 6d 6d 61 6e 64 20 63 6f 6e 73 69 73 74 73 20 6f  mmand consists o
aca0: 66 20 74 68 65 20 22 44 45 4c 45 54 45 20 46 52  f the "DELETE FR
acb0: 4f 4d 22 20 6b 65 79 77 6f 72 64 73 20 66 6f 6c  OM" keywords fol
acc0: 6c 6f 77 65 64 20 62 79 0a 74 68 65 20 6e 61 6d  lowed by.the nam
acd0: 65 20 6f 66 20 74 68 65 20 74 61 62 6c 65 20 66  e of the table f
ace0: 72 6f 6d 20 77 68 69 63 68 20 72 65 63 6f 72 64  rom which record
acf0: 73 20 61 72 65 20 74 6f 20 62 65 20 72 65 6d 6f  s are to be remo
ad00: 76 65 64 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 5e 57  ved..</p>..<p>^W
ad10: 69 74 68 6f 75 74 20 61 20 57 48 45 52 45 20 63  ithout a WHERE c
ad20: 6c 61 75 73 65 2c 20 61 6c 6c 20 72 6f 77 73 20  lause, all rows 
ad30: 6f 66 20 74 68 65 20 74 61 62 6c 65 20 61 72 65  of the table are
ad40: 20 72 65 6d 6f 76 65 64 2e 0a 5e 49 66 20 61 20   removed..^If a 
ad50: 57 48 45 52 45 20 63 6c 61 75 73 65 20 69 73 20  WHERE clause is 
ad60: 73 75 70 70 6c 69 65 64 2c 20 74 68 65 6e 20 6f  supplied, then o
ad70: 6e 6c 79 20 74 68 6f 73 65 20 72 6f 77 73 20 74  nly those rows t
ad80: 68 61 74 20 6d 61 74 63 68 0a 74 68 65 20 65 78  hat match.the ex
ad90: 70 72 65 73 73 69 6f 6e 20 61 72 65 20 72 65 6d  pression are rem
ada0: 6f 76 65 64 2e 3c 2f 70 3e 0a 0a 3c 68 33 3e 52  oved.</p>..<h3>R
adb0: 65 73 74 72 69 63 74 69 6f 6e 73 20 6f 6e 20 44  estrictions on D
adc0: 45 4c 45 54 45 20 53 74 61 74 65 6d 65 6e 74 73  ELETE Statements
add0: 20 57 69 74 68 69 6e 20 43 52 45 41 54 45 20 54   Within CREATE T
ade0: 52 49 47 47 45 52 3c 2f 68 33 3e 0a 0a 3c 70 3e  RIGGER</h3>..<p>
adf0: 5e 54 68 65 72 65 20 61 72 65 20 61 64 64 69 74  ^There are addit
ae00: 69 6f 6e 61 6c 20 73 79 6e 74 61 78 20 72 65 73  ional syntax res
ae10: 74 72 69 63 74 69 6f 6e 73 20 6f 6e 20 44 45 4c  trictions on DEL
ae20: 45 54 45 20 73 74 61 74 65 6d 65 6e 74 73 20 74  ETE statements t
ae30: 68 61 74 0a 6f 63 63 75 72 20 77 69 74 68 69 6e  hat.occur within
ae40: 20 74 68 65 20 62 6f 64 79 20 6f 66 20 61 20 5b   the body of a [
ae50: 43 52 45 41 54 45 20 54 52 49 47 47 45 52 5d 20  CREATE TRIGGER] 
ae60: 73 74 61 74 65 6d 65 6e 74 2e 20 20 5e 54 68 65  statement.  ^The
ae70: 20 3c 69 3e 74 61 62 6c 65 2d 6e 61 6d 65 3c 2f   <i>table-name</
ae80: 69 3e 0a 6d 75 73 74 20 62 65 20 75 6e 71 75 61  i>.must be unqua
ae90: 6c 69 66 69 65 64 2e 20 0a 5e 28 49 6e 20 6f 74  lified. .^(In ot
aea0: 68 65 72 20 77 6f 72 64 73 2c 20 74 68 65 20 3c  her words, the <
aeb0: 69 3e 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3c  i>database-name<
aec0: 2f 69 3e 3c 62 3e 2e 3c 2f 62 3e 20 70 72 65 66  /i><b>.</b> pref
aed0: 69 78 0a 6f 6e 20 74 68 65 20 74 61 62 6c 65 20  ix.on the table 
aee0: 6e 61 6d 65 20 69 73 20 6e 6f 74 20 61 6c 6c 6f  name is not allo
aef0: 77 65 64 20 77 69 74 68 69 6e 20 74 72 69 67 67  wed within trigg
af00: 65 72 73 2e 20 29 5e 0a 5e 54 68 65 20 74 61 62  ers. )^.^The tab
af10: 6c 65 20 66 72 6f 6d 20 77 68 69 63 68 20 74 6f  le from which to
af20: 20 64 65 6c 65 74 65 20 6d 75 73 74 20 62 65 20   delete must be 
af30: 69 6e 20 74 68 65 20 73 61 6d 65 0a 64 61 74 61  in the same.data
af40: 62 61 73 65 20 61 73 20 74 68 65 20 74 61 62 6c  base as the tabl
af50: 65 20 74 6f 20 77 68 69 63 68 20 74 68 65 20 74  e to which the t
af60: 72 69 67 67 65 72 20 69 73 20 61 74 74 61 63 68  rigger is attach
af70: 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65  ed.</p>..<p>^The
af80: 20 49 4e 44 45 58 45 44 20 42 59 20 61 6e 64 20   INDEXED BY and 
af90: 4e 4f 54 20 49 4e 44 45 58 45 44 20 63 6c 61 75  NOT INDEXED clau
afa0: 73 65 73 20 61 72 65 20 6e 6f 74 20 61 6c 6c 6f  ses are not allo
afb0: 77 65 64 20 6f 6e 20 44 45 4c 45 54 45 0a 73 74  wed on DELETE.st
afc0: 61 74 65 6d 65 6e 74 73 20 77 69 74 68 69 6e 20  atements within 
afd0: 74 72 69 67 67 65 72 73 2e 3c 2f 70 3e 0a 0a 3c  triggers.</p>..<
afe0: 70 3e 5e 54 68 65 20 4c 49 4d 49 54 20 63 6c 61  p>^The LIMIT cla
aff0: 75 73 65 20 28 64 65 73 63 72 69 62 65 64 20 62  use (described b
b000: 65 6c 6f 77 29 20 69 73 20 75 6e 73 75 70 70 6f  elow) is unsuppo
b010: 72 74 65 64 20 77 69 74 68 69 6e 20 74 72 69 67  rted within trig
b020: 67 65 72 73 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e  gers.</p>..<tcl>
b030: 68 64 5f 66 72 61 67 6d 65 6e 74 20 74 72 75 63  hd_fragment truc
b040: 61 74 65 6f 70 74 20 7b 74 72 75 6e 63 61 74 65  ateopt {truncate
b050: 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 7d 3c 2f   optimization}</
b060: 74 63 6c 3e 0a 3c 68 33 3e 54 68 65 20 54 72 75  tcl>.<h3>The Tru
b070: 6e 63 61 74 65 20 4f 70 74 69 6d 69 7a 61 74 69  ncate Optimizati
b080: 6f 6e 3c 2f 68 33 3e 0a 0a 3c 70 3e 5e 57 68 65  on</h3>..<p>^Whe
b090: 6e 20 74 68 65 20 57 48 45 52 45 20 69 73 20 6f  n the WHERE is o
b0a0: 6d 69 74 74 65 64 20 66 72 6f 6d 20 61 20 44 45  mitted from a DE
b0b0: 4c 45 54 45 20 73 74 61 74 65 6d 65 6e 74 20 61  LETE statement a
b0c0: 6e 64 20 74 68 65 20 74 61 62 6c 65 0a 62 65 69  nd the table.bei
b0d0: 6e 67 20 64 65 6c 65 74 65 64 20 68 61 73 20 6e  ng deleted has n
b0e0: 6f 20 74 72 69 67 67 65 72 73 2c 0a 53 51 4c 69  o triggers,.SQLi
b0f0: 74 65 20 75 73 65 73 20 61 6e 20 6f 70 74 69 6d  te uses an optim
b100: 69 7a 61 74 69 6f 6e 20 74 6f 20 65 72 61 73 65  ization to erase
b110: 20 74 68 65 20 65 6e 74 69 72 65 20 74 61 62 6c   the entire tabl
b120: 65 20 63 6f 6e 74 65 6e 74 0a 77 69 74 68 6f 75  e content.withou
b130: 74 20 68 61 76 69 6e 67 20 74 6f 20 76 69 73 69  t having to visi
b140: 74 20 65 61 63 68 20 72 6f 77 20 6f 66 20 74 68  t each row of th
b150: 65 20 74 61 62 6c 65 20 69 6e 64 69 76 69 64 75  e table individu
b160: 61 6c 6c 79 2e 0a 54 68 69 73 20 22 74 72 75 6e  ally..This "trun
b170: 63 61 74 65 22 20 6f 70 74 69 6d 69 7a 61 74 69  cate" optimizati
b180: 6f 6e 20 6d 61 6b 65 73 20 74 68 65 20 64 65 6c  on makes the del
b190: 65 74 65 20 72 75 6e 20 6d 75 63 68 20 66 61 73  ete run much fas
b1a0: 74 65 72 2e 0a 50 72 69 6f 72 20 74 6f 20 53 51  ter..Prior to SQ
b1b0: 4c 69 74 65 20 5b 76 65 72 73 69 6f 6e 20 33 2e  Lite [version 3.
b1c0: 36 2e 35 5d 2c 20 74 68 65 20 74 72 75 6e 63 61  6.5], the trunca
b1d0: 74 65 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 0a  te optimization.
b1e0: 61 6c 73 6f 20 6d 65 61 6e 74 20 74 68 61 74 20  also meant that 
b1f0: 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 63 68 61  the [sqlite3_cha
b200: 6e 67 65 73 28 29 5d 20 61 6e 64 0a 5b 73 71 6c  nges()] and.[sql
b210: 69 74 65 33 5f 74 6f 74 61 6c 5f 63 68 61 6e 67  ite3_total_chang
b220: 65 73 28 29 5d 20 69 6e 74 65 72 66 61 63 65 73  es()] interfaces
b230: 0a 61 6e 64 20 74 68 65 20 5b 63 6f 75 6e 74 5f  .and the [count_
b240: 63 68 61 6e 67 65 73 20 70 72 61 67 6d 61 5d 0a  changes pragma].
b250: 77 69 6c 6c 20 6e 6f 74 20 61 63 74 75 61 6c 6c  will not actuall
b260: 79 20 72 65 74 75 72 6e 20 74 68 65 20 6e 75 6d  y return the num
b270: 62 65 72 20 6f 66 20 64 65 6c 65 74 65 64 20 72  ber of deleted r
b280: 6f 77 73 2e 20 20 0a 54 68 61 74 20 70 72 6f 62  ows.  .That prob
b290: 6c 65 6d 20 68 61 73 20 62 65 65 6e 20 66 69 78  lem has been fix
b2a0: 65 64 20 61 73 20 6f 66 20 5b 76 65 72 73 69 6f  ed as of [versio
b2b0: 6e 20 33 2e 36 2e 35 5d 2e 0a 0a 3c 70 3e 5e 54  n 3.6.5]...<p>^T
b2c0: 68 65 20 74 72 75 6e 63 61 74 65 20 6f 70 74 69  he truncate opti
b2d0: 6d 69 7a 61 74 69 6f 6e 20 63 61 6e 20 62 65 20  mization can be 
b2e0: 70 65 72 6d 61 6e 65 6e 74 6c 79 20 64 69 73 61  permanently disa
b2f0: 62 6c 65 64 20 66 6f 72 20 61 6c 6c 20 71 75 65  bled for all que
b300: 72 69 65 73 0a 62 79 20 72 65 63 6f 6d 70 69 6c  ries.by recompil
b310: 69 6e 67 0a 53 51 4c 69 74 65 20 77 69 74 68 20  ing.SQLite with 
b320: 74 68 65 20 5b 53 51 4c 49 54 45 5f 4f 4d 49 54  the [SQLITE_OMIT
b330: 5f 54 52 55 4e 43 41 54 45 5f 4f 50 54 49 4d 49  _TRUNCATE_OPTIMI
b340: 5a 41 54 49 4f 4e 5d 20 63 6f 6d 70 69 6c 65 2d  ZATION] compile-
b350: 74 69 6d 65 20 73 77 69 74 63 68 2e 3c 2f 70 3e  time switch.</p>
b360: 0a 0a 3c 70 3e 54 68 65 20 74 72 75 6e 63 61 74  ..<p>The truncat
b370: 65 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20 63  e optimization c
b380: 61 6e 20 61 6c 73 6f 20 62 65 20 64 69 73 61 62  an also be disab
b390: 6c 65 64 20 61 74 20 72 75 6e 74 69 6d 65 20 75  led at runtime u
b3a0: 73 69 6e 67 0a 74 68 65 20 5b 73 71 6c 69 74 65  sing.the [sqlite
b3b0: 33 5f 73 65 74 5f 61 75 74 68 6f 72 69 7a 65 72  3_set_authorizer
b3c0: 28 29 5d 20 69 6e 74 65 72 66 61 63 65 2e 20 20  ()] interface.  
b3d0: 5e 49 66 20 61 6e 20 61 75 74 68 6f 72 69 7a 65  ^If an authorize
b3e0: 72 20 63 61 6c 6c 62 61 63 6b 0a 72 65 74 75 72  r callback.retur
b3f0: 6e 73 20 5b 53 51 4c 49 54 45 5f 49 47 4e 4f 52  ns [SQLITE_IGNOR
b400: 45 5d 20 66 6f 72 20 61 6e 20 5b 53 51 4c 49 54  E] for an [SQLIT
b410: 45 5f 44 45 4c 45 54 45 5d 20 61 63 74 69 6f 6e  E_DELETE] action
b420: 20 63 6f 64 65 2c 20 74 68 65 6e 0a 74 68 65 20   code, then.the 
b430: 44 45 4c 45 54 45 20 6f 70 65 72 61 74 69 6f 6e  DELETE operation
b440: 20 77 69 6c 6c 20 70 72 6f 63 65 65 64 20 62 75   will proceed bu
b450: 74 20 74 68 65 20 74 72 75 6e 63 61 74 65 20 6f  t the truncate o
b460: 70 74 69 6d 69 7a 61 74 69 6f 6e 20 77 69 6c 6c  ptimization will
b470: 0a 62 65 20 62 79 70 61 73 73 65 64 20 61 6e 64  .be bypassed and
b480: 20 72 6f 77 73 20 77 69 6c 6c 20 62 65 20 64 65   rows will be de
b490: 6c 65 74 65 64 20 6f 6e 65 20 62 79 20 6f 6e 65  leted one by one
b4a0: 2e 3c 2f 70 3e 0a 0a 3c 68 33 3e 55 73 65 20 4f  .</p>..<h3>Use O
b4b0: 66 20 4c 49 4d 49 54 3c 2f 68 33 3e 0a 0a 3c 70  f LIMIT</h3>..<p
b4c0: 3e 5e 28 49 66 20 53 51 4c 69 74 65 20 69 73 20  >^(If SQLite is 
b4d0: 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 74 68  compiled with th
b4e0: 65 20 5b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  e [SQLITE_ENABLE
b4f0: 5f 55 50 44 41 54 45 5f 44 45 4c 45 54 45 5f 4c  _UPDATE_DELETE_L
b500: 49 4d 49 54 5d 0a 63 6f 6d 70 69 6c 65 2d 74 69  IMIT].compile-ti
b510: 6d 65 20 6f 70 74 69 6f 6e 2c 20 74 68 65 6e 20  me option, then 
b520: 74 68 65 20 73 79 6e 74 61 78 20 6f 66 20 74 68  the syntax of th
b530: 65 20 44 45 4c 45 54 45 20 73 74 61 74 65 6d 65  e DELETE stateme
b540: 6e 74 20 69 73 0a 65 78 74 65 6e 64 65 64 20 62  nt is.extended b
b550: 79 20 74 68 65 20 61 64 64 69 74 69 6f 6e 20 6f  y the addition o
b560: 66 20 6f 70 74 69 6f 6e 61 6c 20 4f 52 44 45 52  f optional ORDER
b570: 20 42 59 20 61 6e 64 20 4c 49 4d 49 54 20 63 6c   BY and LIMIT cl
b580: 61 75 73 65 73 3a 29 5e 3c 2f 70 3e 0a 0a 3c 74  auses:)^</p>..<t
b590: 63 6c 3e 42 75 62 62 6c 65 44 69 61 67 72 61 6d  cl>BubbleDiagram
b5a0: 20 64 65 6c 65 74 65 2d 73 74 6d 74 2d 6c 69 6d   delete-stmt-lim
b5b0: 69 74 65 64 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 5e  ited</tcl>..<p>^
b5c0: 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20 4c 49 4d  The optional LIM
b5d0: 49 54 20 63 6c 61 75 73 65 20 63 61 6e 20 62 65  IT clause can be
b5e0: 20 75 73 65 64 20 74 6f 20 6c 69 6d 69 74 20 74   used to limit t
b5f0: 68 65 20 6e 75 6d 62 65 72 20 6f 66 0a 72 6f 77  he number of.row
b600: 73 20 64 65 6c 65 74 65 64 2c 20 61 6e 64 20 74  s deleted, and t
b610: 68 65 72 65 62 79 20 6c 69 6d 69 74 20 74 68 65  hereby limit the
b620: 20 73 69 7a 65 20 6f 66 20 74 68 65 20 74 72 61   size of the tra
b630: 6e 73 61 63 74 69 6f 6e 2e 0a 5e 54 68 65 20 4f  nsaction..^The O
b640: 52 44 45 52 20 42 59 20 63 6c 61 75 73 65 20 6f  RDER BY clause o
b650: 6e 20 61 20 44 45 4c 45 54 45 20 73 74 61 74 65  n a DELETE state
b660: 6d 65 6e 74 0a 69 73 20 75 73 65 64 20 6f 6e 6c  ment.is used onl
b670: 79 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 77  y to determine w
b680: 68 69 63 68 20 72 6f 77 73 20 66 61 6c 6c 0a 77  hich rows fall.w
b690: 69 74 68 69 6e 20 74 68 65 20 4c 49 4d 49 54 2e  ithin the LIMIT.
b6a0: 20 20 5e 54 68 65 20 6f 72 64 65 72 20 69 6e 20    ^The order in 
b6b0: 77 68 69 63 68 20 72 6f 77 73 20 61 72 65 20 64  which rows are d
b6c0: 65 6c 65 74 65 64 20 69 73 20 61 72 62 69 74 72  eleted is arbitr
b6d0: 61 72 79 0a 61 6e 64 20 69 73 20 6e 6f 74 20 64  ary.and is not d
b6e0: 65 74 65 72 6d 69 6e 65 64 20 62 79 20 74 68 65  etermined by the
b6f0: 20 4f 52 44 45 52 20 42 59 20 63 6c 61 75 73 65   ORDER BY clause
b700: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20 70  .</p>..<p>^The p
b710: 72 65 73 65 6e 63 65 20 6f 66 20 61 20 4c 49 4d  resence of a LIM
b720: 49 54 20 63 6c 61 75 73 65 20 64 65 66 65 61 74  IT clause defeat
b730: 73 20 74 68 65 20 74 72 75 6e 63 61 74 65 20 6f  s the truncate o
b740: 70 74 69 6d 69 7a 61 74 69 6f 6e 0a 63 61 75 73  ptimization.caus
b750: 69 6e 67 20 61 6c 6c 20 72 6f 77 73 20 62 65 69  ing all rows bei
b760: 6e 67 20 64 65 6c 65 74 65 64 20 74 6f 20 62 65  ng deleted to be
b770: 20 76 69 73 69 74 65 64 2e 3c 2f 70 3e 0a 0a 3c   visited.</p>..<
b780: 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23  tcl>.###########
b790: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
b7a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
b7b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
b7c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
b7d0: 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b 44 45  ####.Section {DE
b7e0: 54 41 43 48 20 44 41 54 41 42 41 53 45 7d 20 64  TACH DATABASE} d
b7f0: 65 74 61 63 68 20 2a 44 45 54 41 43 48 0a 0a 42  etach *DETACH..B
b800: 75 62 62 6c 65 44 69 61 67 72 61 6d 20 64 65 74  ubbleDiagram det
b810: 61 63 68 2d 73 74 6d 74 20 31 0a 3c 2f 74 63 6c  ach-stmt 1.</tcl
b820: 3e 0a 0a 3c 70 3e 5e 54 68 69 73 20 73 74 61 74  >..<p>^This stat
b830: 65 6d 65 6e 74 20 64 65 74 61 63 68 65 73 20 61  ement detaches a
b840: 6e 20 61 64 64 69 74 69 6f 6e 61 6c 20 64 61 74  n additional dat
b850: 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
b860: 20 70 72 65 76 69 6f 75 73 6c 79 20 0a 61 74 74   previously .att
b870: 61 63 68 65 64 20 75 73 69 6e 67 20 74 68 65 20  ached using the 
b880: 5b 41 54 54 41 43 48 5d 20 73 74 61 74 65 6d 65  [ATTACH] stateme
b890: 6e 74 2e 20 20 0a 5e 49 74 20 69 73 20 70 6f 73  nt.  .^It is pos
b8a0: 73 69 62 6c 65 20 74 6f 20 68 61 76 65 20 74 68  sible to have th
b8b0: 65 20 73 61 6d 65 20 64 61 74 61 62 61 73 65 20  e same database 
b8c0: 66 69 6c 65 20 61 74 74 61 63 68 65 64 20 6d 75  file attached mu
b8d0: 6c 74 69 70 6c 65 20 74 69 6d 65 73 20 75 73 69  ltiple times usi
b8e0: 6e 67 20 0a 64 69 66 66 65 72 65 6e 74 20 6e 61  ng .different na
b8f0: 6d 65 73 2c 20 61 6e 64 20 64 65 74 61 63 68 69  mes, and detachi
b900: 6e 67 20 6f 6e 65 20 63 6f 6e 6e 65 63 74 69 6f  ng one connectio
b910: 6e 20 74 6f 20 61 20 66 69 6c 65 20 77 69 6c 6c  n to a file will
b920: 20 6c 65 61 76 65 20 74 68 65 20 0a 6f 74 68 65   leave the .othe
b930: 72 73 20 69 6e 74 61 63 74 2e 3c 2f 70 3e 0a 0a  rs intact.</p>..
b940: 3c 70 3e 5e 54 68 69 73 20 73 74 61 74 65 6d 65  <p>^This stateme
b950: 6e 74 20 77 69 6c 6c 20 66 61 69 6c 20 69 66 20  nt will fail if 
b960: 53 51 4c 69 74 65 20 69 73 20 69 6e 20 74 68 65  SQLite is in the
b970: 20 6d 69 64 64 6c 65 20 6f 66 20 61 20 74 72 61   middle of a tra
b980: 6e 73 61 63 74 69 6f 6e 2e 3c 2f 70 3e 0a 0a 0a  nsaction.</p>...
b990: 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23  <tcl>.##########
b9a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
b9b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
b9c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
b9d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
b9e0: 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b 44 52  ####.Section {DR
b9f0: 4f 50 20 49 4e 44 45 58 7d 20 64 72 6f 70 69 6e  OP INDEX} dropin
ba00: 64 65 78 20 7b 7b 44 52 4f 50 20 49 4e 44 45 58  dex {{DROP INDEX
ba10: 7d 7d 0a 0a 42 75 62 62 6c 65 44 69 61 67 72 61  }}..BubbleDiagra
ba20: 6d 20 64 72 6f 70 2d 69 6e 64 65 78 2d 73 74 6d  m drop-index-stm
ba30: 74 20 31 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 5e  t 1.</tcl>..<p>^
ba40: 54 68 65 20 44 52 4f 50 20 49 4e 44 45 58 20 73  The DROP INDEX s
ba50: 74 61 74 65 6d 65 6e 74 20 72 65 6d 6f 76 65 73  tatement removes
ba60: 20 61 6e 20 69 6e 64 65 78 20 61 64 64 65 64 0a   an index added.
ba70: 77 69 74 68 20 74 68 65 20 5b 43 52 45 41 54 45  with the [CREATE
ba80: 20 49 4e 44 45 58 5d 20 73 74 61 74 65 6d 65 6e   INDEX] statemen
ba90: 74 2e 20 20 54 68 65 20 69 6e 64 65 78 20 69 73  t.  The index is
baa0: 20 63 6f 6d 70 6c 65 74 65 6c 79 20 72 65 6d 6f   completely remo
bab0: 76 65 64 20 66 72 6f 6d 0a 74 68 65 20 64 69 73  ved from.the dis
bac0: 6b 2e 20 20 54 68 65 20 6f 6e 6c 79 20 77 61 79  k.  The only way
bad0: 20 74 6f 20 72 65 63 6f 76 65 72 20 74 68 65 20   to recover the 
bae0: 69 6e 64 65 78 20 69 73 20 74 6f 20 72 65 65 6e  index is to reen
baf0: 74 65 72 20 74 68 65 0a 61 70 70 72 6f 70 72 69  ter the.appropri
bb00: 61 74 65 20 5b 43 52 45 41 54 45 20 49 4e 44 45  ate [CREATE INDE
bb10: 58 5d 20 63 6f 6d 6d 61 6e 64 2e 3c 2f 70 3e 0a  X] command.</p>.
bb20: 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23  .<tcl>.#########
bb30: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
bb40: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
bb50: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
bb60: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
bb70: 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b 44  #####.Section {D
bb80: 52 4f 50 20 54 41 42 4c 45 7d 20 64 72 6f 70 74  ROP TABLE} dropt
bb90: 61 62 6c 65 20 7b 7b 44 52 4f 50 20 54 41 42 4c  able {{DROP TABL
bba0: 45 7d 7d 0a 0a 42 75 62 62 6c 65 44 69 61 67 72  E}}..BubbleDiagr
bbb0: 61 6d 20 64 72 6f 70 2d 74 61 62 6c 65 2d 73 74  am drop-table-st
bbc0: 6d 74 20 31 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e  mt 1.</tcl>..<p>
bbd0: 5e 54 68 65 20 44 52 4f 50 20 54 41 42 4c 45 20  ^The DROP TABLE 
bbe0: 73 74 61 74 65 6d 65 6e 74 20 72 65 6d 6f 76 65  statement remove
bbf0: 73 20 61 20 74 61 62 6c 65 20 61 64 64 65 64 20  s a table added 
bc00: 77 69 74 68 20 74 68 65 0a 5b 43 52 45 41 54 45  with the.[CREATE
bc10: 20 54 41 42 4c 45 5d 20 73 74 61 74 65 6d 65 6e   TABLE] statemen
bc20: 74 2e 20 20 54 68 65 20 6e 61 6d 65 20 73 70 65  t.  The name spe
bc30: 63 69 66 69 65 64 20 69 73 20 74 68 65 0a 74 61  cified is the.ta
bc40: 62 6c 65 20 6e 61 6d 65 2e 20 20 5e 54 68 65 20  ble name.  ^The 
bc50: 64 72 6f 70 70 65 64 20 74 61 62 6c 65 20 69 73  dropped table is
bc60: 20 63 6f 6d 70 6c 65 74 65 6c 79 20 72 65 6d 6f   completely remo
bc70: 76 65 64 20 66 72 6f 6d 20 74 68 65 20 64 61 74  ved from the dat
bc80: 61 62 61 73 65 20 0a 73 63 68 65 6d 61 20 61 6e  abase .schema an
bc90: 64 20 74 68 65 20 64 69 73 6b 20 66 69 6c 65 2e  d the disk file.
bca0: 20 20 54 68 65 20 74 61 62 6c 65 20 63 61 6e 20    The table can 
bcb0: 6e 6f 74 20 62 65 20 72 65 63 6f 76 65 72 65 64  not be recovered
bcc0: 2e 20 20 0a 5e 41 6c 6c 20 69 6e 64 69 63 65 73  .  .^All indices
bcd0: 20 61 6e 64 20 74 72 69 67 67 65 72 73 0a 61 73   and triggers.as
bce0: 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
bcf0: 65 20 74 61 62 6c 65 20 61 72 65 20 61 6c 73 6f  e table are also
bd00: 20 64 65 6c 65 74 65 64 2e 3c 2f 70 3e 0a 0a 3c   deleted.</p>..<
bd10: 70 3e 5e 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20  p>^The optional 
bd20: 49 46 20 45 58 49 53 54 53 20 63 6c 61 75 73 65  IF EXISTS clause
bd30: 20 73 75 70 70 72 65 73 73 65 73 20 74 68 65 20   suppresses the 
bd40: 65 72 72 6f 72 20 74 68 61 74 20 77 6f 75 6c 64  error that would
bd50: 20 6e 6f 72 6d 61 6c 6c 79 0a 72 65 73 75 6c 74   normally.result
bd60: 20 69 66 20 74 68 65 20 74 61 62 6c 65 20 64 6f   if the table do
bd70: 65 73 20 6e 6f 74 20 65 78 69 73 74 2e 3c 2f 70  es not exist.</p
bd80: 3e 0a 0a 3c 70 3e 5e 49 66 20 5b 66 6f 72 65 69  >..<p>^If [forei
bd90: 67 6e 20 6b 65 79 20 63 6f 6e 73 74 72 61 69 6e  gn key constrain
bda0: 74 73 5d 20 61 72 65 20 65 6e 61 62 6c 65 64 2c  ts] are enabled,
bdb0: 20 61 20 44 52 4f 50 20 54 41 42 4c 45 20 63 6f   a DROP TABLE co
bdc0: 6d 6d 61 6e 64 20 70 65 72 66 6f 72 6d 73 20 61  mmand performs a
bdd0: 6e 0a 69 6d 70 6c 69 63 69 74 20 5b 44 45 4c 45  n.implicit [DELE
bde0: 54 45 20 7c 20 44 45 4c 45 54 45 20 46 52 4f 4d  TE | DELETE FROM
bdf0: 20 26 6c 74 3b 74 62 6c 26 67 74 3b 5d 20 63 6f   &lt;tbl&gt;] co
be00: 6d 6d 61 6e 64 20 62 65 66 6f 72 65 20 72 65 6d  mmand before rem
be10: 6f 76 69 6e 67 20 74 68 65 0a 74 61 62 6c 65 20  oving the.table 
be20: 66 72 6f 6d 20 74 68 65 20 64 61 74 61 62 61 73  from the databas
be30: 65 20 73 63 68 65 6d 61 2e 20 5e 41 6e 79 20 74  e schema. ^Any t
be40: 72 69 67 67 65 72 73 20 61 74 74 61 63 68 65 64  riggers attached
be50: 20 74 6f 20 74 68 65 20 74 61 62 6c 65 20 61 72   to the table ar
be60: 65 0a 64 72 6f 70 70 65 64 20 66 72 6f 6d 20 74  e.dropped from t
be70: 68 65 20 64 61 74 61 62 61 73 65 20 73 63 68 65  he database sche
be80: 6d 61 20 62 65 66 6f 72 65 20 74 68 65 20 69 6d  ma before the im
be90: 70 6c 69 63 69 74 20 44 45 4c 45 54 45 20 46 52  plicit DELETE FR
bea0: 4f 4d 20 26 6c 74 3b 74 62 6c 26 67 74 3b 20 0a  OM &lt;tbl&gt; .
beb0: 69 73 20 65 78 65 63 75 74 65 64 2c 20 73 6f 20  is executed, so 
bec0: 74 68 69 73 20 63 61 6e 6e 6f 74 20 63 61 75 73  this cannot caus
bed0: 65 20 61 6e 79 20 74 72 69 67 67 65 72 73 20 74  e any triggers t
bee0: 6f 20 66 69 72 65 2e 20 42 79 20 63 6f 6e 74 72  o fire. By contr
bef0: 61 73 74 2c 20 5e 61 6e 0a 69 6d 70 6c 69 63 69  ast, ^an.implici
bf00: 74 20 44 45 4c 45 54 45 20 46 52 4f 4d 20 26 6c  t DELETE FROM &l
bf10: 74 3b 74 62 6c 26 67 74 3b 20 64 6f 65 73 20 63  t;tbl&gt; does c
bf20: 61 75 73 65 20 61 6e 79 20 63 6f 6e 66 69 67 75  ause any configu
bf30: 72 65 64 0a 5b 66 6f 72 65 69 67 6e 20 6b 65 79  red.[foreign key
bf40: 20 61 63 74 69 6f 6e 73 5d 20 74 6f 20 74 61 6b   actions] to tak
bf50: 65 20 70 6c 61 63 65 2e 20 0a 5e 49 66 20 74 68  e place. .^If th
bf60: 65 20 69 6d 70 6c 69 63 69 74 20 44 45 4c 45 54  e implicit DELET
bf70: 45 20 46 52 4f 4d 20 26 6c 74 3b 74 62 6c 26 67  E FROM &lt;tbl&g
bf80: 74 3b 20 65 78 65 63 75 74 65 64 0a 61 73 20 70  t; executed.as p
bf90: 61 72 74 20 6f 66 20 61 20 44 52 4f 50 20 54 41  art of a DROP TA
bfa0: 42 4c 45 20 63 6f 6d 6d 61 6e 64 20 76 69 6f 6c  BLE command viol
bfb0: 61 74 65 73 20 61 6e 79 20 69 6d 6d 65 64 69 61  ates any immedia
bfc0: 74 65 20 66 6f 72 65 69 67 6e 20 6b 65 79 20 63  te foreign key c
bfd0: 6f 6e 73 74 72 61 69 6e 74 73 2c 0a 61 6e 20 65  onstraints,.an e
bfe0: 72 72 6f 72 20 69 73 20 72 65 74 75 72 6e 65 64  rror is returned
bff0: 20 61 6e 64 20 74 68 65 20 74 61 62 6c 65 20 69   and the table i
c000: 73 20 6e 6f 74 20 64 72 6f 70 70 65 64 2e 20 5e  s not dropped. ^
c010: 49 66 20 0a 74 68 65 20 69 6d 70 6c 69 63 69 74  If .the implicit
c020: 20 44 45 4c 45 54 45 20 46 52 4f 4d 20 26 6c 74   DELETE FROM &lt
c030: 3b 74 62 6c 26 67 74 3b 20 63 61 75 73 65 73 20  ;tbl&gt; causes 
c040: 61 6e 79 20 0a 64 65 66 65 72 72 65 64 20 66 6f  any .deferred fo
c050: 72 65 69 67 6e 20 6b 65 79 20 63 6f 6e 73 74 72  reign key constr
c060: 61 69 6e 74 73 20 74 6f 20 62 65 20 76 69 6f 6c  aints to be viol
c070: 61 74 65 64 2c 20 61 6e 64 20 74 68 65 20 76 69  ated, and the vi
c080: 6f 6c 61 74 69 6f 6e 73 20 73 74 69 6c 6c 0a 65  olations still.e
c090: 78 69 73 74 20 77 68 65 6e 20 74 68 65 20 74 72  xist when the tr
c0a0: 61 6e 73 61 63 74 69 6f 6e 20 69 73 20 63 6f 6d  ansaction is com
c0b0: 6d 69 74 74 65 64 2c 20 61 6e 20 65 72 72 6f 72  mitted, an error
c0c0: 20 69 73 20 72 65 74 75 72 6e 65 64 20 61 74 20   is returned at 
c0d0: 74 68 65 20 74 69 6d 65 0a 6f 66 20 63 6f 6d 6d  the time.of comm
c0e0: 69 74 2e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23  it...<tcl>.#####
c0f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c100: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c110: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c120: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c130: 23 23 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f  #########.Sectio
c140: 6e 20 7b 44 52 4f 50 20 54 52 49 47 47 45 52 7d  n {DROP TRIGGER}
c150: 20 64 72 6f 70 74 72 69 67 67 65 72 20 7b 7b 44   droptrigger {{D
c160: 52 4f 50 20 54 52 49 47 47 45 52 7d 7d 0a 0a 42  ROP TRIGGER}}..B
c170: 75 62 62 6c 65 44 69 61 67 72 61 6d 20 64 72 6f  ubbleDiagram dro
c180: 70 2d 74 72 69 67 67 65 72 2d 73 74 6d 74 20 31  p-trigger-stmt 1
c190: 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 5e 54 68 65  .</tcl>..<p>^The
c1a0: 20 44 52 4f 50 20 54 52 49 47 47 45 52 20 73 74   DROP TRIGGER st
c1b0: 61 74 65 6d 65 6e 74 20 72 65 6d 6f 76 65 73 20  atement removes 
c1c0: 61 20 74 72 69 67 67 65 72 20 63 72 65 61 74 65  a trigger create
c1d0: 64 20 62 79 20 74 68 65 20 0a 5b 43 52 45 41 54  d by the .[CREAT
c1e0: 45 20 54 52 49 47 47 45 52 5d 20 73 74 61 74 65  E TRIGGER] state
c1f0: 6d 65 6e 74 2e 20 20 5e 54 68 65 20 74 72 69 67  ment.  ^The trig
c200: 67 65 72 20 69 73 20 0a 64 65 6c 65 74 65 64 20  ger is .deleted 
c210: 66 72 6f 6d 20 74 68 65 20 64 61 74 61 62 61 73  from the databas
c220: 65 20 73 63 68 65 6d 61 2e 20 5e 4e 6f 74 65 20  e schema. ^Note 
c230: 74 68 61 74 20 74 72 69 67 67 65 72 73 20 61 72  that triggers ar
c240: 65 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20  e automatically 
c250: 0a 64 72 6f 70 70 65 64 20 77 68 65 6e 20 74 68  .dropped when th
c260: 65 20 61 73 73 6f 63 69 61 74 65 64 20 74 61 62  e associated tab
c270: 6c 65 20 69 73 20 64 72 6f 70 70 65 64 2e 3c 2f  le is dropped.</
c280: 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23  p>..<tcl>.######
c290: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c2a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c2b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c2c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c2d0: 23 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e  ########.Section
c2e0: 20 7b 44 52 4f 50 20 56 49 45 57 7d 20 64 72 6f   {DROP VIEW} dro
c2f0: 70 76 69 65 77 20 7b 7b 44 52 4f 50 20 56 49 45  pview {{DROP VIE
c300: 57 7d 7d 0a 0a 42 75 62 62 6c 65 44 69 61 67 72  W}}..BubbleDiagr
c310: 61 6d 20 64 72 6f 70 2d 76 69 65 77 2d 73 74 6d  am drop-view-stm
c320: 74 20 31 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 5e  t 1.</tcl>..<p>^
c330: 54 68 65 20 44 52 4f 50 20 56 49 45 57 20 73 74  The DROP VIEW st
c340: 61 74 65 6d 65 6e 74 20 72 65 6d 6f 76 65 73 20  atement removes 
c350: 61 20 76 69 65 77 20 63 72 65 61 74 65 64 20 62  a view created b
c360: 79 20 74 68 65 0a 5b 43 52 45 41 54 45 20 56 49  y the.[CREATE VI
c370: 45 57 5d 20 73 74 61 74 65 6d 65 6e 74 2e 20 20  EW] statement.  
c380: 5e 54 68 65 20 6e 61 6d 65 20 73 70 65 63 69 66  ^The name specif
c390: 69 65 64 20 69 73 20 74 68 65 20 0a 76 69 65 77  ied is the .view
c3a0: 20 6e 61 6d 65 2e 20 20 5e 49 74 20 69 73 20 72   name.  ^It is r
c3b0: 65 6d 6f 76 65 64 20 66 72 6f 6d 20 74 68 65 20  emoved from the 
c3c0: 64 61 74 61 62 61 73 65 20 73 63 68 65 6d 61 2c  database schema,
c3d0: 20 62 75 74 20 6e 6f 20 61 63 74 75 61 6c 20 64   but no actual d
c3e0: 61 74 61 20 0a 69 6e 20 74 68 65 20 75 6e 64 65  ata .in the unde
c3f0: 72 6c 79 69 6e 67 20 62 61 73 65 20 74 61 62 6c  rlying base tabl
c400: 65 73 20 69 73 20 6d 6f 64 69 66 69 65 64 2e 3c  es is modified.<
c410: 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23  /p>..<tcl>.#####
c420: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c430: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c440: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c450: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c460: 23 23 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f  #########.Sectio
c470: 6e 20 45 58 50 4c 41 49 4e 20 65 78 70 6c 61 69  n EXPLAIN explai
c480: 6e 20 45 58 50 4c 41 49 4e 0a 0a 42 75 62 62 6c  n EXPLAIN..Bubbl
c490: 65 44 69 61 67 72 61 6d 20 73 71 6c 2d 73 74 6d  eDiagram sql-stm
c4a0: 74 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 5e 41 6e  t.</tcl>..<p>^An
c4b0: 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 63   SQL statement c
c4c0: 61 6e 20 62 65 20 70 72 65 63 65 64 65 64 20 62  an be preceded b
c4d0: 79 20 74 68 65 20 6b 65 79 77 6f 72 64 20 22 45  y the keyword "E
c4e0: 58 50 4c 41 49 4e 22 20 6f 72 0a 62 79 20 74 68  XPLAIN" or.by th
c4f0: 65 20 70 68 72 61 73 65 20 22 45 58 50 4c 41 49  e phrase "EXPLAI
c500: 4e 20 51 55 45 52 59 20 50 4c 41 4e 22 2e 20 20  N QUERY PLAN".  
c510: 5e 45 69 74 68 65 72 20 6d 6f 64 69 66 69 63 61  ^Either modifica
c520: 74 69 6f 6e 20 63 61 75 73 65 73 20 74 68 65 0a  tion causes the.
c530: 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 74 6f  SQL statement to
c540: 20 62 65 68 61 76 65 20 61 73 20 61 20 71 75 65   behave as a que
c550: 72 79 20 61 6e 64 20 74 6f 20 72 65 74 75 72 6e  ry and to return
c560: 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f   information abo
c570: 75 74 0a 68 6f 77 20 74 68 65 20 53 51 4c 20 73  ut.how the SQL s
c580: 74 61 74 65 6d 65 6e 74 20 77 6f 75 6c 64 20 68  tatement would h
c590: 61 76 65 20 6f 70 65 72 61 74 65 64 20 69 66 20  ave operated if 
c5a0: 74 68 65 20 45 58 50 4c 41 49 4e 20 6b 65 79 77  the EXPLAIN keyw
c5b0: 6f 72 64 20 6f 72 0a 70 68 72 61 73 65 20 68 61  ord or.phrase ha
c5c0: 64 20 62 65 65 6e 20 6f 6d 69 74 74 65 64 2e 3c  d been omitted.<
c5d0: 2f 70 3e 0a 0a 3c 70 3e 5e 57 68 65 6e 20 74 68  /p>..<p>^When th
c5e0: 65 20 45 58 50 4c 41 49 4e 20 6b 65 79 77 6f 72  e EXPLAIN keywor
c5f0: 64 20 61 70 70 65 61 72 73 20 62 79 20 69 74 73  d appears by its
c600: 65 6c 66 20 69 74 20 63 61 75 73 65 73 20 74 68  elf it causes th
c610: 65 20 73 74 61 74 65 6d 65 6e 74 0a 74 6f 20 62  e statement.to b
c620: 65 68 61 76 65 20 61 73 20 61 20 71 75 65 72 79  ehave as a query
c630: 20 74 68 61 74 20 72 65 74 75 72 6e 73 20 74 68   that returns th
c640: 65 20 73 65 71 75 65 6e 63 65 20 6f 66 20 0a 5b  e sequence of .[
c650: 76 69 72 74 75 61 6c 20 6d 61 63 68 69 6e 65 20  virtual machine 
c660: 69 6e 73 74 72 75 63 74 69 6f 6e 73 5d 20 69 74  instructions] it
c670: 20 77 6f 75 6c 64 20 68 61 76 65 0a 75 73 65 64   would have.used
c680: 20 74 6f 20 65 78 65 63 75 74 65 20 74 68 65 20   to execute the 
c690: 63 6f 6d 6d 61 6e 64 20 68 61 64 20 74 68 65 20  command had the 
c6a0: 45 58 50 4c 41 49 4e 20 6b 65 79 77 6f 72 64 20  EXPLAIN keyword 
c6b0: 6e 6f 74 20 62 65 65 6e 20 70 72 65 73 65 6e 74  not been present
c6c0: 2e 0a 5e 57 68 65 6e 20 74 68 65 20 45 58 50 4c  ..^When the EXPL
c6d0: 41 49 4e 20 51 55 45 52 59 20 50 4c 41 4e 20 70  AIN QUERY PLAN p
c6e0: 68 72 61 73 65 20 61 70 70 65 61 72 73 2c 20 74  hrase appears, t
c6f0: 68 65 20 73 74 61 74 65 6d 65 6e 74 20 72 65 74  he statement ret
c700: 75 72 6e 73 0a 68 69 67 68 2d 6c 65 76 65 6c 20  urns.high-level 
c710: 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75  information abou
c720: 74 20 77 68 61 74 20 69 6e 64 69 63 65 73 20 77  t what indices w
c730: 6f 75 6c 64 20 68 61 76 65 20 62 65 65 6e 20 75  ould have been u
c740: 73 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  sed.</p>..<p>The
c750: 20 6f 75 74 70 75 74 20 66 72 6f 6d 20 45 58 50   output from EXP
c760: 4c 41 49 4e 20 61 6e 64 20 45 58 50 4c 41 49 4e  LAIN and EXPLAIN
c770: 20 51 55 45 52 59 20 50 4c 41 4e 20 69 73 20 69   QUERY PLAN is i
c780: 6e 74 65 6e 64 65 64 20 66 6f 72 0a 69 6e 74 65  ntended for.inte
c790: 72 61 63 74 69 76 65 20 61 6e 61 6c 79 73 69 73  ractive analysis
c7a0: 20 61 6e 64 20 74 72 6f 75 62 6c 65 73 68 6f 6f   and troubleshoo
c7b0: 74 69 6e 67 20 6f 6e 6c 79 2e 20 20 54 68 65 20  ting only.  The 
c7c0: 64 65 74 61 69 6c 73 20 6f 66 20 74 68 65 20 0a  details of the .
c7d0: 6f 75 74 70 75 74 20 66 6f 72 6d 61 74 20 61 72  output format ar
c7e0: 65 20 73 75 62 6a 65 63 74 20 74 6f 20 63 68 61  e subject to cha
c7f0: 6e 67 65 20 66 72 6f 6d 20 6f 6e 65 20 72 65 6c  nge from one rel
c800: 65 61 73 65 20 6f 66 20 53 51 4c 69 74 65 20 74  ease of SQLite t
c810: 6f 20 74 68 65 20 6e 65 78 74 2e 0a 41 70 70 6c  o the next..Appl
c820: 69 63 61 74 69 6f 6e 73 20 73 68 6f 75 6c 64 20  ications should 
c830: 6e 6f 74 20 75 73 65 20 45 58 50 4c 41 49 4e 20  not use EXPLAIN 
c840: 6f 72 20 45 58 50 4c 41 49 4e 20 51 55 45 52 59  or EXPLAIN QUERY
c850: 20 50 4c 41 4e 20 73 69 6e 63 65 0a 74 68 65 69   PLAN since.thei
c860: 72 20 65 78 61 63 74 20 62 65 68 61 76 69 6f 72  r exact behavior
c870: 20 69 73 20 75 6e 64 6f 63 75 6d 65 6e 74 65 64   is undocumented
c880: 2c 20 75 6e 73 70 65 63 69 66 69 65 64 2c 20 61  , unspecified, a
c890: 6e 64 20 76 61 72 69 61 62 6c 65 2e 3c 2f 70 3e  nd variable.</p>
c8a0: 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23  ..<tcl>.########
c8b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c8c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c8d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c8e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c8f0: 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 65  ######.Section e
c900: 78 70 72 65 73 73 69 6f 6e 20 65 78 70 72 20 7b  xpression expr {
c910: 2a 65 78 70 72 65 73 73 69 6f 6e 20 7b 65 78 70  *expression {exp
c920: 72 65 73 73 69 6f 6e 20 73 79 6e 74 61 78 7d 7d  ression syntax}}
c930: 0a 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20  ..BubbleDiagram 
c940: 65 78 70 72 20 31 0a 42 75 62 62 6c 65 44 69 61  expr 1.BubbleDia
c950: 67 72 61 6d 20 6c 69 74 65 72 61 6c 2d 76 61 6c  gram literal-val
c960: 75 65 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d  ue.BubbleDiagram
c970: 20 73 69 67 6e 65 64 2d 6e 75 6d 62 65 72 0a 42   signed-number.B
c980: 75 62 62 6c 65 44 69 61 67 72 61 6d 20 72 61 69  ubbleDiagram rai
c990: 73 65 2d 66 75 6e 63 74 69 6f 6e 0a 3c 2f 74 63  se-function.</tc
c9a0: 6c 3e 0a 0a 3c 70 3e 54 68 69 73 20 73 65 63 74  l>..<p>This sect
c9b0: 69 6f 6e 20 69 73 20 64 69 66 66 65 72 65 6e 74  ion is different
c9c0: 20 66 72 6f 6d 20 74 68 65 20 6f 74 68 65 72 73   from the others
c9d0: 2e 20 20 4d 6f 73 74 20 6f 74 68 65 72 20 73 65  .  Most other se
c9e0: 63 74 69 6f 6e 73 20 6f 66 0a 74 68 69 73 20 64  ctions of.this d
c9f0: 6f 63 75 6d 65 6e 74 20 74 61 6c 6b 73 20 61 62  ocument talks ab
ca00: 6f 75 74 20 61 20 70 61 72 74 69 63 75 6c 61 72  out a particular
ca10: 20 53 51 4c 20 63 6f 6d 6d 61 6e 64 2e 20 20 54   SQL command.  T
ca20: 68 69 73 20 73 65 63 74 69 6f 6e 20 64 6f 65 73  his section does
ca30: 0a 6e 6f 74 20 74 61 6c 6b 20 61 62 6f 75 74 20  .not talk about 
ca40: 61 20 73 74 61 6e 64 61 6c 6f 6e 65 20 63 6f 6d  a standalone com
ca50: 6d 61 6e 64 20 62 75 74 20 61 62 6f 75 74 20 22  mand but about "
ca60: 65 78 70 72 65 73 73 69 6f 6e 73 22 20 77 68 69  expressions" whi
ca70: 63 68 20 61 72 65 20 0a 73 75 62 63 6f 6d 70 6f  ch are .subcompo
ca80: 6e 65 6e 74 73 20 6f 66 20 6d 6f 73 74 20 6f 74  nents of most ot
ca90: 68 65 72 20 63 6f 6d 6d 61 6e 64 73 2e 3c 2f 70  her commands.</p
caa0: 3e 0a 0a 3c 74 63 6c 3e 68 64 5f 66 72 61 67 6d  >..<tcl>hd_fragm
cab0: 65 6e 74 20 62 69 6e 61 72 79 6f 70 73 20 7b 62  ent binaryops {b
cac0: 69 6e 61 72 79 20 6f 70 65 72 61 74 6f 72 73 7d  inary operators}
cad0: 3c 2f 74 63 6c 3e 0a 3c 68 33 3e 4f 70 65 72 61  </tcl>.<h3>Opera
cae0: 74 6f 72 73 3c 2f 68 33 3e 0a 3c 70 3e 5e 28 53  tors</h3>.<p>^(S
caf0: 51 4c 69 74 65 20 75 6e 64 65 72 73 74 61 6e 64  QLite understand
cb00: 73 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20  s the following 
cb10: 62 69 6e 61 72 79 20 6f 70 65 72 61 74 6f 72 73  binary operators
cb20: 2c 20 69 6e 20 6f 72 64 65 72 20 66 72 6f 6d 0a  , in order from.
cb30: 68 69 67 68 65 73 74 20 74 6f 20 6c 6f 77 65 73  highest to lowes
cb40: 74 20 70 72 65 63 65 64 65 6e 63 65 3a 3c 2f 70  t precedence:</p
cb50: 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c  >..<blockquote><
cb60: 70 72 65 3e 0a 3c 66 6f 6e 74 20 63 6f 6c 6f 72  pre>.<font color
cb70: 3d 22 23 32 63 32 63 66 30 22 3e 3c 62 69 67 3e  ="#2c2cf0"><big>
cb80: 7c 7c 0a 2a 20 20 20 20 2f 20 20 20 20 25 0a 2b  ||.*    /    %.+
cb90: 20 20 20 20 2d 0a 26 6c 74 3b 26 6c 74 3b 20 20      -.&lt;&lt;  
cba0: 20 26 67 74 3b 26 67 74 3b 20 20 20 26 61 6d 70   &gt;&gt;   &amp
cbb0: 3b 20 20 20 20 7c 0a 26 6c 74 3b 20 20 20 20 26  ;    |.&lt;    &
cbc0: 6c 74 3b 3d 20 20 20 26 67 74 3b 20 20 20 20 26  lt;=   &gt;    &
cbd0: 67 74 3b 3d 0a 3d 20 20 20 20 3d 3d 20 20 20 21  gt;=.=    ==   !
cbe0: 3d 20 20 20 26 6c 74 3b 26 67 74 3b 20 20 20 3c  =   &lt;&gt;   <
cbf0: 2f 62 69 67 3e 49 53 20 20 20 49 53 20 4e 4f 54  /big>IS   IS NOT
cc00: 20 20 20 49 4e 20 20 20 4c 49 4b 45 20 20 20 47     IN   LIKE   G
cc10: 4c 4f 42 20 20 20 4d 41 54 43 48 20 20 20 52 45  LOB   MATCH   RE
cc20: 47 45 58 50 0a 41 4e 44 20 20 20 0a 4f 52 3c 2f  GEXP.AND   .OR</
cc30: 66 6f 6e 74 3e 0a 3c 2f 70 72 65 3e 3c 2f 62 6c  font>.</pre></bl
cc40: 6f 63 6b 71 75 6f 74 65 3e 29 5e 0a 0a 3c 70 3e  ockquote>)^..<p>
cc50: 5e 28 53 75 70 70 6f 72 74 65 64 20 75 6e 61 72  ^(Supported unar
cc60: 79 20 70 72 65 66 69 78 20 6f 70 65 72 61 74 6f  y prefix operato
cc70: 72 73 20 61 72 65 20 74 68 65 73 65 3a 3c 2f 70  rs are these:</p
cc80: 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c  >..<blockquote><
cc90: 70 72 65 3e 0a 3c 66 6f 6e 74 20 63 6f 6c 6f 72  pre>.<font color
cca0: 3d 22 23 32 63 32 63 66 30 22 3e 3c 62 69 67 3e  ="#2c2cf0"><big>
ccb0: 2d 20 20 20 20 2b 20 20 20 20 7e 20 20 20 20 4e  -    +    ~    N
ccc0: 4f 54 3c 2f 62 69 67 3e 3c 2f 66 6f 6e 74 3e 0a  OT</big></font>.
ccd0: 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f  </pre></blockquo
cce0: 74 65 3e 29 5e 0a 0a 3c 74 63 6c 3e 68 64 5f 66  te>)^..<tcl>hd_f
ccf0: 72 61 67 6d 65 6e 74 20 63 6f 6c 6c 61 74 65 6f  ragment collateo
cd00: 70 20 7b 43 4f 4c 4c 41 54 45 20 6f 70 65 72 61  p {COLLATE opera
cd10: 74 6f 72 7d 3c 2f 74 63 6c 3e 0a 3c 70 3e 5e 54  tor}</tcl>.<p>^T
cd20: 68 65 20 43 4f 4c 4c 41 54 45 20 6f 70 65 72 61  he COLLATE opera
cd30: 74 6f 72 20 63 61 6e 20 62 65 20 74 68 6f 75 67  tor can be thoug
cd40: 68 74 20 6f 66 20 61 73 20 61 20 75 6e 61 72 79  ht of as a unary
cd50: 20 70 6f 73 74 66 69 78 0a 6f 70 65 72 61 74 6f   postfix.operato
cd60: 72 2e 20 20 5e 54 68 65 20 43 4f 4c 4c 41 54 45  r.  ^The COLLATE
cd70: 20 6f 70 65 72 61 74 6f 72 20 68 61 73 20 74 68   operator has th
cd80: 65 20 68 69 67 68 65 73 74 20 70 72 65 63 65 64  e highest preced
cd90: 65 6e 63 65 2e 0a 5e 49 74 20 61 6c 77 61 79 73  ence..^It always
cda0: 20 62 69 6e 64 73 20 6d 6f 72 65 20 74 69 67 68   binds more tigh
cdb0: 74 6c 79 20 74 68 61 6e 20 61 6e 79 20 70 72 65  tly than any pre
cdc0: 66 69 78 20 75 6e 61 72 79 20 6f 70 65 72 61 74  fix unary operat
cdd0: 6f 72 20 6f 72 0a 61 6e 79 20 62 69 6e 61 72 79  or or.any binary
cde0: 20 6f 70 65 72 61 74 6f 72 2e 3c 2f 70 3e 0a 0a   operator.</p>..
cdf0: 3c 74 63 6c 3e 68 64 5f 70 75 74 73 20 22 0a 3c  <tcl>hd_puts ".<
ce00: 70 3e 5e 54 68 65 20 75 6e 61 72 79 20 6f 70 65  p>^The unary ope
ce10: 72 61 74 6f 72 20 5b 4f 70 65 72 61 74 6f 72 20  rator [Operator 
ce20: 2b 5d 20 69 73 20 61 20 6e 6f 2d 6f 70 2e 20 20  +] is a no-op.  
ce30: 5e 49 74 20 63 61 6e 20 62 65 20 61 70 70 6c 69  ^It can be appli
ce40: 65 64 0a 74 6f 20 73 74 72 69 6e 67 73 2c 20 6e  ed.to strings, n
ce50: 75 6d 62 65 72 73 2c 20 62 6c 6f 62 73 20 6f 72  umbers, blobs or
ce60: 20 4e 55 4c 4c 20 61 6e 64 20 69 74 20 61 6c 77   NULL and it alw
ce70: 61 79 73 20 72 65 74 75 72 6e 73 20 61 20 72 65  ays returns a re
ce80: 73 75 6c 74 0a 77 69 74 68 20 74 68 65 20 73 61  sult.with the sa
ce90: 6d 65 20 76 61 6c 75 65 20 61 73 20 74 68 65 20  me value as the 
cea0: 6f 70 65 72 61 6e 64 2e 3c 2f 70 3e 22 3c 2f 74  operand.</p>"</t
ceb0: 63 6c 3e 0a 0a 3c 70 3e 4e 6f 74 65 20 74 68 61  cl>..<p>Note tha
cec0: 74 20 74 68 65 72 65 20 61 72 65 20 74 77 6f 20  t there are two 
ced0: 76 61 72 69 61 74 69 6f 6e 73 20 6f 66 20 74 68  variations of th
cee0: 65 20 65 71 75 61 6c 73 20 61 6e 64 20 6e 6f 74  e equals and not
cef0: 20 65 71 75 61 6c 73 0a 6f 70 65 72 61 74 6f 72   equals.operator
cf00: 73 2e 20 20 5e 45 71 75 61 6c 73 20 63 61 6e 20  s.  ^Equals can 
cf10: 62 65 20 65 69 74 68 65 72 0a 0a 3c 74 63 6c 3e  be either..<tcl>
cf20: 0a 68 64 5f 70 75 74 73 20 22 5b 4f 70 65 72 61  .hd_puts "[Opera
cf30: 74 6f 72 20 3d 5d 20 6f 72 20 5b 4f 70 65 72 61  tor =] or [Opera
cf40: 74 6f 72 20 3d 3d 5d 2e 0a 5e 54 68 65 20 6e 6f  tor ==]..^The no
cf50: 6e 2d 65 71 75 61 6c 73 20 6f 70 65 72 61 74 6f  n-equals operato
cf60: 72 20 63 61 6e 20 62 65 20 65 69 74 68 65 72 0a  r can be either.
cf70: 5b 4f 70 65 72 61 74 6f 72 20 21 3d 5d 20 6f 72  [Operator !=] or
cf80: 20 5b 4f 70 65 72 61 74 6f 72 20 7b 26 6c 74 3b   [Operator {&lt;
cf90: 26 67 74 3b 7d 5d 2e 0a 5e 54 68 65 20 5b 4f 70  &gt;}]..^The [Op
cfa0: 65 72 61 74 6f 72 20 7c 7c 5d 20 6f 70 65 72 61  erator ||] opera
cfb0: 74 6f 72 20 69 73 20 5c 22 63 6f 6e 63 61 74 65  tor is \"concate
cfc0: 6e 61 74 65 5c 22 20 2d 20 69 74 20 6a 6f 69 6e  nate\" - it join
cfd0: 73 20 74 6f 67 65 74 68 65 72 0a 74 68 65 20 74  s together.the t
cfe0: 77 6f 20 73 74 72 69 6e 67 73 20 6f 66 20 69 74  wo strings of it
cff0: 73 20 6f 70 65 72 61 6e 64 73 2e 0a 5e 54 68 65  s operands..^The
d000: 20 6f 70 65 72 61 74 6f 72 20 5b 4f 70 65 72 61   operator [Opera
d010: 74 6f 72 20 25 5d 20 6f 75 74 70 75 74 73 20 74  tor %] outputs t
d020: 68 65 20 76 61 6c 75 65 20 6f 66 20 69 74 73 20  he value of its 
d030: 6c 65 66 74 20 0a 6f 70 65 72 61 6e 64 20 6d 6f  left .operand mo
d040: 64 75 6c 6f 20 69 74 73 20 72 69 67 68 74 20 6f  dulo its right o
d050: 70 65 72 61 6e 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e  perand.</p>..<p>
d060: 5e 54 68 65 20 72 65 73 75 6c 74 20 6f 66 20 61  ^The result of a
d070: 6e 79 20 62 69 6e 61 72 79 20 6f 70 65 72 61 74  ny binary operat
d080: 6f 72 20 69 73 20 65 69 74 68 65 72 20 61 20 6e  or is either a n
d090: 75 6d 65 72 69 63 20 76 61 6c 75 65 20 6f 72 20  umeric value or 
d0a0: 0a 4e 55 4c 4c 2c 20 65 78 63 65 70 74 20 66 6f  .NULL, except fo
d0b0: 72 20 74 68 65 20 5b 4f 70 65 72 61 74 6f 72 20  r the [Operator 
d0c0: 7c 7c 5d 20 63 6f 6e 63 61 74 65 6e 61 74 69 6f  ||] concatenatio
d0d0: 6e 20 6f 70 65 72 61 74 6f 72 20 77 68 69 63 68  n operator which
d0e0: 20 61 6c 77 61 79 73 20 0a 65 76 61 6c 75 61 74   always .evaluat
d0f0: 65 73 20 74 6f 20 65 69 74 68 65 72 20 4e 55 4c  es to either NUL
d100: 4c 20 6f 72 20 61 20 74 65 78 74 20 76 61 6c 75  L or a text valu
d110: 65 2e 3c 2f 70 3e 22 0a 0a 68 64 5f 66 72 61 67  e.</p>"..hd_frag
d120: 6d 65 6e 74 20 7b 69 73 69 73 6e 6f 74 7d 20 7b  ment {isisnot} {
d130: 49 53 20 6f 70 65 72 61 74 6f 72 7d 20 7b 49 53  IS operator} {IS
d140: 20 4e 4f 54 20 6f 70 65 72 61 74 6f 72 7d 0a 0a   NOT operator}..
d150: 68 64 5f 70 75 74 73 20 22 3c 70 3e 5e 54 68 65  hd_puts "<p>^The
d160: 20 5b 4f 70 65 72 61 74 6f 72 20 49 53 5d 20 61   [Operator IS] a
d170: 6e 64 20 5b 4f 70 65 72 61 74 6f 72 20 7b 49 53  nd [Operator {IS
d180: 20 4e 4f 54 7d 5d 20 6f 70 65 72 61 74 6f 72 73   NOT}] operators
d190: 20 77 6f 72 6b 0a 6c 69 6b 65 20 5b 4f 70 65 72   work.like [Oper
d1a0: 61 74 6f 72 20 3d 5d 20 61 6e 64 20 5b 4f 70 65  ator =] and [Ope
d1b0: 72 61 74 6f 72 20 21 3d 5d 20 65 78 63 65 70 74  rator !=] except
d1c0: 20 77 68 65 6e 20 6f 6e 65 20 6f 72 20 62 6f 74   when one or bot
d1d0: 68 20 6f 66 20 74 68 65 0a 6f 70 65 72 61 6e 64  h of the.operand
d1e0: 73 20 61 72 65 20 4e 55 4c 4c 2e 20 5e 49 6e 20  s are NULL. ^In 
d1f0: 74 68 69 73 20 63 61 73 65 2c 20 69 66 20 62 6f  this case, if bo
d200: 74 68 20 6f 70 65 72 61 6e 64 73 20 61 72 65 20  th operands are 
d210: 4e 55 4c 4c 2c 20 74 68 65 6e 20 74 68 65 0a 49  NULL, then the.I
d220: 53 20 6f 70 65 72 61 74 6f 72 20 65 76 61 6c 75  S operator evalu
d230: 61 74 65 73 20 74 6f 20 31 20 28 74 72 75 65 29  ates to 1 (true)
d240: 20 61 6e 64 20 74 68 65 20 49 53 20 4e 4f 54 20   and the IS NOT 
d250: 6f 70 65 72 61 74 6f 72 20 65 76 61 6c 75 61 74  operator evaluat
d260: 65 73 0a 74 6f 20 30 20 28 66 61 6c 73 65 29 2e  es.to 0 (false).
d270: 20 5e 49 66 20 6f 6e 65 20 6f 70 65 72 61 6e 64   ^If one operand
d280: 20 69 73 20 4e 55 4c 4c 20 61 6e 64 20 74 68 65   is NULL and the
d290: 20 6f 74 68 65 72 20 69 73 20 6e 6f 74 2c 20 74   other is not, t
d2a0: 68 65 6e 20 74 68 65 0a 49 53 20 6f 70 65 72 61  hen the.IS opera
d2b0: 74 6f 72 20 65 76 61 6c 75 61 74 65 73 20 74 6f  tor evaluates to
d2c0: 20 30 20 28 66 61 6c 73 65 29 20 61 6e 64 20 74   0 (false) and t
d2d0: 68 65 20 49 53 20 4e 4f 54 20 6f 70 65 72 61 74  he IS NOT operat
d2e0: 6f 72 20 69 73 20 31 20 28 74 72 75 65 29 2e 0a  or is 1 (true)..
d2f0: 5e 49 74 20 69 73 20 6e 6f 74 20 70 6f 73 73 69  ^It is not possi
d300: 62 6c 65 20 66 6f 72 20 61 6e 20 49 53 20 6f 72  ble for an IS or
d310: 20 49 53 20 4e 4f 54 20 65 78 70 72 65 73 73 69   IS NOT expressi
d320: 6f 6e 20 74 6f 20 65 76 61 6c 75 61 74 65 20 74  on to evaluate t
d330: 6f 20 4e 55 4c 4c 2e 0a 5e 4f 70 65 72 61 74 6f  o NULL..^Operato
d340: 72 73 20 5b 4f 70 65 72 61 74 6f 72 20 49 53 5d  rs [Operator IS]
d350: 20 61 6e 64 20 5b 4f 70 65 72 61 74 6f 72 20 7b   and [Operator {
d360: 49 53 20 4e 4f 54 7d 5d 20 68 61 76 65 20 74 68  IS NOT}] have th
d370: 65 20 73 61 6d 65 20 0a 70 72 65 63 65 64 65 6e  e same .preceden
d380: 63 65 20 61 73 20 5b 4f 70 65 72 61 74 6f 72 20  ce as [Operator 
d390: 3d 5d 2e 22 0a 0a 3c 74 63 6c 3e 68 64 5f 66 72  =]."..<tcl>hd_fr
d3a0: 61 67 6d 65 6e 74 20 6c 69 74 76 61 6c 75 65 20  agment litvalue 
d3b0: 7b 6c 69 74 65 72 61 6c 20 76 61 6c 75 65 7d 3c  {literal value}<
d3c0: 2f 74 63 6c 3e 0a 3c 68 33 3e 4c 69 74 65 72 61  /tcl>.<h3>Litera
d3d0: 6c 20 56 61 6c 75 65 73 3c 2f 68 33 3e 0a 3c 70  l Values</h3>.<p
d3e0: 3e 0a 5e 41 20 6c 69 74 65 72 61 6c 20 76 61 6c  >.^A literal val
d3f0: 75 65 20 69 73 20 61 20 63 6f 6e 73 74 61 6e 74  ue is a constant
d400: 20 6f 66 20 73 6f 6d 65 20 6b 69 6e 64 2e 0a 5e   of some kind..^
d410: 4c 69 74 65 72 61 6c 20 76 61 6c 75 65 73 20 6d  Literal values m
d420: 61 79 20 62 65 20 69 6e 74 65 67 65 72 73 2c 20  ay be integers, 
d430: 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20 6e  floating point n
d440: 75 6d 62 65 72 73 2c 20 73 74 72 69 6e 67 73 2c  umbers, strings,
d450: 0a 42 4c 4f 42 73 2c 20 6f 72 20 4e 55 4c 4c 73  .BLOBs, or NULLs
d460: 2e 0a 5e 53 63 69 65 6e 74 69 66 69 63 20 6e 6f  ..^Scientific no
d470: 74 61 74 69 6f 6e 20 69 73 20 73 75 70 70 6f 72  tation is suppor
d480: 74 65 64 20 66 6f 72 20 66 6c 6f 61 74 69 6e 67  ted for floating
d490: 20 70 6f 69 6e 74 20 6c 69 74 65 72 61 6c 20 76   point literal v
d4a0: 61 6c 75 65 73 2e 0a 5e 28 54 68 65 20 22 2e 22  alues..^(The "."
d4b0: 20 63 68 61 72 61 63 74 65 72 20 69 73 20 61 6c   character is al
d4c0: 77 61 79 73 20 75 73 65 64 20 0a 61 73 20 74 68  ways used .as th
d4d0: 65 20 64 65 63 69 6d 61 6c 20 70 6f 69 6e 74 20  e decimal point 
d4e0: 65 76 65 6e 20 69 66 20 74 68 65 20 6c 6f 63 61  even if the loca
d4f0: 6c 65 20 73 65 74 74 69 6e 67 20 73 70 65 63 69  le setting speci
d500: 66 69 65 73 20 22 2c 22 20 66 6f 72 0a 74 68 69  fies "," for.thi
d510: 73 20 72 6f 6c 65 20 2d 20 74 68 65 20 75 73 65  s role - the use
d520: 20 6f 66 20 22 2c 22 20 66 6f 72 20 74 68 65 20   of "," for the 
d530: 64 65 63 69 6d 61 6c 20 70 6f 69 6e 74 20 77 6f  decimal point wo
d540: 75 6c 64 20 72 65 73 75 6c 74 20 69 6e 0a 73 79  uld result in.sy
d550: 6e 74 61 63 74 69 63 20 61 6d 62 69 67 75 69 74  ntactic ambiguit
d560: 79 2e 29 5e 20 20 5e 41 20 73 74 72 69 6e 67 20  y.)^  ^A string 
d570: 63 6f 6e 73 74 61 6e 74 20 69 73 20 66 6f 72 6d  constant is form
d580: 65 64 20 62 79 20 65 6e 63 6c 6f 73 69 6e 67 20  ed by enclosing 
d590: 74 68 65 0a 73 74 72 69 6e 67 20 69 6e 20 73 69  the.string in si
d5a0: 6e 67 6c 65 20 71 75 6f 74 65 73 20 28 27 29 2e  ngle quotes (').
d5b0: 20 20 5e 41 20 73 69 6e 67 6c 65 20 71 75 6f 74    ^A single quot
d5c0: 65 20 77 69 74 68 69 6e 20 74 68 65 20 73 74 72  e within the str
d5d0: 69 6e 67 20 63 61 6e 0a 62 65 20 65 6e 63 6f 64  ing can.be encod
d5e0: 65 64 20 62 79 20 70 75 74 74 69 6e 67 20 74 77  ed by putting tw
d5f0: 6f 20 73 69 6e 67 6c 65 20 71 75 6f 74 65 73 20  o single quotes 
d600: 69 6e 20 61 20 72 6f 77 20 2d 20 61 73 20 69 6e  in a row - as in
d610: 20 50 61 73 63 61 6c 2e 0a 43 2d 73 74 79 6c 65   Pascal..C-style
d620: 20 65 73 63 61 70 65 73 20 75 73 69 6e 67 20 74   escapes using t
d630: 68 65 20 62 61 63 6b 73 6c 61 73 68 20 63 68 61  he backslash cha
d640: 72 61 63 74 65 72 20 61 72 65 20 6e 6f 74 20 73  racter are not s
d650: 75 70 70 6f 72 74 65 64 20 62 65 63 61 75 73 65  upported because
d660: 0a 74 68 65 79 20 61 72 65 20 6e 6f 74 20 73 74  .they are not st
d670: 61 6e 64 61 72 64 20 53 51 4c 2e 0a 5e 42 4c 4f  andard SQL..^BLO
d680: 42 20 6c 69 74 65 72 61 6c 73 20 61 72 65 20 73  B literals are s
d690: 74 72 69 6e 67 20 6c 69 74 65 72 61 6c 73 20 63  tring literals c
d6a0: 6f 6e 74 61 69 6e 69 6e 67 20 68 65 78 61 64 65  ontaining hexade
d6b0: 63 69 6d 61 6c 20 64 61 74 61 20 61 6e 64 0a 70  cimal data and.p
d6c0: 72 65 63 65 64 65 64 20 62 79 20 61 20 73 69 6e  receded by a sin
d6d0: 67 6c 65 20 22 78 22 20 6f 72 20 22 58 22 20 63  gle "x" or "X" c
d6e0: 68 61 72 61 63 74 65 72 2e 20 20 5e 28 46 6f 72  haracter.  ^(For
d6f0: 20 65 78 61 6d 70 6c 65 3a 3c 2f 70 3e 0a 0a 3c   example:</p>..<
d700: 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70 72 65 3e  blockquote><pre>
d710: 0a 58 27 35 33 35 31 34 43 36 39 37 34 36 35 27  .X'53514C697465'
d720: 0a 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75  .</pre></blockqu
d730: 6f 74 65 3e 29 5e 0a 0a 3c 70 3e 0a 5e 41 20 6c  ote>)^..<p>.^A l
d740: 69 74 65 72 61 6c 20 76 61 6c 75 65 20 63 61 6e  iteral value can
d750: 20 61 6c 73 6f 20 62 65 20 74 68 65 20 74 6f 6b   also be the tok
d760: 65 6e 20 22 4e 55 4c 4c 22 2e 0a 3c 2f 70 3e 0a  en "NULL"..</p>.
d770: 0a 3c 74 63 6c 3e 68 64 5f 66 72 61 67 6d 65 6e  .<tcl>hd_fragmen
d780: 74 20 76 61 72 70 61 72 61 6d 20 70 61 72 61 6d  t varparam param
d790: 65 74 65 72 20 70 61 72 61 6d 65 74 65 72 73 20  eter parameters 
d7a0: 7b 62 6f 75 6e 64 20 70 61 72 61 6d 65 74 65 72  {bound parameter
d7b0: 7d 20 7b 62 6f 75 6e 64 20 70 61 72 61 6d 65 74  } {bound paramet
d7c0: 65 72 73 7d 3c 2f 74 63 6c 3e 0a 3c 68 33 3e 50  ers}</tcl>.<h3>P
d7d0: 61 72 61 6d 65 74 65 72 73 3c 2f 68 33 3e 0a 3c  arameters</h3>.<
d7e0: 70 3e 0a 41 20 22 76 61 72 69 61 62 6c 65 22 20  p>.A "variable" 
d7f0: 6f 72 20 22 70 61 72 61 6d 65 74 65 72 22 20 74  or "parameter" t
d800: 6f 6b 65 6e 0a 73 70 65 63 69 66 69 65 73 20 61  oken.specifies a
d810: 20 70 6c 61 63 65 68 6f 6c 64 65 72 20 69 6e 20   placeholder in 
d820: 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20 66  the expression f
d830: 6f 72 20 61 20 6c 69 74 65 72 61 6c 0a 76 61 6c  or a literal.val
d840: 75 65 20 74 68 61 74 20 69 73 20 66 69 6c 6c 65  ue that is fille
d850: 64 20 69 6e 20 61 74 20 72 75 6e 74 69 6d 65 20  d in at runtime 
d860: 75 73 69 6e 67 20 74 68 65 0a 5b 73 71 6c 69 74  using the.[sqlit
d870: 65 33 5f 62 69 6e 64 5f 62 6c 6f 62 28 29 20 7c  e3_bind_blob() |
d880: 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 28 29 5d   sqlite3_bind()]
d890: 20 66 61 6d 69 6c 79 20 6f 66 20 43 2f 43 2b 2b   family of C/C++
d8a0: 20 69 6e 74 65 72 66 61 63 65 73 2e 0a 5e 28 50   interfaces..^(P
d8b0: 61 72 61 6d 65 74 65 72 73 20 63 61 6e 20 74 61  arameters can ta
d8c0: 6b 65 20 73 65 76 65 72 61 6c 20 66 6f 72 6d 73  ke several forms
d8d0: 3a 0a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75  :.</p>..<blockqu
d8e0: 6f 74 65 3e 0a 3c 74 61 62 6c 65 3e 0a 3c 74 72  ote>.<table>.<tr
d8f0: 3e 0a 3c 74 64 20 61 6c 69 67 6e 3d 22 72 69 67  >.<td align="rig
d900: 68 74 22 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  ht" valign="top"
d910: 3e 3c 62 3e 3f 3c 2f 62 3e 3c 69 3e 4e 4e 4e 3c  ><b>?</b><i>NNN<
d920: 2f 69 3e 3c 2f 74 64 3e 3c 74 64 20 77 69 64 74  /i></td><td widt
d930: 68 3d 22 32 30 22 3e 3c 2f 74 64 3e 0a 3c 74 64  h="20"></td>.<td
d940: 3e 41 20 71 75 65 73 74 69 6f 6e 20 6d 61 72 6b  >A question mark
d950: 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 61 20 6e   followed by a n
d960: 75 6d 62 65 72 20 3c 69 3e 4e 4e 4e 3c 2f 69 3e  umber <i>NNN</i>
d970: 20 68 6f 6c 64 73 20 61 20 73 70 6f 74 20 66 6f   holds a spot fo
d980: 72 20 74 68 65 0a 4e 4e 4e 2d 74 68 20 70 61 72  r the.NNN-th par
d990: 61 6d 65 74 65 72 2e 20 20 4e 4e 4e 20 6d 75 73  ameter.  NNN mus
d9a0: 74 20 62 65 20 62 65 74 77 65 65 6e 20 31 20 61  t be between 1 a
d9b0: 6e 64 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 56  nd [SQLITE_MAX_V
d9c0: 41 52 49 41 42 4c 45 5f 4e 55 4d 42 45 52 5d 2e  ARIABLE_NUMBER].
d9d0: 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 74 72 3e  </td>.</tr>.<tr>
d9e0: 0a 3c 74 64 20 61 6c 69 67 6e 3d 22 72 69 67 68  .<td align="righ
d9f0: 74 22 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e  t" valign="top">
da00: 3c 62 3e 3f 3c 2f 62 3e 3c 2f 74 64 3e 3c 74 64  <b>?</b></td><td
da10: 20 77 69 64 74 68 3d 22 32 30 22 3e 3c 2f 74 64   width="20"></td
da20: 3e 0a 3c 74 64 3e 41 20 71 75 65 73 74 69 6f 6e  >.<td>A question
da30: 20 6d 61 72 6b 20 74 68 61 74 20 69 73 20 6e 6f   mark that is no
da40: 74 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 61 20  t followed by a 
da50: 6e 75 6d 62 65 72 20 68 6f 6c 64 73 20 61 20 73  number holds a s
da60: 70 6f 74 20 66 6f 72 0a 74 68 65 20 6e 65 78 74  pot for.the next
da70: 20 75 6e 75 73 65 64 20 70 61 72 61 6d 65 74 65   unused paramete
da80: 72 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 74  r.</td>.</tr>.<t
da90: 72 3e 0a 3c 74 64 20 61 6c 69 67 6e 3d 22 72 69  r>.<td align="ri
daa0: 67 68 74 22 20 76 61 6c 69 67 6e 3d 22 74 6f 70  ght" valign="top
dab0: 22 3e 3c 62 3e 3a 3c 2f 62 3e 3c 69 3e 41 41 41  "><b>:</b><i>AAA
dac0: 41 3c 2f 69 3e 3c 2f 74 64 3e 3c 74 64 20 77 69  A</i></td><td wi
dad0: 64 74 68 3d 22 32 30 22 3e 3c 2f 74 64 3e 0a 3c  dth="20"></td>.<
dae0: 74 64 3e 41 20 63 6f 6c 6f 6e 20 66 6f 6c 6c 6f  td>A colon follo
daf0: 77 65 64 20 62 79 20 61 6e 20 69 64 65 6e 74 69  wed by an identi
db00: 66 69 65 72 20 6e 61 6d 65 20 68 6f 6c 64 73 20  fier name holds 
db10: 61 20 73 70 6f 74 20 66 6f 72 20 61 20 6e 61 6d  a spot for a nam
db20: 65 64 0a 70 61 72 61 6d 65 74 65 72 20 77 69 74  ed.parameter wit
db30: 68 20 74 68 65 20 6e 61 6d 65 20 41 41 41 41 2e  h the name AAAA.
db40: 20 20 4e 61 6d 65 64 20 70 61 72 61 6d 65 74 65    Named paramete
db50: 72 73 20 61 72 65 20 61 6c 73 6f 20 6e 75 6d 62  rs are also numb
db60: 65 72 65 64 2e 0a 54 68 65 20 6e 75 6d 62 65 72  ered..The number
db70: 20 61 73 73 69 67 6e 65 64 20 69 73 20 74 68 65   assigned is the
db80: 20 6e 65 78 74 20 75 6e 75 73 65 64 20 6e 75 6d   next unused num
db90: 62 65 72 2e 20 20 54 6f 20 61 76 6f 69 64 20 63  ber.  To avoid c
dba0: 6f 6e 66 75 73 69 6f 6e 2c 0a 69 74 20 69 73 20  onfusion,.it is 
dbb0: 62 65 73 74 20 74 6f 20 61 76 6f 69 64 20 6d 69  best to avoid mi
dbc0: 78 69 6e 67 20 6e 61 6d 65 64 20 61 6e 64 20 6e  xing named and n
dbd0: 75 6d 62 65 72 65 64 20 70 61 72 61 6d 65 74 65  umbered paramete
dbe0: 72 73 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c  rs.</td>.</tr>.<
dbf0: 74 72 3e 0a 3c 74 64 20 61 6c 69 67 6e 3d 22 72  tr>.<td align="r
dc00: 69 67 68 74 22 20 76 61 6c 69 67 6e 3d 22 74 6f  ight" valign="to
dc10: 70 22 3e 3c 62 3e 40 3c 2f 62 3e 3c 69 3e 41 41  p"><b>@</b><i>AA
dc20: 41 41 3c 2f 69 3e 3c 2f 74 64 3e 3c 74 64 20 77  AA</i></td><td w
dc30: 69 64 74 68 3d 22 32 30 22 3e 3c 2f 74 64 3e 0a  idth="20"></td>.
dc40: 3c 74 64 3e 41 6e 20 22 61 74 22 20 73 69 67 6e  <td>An "at" sign
dc50: 20 77 6f 72 6b 73 20 65 78 61 63 74 6c 79 20 6c   works exactly l
dc60: 69 6b 65 20 61 20 63 6f 6c 6f 6e 2e 3c 2f 74 64  ike a colon.</td
dc70: 3e 0a 3c 2f 74 72 3e 0a 3c 74 72 3e 0a 3c 74 64  >.</tr>.<tr>.<td
dc80: 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 20 76   align="right" v
dc90: 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 3c 62 3e 24  align="top"><b>$
dca0: 3c 2f 62 3e 3c 69 3e 41 41 41 41 3c 2f 69 3e 3c  </b><i>AAAA</i><
dcb0: 2f 74 64 3e 3c 74 64 20 77 69 64 74 68 3d 22 32  /td><td width="2
dcc0: 30 22 3e 3c 2f 74 64 3e 0a 3c 74 64 3e 41 20 64  0"></td>.<td>A d
dcd0: 6f 6c 6c 61 72 2d 73 69 67 6e 20 66 6f 6c 6c 6f  ollar-sign follo
dce0: 77 65 64 20 62 79 20 61 6e 20 69 64 65 6e 74 69  wed by an identi
dcf0: 66 69 65 72 20 6e 61 6d 65 20 61 6c 73 6f 20 68  fier name also h
dd00: 6f 6c 64 73 20 61 20 73 70 6f 74 20 66 6f 72 20  olds a spot for 
dd10: 61 20 6e 61 6d 65 64 0a 70 61 72 61 6d 65 74 65  a named.paramete
dd20: 72 20 77 69 74 68 20 74 68 65 20 6e 61 6d 65 20  r with the name 
dd30: 41 41 41 41 2e 20 20 54 68 65 20 69 64 65 6e 74  AAAA.  The ident
dd40: 69 66 69 65 72 20 6e 61 6d 65 20 69 6e 20 74 68  ifier name in th
dd50: 69 73 20 63 61 73 65 20 63 61 6e 20 69 6e 63 6c  is case can incl
dd60: 75 64 65 0a 6f 6e 65 20 6f 72 20 6d 6f 72 65 20  ude.one or more 
dd70: 6f 63 63 75 72 61 6e 63 65 73 20 6f 66 20 22 3a  occurances of ":
dd80: 3a 22 20 61 6e 64 20 61 20 73 75 66 66 69 78 20  :" and a suffix 
dd90: 65 6e 63 6c 6f 73 65 64 20 69 6e 20 22 28 2e 2e  enclosed in "(..
dda0: 2e 29 22 20 63 6f 6e 74 61 69 6e 69 6e 67 0a 61  .)" containing.a
ddb0: 6e 79 20 74 65 78 74 20 61 74 20 61 6c 6c 2e 20  ny text at all. 
ddc0: 20 54 68 69 73 20 73 79 6e 74 61 78 20 69 73 20   This syntax is 
ddd0: 74 68 65 20 66 6f 72 6d 20 6f 66 20 61 20 76 61  the form of a va
dde0: 72 69 61 62 6c 65 20 6e 61 6d 65 20 69 6e 20 74  riable name in t
ddf0: 68 65 0a 5b 68 74 74 70 3a 2f 2f 77 77 77 2e 74  he.[http://www.t
de00: 63 6c 2e 74 6b 2f 20 7c 20 54 63 6c 20 70 72 6f  cl.tk/ | Tcl pro
de10: 67 72 61 6d 6d 69 6e 67 20 6c 61 6e 67 75 61 67  gramming languag
de20: 65 5d 2e 20 20 54 68 65 20 70 72 65 73 65 6e 63  e].  The presenc
de30: 65 0a 6f 66 20 74 68 69 73 20 73 79 6e 74 61 78  e.of this syntax
de40: 20 72 65 73 75 6c 74 73 20 66 72 6f 6d 20 74 68   results from th
de50: 65 20 66 61 63 74 20 74 68 61 74 20 53 51 4c 69  e fact that SQLi
de60: 74 65 20 69 73 20 72 65 61 6c 6c 79 20 61 20 0a  te is really a .
de70: 5b 54 63 6c 20 65 78 74 65 6e 73 69 6f 6e 5d 20  [Tcl extension] 
de80: 74 68 61 74 20 68 61 73 20 65 73 63 61 70 65 64  that has escaped
de90: 20 69 6e 74 6f 20 74 68 65 20 77 69 6c 64 2e 3c   into the wild.<
dea0: 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 2f 74 61 62  /td>.</tr>.</tab
deb0: 6c 65 3e 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65  le>.</blockquote
dec0: 3e 29 5e 0a 0a 3c 70 3e 5e 50 61 72 61 6d 65 74  >)^..<p>^Paramet
ded0: 65 72 73 20 74 68 61 74 20 61 72 65 20 6e 6f 74  ers that are not
dee0: 20 61 73 73 69 67 6e 65 64 20 76 61 6c 75 65 73   assigned values
def0: 20 75 73 69 6e 67 0a 5b 73 71 6c 69 74 65 33 5f   using.[sqlite3_
df00: 62 69 6e 64 5f 62 6c 6f 62 28 29 20 7c 20 73 71  bind_blob() | sq
df10: 6c 69 74 65 33 5f 62 69 6e 64 28 29 5d 20 61 72  lite3_bind()] ar
df20: 65 20 74 72 65 61 74 65 64 0a 61 73 20 4e 55 4c  e treated.as NUL
df30: 4c 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 68 64 5f  L.</p>..<tcl>hd_
df40: 66 72 61 67 6d 65 6e 74 20 6c 69 6b 65 20 4c 49  fragment like LI
df50: 4b 45 20 45 53 43 41 50 45 3c 2f 74 63 6c 3e 0a  KE ESCAPE</tcl>.
df60: 3c 68 33 3e 54 68 65 20 4c 49 4b 45 20 61 6e 64  <h3>The LIKE and
df70: 20 47 4c 4f 42 20 6f 70 65 72 61 74 6f 72 73 3c   GLOB operators<
df80: 2f 68 33 3e 0a 3c 70 3e 5e 54 68 65 20 4c 49 4b  /h3>.<p>^The LIK
df90: 45 20 6f 70 65 72 61 74 6f 72 20 64 6f 65 73 20  E operator does 
dfa0: 61 20 70 61 74 74 65 72 6e 20 6d 61 74 63 68 69  a pattern matchi
dfb0: 6e 67 20 63 6f 6d 70 61 72 69 73 6f 6e 2e 20 5e  ng comparison. ^
dfc0: 54 68 65 20 6f 70 65 72 61 6e 64 0a 74 6f 20 74  The operand.to t
dfd0: 68 65 20 72 69 67 68 74 20 6f 66 20 74 68 65 20  he right of the 
dfe0: 4c 49 4b 45 20 6f 70 65 72 61 74 6f 72 20 63 6f  LIKE operator co
dff0: 6e 74 61 69 6e 73 20 74 68 65 20 70 61 74 74 65  ntains the patte
e000: 72 6e 20 61 6e 64 20 74 68 65 20 6c 65 66 74 20  rn and the left 
e010: 68 61 6e 64 0a 6f 70 65 72 61 6e 64 20 63 6f 6e  hand.operand con
e020: 74 61 69 6e 73 20 74 68 65 20 73 74 72 69 6e 67  tains the string
e030: 20 74 6f 20 6d 61 74 63 68 20 61 67 61 69 6e 73   to match agains
e040: 74 20 74 68 65 20 70 61 74 74 65 72 6e 2e 0a 0a  t the pattern...
e050: 3c 74 63 6c 3e 68 64 5f 70 75 74 73 20 22 5e 41  <tcl>hd_puts "^A
e060: 20 70 65 72 63 65 6e 74 20 73 79 6d 62 6f 6c 20   percent symbol 
e070: 28 5c 22 25 5c 22 29 20 69 6e 20 74 68 65 20 4c  (\"%\") in the L
e080: 49 4b 45 20 70 61 74 74 65 72 6e 20 6d 61 74 63  IKE pattern matc
e090: 68 65 73 20 61 6e 79 0a 73 65 71 75 65 6e 63 65  hes any.sequence
e0a0: 20 6f 66 20 7a 65 72 6f 20 6f 72 20 6d 6f 72 65   of zero or more
e0b0: 20 63 68 61 72 61 63 74 65 72 73 20 69 6e 20 74   characters in t
e0c0: 68 65 20 73 74 72 69 6e 67 2e 20 20 5e 41 6e 20  he string.  ^An 
e0d0: 75 6e 64 65 72 73 63 6f 72 65 0a 28 5c 22 5f 5c  underscore.(\"_\
e0e0: 22 29 20 69 6e 20 74 68 65 20 4c 49 4b 45 20 70  ") in the LIKE p
e0f0: 61 74 74 65 72 6e 20 6d 61 74 63 68 65 73 20 61  attern matches a
e100: 6e 79 20 73 69 6e 67 6c 65 20 63 68 61 72 61 63  ny single charac
e110: 74 65 72 20 69 6e 20 74 68 65 0a 73 74 72 69 6e  ter in the.strin
e120: 67 2e 20 20 5e 28 41 6e 79 20 6f 74 68 65 72 20  g.  ^(Any other 
e130: 63 68 61 72 61 63 74 65 72 20 6d 61 74 63 68 65  character matche
e140: 73 20 69 74 73 65 6c 66 20 6f 72 20 69 74 73 20  s itself or its 
e150: 6c 6f 77 65 72 2f 75 70 70 65 72 20 63 61 73 65  lower/upper case
e160: 0a 65 71 75 69 76 61 6c 65 6e 74 20 28 69 2e 65  .equivalent (i.e
e170: 2e 20 63 61 73 65 2d 69 6e 73 65 6e 73 69 74 69  . case-insensiti
e180: 76 65 20 6d 61 74 63 68 69 6e 67 29 2e 29 5e 20  ve matching).)^ 
e190: 20 28 41 20 62 75 67 3a 20 5e 53 51 4c 69 74 65   (A bug: ^SQLite
e1a0: 20 6f 6e 6c 79 0a 75 6e 64 65 72 73 74 61 6e 64   only.understand
e1b0: 73 20 75 70 70 65 72 2f 6c 6f 77 65 72 20 63 61  s upper/lower ca
e1c0: 73 65 20 66 6f 72 20 41 53 43 49 49 20 63 68 61  se for ASCII cha
e1d0: 72 61 63 74 65 72 73 20 62 79 20 64 65 66 61 75  racters by defau
e1e0: 6c 74 2e 20 20 5e 54 68 65 0a 4c 49 4b 45 20 6f  lt.  ^The.LIKE o
e1f0: 70 65 72 61 74 6f 72 20 69 73 20 63 61 73 65 20  perator is case 
e200: 73 65 6e 73 69 74 69 76 65 20 62 79 20 64 65 66  sensitive by def
e210: 61 75 6c 74 20 66 6f 72 20 75 6e 69 63 6f 64 65  ault for unicode
e220: 20 63 68 61 72 61 63 74 65 72 73 20 74 68 61 74   characters that
e230: 20 61 72 65 0a 62 65 79 6f 6e 64 20 74 68 65 20   are.beyond the 
e240: 41 53 43 49 49 20 72 61 6e 67 65 2e 20 20 46 6f  ASCII range.  Fo
e250: 72 20 65 78 61 6d 70 6c 65 2c 0a 5e 74 68 65 20  r example,.^the 
e260: 65 78 70 72 65 73 73 69 6f 6e 20 3c 62 3e 27 61  expression <b>'a
e270: 27 26 6e 62 73 70 3b 4c 49 4b 45 26 6e 62 73 70  '&nbsp;LIKE&nbsp
e280: 3b 27 41 27 3c 2f 62 3e 0a 69 73 20 54 52 55 45  ;'A'</b>.is TRUE
e290: 20 62 75 74 20 3c 62 3e 27 26 61 65 6c 69 67 3b   but <b>'&aelig;
e2a0: 27 26 6e 62 73 70 3b 4c 49 4b 45 26 6e 62 73 70  '&nbsp;LIKE&nbsp
e2b0: 3b 27 26 41 45 6c 69 67 3b 27 3c 2f 62 3e 20 69  ;'&AElig;'</b> i
e2c0: 73 20 46 41 4c 53 45 2e 29 3c 70 3e 22 3c 2f 74  s FALSE.)<p>"</t
e2d0: 63 6c 3e 0a 0a 3c 70 3e 5e 49 66 20 74 68 65 20  cl>..<p>^If the 
e2e0: 6f 70 74 69 6f 6e 61 6c 20 45 53 43 41 50 45 20  optional ESCAPE 
e2f0: 63 6c 61 75 73 65 20 69 73 20 70 72 65 73 65 6e  clause is presen
e300: 74 2c 20 74 68 65 6e 20 74 68 65 20 65 78 70 72  t, then the expr
e310: 65 73 73 69 6f 6e 0a 66 6f 6c 6c 6f 77 69 6e 67  ession.following
e320: 20 74 68 65 20 45 53 43 41 50 45 20 6b 65 79 77   the ESCAPE keyw
e330: 6f 72 64 20 6d 75 73 74 20 65 76 61 6c 75 61 74  ord must evaluat
e340: 65 20 74 6f 20 61 20 73 74 72 69 6e 67 20 63 6f  e to a string co
e350: 6e 73 69 73 74 69 6e 67 20 6f 66 0a 61 20 73 69  nsisting of.a si
e360: 6e 67 6c 65 20 63 68 61 72 61 63 74 65 72 2e 20  ngle character. 
e370: 5e 54 68 69 73 20 63 68 61 72 61 63 74 65 72 20  ^This character 
e380: 6d 61 79 20 62 65 20 75 73 65 64 20 69 6e 20 74  may be used in t
e390: 68 65 20 4c 49 4b 45 20 70 61 74 74 65 72 6e 0a  he LIKE pattern.
e3a0: 74 6f 20 69 6e 63 6c 75 64 65 20 6c 69 74 65 72  to include liter
e3b0: 61 6c 20 70 65 72 63 65 6e 74 20 6f 72 20 75 6e  al percent or un
e3c0: 64 65 72 73 63 6f 72 65 20 63 68 61 72 61 63 74  derscore charact
e3d0: 65 72 73 2e 20 5e 54 68 65 20 65 73 63 61 70 65  ers. ^The escape
e3e0: 0a 63 68 61 72 61 63 74 65 72 20 66 6f 6c 6c 6f  .character follo
e3f0: 77 65 64 20 62 79 20 61 20 70 65 72 63 65 6e 74  wed by a percent
e400: 20 73 79 6d 62 6f 6c 20 28 25 29 2c 20 75 6e 64   symbol (%), und
e410: 65 72 73 63 6f 72 65 20 28 5f 29 2c 20 6f 72 20  erscore (_), or 
e420: 61 20 73 65 63 6f 6e 64 0a 69 6e 73 74 61 6e 63  a second.instanc
e430: 65 20 6f 66 20 74 68 65 20 65 73 63 61 70 65 20  e of the escape 
e440: 63 68 61 72 61 63 74 65 72 20 69 74 73 65 6c 66  character itself
e450: 20 6d 61 74 63 68 65 73 20 61 0a 6c 69 74 65 72   matches a.liter
e460: 61 6c 20 70 65 72 63 65 6e 74 20 73 79 6d 62 6f  al percent symbo
e470: 6c 2c 20 75 6e 64 65 72 73 63 6f 72 65 2c 20 6f  l, underscore, o
e480: 72 20 61 20 73 69 6e 67 6c 65 20 65 73 63 61 70  r a single escap
e490: 65 20 63 68 61 72 61 63 74 65 72 2c 0a 72 65 73  e character,.res
e4a0: 70 65 63 74 69 76 65 6c 79 2e 0a 0a 3c 70 3e 5e  pectively...<p>^
e4b0: 54 68 65 20 69 6e 66 69 78 20 4c 49 4b 45 20 6f  The infix LIKE o
e4c0: 70 65 72 61 74 6f 72 20 69 73 20 69 6d 70 6c 65  perator is imple
e4d0: 6d 65 6e 74 65 64 20 62 79 20 63 61 6c 6c 69 6e  mented by callin
e4e0: 67 20 74 68 65 0a 61 70 70 6c 69 63 61 74 69 6f  g the.applicatio
e4f0: 6e 2d 64 65 66 69 6e 65 64 20 53 51 4c 20 66 75  n-defined SQL fu
e500: 6e 63 74 69 6f 6e 73 20 5b 6c 69 6b 65 28 3c 69  nctions [like(<i
e510: 3e 59 3c 2f 69 3e 2c 3c 69 3e 58 3c 2f 69 3e 29  >Y</i>,<i>X</i>)
e520: 5d 20 6f 72 0a 5b 6c 69 6b 65 28 3c 69 3e 59 3c  ] or.[like(<i>Y<
e530: 2f 69 3e 2c 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e  /i>,<i>X</i>,<i>
e540: 5a 3c 2f 69 3e 29 5d 3c 2f 61 3e 2e 3c 2f 70 3e  Z</i>)]</a>.</p>
e550: 0a 0a 3c 70 3e 5e 54 68 65 20 4c 49 4b 45 20 6f  ..<p>^The LIKE o
e560: 70 65 72 61 74 6f 72 20 63 61 6e 20 62 65 20 6d  perator can be m
e570: 61 64 65 20 63 61 73 65 20 73 65 6e 73 69 74 69  ade case sensiti
e580: 76 65 20 75 73 69 6e 67 20 74 68 65 0a 5b 63 61  ve using the.[ca
e590: 73 65 5f 73 65 6e 73 69 74 69 76 65 5f 6c 69 6b  se_sensitive_lik
e5a0: 65 20 70 72 61 67 6d 61 5d 2e 3c 2f 70 3e 0a 0a  e pragma].</p>..
e5b0: 3c 74 63 6c 3e 68 64 5f 66 72 61 67 6d 65 6e 74  <tcl>hd_fragment
e5c0: 20 67 6c 6f 62 20 47 4c 4f 42 3c 2f 74 63 6c 3e   glob GLOB</tcl>
e5d0: 0a 3c 70 3e 5e 54 68 65 20 47 4c 4f 42 20 6f 70  .<p>^The GLOB op
e5e0: 65 72 61 74 6f 72 20 69 73 20 73 69 6d 69 6c 61  erator is simila
e5f0: 72 20 74 6f 20 4c 49 4b 45 20 62 75 74 20 75 73  r to LIKE but us
e600: 65 73 20 74 68 65 20 55 6e 69 78 0a 66 69 6c 65  es the Unix.file
e610: 20 67 6c 6f 62 62 69 6e 67 20 73 79 6e 74 61 78   globbing syntax
e620: 20 66 6f 72 20 69 74 73 20 77 69 6c 64 63 61 72   for its wildcar
e630: 64 73 2e 20 20 5e 41 6c 73 6f 2c 20 47 4c 4f 42  ds.  ^Also, GLOB
e640: 20 69 73 20 63 61 73 65 0a 73 65 6e 73 69 74 69   is case.sensiti
e650: 76 65 2c 20 75 6e 6c 69 6b 65 20 4c 49 4b 45 2e  ve, unlike LIKE.
e660: 20 20 5e 42 6f 74 68 20 47 4c 4f 42 20 61 6e 64    ^Both GLOB and
e670: 20 4c 49 4b 45 20 6d 61 79 20 62 65 20 70 72 65   LIKE may be pre
e680: 63 65 64 65 64 20 62 79 0a 74 68 65 20 4e 4f 54  ceded by.the NOT
e690: 20 6b 65 79 77 6f 72 64 20 74 6f 20 69 6e 76 65   keyword to inve
e6a0: 72 74 20 74 68 65 20 73 65 6e 73 65 20 6f 66 20  rt the sense of 
e6b0: 74 68 65 20 74 65 73 74 2e 20 20 5e 54 68 65 20  the test.  ^The 
e6c0: 69 6e 66 69 78 20 47 4c 4f 42 20 0a 6f 70 65 72  infix GLOB .oper
e6d0: 61 74 6f 72 20 69 73 20 69 6d 70 6c 65 6d 65 6e  ator is implemen
e6e0: 74 65 64 20 62 79 20 63 61 6c 6c 69 6e 67 20 74  ted by calling t
e6f0: 68 65 20 66 75 6e 63 74 69 6f 6e 0a 5b 67 6c 6f  he function.[glo
e700: 62 28 3c 69 3e 59 3c 2f 69 3e 2c 3c 69 3e 58 3c  b(<i>Y</i>,<i>X<
e710: 2f 69 3e 29 5d 20 61 6e 64 20 63 61 6e 20 62 65  /i>)] and can be
e720: 20 6d 6f 64 69 66 69 65 64 20 62 79 20 6f 76 65   modified by ove
e730: 72 72 69 64 69 6e 67 0a 74 68 61 74 20 66 75 6e  rriding.that fun
e740: 63 74 69 6f 6e 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c  ction.</p>..<tcl
e750: 3e 68 64 5f 66 72 61 67 6d 65 6e 74 20 72 65 67  >hd_fragment reg
e760: 65 78 70 20 52 45 47 45 58 50 3c 2f 74 63 6c 3e  exp REGEXP</tcl>
e770: 0a 3c 70 3e 5e 54 68 65 20 52 45 47 45 58 50 20  .<p>^The REGEXP 
e780: 6f 70 65 72 61 74 6f 72 20 69 73 20 61 20 73 70  operator is a sp
e790: 65 63 69 61 6c 20 73 79 6e 74 61 78 20 66 6f 72  ecial syntax for
e7a0: 20 74 68 65 20 72 65 67 65 78 70 28 29 0a 75 73   the regexp().us
e7b0: 65 72 20 66 75 6e 63 74 69 6f 6e 2e 20 20 5e 4e  er function.  ^N
e7c0: 6f 20 72 65 67 65 78 70 28 29 20 75 73 65 72 20  o regexp() user 
e7d0: 66 75 6e 63 74 69 6f 6e 20 69 73 20 64 65 66 69  function is defi
e7e0: 6e 65 64 20 62 79 20 64 65 66 61 75 6c 74 0a 61  ned by default.a
e7f0: 6e 64 20 73 6f 20 75 73 65 20 6f 66 20 74 68 65  nd so use of the
e800: 20 52 45 47 45 58 50 20 6f 70 65 72 61 74 6f 72   REGEXP operator
e810: 20 77 69 6c 6c 20 6e 6f 72 6d 61 6c 6c 79 20 72   will normally r
e820: 65 73 75 6c 74 20 69 6e 20 61 6e 0a 65 72 72 6f  esult in an.erro
e830: 72 20 6d 65 73 73 61 67 65 2e 20 20 5e 49 66 20  r message.  ^If 
e840: 61 20 5b 61 70 70 6c 69 63 61 74 69 6f 6e 2d 64  a [application-d
e850: 65 66 69 6e 65 64 20 53 51 4c 20 66 75 6e 63 74  efined SQL funct
e860: 69 6f 6e 5d 20 6e 61 6d 65 64 20 22 72 65 67 65  ion] named "rege
e870: 78 70 22 0a 69 73 20 61 64 64 65 64 20 61 74 20  xp".is added at 
e880: 72 75 6e 2d 74 69 6d 65 2c 20 74 68 61 74 20 66  run-time, that f
e890: 75 6e 63 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20  unction will be 
e8a0: 63 61 6c 6c 65 64 20 69 6e 20 6f 72 64 65 72 0a  called in order.
e8b0: 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 74 68 65  to implement the
e8c0: 20 52 45 47 45 58 50 20 6f 70 65 72 61 74 6f 72   REGEXP operator
e8d0: 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 68 64 5f 66  .</p>..<tcl>hd_f
e8e0: 72 61 67 6d 65 6e 74 20 6d 61 74 63 68 20 4d 41  ragment match MA
e8f0: 54 43 48 3c 2f 74 63 6c 3e 0a 3c 70 3e 5e 54 68  TCH</tcl>.<p>^Th
e900: 65 20 4d 41 54 43 48 20 6f 70 65 72 61 74 6f 72  e MATCH operator
e910: 20 69 73 20 61 20 73 70 65 63 69 61 6c 20 73 79   is a special sy
e920: 6e 74 61 78 20 66 6f 72 20 74 68 65 20 6d 61 74  ntax for the mat
e930: 63 68 28 29 0a 61 70 70 6c 69 63 61 74 69 6f 6e  ch().application
e940: 2d 64 65 66 69 6e 65 64 20 66 75 6e 63 74 69 6f  -defined functio
e950: 6e 2e 20 20 5e 54 68 65 20 64 65 66 61 75 6c 74  n.  ^The default
e960: 20 6d 61 74 63 68 28 29 20 66 75 6e 63 74 69 6f   match() functio
e970: 6e 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  n implementation
e980: 0a 72 61 69 73 65 73 20 61 6e 20 65 78 63 65 70  .raises an excep
e990: 74 69 6f 6e 20 61 6e 64 20 69 73 20 6e 6f 74 20  tion and is not 
e9a0: 72 65 61 6c 6c 79 20 75 73 65 66 75 6c 20 66 6f  really useful fo
e9b0: 72 20 61 6e 79 74 68 69 6e 67 2e 0a 5e 42 75 74  r anything..^But
e9c0: 20 65 78 74 65 6e 73 69 6f 6e 73 20 63 61 6e 20   extensions can 
e9d0: 6f 76 65 72 72 69 64 65 20 74 68 65 20 6d 61 74  override the mat
e9e0: 63 68 28 29 20 66 75 6e 63 74 69 6f 6e 20 77 69  ch() function wi
e9f0: 74 68 20 6d 6f 72 65 0a 68 65 6c 70 66 75 6c 20  th more.helpful 
ea00: 6c 6f 67 69 63 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c  logic.</p>..<tcl
ea10: 3e 68 64 5f 66 72 61 67 6d 65 6e 74 20 62 65 74  >hd_fragment bet
ea20: 77 65 65 6e 20 42 45 54 57 45 45 4e 3c 2f 74 63  ween BETWEEN</tc
ea30: 6c 3e 0a 3c 68 33 3e 54 68 65 20 42 45 54 57 45  l>.<h3>The BETWE
ea40: 45 4e 20 6f 70 65 72 61 74 6f 72 3c 2f 68 33 3e  EN operator</h3>
ea50: 0a 3c 70 3e 5e 28 54 68 65 20 42 45 54 57 45 45  .<p>^(The BETWEE
ea60: 4e 20 6f 70 65 72 61 74 6f 72 20 69 73 20 6c 6f  N operator is lo
ea70: 67 69 63 61 6c 6c 79 20 65 71 75 69 76 61 6c 65  gically equivale
ea80: 6e 74 20 74 6f 20 61 20 70 61 69 72 20 6f 66 20  nt to a pair of 
ea90: 63 6f 6d 70 61 72 69 73 6f 6e 73 2e 0a 22 3c 69  comparisons.."<i
eaa0: 3e 78 3c 2f 69 3e 20 3c 62 3e 42 45 54 57 45 45  >x</i> <b>BETWEE
eab0: 4e 3c 2f 62 3e 20 3c 69 3e 79 3c 2f 69 3e 20 3c  N</b> <i>y</i> <
eac0: 62 3e 41 4e 44 3c 2f 62 3e 20 3c 69 3e 7a 3c 2f  b>AND</b> <i>z</
ead0: 69 3e 22 20 69 73 20 0a 65 71 75 69 76 61 6c 65  i>" is .equivale
eae0: 6e 74 20 74 6f 20 0a 22 3c 69 3e 78 3c 2f 69 3e  nt to ."<i>x</i>
eaf0: 3c 62 3e 26 67 74 3b 3d 3c 2f 62 3e 3c 69 3e 79  <b>&gt;=</b><i>y
eb00: 3c 2f 69 3e 20 3c 62 3e 41 4e 44 3c 2f 62 3e 20  </i> <b>AND</b> 
eb10: 3c 69 3e 78 3c 2f 69 3e 3c 62 3e 26 6c 74 3b 3d  <i>x</i><b>&lt;=
eb20: 3c 2f 62 3e 3c 69 3e 7a 3c 2f 69 3e 22 20 65 78  </b><i>z</i>" ex
eb30: 63 65 70 74 0a 74 68 61 74 20 77 69 74 68 20 42  cept.that with B
eb40: 45 54 57 45 45 4e 2c 20 74 68 65 20 3c 69 3e 78  ETWEEN, the <i>x
eb50: 3c 2f 69 3e 20 65 78 70 72 65 73 73 69 6f 6e 20  </i> expression 
eb60: 69 73 20 6f 6e 6c 79 20 65 76 61 6c 75 61 74 65  is only evaluate
eb70: 64 20 6f 6e 63 65 2e 29 5e 0a 5e 54 68 65 20 70  d once.)^.^The p
eb80: 72 65 63 65 64 65 6e 63 65 20 6f 66 20 74 68 65  recedence of the
eb90: 20 42 45 54 57 45 45 4e 20 6f 70 65 72 61 74 6f   BETWEEN operato
eba0: 72 20 69 73 20 74 68 65 20 73 61 6d 65 20 61 73  r is the same as
ebb0: 20 74 68 65 20 70 72 65 63 65 64 65 6e 63 65 0a   the precedence.
ebc0: 61 73 20 6f 70 65 72 61 74 6f 72 73 20 3c 62 3e  as operators <b>
ebd0: 3d 3d 3c 2f 62 3e 20 61 6e 64 20 3c 62 3e 21 3d  ==</b> and <b>!=
ebe0: 3c 2f 62 3e 20 61 6e 64 20 3c 62 3e 4c 49 4b 45  </b> and <b>LIKE
ebf0: 3c 2f 62 3e 20 61 6e 64 20 67 72 6f 75 70 73 20  </b> and groups 
ec00: 6c 65 66 74 20 74 6f 20 72 69 67 68 74 2e 0a 0a  left to right...
ec10: 3c 74 63 6c 3e 68 64 5f 66 72 61 67 6d 65 6e 74  <tcl>hd_fragment
ec20: 20 63 61 73 65 20 7b 43 41 53 45 20 65 78 70 72   case {CASE expr
ec30: 65 73 73 69 6f 6e 7d 3c 2f 74 63 6c 3e 0a 3c 68  ession}</tcl>.<h
ec40: 33 3e 54 68 65 20 43 41 53 45 20 65 78 70 72 65  3>The CASE expre
ec50: 73 73 69 6f 6e 3c 2f 68 33 3e 0a 3c 70 3e 41 20  ssion</h3>.<p>A 
ec60: 43 41 53 45 20 65 78 70 72 65 73 73 69 6f 6e 20  CASE expression 
ec70: 73 65 72 76 65 73 20 61 20 72 6f 6c 65 20 73 69  serves a role si
ec80: 6d 69 6c 61 72 20 74 6f 20 49 46 2d 54 48 45 4e  milar to IF-THEN
ec90: 2d 45 4c 53 45 20 69 6e 20 6f 74 68 65 72 0a 70  -ELSE in other.p
eca0: 72 6f 67 72 61 6d 6d 69 6e 67 20 6c 61 6e 67 75  rogramming langu
ecb0: 61 67 65 73 2e 20 20 5e 57 48 45 4e 20 65 78 70  ages.  ^WHEN exp
ecc0: 72 65 73 73 69 6f 6e 73 20 61 72 65 20 65 76 61  ressions are eva
ecd0: 6c 75 61 74 65 64 20 66 72 6f 6d 20 6c 65 66 74  luated from left
ece0: 20 74 6f 0a 72 69 67 68 74 20 75 6e 74 69 6c 20   to.right until 
ecf0: 6f 6e 65 20 69 73 20 66 6f 75 6e 64 20 74 68 61  one is found tha
ed00: 74 20 69 73 20 74 72 75 65 2c 20 61 74 20 77 68  t is true, at wh
ed10: 69 63 68 20 70 6f 69 6e 74 20 74 68 65 20 63 6f  ich point the co
ed20: 72 72 65 73 70 6f 6e 64 69 6e 67 0a 54 48 45 4e  rresponding.THEN
ed30: 20 74 65 72 6d 20 62 65 63 6f 6d 65 73 20 74 68   term becomes th
ed40: 65 20 72 65 73 75 6c 74 2e 20 20 5e 49 66 20 6e  e result.  ^If n
ed50: 6f 20 57 48 45 4e 20 65 78 70 72 65 73 73 69 6f  o WHEN expressio
ed60: 6e 20 69 73 20 74 72 75 65 20 74 68 65 6e 20 74  n is true then t
ed70: 68 65 20 45 4c 53 45 20 0a 63 6c 61 75 73 65 20  he ELSE .clause 
ed80: 64 65 74 65 72 6d 69 6e 65 73 20 74 68 65 20 72  determines the r
ed90: 65 73 75 6c 74 20 6f 72 20 74 68 65 20 72 65 73  esult or the res
eda0: 75 6c 74 20 69 73 20 4e 55 4c 4c 20 69 66 20 74  ult is NULL if t
edb0: 68 65 72 65 20 69 73 20 6e 6f 20 45 4c 53 45 20  here is no ELSE 
edc0: 63 6c 61 73 65 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e  clase..</p>..<p>
edd0: 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20 65 78 70  The optional exp
ede0: 72 65 73 73 69 6f 6e 20 74 68 61 74 20 6f 63 63  ression that occ
edf0: 75 72 73 20 69 6e 20 62 65 74 77 65 65 6e 20 74  urs in between t
ee00: 68 65 20 43 41 53 45 20 6b 65 79 77 6f 72 64 20  he CASE keyword 
ee10: 61 6e 64 20 74 68 65 0a 66 69 72 73 74 20 57 48  and the.first WH
ee20: 45 4e 20 6b 65 79 77 6f 72 64 20 69 73 20 74 68  EN keyword is th
ee30: 65 20 22 62 61 73 65 22 20 65 78 70 72 65 73 73  e "base" express
ee40: 69 6f 6e 2e 20 20 5e 54 68 65 72 65 20 61 72 65  ion.  ^There are
ee50: 20 74 77 6f 20 62 61 73 69 63 20 66 6f 72 6d 73   two basic forms
ee60: 0a 6f 66 20 61 20 43 41 53 45 20 65 78 70 72 65  .of a CASE expre
ee70: 73 73 69 6f 6e 3a 20 74 68 6f 73 65 20 77 69 74  ssion: those wit
ee80: 68 20 61 6e 64 20 77 69 74 68 6f 75 74 20 61 20  h and without a 
ee90: 62 61 73 65 20 65 78 70 72 65 73 73 69 6f 6e 2e  base expression.
eea0: 0a 5e 49 6e 20 61 20 43 41 53 45 20 77 69 74 68  .^In a CASE with
eeb0: 6f 75 74 20 61 20 62 61 73 65 20 65 78 70 72 65  out a base expre
eec0: 73 73 69 6f 6e 2c 20 65 61 63 68 20 57 48 45 4e  ssion, each WHEN
eed0: 20 65 78 70 72 65 73 73 69 6f 6e 20 69 73 20 65   expression is e
eee0: 76 61 6c 75 74 65 64 0a 61 73 20 61 20 62 6f 6f  valuted.as a boo
eef0: 6c 65 61 6e 20 61 6e 64 20 74 68 65 20 6f 76 65  lean and the ove
ef00: 72 61 6c 6c 20 72 65 73 75 6c 74 20 69 73 20 64  rall result is d
ef10: 65 74 65 72 6d 69 6e 65 64 20 62 79 20 66 69 72  etermined by fir
ef20: 73 74 20 57 48 45 4e 20 65 78 70 72 65 73 73 69  st WHEN expressi
ef30: 6f 6e 0a 74 68 61 74 20 69 73 20 74 72 75 65 2e  on.that is true.
ef40: 0a 5e 49 6e 20 61 20 43 41 53 45 20 77 69 74 68  .^In a CASE with
ef50: 20 61 20 62 61 73 65 20 65 78 70 72 65 73 73 69   a base expressi
ef60: 6f 6e 2c 20 74 68 65 20 62 61 73 65 20 65 78 70  on, the base exp
ef70: 72 65 73 73 69 6f 6e 20 69 73 20 65 76 61 6c 75  ression is evalu
ef80: 74 65 64 20 6a 75 73 74 0a 6f 6e 63 65 20 61 6e  ted just.once an
ef90: 64 20 74 68 65 20 72 65 73 75 6c 74 20 69 73 20  d the result is 
efa0: 63 6f 6d 70 61 72 65 64 20 61 67 61 69 6e 73 74  compared against
efb0: 20 65 61 63 68 20 57 48 45 4e 20 65 78 70 72 65   each WHEN expre
efc0: 73 73 69 6f 6e 20 75 6e 74 69 6c 20 61 20 0a 6d  ssion until a .m
efd0: 61 74 63 68 20 69 73 20 66 6f 75 6e 64 2e 0a 5e  atch is found..^
efe0: 57 68 65 6e 20 63 6f 6d 70 61 72 69 6e 67 20 61  When comparing a
eff0: 20 62 61 73 65 20 65 78 70 72 65 73 73 69 6f 6e   base expression
f000: 20 61 67 61 69 6e 73 74 20 61 20 57 48 45 4e 20   against a WHEN 
f010: 65 78 70 72 65 73 73 69 6f 6e 2c 20 74 68 65 20  expression, the 
f020: 73 61 6d 65 0a 63 6f 6c 6c 61 74 69 6e 67 20 73  same.collating s
f030: 65 71 75 65 6e 63 65 2c 20 61 66 66 69 6e 69 74  equence, affinit
f040: 79 2c 20 61 6e 64 20 4e 55 4c 4c 2d 68 61 6e 64  y, and NULL-hand
f050: 6c 69 6e 67 20 72 75 6c 65 73 20 61 70 70 6c 79  ling rules apply
f060: 20 61 73 20 69 66 20 74 68 65 0a 62 61 73 65 20   as if the.base 
f070: 65 78 70 72 65 73 73 69 6f 6e 20 61 6e 64 20 57  expression and W
f080: 48 45 4e 20 65 78 70 72 65 73 73 69 6f 6e 20 61  HEN expression a
f090: 72 65 20 72 65 73 70 65 63 74 69 76 65 6c 79 20  re respectively 
f0a0: 74 68 65 20 6c 65 66 74 2d 20 61 6e 64 0a 72 69  the left- and.ri
f0b0: 67 68 74 2d 68 61 6e 64 20 6f 70 65 72 61 6e 64  ght-hand operand
f0c0: 73 20 6f 66 20 61 6e 20 3c 62 69 67 3e 3c 62 3e  s of an <big><b>
f0d0: 3d 3c 2f 62 3e 3c 2f 62 69 67 3e 20 6f 70 65 72  =</b></big> oper
f0e0: 61 74 6f 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 28  ator.</p>..<p>^(
f0f0: 41 73 73 75 6d 69 6e 67 20 74 68 65 20 73 75 62  Assuming the sub
f100: 65 78 70 72 65 73 73 69 6f 6e 73 20 68 61 76 65  expressions have
f110: 20 6e 6f 20 73 69 64 65 2d 65 66 66 65 63 74 73   no side-effects
f120: 2c 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 0a  , the following.
f130: 74 77 6f 20 65 78 70 72 65 73 73 69 6f 6e 73 20  two expressions 
f140: 61 72 65 20 65 71 75 69 76 61 6c 65 6e 74 3a 3c  are equivalent:<
f150: 2f 70 3e 0a 0a 3c 75 6c 3e 0a 3c 6c 69 3e 43 41  /p>..<ul>.<li>CA
f160: 53 45 20 78 20 57 48 45 4e 20 77 31 20 54 48 45  SE x WHEN w1 THE
f170: 4e 20 72 31 20 57 48 45 4e 20 77 32 20 54 48 45  N r1 WHEN w2 THE
f180: 4e 20 72 32 20 45 4c 53 45 20 72 33 20 45 4e 44  N r2 ELSE r3 END
f190: 0a 3c 6c 69 3e 43 41 53 45 20 57 48 45 4e 20 78  .<li>CASE WHEN x
f1a0: 3d 77 31 20 54 48 45 4e 20 72 31 20 57 48 45 4e  =w1 THEN r1 WHEN
f1b0: 20 78 3d 77 32 20 54 48 45 4e 20 72 32 20 45 4c   x=w2 THEN r2 EL
f1c0: 53 45 20 72 33 20 45 4e 44 0a 3c 2f 75 6c 3e 29  SE r3 END.</ul>)
f1d0: 5e 0a 0a 3c 70 3e 5e 54 68 65 20 6f 6e 6c 79 20  ^..<p>^The only 
f1e0: 64 69 66 66 65 72 65 6e 63 65 20 62 65 74 77 65  difference betwe
f1f0: 65 6e 20 74 68 65 20 74 77 6f 20 43 41 53 45 20  en the two CASE 
f200: 65 78 70 72 65 73 73 69 6f 6e 73 20 73 68 6f 77  expressions show
f210: 6e 20 61 62 6f 76 65 0a 69 73 20 74 68 61 74 20  n above.is that 
f220: 74 68 65 20 3c 69 3e 78 3c 2f 69 3e 20 65 78 70  the <i>x</i> exp
f230: 72 65 73 73 69 6f 6e 20 69 73 20 65 76 61 6c 75  ression is evalu
f240: 61 74 65 64 0a 65 78 61 63 74 6c 79 20 6f 6e 63  ated.exactly onc
f250: 65 20 69 6e 20 74 68 65 20 66 69 72 73 74 20 65  e in the first e
f260: 78 61 6d 70 6c 65 20 62 75 74 20 6d 69 67 68 74  xample but might
f270: 20 62 65 20 65 76 61 6c 75 61 74 65 64 20 6d 75   be evaluated mu
f280: 6c 74 69 70 6c 65 20 74 69 6d 65 73 0a 69 6e 20  ltiple times.in 
f290: 74 68 65 20 73 65 63 6f 6e 64 2e 3c 2f 70 3e 0a  the second.</p>.
f2a0: 0a 3c 70 3e 5e 41 20 4e 55 4c 4c 20 72 65 73 75  .<p>^A NULL resu
f2b0: 6c 74 20 69 73 20 63 6f 6e 73 69 64 65 72 65 64  lt is considered
f2c0: 20 66 61 6c 73 65 20 77 68 65 6e 20 65 76 61 6c   false when eval
f2d0: 75 61 74 69 6e 67 20 57 48 45 4e 20 74 65 72 6d  uating WHEN term
f2e0: 73 2e 0a 5e 49 66 20 74 68 65 20 62 61 73 65 20  s..^If the base 
f2f0: 65 78 70 72 65 73 73 69 6f 6e 20 69 73 20 4e 55  expression is NU
f300: 4c 4c 20 74 68 65 6e 20 74 68 65 20 72 65 73 75  LL then the resu
f310: 6c 74 20 6f 66 20 74 68 65 20 43 41 53 45 20 69  lt of the CASE i
f320: 73 20 74 68 65 0a 72 65 73 75 6c 74 20 6f 66 20  s the.result of 
f330: 74 68 65 20 45 4c 53 45 20 65 78 70 72 65 73 73  the ELSE express
f340: 69 6f 6e 20 69 66 20 69 74 20 65 78 69 73 74 73  ion if it exists
f350: 2c 20 6f 72 20 4e 55 4c 4c 20 69 66 20 74 68 65  , or NULL if the
f360: 20 45 4c 53 45 20 63 6c 61 75 73 65 0a 69 73 20   ELSE clause.is 
f370: 6f 6d 69 74 74 65 64 2e 3c 2f 70 3e 0a 0a 3c 74  omitted.</p>..<t
f380: 63 6c 3e 68 64 5f 66 72 61 67 6d 65 6e 74 20 69  cl>hd_fragment i
f390: 6e 5f 6f 70 20 7b 49 4e 20 6f 70 65 72 61 74 6f  n_op {IN operato
f3a0: 72 7d 20 7b 4e 4f 54 20 49 4e 20 6f 70 65 72 61  r} {NOT IN opera
f3b0: 74 6f 72 7d 3c 2f 74 63 6c 3e 0a 3c 68 33 3e 54  tor}</tcl>.<h3>T
f3c0: 68 65 20 49 4e 20 61 6e 64 20 4e 4f 54 20 49 4e  he IN and NOT IN
f3d0: 20 6f 70 65 72 61 74 6f 72 73 3c 2f 68 33 3e 0a   operators</h3>.
f3e0: 3c 70 3e 5e 54 68 65 20 49 4e 20 61 6e 64 20 4e  <p>^The IN and N
f3f0: 4f 54 20 49 4e 20 6f 70 65 72 61 74 6f 72 73 20  OT IN operators 
f400: 74 61 6b 65 20 61 20 73 69 6e 67 6c 65 20 73 63  take a single sc
f410: 61 6c 61 72 20 6f 70 65 72 61 6e 64 20 6f 6e 20  alar operand on 
f420: 74 68 65 0a 6c 65 66 74 20 61 6e 64 20 61 20 76  the.left and a v
f430: 65 63 74 6f 72 20 6f 70 65 72 61 6e 64 20 6f 6e  ector operand on
f440: 20 74 68 65 20 72 69 67 68 74 0a 66 6f 72 6d 65   the right.forme
f450: 64 20 62 79 20 61 6e 20 65 78 70 6c 69 63 69 74  d by an explicit
f460: 20 6c 69 73 74 20 6f 66 20 7a 65 72 6f 20 6f 72   list of zero or
f470: 20 6d 6f 72 65 20 73 63 61 6c 61 72 73 20 6f 72   more scalars or
f480: 20 62 79 20 61 20 0a 73 69 6e 67 6c 65 20 73 75   by a .single su
f490: 62 71 75 65 72 79 2e 0a 5e 57 68 65 6e 20 74 68  bquery..^When th
f4a0: 65 20 72 69 67 68 74 20 6f 70 65 72 61 6e 64 20  e right operand 
f4b0: 6f 66 20 61 6e 20 49 4e 20 6f 72 20 4e 4f 54 20  of an IN or NOT 
f4c0: 49 4e 20 6f 70 65 72 61 74 6f 72 20 69 73 20 61  IN operator is a
f4d0: 20 73 75 62 71 75 65 72 79 2c 20 74 68 65 0a 73   subquery, the.s
f4e0: 75 62 71 75 65 72 79 20 6d 75 73 74 20 68 61 76  ubquery must hav
f4f0: 65 20 61 20 73 69 6e 67 6c 65 20 72 65 73 75 6c  e a single resul
f500: 74 20 63 6f 6c 75 6d 6e 2e 0a 5e 57 68 65 6e 20  t column..^When 
f510: 74 68 65 20 72 69 67 68 74 20 6f 70 65 72 61 6e  the right operan
f520: 64 20 69 73 20 61 6e 20 65 6d 70 74 79 20 73 65  d is an empty se
f530: 74 2c 20 74 68 65 20 72 65 73 75 6c 74 20 6f 66  t, the result of
f540: 20 49 4e 20 69 73 20 66 61 6c 73 65 20 61 6e 64   IN is false and
f550: 20 74 68 65 0a 72 65 73 75 6c 74 20 6f 66 20 4e   the.result of N
f560: 4f 54 20 49 4e 20 69 73 20 74 72 75 65 2c 20 72  OT IN is true, r
f570: 65 67 61 72 64 6c 65 73 73 20 6f 66 20 74 68 65  egardless of the
f580: 20 6c 65 66 74 20 6f 70 65 72 61 6e 64 20 61 6e   left operand an
f590: 64 20 65 76 65 6e 20 69 66 20 74 68 65 0a 6c 65  d even if the.le
f5a0: 66 74 20 6f 70 65 72 61 6e 64 20 69 73 20 4e 55  ft operand is NU
f5b0: 4c 4c 2e 0a 5e 28 54 68 65 20 72 65 73 75 6c 74  LL..^(The result
f5c0: 20 6f 66 20 61 6e 20 49 4e 20 6f 72 20 4e 4f 54   of an IN or NOT
f5d0: 20 49 4e 20 6f 70 65 72 61 74 6f 72 20 69 73 20   IN operator is 
f5e0: 64 65 74 65 72 6d 69 6e 65 64 20 62 79 20 74 68  determined by th
f5f0: 65 20 66 6f 6c 6c 6f 77 69 6e 67 0a 6d 61 74 72  e following.matr
f600: 69 78 3a 0a 0a 3c 63 65 6e 74 65 72 3e 0a 3c 74  ix:..<center>.<t
f610: 61 62 6c 65 20 62 6f 72 64 65 72 3d 31 3e 0a 3c  able border=1>.<
f620: 74 72 3e 0a 3c 74 68 3e 4c 65 66 74 20 6f 70 65  tr>.<th>Left ope
f630: 72 61 6e 64 20 3c 62 72 3e 69 73 20 4e 55 4c 4c  rand <br>is NULL
f640: 0a 3c 74 68 3e 52 69 67 68 74 20 6f 70 65 72 61  .<th>Right opera
f650: 6e 64 20 3c 62 72 3e 63 6f 6e 74 61 69 6e 73 20  nd <br>contains 
f660: 4e 55 4c 4c 0a 3c 74 68 3e 52 69 67 68 74 20 6f  NULL.<th>Right o
f670: 70 65 72 61 6e 64 20 3c 62 72 3e 69 73 20 61 6e  perand <br>is an
f680: 20 65 6d 70 74 79 20 73 65 74 0a 3c 74 68 3e 4c   empty set.<th>L
f690: 65 66 74 20 6f 70 65 72 61 6e 64 20 66 6f 75 6e  eft operand foun
f6a0: 64 20 3c 62 72 3e 77 69 74 68 69 6e 20 72 69 67  d <br>within rig
f6b0: 68 74 20 6f 70 65 72 61 6e 64 0a 3c 74 68 3e 52  ht operand.<th>R
f6c0: 65 73 75 6c 74 20 6f 66 20 3c 62 72 3e 49 4e 20  esult of <br>IN 
f6d0: 6f 70 65 72 61 74 6f 72 0a 3c 74 68 3e 52 65 73  operator.<th>Res
f6e0: 75 6c 74 20 6f 66 20 3c 62 72 3e 4e 4f 54 20 49  ult of <br>NOT I
f6f0: 4e 20 6f 70 65 72 61 74 6f 72 0a 3c 74 72 3e 0a  N operator.<tr>.
f700: 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65  <td align="cente
f710: 72 22 3e 6e 6f 0a 3c 74 64 20 61 6c 69 67 6e 3d  r">no.<td align=
f720: 22 63 65 6e 74 65 72 22 3e 6e 6f 0a 3c 74 64 20  "center">no.<td 
f730: 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 6e  align="center">n
f740: 6f 0a 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e  o.<td align="cen
f750: 74 65 72 22 3e 6e 6f 0a 3c 74 64 20 61 6c 69 67  ter">no.<td alig
f760: 6e 3d 22 63 65 6e 74 65 72 22 3e 66 61 6c 73 65  n="center">false
f770: 0a 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74  .<td align="cent
f780: 65 72 22 3e 74 72 75 65 0a 3c 74 72 3e 0a 3c 74  er">true.<tr>.<t
f790: 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22  d align="center"
f7a0: 3e 64 6f 65 73 20 6e 6f 74 20 6d 61 74 74 65 72  >does not matter
f7b0: 0a 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74  .<td align="cent
f7c0: 65 72 22 3e 6e 6f 0a 3c 74 64 20 61 6c 69 67 6e  er">no.<td align
f7d0: 3d 22 63 65 6e 74 65 72 22 3e 79 65 73 0a 3c 74  ="center">yes.<t
f7e0: 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22  d align="center"
f7f0: 3e 6e 6f 0a 3c 74 64 20 61 6c 69 67 6e 3d 22 63  >no.<td align="c
f800: 65 6e 74 65 72 22 3e 66 61 6c 73 65 0a 3c 74 64  enter">false.<td
f810: 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e   align="center">
f820: 74 72 75 65 0a 3c 74 72 3e 0a 3c 74 64 20 61 6c  true.<tr>.<td al
f830: 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 6e 6f 0a  ign="center">no.
f840: 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65  <td align="cente
f850: 72 22 3e 64 6f 65 73 20 6e 6f 74 20 6d 61 74 74  r">does not matt
f860: 65 72 0a 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65  er.<td align="ce
f870: 6e 74 65 72 22 3e 6e 6f 0a 3c 74 64 20 61 6c 69  nter">no.<td ali
f880: 67 6e 3d 22 63 65 6e 74 65 72 22 3e 79 65 73 0a  gn="center">yes.
f890: 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65  <td align="cente
f8a0: 72 22 3e 74 72 75 65 0a 3c 74 64 20 61 6c 69 67  r">true.<td alig
f8b0: 6e 3d 22 63 65 6e 74 65 72 22 3e 66 61 6c 73 65  n="center">false
f8c0: 0a 3c 74 72 3e 0a 3c 74 64 20 61 6c 69 67 6e 3d  .<tr>.<td align=
f8d0: 22 63 65 6e 74 65 72 22 3e 6e 6f 0a 3c 74 64 20  "center">no.<td 
f8e0: 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 79  align="center">y
f8f0: 65 73 0a 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65  es.<td align="ce
f900: 6e 74 65 72 22 3e 6e 6f 0a 3c 74 64 20 61 6c 69  nter">no.<td ali
f910: 67 6e 3d 22 63 65 6e 74 65 72 22 3e 6e 6f 0a 3c  gn="center">no.<
f920: 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72  td align="center
f930: 22 3e 4e 55 4c 4c 0a 3c 74 64 20 61 6c 69 67 6e  ">NULL.<td align
f940: 3d 22 63 65 6e 74 65 72 22 3e 4e 55 4c 4c 0a 3c  ="center">NULL.<
f950: 74 72 3e 0a 3c 74 64 20 61 6c 69 67 6e 3d 22 63  tr>.<td align="c
f960: 65 6e 74 65 72 22 3e 79 65 73 0a 3c 74 64 20 61  enter">yes.<td a
f970: 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 64 6f  lign="center">do
f980: 65 73 20 6e 6f 74 20 6d 61 74 74 65 72 0a 3c 74  es not matter.<t
f990: 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22  d align="center"
f9a0: 3e 6e 6f 0a 3c 74 64 20 61 6c 69 67 6e 3d 22 63  >no.<td align="c
f9b0: 65 6e 74 65 72 22 3e 64 6f 65 73 20 6e 6f 74 20  enter">does not 
f9c0: 6d 61 74 74 65 72 0a 3c 74 64 20 61 6c 69 67 6e  matter.<td align
f9d0: 3d 22 63 65 6e 74 65 72 22 3e 4e 55 4c 4c 0a 3c  ="center">NULL.<
f9e0: 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72  td align="center
f9f0: 22 3e 4e 55 4c 4c 0a 3c 2f 74 61 62 6c 65 3e 0a  ">NULL.</table>.
fa00: 3c 2f 63 65 6e 74 65 72 3e 29 5e 0a 0a 3c 70 3e  </center>)^..<p>
fa10: 5e 4e 6f 74 65 20 74 68 61 74 20 53 51 4c 69 74  ^Note that SQLit
fa20: 65 20 61 6c 6c 6f 77 73 20 74 68 65 20 70 61 72  e allows the par
fa30: 65 6e 74 68 65 73 69 7a 65 64 20 6c 69 73 74 20  enthesized list 
fa40: 6f 66 20 73 63 61 6c 61 72 20 76 61 6c 75 65 73  of scalar values
fa50: 20 6f 6e 0a 74 68 65 20 72 69 67 68 74 2d 68 61   on.the right-ha
fa60: 6e 64 20 73 69 64 65 20 6f 66 20 61 6e 20 49 4e  nd side of an IN
fa70: 20 6f 72 20 4e 4f 54 20 49 4e 20 6f 70 65 72 61   or NOT IN opera
fa80: 74 6f 72 20 74 6f 20 62 65 20 61 6e 20 65 6d 70  tor to be an emp
fa90: 74 79 20 6c 69 73 74 20 62 75 74 0a 6d 6f 73 74  ty list but.most
faa0: 20 6f 74 68 65 72 20 53 51 4c 20 64 61 74 61 62   other SQL datab
fab0: 61 73 65 20 64 61 74 61 62 61 73 65 20 65 6e 67  ase database eng
fac0: 69 6e 65 73 20 61 6e 64 20 74 68 65 20 53 51 4c  ines and the SQL
fad0: 39 32 20 73 74 61 6e 64 61 72 64 20 72 65 71 75  92 standard requ
fae0: 69 72 65 0a 74 68 65 20 6c 69 73 74 20 74 6f 20  ire.the list to 
faf0: 63 6f 6e 74 61 69 6e 20 61 74 20 6c 65 61 73 74  contain at least
fb00: 20 6f 6e 65 20 65 6c 65 6d 65 6e 74 2e 3c 2f 70   one element.</p
fb10: 3e 0a 0a 0a 3c 68 33 3e 54 61 62 6c 65 20 43 6f  >...<h3>Table Co
fb20: 6c 75 6d 6e 20 4e 61 6d 65 73 3c 2f 68 33 3e 0a  lumn Names</h3>.
fb30: 3c 70 3e 5e 41 20 63 6f 6c 75 6d 6e 20 6e 61 6d  <p>^A column nam
fb40: 65 20 63 61 6e 20 62 65 20 61 6e 79 20 6f 66 20  e can be any of 
fb50: 74 68 65 20 6e 61 6d 65 73 20 64 65 66 69 6e 65  the names define
fb60: 64 20 69 6e 20 74 68 65 20 5b 43 52 45 41 54 45  d in the [CREATE
fb70: 20 54 41 42 4c 45 5d 0a 73 74 61 74 65 6d 65 6e   TABLE].statemen
fb80: 74 20 6f 72 20 6f 6e 65 20 6f 66 20 74 68 65 20  t or one of the 
fb90: 66 6f 6c 6c 6f 77 69 6e 67 20 73 70 65 63 69 61  following specia
fba0: 6c 20 69 64 65 6e 74 69 66 69 65 72 73 3a 20 22  l identifiers: "
fbb0: 3c 62 3e 52 4f 57 49 44 3c 2f 62 3e 22 2c 0a 22  <b>ROWID</b>",."
fbc0: 3c 62 3e 4f 49 44 3c 2f 62 3e 22 2c 20 6f 72 20  <b>OID</b>", or 
fbd0: 22 3c 62 3e 5f 52 4f 57 49 44 5f 3c 2f 62 3e 22  "<b>_ROWID_</b>"
fbe0: 2e 0a 5e 54 68 65 73 65 20 73 70 65 63 69 61 6c  ..^These special
fbf0: 20 69 64 65 6e 74 69 66 69 65 72 73 20 61 6c 6c   identifiers all
fc00: 20 64 65 73 63 72 69 62 65 20 74 68 65 0a 75 6e   describe the.un
fc10: 69 71 75 65 20 69 6e 74 65 67 65 72 20 6b 65 79  ique integer key
fc20: 20 28 74 68 65 20 5b 72 6f 77 69 64 5d 29 20 61   (the [rowid]) a
fc30: 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 65  ssociated with e
fc40: 76 65 72 79 20 0a 72 6f 77 20 6f 66 20 65 76 65  very .row of eve
fc50: 72 79 20 74 61 62 6c 65 2e 0a 5e 54 68 65 20 73  ry table..^The s
fc60: 70 65 63 69 61 6c 20 69 64 65 6e 74 69 66 69 65  pecial identifie
fc70: 72 73 20 6f 6e 6c 79 20 72 65 66 65 72 20 74 6f  rs only refer to
fc80: 20 74 68 65 20 72 6f 77 20 6b 65 79 20 69 66 20   the row key if 
fc90: 74 68 65 20 5b 43 52 45 41 54 45 20 54 41 42 4c  the [CREATE TABL
fca0: 45 5d 0a 73 74 61 74 65 6d 65 6e 74 20 64 6f 65  E].statement doe
fcb0: 73 20 6e 6f 74 20 64 65 66 69 6e 65 20 61 20 72  s not define a r
fcc0: 65 61 6c 20 63 6f 6c 75 6d 6e 20 77 69 74 68 20  eal column with 
fcd0: 74 68 65 20 73 61 6d 65 20 6e 61 6d 65 2e 0a 5e  the same name..^
fce0: 54 68 65 20 72 6f 77 69 64 20 63 61 6e 20 62 65  The rowid can be
fcf0: 20 75 73 65 64 20 61 6e 79 77 68 65 72 65 20 61   used anywhere a
fd00: 20 72 65 67 75 6c 61 72 0a 63 6f 6c 75 6d 6e 20   regular.column 
fd10: 63 61 6e 20 62 65 20 75 73 65 64 2e 3c 2f 70 3e  can be used.</p>
fd20: 0a 0a 3c 68 33 3e 53 75 62 71 75 65 72 69 65 73  ..<h3>Subqueries
fd30: 3c 2f 68 33 3e 0a 3c 70 3e 5e 5b 53 45 4c 45 43  </h3>.<p>^[SELEC
fd40: 54 5d 20 73 74 61 74 65 6d 65 6e 74 73 20 63 61  T] statements ca
fd50: 6e 20 61 70 70 65 61 72 20 69 6e 20 65 78 70 72  n appear in expr
fd60: 65 73 73 69 6f 6e 73 20 61 73 20 65 69 74 68 65  essions as eithe
fd70: 72 20 74 68 65 0a 72 69 67 68 74 2d 68 61 6e 64  r the.right-hand
fd80: 20 6f 70 65 72 61 6e 64 20 6f 66 20 74 68 65 20   operand of the 
fd90: 49 4e 20 6f 72 20 4e 4f 54 20 49 4e 20 6f 70 65  IN or NOT IN ope
fda0: 72 61 74 6f 72 73 2c 20 61 73 20 61 20 73 63 61  rators, as a sca
fdb0: 6c 61 72 20 71 75 61 6e 74 69 74 79 2c 20 6f 72  lar quantity, or
fdc0: 0a 61 73 20 74 68 65 20 6f 70 65 72 61 6e 64 20  .as the operand 
fdd0: 6f 66 20 61 6e 20 45 58 49 53 54 53 20 6f 70 65  of an EXISTS ope
fde0: 72 61 74 6f 72 2e 0a 5e 41 73 20 61 20 73 63 61  rator..^As a sca
fdf0: 6c 61 72 20 71 75 61 6e 74 69 74 79 20 6f 72 20  lar quantity or 
fe00: 74 68 65 20 6f 70 65 72 61 6e 64 20 6f 66 20 61  the operand of a
fe10: 6e 20 49 4e 20 6f 72 20 4e 4f 54 20 49 4e 20 6f  n IN or NOT IN o
fe20: 70 65 72 61 74 6f 72 2c 0a 74 68 65 20 53 45 4c  perator,.the SEL
fe30: 45 43 54 20 6d 61 79 20 68 61 76 65 20 6f 6e 6c  ECT may have onl
fe40: 79 20 61 20 73 69 6e 67 6c 65 20 63 6f 6c 75 6d  y a single colum
fe50: 6e 20 69 6e 20 69 74 73 0a 72 65 73 75 6c 74 2e  n in its.result.
fe60: 20 20 5e 43 6f 6d 70 6f 75 6e 64 20 53 45 4c 45    ^Compound SELE
fe70: 43 54 73 20 28 63 6f 6e 6e 65 63 74 65 64 20 77  CTs (connected w
fe80: 69 74 68 20 6b 65 79 77 6f 72 64 73 20 6c 69 6b  ith keywords lik
fe90: 65 20 55 4e 49 4f 4e 20 6f 72 0a 45 58 43 45 50  e UNION or.EXCEP
fea0: 54 29 20 61 72 65 20 61 6c 6c 6f 77 65 64 20 69  T) are allowed i
feb0: 6e 20 61 6e 79 20 73 75 62 71 75 65 72 79 2e 0a  n any subquery..
fec0: 5e 57 69 74 68 20 74 68 65 20 45 58 49 53 54 53  ^With the EXISTS
fed0: 20 6f 70 65 72 61 74 6f 72 2c 20 74 68 65 20 63   operator, the c
fee0: 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65 20 72 65  olumns in the re
fef0: 73 75 6c 74 20 73 65 74 20 6f 66 20 74 68 65 20  sult set of the 
ff00: 5b 53 45 4c 45 43 54 5d 20 61 72 65 0a 69 67 6e  [SELECT] are.ign
ff10: 6f 72 65 64 20 61 6e 64 20 74 68 65 20 65 78 70  ored and the exp
ff20: 72 65 73 73 69 6f 6e 20 72 65 74 75 72 6e 73 20  ression returns 
ff30: 54 52 55 45 20 69 66 20 6f 6e 65 20 6f 72 20 6d  TRUE if one or m
ff40: 6f 72 65 20 72 6f 77 73 20 65 78 69 73 74 0a 61  ore rows exist.a
ff50: 6e 64 20 46 41 4c 53 45 20 69 66 20 74 68 65 20  nd FALSE if the 
ff60: 72 65 73 75 6c 74 20 73 65 74 20 69 73 20 65 6d  result set is em
ff70: 70 74 79 2e 0a 5e 49 66 20 6e 6f 20 74 65 72 6d  pty..^If no term
ff80: 73 20 69 6e 20 74 68 65 20 5b 53 45 4c 45 43 54  s in the [SELECT
ff90: 5d 20 65 78 70 72 65 73 73 69 6f 6e 20 72 65 66  ] expression ref
ffa0: 65 72 20 74 6f 20 76 61 6c 75 65 73 20 69 6e 20  er to values in 
ffb0: 74 68 65 20 63 6f 6e 74 61 69 6e 69 6e 67 0a 71  the containing.q
ffc0: 75 65 72 79 2c 20 74 68 65 6e 20 74 68 65 20 65  uery, then the e
ffd0: 78 70 72 65 73 73 69 6f 6e 20 69 73 20 65 76 61  xpression is eva
ffe0: 6c 75 61 74 65 64 20 6f 6e 63 65 20 70 72 69 6f  luated once prio
fff0: 72 20 74 6f 20 61 6e 79 20 6f 74 68 65 72 0a 70  r to any other.p
10000 72 6f 63 65 73 73 69 6e 67 20 61 6e 64 20 74 68  rocessing and th
10010 65 20 72 65 73 75 6c 74 20 69 73 20 72 65 75 73  e result is reus
10020 65 64 20 61 73 20 6e 65 63 65 73 73 61 72 79 2e  ed as necessary.
10030 20 20 5e 49 66 20 74 68 65 20 5b 53 45 4c 45 43    ^If the [SELEC
10040 54 5d 20 65 78 70 72 65 73 73 69 6f 6e 0a 64 6f  T] expression.do
10050 65 73 20 63 6f 6e 74 61 69 6e 20 76 61 72 69 61  es contain varia
10060 62 6c 65 73 20 66 72 6f 6d 20 74 68 65 20 6f 75  bles from the ou
10070 74 65 72 20 71 75 65 72 79 2c 20 74 68 65 6e 20  ter query, then 
10080 74 68 65 20 5b 53 45 4c 45 43 54 5d 20 69 73 20  the [SELECT] is 
10090 72 65 65 76 61 6c 75 61 74 65 64 0a 65 76 65 72  reevaluated.ever
100a0 79 20 74 69 6d 65 20 69 74 20 69 73 20 6e 65 65  y time it is nee
100b0 64 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 57 68  ded.</p>..<p>^Wh
100c0 65 6e 20 61 20 53 45 4c 45 43 54 20 61 70 70 65  en a SELECT appe
100d0 61 72 73 20 77 69 74 68 69 6e 20 61 6e 20 65 78  ars within an ex
100e0 70 72 65 73 73 69 6f 6e 20 62 75 74 20 69 73 20  pression but is 
100f0 6e 6f 74 20 74 68 65 20 72 69 67 68 74 0a 6f 70  not the right.op
10100 65 72 61 6e 64 20 6f 66 20 61 6e 20 49 4e 20 6f  erand of an IN o
10110 72 20 4e 4f 54 20 49 4e 20 6f 70 65 72 61 74 6f  r NOT IN operato
10120 72 2c 20 74 68 65 6e 20 74 68 65 20 66 69 72 73  r, then the firs
10130 74 20 72 6f 77 20 6f 66 20 74 68 65 20 72 65 73  t row of the res
10140 75 6c 74 20 6f 66 20 74 68 65 0a 53 45 4c 45 43  ult of the.SELEC
10150 54 20 62 65 63 6f 6d 65 73 20 74 68 65 20 76 61  T becomes the va
10160 6c 75 65 20 75 73 65 64 20 69 6e 20 74 68 65 20  lue used in the 
10170 65 78 70 72 65 73 73 69 6f 6e 2e 20 20 5e 49 66  expression.  ^If
10180 20 74 68 65 20 53 45 4c 45 43 54 20 79 69 65 6c   the SELECT yiel
10190 64 73 0a 6d 6f 72 65 20 74 68 61 6e 20 6f 6e 65  ds.more than one
101a0 20 72 65 73 75 6c 74 20 72 6f 77 2c 20 61 6c 6c   result row, all
101b0 20 72 6f 77 73 20 61 66 74 65 72 20 74 68 65 20   rows after the 
101c0 66 69 72 73 74 20 61 72 65 20 69 67 6e 6f 72 65  first are ignore
101d0 64 2e 20 20 5e 49 66 0a 74 68 65 20 53 45 4c 45  d.  ^If.the SELE
101e0 43 54 20 79 69 65 6c 64 73 20 6e 6f 20 72 6f 77  CT yields no row
101f0 73 2c 20 74 68 65 6e 20 74 68 65 20 76 61 6c 75  s, then the valu
10200 65 20 6f 66 20 74 68 65 20 53 45 4c 45 43 54 20  e of the SELECT 
10210 69 73 20 4e 55 4c 4c 2e 3c 2f 70 3e 0a 0a 3c 74  is NULL.</p>..<t
10220 63 6c 3e 68 64 5f 66 72 61 67 6d 65 6e 74 20 63  cl>hd_fragment c
10230 61 73 74 65 78 70 72 20 7b 43 41 53 54 20 65 78  astexpr {CAST ex
10240 70 72 65 73 73 69 6f 6e 7d 3c 2f 74 63 6c 3e 0a  pression}</tcl>.
10250 3c 68 33 3e 43 41 53 54 20 65 78 70 72 65 73 73  <h3>CAST express
10260 69 6f 6e 73 3c 2f 68 33 3e 0a 0a 3c 70 3e 5e 41  ions</h3>..<p>^A
10270 20 43 41 53 54 20 65 78 70 72 65 73 73 69 6f 6e   CAST expression
10280 20 63 68 61 6e 67 65 73 20 74 68 65 20 5b 64 61   changes the [da
10290 74 61 74 79 70 65 5d 20 6f 66 20 74 68 65 20 3c  tatype] of the <
102a0 65 78 70 72 3e 20 69 6e 74 6f 20 74 68 65 0a 74  expr> into the.t
102b0 79 70 65 20 73 70 65 63 69 66 69 65 64 20 62 79  ype specified by
102c0 20 26 6c 74 3b 74 79 70 65 26 67 74 3b 2e 20 0a   &lt;type&gt;. .
102d0 5e 28 26 6c 74 3b 74 79 70 65 26 67 74 3b 20 63  ^(&lt;type&gt; c
102e0 61 6e 20 62 65 20 61 6e 79 20 6e 6f 6e 2d 65 6d  an be any non-em
102f0 70 74 79 20 74 79 70 65 20 6e 61 6d 65 20 74 68  pty type name th
10300 61 74 20 69 73 20 76 61 6c 69 64 0a 66 6f 72 20  at is valid.for 
10310 74 68 65 20 74 79 70 65 20 69 6e 20 61 20 63 6f  the type in a co
10320 6c 75 6d 6e 20 64 65 66 69 6e 69 74 69 6f 6e 20  lumn definition 
10330 6f 66 20 61 20 5b 43 52 45 41 54 45 20 54 41 42  of a [CREATE TAB
10340 4c 45 5d 20 73 74 61 74 65 6d 65 6e 74 2e 29 5e  LE] statement.)^
10350 0a 5e 54 68 65 20 26 6c 74 3b 74 79 70 65 26 67  .^The &lt;type&g
10360 74 3b 20 6e 61 6d 65 20 69 73 20 69 6e 74 65 72  t; name is inter
10370 70 72 65 74 65 64 20 61 63 63 6f 72 64 69 6e 67  preted according
10380 20 74 6f 20 74 68 65 20 0a 5b 72 75 6c 65 73 20   to the .[rules 
10390 66 6f 72 20 64 65 74 65 72 6d 69 6e 69 6e 67 20  for determining 
103a0 63 6f 6c 75 6d 6e 20 61 66 66 69 6e 69 74 79 5d  column affinity]
103b0 2e 0a 0a 3c 70 3e 5e 41 6e 20 65 78 70 6c 69 63  ...<p>^An explic
103c0 69 74 20 63 61 73 74 20 69 73 20 73 74 72 6f 6e  it cast is stron
103d0 67 65 72 20 74 68 61 6e 20 61 66 66 69 6e 69 74  ger than affinit
103e0 79 3b 20 77 69 74 68 20 74 68 65 20 43 41 53 54  y; with the CAST
103f0 20 65 78 70 72 65 73 73 69 6f 6e 0a 74 68 65 20   expression.the 
10400 64 61 74 61 74 79 70 65 20 63 6f 6e 76 65 72 73  datatype convers
10410 69 6f 6e 20 69 73 20 66 6f 72 63 65 64 20 65 76  ion is forced ev
10420 65 6e 20 69 66 20 69 74 20 69 73 20 6c 6f 73 73  en if it is loss
10430 79 20 61 6e 64 20 69 72 72 72 65 76 65 72 73 69  y and irrreversi
10440 62 6c 65 2e 0a 3c 75 6c 3e 0a 3c 6c 69 3e 3c 70  ble..<ul>.<li><p
10450 3e 0a 20 20 5e 41 20 63 61 73 74 20 6f 66 20 61  >.  ^A cast of a
10460 20 52 45 41 4c 20 76 61 6c 75 65 20 69 6e 74 6f   REAL value into
10470 20 61 6e 20 49 4e 54 45 47 45 52 20 77 69 6c 6c   an INTEGER will
10480 20 74 72 75 6e 63 61 74 65 20 74 68 65 0a 20 20   truncate the.  
10490 66 72 61 63 74 69 6f 6e 61 6c 20 70 61 72 74 20  fractional part 
104a0 6f 66 20 74 68 65 20 52 45 41 4c 2e 20 20 5e 49  of the REAL.  ^I
104b0 66 20 61 6e 20 52 45 41 4c 20 69 73 20 74 6f 6f  f an REAL is too
104c0 20 6c 61 72 67 65 20 74 6f 20 62 65 0a 20 20 72   large to be.  r
104d0 65 70 72 65 73 65 6e 74 65 64 20 61 73 20 61 6e  epresented as an
104e0 20 49 4e 54 45 47 45 52 20 74 68 65 6e 20 74 68   INTEGER then th
104f0 65 20 72 65 73 75 6c 74 20 6f 66 20 74 68 65 20  e result of the 
10500 63 61 73 74 20 69 73 0a 20 20 74 68 65 20 6c 61  cast is.  the la
10510 72 67 65 73 74 20 6e 65 67 61 74 69 76 65 20 69  rgest negative i
10520 6e 74 65 67 65 72 3a 20 2d 39 32 32 33 33 37 32  nteger: -9223372
10530 30 33 36 38 35 34 37 37 35 38 30 38 2e 0a 0a 3c  036854775808...<
10540 6c 69 3e 3c 70 3e 0a 20 5e 41 20 63 61 73 74 20  li><p>. ^A cast 
10550 6f 66 20 61 20 54 45 58 54 20 76 61 6c 75 65 20  of a TEXT value 
10560 69 6e 74 6f 20 61 6e 20 49 4e 54 45 47 45 52 20  into an INTEGER 
10570 6f 72 20 52 45 41 4c 20 77 69 6c 6c 20 72 65 61  or REAL will rea
10580 64 20 61 20 70 72 65 66 69 78 0a 20 6f 66 20 74  d a prefix. of t
10590 68 65 20 54 45 58 54 20 76 61 6c 75 65 20 74 68  he TEXT value th
105a0 61 74 20 6c 6f 6f 6b 73 20 6c 69 6b 65 20 61 6e  at looks like an
105b0 20 69 6e 74 65 67 65 72 20 6f 72 20 72 65 61 6c   integer or real
105c0 20 76 61 6c 75 65 2c 20 72 65 73 70 65 63 74 69   value, respecti
105d0 76 65 6c 79 2c 0a 20 61 6e 64 20 69 67 6e 6f 72  vely,. and ignor
105e0 65 20 74 68 65 20 72 65 73 74 2e 20 20 5e 57 68  e the rest.  ^Wh
105f0 65 6e 20 63 61 73 74 69 6e 67 20 66 72 6f 6d 20  en casting from 
10600 54 45 58 54 20 69 6e 74 6f 20 49 4e 54 45 47 45  TEXT into INTEGE
10610 52 20 6f 72 20 52 45 41 4c 2c 0a 20 6c 65 61 64  R or REAL,. lead
10620 69 6e 67 20 73 70 61 63 65 73 20 69 6e 20 74 68  ing spaces in th
10630 65 20 54 45 58 54 20 76 61 6c 75 65 20 61 72 65  e TEXT value are
10640 20 69 67 6e 6f 72 65 64 2e 20 20 5e 28 41 20 63   ignored.  ^(A c
10650 61 73 74 20 6f 66 20 61 20 54 45 58 54 20 76 61  ast of a TEXT va
10660 6c 75 65 0a 20 74 68 61 74 20 6c 6f 6f 6b 73 20  lue. that looks 
10670 6e 6f 74 68 69 6e 67 20 6c 69 6b 65 20 61 20 6e  nothing like a n
10680 75 6d 62 65 72 20 69 6e 74 6f 20 49 4e 54 45 47  umber into INTEG
10690 45 52 20 6f 72 20 52 45 41 4c 20 72 65 73 75 6c  ER or REAL resul
106a0 74 73 20 69 6e 20 30 20 6f 72 20 30 2e 30 2c 0a  ts in 0 or 0.0,.
106b0 20 72 65 73 70 65 63 74 69 76 65 6c 79 2e 29 5e   respectively.)^
106c0 0a 0a 3c 6c 69 3e 3c 70 3e 0a 20 5e 43 61 73 74  ..<li><p>. ^Cast
106d0 69 6e 67 20 61 20 76 61 6c 75 65 20 69 6e 74 6f  ing a value into
106e0 20 4e 55 4d 45 52 49 43 20 66 69 72 73 74 20 64   NUMERIC first d
106f0 6f 65 73 20 61 20 66 6f 72 63 65 64 20 63 6f 6e  oes a forced con
10700 76 65 72 73 69 6f 6e 20 69 6e 74 6f 20 52 45 41  version into REA
10710 4c 0a 20 20 62 75 74 20 77 69 6c 6c 20 74 68 65  L.  but will the
10720 6e 20 66 75 72 74 68 65 72 20 63 6f 6e 76 65 72  n further conver
10730 74 73 20 74 68 65 20 72 65 73 75 6c 74 20 69 6e  ts the result in
10740 74 6f 20 49 4e 54 45 47 45 52 20 69 66 20 61 6e  to INTEGER if an
10750 64 20 6f 6e 6c 79 20 69 66 0a 20 20 74 68 65 20  d only if.  the 
10760 63 6f 6e 76 65 72 73 69 6f 6e 20 66 72 6f 6d 20  conversion from 
10770 52 45 41 4c 20 74 6f 20 49 4e 54 45 47 45 52 20  REAL to INTEGER 
10780 69 73 20 6c 6f 73 73 6c 65 73 73 20 61 6e 64 20  is lossless and 
10790 72 65 76 65 72 73 69 62 6c 65 2e 0a 20 20 54 68  reversible..  Th
107a0 69 73 20 69 73 20 74 68 65 20 6f 6e 6c 79 20 63  is is the only c
107b0 6f 6e 74 65 78 74 20 69 6e 20 53 51 4c 69 74 65  ontext in SQLite
107c0 20 77 68 65 72 65 20 74 68 65 20 4e 55 4d 45 52   where the NUMER
107d0 49 43 20 61 6e 64 20 49 4e 54 45 47 45 52 0a 20  IC and INTEGER. 
107e0 20 5b 61 66 66 69 6e 69 74 69 65 73 5d 20 62 65   [affinities] be
107f0 68 61 76 65 20 64 69 66 66 65 72 65 6e 74 6c 79  have differently
10800 2e 0a 0a 3c 6c 69 3e 3c 70 3e 0a 20 5e 43 61 73  ...<li><p>. ^Cas
10810 74 69 6e 67 20 61 20 76 61 6c 75 65 20 69 6e 74  ting a value int
10820 6f 20 54 45 58 54 20 72 65 6e 64 65 72 73 20 74  o TEXT renders t
10830 68 65 20 76 61 6c 75 65 20 61 73 20 69 66 20 76  he value as if v
10840 69 61 20 5b 73 71 6c 69 74 65 33 5f 73 6e 70 72  ia [sqlite3_snpr
10850 69 6e 74 66 28 29 5d 0a 20 20 65 78 63 65 70 74  intf()].  except
10860 20 74 68 61 74 20 74 68 65 20 72 65 73 75 6c 74   that the result
10870 69 6e 67 20 54 45 58 54 20 75 73 65 73 20 74 68  ing TEXT uses th
10880 65 20 5b 65 6e 63 6f 64 69 6e 67 5d 20 6f 66 20  e [encoding] of 
10890 74 68 65 20 64 61 74 61 62 61 73 65 0a 20 20 63  the database.  c
108a0 6f 6e 6e 65 63 74 69 6f 6e 2e 0a 0a 3c 6c 69 3e  onnection...<li>
108b0 3c 70 3e 0a 20 5e 43 61 73 74 69 6e 67 20 61 20  <p>. ^Casting a 
108c0 76 61 6c 75 65 20 74 6f 20 61 20 26 6c 74 3b 74  value to a &lt;t
108d0 79 70 65 26 67 74 3b 20 77 69 74 68 20 6e 6f 20  ype&gt; with no 
108e0 61 66 66 69 6e 69 74 79 20 63 61 75 73 65 73 20  affinity causes 
108f0 74 68 65 20 76 61 6c 75 65 20 74 6f 0a 20 20 62  the value to.  b
10900 65 20 63 6f 6e 76 65 72 74 65 64 20 69 6e 74 6f  e converted into
10910 20 61 20 42 4c 4f 42 2e 20 20 5e 43 61 73 74 69   a BLOB.  ^Casti
10920 6e 67 20 74 6f 20 61 20 42 4c 4f 42 20 63 6f 6e  ng to a BLOB con
10930 73 69 73 74 73 20 6f 66 20 66 69 72 73 74 20 63  sists of first c
10940 61 73 74 69 6e 67 0a 20 20 74 68 65 20 76 61 6c  asting.  the val
10950 75 65 20 74 6f 20 54 45 58 54 20 69 6e 20 74 68  ue to TEXT in th
10960 65 20 5b 65 6e 63 6f 64 69 6e 67 5d 20 6f 66 20  e [encoding] of 
10970 74 68 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e  the database con
10980 6e 65 63 74 69 6f 6e 2c 20 74 68 65 6e 0a 20 20  nection, then.  
10990 69 6e 74 65 72 70 72 65 74 69 6e 67 20 74 68 65  interpreting the
109a0 20 72 65 73 75 6c 74 69 6e 67 20 62 79 74 65 20   resulting byte 
109b0 73 65 71 75 65 6e 63 65 20 61 73 20 61 20 42 4c  sequence as a BL
109c0 4f 42 20 69 6e 73 74 65 61 64 20 6f 66 20 61 73  OB instead of as
109d0 20 54 45 58 54 2e 0a 0a 3c 6c 69 3e 3c 70 3e 0a   TEXT...<li><p>.
109e0 20 5e 43 61 73 74 69 6e 67 20 61 20 42 4c 4f 42   ^Casting a BLOB
109f0 20 76 61 6c 75 65 20 69 6e 74 6f 20 61 6e 79 20   value into any 
10a00 74 79 70 65 20 6f 74 68 65 72 20 74 68 61 6e 20  type other than 
10a10 61 20 42 4c 4f 42 20 63 6f 6e 73 69 73 74 73 20  a BLOB consists 
10a20 6f 66 20 66 69 72 73 74 0a 20 20 69 6e 74 65 72  of first.  inter
10a30 70 72 65 74 69 6e 67 20 74 68 65 20 62 79 74 65  preting the byte
10a40 20 73 65 71 75 65 6e 63 65 20 6f 66 20 74 68 65   sequence of the
10a50 20 42 4c 4f 42 20 61 73 20 61 20 54 45 58 54 20   BLOB as a TEXT 
10a60 73 74 72 69 6e 67 20 69 6e 20 74 68 65 0a 20 20  string in the.  
10a70 64 61 74 61 62 61 73 65 20 65 6e 63 6f 64 69 6e  database encodin
10a80 67 20 74 68 65 6e 20 63 6f 6e 74 69 6e 75 69 6e  g then continuin
10a90 67 20 61 73 20 69 66 20 74 68 65 20 76 61 6c 75  g as if the valu
10aa0 65 20 77 68 65 72 65 20 6f 72 69 67 69 6e 61 6c  e where original
10ab0 6c 79 20 6f 66 0a 20 20 74 79 70 65 20 54 45 58  ly of.  type TEX
10ac0 54 2e 0a 0a 3c 6c 69 3e 3c 70 3e 0a 20 5e 41 6e  T...<li><p>. ^An
10ad0 79 20 63 61 73 74 20 6f 66 20 61 20 4e 55 4c 4c  y cast of a NULL
10ae0 20 76 61 6c 75 65 20 79 69 65 6c 64 73 20 61 20   value yields a 
10af0 4e 55 4c 4c 20 72 65 73 75 6c 74 2e 0a 3c 2f 75  NULL result..</u
10b00 6c 3e 0a 0a 3c 70 3e 5e 4e 6f 74 65 20 74 68 61  l>..<p>^Note tha
10b10 74 20 74 68 65 20 72 65 73 75 6c 74 20 66 72 6f  t the result fro
10b20 6d 20 63 61 73 74 69 6e 67 20 61 6e 79 20 6e 6f  m casting any no
10b30 6e 2d 42 4c 4f 42 20 76 61 6c 75 65 20 69 6e 74  n-BLOB value int
10b40 6f 20 61 20 0a 42 4c 4f 42 20 61 6e 64 20 74 68  o a .BLOB and th
10b50 65 20 72 65 73 75 6c 74 20 66 72 6f 6d 20 63 61  e result from ca
10b60 73 74 69 6e 67 20 61 6e 79 20 42 4c 4f 42 20 76  sting any BLOB v
10b70 61 6c 75 65 20 69 6e 74 6f 20 61 20 6e 6f 6e 2d  alue into a non-
10b80 42 4c 4f 42 20 76 61 6c 75 65 0a 77 69 6c 6c 20  BLOB value.will 
10b90 62 65 20 64 69 66 66 65 72 65 6e 74 20 64 65 70  be different dep
10ba0 65 6e 64 69 6e 67 20 6f 6e 20 77 68 65 74 68 65  ending on whethe
10bb0 72 20 74 68 65 20 64 61 74 61 62 61 73 65 20 5b  r the database [
10bc0 65 6e 63 6f 64 69 6e 67 5d 20 69 73 20 55 54 46  encoding] is UTF
10bd0 2d 38 2c 0a 55 54 46 2d 31 36 62 65 2c 20 6f 72  -8,.UTF-16be, or
10be0 20 55 54 46 2d 31 36 6c 65 2e 0a 0a 3c 68 33 3e   UTF-16le...<h3>
10bf0 46 75 6e 63 74 69 6f 6e 73 3c 2f 68 33 3e 0a 3c  Functions</h3>.<
10c00 70 3e 5e 42 6f 74 68 20 5b 63 6f 72 65 66 75 6e  p>^Both [corefun
10c10 63 7c 73 69 6d 70 6c 65 5d 20 61 6e 64 20 5b 61  c|simple] and [a
10c20 67 67 66 75 6e 63 7c 61 67 67 72 65 67 61 74 65  ggfunc|aggregate
10c30 5d 20 66 75 6e 63 74 69 6f 6e 73 20 61 72 65 20  ] functions are 
10c40 73 75 70 70 6f 72 74 65 64 2e 0a 28 46 6f 72 20  supported..(For 
10c50 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 70 75 72  presentation pur
10c60 70 6f 73 65 73 2c 20 73 69 6d 70 6c 65 20 66 75  poses, simple fu
10c70 6e 63 74 69 6f 6e 73 20 61 72 65 20 66 75 72 74  nctions are furt
10c80 68 65 72 20 73 75 62 64 69 76 69 64 65 64 20 69  her subdivided i
10c90 6e 74 6f 0a 5b 63 6f 72 65 66 75 6e 63 20 7c 20  nto.[corefunc | 
10ca0 63 6f 72 65 20 66 75 6e 63 74 69 6f 6e 73 5d 20  core functions] 
10cb0 61 6e 64 20 5b 64 61 74 65 66 75 6e 63 20 7c 20  and [datefunc | 
10cc0 64 61 74 65 2d 74 69 6d 65 20 66 75 6e 63 74 69  date-time functi
10cd0 6f 6e 73 5d 2e 29 0a 5e 41 20 73 69 6d 70 6c 65  ons].).^A simple
10ce0 20 66 75 6e 63 74 69 6f 6e 20 63 61 6e 20 62 65   function can be
10cf0 20 75 73 65 64 20 69 6e 20 61 6e 79 20 65 78 70   used in any exp
10d00 72 65 73 73 69 6f 6e 2e 20 20 5e 53 69 6d 70 6c  ression.  ^Simpl
10d10 65 20 66 75 6e 63 74 69 6f 6e 73 20 72 65 74 75  e functions retu
10d20 72 6e 0a 61 20 72 65 73 75 6c 74 20 69 6d 6d 65  rn.a result imme
10d30 64 69 61 74 65 6c 79 20 62 61 73 65 64 20 6f 6e  diately based on
10d40 20 74 68 65 69 72 20 69 6e 70 75 74 73 2e 20 20   their inputs.  
10d50 5e 41 67 67 72 65 67 61 74 65 20 66 75 6e 63 74  ^Aggregate funct
10d60 69 6f 6e 73 0a 6d 61 79 20 6f 6e 6c 79 20 62 65  ions.may only be
10d70 20 75 73 65 64 20 69 6e 20 61 20 53 45 4c 45 43   used in a SELEC
10d80 54 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 5e 41  T statement.  ^A
10d90 67 67 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f  ggregate functio
10da0 6e 73 20 63 6f 6d 70 75 74 65 0a 74 68 65 69 72  ns compute.their
10db0 20 72 65 73 75 6c 74 20 61 63 72 6f 73 73 20 61   result across a
10dc0 6c 6c 20 72 6f 77 73 20 6f 66 20 74 68 65 20 72  ll rows of the r
10dd0 65 73 75 6c 74 20 73 65 74 2e 3c 2f 70 3e 0a 0a  esult set.</p>..
10de0 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23  <tcl>.##########
10df0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10e00 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10e10 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10e20 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10e30 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b 43 6f  ####.Section {Co
10e40 72 65 20 46 75 6e 63 74 69 6f 6e 73 7d 20 63 6f  re Functions} co
10e50 72 65 66 75 6e 63 20 7b 2a 63 6f 72 65 66 75 6e  refunc {*corefun
10e60 63 7d 0a 70 72 6f 63 20 66 75 6e 63 64 65 66 20  c}.proc funcdef 
10e70 7b 73 79 6e 74 61 78 20 6b 65 79 77 6f 72 64 73  {syntax keywords
10e80 20 64 65 73 63 7d 20 7b 0a 20 20 68 64 5f 70 75   desc} {.  hd_pu
10e90 74 73 20 7b 3c 74 72 3e 7d 0a 20 20 72 65 67 73  ts {<tr>}.  regs
10ea0 75 62 20 2d 61 6c 6c 20 7b 5c 73 2b 7d 20 5b 73  ub -all {\s+} [s
10eb0 74 72 69 6e 67 20 74 72 69 6d 20 24 73 79 6e 74  tring trim $synt
10ec0 61 78 5d 20 7b 3c 62 72 3e 3c 2f 62 72 3e 7d 20  ax] {<br></br>} 
10ed0 73 79 6e 74 61 78 0a 20 20 72 65 67 73 75 62 20  syntax.  regsub 
10ee0 2d 61 6c 6c 20 7b 5c 28 28 5b 5e 2a 29 5d 2b 29  -all {\(([^*)]+)
10ef0 5c 29 7d 20 24 73 79 6e 74 61 78 20 7b 28 3c 69  \)} $syntax {(<i
10f00 3e 5c 31 3c 2f 69 3e 29 7d 20 73 79 6e 74 61 78  >\1</i>)} syntax
10f10 0a 20 20 72 65 67 73 75 62 20 2d 61 6c 6c 20 7b  .  regsub -all {
10f20 2c 7d 20 24 73 79 6e 74 61 78 20 7b 3c 2f 69 3e  ,} $syntax {</i>
10f30 2c 3c 69 3e 7d 20 73 79 6e 74 61 78 0a 20 20 72  ,<i>} syntax.  r
10f40 65 67 73 75 62 20 2d 61 6c 6c 20 7b 3c 69 3e 5c  egsub -all {<i>\
10f50 2e 5c 2e 5c 2e 3c 2f 69 3e 7d 20 24 73 79 6e 74  .\.\.</i>} $synt
10f60 61 78 20 7b 2e 2e 2e 7d 20 73 79 6e 74 61 78 0a  ax {...} syntax.
10f70 20 20 68 64 5f 70 75 74 73 20 22 3c 74 64 20 76    hd_puts "<td v
10f80 61 6c 69 67 6e 3d 5c 22 74 6f 70 5c 22 20 61 6c  align=\"top\" al
10f90 69 67 6e 3d 5c 22 72 69 67 68 74 5c 22 20 77 69  ign=\"right\" wi
10fa0 64 74 68 3d 5c 22 31 32 30 5c 22 3e 22 0a 20 20  dth=\"120\">".  
10fb0 69 66 20 7b 5b 6c 6c 65 6e 67 74 68 20 24 6b 65  if {[llength $ke
10fc0 79 77 6f 72 64 73 5d 3d 3d 30 7d 20 7b 0a 20 20  ywords]==0} {.  
10fd0 20 20 72 65 67 65 78 70 20 7b 5b 61 2d 7a 5f 5d    regexp {[a-z_]
10fe0 2b 7d 20 24 73 79 6e 74 61 78 20 6e 61 6d 65 0a  +} $syntax name.
10ff0 20 20 20 20 68 64 5f 66 72 61 67 6d 65 6e 74 20      hd_fragment 
11000 24 6e 61 6d 65 20 2a 24 6e 61 6d 65 20 22 24 7b  $name *$name "${
11010 6e 61 6d 65 7d 28 29 20 53 51 4c 20 66 75 6e 63  name}() SQL func
11020 74 69 6f 6e 22 0a 20 20 7d 20 65 6c 73 65 20 7b  tion".  } else {
11030 0a 20 20 20 20 73 65 74 20 66 72 61 67 6e 61 6d  .    set fragnam
11040 65 20 5b 6c 69 6e 64 65 78 20 24 6b 65 79 77 6f  e [lindex $keywo
11050 72 64 73 20 30 5d 0a 20 20 20 20 72 65 67 73 75  rds 0].    regsu
11060 62 20 2d 61 6c 6c 20 7b 5b 5e 61 2d 7a 5d 7d 20  b -all {[^a-z]} 
11070 24 66 72 61 67 6e 61 6d 65 20 7b 7d 20 66 72 61  $fragname {} fra
11080 67 6e 61 6d 65 0a 20 20 20 20 68 64 5f 66 72 61  gname.    hd_fra
11090 67 6d 65 6e 74 20 24 66 72 61 67 6e 61 6d 65 0a  gment $fragname.
110a0 20 20 20 20 65 76 61 6c 20 68 64 5f 6b 65 79 77      eval hd_keyw
110b0 6f 72 64 73 20 5b 73 74 72 69 6e 67 20 6d 61 70  ords [string map
110c0 20 7b 5c 6e 20 7b 20 7d 7d 20 24 6b 65 79 77 6f   {\n { }} $keywo
110d0 72 64 73 5d 0a 20 20 7d 0a 20 20 68 64 5f 70 75  rds].  }.  hd_pu
110e0 74 73 20 22 24 73 79 6e 74 61 78 3c 2f 74 64 3e  ts "$syntax</td>
110f0 22 0a 20 20 68 64 5f 70 75 74 73 20 7b 3c 74 64  ".  hd_puts {<td
11100 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 7d 0a   valign="top">}.
11110 20 20 68 64 5f 72 65 73 6f 6c 76 65 20 24 64 65    hd_resolve $de
11120 73 63 0a 20 20 68 64 5f 70 75 74 73 20 7b 3c 2f  sc.  hd_puts {</
11130 74 64 3e 3c 2f 74 72 3e 7d 0a 7d 0a 3c 2f 74 63  td></tr>}.}.</tc
11140 6c 3e 0a 0a 3c 70 3e 54 68 65 20 63 6f 72 65 20  l>..<p>The core 
11150 66 75 6e 63 74 69 6f 6e 73 20 73 68 6f 77 6e 20  functions shown 
11160 62 65 6c 6f 77 20 61 72 65 20 61 76 61 69 6c 61  below are availa
11170 62 6c 65 20 62 79 20 64 65 66 61 75 6c 74 2e 20  ble by default. 
11180 0a 5b 64 61 74 65 66 75 6e 63 20 7c 20 44 61 74  .[datefunc | Dat
11190 65 20 26 61 6d 70 3b 20 54 69 6d 65 20 66 75 6e  e &amp; Time fun
111a0 63 74 69 6f 6e 73 5d 20 61 6e 64 0a 5b 61 67 67  ctions] and.[agg
111b0 66 75 6e 63 20 7c 20 61 67 67 72 65 67 61 74 65  func | aggregate
111c0 20 66 75 6e 63 74 69 6f 6e 73 5d 20 61 72 65 20   functions] are 
111d0 64 6f 63 75 6d 65 6e 74 65 64 20 73 65 70 61 72  documented separ
111e0 61 74 65 6c 79 2e 20 20 41 6e 0a 61 70 70 6c 69  ately.  An.appli
111f0 63 61 74 69 6f 6e 20 6d 61 79 20 64 65 66 69 6e  cation may defin
11200 65 20 61 64 64 69 74 69 6f 6e 61 6c 0a 66 75 6e  e additional.fun
11210 63 74 69 6f 6e 73 20 77 72 69 74 74 65 6e 20 69  ctions written i
11220 6e 20 43 20 61 6e 64 20 61 64 64 65 64 20 74 6f  n C and added to
11230 20 74 68 65 20 64 61 74 61 62 61 73 65 20 65 6e   the database en
11240 67 69 6e 65 20 75 73 69 6e 67 0a 74 68 65 20 5b  gine using.the [
11250 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 66  sqlite3_create_f
11260 75 6e 63 74 69 6f 6e 28 29 5d 20 41 50 49 2e 3c  unction()] API.<
11270 2f 70 3e 0a 0a 3c 74 61 62 6c 65 20 62 6f 72 64  /p>..<table bord
11280 65 72 3d 30 20 63 65 6c 6c 70 61 64 64 69 6e 67  er=0 cellpadding
11290 3d 31 30 3e 0a 3c 74 63 6c 3e 0a 66 75 6e 63 64  =10>.<tcl>.funcd
112a0 65 66 20 7b 61 62 73 28 58 29 7d 20 7b 7d 20 7b  ef {abs(X)} {} {
112b0 0a 20 20 5e 54 68 65 20 61 62 73 28 58 29 20 66  .  ^The abs(X) f
112c0 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20  unction returns 
112d0 74 68 65 20 61 62 73 6f 6c 75 74 65 20 76 61 6c  the absolute val
112e0 75 65 20 6f 66 20 74 68 65 20 6e 75 6d 65 72 69  ue of the numeri
112f0 63 0a 20 20 61 72 67 75 6d 65 6e 74 20 58 2e 20  c.  argument X. 
11300 20 5e 41 62 73 28 58 29 20 72 65 74 75 72 6e 73   ^Abs(X) returns
11310 20 4e 55 4c 4c 20 69 66 20 58 20 69 73 20 4e 55   NULL if X is NU
11320 4c 4c 2e 20 0a 20 20 5e 28 41 62 73 28 58 29 20  LL. .  ^(Abs(X) 
11330 72 65 74 75 72 6e 20 30 2e 30 20 69 66 20 58 20  return 0.0 if X 
11340 69 73 20 61 20 73 74 72 69 6e 67 20 6f 72 20 62  is a string or b
11350 6c 6f 62 0a 20 20 74 68 61 74 20 63 61 6e 6e 6f  lob.  that canno
11360 74 20 62 65 20 63 6f 6e 76 65 72 74 65 64 20 74  t be converted t
11370 6f 20 61 20 6e 75 6d 65 72 69 63 20 76 61 6c 75  o a numeric valu
11380 65 2e 29 5e 20 20 5e 49 66 20 58 20 69 73 20 74  e.)^  ^If X is t
11390 68 65 20 0a 20 20 69 6e 74 65 67 65 72 20 2d 39  he .  integer -9
113a0 32 32 33 33 37 32 30 33 36 38 35 34 37 37 35 38  2233720368547758
113b0 30 37 20 74 68 65 6e 20 61 62 73 28 58 29 20 74  07 then abs(X) t
113c0 68 72 6f 77 73 20 61 6e 20 69 6e 74 65 67 65 72  hrows an integer
113d0 20 6f 76 65 72 66 6c 6f 77 0a 20 20 65 72 72 6f   overflow.  erro
113e0 72 20 73 69 6e 63 65 20 74 68 65 72 65 20 69 73  r since there is
113f0 20 6e 6f 20 65 71 75 69 76 61 6c 65 6e 74 20 70   no equivalent p
11400 6f 73 69 74 69 76 65 20 36 34 2d 62 69 74 20 74  ositive 64-bit t
11410 77 6f 20 63 6f 6d 70 6c 65 6d 65 6e 74 20 76 61  wo complement va
11420 6c 75 65 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20  lue..}..funcdef 
11430 7b 63 68 61 6e 67 65 73 28 29 7d 20 7b 7d 20 7b  {changes()} {} {
11440 0a 20 20 5e 54 68 65 20 63 68 61 6e 67 65 73 28  .  ^The changes(
11450 29 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72  ) function retur
11460 6e 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  ns the number of
11470 20 64 61 74 61 62 61 73 65 20 72 6f 77 73 20 74   database rows t
11480 68 61 74 20 77 65 72 65 20 63 68 61 6e 67 65 64  hat were changed
11490 0a 20 20 6f 72 20 69 6e 73 65 72 74 65 64 20 6f  .  or inserted o
114a0 72 20 64 65 6c 65 74 65 64 20 62 79 20 74 68 65  r deleted by the
114b0 20 6d 6f 73 74 20 72 65 63 65 6e 74 6c 79 20 63   most recently c
114c0 6f 6d 70 6c 65 74 65 64 20 49 4e 53 45 52 54 2c  ompleted INSERT,
114d0 20 44 45 4c 45 54 45 2c 0a 20 20 6f 72 20 55 50   DELETE,.  or UP
114e0 44 41 54 45 20 73 74 61 74 65 6d 65 6e 74 2c 20  DATE statement, 
114f0 65 78 63 6c 75 73 69 76 65 20 6f 66 20 73 74 61  exclusive of sta
11500 74 65 6d 65 6e 74 73 20 69 6e 20 6c 6f 77 65 72  tements in lower
11510 2d 6c 65 76 65 6c 20 74 72 69 67 67 65 72 73 2e  -level triggers.
11520 0a 20 20 5e 54 68 65 20 63 68 61 6e 67 65 73 28  .  ^The changes(
11530 29 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 20 69  ) SQL function i
11540 73 20 61 20 77 72 61 70 70 65 72 20 61 72 6f 75  s a wrapper arou
11550 6e 64 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  nd the [sqlite3_
11560 63 68 61 6e 67 65 73 28 29 5d 0a 20 20 43 2f 43  changes()].  C/C
11570 2b 2b 20 66 75 6e 63 74 69 6f 6e 20 61 6e 64 20  ++ function and 
11580 68 65 6e 63 65 20 66 6f 6c 6c 6f 77 73 20 74 68  hence follows th
11590 65 20 73 61 6d 65 20 72 75 6c 65 73 20 66 6f 72  e same rules for
115a0 20 63 6f 75 6e 74 69 6e 67 20 63 68 61 6e 67 65   counting change
115b0 73 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 63  s..}..funcdef {c
115c0 6f 61 6c 65 73 63 65 28 58 2c 59 2c 2e 2e 2e 29  oalesce(X,Y,...)
115d0 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20 63 6f  } {} {.  ^The co
115e0 61 6c 65 73 63 65 28 29 20 66 75 6e 63 74 69 6f  alesce() functio
115f0 6e 20 72 65 74 75 72 6e 73 20 61 20 63 6f 70 79  n returns a copy
11600 20 6f 66 20 69 74 73 20 66 69 72 73 74 20 6e 6f   of its first no
11610 6e 2d 4e 55 4c 4c 20 61 72 67 75 6d 65 6e 74 2c  n-NULL argument,
11620 20 6f 72 0a 20 20 4e 55 4c 4c 20 69 66 20 61 6c   or.  NULL if al
11630 6c 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20  l arguments are 
11640 4e 55 4c 4c 2e 20 20 5e 43 6f 61 6c 65 73 63 65  NULL.  ^Coalesce
11650 28 29 20 6d 75 73 74 20 62 65 20 61 74 20 6c 65  () must be at le
11660 61 73 74 20 0a 20 20 32 20 61 72 67 75 6d 65 6e  ast .  2 argumen
11670 74 73 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b  ts..}..funcdef {
11680 67 6c 6f 62 28 58 2c 59 29 7d 20 7b 7d 20 7b 0a  glob(X,Y)} {} {.
11690 20 20 5e 54 68 65 20 67 6c 6f 62 28 58 2c 59 29    ^The glob(X,Y)
116a0 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 65 71 75   function is equ
116b0 69 76 61 6c 65 6e 74 20 74 6f 20 74 68 65 0a 20  ivalent to the. 
116c0 20 65 78 70 72 65 73 73 69 6f 6e 20 22 3c 62 3e   expression "<b>
116d0 59 20 47 4c 4f 42 20 58 3c 2f 62 3e 22 2e 0a 20  Y GLOB X</b>".. 
116e0 20 4e 6f 74 65 20 74 68 61 74 20 74 68 65 20 58   Note that the X
116f0 20 61 6e 64 20 59 20 61 72 67 75 6d 65 6e 74 73   and Y arguments
11700 20 61 72 65 20 72 65 76 65 72 73 65 64 20 69 6e   are reversed in
11710 20 74 68 65 20 67 6c 6f 62 28 29 20 66 75 6e 63   the glob() func
11720 74 69 6f 6e 0a 20 20 72 65 6c 61 74 69 76 65 20  tion.  relative 
11730 74 6f 20 74 68 65 20 69 6e 66 69 78 20 5b 47 4c  to the infix [GL
11740 4f 42 5d 20 6f 70 65 72 61 74 6f 72 2e 0a 20 20  OB] operator..  
11750 5e 49 66 20 74 68 65 20 5b 73 71 6c 69 74 65 33  ^If the [sqlite3
11760 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e  _create_function
11770 28 29 5d 20 69 6e 74 65 72 66 61 63 65 20 69 73  ()] interface is
11780 20 75 73 65 64 20 74 6f 0a 20 20 6f 76 65 72 72   used to.  overr
11790 69 64 65 20 74 68 65 20 67 6c 6f 62 28 58 2c 59  ide the glob(X,Y
117a0 29 20 66 75 6e 63 74 69 6f 6e 20 77 69 74 68 20  ) function with 
117b0 61 6e 20 61 6c 74 65 72 6e 61 74 69 76 65 20 69  an alternative i
117c0 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 74 68  mplementation th
117d0 65 6e 0a 20 20 74 68 65 20 5b 47 4c 4f 42 5d 20  en.  the [GLOB] 
117e0 6f 70 65 72 61 74 6f 72 20 77 69 6c 6c 20 69 6e  operator will in
117f0 76 6f 6b 65 20 74 68 65 20 61 6c 74 65 72 6e 61  voke the alterna
11800 74 69 76 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74  tive implementat
11810 69 6f 6e 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20  ion..}..funcdef 
11820 7b 69 66 6e 75 6c 6c 28 58 2c 59 29 7d 20 7b 7d  {ifnull(X,Y)} {}
11830 20 7b 0a 20 20 5e 54 68 65 20 69 66 6e 75 6c 6c   {.  ^The ifnull
11840 28 29 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75  () function retu
11850 72 6e 73 20 61 20 63 6f 70 79 20 6f 66 20 69 74  rns a copy of it
11860 73 20 66 69 72 73 74 20 6e 6f 6e 2d 4e 55 4c 4c  s first non-NULL
11870 20 61 72 67 75 6d 65 6e 74 2c 20 6f 72 0a 20 20   argument, or.  
11880 4e 55 4c 4c 20 69 66 20 62 6f 74 68 20 61 72 67  NULL if both arg
11890 75 6d 65 6e 74 73 20 61 72 65 20 4e 55 4c 4c 2e  uments are NULL.
118a0 20 20 5e 49 66 6e 75 6c 6c 28 29 20 6d 75 73 74    ^Ifnull() must
118b0 20 68 61 76 65 20 65 78 61 63 74 6c 79 20 32 20   have exactly 2 
118c0 61 72 67 75 6d 65 6e 74 73 2e 0a 20 20 5e 54 68  arguments..  ^Th
118d0 65 20 69 66 6e 75 6c 6c 28 29 20 66 75 6e 63 74  e ifnull() funct
118e0 69 6f 6e 20 69 73 20 65 71 75 69 76 61 6c 65 6e  ion is equivalen
118f0 74 20 74 6f 20 5b 63 6f 61 6c 65 73 63 65 28 29  t to [coalesce()
11900 5d 20 77 69 74 68 20 74 77 6f 20 61 72 67 75 6d  ] with two argum
11910 65 6e 74 73 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66  ents..}..funcdef
11920 20 7b 68 65 78 28 58 29 7d 20 7b 7d 20 7b 0a 20   {hex(X)} {} {. 
11930 20 5e 54 68 65 20 68 65 78 28 29 20 66 75 6e 63   ^The hex() func
11940 74 69 6f 6e 20 69 6e 74 65 72 70 72 65 74 73 20  tion interprets 
11950 69 74 73 20 61 72 67 75 6d 65 6e 74 20 61 73 20  its argument as 
11960 61 20 42 4c 4f 42 20 61 6e 64 20 72 65 74 75 72  a BLOB and retur
11970 6e 73 0a 20 20 61 20 73 74 72 69 6e 67 20 77 68  ns.  a string wh
11980 69 63 68 20 69 73 20 74 68 65 20 75 70 70 65 72  ich is the upper
11990 2d 63 61 73 65 20 68 65 78 61 64 65 63 69 6d 61  -case hexadecima
119a0 6c 20 72 65 6e 64 65 72 69 6e 67 20 6f 66 20 74  l rendering of t
119b0 68 65 20 63 6f 6e 74 65 6e 74 20 6f 66 0a 20 20  he content of.  
119c0 74 68 61 74 20 62 6c 6f 62 2e 0a 7d 0a 0a 66 75  that blob..}..fu
119d0 6e 63 64 65 66 20 7b 6c 61 73 74 5f 69 6e 73 65  ncdef {last_inse
119e0 72 74 5f 72 6f 77 69 64 28 29 7d 20 7b 7d 20 7b  rt_rowid()} {} {
119f0 0a 20 20 5e 54 68 65 20 6c 61 73 74 5f 69 6e 73  .  ^The last_ins
11a00 65 72 74 5f 72 6f 77 69 64 28 29 20 66 75 6e 63  ert_rowid() func
11a10 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 74 68 65  tion returns the
11a20 20 5b 52 4f 57 49 44 5d 0a 20 20 6f 66 20 74 68   [ROWID].  of th
11a30 65 20 6c 61 73 74 20 72 6f 77 20 69 6e 73 65 72  e last row inser
11a40 74 20 66 72 6f 6d 20 74 68 65 20 64 61 74 61 62  t from the datab
11a50 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 77  ase connection w
11a60 68 69 63 68 20 69 6e 76 6f 6b 65 64 20 74 68 65  hich invoked the
11a70 0a 20 20 66 75 6e 63 74 69 6f 6e 2e 0a 20 20 5e  .  function..  ^
11a80 54 68 65 20 6c 61 73 74 5f 69 6e 73 65 72 74 5f  The last_insert_
11a90 72 6f 77 69 64 28 29 20 53 51 4c 20 66 75 6e 63  rowid() SQL func
11aa0 74 69 6f 6e 20 69 73 20 61 20 77 72 61 70 70 65  tion is a wrappe
11ab0 72 20 61 72 6f 75 6e 64 20 74 68 65 0a 20 20 5b  r around the.  [
11ac0 73 71 6c 69 74 65 33 5f 6c 61 73 74 5f 69 6e 73  sqlite3_last_ins
11ad0 65 72 74 5f 72 6f 77 69 64 28 29 5d 20 43 2f 43  ert_rowid()] C/C
11ae0 2b 2b 20 69 6e 74 65 72 66 61 63 65 20 66 75 6e  ++ interface fun
11af0 63 74 69 6f 6e 2e 0a 7d 0a 0a 66 75 6e 63 64 65  ction..}..funcde
11b00 66 20 7b 6c 65 6e 67 74 68 28 58 29 7d 20 7b 7d  f {length(X)} {}
11b10 20 7b 0a 20 20 5e 54 68 65 20 6c 65 6e 67 74 68   {.  ^The length
11b20 28 58 29 20 66 75 6e 63 74 69 6f 6e 20 72 65 74  (X) function ret
11b30 75 72 6e 73 20 74 68 65 20 6c 65 6e 67 74 68 20  urns the length 
11b40 6f 66 20 58 20 69 6e 20 0a 20 20 63 68 61 72 61  of X in .  chara
11b50 63 74 65 72 73 20 69 66 20 58 20 69 73 20 61 20  cters if X is a 
11b60 73 74 72 69 6e 67 2c 20 6f 72 20 69 6e 20 62 79  string, or in by
11b70 74 65 73 20 69 66 20 58 20 69 73 20 61 20 62 6c  tes if X is a bl
11b80 6f 62 2e 0a 20 20 5e 49 66 20 58 20 69 73 20 4e  ob..  ^If X is N
11b90 55 4c 4c 20 74 68 65 6e 20 6c 65 6e 67 74 68 28  ULL then length(
11ba0 58 29 20 69 73 20 4e 55 4c 4c 2e 0a 20 20 5e 49  X) is NULL..  ^I
11bb0 66 20 58 20 69 73 20 6e 75 6d 65 72 69 63 20 74  f X is numeric t
11bc0 68 65 6e 20 6c 65 6e 67 74 68 28 58 29 20 72 65  hen length(X) re
11bd0 74 75 72 6e 73 20 74 68 65 20 6c 65 6e 67 74 68  turns the length
11be0 20 6f 66 20 61 20 73 74 72 69 6e 67 0a 20 20 72   of a string.  r
11bf0 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 6f 66  epresentation of
11c00 20 58 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b   X..}..funcdef {
11c10 6c 69 6b 65 28 58 2c 59 29 20 6c 69 6b 65 28 58  like(X,Y) like(X
11c20 2c 59 2c 5a 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54  ,Y,Z)} {} {.  ^T
11c30 68 65 20 6c 69 6b 65 28 29 20 66 75 6e 63 74 69  he like() functi
11c40 6f 6e 20 69 73 20 75 73 65 64 20 74 6f 20 69 6d  on is used to im
11c50 70 6c 65 6d 65 6e 74 20 74 68 65 0a 20 20 22 3c  plement the.  "<
11c60 62 3e 59 20 4c 49 4b 45 20 58 20 26 23 39 31 3b  b>Y LIKE X &#91;
11c70 45 53 43 41 50 45 20 5a 26 23 39 33 3b 3c 2f 62  ESCAPE Z&#93;</b
11c80 3e 22 20 65 78 70 72 65 73 73 69 6f 6e 2e 20 0a  >" expression. .
11c90 20 20 5e 49 66 20 74 68 65 20 6f 70 74 69 6f 6e    ^If the option
11ca0 61 6c 20 45 53 43 41 50 45 20 63 6c 61 75 73 65  al ESCAPE clause
11cb0 20 69 73 20 70 72 65 73 65 6e 74 2c 20 74 68 65   is present, the
11cc0 6e 20 74 68 65 0a 20 20 6c 69 6b 65 28 29 20 66  n the.  like() f
11cd0 75 6e 63 74 69 6f 6e 20 69 73 20 69 6e 76 6f 6b  unction is invok
11ce0 65 64 20 77 69 74 68 20 74 68 72 65 65 20 61 72  ed with three ar
11cf0 67 75 6d 65 6e 74 73 2e 20 20 5e 4f 74 68 65 72  guments.  ^Other
11d00 77 69 73 65 2c 20 69 74 20 69 73 0a 20 20 69 6e  wise, it is.  in
11d10 76 6f 6b 65 64 20 77 69 74 68 20 74 77 6f 20 61  voked with two a
11d20 72 67 75 6d 65 6e 74 73 20 6f 6e 6c 79 2e 20 4e  rguments only. N
11d30 6f 74 65 20 74 68 61 74 20 74 68 65 20 58 20 61  ote that the X a
11d40 6e 64 20 59 20 70 61 72 61 6d 65 74 65 72 73 20  nd Y parameters 
11d50 61 72 65 0a 20 20 72 65 76 65 72 73 65 64 20 69  are.  reversed i
11d60 6e 20 74 68 65 20 6c 69 6b 65 28 29 20 66 75 6e  n the like() fun
11d70 63 74 69 6f 6e 20 72 65 6c 61 74 69 76 65 20 74  ction relative t
11d80 6f 20 74 68 65 20 69 6e 66 69 78 20 5b 4c 49 4b  o the infix [LIK
11d90 45 5d 20 6f 70 65 72 61 74 6f 72 2e 0a 20 20 5e  E] operator..  ^
11da0 54 68 65 20 5b 73 71 6c 69 74 65 33 5f 63 72 65  The [sqlite3_cre
11db0 61 74 65 5f 66 75 6e 63 74 69 6f 6e 28 29 5d 20  ate_function()] 
11dc0 69 6e 74 65 72 66 61 63 65 20 63 61 6e 20 62 65  interface can be
11dd0 20 75 73 65 64 20 74 6f 20 6f 76 65 72 72 69 64   used to overrid
11de0 65 20 74 68 65 0a 20 20 6c 69 6b 65 28 29 20 66  e the.  like() f
11df0 75 6e 63 74 69 6f 6e 20 61 6e 64 20 74 68 65 72  unction and ther
11e00 65 62 79 20 63 68 61 6e 67 65 20 74 68 65 20 6f  eby change the o
11e10 70 65 72 61 74 69 6f 6e 20 6f 66 20 74 68 65 0a  peration of the.
11e20 20 20 5b 4c 49 4b 45 5d 20 6f 70 65 72 61 74 6f    [LIKE] operato
11e30 72 2e 20 20 57 68 65 6e 20 6f 76 65 72 72 69 64  r.  When overrid
11e40 69 6e 67 20 74 68 65 20 6c 69 6b 65 28 29 20 66  ing the like() f
11e50 75 6e 63 74 69 6f 6e 2c 20 69 74 20 6d 61 79 20  unction, it may 
11e60 62 65 20 69 6d 70 6f 72 74 61 6e 74 0a 20 20 74  be important.  t
11e70 6f 20 6f 76 65 72 72 69 64 65 20 62 6f 74 68 20  o override both 
11e80 74 68 65 20 74 77 6f 20 61 6e 64 20 74 68 72 65  the two and thre
11e90 65 20 61 72 67 75 6d 65 6e 74 20 76 65 72 73 69  e argument versi
11ea0 6f 6e 73 20 6f 66 20 74 68 65 20 6c 69 6b 65 28  ons of the like(
11eb0 29 20 0a 20 20 66 75 6e 63 74 69 6f 6e 2e 20 4f  ) .  function. O
11ec0 74 68 65 72 77 69 73 65 2c 20 64 69 66 66 65 72  therwise, differ
11ed0 65 6e 74 20 63 6f 64 65 20 6d 61 79 20 62 65 20  ent code may be 
11ee0 63 61 6c 6c 65 64 20 74 6f 20 69 6d 70 6c 65 6d  called to implem
11ef0 65 6e 74 20 74 68 65 0a 20 20 5b 4c 49 4b 45 5d  ent the.  [LIKE]
11f00 20 6f 70 65 72 61 74 6f 72 20 64 65 70 65 6e 64   operator depend
11f10 69 6e 67 20 6f 6e 20 77 68 65 74 68 65 72 20 6f  ing on whether o
11f20 72 20 6e 6f 74 20 61 6e 20 45 53 43 41 50 45 20  r not an ESCAPE 
11f30 63 6c 61 75 73 65 20 77 61 73 20 0a 20 20 73 70  clause was .  sp
11f40 65 63 69 66 69 65 64 2e 0a 7d 0a 0a 66 75 6e 63  ecified..}..func
11f50 64 65 66 20 7b 6c 6f 61 64 5f 65 78 74 65 6e 73  def {load_extens
11f60 69 6f 6e 28 58 29 20 6c 6f 61 64 5f 65 78 74 65  ion(X) load_exte
11f70 6e 73 69 6f 6e 28 58 2c 59 29 7d 20 7b 7d 20 7b  nsion(X,Y)} {} {
11f80 0a 20 20 5e 54 68 65 20 6c 6f 61 64 5f 65 78 74  .  ^The load_ext
11f90 65 6e 73 69 6f 6e 28 58 2c 59 29 20 66 75 6e 63  ension(X,Y) func
11fa0 74 69 6f 6e 20 6c 6f 61 64 73 20 53 51 4c 69 74  tion loads SQLit
11fb0 65 20 65 78 74 65 6e 73 69 6f 6e 73 20 6f 75 74  e extensions out
11fc0 20 6f 66 20 74 68 65 20 73 68 61 72 65 64 0a 20   of the shared. 
11fd0 20 6c 69 62 72 61 72 79 20 66 69 6c 65 20 6e 61   library file na
11fe0 6d 65 64 20 58 20 75 73 69 6e 67 20 74 68 65 20  med X using the 
11ff0 65 6e 74 72 79 20 70 6f 69 6e 74 20 59 2e 20 20  entry point Y.  
12000 5e 54 68 65 20 72 65 73 75 6c 74 20 6f 66 20 6c  ^The result of l
12010 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28 29 0a  oad_extension().
12020 20 20 69 73 20 61 6c 77 61 79 73 20 61 20 4e 55    is always a NU
12030 4c 4c 2e 20 20 5e 49 66 20 59 20 69 73 20 6f 6d  LL.  ^If Y is om
12040 69 74 74 65 64 20 74 68 65 6e 20 74 68 65 20 64  itted then the d
12050 65 66 61 75 6c 74 20 65 6e 74 72 79 20 70 6f 69  efault entry poi
12060 6e 74 0a 20 20 6f 66 20 3c 62 3e 73 71 6c 69 74  nt.  of <b>sqlit
12070 65 33 5f 65 78 74 65 6e 73 69 6f 6e 5f 69 6e 69  e3_extension_ini
12080 74 3c 2f 62 3e 20 69 73 20 75 73 65 64 2e 20 20  t</b> is used.  
12090 5e 54 68 65 20 6c 6f 61 64 5f 65 78 74 65 6e 73  ^The load_extens
120a0 69 6f 6e 28 29 20 66 75 6e 63 74 69 6f 6e 0a 20  ion() function. 
120b0 20 72 61 69 73 65 73 20 61 6e 20 65 78 63 65 70   raises an excep
120c0 74 69 6f 6e 20 69 66 20 74 68 65 20 65 78 74 65  tion if the exte
120d0 6e 73 69 6f 6e 20 66 61 69 6c 73 20 74 6f 20 6c  nsion fails to l
120e0 6f 61 64 20 6f 72 20 69 6e 69 74 69 61 6c 69 7a  oad or initializ
120f0 65 20 63 6f 72 72 65 63 74 6c 79 2e 0a 0a 20 20  e correctly...  
12100 3c 70 3e 5e 54 68 65 20 6c 6f 61 64 5f 65 78 74  <p>^The load_ext
12110 65 6e 73 69 6f 6e 28 29 20 66 75 6e 63 74 69 6f  ension() functio
12120 6e 20 77 69 6c 6c 20 66 61 69 6c 20 69 66 20 74  n will fail if t
12130 68 65 20 65 78 74 65 6e 73 69 6f 6e 20 61 74 74  he extension att
12140 65 6d 70 74 73 20 74 6f 20 0a 20 20 6d 6f 64 69  empts to .  modi
12150 66 79 20 6f 72 20 64 65 6c 65 74 65 20 61 20 53  fy or delete a S
12160 51 4c 20 66 75 6e 63 74 69 6f 6e 20 6f 72 20 63  QL function or c
12170 6f 6c 6c 61 74 69 6e 67 20 73 65 71 75 65 6e 63  ollating sequenc
12180 65 2e 20 20 5e 54 68 65 0a 20 20 65 78 74 65 6e  e.  ^The.  exten
12190 73 69 6f 6e 20 63 61 6e 20 61 64 64 20 6e 65 77  sion can add new
121a0 20 66 75 6e 63 74 69 6f 6e 73 20 6f 72 20 63 6f   functions or co
121b0 6c 6c 61 74 69 6e 67 20 73 65 71 75 65 6e 63 65  llating sequence
121c0 73 2c 20 62 75 74 20 63 61 6e 6e 6f 74 0a 20 20  s, but cannot.  
121d0 6d 6f 64 69 66 79 20 6f 72 20 64 65 6c 65 74 65  modify or delete
121e0 20 65 78 69 73 74 69 6e 67 20 66 75 6e 63 74 69   existing functi
121f0 6f 6e 73 20 6f 72 20 63 6f 6c 6c 61 74 69 6e 67  ons or collating
12200 20 73 65 71 75 65 6e 63 65 73 20 62 65 63 61 75   sequences becau
12210 73 65 0a 20 20 74 68 6f 73 65 20 66 75 6e 63 74  se.  those funct
12220 69 6f 6e 73 20 61 6e 64 2f 6f 72 20 63 6f 6c 6c  ions and/or coll
12230 61 74 69 6e 67 20 73 65 71 75 65 6e 63 65 73 20  ating sequences 
12240 6d 69 67 68 74 20 62 65 20 75 73 65 64 20 65 6c  might be used el
12250 73 65 77 68 65 72 65 0a 20 20 69 6e 20 74 68 65  sewhere.  in the
12260 20 63 75 72 72 65 6e 74 6c 79 20 72 75 6e 6e 69   currently runni
12270 6e 67 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74  ng SQL statement
12280 2e 20 20 54 6f 20 6c 6f 61 64 20 61 6e 20 65 78  .  To load an ex
12290 74 65 6e 73 69 6f 6e 20 74 68 61 74 0a 20 20 63  tension that.  c
122a0 68 61 6e 67 65 73 20 6f 72 20 64 65 6c 65 74 65  hanges or delete
122b0 73 20 66 75 6e 63 74 69 6f 6e 73 20 6f 72 20 63  s functions or c
122c0 6f 6c 6c 61 74 69 6e 67 20 73 65 71 75 65 6e 63  ollating sequenc
122d0 65 73 2c 20 75 73 65 20 74 68 65 0a 20 20 5b 73  es, use the.  [s
122e0 71 6c 69 74 65 33 5f 6c 6f 61 64 5f 65 78 74 65  qlite3_load_exte
122f0 6e 73 69 6f 6e 28 29 5d 20 43 2d 6c 61 6e 67 75  nsion()] C-langu
12300 61 67 65 20 41 50 49 2e 3c 2f 70 3e 0a 7d 0a 0a  age API.</p>.}..
12310 66 75 6e 63 64 65 66 20 7b 6c 6f 77 65 72 28 58  funcdef {lower(X
12320 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20 6c  )} {} {.  ^The l
12330 6f 77 65 72 28 58 29 20 66 75 6e 63 74 69 6f 6e  ower(X) function
12340 20 72 65 74 75 72 6e 73 20 61 20 63 6f 70 79 20   returns a copy 
12350 6f 66 20 73 74 72 69 6e 67 20 58 20 77 69 74 68  of string X with
12360 20 61 6c 6c 20 41 53 43 49 49 20 63 68 61 72 61   all ASCII chara
12370 63 74 65 72 73 0a 20 20 63 6f 6e 76 65 72 74 65  cters.  converte
12380 64 20 74 6f 20 6c 6f 77 65 72 20 63 61 73 65 2e  d to lower case.
12390 20 20 5e 54 68 65 20 64 65 66 61 75 6c 74 20 62    ^The default b
123a0 75 69 6c 74 2d 69 6e 20 6c 6f 77 65 72 28 29 20  uilt-in lower() 
123b0 66 75 6e 63 74 69 6f 6e 20 77 6f 72 6b 73 0a 20  function works. 
123c0 20 66 6f 72 20 41 53 43 49 49 20 63 68 61 72 61   for ASCII chara
123d0 63 74 65 72 73 20 6f 6e 6c 79 2e 20 20 54 6f 20  cters only.  To 
123e0 64 6f 20 63 61 73 65 20 63 6f 6e 76 65 72 73 69  do case conversi
123f0 6f 6e 73 20 6f 6e 20 6e 6f 6e 2d 41 53 43 49 49  ons on non-ASCII
12400 0a 20 20 63 68 61 72 61 63 74 65 72 73 2c 20 6c  .  characters, l
12410 6f 61 64 20 74 68 65 20 49 43 55 20 65 78 74 65  oad the ICU exte
12420 6e 73 69 6f 6e 2e 0a 7d 0a 0a 66 75 6e 63 64 65  nsion..}..funcde
12430 66 20 7b 6c 74 72 69 6d 28 58 29 20 6c 74 72 69  f {ltrim(X) ltri
12440 6d 28 58 2c 59 29 7d 20 7b 7d 20 7b 0a 20 20 5e  m(X,Y)} {} {.  ^
12450 54 68 65 20 6c 74 72 69 6d 28 58 2c 59 29 20 66  The ltrim(X,Y) f
12460 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20  unction returns 
12470 61 20 73 74 72 69 6e 67 20 66 6f 72 6d 65 64 20  a string formed 
12480 62 79 20 72 65 6d 6f 76 69 6e 67 20 61 6e 79 20  by removing any 
12490 61 6e 64 20 61 6c 6c 0a 20 20 63 68 61 72 61 63  and all.  charac
124a0 74 65 72 73 20 74 68 61 74 20 61 70 70 65 61 72  ters that appear
124b0 20 69 6e 20 59 20 66 72 6f 6d 20 74 68 65 20 6c   in Y from the l
124c0 65 66 74 20 73 69 64 65 20 6f 66 20 58 2e 0a 20  eft side of X.. 
124d0 20 5e 49 66 20 74 68 65 20 59 20 61 72 67 75 6d   ^If the Y argum
124e0 65 6e 74 20 69 73 20 6f 6d 69 74 74 65 64 2c 20  ent is omitted, 
124f0 6c 74 72 69 6d 28 58 29 20 72 65 6d 6f 76 65 73  ltrim(X) removes
12500 20 73 70 61 63 65 73 20 66 72 6f 6d 20 74 68 65   spaces from the
12510 20 6c 65 66 74 20 73 69 64 65 0a 20 20 6f 66 20   left side.  of 
12520 58 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 6d  X..}..funcdef {m
12530 61 78 28 58 2c 59 2c 2e 2e 2e 29 7d 20 7b 2a 6d  ax(X,Y,...)} {*m
12540 61 78 43 6f 72 65 46 75 6e 63 20 2a 6d 61 78 20  axCoreFunc *max 
12550 7b 6d 61 78 28 29 20 53 51 4c 20 66 75 6e 63 74  {max() SQL funct
12560 69 6f 6e 7d 7d 20 7b 0a 20 20 5e 54 68 65 20 6d  ion}} {.  ^The m
12570 75 6c 74 69 2d 61 72 67 75 6d 65 6e 74 20 6d 61  ulti-argument ma
12580 78 28 29 20 66 75 6e 63 74 69 6f 6e 20 72 65 74  x() function ret
12590 75 72 6e 73 20 74 68 65 20 61 72 67 75 6d 65 6e  urns the argumen
125a0 74 20 77 69 74 68 20 74 68 65 20 0a 20 20 6d 61  t with the .  ma
125b0 78 69 6d 75 6d 20 76 61 6c 75 65 2c 20 6f 72 20  ximum value, or 
125c0 72 65 74 75 72 6e 20 4e 55 4c 4c 20 69 66 20 61  return NULL if a
125d0 6e 79 20 61 72 67 75 6d 65 6e 74 20 69 73 20 4e  ny argument is N
125e0 55 4c 4c 2e 20 0a 20 20 5e 54 68 65 20 6d 75 6c  ULL. .  ^The mul
125f0 74 69 2d 61 72 67 75 6d 65 6e 74 20 6d 61 78 28  ti-argument max(
12600 29 20 66 75 6e 63 74 69 6f 6e 20 73 65 61 72 63  ) function searc
12610 68 65 73 20 69 74 73 20 61 72 67 75 6d 65 6e 74  hes its argument
12620 73 20 66 72 6f 6d 20 6c 65 66 74 20 74 6f 20 72  s from left to r
12630 69 67 68 74 0a 20 20 66 6f 72 20 61 6e 20 61 72  ight.  for an ar
12640 67 75 6d 65 6e 74 20 74 68 61 74 20 64 65 66 69  gument that defi
12650 6e 65 73 20 61 20 63 6f 6c 6c 61 74 69 6e 67 20  nes a collating 
12660 66 75 6e 63 74 69 6f 6e 20 61 6e 64 20 75 73 65  function and use
12670 73 20 74 68 61 74 20 63 6f 6c 6c 61 74 69 6e 67  s that collating
12680 0a 20 20 66 75 6e 63 74 69 6f 6e 20 66 6f 72 20  .  function for 
12690 61 6c 6c 20 73 74 72 69 6e 67 20 63 6f 6d 70 61  all string compa
126a0 72 69 73 6f 6e 73 2e 20 20 5e 49 66 20 6e 6f 6e  risons.  ^If non
126b0 65 20 6f 66 20 74 68 65 20 61 72 67 75 6d 65 6e  e of the argumen
126c0 74 73 20 74 6f 20 6d 61 78 28 29 0a 20 20 64 65  ts to max().  de
126d0 66 69 6e 65 20 61 20 63 6f 6c 6c 61 74 69 6e 67  fine a collating
126e0 20 66 75 6e 63 74 69 6f 6e 2c 20 74 68 65 6e 20   function, then 
126f0 74 68 65 20 42 49 4e 41 52 59 20 63 6f 6c 6c 61  the BINARY colla
12700 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e 20 69 73  ting function is
12710 20 75 73 65 64 2e 0a 20 20 4e 6f 74 65 20 74 68   used..  Note th
12720 61 74 20 3c 62 3e 6d 61 78 28 29 3c 2f 62 3e 20  at <b>max()</b> 
12730 69 73 20 61 20 73 69 6d 70 6c 65 20 66 75 6e 63  is a simple func
12740 74 69 6f 6e 20 77 68 65 6e 0a 20 20 69 74 20 68  tion when.  it h
12750 61 73 20 32 20 6f 72 20 6d 6f 72 65 20 61 72 67  as 2 or more arg
12760 75 6d 65 6e 74 73 20 62 75 74 20 6f 70 65 72 61  uments but opera
12770 74 65 73 20 61 73 20 61 6e 0a 20 20 5b 6d 69 6e  tes as an.  [min
12780 41 67 67 46 75 6e 63 20 7c 20 61 67 67 72 65 67  AggFunc | aggreg
12790 61 74 65 20 66 75 6e 63 74 69 6f 6e 5d 20 69 66  ate function] if
127a0 20 67 69 76 65 6e 20 6f 6e 6c 79 20 61 20 73 69   given only a si
127b0 6e 67 6c 65 20 61 72 67 75 6d 65 6e 74 2e 0a 7d  ngle argument..}
127c0 0a 0a 66 75 6e 63 64 65 66 20 7b 6d 69 6e 28 58  ..funcdef {min(X
127d0 2c 59 2c 2e 2e 2e 29 7d 20 7b 2a 6d 69 6e 43 6f  ,Y,...)} {*minCo
127e0 72 65 46 75 6e 63 20 2a 6d 69 6e 20 7b 6d 69 6e  reFunc *min {min
127f0 28 29 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 7d  () SQL function}
12800 7d 20 7b 0a 20 20 5e 54 68 65 20 6d 75 6c 74 69  } {.  ^The multi
12810 2d 61 72 67 75 6d 65 6e 74 20 6d 69 6e 28 29 20  -argument min() 
12820 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73  function returns
12830 20 74 68 65 20 61 72 67 75 6d 65 6e 74 20 77 69   the argument wi
12840 74 68 20 74 68 65 0a 20 20 6d 69 6e 69 6d 75 6d  th the.  minimum
12850 20 76 61 6c 75 65 2e 0a 20 20 5e 54 68 65 20 6d   value..  ^The m
12860 75 6c 74 69 2d 61 72 67 75 6d 65 6e 74 20 6d 69  ulti-argument mi
12870 6e 28 29 20 66 75 6e 63 74 69 6f 6e 20 73 65 61  n() function sea
12880 72 63 68 65 73 20 69 74 73 20 61 72 67 75 6d 65  rches its argume
12890 6e 74 73 20 66 72 6f 6d 20 6c 65 66 74 20 74 6f  nts from left to
128a0 20 72 69 67 68 74 0a 20 20 66 6f 72 20 61 6e 20   right.  for an 
128b0 61 72 67 75 6d 65 6e 74 20 74 68 61 74 20 64 65  argument that de
128c0 66 69 6e 65 73 20 61 20 63 6f 6c 6c 61 74 69 6e  fines a collatin
128d0 67 20 66 75 6e 63 74 69 6f 6e 20 61 6e 64 20 75  g function and u
128e0 73 65 73 20 74 68 61 74 20 63 6f 6c 6c 61 74 69  ses that collati
128f0 6e 67 0a 20 20 66 75 6e 63 74 69 6f 6e 20 66 6f  ng.  function fo
12900 72 20 61 6c 6c 20 73 74 72 69 6e 67 20 63 6f 6d  r all string com
12910 70 61 72 69 73 6f 6e 73 2e 20 20 5e 49 66 20 6e  parisons.  ^If n
12920 6f 6e 65 20 6f 66 20 74 68 65 20 61 72 67 75 6d  one of the argum
12930 65 6e 74 73 20 74 6f 20 6d 69 6e 28 29 0a 20 20  ents to min().  
12940 64 65 66 69 6e 65 20 61 20 63 6f 6c 6c 61 74 69  define a collati
12950 6e 67 20 66 75 6e 63 74 69 6f 6e 2c 20 74 68 65  ng function, the
12960 6e 20 74 68 65 20 42 49 4e 41 52 59 20 63 6f 6c  n the BINARY col
12970 6c 61 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e 20  lating function 
12980 69 73 20 75 73 65 64 2e 0a 20 20 4e 6f 74 65 20  is used..  Note 
12990 74 68 61 74 20 3c 62 3e 6d 69 6e 28 29 3c 2f 62  that <b>min()</b
129a0 3e 20 69 73 20 61 20 73 69 6d 70 6c 65 20 66 75  > is a simple fu
129b0 6e 63 74 69 6f 6e 20 77 68 65 6e 0a 20 20 69 74  nction when.  it
129c0 20 68 61 73 20 32 20 6f 72 20 6d 6f 72 65 20 61   has 2 or more a
129d0 72 67 75 6d 65 6e 74 73 20 62 75 74 20 6f 70 65  rguments but ope
129e0 72 61 74 65 73 20 61 73 20 61 6e 20 0a 20 20 5b  rates as an .  [
129f0 6d 61 78 41 67 67 46 75 6e 63 20 7c 20 61 67 67  maxAggFunc | agg
12a00 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 5d  regate function]
12a10 20 69 66 20 67 69 76 65 6e 0a 20 20 6f 6e 6c 79   if given.  only
12a20 20 61 20 73 69 6e 67 6c 65 20 61 72 67 75 6d 65   a single argume
12a30 6e 74 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b  nt..}..funcdef {
12a40 6e 75 6c 6c 69 66 28 58 2c 59 29 7d 20 7b 7d 20  nullif(X,Y)} {} 
12a50 7b 0a 20 20 5e 54 68 65 20 6e 75 6c 6c 69 66 28  {.  ^The nullif(
12a60 58 2c 59 29 20 66 75 6e 63 74 69 6f 6e 20 72 65  X,Y) function re
12a70 74 75 72 6e 73 20 69 74 73 20 66 69 72 73 74 20  turns its first 
12a80 61 72 67 75 6d 65 6e 74 20 69 66 20 74 68 65 20  argument if the 
12a90 61 72 67 75 6d 65 6e 74 73 20 61 72 65 0a 20 20  arguments are.  
12aa0 64 69 66 66 65 72 65 6e 74 20 61 6e 64 20 4e 55  different and NU
12ab0 4c 4c 20 69 66 20 74 68 65 20 61 72 67 75 6d 65  LL if the argume
12ac0 6e 74 73 20 61 72 65 20 74 68 65 20 73 61 6d 65  nts are the same
12ad0 2e 20 20 5e 54 68 65 20 6e 75 6c 6c 69 66 28 58  .  ^The nullif(X
12ae0 2c 59 29 20 66 75 6e 63 74 69 6f 6e 0a 20 20 73  ,Y) function.  s
12af0 65 61 72 63 68 65 73 20 69 74 73 20 61 72 67 75  earches its argu
12b00 6d 65 6e 74 73 20 66 72 6f 6d 20 6c 65 66 74 20  ments from left 
12b10 74 6f 20 72 69 67 68 74 20 66 6f 72 20 61 6e 20  to right for an 
12b20 61 72 67 75 6d 65 6e 74 20 74 68 61 74 20 64 65  argument that de
12b30 66 69 6e 65 73 20 61 0a 20 20 63 6f 6c 6c 61 74  fines a.  collat
12b40 69 6e 67 20 66 75 6e 63 74 69 6f 6e 20 61 6e 64  ing function and
12b50 20 75 73 65 73 20 74 68 61 74 20 63 6f 6c 6c 61   uses that colla
12b60 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e 20 66 6f  ting function fo
12b70 72 20 61 6c 6c 20 73 74 72 69 6e 67 0a 20 20 63  r all string.  c
12b80 6f 6d 70 61 72 69 73 6f 6e 73 2e 20 20 5e 49 66  omparisons.  ^If
12b90 20 6e 65 69 74 68 65 72 20 61 72 67 75 6d 65 6e   neither argumen
12ba0 74 20 74 6f 20 6e 75 6c 6c 69 66 28 29 20 64 65  t to nullif() de
12bb0 66 69 6e 65 73 20 61 20 63 6f 6c 6c 61 74 69 6e  fines a collatin
12bc0 67 20 66 75 6e 63 74 69 6f 6e 0a 20 20 74 68 65  g function.  the
12bd0 6e 20 74 68 65 20 42 49 4e 41 52 59 20 69 73 20  n the BINARY is 
12be0 75 73 65 64 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66  used..}..funcdef
12bf0 20 7b 71 75 6f 74 65 28 58 29 7d 20 7b 7d 20 7b   {quote(X)} {} {
12c00 0a 20 20 5e 54 68 65 20 71 75 6f 74 65 28 58 29  .  ^The quote(X)
12c10 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e   function return
12c20 73 20 61 20 73 74 72 69 6e 67 20 77 68 69 63 68  s a string which
12c30 20 69 73 20 74 68 65 20 76 61 6c 75 65 20 6f 66   is the value of
12c40 0a 20 20 69 74 73 20 61 72 67 75 6d 65 6e 74 20  .  its argument 
12c50 73 75 69 74 61 62 6c 65 20 66 6f 72 20 69 6e 63  suitable for inc
12c60 6c 75 73 69 6f 6e 20 69 6e 74 6f 20 61 6e 6f 74  lusion into anot
12c70 68 65 72 20 53 51 4c 20 73 74 61 74 65 6d 65 6e  her SQL statemen
12c80 74 2e 0a 20 20 5e 53 74 72 69 6e 67 73 20 61 72  t..  ^Strings ar
12c90 65 20 73 75 72 72 6f 75 6e 64 65 64 20 62 79 20  e surrounded by 
12ca0 73 69 6e 67 6c 65 2d 71 75 6f 74 65 73 20 77 69  single-quotes wi
12cb0 74 68 20 65 73 63 61 70 65 73 20 6f 6e 20 69 6e  th escapes on in
12cc0 74 65 72 69 6f 72 20 71 75 6f 74 65 73 0a 20 20  terior quotes.  
12cd0 61 73 20 6e 65 65 64 65 64 2e 20 20 5e 42 4c 4f  as needed.  ^BLO
12ce0 42 73 20 61 72 65 20 65 6e 63 6f 64 65 64 20 61  Bs are encoded a
12cf0 73 20 68 65 78 61 64 65 63 69 6d 61 6c 20 6c 69  s hexadecimal li
12d00 74 65 72 61 6c 73 2e 0a 7d 0a 0a 66 75 6e 63 64  terals..}..funcd
12d10 65 66 20 7b 72 61 6e 64 6f 6d 28 29 7d 20 7b 7d  ef {random()} {}
12d20 20 7b 0a 20 20 5e 54 68 65 20 72 61 6e 64 6f 6d   {.  ^The random
12d30 28 29 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75  () function retu
12d40 72 6e 73 20 61 20 70 73 65 75 64 6f 2d 72 61 6e  rns a pseudo-ran
12d50 64 6f 6d 20 69 6e 74 65 67 65 72 0a 20 20 62 65  dom integer.  be
12d60 74 77 65 65 6e 20 2d 39 32 32 33 33 37 32 30 33  tween -922337203
12d70 36 38 35 34 37 37 35 38 30 38 20 61 6e 64 20 2b  6854775808 and +
12d80 39 32 32 33 33 37 32 30 33 36 38 35 34 37 37 35  9223372036854775
12d90 38 30 37 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20  807..}..funcdef 
12da0 7b 72 61 6e 64 6f 6d 62 6c 6f 62 28 4e 29 7d 20  {randomblob(N)} 
12db0 7b 7d 20 7b 0a 20 20 5e 54 68 65 20 72 61 6e 64  {} {.  ^The rand
12dc0 6f 6d 62 6c 6f 62 28 4e 29 20 66 75 6e 63 74 69  omblob(N) functi
12dd0 6f 6e 20 72 65 74 75 72 6e 20 61 6e 20 4e 2d 62  on return an N-b
12de0 79 74 65 20 62 6c 6f 62 20 63 6f 6e 74 61 69 6e  yte blob contain
12df0 69 6e 67 20 70 73 65 75 64 6f 2d 72 61 6e 64 6f  ing pseudo-rando
12e00 6d 0a 20 20 62 79 74 65 73 2e 20 5e 49 66 20 4e  m.  bytes. ^If N
12e10 20 69 73 20 6c 65 73 73 20 74 68 61 6e 20 31 20   is less than 1 
12e20 74 68 65 6e 20 61 20 31 2d 62 79 74 65 20 72 61  then a 1-byte ra
12e30 6e 64 6f 6d 20 62 6c 6f 62 20 69 73 20 72 65 74  ndom blob is ret
12e40 75 72 6e 65 64 2e 0a 0a 20 20 3c 70 3e 48 69 6e  urned...  <p>Hin
12e50 74 3a 20 20 61 70 70 6c 69 63 61 74 69 6f 6e 73  t:  applications
12e60 20 63 61 6e 20 67 65 6e 65 72 61 74 65 20 67 6c   can generate gl
12e70 6f 62 61 6c 6c 79 20 75 6e 69 71 75 65 20 69 64  obally unique id
12e80 65 6e 74 69 66 69 65 72 73 0a 20 20 75 73 69 6e  entifiers.  usin
12e90 67 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 20  g this function 
12ea0 74 6f 67 65 74 68 65 72 20 77 69 74 68 20 5b 68  together with [h
12eb0 65 78 28 29 5d 20 61 6e 64 2f 6f 72 0a 20 20 5b  ex()] and/or.  [
12ec0 6c 6f 77 65 72 28 29 5d 20 6c 69 6b 65 20 74 68  lower()] like th
12ed0 69 73 3a 3c 2f 70 3e 0a 0a 20 20 3c 62 6c 6f 63  is:</p>..  <bloc
12ee0 6b 71 75 6f 74 65 3e 0a 20 20 68 65 78 28 72 61  kquote>.  hex(ra
12ef0 6e 64 6f 6d 62 6c 6f 62 28 31 36 29 29 3c 62 72  ndomblob(16))<br
12f00 3e 3c 2f 62 72 3e 0a 20 20 6c 6f 77 65 72 28 68  ></br>.  lower(h
12f10 65 78 28 72 61 6e 64 6f 6d 62 6c 6f 62 28 31 36  ex(randomblob(16
12f20 29 29 29 0a 20 20 3c 2f 62 6c 6f 63 6b 71 75 6f  ))).  </blockquo
12f30 74 65 3e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b  te>.}..funcdef {
12f40 72 65 70 6c 61 63 65 28 58 2c 59 2c 5a 29 7d 20  replace(X,Y,Z)} 
12f50 7b 7d 20 7b 0a 20 20 5e 54 68 65 20 72 65 70 6c  {} {.  ^The repl
12f60 61 63 65 28 58 2c 59 2c 5a 29 20 66 75 6e 63 74  ace(X,Y,Z) funct
12f70 69 6f 6e 20 72 65 74 75 72 6e 73 20 61 20 73 74  ion returns a st
12f80 72 69 6e 67 20 66 6f 72 6d 65 64 20 62 79 20 73  ring formed by s
12f90 75 62 73 74 69 74 75 74 69 6e 67 0a 20 20 73 74  ubstituting.  st
12fa0 72 69 6e 67 20 5a 20 66 6f 72 20 65 76 65 72 79  ring Z for every
12fb0 20 6f 63 63 75 72 72 61 6e 63 65 20 6f 66 20 73   occurrance of s
12fc0 74 72 69 6e 67 20 59 20 69 6e 20 73 74 72 69 6e  tring Y in strin
12fd0 67 20 58 2e 20 20 5e 54 68 65 20 5b 42 49 4e 41  g X.  ^The [BINA
12fe0 52 59 5d 0a 20 20 63 6f 6c 6c 61 74 69 6e 67 20  RY].  collating 
12ff0 73 65 71 75 65 6e 63 65 20 69 73 20 75 73 65 64  sequence is used
13000 20 66 6f 72 20 63 6f 6d 70 61 72 69 73 6f 6e 73   for comparisons
13010 2e 20 20 5e 49 66 20 59 20 69 73 20 61 6e 20 65  .  ^If Y is an e
13020 6d 70 74 79 0a 20 20 73 74 72 69 6e 67 20 74 68  mpty.  string th
13030 65 6e 20 72 65 74 75 72 6e 20 58 20 75 6e 63 68  en return X unch
13040 61 6e 67 65 64 2e 20 20 5e 49 66 20 5a 20 69 73  anged.  ^If Z is
13050 20 6e 6f 74 20 69 6e 69 74 69 61 6c 6c 79 0a 20   not initially. 
13060 20 61 20 73 74 72 69 6e 67 2c 20 69 74 20 69 73   a string, it is
13070 20 63 61 73 74 20 74 6f 20 61 20 55 54 46 2d 38   cast to a UTF-8
13080 20 73 74 72 69 6e 67 20 70 72 69 6f 72 20 74 6f   string prior to
13090 20 70 72 6f 63 65 73 73 69 6e 67 2e 0a 7d 0a 0a   processing..}..
130a0 66 75 6e 63 64 65 66 20 7b 72 6f 75 6e 64 28 58  funcdef {round(X
130b0 29 20 72 6f 75 6e 64 28 58 2c 59 29 7d 20 7b 7d  ) round(X,Y)} {}
130c0 20 7b 0a 20 20 5e 54 68 65 20 72 6f 75 6e 64 28   {.  ^The round(
130d0 58 2c 59 29 20 66 75 6e 63 74 69 6f 6e 20 72 65  X,Y) function re
130e0 74 75 72 6e 73 20 61 20 73 74 72 69 6e 67 20 72  turns a string r
130f0 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 6f 66  epresentation of
13100 20 74 68 65 20 66 6c 6f 61 74 69 6e 67 2d 70 6f   the floating-po
13110 69 6e 74 0a 20 20 76 61 6c 75 65 20 58 20 72 6f  int.  value X ro
13120 75 6e 64 65 64 20 74 6f 20 59 20 64 69 67 69 74  unded to Y digit
13130 73 20 74 6f 20 74 68 65 20 72 69 67 68 74 20 6f  s to the right o
13140 66 20 74 68 65 20 64 65 63 69 6d 61 6c 20 70 6f  f the decimal po
13150 69 6e 74 2e 0a 20 20 5e 49 66 20 74 68 65 20 59  int..  ^If the Y
13160 20 61 72 67 75 6d 65 6e 74 20 69 73 20 6f 6d 69   argument is omi
13170 74 74 65 64 2c 20 74 68 65 20 58 20 76 61 6c 75  tted, the X valu
13180 65 20 69 73 20 74 72 75 6e 63 61 74 65 64 20 74  e is truncated t
13190 6f 20 61 6e 20 69 6e 74 65 67 65 72 2e 0a 7d 0a  o an integer..}.
131a0 0a 66 75 6e 63 64 65 66 20 7b 72 74 72 69 6d 28  .funcdef {rtrim(
131b0 58 29 20 72 74 72 69 6d 28 58 2c 59 29 7d 20 7b  X) rtrim(X,Y)} {
131c0 7d 20 7b 0a 20 20 5e 54 68 65 20 72 74 72 69 6d  } {.  ^The rtrim
131d0 28 58 2c 59 29 20 66 75 6e 63 74 69 6f 6e 20 72  (X,Y) function r
131e0 65 74 75 72 6e 73 20 61 20 73 74 72 69 6e 67 20  eturns a string 
131f0 66 6f 72 6d 65 64 20 62 79 20 72 65 6d 6f 76 69  formed by removi
13200 6e 67 20 61 6e 79 20 61 6e 64 20 61 6c 6c 0a 20  ng any and all. 
13210 20 63 68 61 72 61 63 74 65 72 73 20 74 68 61 74   characters that
13220 20 61 70 70 65 61 72 20 69 6e 20 59 20 66 72 6f   appear in Y fro
13230 6d 20 74 68 65 20 72 69 67 68 74 20 73 69 64 65  m the right side
13240 20 6f 66 20 58 2e 0a 20 20 5e 49 66 20 74 68 65   of X..  ^If the
13250 20 59 20 61 72 67 75 6d 65 6e 74 20 69 73 20 6f   Y argument is o
13260 6d 69 74 74 65 64 2c 20 72 74 72 69 6d 28 58 29  mitted, rtrim(X)
13270 20 72 65 6d 6f 76 65 73 20 73 70 61 63 65 73 20   removes spaces 
13280 66 72 6f 6d 20 74 68 65 20 72 69 67 68 74 0a 20  from the right. 
13290 20 73 69 64 65 20 6f 66 20 58 2e 0a 7d 0a 0a 66   side of X..}..f
132a0 75 6e 63 64 65 66 20 7b 73 6f 75 6e 64 65 78 28  uncdef {soundex(
132b0 58 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20  X)} {} {.  ^The 
132c0 73 6f 75 6e 64 65 78 28 58 29 20 66 75 6e 63 74  soundex(X) funct
132d0 69 6f 6e 20 72 65 74 75 72 6e 73 20 61 20 73 74  ion returns a st
132e0 72 69 6e 67 20 74 68 61 74 20 69 73 20 74 68 65  ring that is the
132f0 20 73 6f 75 6e 64 65 78 20 65 6e 63 6f 64 69 6e   soundex encodin
13300 67 20 0a 20 20 6f 66 20 74 68 65 20 73 74 72 69  g .  of the stri
13310 6e 67 20 58 2e 0a 20 20 5e 54 68 65 20 73 74 72  ng X..  ^The str
13320 69 6e 67 20 22 3f 30 30 30 22 20 69 73 20 72 65  ing "?000" is re
13330 74 75 72 6e 65 64 20 69 66 20 74 68 65 20 61 72  turned if the ar
13340 67 75 6d 65 6e 74 20 69 73 20 4e 55 4c 4c 20 6f  gument is NULL o
13350 72 20 63 6f 6e 74 61 69 6e 73 0a 20 20 6e 6f 20  r contains.  no 
13360 41 53 43 49 49 20 61 6c 70 68 61 62 65 74 69 63  ASCII alphabetic
13370 20 63 68 61 72 61 63 74 65 72 73 2e 0a 20 20 5e   characters..  ^
13380 28 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69  (This function i
13390 73 20 6f 6d 69 74 74 65 64 20 66 72 6f 6d 20 53  s omitted from S
133a0 51 4c 69 74 65 20 62 79 20 64 65 66 61 75 6c 74  QLite by default
133b0 2e 0a 20 20 49 74 20 69 73 20 6f 6e 6c 79 20 61  ..  It is only a
133c0 76 61 69 6c 61 62 6c 65 20 69 66 20 74 68 65 20  vailable if the 
133d0 5b 53 51 4c 49 54 45 5f 53 4f 55 4e 44 45 58 5d  [SQLITE_SOUNDEX]
133e0 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70   compile-time op
133f0 74 69 6f 6e 0a 20 20 69 73 20 75 73 65 64 20 77  tion.  is used w
13400 68 65 6e 20 53 51 4c 69 74 65 20 69 73 20 62 75  hen SQLite is bu
13410 69 6c 74 2e 29 5e 0a 7d 0a 0a 66 75 6e 63 64 65  ilt.)^.}..funcde
13420 66 20 7b 73 71 6c 69 74 65 5f 63 6f 6d 70 69 6c  f {sqlite_compil
13430 65 6f 70 74 69 6f 6e 5f 67 65 74 28 4e 29 7d 20  eoption_get(N)} 
13440 7b 7d 20 7b 0a 20 20 5e 54 68 65 20 73 71 6c 69  {} {.  ^The sqli
13450 74 65 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e  te_compileoption
13460 5f 67 65 74 28 29 20 53 51 4c 20 66 75 6e 63 74  _get() SQL funct
13470 69 6f 6e 20 69 73 20 61 20 77 72 61 70 70 65 72  ion is a wrapper
13480 20 61 72 6f 75 6e 64 20 74 68 65 0a 20 20 5b 73   around the.  [s
13490 71 6c 69 74 65 33 5f 63 6f 6d 70 69 6c 65 6f 70  qlite3_compileop
134a0 74 69 6f 6e 5f 67 65 74 28 29 5d 20 43 2f 43 2b  tion_get()] C/C+
134b0 2b 20 66 75 6e 63 74 69 6f 6e 2e 0a 20 20 5e 54  + function..  ^T
134c0 68 69 73 20 72 6f 75 74 69 6e 65 20 72 65 74 75  his routine retu
134d0 72 6e 73 20 74 68 65 20 4e 2d 74 68 20 63 6f 6d  rns the N-th com
134e0 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e  pile-time option
134f0 20 75 73 65 64 20 74 6f 20 62 75 69 6c 64 20 53   used to build S
13500 51 4c 69 74 65 0a 20 20 6f 72 20 4e 55 4c 4c 20  QLite.  or NULL 
13510 69 66 20 4e 20 69 73 20 6f 75 74 20 6f 66 20 72  if N is out of r
13520 61 6e 67 65 2e 20 20 53 65 65 20 61 6c 73 6f 20  ange.  See also 
13530 74 68 65 20 5b 63 6f 6d 70 69 6c 65 5f 6f 70 74  the [compile_opt
13540 69 6f 6e 73 20 70 72 61 67 6d 61 5d 2e 0a 7d 0a  ions pragma]..}.
13550 0a 66 75 6e 63 64 65 66 20 7b 73 71 6c 69 74 65  .funcdef {sqlite
13560 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 75  _compileoption_u
13570 73 65 64 28 58 29 7d 20 7b 7d 20 7b 0a 20 20 5e  sed(X)} {} {.  ^
13580 54 68 65 20 73 71 6c 69 74 65 5f 63 6f 6d 70 69  The sqlite_compi
13590 6c 65 6f 70 74 69 6f 6e 5f 75 73 65 64 28 29 20  leoption_used() 
135a0 53 51 4c 20 66 75 6e 63 74 69 6f 6e 20 69 73 20  SQL function is 
135b0 61 20 77 72 61 70 70 65 72 20 61 72 6f 75 6e 64  a wrapper around
135c0 20 74 68 65 0a 20 20 5b 73 71 6c 69 74 65 33 5f   the.  [sqlite3_
135d0 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 75 73  compileoption_us
135e0 65 64 28 29 5d 20 43 2f 43 2b 2b 20 66 75 6e 63  ed()] C/C++ func
135f0 74 69 6f 6e 2e 0a 20 20 5e 57 68 65 6e 20 74 68  tion..  ^When th
13600 65 20 61 72 67 75 6d 65 6e 74 20 58 20 74 6f 20  e argument X to 
13610 73 71 6c 69 74 65 5f 63 6f 6d 70 69 6c 65 6f 70  sqlite_compileop
13620 74 69 6f 6e 5f 75 73 65 64 28 58 29 20 69 73 20  tion_used(X) is 
13630 61 20 73 74 72 69 6e 67 20 77 68 69 63 68 0a 20  a string which. 
13640 20 69 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20   is the name of 
13650 61 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  a compile-time o
13660 70 74 69 6f 6e 2c 20 74 68 69 73 20 72 6f 75 74  ption, this rout
13670 69 6e 65 20 72 65 74 75 72 6e 73 20 74 72 75 65  ine returns true
13680 20 28 31 29 20 6f 72 0a 20 20 66 61 6c 73 65 20   (1) or.  false 
13690 28 30 29 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e  (0) depending on
136a0 20 77 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 20   whether or not 
136b0 74 68 61 74 20 6f 70 74 69 6f 6e 20 77 61 73 20  that option was 
136c0 75 73 65 64 20 64 75 72 69 6e 67 20 74 68 65 0a  used during the.
136d0 20 20 62 75 69 6c 64 2e 0a 7d 0a 0a 66 75 6e 63    build..}..func
136e0 64 65 66 20 7b 73 71 6c 69 74 65 5f 73 6f 75 72  def {sqlite_sour
136f0 63 65 5f 69 64 28 29 7d 20 7b 7d 20 7b 0a 20 20  ce_id()} {} {.  
13700 5e 54 68 65 20 73 71 6c 69 74 65 5f 73 6f 75 72  ^The sqlite_sour
13710 63 65 5f 69 64 28 29 20 66 75 6e 63 74 69 6f 6e  ce_id() function
13720 20 72 65 74 75 72 6e 73 20 61 20 73 74 72 69 6e   returns a strin
13730 67 20 74 68 61 74 20 69 64 65 6e 74 69 66 69 65  g that identifie
13740 73 20 74 68 65 0a 20 20 73 70 65 63 69 66 69 63  s the.  specific
13750 20 76 65 72 73 69 6f 6e 20 6f 66 20 74 68 65 20   version of the 
13760 73 6f 75 72 63 65 20 63 6f 64 65 20 74 68 61 74  source code that
13770 20 77 61 73 20 75 73 65 64 20 74 6f 20 62 75 69   was used to bui
13780 6c 64 20 74 68 65 20 53 51 4c 69 74 65 0a 20 20  ld the SQLite.  
13790 6c 69 62 72 61 72 79 2e 20 20 5e 54 68 65 20 73  library.  ^The s
137a0 74 72 69 6e 67 20 72 65 74 75 72 6e 65 64 20 62  tring returned b
137b0 79 20 73 71 6c 69 74 65 5f 73 6f 75 72 63 65 5f  y sqlite_source_
137c0 69 64 28 29 20 62 65 67 69 6e 73 20 77 69 74 68  id() begins with
137d0 0a 20 20 74 68 65 20 64 61 74 65 20 61 6e 64 20  .  the date and 
137e0 74 69 6d 65 20 74 68 61 74 20 74 68 65 20 73 6f  time that the so
137f0 75 72 63 65 20 63 6f 64 65 20 77 61 73 20 63 68  urce code was ch
13800 65 63 6b 65 64 20 69 6e 20 61 6e 64 20 69 73 20  ecked in and is 
13810 66 6f 6c 6c 6f 77 73 20 62 79 0a 20 20 61 6e 20  follows by.  an 
13820 53 48 41 31 20 68 61 73 68 20 74 68 61 74 20 75  SHA1 hash that u
13830 6e 69 71 75 65 6c 79 20 69 64 65 6e 74 69 66 69  niquely identifi
13840 65 73 20 74 68 65 20 73 6f 75 72 63 65 20 74 72  es the source tr
13850 65 65 2e 20 20 5e 54 68 69 73 20 66 75 6e 63 74  ee.  ^This funct
13860 69 6f 6e 20 69 73 0a 20 20 61 6e 20 53 51 4c 20  ion is.  an SQL 
13870 77 72 61 70 70 65 72 20 61 72 6f 75 6e 64 20 74  wrapper around t
13880 68 65 20 5b 73 71 6c 69 74 65 33 5f 73 6f 75 72  he [sqlite3_sour
13890 63 65 69 64 28 29 5d 20 43 20 69 6e 74 65 72 66  ceid()] C interf
138a0 61 63 65 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20  ace..}..funcdef 
138b0 7b 73 71 6c 69 74 65 5f 76 65 72 73 69 6f 6e 28  {sqlite_version(
138c0 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20 73  )} {} {.  ^The s
138d0 71 6c 69 74 65 5f 76 65 72 73 69 6f 6e 28 29 20  qlite_version() 
138e0 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73  function returns
138f0 20 74 68 65 20 76 65 72 73 69 6f 6e 20 73 74 72   the version str
13900 69 6e 67 20 66 6f 72 20 74 68 65 20 53 51 4c 69  ing for the SQLi
13910 74 65 0a 20 20 6c 69 62 72 61 72 79 20 74 68 61  te.  library tha
13920 74 20 69 73 20 72 75 6e 6e 69 6e 67 2e 20 20 5e  t is running.  ^
13930 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73  This function is
13940 20 61 6e 20 53 51 4c 0a 20 20 77 72 61 70 70 65   an SQL.  wrappe
13950 72 20 61 72 6f 75 6e 64 20 74 68 65 20 5b 73 71  r around the [sq
13960 6c 69 74 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e  lite3_libversion
13970 28 29 5d 20 43 2d 69 6e 74 65 72 66 61 63 65 2e  ()] C-interface.
13980 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 73 75 62  .}..funcdef {sub
13990 73 74 72 28 58 2c 59 2c 5a 29 20 73 75 62 73 74  str(X,Y,Z) subst
139a0 72 28 58 2c 59 29 7d 20 7b 7d 20 7b 0a 20 20 5e  r(X,Y)} {} {.  ^
139b0 54 68 65 20 73 75 62 73 74 72 28 58 2c 59 2c 5a  The substr(X,Y,Z
139c0 29 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72  ) function retur
139d0 6e 73 20 61 20 73 75 62 73 74 72 69 6e 67 20 6f  ns a substring o
139e0 66 20 69 6e 70 75 74 20 73 74 72 69 6e 67 20 58  f input string X
139f0 20 74 68 61 74 20 62 65 67 69 6e 73 0a 20 20 77   that begins.  w
13a00 69 74 68 20 74 68 65 20 59 2d 74 68 20 63 68 61  ith the Y-th cha
13a10 72 61 63 74 65 72 20 61 6e 64 20 77 68 69 63 68  racter and which
13a20 20 69 73 20 5a 20 63 68 61 72 61 63 74 65 72 73   is Z characters
13a30 20 6c 6f 6e 67 2e 0a 20 20 5e 49 66 20 5a 20 69   long..  ^If Z i
13a40 73 20 6f 6d 69 74 74 65 64 20 74 68 65 6e 20 73  s omitted then s
13a50 75 62 73 74 72 28 58 2c 59 29 20 72 65 74 75 72  ubstr(X,Y) retur
13a60 6e 73 20 61 6c 6c 20 63 68 61 72 61 63 74 65 72  ns all character
13a70 73 20 74 68 72 6f 75 67 68 20 74 68 65 20 65 6e  s through the en
13a80 64 0a 20 20 6f 66 20 74 68 65 20 73 74 72 69 6e  d.  of the strin
13a90 67 20 58 20 62 65 67 69 6e 6e 69 6e 67 20 77 69  g X beginning wi
13aa0 74 68 20 74 68 65 20 59 2d 74 68 2e 0a 20 20 5e  th the Y-th..  ^
13ab0 54 68 65 20 6c 65 66 74 2d 6d 6f 73 74 20 63 68  The left-most ch
13ac0 61 72 61 63 74 65 72 20 6f 66 20 58 20 69 73 20  aracter of X is 
13ad0 6e 75 6d 62 65 72 20 31 2e 20 20 5e 49 66 20 59  number 1.  ^If Y
13ae0 20 69 73 20 6e 65 67 61 74 69 76 65 0a 20 20 74   is negative.  t
13af0 68 65 6e 20 74 68 65 20 66 69 72 73 74 20 63 68  hen the first ch
13b00 61 72 61 63 74 65 72 20 6f 66 20 74 68 65 20 73  aracter of the s
13b10 75 62 73 74 72 69 6e 67 20 69 73 20 66 6f 75 6e  ubstring is foun
13b20 64 20 62 79 20 63 6f 75 6e 74 69 6e 67 20 66 72  d by counting fr
13b30 6f 6d 20 74 68 65 0a 20 20 72 69 67 68 74 20 72  om the.  right r
13b40 61 74 68 65 72 20 74 68 61 6e 20 74 68 65 20 6c  ather than the l
13b50 65 66 74 2e 20 20 5e 49 66 20 5a 20 69 73 20 6e  eft.  ^If Z is n
13b60 65 67 61 74 69 76 65 20 74 68 65 6e 0a 20 20 74  egative then.  t
13b70 68 65 20 61 62 73 28 5a 29 20 63 68 61 72 61 63  he abs(Z) charac
13b80 74 65 72 73 20 70 72 65 63 65 65 64 69 6e 67 20  ters preceeding 
13b90 74 68 65 20 59 2d 74 68 20 63 68 61 72 61 63 74  the Y-th charact
13ba0 65 72 20 61 72 65 20 72 65 74 75 72 6e 65 64 2e  er are returned.
13bb0 0a 20 20 5e 49 66 20 58 20 69 73 20 61 20 73 74  .  ^If X is a st
13bc0 72 69 6e 67 20 74 68 65 6e 20 63 68 61 72 61 63  ring then charac
13bd0 74 65 72 73 20 69 6e 64 69 63 65 73 20 72 65 66  ters indices ref
13be0 65 72 20 74 6f 20 61 63 74 75 61 6c 20 55 54 46  er to actual UTF
13bf0 2d 38 20 0a 20 20 63 68 61 72 61 63 74 65 72 73  -8 .  characters
13c00 2e 20 20 5e 49 66 20 58 20 69 73 20 61 20 42 4c  .  ^If X is a BL
13c10 4f 42 20 74 68 65 6e 20 74 68 65 20 69 6e 64 69  OB then the indi
13c20 63 65 73 20 72 65 66 65 72 20 74 6f 20 62 79 74  ces refer to byt
13c30 65 73 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b  es..}..funcdef {
13c40 74 6f 74 61 6c 5f 63 68 61 6e 67 65 73 28 29 7d  total_changes()}
13c50 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20 74 6f 74   {} {.  ^The tot
13c60 61 6c 5f 63 68 61 6e 67 65 73 28 29 20 66 75 6e  al_changes() fun
13c70 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 74 68  ction returns th
13c80 65 20 6e 75 6d 62 65 72 20 6f 66 20 72 6f 77 20  e number of row 
13c90 63 68 61 6e 67 65 73 0a 20 20 63 61 75 73 65 64  changes.  caused
13ca0 20 62 79 20 49 4e 53 45 52 54 2c 20 55 50 44 41   by INSERT, UPDA
13cb0 54 45 20 6f 72 20 44 45 4c 45 54 45 0a 20 20 73  TE or DELETE.  s
13cc0 74 61 74 65 6d 65 6e 74 73 20 73 69 6e 63 65 20  tatements since 
13cd0 74 68 65 20 63 75 72 72 65 6e 74 20 64 61 74 61  the current data
13ce0 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  base connection 
13cf0 77 61 73 20 6f 70 65 6e 65 64 2e 0a 20 20 5e 54  was opened..  ^T
13d00 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20  his function is 
13d10 61 20 77 72 61 70 70 65 72 20 61 72 6f 75 6e 64  a wrapper around
13d20 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 74 6f   the [sqlite3_to
13d30 74 61 6c 5f 63 68 61 6e 67 65 73 28 29 5d 0a 20  tal_changes()]. 
13d40 20 43 2f 43 2b 2b 20 69 6e 74 65 72 66 61 63 65   C/C++ interface
13d50 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 74 72  ..}..funcdef {tr
13d60 69 6d 28 58 29 20 74 72 69 6d 28 58 2c 59 29 7d  im(X) trim(X,Y)}
13d70 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20 74 72 69   {} {.  ^The tri
13d80 6d 28 58 2c 59 29 20 66 75 6e 63 74 69 6f 6e 20  m(X,Y) function 
13d90 72 65 74 75 72 6e 73 20 61 20 73 74 72 69 6e 67  returns a string
13da0 20 66 6f 72 6d 65 64 20 62 79 20 72 65 6d 6f 76   formed by remov
13db0 69 6e 67 20 61 6e 79 20 61 6e 64 20 61 6c 6c 0a  ing any and all.
13dc0 20 20 63 68 61 72 61 63 74 65 72 73 20 74 68 61    characters tha
13dd0 74 20 61 70 70 65 61 72 20 69 6e 20 59 20 66 72  t appear in Y fr
13de0 6f 6d 20 62 6f 74 68 20 65 6e 64 73 20 6f 66 20  om both ends of 
13df0 58 2e 0a 20 20 5e 49 66 20 74 68 65 20 59 20 61  X..  ^If the Y a
13e00 72 67 75 6d 65 6e 74 20 69 73 20 6f 6d 69 74 74  rgument is omitt
13e10 65 64 2c 20 74 72 69 6d 28 58 29 20 72 65 6d 6f  ed, trim(X) remo
13e20 76 65 73 20 73 70 61 63 65 73 20 66 72 6f 6d 20  ves spaces from 
13e30 62 6f 74 68 20 65 6e 64 73 20 6f 66 20 58 2e 0a  both ends of X..
13e40 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 74 79 70 65  }..funcdef {type
13e50 6f 66 28 58 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54  of(X)} {} {.  ^T
13e60 68 65 20 74 79 70 65 6f 66 28 58 29 20 66 75 6e  he typeof(X) fun
13e70 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 61 20  ction returns a 
13e80 73 74 72 69 6e 67 20 74 68 61 74 20 69 6e 64 69  string that indi
13e90 63 61 74 65 73 20 74 68 65 20 5b 64 61 74 61 74  cates the [datat
13ea0 79 70 65 5d 20 6f 66 0a 20 20 74 68 65 20 65 78  ype] of.  the ex
13eb0 70 72 65 73 73 69 6f 6e 20 58 3a 20 22 6e 75 6c  pression X: "nul
13ec0 6c 22 2c 20 22 69 6e 74 65 67 65 72 22 2c 20 22  l", "integer", "
13ed0 72 65 61 6c 22 2c 20 22 74 65 78 74 22 2c 20 6f  real", "text", o
13ee0 72 20 22 62 6c 6f 62 22 2e 0a 7d 0a 0a 66 75 6e  r "blob"..}..fun
13ef0 63 64 65 66 20 7b 75 70 70 65 72 28 58 29 7d 20  cdef {upper(X)} 
13f00 7b 7d 20 7b 0a 20 20 5e 54 68 65 20 75 70 70 65  {} {.  ^The uppe
13f10 72 28 58 29 20 66 75 6e 63 74 69 6f 6e 20 72 65  r(X) function re
13f20 74 75 72 6e 73 20 61 20 63 6f 70 79 20 6f 66 20  turns a copy of 
13f30 69 6e 70 75 74 20 73 74 72 69 6e 67 20 58 20 69  input string X i
13f40 6e 20 77 68 69 63 68 20 61 6c 6c 20 0a 20 20 6c  n which all .  l
13f50 6f 77 65 72 2d 63 61 73 65 20 41 53 43 49 49 20  ower-case ASCII 
13f60 63 68 61 72 61 63 74 65 72 73 20 61 72 65 20 63  characters are c
13f70 6f 6e 76 65 72 74 65 64 20 74 6f 20 74 68 65 69  onverted to thei
13f80 72 20 75 70 70 65 72 2d 63 61 73 65 20 65 71 75  r upper-case equ
13f90 69 76 61 6c 65 6e 74 2e 0a 7d 0a 0a 66 75 6e 63  ivalent..}..func
13fa0 64 65 66 20 7b 7a 65 72 6f 62 6c 6f 62 28 4e 29  def {zeroblob(N)
13fb0 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20 7a 65  } {} {.  ^The ze
13fc0 72 6f 62 6c 6f 62 28 4e 29 20 66 75 6e 63 74 69  roblob(N) functi
13fd0 6f 6e 20 72 65 74 75 72 6e 73 20 61 20 42 4c 4f  on returns a BLO
13fe0 42 20 63 6f 6e 73 69 73 74 69 6e 67 20 6f 66 20  B consisting of 
13ff0 4e 20 62 79 74 65 73 20 6f 66 20 30 78 30 30 2e  N bytes of 0x00.
14000 0a 20 20 53 51 4c 69 74 65 20 6d 61 6e 61 67 65  .  SQLite manage
14010 73 20 74 68 65 73 65 20 7a 65 72 6f 62 6c 6f 62  s these zeroblob
14020 73 20 76 65 72 79 20 65 66 66 69 63 69 65 6e 74  s very efficient
14030 6c 79 2e 20 20 5a 65 72 6f 62 6c 6f 62 73 20 63  ly.  Zeroblobs c
14040 61 6e 20 62 65 20 75 73 65 64 20 74 6f 0a 20 20  an be used to.  
14050 72 65 73 65 72 76 65 20 73 70 61 63 65 20 66 6f  reserve space fo
14060 72 20 61 20 42 4c 4f 42 20 74 68 61 74 20 69 73  r a BLOB that is
14070 20 6c 61 74 65 72 20 77 72 69 74 74 65 6e 20 75   later written u
14080 73 69 6e 67 20 0a 20 20 5b 73 71 6c 69 74 65 33  sing .  [sqlite3
14090 5f 62 6c 6f 62 5f 6f 70 65 6e 28 29 20 7c 20 69  _blob_open() | i
140a0 6e 63 72 65 6d 65 6e 74 61 6c 20 42 4c 4f 42 20  ncremental BLOB 
140b0 49 2f 4f 5d 2e 0a 20 20 5e 54 68 69 73 20 53 51  I/O]..  ^This SQ
140c0 4c 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 69 6d  L function is im
140d0 70 6c 65 6d 65 6e 74 65 64 20 75 73 69 6e 67 20  plemented using 
140e0 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 72 65 73  the [sqlite3_res
140f0 75 6c 74 5f 7a 65 72 6f 62 6c 6f 62 28 29 5d 0a  ult_zeroblob()].
14100 20 20 72 6f 75 74 69 6e 65 20 66 72 6f 6d 20 74    routine from t
14110 68 65 20 43 2f 43 2b 2b 20 69 6e 74 65 72 66 61  he C/C++ interfa
14120 63 65 2e 0a 7d 0a 3c 2f 74 63 6c 3e 0a 3c 2f 74  ce..}.</tcl>.</t
14130 61 62 6c 65 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23  able>..<tcl>.###
14140 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14150 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14160 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14170 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14180 23 23 23 23 23 23 23 23 23 23 23 0a 53 65 63 74  ###########.Sect
14190 69 6f 6e 20 7b 44 61 74 65 20 41 6e 64 20 54 69  ion {Date And Ti
141a0 6d 65 20 46 75 6e 63 74 69 6f 6e 73 7d 20 64 61  me Functions} da
141b0 74 65 66 75 6e 63 20 7b 2a 64 61 74 65 66 75 6e  tefunc {*datefun
141c0 63 7d 0a 68 64 5f 6b 65 79 77 6f 72 64 73 20 7b  c}.hd_keywords {
141d0 64 61 74 65 28 29 20 53 51 4c 20 66 75 6e 63 74  date() SQL funct
141e0 69 6f 6e 7d 20 7b 74 69 6d 65 28 29 20 53 51 4c  ion} {time() SQL
141f0 20 66 75 6e 63 74 69 6f 6e 7d 0a 68 64 5f 6b 65   function}.hd_ke
14200 79 77 6f 72 64 73 20 7b 64 61 74 65 74 69 6d 65  ywords {datetime
14210 28 29 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 7d  () SQL function}
14220 20 7b 6a 75 6c 69 61 6e 64 61 79 28 29 20 53 51   {julianday() SQ
14230 4c 20 66 75 6e 63 74 69 6f 6e 7d 0a 68 64 5f 6b  L function}.hd_k
14240 65 79 77 6f 72 64 73 20 7b 73 74 72 66 74 69 6d  eywords {strftim
14250 65 28 29 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e  e() SQL function
14260 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 0a 53 51  }.</tcl>..<p>.SQ
14270 4c 69 74 65 20 73 75 70 70 6f 72 74 73 20 66 69  Lite supports fi
14280 76 65 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65  ve date and time
14290 20 66 75 6e 63 74 69 6f 6e 73 20 61 73 20 66 6f   functions as fo
142a0 6c 6c 6f 77 73 3a 0a 3c 2f 70 3e 0a 0a 3c 70 3e  llows:.</p>..<p>
142b0 0a 3c 6f 6c 3e 0a 3c 6c 69 3e 20 5e 28 3c 62 3e  .<ol>.<li> ^(<b>
142c0 64 61 74 65 28 3c 2f 62 3e 3c 69 3e 74 69 6d 65  date(</b><i>time
142d0 73 74 72 69 6e 67 2c 20 6d 6f 64 69 66 69 65 72  string, modifier
142e0 2c 20 6d 6f 64 69 66 69 65 72 2c 20 2e 2e 2e 3c  , modifier, ...<
142f0 2f 69 3e 3c 62 3e 29 3c 2f 62 3e 29 5e 20 3c 2f  /i><b>)</b>)^ </
14300 6c 69 3e 0a 3c 6c 69 3e 20 5e 28 3c 62 3e 74 69  li>.<li> ^(<b>ti
14310 6d 65 28 3c 2f 62 3e 3c 69 3e 74 69 6d 65 73 74  me(</b><i>timest
14320 72 69 6e 67 2c 20 6d 6f 64 69 66 69 65 72 2c 20  ring, modifier, 
14330 6d 6f 64 69 66 69 65 72 2c 20 2e 2e 2e 3c 2f 69  modifier, ...</i
14340 3e 3c 62 3e 29 3c 2f 62 3e 29 5e 20 3c 2f 6c 69  ><b>)</b>)^ </li
14350 3e 0a 3c 6c 69 3e 20 5e 28 3c 62 3e 64 61 74 65  >.<li> ^(<b>date
14360 74 69 6d 65 28 3c 2f 62 3e 3c 69 3e 74 69 6d 65  time(</b><i>time
14370 73 74 72 69 6e 67 2c 20 6d 6f 64 69 66 69 65 72  string, modifier
14380 2c 20 6d 6f 64 69 66 69 65 72 2c 20 2e 2e 2e 3c  , modifier, ...<
14390 2f 69 3e 3c 62 3e 29 3c 2f 62 3e 29 5e 20 3c 2f  /i><b>)</b>)^ </
143a0 6c 69 3e 0a 3c 6c 69 3e 20 5e 28 3c 62 3e 6a 75  li>.<li> ^(<b>ju
143b0 6c 69 61 6e 64 61 79 28 3c 2f 62 3e 3c 69 3e 74  lianday(</b><i>t
143c0 69 6d 65 73 74 72 69 6e 67 2c 20 6d 6f 64 69 66  imestring, modif
143d0 69 65 72 2c 20 6d 6f 64 69 66 69 65 72 2c 20 2e  ier, modifier, .
143e0 2e 2e 3c 2f 69 3e 3c 62 3e 29 3c 2f 62 3e 29 5e  ..</i><b>)</b>)^
143f0 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5e 28 3c 62   </li>.<li> ^(<b
14400 3e 73 74 72 66 74 69 6d 65 28 3c 2f 62 3e 3c 69  >strftime(</b><i
14410 3e 66 6f 72 6d 61 74 2c 20 74 69 6d 65 73 74 72  >format, timestr
14420 69 6e 67 2c 20 6d 6f 64 69 66 69 65 72 2c 20 6d  ing, modifier, m
14430 6f 64 69 66 69 65 72 2c 20 2e 2e 2e 3c 2f 69 3e  odifier, ...</i>
14440 3c 62 3e 29 3c 2f 62 3e 29 5e 20 3c 2f 6c 69 3e  <b>)</b>)^ </li>
14450 0a 3c 2f 6f 6c 3e 0a 0a 3c 70 3e 0a 5e 41 6c 6c  .</ol>..<p>.^All
14460 20 66 69 76 65 20 64 61 74 65 20 61 6e 64 20 74   five date and t
14470 69 6d 65 20 66 75 6e 63 74 69 6f 6e 73 20 74 61  ime functions ta
14480 6b 65 20 61 20 74 69 6d 65 20 73 74 72 69 6e 67  ke a time string
14490 20 61 73 20 61 6e 20 61 72 67 75 6d 65 6e 74 2e   as an argument.
144a0 20 0a 5e 54 68 65 20 74 69 6d 65 20 73 74 72 69   .^The time stri
144b0 6e 67 20 69 73 20 66 6f 6c 6c 6f 77 65 64 20 62  ng is followed b
144c0 79 20 7a 65 72 6f 20 6f 72 20 6d 6f 72 65 20 6d  y zero or more m
144d0 6f 64 69 66 69 65 72 73 2e 20 0a 5e 54 68 65 20  odifiers. .^The 
144e0 73 74 72 66 74 69 6d 65 28 29 20 66 75 6e 63 74  strftime() funct
144f0 69 6f 6e 20 61 6c 73 6f 20 74 61 6b 65 73 20 61  ion also takes a
14500 20 66 6f 72 6d 61 74 20 73 74 72 69 6e 67 20 61   format string a
14510 73 20 69 74 73 20 66 69 72 73 74 20 61 72 67 75  s its first argu
14520 6d 65 6e 74 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a  ment..</p>..<p>.
14530 54 68 65 20 64 61 74 65 20 61 6e 64 20 74 69 6d  The date and tim
14540 65 20 66 75 6e 63 74 69 6f 6e 73 20 75 73 65 20  e functions use 
14550 61 20 73 75 62 73 65 74 20 6f 66 0a 5b 68 74 74  a subset of.[htt
14560 70 3a 2f 2f 65 6e 2e 77 69 6b 69 70 65 64 69 61  p://en.wikipedia
14570 2e 6f 72 67 2f 77 69 6b 69 2f 49 53 4f 5f 38 36  .org/wiki/ISO_86
14580 30 31 20 7c 20 49 53 30 2d 38 36 30 31 5d 20 64  01 | IS0-8601] d
14590 61 74 65 20 61 6e 64 20 74 69 6d 65 0a 66 6f 72  ate and time.for
145a0 6d 61 74 73 2e 0a 5e 54 68 65 20 64 61 74 65 28  mats..^The date(
145b0 29 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72  ) function retur
145c0 6e 73 20 74 68 65 20 64 61 74 65 20 69 6e 20 74  ns the date in t
145d0 68 69 73 20 66 6f 72 6d 61 74 3a 20 59 59 59 59  his format: YYYY
145e0 2d 4d 4d 2d 44 44 2e 20 0a 5e 54 68 65 20 74 69  -MM-DD. .^The ti
145f0 6d 65 28 29 20 66 75 6e 63 74 69 6f 6e 20 72 65  me() function re
14600 74 75 72 6e 73 20 74 68 65 20 74 69 6d 65 20 61  turns the time a
14610 73 20 48 48 3a 4d 4d 3a 53 53 2e 20 0a 5e 54 68  s HH:MM:SS. .^Th
14620 65 20 64 61 74 65 74 69 6d 65 28 29 20 66 75 6e  e datetime() fun
14630 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 22 59  ction returns "Y
14640 59 59 59 2d 4d 4d 2d 44 44 20 48 48 3a 4d 4d 3a  YYY-MM-DD HH:MM:
14650 53 53 22 2e 20 0a 5e 28 54 68 65 20 6a 75 6c 69  SS". .^(The juli
14660 61 6e 64 61 79 28 29 20 66 75 6e 63 74 69 6f 6e  anday() function
14670 20 72 65 74 75 72 6e 73 20 74 68 65 20 0a 5b 68   returns the .[h
14680 74 74 70 3a 2f 2f 65 6e 2e 77 69 6b 69 70 65 64  ttp://en.wikiped
14690 69 61 2e 6f 72 67 2f 77 69 6b 69 2f 4a 75 6c 69  ia.org/wiki/Juli
146a0 61 6e 5f 64 61 79 20 7c 20 4a 75 6c 69 61 6e 20  an_day | Julian 
146b0 64 61 79 5d 20 2d 20 74 68 65 0a 6e 75 6d 62 65  day] - the.numbe
146c0 72 20 6f 66 20 64 61 79 73 20 73 69 6e 63 65 20  r of days since 
146d0 6e 6f 6f 6e 20 69 6e 20 47 72 65 65 6e 77 69 63  noon in Greenwic
146e0 68 20 6f 6e 20 4e 6f 76 65 6d 62 65 72 20 32 34  h on November 24
146f0 2c 20 34 37 31 34 20 42 2e 43 2e 20 0a 28 5b 68  , 4714 B.C. .([h
14700 74 74 70 3a 2f 2f 65 6e 2e 77 69 6b 69 70 65 64  ttp://en.wikiped
14710 69 61 2e 6f 72 67 2f 77 69 6b 69 2f 50 72 6f 6c  ia.org/wiki/Prol
14720 65 70 74 69 63 5f 47 72 65 67 6f 72 69 61 6e 5f  eptic_Gregorian_
14730 63 61 6c 65 6e 64 61 72 20 7c 20 50 72 6f 6c 65  calendar | Prole
14740 70 74 69 63 20 47 72 65 67 6f 72 69 61 6e 20 63  ptic Gregorian c
14750 61 6c 65 6e 64 61 72 5d 29 2e 29 5e 0a 5e 54 68  alendar]).)^.^Th
14760 65 20 73 74 72 66 74 69 6d 65 28 29 20 72 6f 75  e strftime() rou
14770 74 69 6e 65 20 72 65 74 75 72 6e 73 20 74 68 65  tine returns the
14780 20 64 61 74 65 20 66 6f 72 6d 61 74 74 65 64 20   date formatted 
14790 61 63 63 6f 72 64 69 6e 67 20 74 6f 20 0a 74 68  according to .th
147a0 65 20 66 6f 72 6d 61 74 20 73 74 72 69 6e 67 20  e format string 
147b0 73 70 65 63 69 66 69 65 64 20 61 73 20 74 68 65  specified as the
147c0 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74 2e   first argument.
147d0 0a 5e 54 68 65 20 66 6f 72 6d 61 74 20 73 74 72  .^The format str
147e0 69 6e 67 20 73 75 70 70 6f 72 74 73 20 74 68 65  ing supports the
147f0 20 6d 6f 73 74 20 63 6f 6d 6d 6f 6e 20 73 75 62   most common sub
14800 73 74 69 74 75 74 69 6f 6e 73 20 66 6f 75 6e 64  stitutions found
14810 20 69 6e 20 74 68 65 20 0a 5b 68 74 74 70 3a 2f   in the .[http:/
14820 2f 6f 70 65 6e 67 72 6f 75 70 2e 6f 72 67 2f 6f  /opengroup.org/o
14830 6e 6c 69 6e 65 70 75 62 73 2f 30 30 37 39 30 38  nlinepubs/007908
14840 37 39 39 2f 78 73 68 2f 73 74 72 66 74 69 6d 65  799/xsh/strftime
14850 2e 68 74 6d 6c 20 7c 20 73 74 72 66 74 69 6d 65  .html | strftime
14860 28 29 20 66 75 6e 63 74 69 6f 6e 5d 0a 66 72 6f  () function].fro
14870 6d 20 74 68 65 20 73 74 61 6e 64 61 72 64 20 43  m the standard C
14880 20 6c 69 62 72 61 72 79 20 70 6c 75 73 20 74 77   library plus tw
14890 6f 20 6e 65 77 20 73 75 62 73 74 69 74 75 74 69  o new substituti
148a0 6f 6e 73 2c 20 25 66 20 61 6e 64 20 25 4a 2e 0a  ons, %f and %J..
148b0 5e 28 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20  ^(The following 
148c0 69 73 20 61 20 63 6f 6d 70 6c 65 74 65 20 6c 69  is a complete li
148d0 73 74 20 6f 66 20 76 61 6c 69 64 20 73 74 72 66  st of valid strf
148e0 74 69 6d 65 28 29 20 73 75 62 73 74 69 74 75 74  time() substitut
148f0 69 6f 6e 73 3a 0a 3c 2f 70 3e 0a 0a 3c 62 6c 6f  ions:.</p>..<blo
14900 63 6b 71 75 6f 74 65 3e 0a 3c 74 61 62 6c 65 20  ckquote>.<table 
14910 62 6f 72 64 65 72 3d 22 30 22 20 63 65 6c 6c 70  border="0" cellp
14920 61 64 64 69 6e 67 3d 22 30 22 20 63 65 6c 6c 73  adding="0" cells
14930 70 61 63 69 6e 67 3d 22 30 22 3e 0a 3c 74 72 3e  pacing="0">.<tr>
14940 3c 74 64 3e 3c 74 64 20 77 69 64 74 68 3d 22 31  <td><td width="1
14950 30 22 3e 3c 74 64 3e 3c 2f 74 72 3e 0a 0a 3c 74  0"><td></tr>..<t
14960 72 3e 3c 74 64 3e 20 25 64 20 3c 74 64 3e 3c 74  r><td> %d <td><t
14970 64 3e 20 64 61 79 20 6f 66 20 6d 6f 6e 74 68 3a  d> day of month:
14980 20 30 30 0a 3c 74 72 3e 3c 74 64 3e 20 25 66 20   00.<tr><td> %f 
14990 3c 74 64 3e 3c 74 64 3e 20 66 72 61 63 74 69 6f  <td><td> fractio
149a0 6e 61 6c 20 73 65 63 6f 6e 64 73 3a 20 53 53 2e  nal seconds: SS.
149b0 53 53 53 0a 3c 74 72 3e 3c 74 64 3e 20 25 48 20  SSS.<tr><td> %H 
149c0 3c 74 64 3e 3c 74 64 3e 20 68 6f 75 72 3a 20 30  <td><td> hour: 0
149d0 30 2d 32 34 20 0a 3c 74 72 3e 3c 74 64 3e 20 25  0-24 .<tr><td> %
149e0 6a 20 3c 74 64 3e 3c 74 64 3e 20 64 61 79 20 6f  j <td><td> day o
149f0 66 20 79 65 61 72 3a 20 30 30 31 2d 33 36 36 0a  f year: 001-366.
14a00 3c 74 72 3e 3c 74 64 3e 20 25 4a 20 3c 74 64 3e  <tr><td> %J <td>
14a10 3c 74 64 3e 20 4a 75 6c 69 61 6e 20 64 61 79 20  <td> Julian day 
14a20 6e 75 6d 62 65 72 0a 3c 74 72 3e 3c 74 64 3e 20  number.<tr><td> 
14a30 25 6d 20 3c 74 64 3e 3c 74 64 3e 20 6d 6f 6e 74  %m <td><td> mont
14a40 68 3a 20 30 31 2d 31 32 0a 3c 74 72 3e 3c 74 64  h: 01-12.<tr><td
14a50 3e 20 25 4d 20 3c 74 64 3e 3c 74 64 3e 20 6d 69  > %M <td><td> mi
14a60 6e 75 74 65 3a 20 30 30 2d 35 39 0a 3c 74 72 3e  nute: 00-59.<tr>
14a70 3c 74 64 3e 20 25 73 20 3c 74 64 3e 3c 74 64 3e  <td> %s <td><td>
14a80 20 73 65 63 6f 6e 64 73 20 73 69 6e 63 65 20 31   seconds since 1
14a90 39 37 30 2d 30 31 2d 30 31 0a 3c 74 72 3e 3c 74  970-01-01.<tr><t
14aa0 64 3e 20 25 53 20 3c 74 64 3e 3c 74 64 3e 20 73  d> %S <td><td> s
14ab0 65 63 6f 6e 64 73 3a 20 30 30 2d 35 39 0a 3c 74  econds: 00-59.<t
14ac0 72 3e 3c 74 64 3e 20 25 77 20 3c 74 64 3e 3c 74  r><td> %w <td><t
14ad0 64 3e 20 64 61 79 20 6f 66 20 77 65 65 6b 20 30  d> day of week 0
14ae0 2d 36 20 77 69 74 68 20 73 75 6e 64 61 79 3d 3d  -6 with sunday==
14af0 30 0a 3c 74 72 3e 3c 74 64 3e 20 25 57 20 3c 74  0.<tr><td> %W <t
14b00 64 3e 3c 74 64 3e 20 77 65 65 6b 20 6f 66 20 79  d><td> week of y
14b10 65 61 72 3a 20 30 30 2d 35 33 0a 3c 74 72 3e 3c  ear: 00-53.<tr><
14b20 74 64 3e 20 25 59 20 3c 74 64 3e 3c 74 64 3e 20  td> %Y <td><td> 
14b30 79 65 61 72 3a 20 30 30 30 30 2d 39 39 39 39 0a  year: 0000-9999.
14b40 3c 74 72 3e 3c 74 64 3e 20 25 25 20 3c 74 64 3e  <tr><td> %% <td>
14b50 3c 74 64 3e 20 25 0a 3c 2f 74 61 62 6c 65 3e 0a  <td> %.</table>.
14b60 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 29 5e 0a  </blockquote>)^.
14b70 0a 3c 70 3e 0a 5e 28 4e 6f 74 69 63 65 20 74 68  .<p>.^(Notice th
14b80 61 74 20 61 6c 6c 20 6f 74 68 65 72 20 64 61 74  at all other dat
14b90 65 20 61 6e 64 20 74 69 6d 65 20 66 75 6e 63 74  e and time funct
14ba0 69 6f 6e 73 20 63 61 6e 20 62 65 20 65 78 70 72  ions can be expr
14bb0 65 73 73 65 64 0a 69 6e 20 74 65 72 6d 73 20 6f  essed.in terms o
14bc0 66 20 73 74 72 66 74 69 6d 65 28 29 3a 0a 3c 2f  f strftime():.</
14bd0 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e  p>..<blockquote>
14be0 0a 3c 74 61 62 6c 65 20 62 6f 72 64 65 72 3d 22  .<table border="
14bf0 30 22 20 63 65 6c 6c 70 61 64 64 69 6e 67 3d 22  0" cellpadding="
14c00 30 22 20 63 65 6c 6c 73 70 61 63 69 6e 67 3d 22  0" cellspacing="
14c10 30 22 3e 0a 3c 74 72 3e 3c 74 64 3e 3c 62 3e 46  0">.<tr><td><b>F
14c20 75 6e 63 74 69 6f 6e 3c 2f 62 3e 3c 74 64 20 77  unction</b><td w
14c30 69 64 74 68 3d 22 33 30 22 3e 3c 74 64 3e 3c 62  idth="30"><td><b
14c40 3e 45 71 75 69 76 61 6c 65 6e 74 20 73 74 72 66  >Equivalent strf
14c50 74 69 6d 65 28 29 3c 2f 62 3e 0a 3c 74 72 3e 3c  time()</b>.<tr><
14c60 74 64 3e 20 20 20 64 61 74 65 28 2e 2e 2e 29 20  td>   date(...) 
14c70 20 20 20 20 20 3c 74 64 3e 3c 74 64 3e 20 20 73       <td><td>  s
14c80 74 72 66 74 69 6d 65 28 27 25 59 2d 25 6d 2d 25  trftime('%Y-%m-%
14c90 64 27 2c 20 2e 2e 2e 29 0a 3c 74 72 3e 3c 74 64  d', ...).<tr><td
14ca0 3e 20 20 20 74 69 6d 65 28 2e 2e 2e 29 20 20 20  >   time(...)   
14cb0 20 20 20 3c 74 64 3e 3c 74 64 3e 20 20 73 74 72     <td><td>  str
14cc0 66 74 69 6d 65 28 27 25 48 3a 25 4d 3a 25 53 27  ftime('%H:%M:%S'
14cd0 2c 20 2e 2e 2e 29 0a 3c 74 72 3e 3c 74 64 3e 20  , ...).<tr><td> 
14ce0 20 20 64 61 74 65 74 69 6d 65 28 2e 2e 2e 29 20    datetime(...) 
14cf0 20 3c 74 64 3e 3c 74 64 3e 20 20 73 74 72 66 74   <td><td>  strft
14d00 69 6d 65 28 27 25 59 2d 25 6d 2d 25 64 20 25 48  ime('%Y-%m-%d %H
14d10 3a 25 4d 3a 25 53 27 2c 20 2e 2e 2e 29 0a 3c 74  :%M:%S', ...).<t
14d20 72 3e 3c 74 64 3e 20 20 20 6a 75 6c 69 61 6e 64  r><td>   juliand
14d30 61 79 28 2e 2e 2e 29 20 3c 74 64 3e 3c 74 64 3e  ay(...) <td><td>
14d40 20 20 73 74 72 66 74 69 6d 65 28 27 25 4a 27 2c    strftime('%J',
14d50 20 2e 2e 2e 29 0a 3c 2f 74 61 62 6c 65 3e 0a 3c   ...).</table>.<
14d60 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 29 5e 0a 0a  /blockquote>)^..
14d70 3c 70 3e 0a 54 68 65 20 6f 6e 6c 79 20 72 65 61  <p>.The only rea
14d80 73 6f 6e 73 20 66 6f 72 20 70 72 6f 76 69 64 69  sons for providi
14d90 6e 67 20 66 75 6e 63 74 69 6f 6e 73 20 6f 74 68  ng functions oth
14da0 65 72 20 74 68 61 6e 20 73 74 72 66 74 69 6d 65  er than strftime
14db0 28 29 20 69 73 0a 66 6f 72 20 63 6f 6e 76 65 6e  () is.for conven
14dc0 69 65 6e 63 65 20 61 6e 64 20 66 6f 72 20 65 66  ience and for ef
14dd0 66 69 63 69 65 6e 63 79 2e 0a 3c 2f 70 3e 0a 0a  ficiency..</p>..
14de0 3c 68 33 3e 54 69 6d 65 20 53 74 72 69 6e 67 73  <h3>Time Strings
14df0 3c 2f 68 33 3e 0a 0a 3c 70 3e 5e 28 41 20 74 69  </h3>..<p>^(A ti
14e00 6d 65 20 73 74 72 69 6e 67 20 63 61 6e 20 62 65  me string can be
14e10 20 69 6e 20 61 6e 79 20 6f 66 20 74 68 65 20 66   in any of the f
14e20 6f 6c 6c 6f 77 69 6e 67 20 66 6f 72 6d 61 74 73  ollowing formats
14e30 3a 3c 2f 70 3e 0a 0a 3c 6f 6c 3e 0a 3c 6c 69 3e  :</p>..<ol>.<li>
14e40 20 3c 69 3e 59 59 59 59 2d 4d 4d 2d 44 44 3c 2f   <i>YYYY-MM-DD</
14e50 69 3e 0a 3c 6c 69 3e 20 3c 69 3e 59 59 59 59 2d  i>.<li> <i>YYYY-
14e60 4d 4d 2d 44 44 20 48 48 3a 4d 4d 3c 2f 69 3e 0a  MM-DD HH:MM</i>.
14e70 3c 6c 69 3e 20 3c 69 3e 59 59 59 59 2d 4d 4d 2d  <li> <i>YYYY-MM-
14e80 44 44 20 48 48 3a 4d 4d 3a 53 53 3c 2f 69 3e 0a  DD HH:MM:SS</i>.
14e90 3c 6c 69 3e 20 3c 69 3e 59 59 59 59 2d 4d 4d 2d  <li> <i>YYYY-MM-
14ea0 44 44 20 48 48 3a 4d 4d 3a 53 53 2e 53 53 53 3c  DD HH:MM:SS.SSS<
14eb0 2f 69 3e 0a 3c 6c 69 3e 20 3c 69 3e 59 59 59 59  /i>.<li> <i>YYYY
14ec0 2d 4d 4d 2d 44 44 3c 2f 69 3e 3c 62 3e 54 3c 2f  -MM-DD</i><b>T</
14ed0 62 3e 3c 69 3e 48 48 3a 4d 4d 3c 2f 69 3e 0a 3c  b><i>HH:MM</i>.<
14ee0 6c 69 3e 20 3c 69 3e 59 59 59 59 2d 4d 4d 2d 44  li> <i>YYYY-MM-D
14ef0 44 3c 2f 69 3e 3c 62 3e 54 3c 2f 62 3e 3c 69 3e  D</i><b>T</b><i>
14f00 48 48 3a 4d 4d 3a 53 53 3c 2f 69 3e 0a 3c 6c 69  HH:MM:SS</i>.<li
14f10 3e 20 3c 69 3e 59 59 59 59 2d 4d 4d 2d 44 44 3c  > <i>YYYY-MM-DD<
14f20 2f 69 3e 3c 62 3e 54 3c 2f 62 3e 3c 69 3e 48 48  /i><b>T</b><i>HH
14f30 3a 4d 4d 3a 53 53 2e 53 53 53 3c 2f 69 3e 0a 3c  :MM:SS.SSS</i>.<
14f40 6c 69 3e 20 3c 69 3e 48 48 3a 4d 4d 3c 2f 69 3e  li> <i>HH:MM</i>
14f50 0a 3c 6c 69 3e 20 3c 69 3e 48 48 3a 4d 4d 3a 53  .<li> <i>HH:MM:S
14f60 53 3c 2f 69 3e 0a 3c 6c 69 3e 20 3c 69 3e 48 48  S</i>.<li> <i>HH
14f70 3a 4d 4d 3a 53 53 2e 53 53 53 3c 2f 69 3e 0a 3c  :MM:SS.SSS</i>.<
14f80 6c 69 3e 20 3c 62 3e 6e 6f 77 3c 2f 62 3e 0a 3c  li> <b>now</b>.<
14f90 6c 69 3e 20 3c 69 3e 44 44 44 44 44 44 44 44 44  li> <i>DDDDDDDDD
14fa0 44 3c 2f 69 3e 0a 3c 2f 6f 6c 3e 29 5e 0a 0a 3c  D</i>.</ol>)^..<
14fb0 70 3e 0a 5e 49 6e 20 66 6f 72 6d 61 74 73 20 35  p>.^In formats 5
14fc0 20 74 68 72 6f 75 67 68 20 37 2c 20 74 68 65 20   through 7, the 
14fd0 22 54 22 20 69 73 20 61 20 6c 69 74 65 72 61 6c  "T" is a literal
14fe0 20 63 68 61 72 61 63 74 65 72 20 73 65 70 61 72   character separ
14ff0 61 74 69 6e 67 20 0a 74 68 65 20 64 61 74 65 20  ating .the date 
15000 61 6e 64 20 74 68 65 20 74 69 6d 65 2c 20 61 73  and the time, as
15010 20 72 65 71 75 69 72 65 64 20 62 79 20 0a 5b 68   required by .[h
15020 74 74 70 3a 2f 2f 77 77 77 2e 77 33 63 2e 6f 72  ttp://www.w3c.or
15030 67 2f 54 52 2f 4e 4f 54 45 2d 64 61 74 65 74 69  g/TR/NOTE-dateti
15040 6d 65 20 7c 20 49 53 4f 2d 38 36 30 31 5d 2e 20  me | ISO-8601]. 
15050 0a 5e 46 6f 72 6d 61 74 73 20 38 20 74 68 72 6f  .^Formats 8 thro
15060 75 67 68 20 31 30 20 74 68 61 74 20 73 70 65 63  ugh 10 that spec
15070 69 66 79 20 6f 6e 6c 79 20 61 20 74 69 6d 65 20  ify only a time 
15080 61 73 73 75 6d 65 20 61 20 64 61 74 65 20 6f 66  assume a date of
15090 20 0a 32 30 30 30 2d 30 31 2d 30 31 2e 20 46 6f   .2000-01-01. Fo
150a0 72 6d 61 74 20 31 31 2c 20 74 68 65 20 73 74 72  rmat 11, the str
150b0 69 6e 67 20 27 6e 6f 77 27 2c 20 69 73 20 63 6f  ing 'now', is co
150c0 6e 76 65 72 74 65 64 20 69 6e 74 6f 20 74 68 65  nverted into the
150d0 20 0a 63 75 72 72 65 6e 74 20 64 61 74 65 20 61   .current date a
150e0 6e 64 20 74 69 6d 65 20 61 73 20 6f 62 74 61 69  nd time as obtai
150f0 6e 65 64 20 66 72 6f 6d 20 74 68 65 20 78 43 75  ned from the xCu
15100 72 72 65 6e 74 54 69 6d 65 20 6d 65 74 68 6f 64  rrentTime method
15110 0a 6f 66 20 74 68 65 20 5b 73 71 6c 69 74 65 33  .of the [sqlite3
15120 5f 76 66 73 5d 20 6f 62 6a 65 63 74 20 69 6e 20  _vfs] object in 
15130 75 73 65 2e 0a 5e 5b 68 74 74 70 3a 2f 2f 65 6e  use..^[http://en
15140 2e 77 69 6b 69 70 65 64 69 61 2e 6f 72 67 2f 77  .wikipedia.org/w
15150 69 6b 69 2f 43 6f 6f 72 64 69 6e 61 74 65 64 5f  iki/Coordinated_
15160 55 6e 69 76 65 72 73 61 6c 5f 54 69 6d 65 20 7c  Universal_Time |
15170 20 55 6e 69 76 65 72 73 61 6c 20 43 6f 6f 72 64   Universal Coord
15180 69 6e 61 74 65 64 20 54 69 6d 65 20 28 55 54 43  inated Time (UTC
15190 29 5d 20 69 73 20 75 73 65 64 2e 20 0a 5e 46 6f  )] is used. .^Fo
151a0 72 6d 61 74 20 31 32 20 69 73 20 74 68 65 20 0a  rmat 12 is the .
151b0 5b 68 74 74 70 3a 2f 2f 65 6e 2e 77 69 6b 69 70  [http://en.wikip
151c0 65 64 69 61 2e 6f 72 67 2f 77 69 6b 69 2f 4a 75  edia.org/wiki/Ju
151d0 6c 69 61 6e 5f 64 61 79 20 7c 20 4a 75 6c 69 61  lian_day | Julia
151e0 6e 20 64 61 79 20 6e 75 6d 62 65 72 5d 0a 65 78  n day number].ex
151f0 70 72 65 73 73 65 64 20 61 73 20 61 20 66 6c 6f  pressed as a flo
15200 61 74 69 6e 67 20 70 6f 69 6e 74 20 76 61 6c 75  ating point valu
15210 65 2e 0a 3c 2f 70 3e 0a 0a 3c 68 33 3e 4d 6f 64  e..</p>..<h3>Mod
15220 69 66 69 65 72 73 3c 2f 68 33 3e 0a 0a 3c 70 3e  ifiers</h3>..<p>
15230 5e 54 68 65 20 74 69 6d 65 20 73 74 72 69 6e 67  ^The time string
15240 20 63 61 6e 20 62 65 20 66 6f 6c 6c 6f 77 65 64   can be followed
15250 20 62 79 20 7a 65 72 6f 20 6f 72 20 6d 6f 72 65   by zero or more
15260 20 6d 6f 64 69 66 69 65 72 73 20 74 68 61 74 20   modifiers that 
15270 0a 61 6c 74 65 72 20 74 68 65 20 64 61 74 65 20  .alter the date 
15280 61 6e 64 20 74 69 6d 65 20 73 74 72 69 6e 67 2e  and time string.
15290 20 5e 45 61 63 68 20 6d 6f 64 69 66 69 65 72 0a   ^Each modifier.
152a0 69 73 20 61 20 74 72 61 6e 73 66 6f 72 6d 61 74  is a transformat
152b0 69 6f 6e 20 74 68 61 74 20 69 73 20 61 70 70 6c  ion that is appl
152c0 69 65 64 20 74 6f 20 74 68 65 20 74 69 6d 65 20  ied to the time 
152d0 76 61 6c 75 65 20 74 6f 20 69 74 73 20 6c 65 66  value to its lef
152e0 74 2e 0a 5e 4d 6f 64 69 66 69 65 72 73 20 61 72  t..^Modifiers ar
152f0 65 20 61 70 70 6c 69 65 64 20 66 72 6f 6d 20 6c  e applied from l
15300 65 66 74 20 74 6f 20 72 69 67 68 74 3b 20 6f 72  eft to right; or
15310 64 65 72 20 69 73 20 69 6d 70 6f 72 74 61 6e 74  der is important
15320 2e 0a 5e 28 54 68 65 20 61 76 61 69 6c 61 62 6c  ..^(The availabl
15330 65 20 6d 6f 64 69 66 69 65 72 73 20 61 72 65 20  e modifiers are 
15340 61 73 20 66 6f 6c 6c 6f 77 73 2e 3c 2f 70 3e 0a  as follows.</p>.
15350 0a 3c 6f 6c 3e 0a 3c 6c 69 3e 20 4e 4e 4e 20 64  .<ol>.<li> NNN d
15360 61 79 73 0a 3c 6c 69 3e 20 4e 4e 4e 20 68 6f 75  ays.<li> NNN hou
15370 72 73 0a 3c 6c 69 3e 20 4e 4e 4e 20 6d 69 6e 75  rs.<li> NNN minu
15380 74 65 73 0a 3c 6c 69 3e 20 4e 4e 4e 2e 4e 4e 4e  tes.<li> NNN.NNN
15390 4e 20 73 65 63 6f 6e 64 73 0a 3c 6c 69 3e 20 4e  N seconds.<li> N
153a0 4e 4e 20 6d 6f 6e 74 68 73 0a 3c 6c 69 3e 20 4e  NN months.<li> N
153b0 4e 4e 20 79 65 61 72 73 0a 3c 6c 69 3e 20 73 74  NN years.<li> st
153c0 61 72 74 20 6f 66 20 6d 6f 6e 74 68 0a 3c 6c 69  art of month.<li
153d0 3e 20 73 74 61 72 74 20 6f 66 20 79 65 61 72 0a  > start of year.
153e0 3c 6c 69 3e 20 73 74 61 72 74 20 6f 66 20 64 61  <li> start of da
153f0 79 0a 3c 6c 69 3e 20 77 65 65 6b 64 61 79 20 4e  y.<li> weekday N
15400 0a 3c 6c 69 3e 20 75 6e 69 78 65 70 6f 63 68 0a  .<li> unixepoch.
15410 3c 6c 69 3e 20 6c 6f 63 61 6c 74 69 6d 65 0a 3c  <li> localtime.<
15420 6c 69 3e 20 75 74 63 20 0a 3c 2f 6f 6c 3e 29 5e  li> utc .</ol>)^
15430 0a 0a 3c 70 3e 5e 54 68 65 20 66 69 72 73 74 20  ..<p>^The first 
15440 73 69 78 20 6d 6f 64 69 66 69 65 72 73 20 28 31  six modifiers (1
15450 20 74 68 72 6f 75 67 68 20 36 29 20 0a 73 69 6d   through 6) .sim
15460 70 6c 79 20 61 64 64 20 74 68 65 20 73 70 65 63  ply add the spec
15470 69 66 69 65 64 20 61 6d 6f 75 6e 74 20 6f 66 20  ified amount of 
15480 74 69 6d 65 20 74 6f 20 74 68 65 20 64 61 74 65  time to the date
15490 20 61 6e 64 20 74 69 6d 65 20 0a 73 70 65 63 69   and time .speci
154a0 66 69 65 64 20 62 79 20 74 68 65 20 70 72 65 63  fied by the prec
154b0 65 64 69 6e 67 20 74 69 6d 65 73 74 72 69 6e 67  eding timestring
154c0 20 61 6e 64 20 6d 6f 64 69 66 69 65 72 73 2e 0a   and modifiers..
154d0 5e 4e 6f 74 65 20 74 68 61 74 20 22 26 70 6c 75  ^Note that "&plu
154e0 73 6d 6e 3b 4e 4e 4e 20 6d 6f 6e 74 68 73 22 20  smn;NNN months" 
154f0 77 6f 72 6b 73 20 62 79 20 72 65 6e 64 65 72 69  works by renderi
15500 6e 67 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20  ng the original 
15510 64 61 74 65 20 69 6e 74 6f 0a 74 68 65 20 59 59  date into.the YY
15520 59 59 2d 4d 4d 2d 44 44 20 66 6f 72 6d 61 74 2c  YY-MM-DD format,
15530 20 61 64 64 69 6e 67 20 74 68 65 20 26 70 6c 75   adding the &plu
15540 73 6d 6e 3b 4e 4e 4e 20 74 6f 20 74 68 65 20 4d  smn;NNN to the M
15550 4d 20 6d 6f 6e 74 68 20 76 61 6c 75 65 2c 20 74  M month value, t
15560 68 65 6e 0a 6e 6f 72 6d 61 6c 69 7a 69 6e 67 20  hen.normalizing 
15570 74 68 65 20 72 65 73 75 6c 74 2e 20 20 5e 54 68  the result.  ^Th
15580 75 73 2c 20 66 6f 72 20 65 78 61 6d 70 6c 65 2c  us, for example,
15590 20 74 68 65 20 64 61 74 61 20 32 30 30 31 2d 30   the data 2001-0
155a0 33 2d 33 31 20 6d 6f 64 69 66 69 65 64 0a 62 79  3-31 modified.by
155b0 20 27 2b 31 20 6d 6f 6e 74 68 27 20 69 6e 69 74   '+1 month' init
155c0 69 61 6c 6c 79 20 79 69 65 6c 64 73 20 32 30 30  ially yields 200
155d0 31 2d 30 34 2d 33 31 2c 20 62 75 74 20 41 70 72  1-04-31, but Apr
155e0 69 6c 20 6f 6e 6c 79 20 68 61 73 20 33 30 20 64  il only has 30 d
155f0 61 79 73 0a 73 6f 20 74 68 65 20 64 61 74 65 20  ays.so the date 
15600 69 73 20 6e 6f 72 6d 61 6c 69 7a 65 64 20 74 6f  is normalized to
15610 20 32 30 30 31 2d 30 35 2d 30 31 2e 20 20 5e 41   2001-05-01.  ^A
15620 20 73 69 6d 69 6c 61 72 20 65 66 66 65 63 74 20   similar effect 
15630 6f 63 63 75 72 73 20 77 68 65 6e 0a 74 68 65 20  occurs when.the 
15640 6f 72 69 67 69 6e 61 6c 20 64 61 74 65 20 69 73  original date is
15650 20 46 65 62 72 75 61 72 79 20 32 39 20 6f 66 20   February 29 of 
15660 61 20 6c 65 61 70 79 65 61 72 20 61 6e 64 20 74  a leapyear and t
15670 68 65 20 6d 6f 64 69 66 69 65 72 20 69 73 0a 26  he modifier is.&
15680 70 6c 75 73 6d 6e 3b 4e 20 79 65 61 72 73 20 77  plusmn;N years w
15690 68 65 72 65 20 4e 20 69 73 20 6e 6f 74 20 61 20  here N is not a 
156a0 6d 75 6c 74 69 70 6c 65 20 6f 66 20 66 6f 75 72  multiple of four
156b0 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20 22  .</p>..<p>^The "
156c0 73 74 61 72 74 20 6f 66 22 20 6d 6f 64 69 66 69  start of" modifi
156d0 65 72 73 20 28 37 20 74 68 72 6f 75 67 68 20 39  ers (7 through 9
156e0 29 20 73 68 69 66 74 20 74 68 65 20 64 61 74 65  ) shift the date
156f0 20 62 61 63 6b 77 61 72 64 73 20 0a 74 6f 20 74   backwards .to t
15700 68 65 20 62 65 67 69 6e 6e 69 6e 67 20 6f 66 20  he beginning of 
15710 74 68 65 20 63 75 72 72 65 6e 74 20 6d 6f 6e 74  the current mont
15720 68 2c 20 79 65 61 72 20 6f 72 20 64 61 79 2e 3c  h, year or day.<
15730 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20 22 77 65  /p>..<p>^The "we
15740 65 6b 64 61 79 22 20 6d 6f 64 69 66 69 65 72 20  ekday" modifier 
15750 61 64 76 61 6e 63 65 73 20 74 68 65 20 64 61 74  advances the dat
15760 65 20 66 6f 72 77 61 72 64 20 74 6f 20 74 68 65  e forward to the
15770 20 6e 65 78 74 20 64 61 74 65 20 0a 77 68 65 72   next date .wher
15780 65 20 74 68 65 20 77 65 65 6b 64 61 79 20 6e 75  e the weekday nu
15790 6d 62 65 72 20 69 73 20 4e 2e 20 53 75 6e 64 61  mber is N. Sunda
157a0 79 20 69 73 20 30 2c 20 4d 6f 6e 64 61 79 20 69  y is 0, Monday i
157b0 73 20 31 2c 20 61 6e 64 20 73 6f 20 66 6f 72 74  s 1, and so fort
157c0 68 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20  h.</p>..<p>^The 
157d0 22 75 6e 69 78 65 70 6f 63 68 22 20 6d 6f 64 69  "unixepoch" modi
157e0 66 69 65 72 20 28 31 31 29 20 6f 6e 6c 79 20 77  fier (11) only w
157f0 6f 72 6b 73 20 69 66 20 69 74 20 69 6d 6d 65 64  orks if it immed
15800 69 61 74 65 6c 79 20 66 6f 6c 6c 6f 77 73 20 0a  iately follows .
15810 61 20 74 69 6d 65 73 74 72 69 6e 67 20 69 6e 20  a timestring in 
15820 74 68 65 20 44 44 44 44 44 44 44 44 44 44 20 66  the DDDDDDDDDD f
15830 6f 72 6d 61 74 2e 20 0a 5e 54 68 69 73 20 6d 6f  ormat. .^This mo
15840 64 69 66 69 65 72 20 63 61 75 73 65 73 20 74 68  difier causes th
15850 65 20 44 44 44 44 44 44 44 44 44 44 20 74 6f 20  e DDDDDDDDDD to 
15860 62 65 20 69 6e 74 65 72 70 72 65 74 65 64 20 6e  be interpreted n
15870 6f 74 20 0a 61 73 20 61 20 4a 75 6c 69 61 6e 20  ot .as a Julian 
15880 64 61 79 20 6e 75 6d 62 65 72 20 61 73 20 69 74  day number as it
15890 20 6e 6f 72 6d 61 6c 6c 79 20 77 6f 75 6c 64 20   normally would 
158a0 62 65 2c 20 62 75 74 20 61 73 0a 5b 68 74 74 70  be, but as.[http
158b0 3a 2f 2f 65 6e 2e 77 69 6b 69 70 65 64 69 61 2e  ://en.wikipedia.
158c0 6f 72 67 2f 77 69 6b 69 2f 55 6e 69 78 5f 74 69  org/wiki/Unix_ti
158d0 6d 65 20 7c 20 55 6e 69 78 20 54 69 6d 65 5d 20  me | Unix Time] 
158e0 2d 20 74 68 65 20 0a 6e 75 6d 62 65 72 20 6f 66  - the .number of
158f0 20 73 65 63 6f 6e 64 73 20 73 69 6e 63 65 20 31   seconds since 1
15900 39 37 30 2e 20 20 49 66 20 74 68 65 20 22 75 6e  970.  If the "un
15910 69 78 65 70 6f 63 68 22 20 6d 6f 64 69 66 69 65  ixepoch" modifie
15920 72 20 64 6f 65 73 20 6e 6f 74 0a 66 6f 6c 6c 6f  r does not.follo
15930 77 20 61 20 74 69 6d 65 73 74 72 69 6e 67 20 6f  w a timestring o
15940 66 20 74 68 65 20 66 6f 72 6d 20 44 44 44 44 44  f the form DDDDD
15950 44 44 44 44 44 20 77 68 69 63 68 20 65 78 70 72  DDDDD which expr
15960 65 73 73 65 73 20 74 68 65 20 6e 75 6d 62 65 72  esses the number
15970 0a 6f 66 20 73 65 63 6f 6e 64 73 20 73 69 6e 63  .of seconds sinc
15980 65 20 31 39 37 30 20 6f 72 20 69 66 20 6f 74 68  e 1970 or if oth
15990 65 72 20 6d 6f 64 69 66 69 65 72 73 0a 73 65 70  er modifiers.sep
159a0 61 72 61 74 65 20 74 68 65 20 22 75 6e 69 78 65  arate the "unixe
159b0 70 6f 63 68 22 20 6d 6f 64 69 66 69 65 72 20 66  poch" modifier f
159c0 72 6f 6d 20 70 72 69 6f 72 20 44 44 44 44 44 44  rom prior DDDDDD
159d0 44 44 44 44 20 74 68 65 6e 20 74 68 65 0a 62 65  DDDD then the.be
159e0 68 61 76 69 6f 72 20 69 73 20 75 6e 64 65 66 69  havior is undefi
159f0 6e 65 64 2e 0a 44 75 65 20 74 6f 20 70 72 65 63  ned..Due to prec
15a00 69 73 69 6f 6e 20 6c 69 6d 69 74 61 74 69 6f 6e  ision limitation
15a10 73 20 69 6d 70 6f 73 65 64 20 62 79 20 74 68 65  s imposed by the
15a20 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73   implementations
15a30 20 75 73 65 0a 6f 66 20 36 34 2d 62 69 74 20 69   use.of 64-bit i
15a40 6e 74 65 67 65 72 73 2c 20 74 68 65 20 22 75 6e  ntegers, the "un
15a50 69 78 65 70 6f 63 68 22 20 6d 6f 64 69 66 69 65  ixepoch" modifie
15a60 72 20 6f 6e 6c 79 20 77 6f 72 6b 73 20 66 6f 72  r only works for
15a70 0a 64 61 74 65 73 20 62 65 74 77 65 65 6e 20 30  .dates between 0
15a80 30 30 30 2d 30 31 2d 30 31 20 30 30 3a 30 30 3a  000-01-01 00:00:
15a90 30 30 20 61 6e 64 20 35 33 35 32 2d 31 31 2d 30  00 and 5352-11-0
15aa0 31 20 31 30 3a 35 32 3a 34 37 20 28 75 6e 69 78  1 10:52:47 (unix
15ab0 20 74 69 6d 65 73 0a 6f 66 20 2d 36 32 31 36 37   times.of -62167
15ac0 32 31 39 32 30 30 20 74 68 72 6f 75 67 68 20 31  219200 through 1
15ad0 30 36 37 35 31 39 39 31 36 37 29 2e 3c 2f 70 3e  0675199167).</p>
15ae0 0a 0a 3c 70 3e 5e 54 68 65 20 22 6c 6f 63 61 6c  ..<p>^The "local
15af0 74 69 6d 65 22 20 6d 6f 64 69 66 69 65 72 20 28  time" modifier (
15b00 31 32 29 20 61 73 73 75 6d 65 73 20 74 68 65 20  12) assumes the 
15b10 74 69 6d 65 20 73 74 72 69 6e 67 20 74 6f 20 69  time string to i
15b20 74 73 20 6c 65 66 74 20 69 73 20 69 6e 0a 55 6e  ts left is in.Un
15b30 69 76 65 72 73 61 6c 20 43 6f 6f 72 64 69 6e 61  iversal Coordina
15b40 74 65 64 20 54 69 6d 65 20 28 55 54 43 29 20 61  ted Time (UTC) a
15b50 6e 64 20 61 64 6a 75 73 74 73 20 74 68 65 20 74  nd adjusts the t
15b60 69 6d 65 0a 73 74 72 69 6e 67 20 73 6f 20 74 68  ime.string so th
15b70 61 74 20 69 74 20 64 69 73 70 6c 61 79 73 20 6c  at it displays l
15b80 6f 63 61 6c 74 69 6d 65 2e 20 20 49 66 20 22 6c  ocaltime.  If "l
15b90 6f 63 61 6c 74 69 6d 65 22 0a 66 6f 6c 6c 6f 77  ocaltime".follow
15ba0 73 20 61 20 74 69 6d 65 20 74 68 61 74 20 69 73  s a time that is
15bb0 20 6e 6f 74 20 55 54 43 2c 20 74 68 65 6e 20 74   not UTC, then t
15bc0 68 65 20 62 65 68 61 76 69 6f 72 20 69 73 20 75  he behavior is u
15bd0 6e 64 65 66 69 6e 65 64 2e 0a 5e 28 54 68 65 20  ndefined..^(The 
15be0 22 75 74 63 22 20 69 73 20 74 68 65 20 6f 70 70  "utc" is the opp
15bf0 6f 73 69 74 65 20 6f 66 20 22 6c 6f 63 61 6c 74  osite of "localt
15c00 69 6d 65 22 2e 20 20 22 75 74 63 22 20 61 73 73  ime".  "utc" ass
15c10 75 6d 65 73 20 74 68 61 74 20 74 68 65 20 73 74  umes that the st
15c20 72 69 6e 67 0a 74 6f 20 69 74 73 20 6c 65 66 74  ring.to its left
15c30 20 69 73 20 69 6e 20 74 68 65 20 6c 6f 63 61 6c   is in the local
15c40 20 74 69 6d 65 7a 6f 6e 65 20 61 6e 64 20 61 64   timezone and ad
15c50 6a 75 73 74 73 20 74 68 61 74 20 73 74 72 69 6e  justs that strin
15c60 67 20 74 6f 20 62 65 20 69 6e 20 55 54 43 2e 29  g to be in UTC.)
15c70 5e 0a 49 66 20 74 68 65 20 70 72 69 6f 72 20 73  ^.If the prior s
15c80 74 72 69 6e 67 20 69 73 20 6e 6f 74 20 69 6e 20  tring is not in 
15c90 6c 6f 63 61 6c 74 69 6d 65 2c 20 74 68 65 6e 20  localtime, then 
15ca0 74 68 65 20 72 65 73 75 6c 74 20 6f 66 20 22 75  the result of "u
15cb0 74 63 22 20 69 73 0a 75 6e 64 65 66 69 6e 65 64  tc" is.undefined
15cc0 2e 3c 2f 70 3e 0a 0a 3c 68 33 3e 45 78 61 6d 70  .</p>..<h3>Examp
15cd0 6c 65 73 3c 2f 68 33 3e 0a 0a 5e 28 3c 70 3e 43  les</h3>..^(<p>C
15ce0 6f 6d 70 75 74 65 20 74 68 65 20 63 75 72 72 65  ompute the curre
15cf0 6e 74 20 64 61 74 65 2e 3c 70 3e 0a 0a 3c 62 6c  nt date.<p>..<bl
15d00 6f 63 6b 71 75 6f 74 65 3e 53 45 4c 45 43 54 20  ockquote>SELECT 
15d10 64 61 74 65 28 27 6e 6f 77 27 29 3b 3c 2f 62 6c  date('now');</bl
15d20 6f 63 6b 71 75 6f 74 65 3e 29 5e 0a 0a 5e 28 3c  ockquote>)^..^(<
15d30 70 3e 43 6f 6d 70 75 74 65 20 74 68 65 20 6c 61  p>Compute the la
15d40 73 74 20 64 61 79 20 6f 66 20 74 68 65 20 63 75  st day of the cu
15d50 72 72 65 6e 74 20 6d 6f 6e 74 68 2e 3c 2f 70 3e  rrent month.</p>
15d60 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 53 45  ..<blockquote>SE
15d70 4c 45 43 54 20 64 61 74 65 28 27 6e 6f 77 27 2c  LECT date('now',
15d80 27 73 74 61 72 74 20 6f 66 20 6d 6f 6e 74 68 27  'start of month'
15d90 2c 27 2b 31 20 6d 6f 6e 74 68 27 2c 27 2d 31 20  ,'+1 month','-1 
15da0 64 61 79 27 29 3b 0a 3c 2f 62 6c 6f 63 6b 71 75  day');.</blockqu
15db0 6f 74 65 3e 29 5e 0a 0a 5e 28 3c 70 3e 43 6f 6d  ote>)^..^(<p>Com
15dc0 70 75 74 65 20 74 68 65 20 64 61 74 65 20 61 6e  pute the date an
15dd0 64 20 74 69 6d 65 20 67 69 76 65 6e 20 61 20 75  d time given a u
15de0 6e 69 78 20 74 69 6d 65 73 74 61 6d 70 20 31 30  nix timestamp 10
15df0 39 32 39 34 31 34 36 36 2e 3c 2f 70 3e 0a 0a 3c  92941466.</p>..<
15e00 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 20 20 20 20  blockquote>.    
15e10 53 45 4c 45 43 54 20 64 61 74 65 74 69 6d 65 28  SELECT datetime(
15e20 31 30 39 32 39 34 31 34 36 36 2c 20 27 75 6e 69  1092941466, 'uni
15e30 78 65 70 6f 63 68 27 29 3b 0a 3c 2f 62 6c 6f 63  xepoch');.</bloc
15e40 6b 71 75 6f 74 65 3e 29 5e 0a 0a 5e 28 3c 70 3e  kquote>)^..^(<p>
15e50 43 6f 6d 70 75 74 65 20 74 68 65 20 64 61 74 65  Compute the date
15e60 20 61 6e 64 20 74 69 6d 65 20 67 69 76 65 6e 20   and time given 
15e70 61 20 75 6e 69 78 20 74 69 6d 65 73 74 61 6d 70  a unix timestamp
15e80 20 31 30 39 32 39 34 31 34 36 36 2c 20 61 6e 64   1092941466, and
15e90 20 0a 63 6f 6d 70 65 6e 73 61 74 65 20 66 6f 72   .compensate for
15ea0 20 79 6f 75 72 20 6c 6f 63 61 6c 20 74 69 6d 65   your local time
15eb0 7a 6f 6e 65 2e 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63  zone.</p>..<bloc
15ec0 6b 71 75 6f 74 65 3e 0a 20 20 53 45 4c 45 43 54  kquote>.  SELECT
15ed0 20 64 61 74 65 74 69 6d 65 28 31 30 39 32 39 34   datetime(109294
15ee0 31 34 36 36 2c 20 27 75 6e 69 78 65 70 6f 63 68  1466, 'unixepoch
15ef0 27 2c 20 27 6c 6f 63 61 6c 74 69 6d 65 27 29 3b  ', 'localtime');
15f00 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 29 5e  .</blockquote>)^
15f10 0a 0a 5e 28 3c 70 3e 43 6f 6d 70 75 74 65 20 74  ..^(<p>Compute t
15f20 68 65 20 63 75 72 72 65 6e 74 20 75 6e 69 78 20  he current unix 
15f30 74 69 6d 65 73 74 61 6d 70 2e 3c 2f 70 3e 0a 0a  timestamp.</p>..
15f40 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 20 20 53  <blockquote>.  S
15f50 45 4c 45 43 54 20 73 74 72 66 74 69 6d 65 28 27  ELECT strftime('
15f60 25 73 27 2c 27 6e 6f 77 27 29 3b 0a 3c 2f 62 6c  %s','now');.</bl
15f70 6f 63 6b 71 75 6f 74 65 3e 29 5e 0a 0a 5e 28 3c  ockquote>)^..^(<
15f80 70 3e 43 6f 6d 70 75 74 65 20 74 68 65 20 6e 75  p>Compute the nu
15f90 6d 62 65 72 20 6f 66 20 64 61 79 73 20 73 69 6e  mber of days sin
15fa0 63 65 20 74 68 65 20 73 69 67 6e 69 6e 67 20 6f  ce the signing o
15fb0 66 20 74 68 65 20 55 53 20 44 65 63 6c 61 72 61  f the US Declara
15fc0 74 69 6f 6e 0a 6f 66 20 49 6e 64 65 70 65 6e 64  tion.of Independ
15fd0 65 6e 63 65 2e 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63  ence.</p>..<bloc
15fe0 6b 71 75 6f 74 65 3e 0a 20 20 53 45 4c 45 43 54  kquote>.  SELECT
15ff0 20 6a 75 6c 69 61 6e 64 61 79 28 27 6e 6f 77 27   julianday('now'
16000 29 20 2d 20 6a 75 6c 69 61 6e 64 61 79 28 27 31  ) - julianday('1
16010 37 37 36 2d 30 37 2d 30 34 27 29 3b 0a 3c 2f 62  776-07-04');.</b
16020 6c 6f 63 6b 71 75 6f 74 65 3e 29 5e 0a 0a 5e 28  lockquote>)^..^(
16030 3c 70 3e 43 6f 6d 70 75 74 65 20 74 68 65 20 6e  <p>Compute the n
16040 75 6d 62 65 72 20 6f 66 20 73 65 63 6f 6e 64 73  umber of seconds
16050 20 73 69 6e 63 65 20 61 20 70 61 72 74 69 63 75   since a particu
16060 6c 61 72 20 6d 6f 6d 65 6e 74 20 69 6e 20 32 30  lar moment in 20
16070 30 34 3a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71  04:</p>..<blockq
16080 75 6f 74 65 3e 0a 20 20 53 45 4c 45 43 54 20 73  uote>.  SELECT s
16090 74 72 66 74 69 6d 65 28 27 25 73 27 2c 27 6e 6f  trftime('%s','no
160a0 77 27 29 20 2d 20 73 74 72 66 74 69 6d 65 28 27  w') - strftime('
160b0 25 73 27 2c 27 32 30 30 34 2d 30 31 2d 30 31 20  %s','2004-01-01 
160c0 30 32 3a 33 34 3a 35 36 27 29 3b 0a 3c 2f 62 6c  02:34:56');.</bl
160d0 6f 63 6b 71 75 6f 74 65 3e 29 5e 0a 0a 5e 28 3c  ockquote>)^..^(<
160e0 70 3e 0a 43 6f 6d 70 75 74 65 20 74 68 65 20 64  p>.Compute the d
160f0 61 74 65 20 6f 66 20 74 68 65 20 66 69 72 73 74  ate of the first
16100 20 54 75 65 73 64 61 79 20 69 6e 20 4f 63 74 6f   Tuesday in Octo
16110 62 65 72 0a 66 6f 72 20 74 68 65 20 63 75 72 72  ber.for the curr
16120 65 6e 74 20 79 65 61 72 2e 0a 3c 2f 70 3e 0a 0a  ent year..</p>..
16130 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 20 20 53  <blockquote>.  S
16140 45 4c 45 43 54 20 64 61 74 65 28 27 6e 6f 77 27  ELECT date('now'
16150 2c 27 73 74 61 72 74 20 6f 66 20 79 65 61 72 27  ,'start of year'
16160 2c 27 2b 39 20 6d 6f 6e 74 68 73 27 2c 27 77 65  ,'+9 months','we
16170 65 6b 64 61 79 20 32 27 29 3b 0a 3c 2f 62 6c 6f  ekday 2');.</blo
16180 63 6b 71 75 6f 74 65 3e 29 5e 0a 0a 5e 28 3c 70  ckquote>)^..^(<p
16190 3e 43 6f 6d 70 75 74 65 20 74 68 65 20 74 69 6d  >Compute the tim
161a0 65 20 73 69 6e 63 65 20 74 68 65 20 75 6e 69 78  e since the unix
161b0 20 65 70 6f 63 68 20 69 6e 20 73 65 63 6f 6e 64   epoch in second
161c0 73 20 0a 28 6c 69 6b 65 20 73 74 72 66 74 69 6d  s .(like strftim
161d0 65 28 27 25 73 27 2c 27 6e 6f 77 27 29 20 65 78  e('%s','now') ex
161e0 63 65 70 74 20 69 6e 63 6c 75 64 65 73 20 66 72  cept includes fr
161f0 61 63 74 69 6f 6e 61 6c 20 70 61 72 74 29 3a 3c  actional part):<
16200 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65  /p>..<blockquote
16210 3e 0a 20 20 53 45 4c 45 43 54 20 28 6a 75 6c 69  >.  SELECT (juli
16220 61 6e 64 61 79 28 27 6e 6f 77 27 29 20 2d 20 32  anday('now') - 2
16230 34 34 30 35 38 37 2e 35 29 2a 38 36 34 30 30 2e  440587.5)*86400.
16240 30 3b 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e  0;.</blockquote>
16250 29 5e 0a 0a 3c 68 33 3e 43 61 76 65 61 74 73 20  )^..<h3>Caveats 
16260 41 6e 64 20 42 75 67 73 3c 2f 68 33 3e 0a 0a 3c  And Bugs</h3>..<
16270 70 3e 54 68 65 20 63 6f 6d 70 75 74 61 74 69 6f  p>The computatio
16280 6e 20 6f 66 20 6c 6f 63 61 6c 20 74 69 6d 65 20  n of local time 
16290 64 65 70 65 6e 64 73 20 68 65 61 76 69 6c 79 20  depends heavily 
162a0 6f 6e 20 74 68 65 20 77 68 69 6d 20 0a 6f 66 20  on the whim .of 
162b0 70 6f 6c 69 74 69 63 69 61 6e 73 20 61 6e 64 20  politicians and 
162c0 69 73 20 74 68 75 73 20 64 69 66 66 69 63 75 6c  is thus difficul
162d0 74 20 74 6f 20 67 65 74 20 63 6f 72 72 65 63 74  t to get correct
162e0 20 66 6f 72 20 0a 61 6c 6c 20 6c 6f 63 61 6c 65   for .all locale
162f0 73 2e 20 5e 49 6e 20 74 68 69 73 20 69 6d 70 6c  s. ^In this impl
16300 65 6d 65 6e 74 61 74 69 6f 6e 2c 20 74 68 65 20  ementation, the 
16310 73 74 61 6e 64 61 72 64 20 43 20 6c 69 62 72 61  standard C libra
16320 72 79 20 0a 66 75 6e 63 74 69 6f 6e 20 6c 6f 63  ry .function loc
16330 61 6c 74 69 6d 65 5f 72 28 29 20 69 73 20 75 73  altime_r() is us
16340 65 64 20 74 6f 20 61 73 73 69 73 74 20 69 6e 20  ed to assist in 
16350 74 68 65 20 63 61 6c 63 75 6c 61 74 69 6f 6e 20  the calculation 
16360 6f 66 20 0a 6c 6f 63 61 6c 20 74 69 6d 65 2e 20  of .local time. 
16370 20 5e 28 54 68 65 20 0a 6c 6f 63 61 6c 74 69 6d   ^(The .localtim
16380 65 5f 72 28 29 20 43 20 66 75 6e 63 74 69 6f 6e  e_r() C function
16390 20 6e 6f 72 6d 61 6c 6c 79 20 6f 6e 6c 79 20 77   normally only w
163a0 6f 72 6b 73 20 66 6f 72 20 79 65 61 72 73 0a 62  orks for years.b
163b0 65 74 77 65 65 6e 20 31 39 37 30 20 61 6e 64 20  etween 1970 and 
163c0 32 30 33 37 2e 20 46 6f 72 20 64 61 74 65 73 20  2037. For dates 
163d0 6f 75 74 73 69 64 65 20 74 68 69 73 20 72 61 6e  outside this ran
163e0 67 65 2c 20 53 51 4c 69 74 65 20 0a 61 74 74 65  ge, SQLite .atte
163f0 6d 70 74 73 20 74 6f 20 6d 61 70 20 74 68 65 20  mpts to map the 
16400 79 65 61 72 20 69 6e 74 6f 20 61 6e 20 65 71 75  year into an equ
16410 69 76 61 6c 65 6e 74 20 79 65 61 72 20 77 69 74  ivalent year wit
16420 68 69 6e 20 0a 74 68 69 73 20 72 61 6e 67 65 2c  hin .this range,
16430 20 64 6f 20 74 68 65 20 63 61 6c 63 75 6c 61 74   do the calculat
16440 69 6f 6e 2c 20 74 68 65 6e 20 6d 61 70 20 74 68  ion, then map th
16450 65 20 79 65 61 72 20 62 61 63 6b 2e 29 5e 3c 2f  e year back.)^</
16460 70 3e 0a 0a 0a 3c 70 3e 5e 28 54 68 65 73 65 20  p>...<p>^(These 
16470 66 75 6e 63 74 69 6f 6e 73 20 6f 6e 6c 79 20 77  functions only w
16480 6f 72 6b 20 66 6f 72 20 64 61 74 65 73 20 62 65  ork for dates be
16490 74 77 65 65 6e 20 30 30 30 30 2d 30 31 2d 30 31  tween 0000-01-01
164a0 20 30 30 3a 30 30 3a 30 30 0a 61 6e 64 20 39 39   00:00:00.and 99
164b0 39 39 2d 31 32 2d 33 31 20 32 33 3a 35 39 3a 35  99-12-31 23:59:5
164c0 39 20 28 6a 75 6c 69 64 61 6e 20 64 61 79 20 6e  9 (julidan day n
164d0 75 6d 62 65 72 73 20 31 37 32 31 30 35 39 2e 35  umbers 1721059.5
164e0 20 74 68 72 6f 75 67 68 20 35 33 37 33 34 38 34   through 5373484
164f0 2e 35 29 2e 29 5e 0a 46 6f 72 20 64 61 74 65 73  .5).)^.For dates
16500 20 6f 75 74 73 69 64 65 20 74 68 61 74 20 72 61   outside that ra
16510 6e 67 65 2c 20 74 68 65 20 72 65 73 75 6c 74 73  nge, the results
16520 20 6f 66 20 74 68 65 73 65 0a 66 75 6e 63 74 69   of these.functi
16530 6f 6e 73 20 61 72 65 20 75 6e 64 65 66 69 6e 65  ons are undefine
16540 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 4e 6f 6e 2d 56  d.</p>..<p>Non-V
16550 69 73 74 61 20 57 69 6e 64 6f 77 73 20 70 6c 61  ista Windows pla
16560 74 66 6f 72 6d 73 20 6f 6e 6c 79 20 73 75 70 70  tforms only supp
16570 6f 72 74 20 6f 6e 65 20 73 65 74 20 6f 66 20 44  ort one set of D
16580 53 54 20 72 75 6c 65 73 2e 20 0a 56 69 73 74 61  ST rules. .Vista
16590 20 6f 6e 6c 79 20 73 75 70 70 6f 72 74 73 20 74   only supports t
165a0 77 6f 2e 20 54 68 65 72 65 66 6f 72 65 2c 20 6f  wo. Therefore, o
165b0 6e 20 74 68 65 73 65 20 70 6c 61 74 66 6f 72 6d  n these platform
165c0 73 2c 20 0a 68 69 73 74 6f 72 69 63 61 6c 20 44  s, .historical D
165d0 53 54 20 63 61 6c 63 75 6c 61 74 69 6f 6e 73 20  ST calculations 
165e0 77 69 6c 6c 20 62 65 20 69 6e 63 6f 72 72 65 63  will be incorrec
165f0 74 2e 20 0a 46 6f 72 20 65 78 61 6d 70 6c 65 2c  t. .For example,
16600 20 69 6e 20 74 68 65 20 55 53 2c 20 69 6e 20 32   in the US, in 2
16610 30 30 37 20 74 68 65 20 44 53 54 20 72 75 6c 65  007 the DST rule
16620 73 20 63 68 61 6e 67 65 64 2e 20 0a 4e 6f 6e 2d  s changed. .Non-
16630 56 69 73 74 61 20 57 69 6e 64 6f 77 73 20 70 6c  Vista Windows pl
16640 61 74 66 6f 72 6d 73 20 61 70 70 6c 79 20 74 68  atforms apply th
16650 65 20 6e 65 77 20 32 30 30 37 20 44 53 54 20 72  e new 2007 DST r
16660 75 6c 65 73 20 0a 74 6f 20 61 6c 6c 20 70 72 65  ules .to all pre
16670 76 69 6f 75 73 20 79 65 61 72 73 20 61 73 20 77  vious years as w
16680 65 6c 6c 2e 20 56 69 73 74 61 20 64 6f 65 73 20  ell. Vista does 
16690 73 6f 6d 65 77 68 61 74 20 62 65 74 74 65 72 0a  somewhat better.
166a0 67 65 74 74 69 6e 67 20 72 65 73 75 6c 74 73 20  getting results 
166b0 63 6f 72 72 65 63 74 20 62 61 63 6b 20 74 6f 20  correct back to 
166c0 31 39 38 36 2c 20 77 68 65 6e 20 74 68 65 20 72  1986, when the r
166d0 75 6c 65 73 20 77 65 72 65 20 61 6c 73 6f 20 63  ules were also c
166e0 68 61 6e 67 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e  hanged.</p>..<p>
166f0 41 6c 6c 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6d  All internal com
16700 70 75 74 61 74 69 6f 6e 73 20 61 73 73 75 6d 65  putations assume
16710 20 74 68 65 20 0a 5b 68 74 74 70 3a 2f 2f 65 6e   the .[http://en
16720 2e 77 69 6b 69 70 65 64 69 61 2e 6f 72 67 2f 77  .wikipedia.org/w
16730 69 6b 69 2f 47 72 65 67 6f 72 69 61 6e 5f 63 61  iki/Gregorian_ca
16740 6c 65 6e 64 61 72 20 7c 20 47 72 65 67 6f 72 69  lendar | Gregori
16750 61 6e 20 63 61 6c 65 6e 64 61 72 5d 0a 73 79 73  an calendar].sys
16760 74 65 6d 2e 20 20 49 74 20 69 73 20 61 6c 73 6f  tem.  It is also
16770 20 61 73 73 75 6d 65 64 20 74 68 61 74 20 65 76   assumed that ev
16780 65 72 79 0a 64 61 79 20 69 73 20 65 78 61 63 74  ery.day is exact
16790 6c 79 20 38 36 34 30 30 20 73 65 63 6f 6e 64 73  ly 86400 seconds
167a0 20 69 6e 20 64 75 72 61 74 69 6f 6e 2e 3c 2f 70   in duration.</p
167b0 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23  >..<tcl>.#######
167c0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
167d0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
167e0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
167f0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
16800 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20  #######.Section 
16810 7b 41 67 67 72 65 67 61 74 65 20 46 75 6e 63 74  {Aggregate Funct
16820 69 6f 6e 73 7d 20 61 67 67 66 75 6e 63 20 7b 2a  ions} aggfunc {*
16830 61 67 67 66 75 6e 63 7d 0a 3c 2f 74 63 6c 3e 0a  aggfunc}.</tcl>.
16840 0a 3c 70 3e 0a 54 68 65 20 61 67 67 72 65 67 61  .<p>.The aggrega
16850 74 65 20 66 75 6e 63 74 69 6f 6e 73 20 73 68 6f  te functions sho
16860 77 6e 20 62 65 6c 6f 77 20 61 72 65 20 61 76 61  wn below are ava
16870 69 6c 61 62 6c 65 20 62 79 20 64 65 66 61 75 6c  ilable by defaul
16880 74 2e 20 20 41 64 64 69 74 69 6f 6e 61 6c 0a 61  t.  Additional.a
16890 67 67 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f  ggregate functio
168a0 6e 73 20 77 72 69 74 74 65 6e 20 69 6e 20 43 20  ns written in C 
168b0 6d 61 79 20 62 65 20 61 64 64 65 64 20 75 73 69  may be added usi
168c0 6e 67 20 74 68 65 20 0a 5b 73 71 6c 69 74 65 33  ng the .[sqlite3
168d0 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e  _create_function
168e0 28 29 5d 3c 2f 61 3e 0a 41 50 49 2e 3c 2f 70 3e  ()]</a>.API.</p>
168f0 0a 0a 3c 70 3e 0a 5e 49 6e 20 61 6e 79 20 61 67  ..<p>.^In any ag
16900 67 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e  gregate function
16910 20 74 68 61 74 20 74 61 6b 65 73 20 61 20 73 69   that takes a si
16920 6e 67 6c 65 20 61 72 67 75 6d 65 6e 74 2c 20 74  ngle argument, t
16930 68 61 74 20 61 72 67 75 6d 65 6e 74 0a 63 61 6e  hat argument.can
16940 20 62 65 20 70 72 65 63 65 64 65 64 20 62 79 20   be preceded by 
16950 74 68 65 20 6b 65 79 77 6f 72 64 20 44 49 53 54  the keyword DIST
16960 49 4e 43 54 2e 20 20 5e 49 6e 20 73 75 63 68 20  INCT.  ^In such 
16970 63 61 73 65 73 2c 20 64 75 70 6c 69 63 61 74 65  cases, duplicate
16980 0a 65 6c 65 6d 65 6e 74 73 20 61 72 65 20 66 69  .elements are fi
16990 6c 74 65 72 65 64 20 62 65 66 6f 72 65 20 62 65  ltered before be
169a0 69 6e 67 20 70 61 73 73 65 64 20 69 6e 74 6f 20  ing passed into 
169b0 74 68 65 20 61 67 67 72 65 67 61 74 65 20 66 75  the aggregate fu
169c0 6e 63 74 69 6f 6e 2e 0a 5e 46 6f 72 20 65 78 61  nction..^For exa
169d0 6d 70 6c 65 2c 20 74 68 65 20 66 75 6e 63 74 69  mple, the functi
169e0 6f 6e 20 22 63 6f 75 6e 74 28 64 69 73 74 69 6e  on "count(distin
169f0 63 74 20 58 29 22 20 77 69 6c 6c 20 72 65 74 75  ct X)" will retu
16a00 72 6e 20 74 68 65 20 6e 75 6d 62 65 72 0a 6f 66  rn the number.of
16a10 20 64 69 73 74 69 6e 63 74 20 76 61 6c 75 65 73   distinct values
16a20 20 6f 66 20 63 6f 6c 75 6d 6e 20 58 20 69 6e 73   of column X ins
16a30 74 65 61 64 20 6f 66 20 74 68 65 20 74 6f 74 61  tead of the tota
16a40 6c 20 6e 75 6d 62 65 72 20 6f 66 20 6e 6f 6e 2d  l number of non-
16a50 6e 75 6c 6c 0a 76 61 6c 75 65 73 20 69 6e 20 63  null.values in c
16a60 6f 6c 75 6d 6e 20 58 2e 0a 3c 2f 70 3e 0a 0a 3c  olumn X..</p>..<
16a70 74 61 62 6c 65 20 62 6f 72 64 65 72 3d 30 20 63  table border=0 c
16a80 65 6c 6c 70 61 64 64 69 6e 67 3d 31 30 3e 0a 3c  ellpadding=10>.<
16a90 74 63 6c 3e 0a 66 75 6e 63 64 65 66 20 7b 61 76  tcl>.funcdef {av
16aa0 67 28 58 29 7d 20 7b 2a 61 76 67 20 7b 61 76 67  g(X)} {*avg {avg
16ab0 28 29 20 61 67 67 72 65 67 61 74 65 20 66 75 6e  () aggregate fun
16ac0 63 74 69 6f 6e 7d 7d 20 7b 0a 20 20 5e 54 68 65  ction}} {.  ^The
16ad0 20 61 76 67 28 29 20 66 75 6e 63 74 69 6f 6e 0a   avg() function.
16ae0 20 20 72 65 74 75 72 6e 73 20 74 68 65 20 61 76    returns the av
16af0 65 72 61 67 65 20 76 61 6c 75 65 20 6f 66 20 61  erage value of a
16b00 6c 6c 20 6e 6f 6e 2d 4e 55 4c 4c 20 3c 69 3e 58  ll non-NULL <i>X
16b10 3c 2f 69 3e 20 77 69 74 68 69 6e 20 61 0a 20 20  </i> within a.  
16b20 67 72 6f 75 70 2e 20 20 5e 53 74 72 69 6e 67 20  group.  ^String 
16b30 61 6e 64 20 42 4c 4f 42 20 76 61 6c 75 65 73 20  and BLOB values 
16b40 74 68 61 74 20 64 6f 20 6e 6f 74 20 6c 6f 6f 6b  that do not look
16b50 20 6c 69 6b 65 20 6e 75 6d 62 65 72 73 20 61 72   like numbers ar
16b60 65 0a 20 20 69 6e 74 65 72 70 72 65 74 65 64 20  e.  interpreted 
16b70 61 73 20 30 2e 0a 20 20 5e 54 68 65 20 72 65 73  as 0..  ^The res
16b80 75 6c 74 20 6f 66 20 61 76 67 28 29 20 69 73 20  ult of avg() is 
16b90 61 6c 77 61 79 73 20 61 20 66 6c 6f 61 74 69 6e  always a floatin
16ba0 67 20 70 6f 69 6e 74 20 76 61 6c 75 65 20 61 73  g point value as
16bb0 20 6c 6f 6e 67 20 61 73 0a 20 20 61 74 20 74 68   long as.  at th
16bc0 65 72 65 20 69 73 20 61 74 20 6c 65 61 73 74 20  ere is at least 
16bd0 6f 6e 65 20 6e 6f 6e 2d 4e 55 4c 4c 20 69 6e 70  one non-NULL inp
16be0 75 74 20 65 76 65 6e 20 69 66 20 61 6c 6c 0a 20  ut even if all. 
16bf0 20 69 6e 70 75 74 73 20 61 72 65 20 69 6e 74 65   inputs are inte
16c00 67 65 72 73 2e 20 20 5e 54 68 65 20 72 65 73 75  gers.  ^The resu
16c10 6c 74 20 6f 66 20 61 76 67 28 29 20 69 73 20 4e  lt of avg() is N
16c20 55 4c 4c 20 69 66 20 61 6e 64 20 6f 6e 6c 79 20  ULL if and only 
16c30 69 66 0a 20 20 74 68 65 72 65 20 61 72 65 20 6e  if.  there are n
16c40 6f 20 6e 6f 6e 2d 4e 55 4c 4c 20 69 6e 70 75 74  o non-NULL input
16c50 73 2e 20 20 0a 7d 0a 0a 66 75 6e 63 64 65 66 20  s.  .}..funcdef 
16c60 7b 63 6f 75 6e 74 28 58 29 20 63 6f 75 6e 74 28  {count(X) count(
16c70 2a 29 7d 20 7b 2a 63 6f 75 6e 74 20 7b 63 6f 75  *)} {*count {cou
16c80 6e 74 28 29 20 61 67 67 72 65 67 61 74 65 20 66  nt() aggregate f
16c90 75 6e 63 74 69 6f 6e 7d 7d 20 7b 0a 20 20 5e 54  unction}} {.  ^T
16ca0 68 65 20 63 6f 75 6e 74 28 58 29 20 66 75 6e 63  he count(X) func
16cb0 74 69 6f 6e 20 72 65 74 75 72 6e 73 0a 20 20 61  tion returns.  a
16cc0 20 63 6f 75 6e 74 20 6f 66 20 74 68 65 20 6e 75   count of the nu
16cd0 6d 62 65 72 20 6f 66 20 74 69 6d 65 73 0a 20 20  mber of times.  
16ce0 74 68 61 74 20 3c 69 3e 58 3c 2f 69 3e 20 69 73  that <i>X</i> is
16cf0 20 6e 6f 74 20 4e 55 4c 4c 20 69 6e 20 61 20 67   not NULL in a g
16d00 72 6f 75 70 2e 20 20 5e 54 68 65 20 63 6f 75 6e  roup.  ^The coun
16d10 74 28 2a 29 20 66 75 6e 63 74 69 6f 6e 0a 20 20  t(*) function.  
16d20 28 77 69 74 68 20 6e 6f 20 61 72 67 75 6d 65 6e  (with no argumen
16d30 74 73 29 20 72 65 74 75 72 6e 73 20 74 68 65 20  ts) returns the 
16d40 74 6f 74 61 6c 20 6e 75 6d 62 65 72 20 6f 66 20  total number of 
16d50 72 6f 77 73 20 69 6e 20 74 68 65 20 67 72 6f 75  rows in the grou
16d60 70 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 67  p..}..funcdef {g
16d70 72 6f 75 70 5f 63 6f 6e 63 61 74 28 58 29 20 67  roup_concat(X) g
16d80 72 6f 75 70 5f 63 6f 6e 63 61 74 28 58 2c 59 29  roup_concat(X,Y)
16d90 7d 20 7b 0a 20 20 2a 67 72 6f 75 70 5f 63 6f 6e  } {.  *group_con
16da0 63 61 74 20 7b 67 72 6f 75 70 5f 63 6f 6e 63 61  cat {group_conca
16db0 74 28 29 20 61 67 67 72 65 67 61 74 65 20 66 75  t() aggregate fu
16dc0 6e 63 74 69 6f 6e 7d 0a 7d 20 7b 0a 20 20 5e 54  nction}.} {.  ^T
16dd0 68 65 20 67 72 6f 75 70 5f 63 6f 6e 63 61 74 28  he group_concat(
16de0 29 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72  ) function retur
16df0 6e 73 0a 20 20 61 20 73 74 72 69 6e 67 20 77 68  ns.  a string wh
16e00 69 63 68 20 69 73 20 74 68 65 20 63 6f 6e 63 61  ich is the conca
16e10 74 65 6e 61 74 69 6f 6e 20 6f 66 0a 20 20 61 6c  tenation of.  al
16e20 6c 20 6e 6f 6e 2d 4e 55 4c 4c 20 76 61 6c 75 65  l non-NULL value
16e30 73 20 6f 66 20 3c 69 3e 58 3c 2f 69 3e 2e 20 20  s of <i>X</i>.  
16e40 5e 49 66 20 70 61 72 61 6d 65 74 65 72 20 3c 69  ^If parameter <i
16e50 3e 59 3c 2f 69 3e 20 69 73 20 70 72 65 73 65 6e  >Y</i> is presen
16e60 74 20 74 68 65 6e 0a 20 20 69 73 20 69 73 20 75  t then.  is is u
16e70 73 65 64 20 61 73 20 74 68 65 20 73 65 70 61 72  sed as the separ
16e80 61 74 6f 72 0a 20 20 62 65 74 77 65 65 6e 20 69  ator.  between i
16e90 6e 73 74 61 6e 63 65 73 20 6f 66 20 3c 69 3e 58  nstances of <i>X
16ea0 3c 2f 69 3e 2e 20 20 5e 41 20 63 6f 6d 6d 61 20  </i>.  ^A comma 
16eb0 28 22 2c 22 29 20 69 73 20 75 73 65 64 20 61 73  (",") is used as
16ec0 20 74 68 65 20 73 65 70 61 72 61 74 6f 72 0a 20   the separator. 
16ed0 20 69 66 20 3c 69 3e 59 3c 2f 69 3e 20 69 73 20   if <i>Y</i> is 
16ee0 6f 6d 69 74 74 65 64 2e 20 20 54 68 65 20 6f 72  omitted.  The or
16ef0 64 65 72 20 6f 66 20 74 68 65 20 63 6f 6e 63 61  der of the conca
16f00 74 65 6e 61 74 65 64 20 65 6c 65 6d 65 6e 74 73  tenated elements
16f10 20 69 73 0a 20 20 61 72 62 69 74 72 61 72 79 2e   is.  arbitrary.
16f20 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 6d 61 78  .}..funcdef {max
16f30 28 58 29 7d 20 7b 2a 6d 61 78 41 67 67 46 75 6e  (X)} {*maxAggFun
16f40 63 20 2a 61 67 67 5f 6d 61 78 20 7b 6d 61 78 28  c *agg_max {max(
16f50 29 20 61 67 67 72 65 67 61 74 65 20 66 75 6e 63  ) aggregate func
16f60 74 69 6f 6e 7d 7d 20 7b 0a 20 20 5e 54 68 65 20  tion}} {.  ^The 
16f70 6d 61 78 28 29 20 61 67 67 72 65 67 61 74 65 20  max() aggregate 
16f80 66 75 6e 63 74 69 6f 6e 0a 20 20 72 65 74 75 72  function.  retur
16f90 6e 73 20 74 68 65 20 6d 61 78 69 6d 75 6d 20 76  ns the maximum v
16fa0 61 6c 75 65 20 6f 66 20 61 6c 6c 20 76 61 6c 75  alue of all valu
16fb0 65 73 20 69 6e 20 74 68 65 20 67 72 6f 75 70 2e  es in the group.
16fc0 0a 20 20 5e 54 68 65 20 6d 61 78 69 6d 75 6d 20  .  ^The maximum 
16fd0 76 61 6c 75 65 20 69 73 20 74 68 65 20 76 61 6c  value is the val
16fe0 75 65 20 74 68 61 74 20 77 6f 75 6c 64 20 62 65  ue that would be
16ff0 20 72 65 74 75 72 6e 65 64 20 6c 61 73 74 20 69   returned last i
17000 6e 20 61 6e 0a 20 20 4f 52 44 45 52 20 42 59 20  n an.  ORDER BY 
17010 6f 6e 20 74 68 65 20 73 61 6d 65 20 63 6f 6c 75  on the same colu
17020 6d 6e 2e 20 20 5e 41 67 67 72 65 67 61 74 65 20  mn.  ^Aggregate 
17030 6d 61 78 28 29 20 72 65 74 75 72 6e 73 20 4e 55  max() returns NU
17040 4c 4c 20 0a 20 20 69 66 20 61 6e 64 20 6f 6e 6c  LL .  if and onl
17050 79 20 69 66 20 74 68 65 72 65 20 61 72 65 20 6e  y if there are n
17060 6f 20 6e 6f 6e 2d 4e 55 4c 4c 20 76 61 6c 75 65  o non-NULL value
17070 73 20 69 6e 20 74 68 65 20 67 72 6f 75 70 2e 0a  s in the group..
17080 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 6d 69 6e 28  }..funcdef {min(
17090 58 29 7d 20 7b 2a 6d 69 6e 41 67 67 46 75 6e 63  X)} {*minAggFunc
170a0 20 2a 61 67 67 5f 6d 69 6e 20 7b 6d 69 6e 28 29   *agg_min {min()
170b0 20 61 67 67 72 65 67 61 74 65 20 66 75 6e 63 74   aggregate funct
170c0 69 6f 6e 7d 7d 20 7b 0a 20 20 5e 54 68 65 20 6d  ion}} {.  ^The m
170d0 69 6e 28 29 20 61 67 67 72 65 67 61 74 65 20 66  in() aggregate f
170e0 75 6e 63 74 69 6f 6e 0a 20 20 72 65 74 75 72 6e  unction.  return
170f0 73 20 74 68 65 20 6d 69 6e 69 6d 75 6d 20 6e 6f  s the minimum no
17100 6e 2d 4e 55 4c 4c 20 76 61 6c 75 65 20 6f 66 20  n-NULL value of 
17110 61 6c 6c 20 76 61 6c 75 65 73 20 69 6e 20 74 68  all values in th
17120 65 20 67 72 6f 75 70 2e 0a 20 20 5e 54 68 65 20  e group..  ^The 
17130 6d 69 6e 69 6d 75 6d 20 76 61 6c 75 65 20 69 73  minimum value is
17140 20 74 68 65 20 66 69 72 73 74 20 6e 6f 6e 2d 4e   the first non-N
17150 55 4c 4c 20 76 61 6c 75 65 20 74 68 61 74 20 77  ULL value that w
17160 6f 75 6c 64 20 61 70 70 65 61 72 0a 20 20 69 6e  ould appear.  in
17170 20 61 6e 20 4f 52 44 45 52 20 42 59 20 6f 66 20   an ORDER BY of 
17180 74 68 65 20 63 6f 6c 75 6d 6e 2e 0a 20 20 5e 41  the column..  ^A
17190 67 67 72 65 67 61 74 65 20 6d 69 6e 28 29 20 72  ggregate min() r
171a0 65 74 75 72 6e 73 20 4e 55 4c 4c 20 69 66 20 61  eturns NULL if a
171b0 6e 64 20 6f 6e 6c 79 20 69 66 20 74 68 65 72 65  nd only if there
171c0 20 61 72 65 20 6e 6f 20 6e 6f 6e 2d 4e 55 4c 4c   are no non-NULL
171d0 0a 20 20 76 61 6c 75 65 73 20 69 6e 20 74 68 65  .  values in the
171e0 20 67 72 6f 75 70 2e 0a 7d 0a 0a 66 75 6e 63 64   group..}..funcd
171f0 65 66 20 7b 73 75 6d 28 58 29 20 74 6f 74 61 6c  ef {sum(X) total
17200 28 58 29 7d 20 7b 0a 20 20 2a 73 75 6d 46 75 6e  (X)} {.  *sumFun
17210 63 20 2a 73 75 6d 20 2a 74 6f 74 61 6c 0a 20 20  c *sum *total.  
17220 7b 73 75 6d 28 29 20 61 67 67 72 65 67 61 74 65  {sum() aggregate
17230 20 66 75 6e 63 74 69 6f 6e 7d 0a 20 20 7b 74 6f   function}.  {to
17240 74 61 6c 28 29 20 61 67 67 72 65 67 61 74 65 20  tal() aggregate 
17250 66 75 6e 63 74 69 6f 6e 7d 0a 7d 20 7b 0a 20 20  function}.} {.  
17260 5e 54 68 65 20 73 75 6d 28 29 20 61 6e 64 20 74  ^The sum() and t
17270 6f 74 61 6c 28 29 20 61 67 67 72 65 67 61 74 65  otal() aggregate
17280 20 66 75 6e 63 74 69 6f 6e 73 0a 20 20 72 65 74   functions.  ret
17290 75 72 6e 20 73 75 6d 20 6f 66 20 61 6c 6c 20 6e  urn sum of all n
172a0 6f 6e 2d 4e 55 4c 4c 20 76 61 6c 75 65 73 20 69  on-NULL values i
172b0 6e 20 74 68 65 20 67 72 6f 75 70 2e 0a 20 20 5e  n the group..  ^
172c0 49 66 20 74 68 65 72 65 20 61 72 65 20 6e 6f 20  If there are no 
172d0 6e 6f 6e 2d 4e 55 4c 4c 20 69 6e 70 75 74 20 72  non-NULL input r
172e0 6f 77 73 20 74 68 65 6e 20 73 75 6d 28 29 20 72  ows then sum() r
172f0 65 74 75 72 6e 73 0a 20 20 4e 55 4c 4c 20 62 75  eturns.  NULL bu
17300 74 20 74 6f 74 61 6c 28 29 20 72 65 74 75 72 6e  t total() return
17310 73 20 30 2e 30 2e 0a 20 20 4e 55 4c 4c 20 69 73  s 0.0..  NULL is
17320 20 6e 6f 74 20 6e 6f 72 6d 61 6c 6c 79 20 61 20   not normally a 
17330 68 65 6c 70 66 75 6c 20 72 65 73 75 6c 74 20 66  helpful result f
17340 6f 72 20 74 68 65 20 73 75 6d 20 6f 66 20 6e 6f  or the sum of no
17350 20 72 6f 77 73 0a 20 20 62 75 74 20 74 68 65 20   rows.  but the 
17360 53 51 4c 20 73 74 61 6e 64 61 72 64 20 72 65 71  SQL standard req
17370 75 69 72 65 73 20 69 74 20 61 6e 64 20 6d 6f 73  uires it and mos
17380 74 20 6f 74 68 65 72 0a 20 20 53 51 4c 20 64 61  t other.  SQL da
17390 74 61 62 61 73 65 20 65 6e 67 69 6e 65 73 20 69  tabase engines i
173a0 6d 70 6c 65 6d 65 6e 74 20 73 75 6d 28 29 20 74  mplement sum() t
173b0 68 61 74 20 77 61 79 20 73 6f 20 53 51 4c 69 74  hat way so SQLit
173c0 65 20 64 6f 65 73 20 69 74 20 69 6e 20 74 68 65  e does it in the
173d0 0a 20 20 73 61 6d 65 20 77 61 79 20 69 6e 20 6f  .  same way in o
173e0 72 64 65 72 20 74 6f 20 62 65 20 63 6f 6d 70 61  rder to be compa
173f0 74 69 62 6c 65 2e 20 20 20 54 68 65 20 6e 6f 6e  tible.   The non
17400 2d 73 74 61 6e 64 61 72 64 20 74 6f 74 61 6c 28  -standard total(
17410 29 20 66 75 6e 63 74 69 6f 6e 0a 20 20 69 73 20  ) function.  is 
17420 70 72 6f 76 69 64 65 64 20 61 73 20 61 20 63 6f  provided as a co
17430 6e 76 65 6e 69 65 6e 74 20 77 61 79 20 74 6f 20  nvenient way to 
17440 77 6f 72 6b 20 61 72 6f 75 6e 64 20 74 68 69 73  work around this
17450 20 64 65 73 69 67 6e 20 70 72 6f 62 6c 65 6d 0a   design problem.
17460 20 20 69 6e 20 74 68 65 20 53 51 4c 20 6c 61 6e    in the SQL lan
17470 67 75 61 67 65 2e 3c 2f 70 3e 0a 0a 20 20 3c 70  guage.</p>..  <p
17480 3e 5e 54 68 65 20 72 65 73 75 6c 74 20 6f 66 20  >^The result of 
17490 74 6f 74 61 6c 28 29 20 69 73 20 61 6c 77 61 79  total() is alway
174a0 73 20 61 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69  s a floating poi
174b0 6e 74 20 76 61 6c 75 65 2e 0a 20 20 5e 54 68 65  nt value..  ^The
174c0 20 72 65 73 75 6c 74 20 6f 66 20 73 75 6d 28 29   result of sum()
174d0 20 69 73 20 61 6e 20 69 6e 74 65 67 65 72 20 76   is an integer v
174e0 61 6c 75 65 20 69 66 20 61 6c 6c 20 6e 6f 6e 2d  alue if all non-
174f0 4e 55 4c 4c 20 69 6e 70 75 74 73 20 61 72 65 20  NULL inputs are 
17500 69 6e 74 65 67 65 72 73 2e 0a 20 20 5e 49 66 20  integers..  ^If 
17510 61 6e 79 20 69 6e 70 75 74 20 74 6f 20 73 75 6d  any input to sum
17520 28 29 20 69 73 20 6e 65 69 74 68 65 72 20 61 6e  () is neither an
17530 20 69 6e 74 65 67 65 72 20 6f 72 20 61 20 4e 55   integer or a NU
17540 4c 4c 0a 20 20 74 68 65 6e 20 73 75 6d 28 29 20  LL.  then sum() 
17550 72 65 74 75 72 6e 73 20 61 20 66 6c 6f 61 74 69  returns a floati
17560 6e 67 20 70 6f 69 6e 74 20 76 61 6c 75 65 0a 20  ng point value. 
17570 20 77 68 69 63 68 20 6d 69 67 68 74 20 62 65 20   which might be 
17580 61 6e 20 61 70 70 72 6f 78 69 6d 61 74 69 6f 6e  an approximation
17590 20 74 6f 20 74 68 65 20 74 72 75 65 20 73 75 6d   to the true sum
175a0 2e 3c 2f 70 3e 0a 0a 20 20 3c 70 3e 5e 53 75 6d  .</p>..  <p>^Sum
175b0 28 29 20 77 69 6c 6c 20 74 68 72 6f 77 20 61 6e  () will throw an
175c0 20 22 69 6e 74 65 67 65 72 20 6f 76 65 72 66 6c   "integer overfl
175d0 6f 77 22 20 65 78 63 65 70 74 69 6f 6e 20 69 66  ow" exception if
175e0 20 61 6c 6c 20 69 6e 70 75 74 73 0a 20 20 61 72   all inputs.  ar
175f0 65 20 69 6e 74 65 67 65 72 73 20 6f 72 20 4e 55  e integers or NU
17600 4c 4c 0a 20 20 61 6e 64 20 61 6e 20 69 6e 74 65  LL.  and an inte
17610 67 65 72 20 6f 76 65 72 66 6c 6f 77 20 6f 63 63  ger overflow occ
17620 75 72 73 20 61 74 20 61 6e 79 20 70 6f 69 6e 74  urs at any point
17630 20 64 75 72 69 6e 67 20 74 68 65 20 63 6f 6d 70   during the comp
17640 75 74 61 74 69 6f 6e 2e 0a 20 20 5e 54 6f 74 61  utation..  ^Tota
17650 6c 28 29 20 6e 65 76 65 72 20 74 68 72 6f 77 73  l() never throws
17660 20 61 6e 20 69 6e 74 65 67 65 72 20 6f 76 65 72   an integer over
17670 66 6c 6f 77 2e 0a 7d 0a 3c 2f 74 63 6c 3e 0a 3c  flow..}.</tcl>.<
17680 2f 74 61 62 6c 65 3e 0a 0a 3c 74 63 6c 3e 0a 23  /table>..<tcl>.#
17690 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
176a0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
176b0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
176c0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
176d0 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 53 65  #############.Se
176e0 63 74 69 6f 6e 20 49 4e 53 45 52 54 20 69 6e 73  ction INSERT ins
176f0 65 72 74 20 7b 49 4e 53 45 52 54 20 2a 49 4e 53  ert {INSERT *INS
17700 45 52 54 73 7d 0a 0a 42 75 62 62 6c 65 44 69 61  ERTs}..BubbleDia
17710 67 72 61 6d 20 69 6e 73 65 72 74 2d 73 74 6d 74  gram insert-stmt
17720 20 31 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68   1.</tcl>..<p>Th
17730 65 20 49 4e 53 45 52 54 20 73 74 61 74 65 6d 65  e INSERT stateme
17740 6e 74 20 63 6f 6d 65 73 20 69 6e 20 74 68 72 65  nt comes in thre
17750 65 20 62 61 73 69 63 20 66 6f 72 6d 73 2e 20 20  e basic forms.  
17760 5e 54 68 65 20 66 69 72 73 74 20 66 6f 72 6d 0a  ^The first form.
17770 28 77 69 74 68 20 74 68 65 20 22 56 41 4c 55 45  (with the "VALUE
17780 53 22 20 6b 65 79 77 6f 72 64 29 20 63 72 65 61  S" keyword) crea
17790 74 65 73 20 61 20 73 69 6e 67 6c 65 20 6e 65 77  tes a single new
177a0 20 72 6f 77 20 69 6e 20 61 6e 20 65 78 69 73 74   row in an exist
177b0 69 6e 67 20 74 61 62 6c 65 2e 0a 5e 49 66 20 6e  ing table..^If n
177c0 6f 20 63 6f 6c 75 6d 6e 2d 6c 69 73 74 20 69 73  o column-list is
177d0 20 73 70 65 63 69 66 69 65 64 20 74 68 65 6e 20   specified then 
177e0 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 76 61  the number of va
177f0 6c 75 65 73 20 6d 75 73 74 0a 62 65 20 74 68 65  lues must.be the
17800 20 73 61 6d 65 20 61 73 20 74 68 65 20 6e 75 6d   same as the num
17810 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69  ber of columns i
17820 6e 20 74 68 65 20 74 61 62 6c 65 2e 20 20 5e 49  n the table.  ^I
17830 66 20 61 20 63 6f 6c 75 6d 6e 2d 6c 69 73 74 0a  f a column-list.
17840 69 73 20 73 70 65 63 69 66 69 65 64 2c 20 74 68  is specified, th
17850 65 6e 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  en the number of
17860 20 76 61 6c 75 65 73 20 6d 75 73 74 20 6d 61 74   values must mat
17870 63 68 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  ch the number of
17880 0a 73 70 65 63 69 66 69 65 64 20 63 6f 6c 75 6d  .specified colum
17890 6e 73 2e 20 20 5e 43 6f 6c 75 6d 6e 73 20 6f 66  ns.  ^Columns of
178a0 20 74 68 65 20 74 61 62 6c 65 20 74 68 61 74 20   the table that 
178b0 64 6f 20 6e 6f 74 20 61 70 70 65 61 72 20 69 6e  do not appear in
178c0 20 74 68 65 0a 63 6f 6c 75 6d 6e 20 6c 69 73 74   the.column list
178d0 20 61 72 65 20 66 69 6c 6c 65 64 20 77 69 74 68   are filled with
178e0 20 74 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c   the default val
178f0 75 65 2c 20 6f 72 20 77 69 74 68 20 4e 55 4c 4c  ue, or with NULL
17900 20 69 66 20 6e 6f 0a 64 65 66 61 75 6c 74 20 76   if no.default v
17910 61 6c 75 65 20 69 73 20 73 70 65 63 69 66 69 65  alue is specifie
17920 64 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65  d..</p>..<p>^The
17930 20 73 65 63 6f 6e 64 20 66 6f 72 6d 20 6f 66 20   second form of 
17940 74 68 65 20 49 4e 53 45 52 54 20 73 74 61 74 65  the INSERT state
17950 6d 65 6e 74 20 74 61 6b 65 73 20 69 74 73 20 64  ment takes its d
17960 61 74 61 20 66 72 6f 6d 20 61 0a 53 45 4c 45 43  ata from a.SELEC
17970 54 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 5e 54  T statement.  ^T
17980 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c  he number of col
17990 75 6d 6e 73 20 69 6e 20 74 68 65 20 72 65 73 75  umns in the resu
179a0 6c 74 20 6f 66 20 74 68 65 0a 53 45 4c 45 43 54  lt of the.SELECT
179b0 20 6d 75 73 74 20 65 78 61 63 74 6c 79 20 6d 61   must exactly ma
179c0 74 63 68 20 74 68 65 20 6e 75 6d 62 65 72 20 6f  tch the number o
179d0 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65  f columns in the
179e0 20 74 61 62 6c 65 20 69 66 0a 6e 6f 20 63 6f 6c   table if.no col
179f0 75 6d 6e 20 6c 69 73 74 20 69 73 20 73 70 65 63  umn list is spec
17a00 69 66 69 65 64 2c 20 6f 72 20 69 74 20 6d 75 73  ified, or it mus
17a10 74 20 6d 61 74 63 68 20 74 68 65 20 6e 75 6d 62  t match the numb
17a20 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 0a 6e 61  er of columns.na
17a30 6d 65 64 20 69 6e 20 74 68 65 20 63 6f 6c 75 6d  med in the colum
17a40 6e 20 6c 69 73 74 2e 20 20 5e 41 20 6e 65 77 20  n list.  ^A new 
17a50 65 6e 74 72 79 20 69 73 20 6d 61 64 65 20 69 6e  entry is made in
17a60 20 74 68 65 20 74 61 62 6c 65 0a 66 6f 72 20 65   the table.for e
17a70 76 65 72 79 20 72 6f 77 20 6f 66 20 74 68 65 20  very row of the 
17a80 53 45 4c 45 43 54 20 72 65 73 75 6c 74 2e 20 20  SELECT result.  
17a90 5e 54 68 65 20 53 45 4c 45 43 54 20 6d 61 79 20  ^The SELECT may 
17aa0 62 65 20 73 69 6d 70 6c 65 0a 6f 72 20 63 6f 6d  be simple.or com
17ab0 70 6f 75 6e 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e  pound.</p>..<p>^
17ac0 54 68 65 20 74 68 69 72 64 20 66 6f 72 6d 20 6f  The third form o
17ad0 66 20 61 6e 20 49 4e 53 45 52 54 20 73 74 61 74  f an INSERT stat
17ae0 65 6d 65 6e 74 20 69 73 20 77 69 74 68 20 44 45  ement is with DE
17af0 46 41 55 4c 54 20 56 41 4c 55 45 53 2e 0a 5e 28  FAULT VALUES..^(
17b00 54 68 65 20 49 4e 53 45 52 54 20 2e 2e 2e 20 44  The INSERT ... D
17b10 45 46 41 55 4c 54 20 56 41 4c 55 45 53 20 73 74  EFAULT VALUES st
17b20 61 74 65 6d 65 6e 74 20 73 69 6d 70 6c 79 20 63  atement simply c
17b30 72 65 61 74 65 73 20 61 20 73 69 6e 67 6c 65 20  reates a single 
17b40 6e 65 77 0a 72 6f 77 20 69 6e 20 74 68 65 20 74  new.row in the t
17b50 61 62 6c 65 20 69 6e 20 77 68 69 63 68 20 65 61  able in which ea
17b60 63 68 20 63 6f 6c 75 6d 6e 20 69 73 20 66 69 6c  ch column is fil
17b70 6c 65 64 20 77 69 74 68 20 69 74 73 20 64 65 66  led with its def
17b80 61 75 6c 74 20 76 61 6c 75 65 2e 29 5e 3c 2f 70  ault value.)^</p
17b90 3e 0a 0a 3c 70 3e 5e 54 68 65 20 6f 70 74 69 6f  >..<p>^The optio
17ba0 6e 61 6c 20 63 6f 6e 66 6c 69 63 74 2d 63 6c 61  nal conflict-cla
17bb0 75 73 65 20 61 6c 6c 6f 77 73 20 74 68 65 20 73  use allows the s
17bc0 70 65 63 69 66 69 63 61 74 69 6f 6e 20 6f 66 20  pecification of 
17bd0 61 6e 20 61 6c 74 65 72 6e 61 74 69 76 65 0a 63  an alternative.c
17be0 6f 6e 73 74 72 61 69 6e 74 20 63 6f 6e 66 6c 69  onstraint confli
17bf0 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c  ct resolution al
17c00 67 6f 72 69 74 68 6d 20 74 6f 20 75 73 65 20 64  gorithm to use d
17c10 75 72 69 6e 67 20 74 68 69 73 20 6f 6e 65 20 49  uring this one I
17c20 4e 53 45 52 54 20 63 6f 6d 6d 61 6e 64 2e 0a 53  NSERT command..S
17c30 65 65 20 74 68 65 20 73 65 63 74 69 6f 6e 20 74  ee the section t
17c40 69 74 6c 65 64 0a 5b 4f 4e 20 43 4f 4e 46 4c 49  itled.[ON CONFLI
17c50 43 54 5d 20 66 6f 72 20 61 64 64 69 74 69 6f 6e  CT] for addition
17c60 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a  al information..
17c70 5e 46 6f 72 20 63 6f 6d 70 61 74 69 62 69 6c 69  ^For compatibili
17c80 74 79 20 77 69 74 68 20 4d 79 53 51 4c 2c 20 74  ty with MySQL, t
17c90 68 65 20 70 61 72 73 65 72 20 61 6c 6c 6f 77 73  he parser allows
17ca0 20 74 68 65 20 75 73 65 20 6f 66 20 74 68 65 0a   the use of the.
17cb0 73 69 6e 67 6c 65 20 6b 65 79 77 6f 72 64 20 3c  single keyword <
17cc0 61 20 68 72 65 66 3d 22 6c 61 6e 67 5f 72 65 70  a href="lang_rep
17cd0 6c 61 63 65 2e 68 74 6d 6c 22 3e 52 45 50 4c 41  lace.html">REPLA
17ce0 43 45 3c 2f 61 3e 20 61 73 20 61 6e 20 0a 61 6c  CE</a> as an .al
17cf0 69 61 73 20 66 6f 72 20 22 49 4e 53 45 52 54 20  ias for "INSERT 
17d00 4f 52 20 52 45 50 4c 41 43 45 22 2e 0a 3c 2f 70  OR REPLACE"..</p
17d10 3e 0a 0a 3c 70 3e 5e 28 54 68 65 20 6f 70 74 69  >..<p>^(The opti
17d20 6f 6e 61 6c 20 22 3c 69 3e 64 61 74 61 62 61 73  onal "<i>databas
17d30 65 2d 6e 61 6d 65 3c 2f 69 3e 3c 62 3e 2e 3c 2f  e-name</i><b>.</
17d40 62 3e 22 20 70 72 65 66 69 78 20 6f 6e 20 74 68  b>" prefix on th
17d50 65 20 3c 69 3e 74 61 62 6c 65 2d 6e 61 6d 65 3c  e <i>table-name<
17d60 2f 69 3e 0a 69 73 20 73 75 70 70 6f 72 74 20 66  /i>.is support f
17d70 6f 72 20 74 6f 70 2d 6c 65 76 65 6c 20 49 4e 53  or top-level INS
17d80 45 52 54 20 73 74 61 74 65 6d 65 6e 74 73 20 6f  ERT statements o
17d90 6e 6c 79 2e 29 5e 20 20 5e 54 68 65 20 74 61 62  nly.)^  ^The tab
17da0 6c 65 20 6e 61 6d 65 20 6d 75 73 74 20 62 65 0a  le name must be.
17db0 75 6e 71 75 61 6c 69 66 69 65 64 20 66 6f 72 20  unqualified for 
17dc0 49 4e 53 45 52 54 20 73 74 61 74 65 6d 65 6e 74  INSERT statement
17dd0 73 20 74 68 61 74 20 6f 63 63 75 72 20 77 69 74  s that occur wit
17de0 68 69 6e 20 5b 43 52 45 41 54 45 20 54 52 49 47  hin [CREATE TRIG
17df0 47 45 52 5d 20 73 74 61 74 65 6d 65 6e 74 73 2e  GER] statements.
17e00 0a 5e 53 69 6d 69 6c 61 72 6c 79 2c 20 74 68 65  .^Similarly, the
17e10 20 22 44 45 46 41 55 4c 54 20 56 41 4c 55 45 53   "DEFAULT VALUES
17e20 22 20 66 6f 72 6d 20 6f 66 20 74 68 65 20 49 4e  " form of the IN
17e30 53 45 52 54 20 73 74 61 74 65 6d 65 6e 74 20 69  SERT statement i
17e40 73 20 73 75 70 70 6f 72 74 65 64 20 66 6f 72 0a  s supported for.
17e50 74 6f 70 2d 6c 65 76 65 6c 20 49 4e 53 45 52 54  top-level INSERT
17e60 20 73 74 61 74 65 6d 65 6e 74 73 20 6f 6e 6c 79   statements only
17e70 20 61 6e 64 20 6e 6f 74 20 66 6f 72 20 49 4e 53   and not for INS
17e80 45 52 54 20 73 74 61 74 65 6d 65 6e 74 73 20 77  ERT statements w
17e90 69 74 68 69 6e 0a 74 72 69 67 67 65 72 73 2e 0a  ithin.triggers..
17ea0 3c 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23  <p>..<tcl>.#####
17eb0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17ec0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17ed0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17ee0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17ef0 23 23 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f  #########.Sectio
17f00 6e 20 7b 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 63  n {ON CONFLICT c
17f10 6c 61 75 73 65 7d 20 63 6f 6e 66 6c 69 63 74 20  lause} conflict 
17f20 7b 7b 63 6f 6e 66 6c 69 63 74 20 63 6c 61 75 73  {{conflict claus
17f30 65 7d 20 7b 4f 4e 20 43 4f 4e 46 4c 49 43 54 7d  e} {ON CONFLICT}
17f40 7d 0a 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d  }..BubbleDiagram
17f50 20 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65   conflict-clause
17f60 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20  .</tcl>..<p>The 
17f70 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 63 6c 61 75  ON CONFLICT clau
17f80 73 65 20 69 73 20 6e 6f 74 20 61 20 73 65 70 61  se is not a sepa
17f90 72 61 74 65 20 53 51 4c 20 63 6f 6d 6d 61 6e 64  rate SQL command
17fa0 2e 20 20 49 74 20 69 73 20 61 0a 6e 6f 6e 2d 73  .  It is a.non-s
17fb0 74 61 6e 64 61 72 64 20 63 6c 61 75 73 65 20 74  tandard clause t
17fc0 68 61 74 20 63 61 6e 20 61 70 70 65 61 72 20 69  hat can appear i
17fd0 6e 20 6d 61 6e 79 20 6f 74 68 65 72 20 53 51 4c  n many other SQL
17fe0 20 63 6f 6d 6d 61 6e 64 73 2e 0a 49 74 20 69 73   commands..It is
17ff0 20 67 69 76 65 6e 20 69 74 73 20 6f 77 6e 20 73   given its own s
18000 65 63 74 69 6f 6e 20 69 6e 20 74 68 69 73 20 64  ection in this d
18010 6f 63 75 6d 65 6e 74 20 62 65 63 61 75 73 65 20  ocument because 
18020 69 74 20 69 73 20 6e 6f 74 0a 70 61 72 74 20 6f  it is not.part o
18030 66 20 73 74 61 6e 64 61 72 64 20 53 51 4c 20 61  f standard SQL a
18040 6e 64 20 74 68 65 72 65 66 6f 72 65 20 6d 69 67  nd therefore mig
18050 68 74 20 6e 6f 74 20 62 65 20 66 61 6d 69 6c 69  ht not be famili
18060 61 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65  ar.</p>..<p>^The
18070 20 73 79 6e 74 61 78 20 66 6f 72 20 74 68 65 20   syntax for the 
18080 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 63 6c 61 75  ON CONFLICT clau
18090 73 65 20 69 73 20 61 73 20 73 68 6f 77 6e 20 61  se is as shown a
180a0 62 6f 76 65 20 66 6f 72 0a 74 68 65 20 43 52 45  bove for.the CRE
180b0 41 54 45 20 54 41 42 4c 45 20 63 6f 6d 6d 61 6e  ATE TABLE comman
180c0 64 2e 20 20 5e 46 6f 72 20 74 68 65 20 49 4e 53  d.  ^For the INS
180d0 45 52 54 20 61 6e 64 0a 55 50 44 41 54 45 20 63  ERT and.UPDATE c
180e0 6f 6d 6d 61 6e 64 73 2c 20 74 68 65 20 6b 65 79  ommands, the key
180f0 77 6f 72 64 73 20 22 4f 4e 20 43 4f 4e 46 4c 49  words "ON CONFLI
18100 43 54 22 20 61 72 65 20 72 65 70 6c 61 63 65 64  CT" are replaced
18110 20 62 79 20 22 4f 52 22 2c 20 74 6f 20 6d 61 6b   by "OR", to mak
18120 65 0a 74 68 65 20 73 79 6e 74 61 78 20 73 65 65  e.the syntax see
18130 6d 20 6d 6f 72 65 20 6e 61 74 75 72 61 6c 2e 20  m more natural. 
18140 20 5e 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 69   ^For example, i
18150 6e 73 74 65 61 64 20 6f 66 0a 22 49 4e 53 45 52  nstead of."INSER
18160 54 20 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 49 47  T ON CONFLICT IG
18170 4e 4f 52 45 22 20 77 65 20 68 61 76 65 20 22 49  NORE" we have "I
18180 4e 53 45 52 54 20 4f 52 20 49 47 4e 4f 52 45 22  NSERT OR IGNORE"
18190 2e 0a 54 68 65 20 6b 65 79 77 6f 72 64 73 20 63  ..The keywords c
181a0 68 61 6e 67 65 20 62 75 74 20 74 68 65 20 6d 65  hange but the me
181b0 61 6e 69 6e 67 20 6f 66 20 74 68 65 20 63 6c 61  aning of the cla
181c0 75 73 65 20 69 73 20 74 68 65 20 73 61 6d 65 0a  use is the same.
181d0 65 69 74 68 65 72 20 77 61 79 2e 3c 2f 70 3e 0a  either way.</p>.
181e0 0a 3c 70 3e 5e 54 68 65 20 4f 4e 20 43 4f 4e 46  .<p>^The ON CONF
181f0 4c 49 43 54 20 63 6c 61 75 73 65 20 73 70 65 63  LICT clause spec
18200 69 66 69 65 73 20 61 6e 20 61 6c 67 6f 72 69 74  ifies an algorit
18210 68 6d 20 75 73 65 64 20 74 6f 20 72 65 73 6f 6c  hm used to resol
18220 76 65 0a 63 6f 6e 73 74 72 61 69 6e 74 20 63 6f  ve.constraint co
18230 6e 66 6c 69 63 74 73 2e 20 20 5e 54 68 65 72 65  nflicts.  ^There
18240 20 61 72 65 20 66 69 76 65 20 63 6f 6e 66 6c 69   are five confli
18250 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c  ct resolution al
18260 67 6f 72 69 74 68 6d 20 63 68 6f 69 63 65 73 3a  gorithm choices:
18270 0a 52 4f 4c 4c 42 41 43 4b 2c 20 41 42 4f 52 54  .ROLLBACK, ABORT
18280 2c 20 46 41 49 4c 2c 20 49 47 4e 4f 52 45 2c 20  , FAIL, IGNORE, 
18290 61 6e 64 20 52 45 50 4c 41 43 45 2e 0a 5e 54 68  and REPLACE..^Th
182a0 65 20 64 65 66 61 75 6c 74 20 63 6f 6e 66 6c 69  e default confli
182b0 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c  ct resolution al
182c0 67 6f 72 69 74 68 6d 20 69 73 20 41 42 4f 52 54  gorithm is ABORT
182d0 2e 20 20 54 68 69 73 0a 69 73 20 77 68 61 74 20  .  This.is what 
182e0 74 68 65 79 20 6d 65 61 6e 3a 3c 2f 70 3e 0a 0a  they mean:</p>..
182f0 3c 64 6c 3e 0a 3c 64 74 3e 3c 62 3e 52 4f 4c 4c  <dl>.<dt><b>ROLL
18300 42 41 43 4b 3c 2f 62 3e 3c 2f 64 74 3e 0a 3c 64  BACK</b></dt>.<d
18310 64 3e 3c 70 3e 5e 57 68 65 6e 20 61 20 63 6f 6e  d><p>^When a con
18320 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f  straint violatio
18330 6e 20 6f 63 63 75 72 73 2c 20 61 6e 20 69 6d 6d  n occurs, an imm
18340 65 64 69 61 74 65 20 52 4f 4c 4c 42 41 43 4b 0a  ediate ROLLBACK.
18350 6f 63 63 75 72 73 2c 20 74 68 75 73 20 65 6e 64  occurs, thus end
18360 69 6e 67 20 74 68 65 20 63 75 72 72 65 6e 74 20  ing the current 
18370 74 72 61 6e 73 61 63 74 69 6f 6e 2c 20 61 6e 64  transaction, and
18380 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20 61 62 6f   the command abo
18390 72 74 73 0a 77 69 74 68 20 61 20 72 65 74 75 72  rts.with a retur
183a0 6e 20 63 6f 64 65 20 6f 66 20 53 51 4c 49 54 45  n code of SQLITE
183b0 5f 43 4f 4e 53 54 52 41 49 4e 54 2e 20 20 5e 49  _CONSTRAINT.  ^I
183c0 66 20 6e 6f 20 74 72 61 6e 73 61 63 74 69 6f 6e  f no transaction
183d0 20 69 73 0a 61 63 74 69 76 65 20 28 6f 74 68 65   is.active (othe
183e0 72 20 74 68 61 6e 20 74 68 65 20 69 6d 70 6c 69  r than the impli
183f0 65 64 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 74  ed transaction t
18400 68 61 74 20 69 73 20 63 72 65 61 74 65 64 20 6f  hat is created o
18410 6e 20 65 76 65 72 79 0a 63 6f 6d 6d 61 6e 64 29  n every.command)
18420 20 74 68 65 6e 20 74 68 69 73 20 61 6c 67 6f 72   then this algor
18430 69 74 68 6d 20 77 6f 72 6b 73 20 74 68 65 20 73  ithm works the s
18440 61 6d 65 20 61 73 20 41 42 4f 52 54 2e 3c 2f 70  ame as ABORT.</p
18450 3e 3c 2f 64 64 3e 0a 0a 3c 64 74 3e 3c 62 3e 41  ></dd>..<dt><b>A
18460 42 4f 52 54 3c 2f 62 3e 3c 2f 64 74 3e 0a 3c 64  BORT</b></dt>.<d
18470 64 3e 3c 70 3e 5e 57 68 65 6e 20 61 20 63 6f 6e  d><p>^When a con
18480 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f  straint violatio
18490 6e 20 6f 63 63 75 72 73 2c 20 74 68 65 20 63 6f  n occurs, the co
184a0 6d 6d 61 6e 64 20 62 61 63 6b 73 20 6f 75 74 0a  mmand backs out.
184b0 61 6e 79 20 70 72 69 6f 72 20 63 68 61 6e 67 65  any prior change
184c0 73 20 69 74 20 6d 69 67 68 74 20 68 61 76 65 20  s it might have 
184d0 6d 61 64 65 20 61 6e 64 20 61 62 6f 72 74 73 20  made and aborts 
184e0 77 69 74 68 20 61 20 72 65 74 75 72 6e 20 63 6f  with a return co
184f0 64 65 0a 6f 66 20 53 51 4c 49 54 45 5f 43 4f 4e  de.of SQLITE_CON
18500 53 54 52 41 49 4e 54 2e 20 20 5e 42 75 74 20 6e  STRAINT.  ^But n
18510 6f 20 52 4f 4c 4c 42 41 43 4b 20 69 73 20 65 78  o ROLLBACK is ex
18520 65 63 75 74 65 64 20 73 6f 20 63 68 61 6e 67 65  ecuted so change
18530 73 0a 66 72 6f 6d 20 70 72 69 6f 72 20 63 6f 6d  s.from prior com
18540 6d 61 6e 64 73 20 77 69 74 68 69 6e 20 74 68 65  mands within the
18550 20 73 61 6d 65 20 74 72 61 6e 73 61 63 74 69 6f   same transactio
18560 6e 0a 61 72 65 20 70 72 65 73 65 72 76 65 64 2e  n.are preserved.
18570 20 20 54 68 69 73 20 69 73 20 74 68 65 20 64 65    This is the de
18580 66 61 75 6c 74 20 62 65 68 61 76 69 6f 72 2e 3c  fault behavior.<
18590 2f 70 3e 3c 2f 64 64 3e 0a 0a 3c 64 74 3e 3c 62  /p></dd>..<dt><b
185a0 3e 46 41 49 4c 3c 2f 62 3e 3c 2f 64 74 3e 0a 3c  >FAIL</b></dt>.<
185b0 64 64 3e 3c 70 3e 5e 57 68 65 6e 20 61 20 63 6f  dd><p>^When a co
185c0 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69  nstraint violati
185d0 6f 6e 20 6f 63 63 75 72 73 2c 20 74 68 65 20 63  on occurs, the c
185e0 6f 6d 6d 61 6e 64 20 61 62 6f 72 74 73 20 77 69  ommand aborts wi
185f0 74 68 20 61 0a 72 65 74 75 72 6e 20 63 6f 64 65  th a.return code
18600 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49   SQLITE_CONSTRAI
18610 4e 54 2e 20 20 5e 42 75 74 20 61 6e 79 20 63 68  NT.  ^But any ch
18620 61 6e 67 65 73 20 74 6f 20 74 68 65 20 64 61 74  anges to the dat
18630 61 62 61 73 65 20 74 68 61 74 0a 74 68 65 20 63  abase that.the c
18640 6f 6d 6d 61 6e 64 20 6d 61 64 65 20 70 72 69 6f  ommand made prio
18650 72 20 74 6f 20 65 6e 63 6f 75 6e 74 65 72 69 6e  r to encounterin
18660 67 20 74 68 65 20 63 6f 6e 73 74 72 61 69 6e 74  g the constraint
18670 20 76 69 6f 6c 61 74 69 6f 6e 0a 61 72 65 20 70   violation.are p
18680 72 65 73 65 72 76 65 64 20 61 6e 64 20 61 72 65  reserved and are
18690 20 6e 6f 74 20 62 61 63 6b 65 64 20 6f 75 74 2e   not backed out.
186a0 20 20 5e 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20    ^For example, 
186b0 69 66 20 61 6e 20 55 50 44 41 54 45 0a 73 74 61  if an UPDATE.sta
186c0 74 65 6d 65 6e 74 20 65 6e 63 6f 75 6e 74 65 72  tement encounter
186d0 65 64 20 61 20 63 6f 6e 73 74 72 61 69 6e 74 20  ed a constraint 
186e0 76 69 6f 6c 61 74 69 6f 6e 20 6f 6e 20 74 68 65  violation on the
186f0 20 31 30 30 74 68 20 72 6f 77 20 74 68 61 74 0a   100th row that.
18700 69 74 20 61 74 74 65 6d 70 74 73 20 74 6f 20 75  it attempts to u
18710 70 64 61 74 65 2c 20 74 68 65 6e 20 74 68 65 20  pdate, then the 
18720 66 69 72 73 74 20 39 39 20 72 6f 77 20 63 68 61  first 99 row cha
18730 6e 67 65 73 20 61 72 65 20 70 72 65 73 65 72 76  nges are preserv
18740 65 64 0a 62 75 74 20 63 68 61 6e 67 65 73 20 74  ed.but changes t
18750 6f 20 72 6f 77 73 20 31 30 30 20 61 6e 64 20 62  o rows 100 and b
18760 65 79 6f 6e 64 20 6e 65 76 65 72 20 6f 63 63 75  eyond never occu
18770 72 2e 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a 3c 64 74  r.</p></dd>..<dt
18780 3e 3c 62 3e 49 47 4e 4f 52 45 3c 2f 62 3e 3c 2f  ><b>IGNORE</b></
18790 64 74 3e 0a 3c 64 64 3e 3c 70 3e 5e 57 68 65 6e  dt>.<dd><p>^When
187a0 20 61 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69   a constraint vi
187b0 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72 73 2c 20  olation occurs, 
187c0 74 68 65 20 6f 6e 65 20 72 6f 77 20 74 68 61 74  the one row that
187d0 20 63 6f 6e 74 61 69 6e 73 0a 74 68 65 20 63 6f   contains.the co
187e0 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69  nstraint violati
187f0 6f 6e 20 69 73 20 6e 6f 74 20 69 6e 73 65 72 74  on is not insert
18800 65 64 20 6f 72 20 63 68 61 6e 67 65 64 2e 20 20  ed or changed.  
18810 5e 42 75 74 20 74 68 65 20 63 6f 6d 6d 61 6e 64  ^But the command
18820 0a 63 6f 6e 74 69 6e 75 65 73 20 65 78 65 63 75  .continues execu
18830 74 69 6e 67 20 6e 6f 72 6d 61 6c 6c 79 2e 20 20  ting normally.  
18840 5e 4f 74 68 65 72 20 72 6f 77 73 20 62 65 66 6f  ^Other rows befo
18850 72 65 20 61 6e 64 20 61 66 74 65 72 20 74 68 65  re and after the
18860 20 72 6f 77 20 74 68 61 74 0a 63 6f 6e 74 61 69   row that.contai
18870 6e 65 64 20 74 68 65 20 63 6f 6e 73 74 72 61 69  ned the constrai
18880 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 63 6f 6e  nt violation con
18890 74 69 6e 75 65 20 74 6f 20 62 65 20 69 6e 73 65  tinue to be inse
188a0 72 74 65 64 20 6f 72 20 75 70 64 61 74 65 64 0a  rted or updated.
188b0 6e 6f 72 6d 61 6c 6c 79 2e 20 20 5e 4e 6f 20 65  normally.  ^No e
188c0 72 72 6f 72 20 69 73 20 72 65 74 75 72 6e 65 64  rror is returned
188d0 20 77 68 65 6e 20 74 68 65 20 49 47 4e 4f 52 45   when the IGNORE
188e0 20 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75   conflict resolu
188f0 74 69 6f 6e 0a 61 6c 67 6f 72 69 74 68 6d 20 69  tion.algorithm i
18900 73 20 75 73 65 64 2e 3c 2f 70 3e 3c 2f 64 64 3e  s used.</p></dd>
18910 0a 0a 3c 64 74 3e 3c 62 3e 52 45 50 4c 41 43 45  ..<dt><b>REPLACE
18920 3c 2f 62 3e 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70  </b></dt>.<dd><p
18930 3e 5e 57 68 65 6e 20 61 20 55 4e 49 51 55 45 20  >^When a UNIQUE 
18940 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61  constraint viola
18950 74 69 6f 6e 20 6f 63 63 75 72 73 2c 20 74 68 65  tion occurs, the
18960 20 70 72 65 2d 65 78 69 73 74 69 6e 67 20 72 6f   pre-existing ro
18970 77 73 0a 74 68 61 74 20 61 72 65 20 63 61 75 73  ws.that are caus
18980 69 6e 67 20 74 68 65 20 63 6f 6e 73 74 72 61 69  ing the constrai
18990 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 61 72 65  nt violation are
189a0 20 72 65 6d 6f 76 65 64 20 70 72 69 6f 72 20 74   removed prior t
189b0 6f 20 69 6e 73 65 72 74 69 6e 67 0a 6f 72 20 75  o inserting.or u
189c0 70 64 61 74 69 6e 67 20 74 68 65 20 63 75 72 72  pdating the curr
189d0 65 6e 74 20 72 6f 77 2e 20 20 5e 54 68 75 73 20  ent row.  ^Thus 
189e0 74 68 65 20 69 6e 73 65 72 74 20 6f 72 20 75 70  the insert or up
189f0 64 61 74 65 20 61 6c 77 61 79 73 20 6f 63 63 75  date always occu
18a00 72 73 2e 0a 5e 54 68 65 20 63 6f 6d 6d 61 6e 64  rs..^The command
18a10 20 63 6f 6e 74 69 6e 75 65 73 20 65 78 65 63 75   continues execu
18a20 74 69 6e 67 20 6e 6f 72 6d 61 6c 6c 79 20 66 6f  ting normally fo
18a30 6c 6c 6f 77 69 6e 67 20 52 45 50 4c 41 43 45 2e  llowing REPLACE.
18a40 20 20 0a 5e 4e 6f 20 65 72 72 6f 72 20 69 73 20    .^No error is 
18a50 72 65 74 75 72 6e 65 64 20 62 79 20 74 68 65 20  returned by the 
18a60 52 45 50 4c 41 43 45 20 63 6f 6e 66 6c 69 63 74  REPLACE conflict
18a70 20 72 65 73 6f 6c 75 74 69 6f 6e 2e 0a 5e 49 66   resolution..^If
18a80 20 61 20 4e 4f 54 20 4e 55 4c 4c 20 63 6f 6e 73   a NOT NULL cons
18a90 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e  traint violation
18aa0 20 6f 63 63 75 72 73 2c 20 74 68 65 20 4e 55 4c   occurs, the NUL
18ab0 4c 20 76 61 6c 75 65 20 69 73 20 72 65 70 6c 61  L value is repla
18ac0 63 65 64 0a 62 79 20 74 68 65 20 64 65 66 61 75  ced.by the defau
18ad0 6c 74 20 76 61 6c 75 65 20 66 6f 72 20 74 68 61  lt value for tha
18ae0 74 20 63 6f 6c 75 6d 6e 2e 20 20 5e 49 66 20 74  t column.  ^If t
18af0 68 65 20 63 6f 6c 75 6d 6e 20 68 61 73 20 6e 6f  he column has no
18b00 20 64 65 66 61 75 6c 74 0a 76 61 6c 75 65 2c 20   default.value, 
18b10 74 68 65 6e 20 74 68 65 20 41 42 4f 52 54 20 61  then the ABORT a
18b20 6c 67 6f 72 69 74 68 6d 20 69 73 20 75 73 65 64  lgorithm is used
18b30 2e 20 20 5e 49 66 20 61 20 43 48 45 43 4b 20 63  .  ^If a CHECK c
18b40 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74  onstraint violat
18b50 69 6f 6e 0a 6f 63 63 75 72 73 20 74 68 65 6e 20  ion.occurs then 
18b60 74 68 65 20 49 47 4e 4f 52 45 20 61 6c 67 6f 72  the IGNORE algor
18b70 69 74 68 6d 20 69 73 20 75 73 65 64 2e 3c 2f 70  ithm is used.</p
18b80 3e 0a 0a 3c 70 3e 5e 57 68 65 6e 20 74 68 69 73  >..<p>^When this
18b90 20 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75   conflict resolu
18ba0 74 69 6f 6e 20 73 74 72 61 74 65 67 79 20 64 65  tion strategy de
18bb0 6c 65 74 65 73 20 72 6f 77 73 20 69 6e 20 6f 72  letes rows in or
18bc0 64 65 72 20 74 6f 0a 73 61 74 69 73 66 79 20 61  der to.satisfy a
18bd0 20 63 6f 6e 73 74 72 61 69 6e 74 2c 20 5b 43 52   constraint, [CR
18be0 45 41 54 45 20 54 52 49 47 47 45 52 20 7c 20 64  EATE TRIGGER | d
18bf0 65 6c 65 74 65 20 74 72 69 67 67 65 72 73 5d 20  elete triggers] 
18c00 6f 6e 6c 79 20 66 69 72 65 20 69 66 0a 5b 72 65  only fire if.[re
18c10 63 75 72 73 69 76 65 5f 74 72 69 67 67 65 72 73  cursive_triggers
18c20 20 70 72 61 67 6d 61 20 7c 20 72 65 63 75 72 73   pragma | recurs
18c30 69 76 65 20 74 72 69 67 67 65 72 73 5d 20 61 72  ive triggers] ar
18c40 65 20 65 6e 61 62 6c 65 64 2e 3c 2f 70 3e 0a 0a  e enabled.</p>..
18c50 3c 70 3e 5e 54 68 65 20 5b 73 71 6c 69 74 65 33  <p>^The [sqlite3
18c60 5f 75 70 64 61 74 65 5f 68 6f 6f 6b 20 7c 20 75  _update_hook | u
18c70 70 64 61 74 65 20 68 6f 6f 6b 5d 20 69 73 20 6e  pdate hook] is n
18c80 6f 74 20 69 6e 76 6f 6b 65 64 20 66 6f 72 20 72  ot invoked for r
18c90 6f 77 73 20 74 68 61 74 0a 61 72 65 20 64 65 6c  ows that.are del
18ca0 65 74 65 64 20 62 79 20 61 6e 20 4f 52 20 52 45  eted by an OR RE
18cb0 50 4c 41 43 45 20 72 65 73 6f 6c 75 74 69 6f 6e  PLACE resolution
18cc0 2e 20 20 5e 4e 6f 72 20 69 73 20 74 68 65 20 0a  .  ^Nor is the .
18cd0 5b 73 71 6c 69 74 65 33 5f 63 68 61 6e 67 65 73  [sqlite3_changes
18ce0 20 7c 20 63 68 61 6e 67 65 20 63 6f 75 6e 74 65   | change counte
18cf0 72 5d 20 69 6e 63 72 65 6d 65 6e 74 65 64 2e 0a  r] incremented..
18d00 54 68 65 20 65 78 63 65 70 74 69 6f 6e 61 6c 20  The exceptional 
18d10 62 65 68 61 76 69 6f 72 73 20 64 65 66 69 6e 65  behaviors define
18d20 64 20 69 6e 20 74 68 69 73 20 70 61 72 61 67 72  d in this paragr
18d30 61 70 68 20 6d 69 67 68 74 20 63 68 61 6e 67 65  aph might change
18d40 20 0a 69 6e 20 61 20 66 75 74 75 72 65 20 72 65   .in a future re
18d50 6c 65 61 73 65 2e 3c 2f 70 3e 0a 3c 2f 64 6c 3e  lease.</p>.</dl>
18d60 0a 0a 3c 70 3e 5e 54 68 65 20 61 6c 67 6f 72 69  ..<p>^The algori
18d70 74 68 6d 20 73 70 65 63 69 66 69 65 64 20 69 6e  thm specified in
18d80 20 74 68 65 20 4f 52 20 63 6c 61 75 73 65 20 6f   the OR clause o
18d90 66 20 61 20 49 4e 53 45 52 54 20 6f 72 20 55 50  f a INSERT or UP
18da0 44 41 54 45 0a 6f 76 65 72 72 69 64 65 73 20 61  DATE.overrides a
18db0 6e 79 20 61 6c 67 6f 72 69 74 68 6d 20 73 70 65  ny algorithm spe
18dc0 63 69 66 69 65 64 20 69 6e 20 61 20 43 52 45 41  cified in a CREA
18dd0 54 45 20 54 41 42 4c 45 2e 0a 5e 49 66 20 6e 6f  TE TABLE..^If no
18de0 20 61 6c 67 6f 72 69 74 68 6d 20 69 73 20 73 70   algorithm is sp
18df0 65 63 69 66 69 65 64 20 61 6e 79 77 68 65 72 65  ecified anywhere
18e00 2c 20 74 68 65 20 41 42 4f 52 54 20 61 6c 67 6f  , the ABORT algo
18e10 72 69 74 68 6d 20 69 73 20 75 73 65 64 2e 3c 2f  rithm is used.</
18e20 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23  p>..<tcl>.######
18e30 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18e40 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18e50 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18e60 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18e70 23 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e  ########.Section
18e80 20 52 45 49 4e 44 45 58 20 72 65 69 6e 64 65 78   REINDEX reindex
18e90 20 52 45 49 4e 44 45 58 0a 0a 42 75 62 62 6c 65   REINDEX..Bubble
18ea0 44 69 61 67 72 61 6d 20 72 65 69 6e 64 65 78 2d  Diagram reindex-
18eb0 73 74 6d 74 20 31 0a 3c 2f 74 63 6c 3e 0a 0a 3c  stmt 1.</tcl>..<
18ec0 70 3e 5e 54 68 65 20 52 45 49 4e 44 45 58 20 63  p>^The REINDEX c
18ed0 6f 6d 6d 61 6e 64 20 69 73 20 75 73 65 64 20 74  ommand is used t
18ee0 6f 20 64 65 6c 65 74 65 20 61 6e 64 20 72 65 63  o delete and rec
18ef0 72 65 61 74 65 20 69 6e 64 69 63 65 73 20 66 72  reate indices fr
18f00 6f 6d 20 73 63 72 61 74 63 68 2e 0a 54 68 69 73  om scratch..This
18f10 20 69 73 20 75 73 65 66 75 6c 20 77 68 65 6e 20   is useful when 
18f20 74 68 65 20 64 65 66 69 6e 69 74 69 6f 6e 20 6f  the definition o
18f30 66 20 61 20 63 6f 6c 6c 61 74 69 6f 6e 20 73 65  f a collation se
18f40 71 75 65 6e 63 65 20 68 61 73 20 63 68 61 6e 67  quence has chang
18f50 65 64 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 5e 49 6e  ed..</p>..<p>^In
18f60 20 74 68 65 20 66 69 72 73 74 20 66 6f 72 6d 2c   the first form,
18f70 20 61 6c 6c 20 69 6e 64 69 63 65 73 20 69 6e 20   all indices in 
18f80 61 6c 6c 20 61 74 74 61 63 68 65 64 20 64 61 74  all attached dat
18f90 61 62 61 73 65 73 20 74 68 61 74 20 75 73 65 20  abases that use 
18fa0 74 68 65 0a 6e 61 6d 65 64 20 63 6f 6c 6c 61 74  the.named collat
18fb0 69 6f 6e 20 73 65 71 75 65 6e 63 65 20 61 72 65  ion sequence are
18fc0 20 72 65 63 72 65 61 74 65 64 2e 20 5e 28 49 6e   recreated. ^(In
18fd0 20 74 68 65 20 73 65 63 6f 6e 64 20 66 6f 72 6d   the second form
18fe0 2c 20 69 66 20 0a 3c 69 3e 26 23 39 31 3b 64 61  , if .<i>&#91;da
18ff0 74 61 62 61 73 65 2d 6e 61 6d 65 2e 26 23 39 33  tabase-name.&#93
19000 3b 74 61 62 6c 65 2f 69 6e 64 65 78 2d 6e 61 6d  ;table/index-nam
19010 65 3c 2f 69 3e 20 69 64 65 6e 74 69 66 69 65 73  e</i> identifies
19020 20 61 20 74 61 62 6c 65 2c 0a 74 68 65 6e 20 61   a table,.then a
19030 6c 6c 20 69 6e 64 69 63 65 73 0a 61 73 73 6f 63  ll indices.assoc
19040 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20 74  iated with the t
19050 61 62 6c 65 20 61 72 65 20 72 65 62 75 69 6c 74  able are rebuilt
19060 2e 29 5e 20 5e 49 66 20 61 6e 20 69 6e 64 65 78  .)^ ^If an index
19070 20 69 73 20 69 64 65 6e 74 69 66 69 65 64 2c 20   is identified, 
19080 74 68 65 6e 20 6f 6e 6c 79 0a 74 68 69 73 20 73  then only.this s
19090 70 65 63 69 66 69 63 20 69 6e 64 65 78 20 69 73  pecific index is
190a0 20 64 65 6c 65 74 65 64 20 61 6e 64 20 72 65 63   deleted and rec
190b0 72 65 61 74 65 64 2e 0a 3c 2f 70 3e 0a 0a 3c 70  reated..</p>..<p
190c0 3e 5e 49 66 20 6e 6f 20 3c 69 3e 64 61 74 61 62  >^If no <i>datab
190d0 61 73 65 2d 6e 61 6d 65 3c 2f 69 3e 20 69 73 20  ase-name</i> is 
190e0 73 70 65 63 69 66 69 65 64 20 61 6e 64 20 74 68  specified and th
190f0 65 72 65 20 65 78 69 73 74 73 20 62 6f 74 68 20  ere exists both 
19100 61 20 74 61 62 6c 65 20 6f 72 0a 69 6e 64 65 78  a table or.index
19110 20 61 6e 64 20 61 20 63 6f 6c 6c 61 74 69 6f 6e   and a collation
19120 20 73 65 71 75 65 6e 63 65 20 6f 66 20 74 68 65   sequence of the
19130 20 73 70 65 63 69 66 69 65 64 20 6e 61 6d 65 2c   specified name,
19140 20 74 68 65 6e 20 69 6e 64 69 63 65 73 20 61 73   then indices as
19150 73 6f 63 69 61 74 65 64 0a 77 69 74 68 20 74 68  sociated.with th
19160 65 20 63 6f 6c 6c 61 74 69 6f 6e 20 73 65 71 75  e collation sequ
19170 65 6e 63 65 20 6f 6e 6c 79 20 61 72 65 20 72 65  ence only are re
19180 63 6f 6e 73 74 72 75 63 74 65 64 2e 20 54 68 69  constructed. Thi
19190 73 20 61 6d 62 69 67 75 69 74 79 20 6d 61 79 20  s ambiguity may 
191a0 62 65 0a 64 69 73 70 65 6c 6c 65 64 20 62 79 20  be.dispelled by 
191b0 61 6c 77 61 79 73 20 73 70 65 63 69 66 79 69 6e  always specifyin
191c0 67 20 61 20 3c 69 3e 64 61 74 61 62 61 73 65 2d  g a <i>database-
191d0 6e 61 6d 65 3c 2f 69 3e 20 77 68 65 6e 20 72 65  name</i> when re
191e0 69 6e 64 65 78 69 6e 67 20 61 0a 73 70 65 63 69  indexing a.speci
191f0 66 69 63 20 74 61 62 6c 65 20 6f 72 20 69 6e 64  fic table or ind
19200 65 78 2e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23  ex...<tcl>.#####
19210 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
19220 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
19230 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
19240 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
19250 23 23 23 23 23 23 23 23 23 23 0a 53 65 63 74 69  ##########.Secti
19260 6f 6e 20 52 45 50 4c 41 43 45 20 72 65 70 6c 61  on REPLACE repla
19270 63 65 20 52 45 50 4c 41 43 45 0a 0a 3c 2f 74 63  ce REPLACE..</tc
19280 6c 3e 0a 0a 3c 70 3e 5e 54 68 65 20 52 45 50 4c  l>..<p>^The REPL
19290 41 43 45 20 63 6f 6d 6d 61 6e 64 20 69 73 20 61  ACE command is a
192a0 6e 20 61 6c 69 61 73 20 66 6f 72 20 74 68 65 20  n alias for the 
192b0 22 5b 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 7c 20  "[ON CONFLICT | 
192c0 49 4e 53 45 52 54 20 4f 52 20 52 45 50 4c 41 43  INSERT OR REPLAC
192d0 45 5d 22 0a 76 61 72 69 61 6e 74 20 6f 66 20 74  E]".variant of t
192e0 68 65 20 5b 49 4e 53 45 52 54 5d 20 63 6f 6d 6d  he [INSERT] comm
192f0 61 6e 64 2e 20 20 0a 54 68 69 73 20 61 6c 69 61  and.  .This alia
19300 73 20 69 73 20 70 72 6f 76 69 64 65 64 20 66 6f  s is provided fo
19310 72 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20  r compatibility 
19320 6f 74 68 65 72 20 53 51 4c 20 64 61 74 61 62 61  other SQL databa
19330 73 65 20 65 6e 67 69 6e 65 73 2e 20 20 53 65 65  se engines.  See
19340 20 74 68 65 20 0a 5b 49 4e 53 45 52 54 5d 20 63   the .[INSERT] c
19350 6f 6d 6d 61 6e 64 20 64 6f 63 75 6d 65 6e 74 61  ommand documenta
19360 74 69 6f 6e 20 66 6f 72 20 61 64 64 69 74 69 6f  tion for additio
19370 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e  nal information.
19380 3c 2f 70 3e 20 20 0a 0a 3c 74 63 6c 3e 0a 23 23  </p>  ..<tcl>.##
19390 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
193a0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
193b0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
193c0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
193d0 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 53 65  #############.Se
193e0 63 74 69 6f 6e 20 53 45 4c 45 43 54 20 73 65 6c  ction SELECT sel
193f0 65 63 74 20 7b 53 45 4c 45 43 54 20 71 75 65 72  ect {SELECT quer
19400 79 7d 0a 0a 42 75 62 62 6c 65 44 69 61 67 72 61  y}..BubbleDiagra
19410 6d 20 73 65 6c 65 63 74 2d 73 74 6d 74 20 31 0a  m select-stmt 1.
19420 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 73 65  BubbleDiagram se
19430 6c 65 63 74 2d 63 6f 72 65 0a 42 75 62 62 6c 65  lect-core.Bubble
19440 44 69 61 67 72 61 6d 20 72 65 73 75 6c 74 2d 63  Diagram result-c
19450 6f 6c 75 6d 6e 0a 42 75 62 62 6c 65 44 69 61 67  olumn.BubbleDiag
19460 72 61 6d 20 6a 6f 69 6e 2d 73 6f 75 72 63 65 0a  ram join-source.
19470 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 73 69  BubbleDiagram si
19480 6e 67 6c 65 2d 73 6f 75 72 63 65 0a 42 75 62 62  ngle-source.Bubb
19490 6c 65 44 69 61 67 72 61 6d 20 6a 6f 69 6e 2d 6f  leDiagram join-o
194a0 70 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20  p.BubbleDiagram 
194b0 6a 6f 69 6e 2d 63 6f 6e 73 74 72 61 69 6e 74 0a  join-constraint.
194c0 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 6f 72  BubbleDiagram or
194d0 64 65 72 69 6e 67 2d 74 65 72 6d 0a 42 75 62 62  dering-term.Bubb
194e0 6c 65 44 69 61 67 72 61 6d 20 63 6f 6d 70 6f 75  leDiagram compou
194f0 6e 64 2d 6f 70 65 72 61 74 6f 72 0a 3c 2f 74 63  nd-operator.</tc
19500 6c 3e 0a 0a 3c 70 3e 54 68 65 20 53 45 4c 45 43  l>..<p>The SELEC
19510 54 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 75  T statement is u
19520 73 65 64 20 74 6f 20 71 75 65 72 79 20 74 68 65  sed to query the
19530 20 64 61 74 61 62 61 73 65 2e 20 20 5e 54 68 65   database.  ^The
19540 0a 72 65 73 75 6c 74 20 6f 66 20 61 20 53 45 4c  .result of a SEL
19550 45 43 54 20 69 73 20 7a 65 72 6f 20 6f 72 20 6d  ECT is zero or m
19560 6f 72 65 20 72 6f 77 73 20 6f 66 20 64 61 74 61  ore rows of data
19570 20 77 68 65 72 65 20 65 61 63 68 20 72 6f 77 0a   where each row.
19580 68 61 73 20 61 20 66 69 78 65 64 20 6e 75 6d 62  has a fixed numb
19590 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 2e 20 20  er of columns.  
195a0 5e 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 63  ^The number of c
195b0 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65 0a 72 65  olumns in the.re
195c0 73 75 6c 74 20 69 73 20 73 70 65 63 69 66 69 65  sult is specifie
195d0 64 20 62 79 20 74 68 65 20 65 78 70 72 65 73 73  d by the express
195e0 69 6f 6e 20 6c 69 73 74 20 69 6e 20 62 65 74 77  ion list in betw
195f0 65 65 6e 20 74 68 65 0a 53 45 4c 45 43 54 20 61  een the.SELECT a
19600 6e 64 20 46 52 4f 4d 20 6b 65 79 77 6f 72 64 73  nd FROM keywords
19610 2e 20 20 5e 41 6e 79 20 61 72 62 69 74 72 61 72  .  ^Any arbitrar
19620 79 20 65 78 70 72 65 73 73 69 6f 6e 20 63 61 6e  y expression can
19630 20 62 65 20 75 73 65 64 0a 61 73 20 61 20 72 65   be used.as a re
19640 73 75 6c 74 2e 20 20 5e 49 66 20 61 20 72 65 73  sult.  ^If a res
19650 75 6c 74 20 65 78 70 72 65 73 73 69 6f 6e 20 69  ult expression i
19660 73 20 7d 0a 68 64 5f 70 75 74 73 20 22 5b 4f 70  s }.hd_puts "[Op
19670 65 72 61 74 6f 72 20 2a 5d 20 74 68 65 6e 20 61  erator *] then a
19680 6c 6c 20 63 6f 6c 75 6d 6e 73 20 6f 66 20 61 6c  ll columns of al
19690 6c 20 74 61 62 6c 65 73 20 61 72 65 20 73 75 62  l tables are sub
196a0 73 74 69 74 75 74 65 64 5c 6e 22 0a 68 64 5f 70  stituted\n".hd_p
196b0 75 74 73 20 22 66 6f 72 20 74 68 61 74 20 6f 6e  uts "for that on
196c0 65 20 65 78 70 72 65 73 73 69 6f 6e 2e 20 20 5e  e expression.  ^
196d0 28 49 66 20 74 68 65 20 65 78 70 72 65 73 73 69  (If the expressi
196e0 6f 6e 20 69 73 20 74 68 65 20 6e 61 6d 65 20 6f  on is the name o
196f0 66 5c 6e 22 0a 68 64 5f 70 75 74 73 20 22 61 20  f\n".hd_puts "a 
19700 74 61 62 6c 65 20 66 6f 6c 6c 6f 77 65 64 20 62  table followed b
19710 79 20 5b 4f 70 65 72 61 74 6f 72 20 2e 2a 5d 20  y [Operator .*] 
19720 74 68 65 6e 20 74 68 65 20 72 65 73 75 6c 74 20  then the result 
19730 69 73 20 61 6c 6c 20 63 6f 6c 75 6d 6e 73 5c 6e  is all columns\n
19740 22 0a 68 64 5f 70 75 74 73 20 7b 69 6e 20 74 68  ".hd_puts {in th
19750 61 74 20 6f 6e 65 20 74 61 62 6c 65 2e 3c 2f 70  at one table.</p
19760 3e 29 5e 0a 0a 3c 70 3e 5e 54 68 65 20 44 49 53  >)^..<p>^The DIS
19770 54 49 4e 43 54 20 6b 65 79 77 6f 72 64 20 63 61  TINCT keyword ca
19780 75 73 65 73 20 61 20 73 75 62 73 65 74 20 6f 66  uses a subset of
19790 20 72 65 73 75 6c 74 20 72 6f 77 73 20 74 6f 20   result rows to 
197a0 62 65 20 72 65 74 75 72 6e 65 64 2c 20 0a 69 6e  be returned, .in
197b0 20 77 68 69 63 68 20 65 61 63 68 20 72 65 73 75   which each resu
197c0 6c 74 20 72 6f 77 20 69 73 20 64 69 66 66 65 72  lt row is differ
197d0 65 6e 74 2e 20 20 5e 4e 55 4c 4c 20 76 61 6c 75  ent.  ^NULL valu
197e0 65 73 20 61 72 65 20 6e 6f 74 20 74 72 65 61 74  es are not treat
197f0 65 64 20 61 73 20 0a 64 69 73 74 69 6e 63 74 20  ed as .distinct 
19800 66 72 6f 6d 20 65 61 63 68 20 6f 74 68 65 72 2e  from each other.
19810 20 20 5e 54 68 65 20 64 65 66 61 75 6c 74 20 62    ^The default b
19820 65 68 61 76 69 6f 72 20 69 73 20 74 68 61 74 20  ehavior is that 
19830 61 6c 6c 20 72 65 73 75 6c 74 20 72 6f 77 73 20  all result rows 
19840 0a 62 65 20 72 65 74 75 72 6e 65 64 2c 20 77 68  .be returned, wh
19850 69 63 68 20 63 61 6e 20 62 65 20 6d 61 64 65 20  ich can be made 
19860 65 78 70 6c 69 63 69 74 20 77 69 74 68 20 74 68  explicit with th
19870 65 20 6b 65 79 77 6f 72 64 20 41 4c 4c 2e 3c 2f  e keyword ALL.</
19880 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20 71 75 65 72  p>..<p>^The quer
19890 79 20 69 73 20 65 78 65 63 75 74 65 64 20 61 67  y is executed ag
198a0 61 69 6e 73 74 20 6f 6e 65 20 6f 72 20 6d 6f 72  ainst one or mor
198b0 65 20 74 61 62 6c 65 73 20 73 70 65 63 69 66 69  e tables specifi
198c0 65 64 20 61 66 74 65 72 0a 74 68 65 20 46 52 4f  ed after.the FRO
198d0 4d 20 6b 65 79 77 6f 72 64 2e 20 20 5e 49 66 20  M keyword.  ^If 
198e0 6d 75 6c 74 69 70 6c 65 20 74 61 62 6c 65 73 20  multiple tables 
198f0 6e 61 6d 65 73 20 61 72 65 20 73 65 70 61 72 61  names are separa
19900 74 65 64 20 62 79 20 63 6f 6d 6d 61 73 2c 0a 74  ted by commas,.t
19910 68 65 6e 20 74 68 65 20 71 75 65 72 79 20 69 73  hen the query is
19920 20 61 67 61 69 6e 73 74 20 74 68 65 20 63 72 6f   against the cro
19930 73 73 20 6a 6f 69 6e 20 6f 66 20 74 68 65 20 76  ss join of the v
19940 61 72 69 6f 75 73 20 74 61 62 6c 65 73 2e 0a 5e  arious tables..^
19950 54 68 65 20 66 75 6c 6c 20 53 51 4c 2d 39 32 20  The full SQL-92 
19960 6a 6f 69 6e 20 73 79 6e 74 61 78 20 63 61 6e 20  join syntax can 
19970 61 6c 73 6f 20 62 65 20 75 73 65 64 20 74 6f 20  also be used to 
19980 73 70 65 63 69 66 79 20 6a 6f 69 6e 73 2e 0a 5e  specify joins..^
19990 41 20 73 75 62 2d 71 75 65 72 79 0a 69 6e 20 70  A sub-query.in p
199a0 61 72 65 6e 74 68 65 73 65 73 20 6d 61 79 20 62  arentheses may b
199b0 65 20 73 75 62 73 74 69 74 75 74 65 64 20 66 6f  e substituted fo
199c0 72 20 61 6e 79 20 74 61 62 6c 65 20 6e 61 6d 65  r any table name
199d0 20 69 6e 20 74 68 65 20 46 52 4f 4d 20 63 6c 61   in the FROM cla
199e0 75 73 65 2e 0a 5e 54 68 65 20 65 6e 74 69 72 65  use..^The entire
199f0 20 46 52 4f 4d 20 63 6c 61 75 73 65 20 6d 61 79   FROM clause may
19a00 20 62 65 20 6f 6d 69 74 74 65 64 2c 20 69 6e 20   be omitted, in 
19a10 77 68 69 63 68 20 63 61 73 65 20 74 68 65 20 72  which case the r
19a20 65 73 75 6c 74 20 69 73 20 61 0a 73 69 6e 67 6c  esult is a.singl
19a30 65 20 72 6f 77 20 63 6f 6e 73 69 73 74 69 6e 67  e row consisting
19a40 20 6f 66 20 74 68 65 20 76 61 6c 75 65 73 20 6f   of the values o
19a50 66 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e  f the expression
19a60 20 6c 69 73 74 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e   list..</p>..<p>
19a70 5e 54 68 65 20 57 48 45 52 45 20 63 6c 61 75 73  ^The WHERE claus
19a80 65 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f  e can be used to
19a90 20 6c 69 6d 69 74 20 74 68 65 20 6e 75 6d 62 65   limit the numbe
19aa0 72 20 6f 66 20 72 6f 77 73 20 6f 76 65 72 0a 77  r of rows over.w
19ab0 68 69 63 68 20 74 68 65 20 71 75 65 72 79 20 6f  hich the query o
19ac0 70 65 72 61 74 65 73 2e 3c 2f 70 3e 0a 0a 3c 70  perates.</p>..<p
19ad0 3e 5e 54 68 65 20 47 52 4f 55 50 20 42 59 20 63  >^The GROUP BY c
19ae0 6c 61 75 73 65 20 63 61 75 73 65 73 20 6f 6e 65  lause causes one
19af0 20 6f 72 20 6d 6f 72 65 20 72 6f 77 73 20 6f 66   or more rows of
19b00 20 74 68 65 20 72 65 73 75 6c 74 20 74 6f 0a 62   the result to.b
19b10 65 20 63 6f 6d 62 69 6e 65 64 20 69 6e 74 6f 20  e combined into 
19b20 61 20 73 69 6e 67 6c 65 20 72 6f 77 20 6f 66 20  a single row of 
19b30 6f 75 74 70 75 74 2e 20 20 54 68 69 73 20 69 73  output.  This is
19b40 20 65 73 70 65 63 69 61 6c 6c 79 20 75 73 65 66   especially usef
19b50 75 6c 0a 77 68 65 6e 20 74 68 65 20 72 65 73 75  ul.when the resu
19b60 6c 74 20 63 6f 6e 74 61 69 6e 73 20 61 67 67 72  lt contains aggr
19b70 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 73 2e  egate functions.
19b80 20 20 5e 54 68 65 20 65 78 70 72 65 73 73 69 6f    ^The expressio
19b90 6e 73 20 69 6e 0a 74 68 65 20 47 52 4f 55 50 20  ns in.the GROUP 
19ba0 42 59 20 63 6c 61 75 73 65 20 64 6f 20 3c 65 6d  BY clause do <em
19bb0 3e 6e 6f 74 3c 2f 65 6d 3e 20 68 61 76 65 20 74  >not</em> have t
19bc0 6f 20 62 65 20 65 78 70 72 65 73 73 69 6f 6e 73  o be expressions
19bd0 20 74 68 61 74 0a 61 70 70 65 61 72 20 69 6e 20   that.appear in 
19be0 74 68 65 20 72 65 73 75 6c 74 2e 20 20 5e 54 68  the result.  ^Th
19bf0 65 20 48 41 56 49 4e 47 20 63 6c 61 75 73 65 20  e HAVING clause 
19c00 69 73 20 73 69 6d 69 6c 61 72 20 74 6f 20 57 48  is similar to WH
19c10 45 52 45 20 65 78 63 65 70 74 0a 74 68 61 74 20  ERE except.that 
19c20 48 41 56 49 4e 47 20 61 70 70 6c 69 65 73 20 61  HAVING applies a
19c30 66 74 65 72 20 67 72 6f 75 70 69 6e 67 20 68 61  fter grouping ha
19c40 73 20 6f 63 63 75 72 72 65 64 2e 20 20 5e 54 68  s occurred.  ^Th
19c50 65 20 48 41 56 49 4e 47 20 65 78 70 72 65 73 73  e HAVING express
19c60 69 6f 6e 0a 6d 61 79 20 72 65 66 65 72 20 74 6f  ion.may refer to
19c70 20 76 61 6c 75 65 73 2c 20 65 76 65 6e 20 61 67   values, even ag
19c80 67 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e  gregate function
19c90 73 2c 20 74 68 61 74 20 61 72 65 20 6e 6f 74 20  s, that are not 
19ca0 69 6e 20 74 68 65 20 72 65 73 75 6c 74 2e 3c 2f  in the result.</
19cb0 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20 4f 52 44 45  p>..<p>^The ORDE
19cc0 52 20 42 59 20 63 6c 61 75 73 65 20 63 61 75 73  R BY clause caus
19cd0 65 73 20 74 68 65 20 6f 75 74 70 75 74 20 72 6f  es the output ro
19ce0 77 73 20 74 6f 20 62 65 20 73 6f 72 74 65 64 2e  ws to be sorted.
19cf0 20 20 0a 5e 54 68 65 20 61 72 67 75 6d 65 6e 74    .^The argument
19d00 20 74 6f 20 4f 52 44 45 52 20 42 59 20 69 73 20   to ORDER BY is 
19d10 61 20 6c 69 73 74 20 6f 66 20 65 78 70 72 65 73  a list of expres
19d20 73 69 6f 6e 73 20 74 68 61 74 20 61 72 65 20 75  sions that are u
19d30 73 65 64 20 61 73 20 74 68 65 0a 6b 65 79 20 66  sed as the.key f
19d40 6f 72 20 74 68 65 20 73 6f 72 74 2e 20 20 5e 54  or the sort.  ^T
19d50 68 65 20 65 78 70 72 65 73 73 69 6f 6e 73 20 64  he expressions d
19d60 6f 20 6e 6f 74 20 68 61 76 65 20 74 6f 20 62 65  o not have to be
19d70 20 70 61 72 74 20 6f 66 20 74 68 65 0a 72 65 73   part of the.res
19d80 75 6c 74 20 66 6f 72 20 61 20 73 69 6d 70 6c 65  ult for a simple
19d90 20 53 45 4c 45 43 54 2c 20 62 75 74 20 69 6e 20   SELECT, but in 
19da0 61 20 63 6f 6d 70 6f 75 6e 64 20 53 45 4c 45 43  a compound SELEC
19db0 54 20 65 61 63 68 20 73 6f 72 74 0a 65 78 70 72  T each sort.expr
19dc0 65 73 73 69 6f 6e 20 6d 75 73 74 20 65 78 61 63  ession must exac
19dd0 74 6c 79 20 6d 61 74 63 68 20 6f 6e 65 20 6f 66  tly match one of
19de0 20 74 68 65 20 72 65 73 75 6c 74 20 63 6f 6c 75   the result colu
19df0 6d 6e 73 2e 20 20 5e 45 61 63 68 0a 73 6f 72 74  mns.  ^Each.sort
19e00 20 65 78 70 72 65 73 73 69 6f 6e 20 6d 61 79 20   expression may 
19e10 62 65 20 6f 70 74 69 6f 6e 61 6c 6c 79 20 66 6f  be optionally fo
19e20 6c 6c 6f 77 65 64 20 62 79 20 61 20 43 4f 4c 4c  llowed by a COLL
19e30 41 54 45 20 6b 65 79 77 6f 72 64 20 61 6e 64 0a  ATE keyword and.
19e40 74 68 65 20 6e 61 6d 65 20 6f 66 20 61 20 63 6f  the name of a co
19e50 6c 6c 61 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e  llating function
19e60 20 75 73 65 64 20 66 6f 72 20 6f 72 64 65 72 69   used for orderi
19e70 6e 67 20 74 65 78 74 20 61 6e 64 2f 6f 72 0a 6b  ng text and/or.k
19e80 65 79 77 6f 72 64 73 20 41 53 43 20 6f 72 20 44  eywords ASC or D
19e90 45 53 43 20 74 6f 20 73 70 65 63 69 66 79 20 74  ESC to specify t
19ea0 68 65 20 73 6f 72 74 20 6f 72 64 65 72 2e 3c 2f  he sort order.</
19eb0 70 3e 0a 0a 3c 70 3e 45 61 63 68 20 74 65 72 6d  p>..<p>Each term
19ec0 20 6f 66 20 61 6e 20 4f 52 44 45 52 20 42 59 20   of an ORDER BY 
19ed0 65 78 70 72 65 73 73 69 6f 6e 20 69 73 20 70 72  expression is pr
19ee0 6f 63 65 73 73 65 64 20 61 73 20 66 6f 6c 6c 6f  ocessed as follo
19ef0 77 73 3a 3c 2f 70 3e 0a 0a 3c 6f 6c 3e 0a 3c 6c  ws:</p>..<ol>.<l
19f00 69 3e 3c 70 3e 5e 49 66 20 74 68 65 20 4f 52 44  i><p>^If the ORD
19f10 45 52 20 42 59 20 65 78 70 72 65 73 73 69 6f 6e  ER BY expression
19f20 20 69 73 20 61 20 63 6f 6e 73 74 61 6e 74 20 69   is a constant i
19f30 6e 74 65 67 65 72 20 4b 20 74 68 65 6e 20 74 68  nteger K then th
19f40 65 0a 6f 75 74 70 75 74 20 69 73 20 6f 72 64 65  e.output is orde
19f50 72 65 64 20 62 79 20 74 68 65 20 4b 2d 74 68 20  red by the K-th 
19f60 63 6f 6c 75 6d 6e 20 6f 66 20 74 68 65 20 72 65  column of the re
19f70 73 75 6c 74 20 73 65 74 2e 3c 2f 70 3e 3c 2f 6c  sult set.</p></l
19f80 69 3e 0a 3c 6c 69 3e 3c 70 3e 5e 49 66 20 74 68  i>.<li><p>^If th
19f90 65 20 4f 52 44 45 52 20 42 59 20 65 78 70 72 65  e ORDER BY expre
19fa0 73 73 69 6f 6e 20 69 73 20 61 6e 20 69 64 65 6e  ssion is an iden
19fb0 74 69 66 69 65 72 20 61 6e 64 20 6f 6e 65 20 6f  tifier and one o
19fc0 66 20 74 68 65 0a 6f 75 74 70 75 74 20 63 6f 6c  f the.output col
19fd0 75 6d 6e 73 20 68 61 73 20 61 6e 20 61 6c 69 61  umns has an alia
19fe0 73 20 62 79 20 74 68 65 20 73 61 6d 65 20 6e 61  s by the same na
19ff0 6d 65 2c 20 74 68 65 6e 20 74 68 65 20 6f 75 74  me, then the out
1a000 70 75 74 20 69 73 0a 6f 72 64 65 72 65 64 20 62  put is.ordered b
1a010 79 20 74 68 65 20 69 64 65 6e 74 69 66 69 65 64  y the identified
1a020 20 63 6f 6c 75 6d 6e 2e 3c 2f 70 3e 3c 2f 6c 69   column.</p></li
1a030 3e 0a 3c 6c 69 3e 3c 70 3e 5e 4f 74 68 65 72 77  >.<li><p>^Otherw
1a040 69 73 65 2c 20 74 68 65 20 4f 52 44 45 52 20 42  ise, the ORDER B
1a050 59 20 65 78 70 72 65 73 73 69 6f 6e 20 69 73 20  Y expression is 
1a060 65 76 61 6c 75 61 74 65 64 20 61 6e 64 20 74 68  evaluated and th
1a070 65 20 6f 75 74 70 75 74 20 0a 69 73 20 6f 72 64  e output .is ord
1a080 65 72 65 64 20 62 79 20 74 68 65 20 76 61 6c 75  ered by the valu
1a090 65 20 6f 66 20 74 68 61 74 20 65 78 70 72 65 73  e of that expres
1a0a0 73 69 6f 6e 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a 3c  sion.</p></li>.<
1a0b0 2f 6f 6c 3e 0a 0a 3c 70 3e 5e 49 6e 20 61 20 63  /ol>..<p>^In a c
1a0c0 6f 6d 70 6f 75 6e 64 20 53 45 4c 45 43 54 20 73  ompound SELECT s
1a0d0 74 61 74 65 6d 65 6e 74 2c 20 74 68 65 20 74 68  tatement, the th
1a0e0 69 72 64 20 4f 52 44 45 52 20 42 59 20 6d 61 74  ird ORDER BY mat
1a0f0 63 68 69 6e 67 20 72 75 6c 65 0a 72 65 71 75 69  ching rule.requi
1a100 72 65 73 20 74 68 61 74 20 74 68 65 20 65 78 70  res that the exp
1a110 72 65 73 73 69 6f 6e 20 62 65 20 69 64 65 6e 74  ression be ident
1a120 69 63 61 6c 20 74 6f 20 6f 6e 65 20 6f 66 20 74  ical to one of t
1a130 68 65 20 63 6f 6c 75 6d 6e 73 20 69 6e 0a 74 68  he columns in.th
1a140 65 20 72 65 73 75 6c 74 20 73 65 74 2e 20 20 5e  e result set.  ^
1a150 28 54 68 65 20 74 68 72 65 65 20 72 75 6c 65 73  (The three rules
1a160 20 61 72 65 20 66 69 72 73 74 20 61 70 70 6c 69   are first appli
1a170 65 64 20 74 6f 20 74 68 65 20 6c 65 66 74 2d 6d  ed to the left-m
1a180 6f 73 74 0a 53 45 4c 45 43 54 20 69 6e 20 74 68  ost.SELECT in th
1a190 65 20 63 6f 6d 70 6f 75 6e 64 2e 20 20 49 66 20  e compound.  If 
1a1a0 61 20 6d 61 74 63 68 20 69 73 20 66 6f 75 6e 64  a match is found
1a1b0 2c 20 74 68 65 20 73 65 61 72 63 68 20 73 74 6f  , the search sto
1a1c0 70 73 2e 20 20 4f 74 68 65 72 77 69 73 65 2c 0a  ps.  Otherwise,.
1a1d0 74 68 65 20 6e 65 78 74 20 53 45 4c 45 43 54 20  the next SELECT 
1a1e0 74 6f 20 74 68 65 20 72 69 67 68 74 20 69 73 20  to the right is 
1a1f0 74 72 69 65 64 2e 20 20 54 68 69 73 20 63 6f 6e  tried.  This con
1a200 74 69 6e 75 65 73 20 75 6e 74 69 6c 20 61 20 6d  tinues until a m
1a210 61 74 63 68 0a 69 73 20 66 6f 75 6e 64 2e 29 5e  atch.is found.)^
1a220 20 20 5e 45 61 63 68 20 74 65 72 6d 20 6f 66 20    ^Each term of 
1a230 74 68 65 20 4f 52 44 45 52 20 42 59 20 63 6c 61  the ORDER BY cla
1a240 75 73 65 20 69 73 20 70 72 6f 63 65 73 73 65 64  use is processed
1a250 20 73 65 70 61 72 61 74 65 6c 79 20 0a 61 6e 64   separately .and
1a260 20 6d 61 79 20 63 6f 6d 65 20 66 72 6f 6d 20 64   may come from d
1a270 69 66 66 65 72 65 6e 74 20 53 45 4c 45 43 54 20  ifferent SELECT 
1a280 73 74 61 74 65 6d 65 6e 74 73 20 69 6e 20 74 68  statements in th
1a290 65 20 63 6f 6d 70 6f 75 6e 64 2e 3c 2f 70 3e 0a  e compound.</p>.
1a2a0 0a 3c 70 3e 5e 54 68 65 20 4c 49 4d 49 54 20 63  .<p>^The LIMIT c
1a2b0 6c 61 75 73 65 20 70 6c 61 63 65 73 20 61 6e 20  lause places an 
1a2c0 75 70 70 65 72 20 62 6f 75 6e 64 20 6f 6e 20 74  upper bound on t
1a2d0 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 72 6f 77  he number of row
1a2e0 73 0a 72 65 74 75 72 6e 65 64 20 69 6e 20 74 68  s.returned in th
1a2f0 65 20 72 65 73 75 6c 74 2e 20 20 5e 41 20 6e 65  e result.  ^A ne
1a300 67 61 74 69 76 65 20 4c 49 4d 49 54 20 69 6e 64  gative LIMIT ind
1a310 69 63 61 74 65 73 20 6e 6f 20 75 70 70 65 72 20  icates no upper 
1a320 62 6f 75 6e 64 2e 0a 5e 54 68 65 20 6f 70 74 69  bound..^The opti
1a330 6f 6e 61 6c 20 4f 46 46 53 45 54 20 66 6f 6c 6c  onal OFFSET foll
1a340 6f 77 69 6e 67 20 4c 49 4d 49 54 20 73 70 65 63  owing LIMIT spec
1a350 69 66 69 65 73 20 68 6f 77 20 6d 61 6e 79 0a 72  ifies how many.r
1a360 6f 77 73 20 74 6f 20 73 6b 69 70 20 61 74 20 74  ows to skip at t
1a370 68 65 20 62 65 67 69 6e 6e 69 6e 67 20 6f 66 20  he beginning of 
1a380 74 68 65 20 72 65 73 75 6c 74 20 73 65 74 2e 0a  the result set..
1a390 5e 49 6e 20 61 20 63 6f 6d 70 6f 75 6e 64 20 71  ^In a compound q
1a3a0 75 65 72 79 2c 20 74 68 65 20 4c 49 4d 49 54 20  uery, the LIMIT 
1a3b0 63 6c 61 75 73 65 20 6d 61 79 20 6f 6e 6c 79 20  clause may only 
1a3c0 61 70 70 65 61 72 20 6f 6e 20 74 68 65 0a 66 69  appear on the.fi
1a3d0 6e 61 6c 20 53 45 4c 45 43 54 20 73 74 61 74 65  nal SELECT state
1a3e0 6d 65 6e 74 2e 0a 5e 54 68 65 20 6c 69 6d 69 74  ment..^The limit
1a3f0 20 69 73 20 61 70 70 6c 69 65 64 20 74 6f 20 74   is applied to t
1a400 68 65 20 65 6e 74 69 72 65 20 71 75 65 72 79 20  he entire query 
1a410 6e 6f 74 0a 74 6f 20 74 68 65 20 69 6e 64 69 76  not.to the indiv
1a420 69 64 75 61 6c 20 53 45 4c 45 43 54 20 73 74 61  idual SELECT sta
1a430 74 65 6d 65 6e 74 20 74 6f 20 77 68 69 63 68 20  tement to which 
1a440 69 74 20 69 73 20 61 74 74 61 63 68 65 64 2e 0a  it is attached..
1a450 5e 4e 6f 74 65 20 74 68 61 74 20 69 66 20 74 68  ^Note that if th
1a460 65 20 4f 46 46 53 45 54 20 6b 65 79 77 6f 72 64  e OFFSET keyword
1a470 20 69 73 20 75 73 65 64 20 69 6e 20 74 68 65 20   is used in the 
1a480 4c 49 4d 49 54 20 63 6c 61 75 73 65 2c 20 74 68  LIMIT clause, th
1a490 65 6e 20 74 68 65 0a 6c 69 6d 69 74 20 69 73 20  en the.limit is 
1a4a0 74 68 65 20 66 69 72 73 74 20 6e 75 6d 62 65 72  the first number
1a4b0 20 61 6e 64 20 74 68 65 20 6f 66 66 73 65 74 20   and the offset 
1a4c0 69 73 20 74 68 65 20 73 65 63 6f 6e 64 20 6e 75  is the second nu
1a4d0 6d 62 65 72 2e 20 20 5e 49 66 20 61 0a 63 6f 6d  mber.  ^If a.com
1a4e0 6d 61 20 69 73 20 75 73 65 64 20 69 6e 73 74 65  ma is used inste
1a4f0 61 64 20 6f 66 20 74 68 65 20 4f 46 46 53 45 54  ad of the OFFSET
1a500 20 6b 65 79 77 6f 72 64 2c 20 74 68 65 6e 20 74   keyword, then t
1a510 68 65 20 6f 66 66 73 65 74 20 69 73 20 74 68 65  he offset is the
1a520 0a 66 69 72 73 74 20 6e 75 6d 62 65 72 20 61 6e  .first number an
1a530 64 20 74 68 65 20 6c 69 6d 69 74 20 69 73 20 74  d the limit is t
1a540 68 65 20 73 65 63 6f 6e 64 20 6e 75 6d 62 65 72  he second number
1a550 2e 20 20 54 68 69 73 20 73 65 65 6d 69 6e 67 0a  .  This seeming.
1a560 63 6f 6e 74 72 61 64 69 74 69 6f 6e 20 69 73 20  contradition is 
1a570 69 6e 74 65 6e 74 69 6f 6e 61 6c 20 2d 20 69 74  intentional - it
1a580 20 6d 61 78 69 6d 69 7a 65 73 20 63 6f 6d 70 61   maximizes compa
1a590 74 69 62 69 6c 69 74 79 20 77 69 74 68 20 6c 65  tibility with le
1a5a0 67 61 63 79 0a 53 51 4c 20 64 61 74 61 62 61 73  gacy.SQL databas
1a5b0 65 20 73 79 73 74 65 6d 73 2e 0a 3c 2f 70 3e 0a  e systems..</p>.
1a5c0 0a 3c 70 3e 5e 41 20 63 6f 6d 70 6f 75 6e 64 20  .<p>^A compound 
1a5d0 53 45 4c 45 43 54 20 69 73 20 66 6f 72 6d 65 64  SELECT is formed
1a5e0 20 66 72 6f 6d 20 74 77 6f 20 6f 72 20 6d 6f 72   from two or mor
1a5f0 65 20 73 69 6d 70 6c 65 20 53 45 4c 45 43 54 73  e simple SELECTs
1a600 20 63 6f 6e 6e 65 63 74 65 64 0a 62 79 20 6f 6e   connected.by on
1a610 65 20 6f 66 20 74 68 65 20 6f 70 65 72 61 74 6f  e of the operato
1a620 72 73 20 55 4e 49 4f 4e 2c 20 55 4e 49 4f 4e 20  rs UNION, UNION 
1a630 41 4c 4c 2c 20 49 4e 54 45 52 53 45 43 54 2c 20  ALL, INTERSECT, 
1a640 6f 72 20 45 58 43 45 50 54 2e 20 20 5e 49 6e 0a  or EXCEPT.  ^In.
1a650 61 20 63 6f 6d 70 6f 75 6e 64 20 53 45 4c 45 43  a compound SELEC
1a660 54 2c 20 61 6c 6c 20 74 68 65 20 63 6f 6e 73 74  T, all the const
1a670 69 74 75 65 6e 74 20 53 45 4c 45 43 54 73 20 6d  ituent SELECTs m
1a680 75 73 74 20 73 70 65 63 69 66 79 20 74 68 65 0a  ust specify the.
1a690 73 61 6d 65 20 6e 75 6d 62 65 72 20 6f 66 20 72  same number of r
1a6a0 65 73 75 6c 74 20 63 6f 6c 75 6d 6e 73 2e 20 20  esult columns.  
1a6b0 5e 54 68 65 72 65 20 6d 61 79 20 62 65 20 6f 6e  ^There may be on
1a6c0 6c 79 20 61 20 73 69 6e 67 6c 65 20 4f 52 44 45  ly a single ORDE
1a6d0 52 20 42 59 0a 63 6c 61 75 73 65 20 61 74 20 74  R BY.clause at t
1a6e0 68 65 20 65 6e 64 20 6f 66 20 74 68 65 20 63 6f  he end of the co
1a6f0 6d 70 6f 75 6e 64 20 53 45 4c 45 43 54 2e 20 20  mpound SELECT.  
1a700 5e 54 68 65 20 55 4e 49 4f 4e 20 61 6e 64 20 55  ^The UNION and U
1a710 4e 49 4f 4e 20 41 4c 4c 0a 6f 70 65 72 61 74 6f  NION ALL.operato
1a720 72 73 20 63 6f 6d 62 69 6e 65 20 74 68 65 20 72  rs combine the r
1a730 65 73 75 6c 74 73 20 6f 66 20 74 68 65 20 53 45  esults of the SE
1a740 4c 45 43 54 73 20 74 6f 20 74 68 65 20 72 69 67  LECTs to the rig
1a750 68 74 20 61 6e 64 20 6c 65 66 74 20 69 6e 74 6f  ht and left into
1a760 0a 61 20 73 69 6e 67 6c 65 20 62 69 67 20 74 61  .a single big ta
1a770 62 6c 65 2e 20 20 5e 54 68 65 20 64 69 66 66 65  ble.  ^The diffe
1a780 72 65 6e 63 65 20 69 73 20 74 68 61 74 20 69 6e  rence is that in
1a790 20 55 4e 49 4f 4e 20 61 6c 6c 20 72 65 73 75 6c   UNION all resul
1a7a0 74 20 72 6f 77 73 0a 61 72 65 20 64 69 73 74 69  t rows.are disti
1a7b0 6e 63 74 20 77 68 65 72 65 20 69 6e 20 55 4e 49  nct where in UNI
1a7c0 4f 4e 20 41 4c 4c 20 74 68 65 72 65 20 6d 61 79  ON ALL there may
1a7d0 20 62 65 20 64 75 70 6c 69 63 61 74 65 73 2e 0a   be duplicates..
1a7e0 5e 54 68 65 20 49 4e 54 45 52 53 45 43 54 20 6f  ^The INTERSECT o
1a7f0 70 65 72 61 74 6f 72 20 74 61 6b 65 73 20 74 68  perator takes th
1a800 65 20 69 6e 74 65 72 73 65 63 74 69 6f 6e 20 6f  e intersection o
1a810 66 20 74 68 65 20 72 65 73 75 6c 74 73 20 6f 66  f the results of
1a820 20 74 68 65 0a 6c 65 66 74 20 61 6e 64 20 72 69   the.left and ri
1a830 67 68 74 20 53 45 4c 45 43 54 73 2e 20 20 5e 45  ght SELECTs.  ^E
1a840 58 43 45 50 54 20 74 61 6b 65 73 20 74 68 65 20  XCEPT takes the 
1a850 72 65 73 75 6c 74 20 6f 66 20 6c 65 66 74 20 53  result of left S
1a860 45 4c 45 43 54 20 61 66 74 65 72 0a 72 65 6d 6f  ELECT after.remo
1a870 76 69 6e 67 20 74 68 65 20 72 65 73 75 6c 74 73  ving the results
1a880 20 6f 66 20 74 68 65 20 72 69 67 68 74 20 53 45   of the right SE
1a890 4c 45 43 54 2e 20 20 5e 57 68 65 6e 20 74 68 72  LECT.  ^When thr
1a8a0 65 65 20 6f 72 20 6d 6f 72 65 20 53 45 4c 45 43  ee or more SELEC
1a8b0 54 73 0a 61 72 65 20 63 6f 6e 6e 65 63 74 65 64  Ts.are connected
1a8c0 20 69 6e 74 6f 20 61 20 63 6f 6d 70 6f 75 6e 64   into a compound
1a8d0 2c 20 74 68 65 79 20 67 72 6f 75 70 20 66 72 6f  , they group fro
1a8e0 6d 20 6c 65 66 74 20 74 6f 20 72 69 67 68 74 2e  m left to right.
1a8f0 3c 2f 70 3e 0a 0a 0a 3c 74 63 6c 3e 0a 23 23 23  </p>...<tcl>.###
1a900 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1a910 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1a920 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1a930 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1a940 23 23 23 23 23 23 23 23 23 23 23 0a 53 65 63 74  ###########.Sect
1a950 69 6f 6e 20 55 50 44 41 54 45 20 75 70 64 61 74  ion UPDATE updat
1a960 65 20 7b 55 50 44 41 54 45 20 2a 55 50 44 41 54  e {UPDATE *UPDAT
1a970 45 73 7d 0a 0a 42 75 62 62 6c 65 44 69 61 67 72  Es}..BubbleDiagr
1a980 61 6d 20 75 70 64 61 74 65 2d 73 74 6d 74 20 31  am update-stmt 1
1a990 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 71  .BubbleDiagram q
1a9a0 75 61 6c 69 66 69 65 64 2d 74 61 62 6c 65 2d 6e  ualified-table-n
1a9b0 61 6d 65 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 5e  ame.</tcl>..<p>^
1a9c0 54 68 65 20 55 50 44 41 54 45 20 73 74 61 74 65  The UPDATE state
1a9d0 6d 65 6e 74 20 69 73 20 75 73 65 64 20 74 6f 20  ment is used to 
1a9e0 63 68 61 6e 67 65 20 74 68 65 20 76 61 6c 75 65  change the value
1a9f0 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 0a   of columns in .
1aa00 73 65 6c 65 63 74 65 64 20 72 6f 77 73 20 6f 66  selected rows of
1aa10 20 61 20 74 61 62 6c 65 2e 20 20 5e 45 61 63 68   a table.  ^Each
1aa20 20 61 73 73 69 67 6e 6d 65 6e 74 20 69 6e 20 61   assignment in a
1aa30 6e 20 55 50 44 41 54 45 20 73 70 65 63 69 66 69  n UPDATE specifi
1aa40 65 73 0a 61 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65  es.a column name
1aa50 20 74 6f 20 74 68 65 20 6c 65 66 74 20 6f 66 20   to the left of 
1aa60 74 68 65 20 65 71 75 61 6c 73 20 73 69 67 6e 20  the equals sign 
1aa70 61 6e 64 20 61 6e 20 61 72 62 69 74 72 61 72 79  and an arbitrary
1aa80 20 65 78 70 72 65 73 73 69 6f 6e 0a 74 6f 20 74   expression.to t
1aa90 68 65 20 72 69 67 68 74 2e 20 20 5e 54 68 65 20  he right.  ^The 
1aaa0 65 78 70 72 65 73 73 69 6f 6e 73 20 6d 61 79 20  expressions may 
1aab0 75 73 65 20 74 68 65 20 76 61 6c 75 65 73 20 6f  use the values o
1aac0 66 20 6f 74 68 65 72 20 63 6f 6c 75 6d 6e 73 2e  f other columns.
1aad0 0a 5e 41 6c 6c 20 65 78 70 72 65 73 73 69 6f 6e  .^All expression
1aae0 73 20 61 72 65 20 65 76 61 6c 75 61 74 65 64 20  s are evaluated 
1aaf0 62 65 66 6f 72 65 20 61 6e 79 20 61 73 73 69 67  before any assig
1ab00 6e 6d 65 6e 74 73 20 61 72 65 20 6d 61 64 65 2e  nments are made.
1ab10 0a 5e 41 20 57 48 45 52 45 20 63 6c 61 75 73 65  .^A WHERE clause
1ab20 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20   can be used to 
1ab30 72 65 73 74 72 69 63 74 20 77 68 69 63 68 20 72  restrict which r
1ab40 6f 77 73 20 61 72 65 20 75 70 64 61 74 65 64 2e  ows are updated.
1ab50 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20 6f 70  </p>..<p>^The op
1ab60 74 69 6f 6e 61 6c 20 63 6f 6e 66 6c 69 63 74 2d  tional conflict-
1ab70 63 6c 61 75 73 65 20 61 6c 6c 6f 77 73 20 74 68  clause allows th
1ab80 65 20 73 70 65 63 69 66 69 63 61 74 69 6f 6e 20  e specification 
1ab90 6f 66 20 61 6e 20 61 6c 74 65 72 6e 61 74 69 76  of an alternativ
1aba0 65 0a 63 6f 6e 73 74 72 61 69 6e 74 20 63 6f 6e  e.constraint con
1abb0 66 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e  flict resolution
1abc0 20 61 6c 67 6f 72 69 74 68 6d 20 74 6f 20 75 73   algorithm to us
1abd0 65 20 64 75 72 69 6e 67 20 74 68 69 73 20 6f 6e  e during this on
1abe0 65 20 55 50 44 41 54 45 20 63 6f 6d 6d 61 6e 64  e UPDATE command
1abf0 2e 0a 53 65 65 20 74 68 65 20 73 65 63 74 69 6f  ..See the sectio
1ac00 6e 20 74 69 74 6c 65 64 0a 5b 4f 4e 20 43 4f 4e  n titled.[ON CON
1ac10 46 4c 49 43 54 5d 20 66 6f 72 20 61 64 64 69 74  FLICT] for addit
1ac20 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f  ional informatio
1ac30 6e 2e 3c 2f 70 3e 0a 0a 3c 68 33 3e 52 65 73 74  n.</p>..<h3>Rest
1ac40 72 69 63 74 69 6f 6e 73 20 6f 6e 20 55 50 44 41  rictions on UPDA
1ac50 54 45 20 53 74 61 74 65 6d 65 6e 74 73 20 57 69  TE Statements Wi
1ac60 74 68 69 6e 20 43 52 45 41 54 45 20 54 52 49 47  thin CREATE TRIG
1ac70 47 45 52 3c 2f 68 33 3e 0a 0a 3c 70 3e 5e 54 68  GER</h3>..<p>^Th
1ac80 65 72 65 20 61 72 65 20 61 64 64 69 74 69 6f 6e  ere are addition
1ac90 61 6c 20 73 79 6e 74 61 78 20 72 65 73 74 72 69  al syntax restri
1aca0 63 74 69 6f 6e 73 20 6f 6e 20 55 50 44 41 54 45  ctions on UPDATE
1acb0 20 73 74 61 74 65 6d 65 6e 74 73 20 74 68 61 74   statements that
1acc0 0a 6f 63 63 75 72 20 77 69 74 68 69 6e 20 74 68  .occur within th
1acd0 65 20 62 6f 64 79 20 6f 66 20 61 20 5b 43 52 45  e body of a [CRE
1ace0 41 54 45 20 54 52 49 47 47 45 52 5d 20 73 74 61  ATE TRIGGER] sta
1acf0 74 65 6d 65 6e 74 2e 20 20 5e 54 68 65 20 3c 69  tement.  ^The <i
1ad00 3e 74 61 62 6c 65 2d 6e 61 6d 65 3c 2f 69 3e 0a  >table-name</i>.
1ad10 6f 66 20 74 68 65 20 55 50 44 41 54 45 20 6d 75  of the UPDATE mu
1ad20 73 74 20 62 65 20 75 6e 71 75 61 6c 69 66 69 65  st be unqualifie
1ad30 64 2e 20 0a 5e 28 49 6e 20 6f 74 68 65 72 20 77  d. .^(In other w
1ad40 6f 72 64 73 2c 20 74 68 65 20 3c 69 3e 64 61 74  ords, the <i>dat
1ad50 61 62 61 73 65 2d 6e 61 6d 65 3c 2f 69 3e 3c 62  abase-name</i><b
1ad60 3e 2e 3c 2f 62 3e 20 70 72 65 66 69 78 20 0a 6f  >.</b> prefix .o
1ad70 6e 20 74 68 65 20 74 61 62 6c 65 20 6e 61 6d 65  n the table name
1ad80 20 6f 66 20 74 68 65 20 55 50 44 41 54 45 20 69   of the UPDATE i
1ad90 73 20 6e 6f 74 20 61 6c 6c 6f 77 65 64 20 77 69  s not allowed wi
1ada0 74 68 69 6e 20 74 72 69 67 67 65 72 73 2e 29 5e  thin triggers.)^
1adb0 0a 5e 54 68 65 20 74 61 62 6c 65 20 74 6f 20 62  .^The table to b
1adc0 65 20 75 70 64 61 74 65 64 20 6d 75 73 74 20 62  e updated must b
1add0 65 20 69 6e 20 74 68 65 20 73 61 6d 65 0a 64 61  e in the same.da
1ade0 74 61 62 61 73 65 20 61 73 20 74 68 65 20 74 61  tabase as the ta
1adf0 62 6c 65 20 74 6f 20 77 68 69 63 68 20 74 68 65  ble to which the
1ae00 20 74 72 69 67 67 65 72 20 69 73 20 61 74 74 61   trigger is atta
1ae10 63 68 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54  ched.</p>..<p>^T
1ae20 68 65 20 49 4e 44 45 58 45 44 20 42 59 20 61 6e  he INDEXED BY an
1ae30 64 20 4e 4f 54 20 49 4e 44 45 58 45 44 20 63 6c  d NOT INDEXED cl
1ae40 61 75 73 65 73 20 61 72 65 20 6e 6f 74 20 61 6c  auses are not al
1ae50 6c 6f 77 65 64 20 6f 6e 20 55 50 44 41 54 45 0a  lowed on UPDATE.
1ae60 73 74 61 74 65 6d 65 6e 74 73 20 77 69 74 68 69  statements withi
1ae70 6e 20 74 72 69 67 67 65 72 73 2e 3c 2f 70 3e 0a  n triggers.</p>.
1ae80 0a 3c 70 3e 5e 54 68 65 20 4c 49 4d 49 54 20 63  .<p>^The LIMIT c
1ae90 6c 61 75 73 65 20 66 6f 72 20 55 50 44 41 54 45  lause for UPDATE
1aea0 20 69 73 20 75 6e 73 75 70 70 6f 72 74 65 64 20   is unsupported 
1aeb0 77 69 74 68 69 6e 20 74 72 69 67 67 65 72 73 2e  within triggers.
1aec0 3c 2f 70 3e 0a 0a 3c 68 33 3e 4f 70 74 69 6f 6e  </p>..<h3>Option
1aed0 61 6c 20 4c 49 4d 49 54 20 61 6e 64 20 4f 52 44  al LIMIT and ORD
1aee0 45 52 20 42 59 20 43 6c 61 75 73 65 73 3c 2f 68  ER BY Clauses</h
1aef0 33 3e 0a 0a 3c 70 3e 5e 28 49 66 20 53 51 4c 69  3>..<p>^(If SQLi
1af00 74 65 20 69 73 20 62 75 69 6c 74 20 77 69 74 68  te is built with
1af10 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 45 4e 41   the [SQLITE_ENA
1af20 42 4c 45 5f 55 50 44 41 54 45 5f 44 45 4c 45 54  BLE_UPDATE_DELET
1af30 45 5f 4c 49 4d 49 54 5d 0a 63 6f 6d 70 69 6c 65  E_LIMIT].compile
1af40 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 74 68 65  -time option the
1af50 6e 20 74 68 65 20 73 79 6e 74 61 78 20 6f 66 20  n the syntax of 
1af60 74 68 65 20 55 50 44 41 54 45 20 73 74 61 74 65  the UPDATE state
1af70 6d 65 6e 74 20 69 73 20 65 78 74 65 6e 64 65 64  ment is extended
1af80 0a 77 69 74 68 20 6f 70 74 69 6f 6e 61 6c 20 4f  .with optional O
1af90 52 44 45 52 20 42 59 20 61 6e 64 20 4c 49 4d 49  RDER BY and LIMI
1afa0 54 20 63 6c 61 75 73 65 73 29 5e 20 61 73 20 66  T clauses)^ as f
1afb0 6f 6c 6c 6f 77 73 3a 3c 2f 70 3e 0a 0a 3c 74 63  ollows:</p>..<tc
1afc0 6c 3e 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20  l>BubbleDiagram 
1afd0 75 70 64 61 74 65 2d 73 74 6d 74 2d 6c 69 6d 69  update-stmt-limi
1afe0 74 65 64 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 5e 54  ted</tcl>..<p>^T
1aff0 68 65 20 6f 70 74 69 6f 6e 61 6c 20 4c 49 4d 49  he optional LIMI
1b000 54 20 63 6c 61 75 73 65 20 63 61 6e 20 62 65 20  T clause can be 
1b010 75 73 65 64 20 74 6f 20 6c 69 6d 69 74 20 74 68  used to limit th
1b020 65 20 6e 75 6d 62 65 72 20 6f 66 0a 72 6f 77 73  e number of.rows
1b030 20 6d 6f 64 69 66 65 64 2c 20 61 6e 64 20 74 68   modifed, and th
1b040 65 72 65 62 79 20 6c 69 6d 69 74 20 74 68 65 20  ereby limit the 
1b050 73 69 7a 65 20 6f 66 20 74 68 65 20 74 72 61 6e  size of the tran
1b060 73 61 63 74 69 6f 6e 2e 0a 5e 54 68 65 20 4f 52  saction..^The OR
1b070 44 45 52 20 42 59 20 63 6c 61 75 73 65 20 6f 6e  DER BY clause on
1b080 20 61 6e 20 55 50 44 41 54 45 20 73 74 61 74 65   an UPDATE state
1b090 6d 65 6e 74 0a 69 73 20 75 73 65 64 20 6f 6e 6c  ment.is used onl
1b0a0 79 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 77  y to determine w
1b0b0 68 69 63 68 20 72 6f 77 73 20 66 61 6c 6c 0a 77  hich rows fall.w
1b0c0 69 74 68 69 6e 20 74 68 65 20 4c 49 4d 49 54 2e  ithin the LIMIT.
1b0d0 20 20 5e 54 68 65 20 6f 72 64 65 72 20 69 6e 20    ^The order in 
1b0e0 77 68 69 63 68 20 72 6f 77 73 20 61 72 65 20 6d  which rows are m
1b0f0 6f 64 69 66 69 65 64 20 69 73 20 61 72 62 69 74  odified is arbit
1b100 72 61 72 79 0a 61 6e 64 20 69 73 20 6e 6f 74 20  rary.and is not 
1b110 64 65 74 65 72 6d 69 6e 65 64 20 62 79 20 74 68  determined by th
1b120 65 20 4f 52 44 45 52 20 42 59 20 63 6c 61 75 73  e ORDER BY claus
1b130 65 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23  e.</p>..<tcl>.##
1b140 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1b150 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1b160 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1b170 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1b180 23 23 23 23 23 23 23 23 23 23 23 23 0a 53 65 63  ############.Sec
1b190 74 69 6f 6e 20 56 41 43 55 55 4d 20 76 61 63 75  tion VACUUM vacu
1b1a0 75 6d 20 56 41 43 55 55 4d 0a 0a 42 75 62 62 6c  um VACUUM..Bubbl
1b1b0 65 44 69 61 67 72 61 6d 20 76 61 63 75 75 6d 2d  eDiagram vacuum-
1b1c0 73 74 6d 74 20 31 0a 3c 2f 74 63 6c 3e 0a 0a 3c  stmt 1.</tcl>..<
1b1d0 70 3e 5e 57 68 65 6e 20 61 6e 20 6f 62 6a 65 63  p>^When an objec
1b1e0 74 20 28 74 61 62 6c 65 2c 20 69 6e 64 65 78 2c  t (table, index,
1b1f0 20 74 72 69 67 67 65 72 2c 20 6f 72 20 76 69 65   trigger, or vie
1b200 77 29 20 69 73 20 64 72 6f 70 70 65 64 20 66 72  w) is dropped fr
1b210 6f 6d 20 74 68 65 20 0a 64 61 74 61 62 61 73 65  om the .database
1b220 2c 20 69 74 20 6c 65 61 76 65 73 20 62 65 68 69  , it leaves behi
1b230 6e 64 20 65 6d 70 74 79 20 73 70 61 63 65 2e 20  nd empty space. 
1b240 0a 5e 54 68 69 73 20 65 6d 70 74 79 20 73 70 61  .^This empty spa
1b250 63 65 20 77 69 6c 6c 20 62 65 20 72 65 75 73 65  ce will be reuse
1b260 64 20 74 68 65 20 6e 65 78 74 20 74 69 6d 65 20  d the next time 
1b270 6e 65 77 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20  new information 
1b280 69 73 0a 61 64 64 65 64 20 74 6f 20 74 68 65 20  is.added to the 
1b290 64 61 74 61 62 61 73 65 2e 20 20 42 75 74 20 69  database.  But i
1b2a0 6e 20 74 68 65 20 6d 65 61 6e 74 69 6d 65 2c 20  n the meantime, 
1b2b0 74 68 65 20 64 61 74 61 62 61 73 65 20 66 69 6c  the database fil
1b2c0 65 20 6d 69 67 68 74 0a 62 65 20 6c 61 72 67 65  e might.be large
1b2d0 72 20 74 68 61 6e 20 73 74 72 69 63 74 6c 79 20  r than strictly 
1b2e0 6e 65 63 65 73 73 61 72 79 2e 20 20 41 6c 73 6f  necessary.  Also
1b2f0 2c 20 66 72 65 71 75 65 6e 74 20 69 6e 73 65 72  , frequent inser
1b300 74 73 2c 20 75 70 64 61 74 65 73 2c 0a 61 6e 64  ts, updates,.and
1b310 20 64 65 6c 65 74 65 73 20 63 61 6e 20 63 61 75   deletes can cau
1b320 73 65 20 74 68 65 20 69 6e 66 6f 72 6d 61 74 69  se the informati
1b330 6f 6e 20 69 6e 20 74 68 65 20 64 61 74 61 62 61  on in the databa
1b340 73 65 20 74 6f 20 62 65 63 6f 6d 65 0a 66 72 61  se to become.fra
1b350 67 6d 65 6e 74 65 64 20 2d 20 73 63 72 61 74 74  gmented - scratt
1b360 65 72 65 64 20 6f 75 74 20 61 6c 6c 20 61 63 72  ered out all acr
1b370 6f 73 73 20 74 68 65 20 64 61 74 61 62 61 73 65  oss the database
1b380 20 66 69 6c 65 20 72 61 74 68 65 72 0a 74 68 61   file rather.tha
1b390 6e 20 63 6c 75 73 74 65 72 65 64 20 74 6f 67 65  n clustered toge
1b3a0 74 68 65 72 20 69 6e 20 6f 6e 65 20 70 6c 61 63  ther in one plac
1b3b0 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20  e.</p>..<p>^The 
1b3c0 56 41 43 55 55 4d 20 63 6f 6d 6d 61 6e 64 20 63  VACUUM command c
1b3d0 6c 65 61 6e 73 0a 74 68 65 20 6d 61 69 6e 20 64  leans.the main d
1b3e0 61 74 61 62 61 73 65 20 62 79 20 63 6f 70 79 69  atabase by copyi
1b3f0 6e 67 20 69 74 73 20 63 6f 6e 74 65 6e 74 73 20  ng its contents 
1b400 74 6f 20 61 20 74 65 6d 70 6f 72 61 72 79 20 64  to a temporary d
1b410 61 74 61 62 61 73 65 20 66 69 6c 65 20 61 6e 64  atabase file and
1b420 20 0a 72 65 6c 6f 61 64 69 6e 67 20 74 68 65 20   .reloading the 
1b430 6f 72 69 67 69 6e 61 6c 20 64 61 74 61 62 61 73  original databas
1b440 65 20 66 69 6c 65 20 66 72 6f 6d 20 74 68 65 20  e file from the 
1b450 63 6f 70 79 2e 20 20 54 68 69 73 20 65 6c 69 6d  copy.  This elim
1b460 69 6e 61 74 65 73 20 0a 66 72 65 65 20 70 61 67  inates .free pag
1b470 65 73 2c 20 20 61 6c 69 67 6e 73 20 74 61 62 6c  es,  aligns tabl
1b480 65 20 64 61 74 61 20 74 6f 20 62 65 20 63 6f 6e  e data to be con
1b490 74 69 67 75 6f 75 73 2c 20 61 6e 64 20 6f 74 68  tiguous, and oth
1b4a0 65 72 77 69 73 65 20 63 6c 65 61 6e 73 20 0a 75  erwise cleans .u
1b4b0 70 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66  p the database f
1b4c0 69 6c 65 20 73 74 72 75 63 74 75 72 65 2e 3c 2f  ile structure.</
1b4d0 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20 56 41 43 55  p>..<p>^The VACU
1b4e0 55 4d 20 63 6f 6d 6d 61 6e 64 20 6d 61 79 20 63  UM command may c
1b4f0 68 61 6e 67 65 20 74 68 65 20 0a 5b 52 4f 57 49  hange the .[ROWI
1b500 44 20 7c 20 52 4f 57 49 44 73 5d 20 6f 66 20 65  D | ROWIDs] of e
1b510 6e 74 72 69 65 73 20 69 6e 20 74 61 62 6c 65 73  ntries in tables
1b520 20 74 68 61 74 20 64 6f 0a 6e 6f 74 20 68 61 76   that do.not hav
1b530 65 20 61 6e 20 65 78 70 6c 69 63 69 74 20 5b 49  e an explicit [I
1b540 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b  NTEGER PRIMARY K
1b550 45 59 5d 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 56 41  EY].</p>..<p>^VA
1b560 43 55 55 4d 20 6f 6e 6c 79 20 77 6f 72 6b 73 20  CUUM only works 
1b570 6f 6e 20 74 68 65 20 6d 61 69 6e 20 64 61 74 61  on the main data
1b580 62 61 73 65 2e 0a 49 74 20 69 73 20 6e 6f 74 20  base..It is not 
1b590 70 6f 73 73 69 62 6c 65 20 74 6f 20 56 41 43 55  possible to VACU
1b5a0 55 4d 20 61 6e 20 61 74 74 61 63 68 65 64 20 64  UM an attached d
1b5b0 61 74 61 62 61 73 65 20 66 69 6c 65 2e 3c 2f 70  atabase file.</p
1b5c0 3e 0a 0a 3c 70 3e 5e 54 68 65 20 56 41 43 55 55  >..<p>^The VACUU
1b5d0 4d 20 63 6f 6d 6d 61 6e 64 20 77 69 6c 6c 20 66  M command will f
1b5e0 61 69 6c 20 69 66 20 74 68 65 72 65 20 69 73 20  ail if there is 
1b5f0 61 6e 20 61 63 74 69 76 65 20 74 72 61 6e 73 61  an active transa
1b600 63 74 69 6f 6e 2e 0a 5e 54 68 65 20 56 41 43 55  ction..^The VACU
1b610 55 4d 20 63 6f 6d 6d 61 6e 64 20 69 73 20 61 20  UM command is a 
1b620 6e 6f 2d 6f 70 20 66 6f 72 20 69 6e 2d 6d 65 6d  no-op for in-mem
1b630 6f 72 79 20 64 61 74 61 62 61 73 65 73 2e 3c 2f  ory databases.</
1b640 70 3e 0a 0a 3c 70 3e 5e 28 41 73 20 6f 66 20 53  p>..<p>^(As of S
1b650 51 4c 69 74 65 20 76 65 72 73 69 6f 6e 20 33 2e  QLite version 3.
1b660 31 2c 20 61 6e 20 61 6c 74 65 72 6e 61 74 69 76  1, an alternativ
1b670 65 20 74 6f 20 75 73 69 6e 67 20 74 68 65 20 56  e to using the V
1b680 41 43 55 55 4d 20 63 6f 6d 6d 61 6e 64 0a 69 73  ACUUM command.is
1b690 20 61 75 74 6f 2d 76 61 63 75 75 6d 20 6d 6f 64   auto-vacuum mod
1b6a0 65 2c 20 65 6e 61 62 6c 65 64 20 75 73 69 6e 67  e, enabled using
1b6b0 20 74 68 65 20 0a 5b 61 75 74 6f 5f 76 61 63 75   the .[auto_vacu
1b6c0 75 6d 5d 20 70 72 61 67 6d 61 2e 29 5e 20 20 5e  um] pragma.)^  ^
1b6d0 57 68 65 6e 20 5b 61 75 74 6f 5f 76 61 63 75 75  When [auto_vacuu
1b6e0 6d 5d 20 69 73 20 65 6e 61 62 6c 65 64 20 66 6f  m] is enabled fo
1b6f0 72 20 61 20 64 61 74 61 62 61 73 65 2c 20 0a 6c  r a database, .l
1b700 61 72 67 65 20 64 65 6c 65 74 65 73 20 63 61 75  arge deletes cau
1b710 73 65 0a 74 68 65 20 73 69 7a 65 20 6f 66 20 74  se.the size of t
1b720 68 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  he database file
1b730 20 74 6f 20 73 68 72 69 6e 6b 2e 20 20 48 6f 77   to shrink.  How
1b740 65 76 65 72 2c 20 5b 61 75 74 6f 5f 76 61 63 75  ever, [auto_vacu
1b750 75 6d 5d 0a 61 6c 73 6f 20 63 61 75 73 65 73 20  um].also causes 
1b760 65 78 63 65 73 73 20 66 72 61 67 6d 65 6e 74 61  excess fragmenta
1b770 74 69 6f 6e 20 6f 66 20 74 68 65 20 64 61 74 61  tion of the data
1b780 62 61 73 65 20 66 69 6c 65 2e 20 20 5e 41 6e 64  base file.  ^And
1b790 20 5b 61 75 74 6f 5f 76 61 63 75 75 6d 5d 0a 64   [auto_vacuum].d
1b7a0 6f 65 73 20 6e 6f 74 20 63 6f 6d 70 61 63 74 20  oes not compact 
1b7b0 70 61 72 74 69 61 6c 6c 79 20 66 69 6c 6c 65 64  partially filled
1b7c0 20 70 61 67 65 73 20 6f 66 20 74 68 65 20 64 61   pages of the da
1b7d0 74 61 62 61 73 65 20 61 73 20 56 41 43 55 55 4d  tabase as VACUUM
1b7e0 0a 64 6f 65 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e  .does.</p>..<p>^
1b7f0 54 68 65 20 5b 70 61 67 65 5f 73 69 7a 65 5d 20  The [page_size] 
1b800 61 6e 64 2f 6f 72 20 5b 61 75 74 6f 5f 76 61 63  and/or [auto_vac
1b810 75 75 6d 5d 20 6d 6f 64 65 20 6f 66 20 61 20 64  uum] mode of a d
1b820 61 74 61 62 61 73 65 20 63 61 6e 20 62 65 20 63  atabase can be c
1b830 68 61 6e 67 65 64 0a 62 79 20 69 6e 76 6f 6b 69  hanged.by invoki
1b840 6e 67 20 74 68 65 20 5b 70 61 67 65 5f 73 69 7a  ng the [page_siz
1b850 65 20 70 72 61 67 6d 61 5d 20 61 6e 64 2f 6f 72  e pragma] and/or
1b860 20 5b 61 75 74 6f 5f 76 61 63 75 75 6d 20 70 72   [auto_vacuum pr
1b870 61 67 6d 61 5d 20 61 6e 64 20 74 68 65 6e 0a 69  agma] and then.i
1b880 6d 6d 65 64 69 61 74 65 6c 79 20 56 41 43 55 55  mmediately VACUU
1b890 4d 69 6e 67 20 74 68 65 20 64 61 74 61 62 61 73  Ming the databas
1b8a0 65 2e 20 5e 45 78 63 65 70 74 2c 20 74 68 65 20  e. ^Except, the 
1b8b0 70 61 67 65 20 73 69 7a 65 20 63 61 6e 6e 6f 74  page size cannot
1b8c0 20 62 65 0a 63 68 61 6e 67 65 64 20 77 68 65 6e   be.changed when
1b8d0 20 5b 77 72 69 74 65 2d 61 68 65 61 64 20 6c 6f   [write-ahead lo
1b8e0 67 5d 20 6d 6f 64 65 20 69 73 20 69 6e 20 75 73  g] mode is in us
1b8f0 65 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23  e.</p>..<tcl>.##
1b900 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1b910 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1b920 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1b930 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1b940 23 23 23 23 23 23 23 23 23 23 23 23 0a 53 65 63  ############.Sec
1b950 74 69 6f 6e 20 7b 49 4e 44 45 58 45 44 20 42 59  tion {INDEXED BY
1b960 7d 20 69 6e 64 65 78 65 64 62 79 20 7b 7b 49 4e  } indexedby {{IN
1b970 44 45 58 45 44 20 42 59 7d 20 7b 4e 4f 54 20 49  DEXED BY} {NOT I
1b980 4e 44 45 58 45 44 7d 7d 0a 0a 3c 2f 74 63 6c 3e  NDEXED}}..</tcl>
1b990 0a 3c 70 3e 5e 54 68 65 20 49 4e 44 45 58 45 44  .<p>^The INDEXED
1b9a0 20 42 59 20 70 68 72 61 73 65 20 69 73 20 61 20   BY phrase is a 
1b9b0 53 51 4c 20 65 78 74 65 6e 73 69 6f 6e 20 66 6f  SQL extension fo
1b9c0 75 6e 64 20 6f 6e 6c 79 20 69 6e 20 53 51 4c 69  und only in SQLi
1b9d0 74 65 20 77 68 69 63 68 20 63 61 6e 0a 62 65 20  te which can.be 
1b9e0 75 73 65 64 20 74 6f 20 76 65 72 69 66 79 20 74  used to verify t
1b9f0 68 61 74 20 74 68 65 20 63 6f 72 72 65 63 74 20  hat the correct 
1ba00 69 6e 64 69 63 65 73 20 61 72 65 20 62 65 69 6e  indices are bein
1ba10 67 20 75 73 65 64 20 6f 6e 20 61 20 5b 44 45 4c  g used on a [DEL
1ba20 45 54 45 5d 2c 0a 5b 53 45 4c 45 43 54 5d 2c 20  ETE],.[SELECT], 
1ba30 6f 72 20 5b 55 50 44 41 54 45 5d 20 73 74 61 74  or [UPDATE] stat
1ba40 65 6d 65 6e 74 2e 0a 5e 54 68 65 20 49 4e 44 45  ement..^The INDE
1ba50 58 45 44 20 42 59 20 70 68 72 61 73 65 20 61 6c  XED BY phrase al
1ba60 77 61 79 73 20 66 6f 6c 6c 6f 77 73 20 74 68 65  ways follows the
1ba70 20 6e 61 6d 65 20 6f 66 20 61 20 74 61 62 6c 65   name of a table
1ba80 20 74 68 61 74 20 53 51 4c 69 74 65 20 77 69 6c   that SQLite wil
1ba90 6c 0a 62 65 20 72 65 61 64 69 6e 67 2e 20 20 54  l.be reading.  T
1baa0 68 65 20 49 4e 44 45 58 45 44 20 42 59 20 70 68  he INDEXED BY ph
1bab0 72 61 73 65 20 63 61 6e 20 62 65 20 73 65 65 6e  rase can be seen
1bac0 20 69 6e 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e   in the followin
1bad0 67 20 73 79 6e 74 61 78 0a 64 69 61 67 72 61 6d  g syntax.diagram
1bae0 73 3a 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 42 75  s:</p>..<tcl>.Bu
1baf0 62 62 6c 65 44 69 61 67 72 61 6d 20 71 75 61 6c  bbleDiagram qual
1bb00 69 66 69 65 64 2d 74 61 62 6c 65 2d 6e 61 6d 65  ified-table-name
1bb10 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 73  .BubbleDiagram s
1bb20 69 6e 67 6c 65 2d 73 6f 75 72 63 65 0a 3c 2f 74  ingle-source.</t
1bb30 63 6c 3e 0a 0a 3c 70 3e 5e 54 68 65 20 22 49 4e  cl>..<p>^The "IN
1bb40 44 45 58 45 44 20 42 59 20 69 6e 64 65 78 2d 6e  DEXED BY index-n
1bb50 61 6d 65 22 20 63 6c 61 75 73 65 20 73 70 65 63  ame" clause spec
1bb60 69 66 69 65 73 20 74 68 61 74 20 74 68 65 20 6e  ifies that the n
1bb70 61 6d 65 64 20 69 6e 64 65 78 0a 6d 75 73 74 20  amed index.must 
1bb80 62 65 20 75 73 65 64 20 69 6e 20 6f 72 64 65 72  be used in order
1bb90 20 74 6f 20 6c 6f 6f 6b 20 75 70 20 76 61 6c 75   to look up valu
1bba0 65 73 20 6f 6e 20 74 68 65 20 70 72 65 63 65 64  es on the preced
1bbb0 69 6e 67 20 74 61 62 6c 65 2e 0a 5e 49 66 20 69  ing table..^If i
1bbc0 6e 64 65 78 2d 6e 61 6d 65 20 64 6f 65 73 20 6e  ndex-name does n
1bbd0 6f 74 20 65 78 69 73 74 20 6f 72 20 63 61 6e 6e  ot exist or cann
1bbe0 6f 74 20 62 65 20 75 73 65 64 20 66 6f 72 20 74  ot be used for t
1bbf0 68 65 20 71 75 65 72 79 2c 20 74 68 65 6e 0a 74  he query, then.t
1bc00 68 65 20 70 72 65 70 61 72 61 74 69 6f 6e 20 6f  he preparation o
1bc10 66 20 74 68 65 20 53 51 4c 20 73 74 61 74 65 6d  f the SQL statem
1bc20 65 6e 74 20 66 61 69 6c 73 2e 0a 5e 28 54 68 65  ent fails..^(The
1bc30 20 22 4e 4f 54 20 49 4e 44 45 58 45 44 22 20 63   "NOT INDEXED" c
1bc40 6c 61 75 73 65 20 73 70 65 63 69 66 69 65 73 20  lause specifies 
1bc50 74 68 61 74 20 6e 6f 20 69 6e 64 65 78 20 73 68  that no index sh
1bc60 61 6c 6c 20 62 65 20 75 73 65 64 20 77 68 65 6e  all be used when
1bc70 0a 61 63 63 65 73 73 69 6e 67 20 74 68 65 20 70  .accessing the p
1bc80 72 65 63 65 64 69 6e 67 20 74 61 62 6c 65 2c 20  receding table, 
1bc90 69 6e 63 6c 75 64 69 6e 67 20 69 6d 70 6c 69 65  including implie
1bca0 64 20 69 6e 64 69 63 65 73 20 63 72 65 61 74 65  d indices create
1bcb0 20 62 79 0a 55 4e 49 51 55 45 20 61 6e 64 20 50   by.UNIQUE and P
1bcc0 52 49 4d 41 52 59 20 4b 45 59 20 63 6f 6e 73 74  RIMARY KEY const
1bcd0 72 61 69 6e 74 73 2e 20 20 48 6f 77 65 76 65 72  raints.  However
1bce0 2c 20 74 68 65 20 49 4e 54 45 47 45 52 20 50 52  , the INTEGER PR
1bcf0 49 4d 41 52 59 20 4b 45 59 0a 63 61 6e 20 73 74  IMARY KEY.can st
1bd00 69 6c 6c 20 62 65 20 75 73 65 64 20 74 6f 20 6c  ill be used to l
1bd10 6f 6f 6b 20 75 70 20 65 6e 74 72 69 65 73 20 65  ook up entries e
1bd20 76 65 6e 20 77 68 65 6e 20 22 4e 4f 54 20 49 4e  ven when "NOT IN
1bd30 44 45 58 45 44 22 20 69 73 20 73 70 65 63 69 66  DEXED" is specif
1bd40 69 65 64 2e 29 5e 3c 2f 70 3e 0a 0a 3c 70 3e 53  ied.)^</p>..<p>S
1bd50 6f 6d 65 20 53 51 4c 20 64 61 74 61 62 61 73 65  ome SQL database
1bd60 20 65 6e 67 69 6e 65 73 20 70 72 6f 76 69 64 65   engines provide
1bd70 20 6e 6f 6e 2d 73 74 61 6e 64 61 72 64 20 22 68   non-standard "h
1bd80 69 6e 74 22 20 6d 65 63 68 61 6e 69 73 6d 73 20  int" mechanisms 
1bd90 77 68 69 63 68 0a 63 61 6e 20 62 65 20 75 73 65  which.can be use
1bda0 64 20 74 6f 20 67 69 76 65 20 74 68 65 20 71 75  d to give the qu
1bdb0 65 72 79 20 6f 70 74 69 6d 69 7a 65 72 20 63 6c  ery optimizer cl
1bdc0 75 65 73 20 61 62 6f 75 74 20 77 68 61 74 20 69  ues about what i
1bdd0 6e 64 69 63 65 73 20 69 74 20 73 68 6f 75 6c 64  ndices it should
1bde0 0a 75 73 65 20 66 6f 72 20 61 20 70 61 72 74 69  .use for a parti
1bdf0 63 75 6c 61 72 20 73 74 61 74 65 6d 65 6e 74 2e  cular statement.
1be00 20 20 54 68 65 20 49 4e 44 45 58 20 42 59 20 63    The INDEX BY c
1be10 6c 61 75 73 65 20 6f 66 20 53 51 4c 69 74 65 20  lause of SQLite 
1be20 69 73 20 0a 3c 65 6d 3e 6e 6f 74 3c 2f 65 6d 3e  is .<em>not</em>
1be30 20 61 20 68 69 6e 74 69 6e 67 20 6d 65 63 68 61   a hinting mecha
1be40 6e 69 73 6d 20 61 6e 64 20 69 74 20 73 68 6f 75  nism and it shou
1be50 6c 64 20 6e 6f 74 20 62 65 20 75 73 65 64 20 61  ld not be used a
1be60 73 20 73 75 63 68 2e 0a 5e 54 68 65 20 49 4e 44  s such..^The IND
1be70 45 58 45 44 20 42 59 20 63 6c 61 75 73 65 20 64  EXED BY clause d
1be80 6f 65 73 20 6e 6f 74 20 67 69 76 65 20 74 68 65  oes not give the
1be90 20 6f 70 74 69 6d 69 7a 65 72 20 68 69 6e 74 73   optimizer hints
1bea0 20 61 62 6f 75 74 20 77 68 69 63 68 20 69 6e 64   about which ind
1beb0 65 78 0a 74 6f 20 75 73 65 3b 20 69 74 20 67 69  ex.to use; it gi
1bec0 76 65 73 20 74 68 65 20 6f 70 74 69 6d 69 7a 65  ves the optimize
1bed0 72 20 61 20 72 65 71 75 69 72 65 6d 65 6e 74 20  r a requirement 
1bee0 6f 66 20 77 68 69 63 68 20 69 6e 64 65 78 20 74  of which index t
1bef0 6f 20 75 73 65 2e 0a 5e 49 66 20 74 68 65 20 71  o use..^If the q
1bf00 75 65 72 79 20 6f 70 74 69 6d 69 7a 65 72 20 69  uery optimizer i
1bf10 73 20 75 6e 61 62 6c 65 20 74 6f 20 75 73 65 20  s unable to use 
1bf20 74 68 65 20 69 6e 64 65 78 20 73 70 65 63 69 66  the index specif
1bf30 69 65 64 20 62 79 20 74 68 65 0a 49 4e 44 45 58  ied by the.INDEX
1bf40 20 42 59 20 63 6c 61 75 73 65 2c 20 74 68 65 6e   BY clause, then
1bf50 20 74 68 65 20 71 75 65 72 79 20 77 69 6c 6c 20   the query will 
1bf60 66 61 69 6c 20 77 69 74 68 20 61 6e 20 65 72 72  fail with an err
1bf70 6f 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20  or.</p>..<p>The 
1bf80 49 4e 44 45 58 45 44 20 42 59 20 63 6c 61 75 73  INDEXED BY claus
1bf90 65 20 69 73 20 3c 65 6d 3e 6e 6f 74 3c 2f 65 6d  e is <em>not</em
1bfa0 3e 20 69 6e 74 65 6e 64 65 64 20 66 6f 72 20 75  > intended for u
1bfb0 73 65 20 69 6e 20 74 75 6e 69 6e 67 0a 74 68 65  se in tuning.the
1bfc0 20 70 72 65 66 6f 72 6d 61 6e 63 65 20 6f 66 20   preformance of 
1bfd0 61 20 71 75 65 72 79 2e 20 20 54 68 65 20 69 6e  a query.  The in
1bfe0 74 65 6e 74 20 6f 66 20 74 68 65 20 49 4e 44 45  tent of the INDE
1bff0 58 45 44 20 42 59 20 63 6c 61 75 73 65 20 69 73  XED BY clause is
1c000 0a 74 6f 20 72 61 69 73 65 20 61 20 72 75 6e 2d  .to raise a run-
1c010 74 69 6d 65 20 65 72 72 6f 72 20 69 66 20 61 20  time error if a 
1c020 73 63 68 65 6d 61 20 63 68 61 6e 67 65 2c 20 73  schema change, s
1c030 75 63 68 20 61 73 20 64 72 6f 70 70 69 6e 67 20  uch as dropping 
1c040 6f 72 0a 63 72 65 61 74 69 6e 67 20 61 6e 20 69  or.creating an i
1c050 6e 64 65 78 2c 20 63 61 75 73 65 73 20 74 68 65  ndex, causes the
1c060 20 71 75 65 72 79 20 70 6c 61 6e 20 66 6f 72 20   query plan for 
1c070 61 20 74 69 6d 65 2d 73 65 6e 73 69 74 69 76 65  a time-sensitive
1c080 20 71 75 65 72 79 0a 74 6f 20 63 68 61 6e 67 65   query.to change
1c090 2e 20 20 54 68 65 20 49 4e 44 45 58 45 44 20 42  .  The INDEXED B
1c0a0 59 20 63 6c 61 75 73 65 20 69 73 20 64 65 73 69  Y clause is desi
1c0b0 67 6e 65 64 20 74 6f 20 68 65 6c 70 20 64 65 74  gned to help det
1c0c0 65 63 74 0a 75 6e 64 65 73 69 72 61 62 6c 65 20  ect.undesirable 
1c0d0 71 75 65 72 79 20 70 6c 61 6e 20 63 68 61 6e 67  query plan chang
1c0e0 65 73 20 64 75 72 69 6e 67 20 72 65 67 72 65 73  es during regres
1c0f0 73 69 6f 6e 20 74 65 73 74 69 6e 67 2e 0a 44 65  sion testing..De
1c100 76 65 6c 6f 70 65 72 73 20 61 72 65 20 61 64 6d  velopers are adm
1c110 6f 6e 69 73 68 65 64 20 74 6f 20 6f 6d 69 74 20  onished to omit 
1c120 61 6c 6c 20 75 73 65 20 6f 66 20 49 4e 44 45 58  all use of INDEX
1c130 45 44 20 42 59 20 64 75 72 69 6e 67 0a 61 70 70  ED BY during.app
1c140 6c 69 63 61 74 69 6f 6e 20 64 65 73 69 67 6e 2c  lication design,
1c150 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2c   implementation,
1c160 20 74 65 73 74 69 6e 67 2c 20 61 6e 64 20 74 75   testing, and tu
1c170 6e 69 6e 67 2e 20 20 49 66 0a 49 4e 44 45 58 45  ning.  If.INDEXE
1c180 44 20 42 59 20 69 73 20 74 6f 20 62 65 20 75 73  D BY is to be us
1c190 65 64 20 61 74 20 61 6c 6c 2c 20 69 74 20 73 68  ed at all, it sh
1c1a0 6f 75 6c 64 20 62 65 20 69 6e 73 65 72 74 65 64  ould be inserted
1c1b0 20 61 74 20 74 68 65 20 76 65 72 79 0a 65 6e 64   at the very.end
1c1c0 20 6f 66 20 74 68 65 20 64 65 76 65 6c 6f 70 6d   of the developm
1c1d0 65 6e 74 20 70 72 6f 63 65 73 73 20 77 68 65 6e  ent process when
1c1e0 20 22 6c 6f 63 6b 69 6e 67 20 64 6f 77 6e 22 20   "locking down" 
1c1f0 61 20 64 65 73 69 67 6e 2e 3c 2f 70 3e 0a 0a 3c  a design.</p>..<
1c200 68 33 3e 53 65 65 20 41 6c 73 6f 3a 3c 2f 68 33  h3>See Also:</h3
1c210 3e 0a 0a 3c 70 3e 54 68 65 20 5b 73 71 6c 69 74  >..<p>The [sqlit
1c220 65 33 5f 73 74 6d 74 5f 73 74 61 74 75 73 28 29  e3_stmt_status()
1c230 5d 20 43 2f 43 2b 2b 20 69 6e 74 65 72 66 61 63  ] C/C++ interfac
1c240 65 20 74 6f 67 65 74 68 65 72 20 77 69 74 68 20  e together with 
1c250 74 68 65 0a 5b 53 51 4c 49 54 45 5f 53 54 4d 54  the.[SQLITE_STMT
1c260 53 54 41 54 55 53 5f 46 55 4c 4c 53 43 41 4e 5f  STATUS_FULLSCAN_
1c270 53 54 45 50 5d 20 61 6e 64 20 5b 53 51 4c 49 54  STEP] and [SQLIT
1c280 45 5f 53 54 4d 54 53 54 41 54 55 53 5f 53 4f 52  E_STMTSTATUS_SOR
1c290 54 5d 20 76 65 72 62 73 0a 63 61 6e 20 62 65 20  T] verbs.can be 
1c2a0 75 73 65 64 20 74 6f 20 64 65 74 65 63 74 20 61  used to detect a
1c2b0 74 20 72 75 6e 2d 74 69 6d 65 20 77 68 65 6e 20  t run-time when 
1c2c0 61 6e 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74  an SQL statement
1c2d0 20 69 73 20 6e 6f 74 0a 6d 61 6b 69 6e 67 20 65   is not.making e
1c2e0 66 66 65 63 74 69 76 65 20 75 73 65 20 6f 66 20  ffective use of 
1c2f0 69 6e 64 69 63 65 73 2e 20 20 4d 61 6e 79 20 61  indices.  Many a
1c300 70 70 6c 69 63 61 74 69 6f 6e 73 20 6d 61 79 20  pplications may 
1c310 70 72 65 66 65 72 20 74 6f 0a 75 73 65 20 74 68  prefer to.use th
1c320 65 20 5b 73 71 6c 69 74 65 33 5f 73 74 6d 74 5f  e [sqlite3_stmt_
1c330 73 74 61 74 75 73 28 29 5d 20 69 6e 74 65 72 66  status()] interf
1c340 61 63 65 20 74 6f 20 64 65 74 65 63 74 20 69 6e  ace to detect in
1c350 64 65 78 20 6d 69 73 75 73 65 0a 72 61 74 68 65  dex misuse.rathe
1c360 72 20 74 68 61 6e 20 74 68 65 20 49 4e 44 45 58  r than the INDEX
1c370 45 44 20 42 59 20 70 68 72 61 73 65 20 64 65 73  ED BY phrase des
1c380 63 72 69 62 65 64 20 68 65 72 65 2e 3c 2f 70 3e  cribed here.</p>
1c390 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23  ..<tcl>.########
1c3a0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1c3b0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1c3c0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1c3d0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1c3e0 23 23 23 23 23 0a 23 20 41 20 6c 69 73 74 20 6f  #####.# A list o
1c3f0 66 20 6b 65 79 77 6f 72 64 73 2e 20 20 41 20 61  f keywords.  A a
1c400 73 74 65 72 69 73 6b 20 6f 63 63 75 72 73 20 61  sterisk occurs a
1c410 66 74 65 72 20 74 68 65 20 6b 65 79 77 6f 72 64  fter the keyword
1c420 20 69 66 20 69 74 20 69 73 20 6f 6e 0a 23 20 74   if it is on.# t
1c430 68 65 20 66 61 6c 6c 62 61 63 6b 20 6c 69 73 74  he fallback list
1c440 2e 0a 23 0a 73 65 74 20 6b 65 79 77 6f 72 64 5f  ..#.set keyword_
1c450 6c 69 73 74 20 5b 6c 73 6f 72 74 20 7b 0a 20 20  list [lsort {.  
1c460 20 41 42 4f 52 54 0a 20 20 20 41 43 54 49 4f 4e   ABORT.   ACTION
1c470 0a 20 20 20 41 44 44 0a 20 20 20 41 46 54 45 52  .   ADD.   AFTER
1c480 0a 20 20 20 41 4c 4c 0a 20 20 20 41 4c 54 45 52  .   ALL.   ALTER
1c490 0a 20 20 20 41 4e 41 4c 59 5a 45 0a 20 20 20 41  .   ANALYZE.   A
1c4a0 4e 44 0a 20 20 20 41 53 0a 20 20 20 41 53 43 0a  ND.   AS.   ASC.
1c4b0 20 20 20 41 54 54 41 43 48 0a 20 20 20 41 55 54     ATTACH.   AUT
1c4c0 4f 49 4e 43 52 45 4d 45 4e 54 0a 20 20 20 42 45  OINCREMENT.   BE
1c4d0 46 4f 52 45 0a 20 20 20 42 45 47 49 4e 0a 20 20  FORE.   BEGIN.  
1c4e0 20 42 45 54 57 45 45 4e 0a 20 20 20 42 59 0a 20   BETWEEN.   BY. 
1c4f0 20 20 43 41 53 43 41 44 45 0a 20 20 20 43 41 53    CASCADE.   CAS
1c500 45 0a 20 20 20 43 41 53 54 0a 20 20 20 43 48 45  E.   CAST.   CHE
1c510 43 4b 0a 20 20 20 43 4f 4c 4c 41 54 45 0a 20 20  CK.   COLLATE.  
1c520 20 43 4f 4c 55 4d 4e 0a 20 20 20 43 4f 4d 4d 49   COLUMN.   COMMI
1c530 54 0a 20 20 20 43 4f 4e 46 4c 49 43 54 0a 20 20  T.   CONFLICT.  
1c540 20 43 4f 4e 53 54 52 41 49 4e 54 0a 20 20 20 43   CONSTRAINT.   C
1c550 52 45 41 54 45 0a 20 20 20 43 52 4f 53 53 0a 20  REATE.   CROSS. 
1c560 20 20 43 55 52 52 45 4e 54 5f 44 41 54 45 0a 20    CURRENT_DATE. 
1c570 20 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 0a 20    CURRENT_TIME. 
1c580 20 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 53 54    CURRENT_TIMEST
1c590 41 4d 50 0a 20 20 20 44 41 54 41 42 41 53 45 0a  AMP.   DATABASE.
1c5a0 20 20 20 44 45 46 41 55 4c 54 0a 20 20 20 44 45     DEFAULT.   DE
1c5b0 46 45 52 52 45 44 0a 20 20 20 44 45 46 45 52 52  FERRED.   DEFERR
1c5c0 41 42 4c 45 0a 20 20 20 44 45 4c 45 54 45 0a 20  ABLE.   DELETE. 
1c5d0 20 20 44 45 53 43 0a 20 20 20 44 45 54 41 43 48    DESC.   DETACH
1c5e0 0a 20 20 20 44 49 53 54 49 4e 43 54 0a 20 20 20  .   DISTINCT.   
1c5f0 44 52 4f 50 0a 20 20 20 45 4e 44 0a 20 20 20 45  DROP.   END.   E
1c600 41 43 48 0a 20 20 20 45 4c 53 45 0a 20 20 20 45  ACH.   ELSE.   E
1c610 53 43 41 50 45 0a 20 20 20 45 58 43 45 50 54 0a  SCAPE.   EXCEPT.
1c620 20 20 20 45 58 43 4c 55 53 49 56 45 0a 20 20 20     EXCLUSIVE.   
1c630 45 58 49 53 54 53 0a 20 20 20 45 58 50 4c 41 49  EXISTS.   EXPLAI
1c640 4e 0a 20 20 20 46 41 49 4c 0a 20 20 20 46 4f 52  N.   FAIL.   FOR
1c650 0a 20 20 20 46 4f 52 45 49 47 4e 0a 20 20 20 46  .   FOREIGN.   F
1c660 52 4f 4d 0a 20 20 20 46 55 4c 4c 0a 20 20 20 47  ROM.   FULL.   G
1c670 4c 4f 42 0a 20 20 20 47 52 4f 55 50 0a 20 20 20  LOB.   GROUP.   
1c680 48 41 56 49 4e 47 0a 20 20 20 49 46 0a 20 20 20  HAVING.   IF.   
1c690 49 47 4e 4f 52 45 0a 20 20 20 49 4d 4d 45 44 49  IGNORE.   IMMEDI
1c6a0 41 54 45 0a 20 20 20 49 4e 0a 20 20 20 49 4e 44  ATE.   IN.   IND
1c6b0 45 58 0a 20 20 20 49 4e 44 45 58 45 44 0a 20 20  EX.   INDEXED.  
1c6c0 20 49 4e 49 54 49 41 4c 4c 59 0a 20 20 20 49 4e   INITIALLY.   IN
1c6d0 4e 45 52 0a 20 20 20 49 4e 53 45 52 54 0a 20 20  NER.   INSERT.  
1c6e0 20 49 4e 53 54 45 41 44 0a 20 20 20 49 4e 54 45   INSTEAD.   INTE
1c6f0 52 53 45 43 54 0a 20 20 20 49 4e 54 4f 0a 20 20  RSECT.   INTO.  
1c700 20 49 53 0a 20 20 20 49 53 4e 55 4c 4c 0a 20 20   IS.   ISNULL.  
1c710 20 4a 4f 49 4e 0a 20 20 20 4b 45 59 0a 20 20 20   JOIN.   KEY.   
1c720 4c 45 46 54 0a 20 20 20 4c 49 4b 45 0a 20 20 20  LEFT.   LIKE.   
1c730 4c 49 4d 49 54 0a 20 20 20 4d 41 54 43 48 0a 20  LIMIT.   MATCH. 
1c740 20 20 4e 41 54 55 52 41 4c 0a 20 20 20 4e 4f 0a    NATURAL.   NO.
1c750 20 20 20 4e 4f 54 0a 20 20 20 4e 4f 54 4e 55 4c     NOT.   NOTNUL
1c760 4c 0a 20 20 20 4e 55 4c 4c 0a 20 20 20 4f 46 0a  L.   NULL.   OF.
1c770 20 20 20 4f 46 46 53 45 54 0a 20 20 20 4f 4e 0a     OFFSET.   ON.
1c780 20 20 20 4f 52 0a 20 20 20 4f 52 44 45 52 0a 20     OR.   ORDER. 
1c790 20 20 4f 55 54 45 52 0a 20 20 20 50 4c 41 4e 0a    OUTER.   PLAN.
1c7a0 20 20 20 50 52 41 47 4d 41 0a 20 20 20 50 52 49     PRAGMA.   PRI
1c7b0 4d 41 52 59 0a 20 20 20 51 55 45 52 59 0a 20 20  MARY.   QUERY.  
1c7c0 20 52 41 49 53 45 0a 20 20 20 52 45 46 45 52 45   RAISE.   REFERE
1c7d0 4e 43 45 53 0a 20 20 20 52 45 47 45 58 50 0a 20  NCES.   REGEXP. 
1c7e0 20 20 52 45 49 4e 44 45 58 0a 20 20 20 52 45 4c    REINDEX.   REL
1c7f0 45 41 53 45 0a 20 20 20 52 45 4e 41 4d 45 0a 20  EASE.   RENAME. 
1c800 20 20 52 45 50 4c 41 43 45 0a 20 20 20 52 45 53    REPLACE.   RES
1c810 54 52 49 43 54 0a 20 20 20 52 49 47 48 54 0a 20  TRICT.   RIGHT. 
1c820 20 20 52 4f 4c 4c 42 41 43 4b 0a 20 20 20 52 4f    ROLLBACK.   RO
1c830 57 0a 20 20 20 53 41 56 45 50 4f 49 4e 54 0a 20  W.   SAVEPOINT. 
1c840 20 20 53 45 4c 45 43 54 0a 20 20 20 53 45 54 0a    SELECT.   SET.
1c850 20 20 20 54 41 42 4c 45 0a 20 20 20 54 45 4d 50     TABLE.   TEMP
1c860 0a 20 20 20 54 45 4d 50 4f 52 41 52 59 0a 20 20  .   TEMPORARY.  
1c870 20 54 48 45 4e 0a 20 20 20 54 4f 0a 20 20 20 54   THEN.   TO.   T
1c880 52 41 4e 53 41 43 54 49 4f 4e 0a 20 20 20 54 52  RANSACTION.   TR
1c890 49 47 47 45 52 0a 20 20 20 55 4e 49 4f 4e 0a 20  IGGER.   UNION. 
1c8a0 20 20 55 4e 49 51 55 45 0a 20 20 20 55 50 44 41    UNIQUE.   UPDA
1c8b0 54 45 0a 20 20 20 55 53 49 4e 47 0a 20 20 20 56  TE.   USING.   V
1c8c0 41 43 55 55 4d 0a 20 20 20 56 41 4c 55 45 53 0a  ACUUM.   VALUES.
1c8d0 20 20 20 56 49 45 57 0a 20 20 20 56 49 52 54 55     VIEW.   VIRTU
1c8e0 41 4c 0a 20 20 20 57 48 45 4e 0a 20 20 20 57 48  AL.   WHEN.   WH
1c8f0 45 52 45 0a 7d 5d 0a 0a 68 64 5f 70 75 74 73 20  ERE.}]..hd_puts 
1c900 7b 3c 44 49 56 20 63 6c 61 73 73 3d 22 70 64 66  {<DIV class="pdf
1c910 5f 73 65 63 74 69 6f 6e 22 3e 7d 0a 53 65 63 74  _section">}.Sect
1c920 69 6f 6e 20 7b 53 51 4c 69 74 65 20 4b 65 79 77  ion {SQLite Keyw
1c930 6f 72 64 73 7d 20 6b 65 79 77 6f 72 64 73 20 7b  ords} keywords {
1c940 7b 2a 53 51 4c 20 6b 65 79 77 6f 72 64 7d 20 7b  {*SQL keyword} {
1c950 53 51 4c 20 6b 65 79 77 6f 72 64 73 7d 7d 0a 68  SQL keywords}}.h
1c960 64 5f 70 75 74 73 20 7b 3c 2f 44 49 56 3e 7d 0a  d_puts {</DIV>}.
1c970 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20 53  </tcl>..<p>The S
1c980 51 4c 20 73 74 61 6e 64 61 72 64 20 73 70 65 63  QL standard spec
1c990 69 66 69 65 73 20 61 20 68 75 67 65 20 6e 75 6d  ifies a huge num
1c9a0 62 65 72 20 6f 66 20 6b 65 79 77 6f 72 64 73 20  ber of keywords 
1c9b0 77 68 69 63 68 20 6d 61 79 20 6e 6f 74 0a 62 65  which may not.be
1c9c0 20 75 73 65 64 20 61 73 20 74 68 65 20 6e 61 6d   used as the nam
1c9d0 65 73 20 6f 66 20 74 61 62 6c 65 73 2c 20 69 6e  es of tables, in
1c9e0 64 69 63 65 73 2c 20 63 6f 6c 75 6d 6e 73 2c 20  dices, columns, 
1c9f0 64 61 74 61 62 61 73 65 73 2c 20 75 73 65 72 2d  databases, user-
1ca00 64 65 66 69 6e 65 64 0a 66 75 6e 63 74 69 6f 6e  defined.function
1ca10 73 2c 20 63 6f 6c 6c 61 74 69 6f 6e 73 2c 20 76  s, collations, v
1ca20 69 72 74 75 61 6c 20 74 61 62 6c 65 20 6d 6f 64  irtual table mod
1ca30 75 6c 65 73 2c 20 6f 72 20 61 6e 79 20 6f 74 68  ules, or any oth
1ca40 65 72 20 6e 61 6d 65 64 20 6f 62 6a 65 63 74 2e  er named object.
1ca50 0a 54 68 65 20 6c 69 73 74 20 6f 66 20 6b 65 79  .The list of key
1ca60 77 6f 72 64 73 20 69 73 20 73 6f 20 6c 6f 6e 67  words is so long
1ca70 20 74 68 61 74 20 66 65 77 20 70 65 6f 70 6c 65   that few people
1ca80 20 63 61 6e 20 72 65 6d 65 6d 62 65 72 20 74 68   can remember th
1ca90 65 6d 20 61 6c 6c 2e 0a 46 6f 72 20 6d 6f 73 74  em all..For most
1caa0 20 53 51 4c 20 63 6f 64 65 2c 20 79 6f 75 72 20   SQL code, your 
1cab0 73 61 66 65 73 74 20 62 65 74 20 69 73 20 74 6f  safest bet is to
1cac0 20 6e 65 76 65 72 20 75 73 65 20 61 6e 79 20 45   never use any E
1cad0 6e 67 6c 69 73 68 20 6c 61 6e 67 75 61 67 65 0a  nglish language.
1cae0 77 6f 72 64 20 61 73 20 74 68 65 20 6e 61 6d 65  word as the name
1caf0 20 6f 66 20 61 20 75 73 65 72 2d 64 65 66 69 6e   of a user-defin
1cb00 65 64 20 6f 62 6a 65 63 74 2e 3c 2f 70 3e 0a 0a  ed object.</p>..
1cb10 3c 70 3e 49 66 20 79 6f 75 20 77 61 6e 74 20 74  <p>If you want t
1cb20 6f 20 75 73 65 20 61 20 6b 65 79 77 6f 72 64 20  o use a keyword 
1cb30 61 73 20 61 20 6e 61 6d 65 2c 20 79 6f 75 20 6e  as a name, you n
1cb40 65 65 64 20 74 6f 20 71 75 6f 74 65 20 69 74 2e  eed to quote it.
1cb50 20 20 54 68 65 72 65 0a 61 72 65 20 74 68 72 65    There.are thre
1cb60 65 20 77 61 79 73 20 6f 66 20 71 75 6f 74 69 6e  e ways of quotin
1cb70 67 20 6b 65 79 77 6f 72 64 73 20 69 6e 20 53 51  g keywords in SQ
1cb80 4c 69 74 65 3a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 3c  Lite:</p>..<p>.<
1cb90 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 3c 74 61 62  blockquote>.<tab
1cba0 6c 65 3e 0a 3c 74 72 3e 09 3c 74 64 20 76 61 6c  le>.<tr>.<td val
1cbb0 69 67 6e 3d 22 74 6f 70 22 3e 3c 62 3e 27 6b 65  ign="top"><b>'ke
1cbc0 79 77 6f 72 64 27 3c 2f 62 3e 3c 2f 74 64 3e 3c  yword'</b></td><
1cbd0 74 64 20 77 69 64 74 68 3d 22 32 30 22 3e 3c 2f  td width="20"></
1cbe0 74 64 3e 0a 09 3c 74 64 3e 5e 41 20 6b 65 79 77  td>..<td>^A keyw
1cbf0 6f 72 64 20 69 6e 20 73 69 6e 67 6c 65 20 71 75  ord in single qu
1cc00 6f 74 65 73 20 69 73 20 61 20 73 74 72 69 6e 67  otes is a string
1cc10 20 6c 69 74 65 72 61 6c 2e 3c 2f 74 64 3e 3c 2f   literal.</td></
1cc20 74 72 3e 0a 0a 3c 74 72 3e 09 3c 74 64 20 76 61  tr>..<tr>.<td va
1cc30 6c 69 67 6e 3d 22 74 6f 70 22 3e 3c 62 3e 22 6b  lign="top"><b>"k
1cc40 65 79 77 6f 72 64 22 3c 2f 62 3e 3c 2f 74 64 3e  eyword"</b></td>
1cc50 3c 74 64 3e 3c 2f 74 64 3e 0a 09 3c 74 64 3e 5e  <td></td>..<td>^
1cc60 41 20 6b 65 79 77 6f 72 64 20 69 6e 20 64 6f 75  A keyword in dou
1cc70 62 6c 65 2d 71 75 6f 74 65 73 20 69 73 20 61 6e  ble-quotes is an
1cc80 20 69 64 65 6e 74 69 66 69 65 72 2e 3c 2f 74 64   identifier.</td
1cc90 3e 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 09 3c 74 64  ></tr>..<tr>.<td
1cca0 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 3c 62   valign="top"><b
1ccb0 3e 26 23 39 31 3b 6b 65 79 77 6f 72 64 26 23 39  >&#91;keyword&#9
1ccc0 33 3b 3c 2f 62 3e 3c 2f 74 64 3e 3c 74 64 3e 3c  3;</b></td><td><
1ccd0 2f 74 64 3e 0a 09 3c 74 64 3e 5e 41 20 6b 65 79  /td>..<td>^A key
1cce0 77 6f 72 64 20 65 6e 63 6c 6f 73 65 64 20 69 6e  word enclosed in
1ccf0 20 73 71 75 61 72 65 20 62 72 61 63 6b 65 74 73   square brackets
1cd00 20 69 73 20 0a 20 20 20 20 20 20 20 20 61 6e 20   is .        an 
1cd10 69 64 65 6e 74 69 66 69 65 72 2e 20 20 54 68 69  identifier.  Thi
1cd20 73 20 69 73 20 6e 6f 74 20 73 74 61 6e 64 61 72  s is not standar
1cd30 64 20 53 51 4c 2e 20 20 54 68 69 73 20 71 75 6f  d SQL.  This quo
1cd40 74 69 6e 67 20 6d 65 63 68 61 6e 69 73 6d 0a 20  ting mechanism. 
1cd50 20 20 20 20 20 20 20 69 73 20 75 73 65 64 20 62         is used b
1cd60 79 20 4d 53 20 41 63 63 65 73 73 20 61 6e 64 20  y MS Access and 
1cd70 53 51 4c 20 53 65 72 76 65 72 20 61 6e 64 20 69  SQL Server and i
1cd80 73 20 69 6e 63 6c 75 64 65 64 20 69 6e 20 53 51  s included in SQ
1cd90 4c 69 74 65 20 66 6f 72 0a 20 20 20 20 20 20 20  Lite for.       
1cda0 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 2e 3c   compatibility.<
1cdb0 2f 74 64 3e 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 09  /td></tr>..<tr>.
1cdc0 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  <td valign="top"
1cdd0 3e 3c 62 3e 26 23 39 36 3b 6b 65 79 77 6f 72 64  ><b>&#96;keyword
1cde0 26 23 39 36 3b 3c 2f 62 3e 3c 2f 74 64 3e 3c 74  &#96;</b></td><t
1cdf0 64 3e 3c 2f 74 64 3e 0a 09 3c 74 64 3e 5e 41 20  d></td>..<td>^A 
1ce00 6b 65 79 77 6f 72 64 20 65 6e 63 6c 6f 73 65 64  keyword enclosed
1ce10 20 69 6e 20 67 72 61 76 65 20 61 63 63 65 6e 74   in grave accent
1ce20 73 20 28 41 53 43 49 49 20 63 6f 64 65 20 39 36  s (ASCII code 96
1ce30 29 20 69 73 20 0a 20 20 20 20 20 20 20 20 61 6e  ) is .        an
1ce40 20 69 64 65 6e 74 69 66 69 65 72 2e 20 20 54 68   identifier.  Th
1ce50 69 73 20 69 73 20 6e 6f 74 20 73 74 61 6e 64 61  is is not standa
1ce60 72 64 20 53 51 4c 2e 20 20 54 68 69 73 20 71 75  rd SQL.  This qu
1ce70 6f 74 69 6e 67 20 6d 65 63 68 61 6e 69 73 6d 0a  oting mechanism.
1ce80 20 20 20 20 20 20 20 20 69 73 20 75 73 65 64 20          is used 
1ce90 62 79 20 4d 79 53 51 4c 20 61 6e 64 20 69 73 20  by MySQL and is 
1cea0 69 6e 63 6c 75 64 65 64 20 69 6e 20 53 51 4c 69  included in SQLi
1ceb0 74 65 20 66 6f 72 0a 20 20 20 20 20 20 20 20 63  te for.        c
1cec0 6f 6d 70 61 74 69 62 69 6c 69 74 79 2e 3c 2f 74  ompatibility.</t
1ced0 64 3e 3c 2f 74 72 3e 0a 3c 2f 74 61 62 6c 65 3e  d></tr>.</table>
1cee0 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 3c  .</blockquote>.<
1cef0 2f 70 3e 0a 0a 3c 70 3e 46 6f 72 20 72 65 73 69  /p>..<p>For resi
1cf00 6c 69 65 6e 63 65 20 77 68 65 6e 20 63 6f 6e 66  lience when conf
1cf10 72 6f 6e 74 65 64 20 77 69 74 68 20 68 69 73 74  ronted with hist
1cf20 6f 72 69 63 61 6c 20 53 51 4c 20 73 74 61 74 65  orical SQL state
1cf30 6d 65 6e 74 73 2c 20 53 51 4c 69 74 65 0a 77 69  ments, SQLite.wi
1cf40 6c 6c 20 73 6f 6d 65 74 69 6d 65 73 20 62 65 6e  ll sometimes ben
1cf50 64 20 74 68 65 20 71 75 6f 74 69 6e 67 20 72 75  d the quoting ru
1cf60 6c 65 73 20 61 62 6f 76 65 3a 3c 2f 70 3e 0a 0a  les above:</p>..
1cf70 3c 75 6c 3e 0a 3c 6c 69 3e 3c 70 3e 5e 49 66 20  <ul>.<li><p>^If 
1cf80 61 20 6b 65 79 77 6f 72 64 20 69 6e 20 73 69 6e  a keyword in sin
1cf90 67 6c 65 0a 71 75 6f 74 65 73 20 28 65 78 3a 20  gle.quotes (ex: 
1cfa0 3c 62 3e 27 6b 65 79 27 3c 2f 62 3e 20 6f 72 20  <b>'key'</b> or 
1cfb0 3c 62 3e 27 67 6c 6f 62 27 3c 2f 62 3e 29 20 69  <b>'glob'</b>) i
1cfc0 73 20 75 73 65 64 20 69 6e 20 61 20 63 6f 6e 74  s used in a cont
1cfd0 65 78 74 20 77 68 65 72 65 0a 61 6e 20 69 64 65  ext where.an ide
1cfe0 6e 74 69 66 69 65 72 20 69 73 20 61 6c 6c 6f 77  ntifier is allow
1cff0 65 64 20 62 75 74 20 77 68 65 72 65 20 61 20 73  ed but where a s
1d000 74 72 69 6e 67 20 6c 69 74 65 72 61 6c 20 69 73  tring literal is
1d010 20 6e 6f 74 20 61 6c 6c 6f 77 65 64 2c 20 74 68   not allowed, th
1d020 65 6e 0a 74 68 65 20 74 6f 6b 65 6e 20 69 73 20  en.the token is 
1d030 75 6e 64 65 72 73 74 6f 6f 64 20 74 6f 20 62 65  understood to be
1d040 20 61 6e 20 69 64 65 6e 74 69 66 69 65 72 20 69   an identifier i
1d050 6e 73 74 65 61 64 20 6f 66 20 61 20 73 74 72 69  nstead of a stri
1d060 6e 67 20 6c 69 74 65 72 61 6c 2e 0a 3c 2f 70 3e  ng literal..</p>
1d070 3c 2f 6c 69 3e 0a 0a 3c 6c 69 3e 3c 70 3e 5e 49  </li>..<li><p>^I
1d080 66 20 61 20 6b 65 79 77 6f 72 64 20 69 6e 20 64  f a keyword in d
1d090 6f 75 62 6c 65 0a 71 75 6f 74 65 73 20 28 65 78  ouble.quotes (ex
1d0a0 3a 20 3c 62 3e 22 6b 65 79 22 3c 2f 62 3e 20 6f  : <b>"key"</b> o
1d0b0 72 20 3c 62 3e 22 67 6c 6f 62 22 3c 2f 62 3e 29  r <b>"glob"</b>)
1d0c0 20 69 73 20 75 73 65 64 20 69 6e 20 61 20 63 6f   is used in a co
1d0d0 6e 74 65 78 74 20 77 68 65 72 65 0a 69 74 20 63  ntext where.it c
1d0e0 61 6e 6e 6f 74 20 62 65 20 72 65 73 6f 6c 76 65  annot be resolve
1d0f0 64 20 74 6f 20 61 6e 20 69 64 65 6e 74 69 66 69  d to an identifi
1d100 65 72 20 62 75 74 20 77 68 65 72 65 20 61 20 73  er but where a s
1d110 74 72 69 6e 67 20 6c 69 74 65 72 61 6c 0a 69 73  tring literal.is
1d120 20 61 6c 6c 6f 77 65 64 2c 20 74 68 65 6e 20 74   allowed, then t
1d130 68 65 20 74 6f 6b 65 6e 20 69 73 20 75 6e 64 65  he token is unde
1d140 72 73 74 6f 6f 64 20 74 6f 20 62 65 20 61 20 73  rstood to be a s
1d150 74 72 69 6e 67 20 6c 69 74 65 72 61 6c 20 69 6e  tring literal in
1d160 73 74 65 61 64 0a 6f 66 20 61 6e 20 69 64 65 6e  stead.of an iden
1d170 74 69 66 65 72 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a  tifer.</p></li>.
1d180 3c 2f 75 6c 3e 0a 0a 3c 70 3e 50 72 6f 67 72 61  </ul>..<p>Progra
1d190 6d 6d 65 72 73 20 61 72 65 20 63 61 75 74 69 6f  mmers are cautio
1d1a0 6e 65 64 20 6e 6f 74 20 74 6f 20 75 73 65 20 74  ned not to use t
1d1b0 68 65 20 74 77 6f 20 65 78 63 65 70 74 69 6f 6e  he two exception
1d1c0 73 20 64 65 73 63 72 69 62 65 64 20 69 6e 0a 74  s described in.t
1d1d0 68 65 20 70 72 65 76 69 6f 75 73 20 62 75 6c 6c  he previous bull
1d1e0 65 74 73 2e 20 20 57 65 20 65 6d 70 68 61 73 69  ets.  We emphasi
1d1f0 7a 65 20 74 68 61 74 20 74 68 65 79 20 65 78 69  ze that they exi
1d200 73 74 20 6f 6e 6c 79 20 73 6f 20 74 68 61 74 20  st only so that 
1d210 6f 6c 64 0a 61 6e 64 20 69 6c 6c 2d 66 6f 72 6d  old.and ill-form
1d220 65 64 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74  ed SQL statement
1d230 73 20 77 69 6c 6c 20 72 75 6e 20 63 6f 72 72 65  s will run corre
1d240 63 74 6c 79 2e 20 20 46 75 74 75 72 65 20 76 65  ctly.  Future ve
1d250 72 73 69 6f 6e 73 20 6f 66 0a 53 51 4c 69 74 65  rsions of.SQLite
1d260 20 6d 69 67 68 74 20 63 68 61 6e 67 65 20 74 6f   might change to
1d270 20 72 61 69 73 65 20 65 72 72 6f 72 73 20 69 6e   raise errors in
1d280 73 74 65 61 64 20 6f 66 20 61 63 63 65 70 74 69  stead of accepti
1d290 6e 67 20 74 68 65 20 6d 61 6c 66 6f 72 6d 65 64  ng the malformed
1d2a0 0a 73 74 61 74 65 6d 65 6e 74 73 20 63 6f 76 65  .statements cove
1d2b0 72 65 64 20 62 79 20 74 68 65 20 65 78 63 65 70  red by the excep
1d2c0 74 69 6f 6e 73 20 61 62 6f 76 65 2e 3c 2f 70 3e  tions above.</p>
1d2d0 0a 0a 3c 70 3e 0a 53 51 4c 69 74 65 20 61 64 64  ..<p>.SQLite add
1d2e0 73 20 6e 65 77 20 6b 65 79 77 6f 72 64 73 20 66  s new keywords f
1d2f0 72 6f 6d 20 74 69 6d 65 20 74 6f 20 74 69 6d 65  rom time to time
1d300 20 77 68 65 6e 20 69 74 20 74 61 6b 65 73 20 6f   when it takes o
1d310 6e 20 6e 65 77 20 66 65 61 74 75 72 65 73 2e 0a  n new features..
1d320 53 6f 20 74 6f 20 70 72 65 76 65 6e 74 20 79 6f  So to prevent yo
1d330 75 72 20 63 6f 64 65 20 66 72 6f 6d 20 62 65 69  ur code from bei
1d340 6e 67 20 62 72 6f 6b 65 6e 20 62 79 20 66 75 74  ng broken by fut
1d350 75 72 65 20 65 6e 68 61 6e 63 65 6d 65 6e 74 73  ure enhancements
1d360 2c 20 79 6f 75 20 73 68 6f 75 6c 64 0a 6e 6f 72  , you should.nor
1d370 6d 61 6c 6c 79 20 71 75 6f 74 65 20 61 6e 79 20  mally quote any 
1d380 69 64 65 6e 74 69 66 69 65 72 20 74 68 61 74 20  identifier that 
1d390 69 73 20 61 6e 20 45 6e 67 6c 69 73 68 20 6c 61  is an English la
1d3a0 6e 67 75 61 67 65 20 77 6f 72 64 2c 20 65 76 65  nguage word, eve
1d3b0 6e 20 69 66 0a 79 6f 75 20 64 6f 20 6e 6f 74 20  n if.you do not 
1d3c0 68 61 76 65 20 74 6f 2e 0a 3c 2f 70 3e 0a 0a 3c  have to..</p>..<
1d3d0 70 3e 0a 54 68 65 20 6c 69 73 74 20 62 65 6c 6f  p>.The list belo
1d3e0 77 20 73 68 6f 77 73 20 61 6c 6c 20 70 6f 73 73  w shows all poss
1d3f0 69 62 6c 65 20 6b 65 79 77 6f 72 64 73 20 75 73  ible keywords us
1d400 65 64 20 62 79 20 61 6e 79 20 62 75 69 6c 64 20  ed by any build 
1d410 6f 66 0a 53 51 4c 69 74 65 20 72 65 67 61 72 64  of.SQLite regard
1d420 6c 65 73 73 20 6f 66 20 5b 63 6f 6d 70 69 6c 65  less of [compile
1d430 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 73 5d 2e 20  -time options]. 
1d440 20 0a 4d 6f 73 74 20 72 65 61 73 6f 6e 61 62 6c   .Most reasonabl
1d450 65 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 73  e configurations
1d460 20 75 73 65 20 6d 6f 72 65 20 6f 72 20 61 6c 6c   use more or all
1d470 20 6f 66 20 74 68 65 73 65 20 6b 65 79 77 6f 72   of these keywor
1d480 64 73 2c 0a 62 75 74 20 73 6f 6d 65 20 6b 65 79  ds,.but some key
1d490 77 6f 72 64 73 20 6d 61 79 20 62 65 20 6f 6d 69  words may be omi
1d4a0 74 74 65 64 20 77 68 65 6e 20 53 51 4c 20 6c 61  tted when SQL la
1d4b0 6e 67 75 61 67 65 20 66 65 61 74 75 72 65 73 20  nguage features 
1d4c0 61 72 65 0a 64 69 73 61 62 6c 65 64 2e 0a 5e 28  are.disabled..^(
1d4d0 52 65 67 61 72 64 6c 65 73 73 20 6f 66 20 74 68  Regardless of th
1d4e0 65 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 63  e compile-time c
1d4f0 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2c 20 61 6e  onfiguration, an
1d500 79 20 69 64 65 6e 74 69 66 69 65 72 20 74 68 61  y identifier tha
1d510 74 20 69 73 20 6e 6f 74 20 6f 6e 0a 74 68 65 20  t is not on.the 
1d520 66 6f 6c 6c 6f 77 69 6e 67 20 3c 74 63 6c 3e 68  following <tcl>h
1d530 64 5f 70 75 74 73 20 5b 6c 6c 65 6e 67 74 68 20  d_puts [llength 
1d540 24 6b 65 79 77 6f 72 64 5f 6c 69 73 74 5d 3c 2f  $keyword_list]</
1d550 74 63 6c 3e 20 65 6c 65 6d 65 6e 74 0a 6c 69 73  tcl> element.lis
1d560 74 20 69 73 20 6e 6f 74 20 61 20 6b 65 79 77 6f  t is not a keywo
1d570 72 64 20 74 6f 20 74 68 65 20 53 51 4c 20 70 61  rd to the SQL pa
1d580 72 73 65 72 20 69 6e 20 53 51 4c 69 74 65 3a 0a  rser in SQLite:.
1d590 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74  </p>..<blockquot
1d5a0 65 3e 0a 3c 74 61 62 6c 65 20 77 69 64 74 68 3d  e>.<table width=
1d5b0 22 31 30 30 25 22 3e 3c 74 72 3e 0a 3c 74 64 20  "100%"><tr>.<td 
1d5c0 61 6c 69 67 6e 3d 22 6c 65 66 74 22 20 76 61 6c  align="left" val
1d5d0 69 67 6e 3d 22 74 6f 70 22 20 77 69 64 74 68 3d  ign="top" width=
1d5e0 22 32 30 25 22 3e 0a 3c 74 63 6c 3e 0a 73 65 74  "20%">.<tcl>.set
1d5f0 20 6e 20 5b 6c 6c 65 6e 67 74 68 20 24 6b 65 79   n [llength $key
1d600 77 6f 72 64 5f 6c 69 73 74 5d 0a 73 65 74 20 6e  word_list].set n
1d610 43 6f 6c 20 35 0a 73 65 74 20 6e 52 6f 77 20 5b  Col 5.set nRow [
1d620 65 78 70 72 20 7b 28 24 6e 2b 24 6e 43 6f 6c 2d  expr {($n+$nCol-
1d630 31 29 2f 24 6e 43 6f 6c 7d 5d 0a 73 65 74 20 69  1)/$nCol}].set i
1d640 20 30 0a 66 6f 72 65 61 63 68 20 77 6f 72 64 20   0.foreach word 
1d650 24 6b 65 79 77 6f 72 64 5f 6c 69 73 74 20 7b 0a  $keyword_list {.
1d660 20 20 69 66 20 7b 24 69 3d 3d 24 6e 52 6f 77 7d    if {$i==$nRow}
1d670 20 7b 0a 20 20 20 20 68 64 5f 70 75 74 73 20 22   {.    hd_puts "
1d680 3c 2f 74 64 3e 3c 74 64 20 76 61 6c 69 67 6e 3d  </td><td valign=
1d690 5c 22 74 6f 70 5c 22 20 61 6c 69 67 6e 3d 5c 22  \"top\" align=\"
1d6a0 6c 65 66 74 5c 22 20 77 69 64 74 68 3d 5c 22 32  left\" width=\"2
1d6b0 30 25 5c 22 3e 22 0a 20 20 20 20 73 65 74 20 69  0%\">".    set i
1d6c0 20 31 0a 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20   1.  } else {.  
1d6d0 20 20 69 6e 63 72 20 69 0a 20 20 7d 0a 20 20 68    incr i.  }.  h
1d6e0 64 5f 70 75 74 73 20 22 24 77 6f 72 64 3c 62 72  d_puts "$word<br
1d6f0 3e 5c 6e 22 0a 7d 0a 3c 2f 74 63 6c 3e 0a 3c 2f  >\n".}.</tcl>.</
1d700 74 64 3e 3c 2f 74 72 3e 3c 2f 74 61 62 6c 65 3e  td></tr></table>
1d710 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 29 5e 0a  </blockquote>)^.