Documentation Source Text

Hex Artifact Content
Login

Artifact 9b4d892141e59976bc95c4cba11c1da8b14f4871:


0000: 3c 74 69 74 6c 65 3e 51 75 65 72 79 20 4c 61 6e  <title>Query Lan
0010: 67 75 61 67 65 20 55 6e 64 65 72 73 74 6f 6f 64  guage Understood
0020: 20 62 79 20 53 51 4c 69 74 65 3c 2f 74 69 74 6c   by SQLite</titl
0030: 65 3e 0a 0a 3c 68 31 20 61 6c 69 67 6e 3d 63 65  e>..<h1 align=ce
0040: 6e 74 65 72 3e 53 51 4c 20 41 73 20 55 6e 64 65  nter>SQL As Unde
0050: 72 73 74 6f 6f 64 20 42 79 20 53 51 4c 69 74 65  rstood By SQLite
0060: 3c 2f 68 31 3e 0a 0a 3c 70 3e 53 51 4c 69 74 65  </h1>..<p>SQLite
0070: 20 75 6e 64 65 72 73 74 61 6e 64 73 20 6d 6f 73   understands mos
0080: 74 20 6f 66 20 74 68 65 20 73 74 61 6e 64 61 72  t of the standar
0090: 64 20 53 51 4c 0a 6c 61 6e 67 75 61 67 65 2e 20  d SQL.language. 
00a0: 20 42 75 74 20 69 74 20 64 6f 65 73 20 3c 61 20   But it does <a 
00b0: 68 72 65 66 3d 22 6f 6d 69 74 74 65 64 2e 68 74  href="omitted.ht
00c0: 6d 6c 22 3e 6f 6d 69 74 20 73 6f 6d 65 20 66 65  ml">omit some fe
00d0: 61 74 75 72 65 73 3c 2f 61 3e 0a 77 68 69 6c 65  atures</a>.while
00e0: 20 61 74 20 74 68 65 20 73 61 6d 65 20 74 69 6d   at the same tim
00f0: 65 0a 61 64 64 69 6e 67 20 61 20 66 65 77 20 66  e.adding a few f
0100: 65 61 74 75 72 65 73 20 6f 66 20 69 74 73 20 6f  eatures of its o
0110: 77 6e 2e 20 20 54 68 69 73 20 64 6f 63 75 6d 65  wn.  This docume
0120: 6e 74 20 61 74 74 65 6d 70 74 73 20 74 6f 0a 64  nt attempts to.d
0130: 65 73 63 72 69 62 65 20 70 72 65 63 69 73 65 6c  escribe precisel
0140: 79 20 77 68 61 74 20 70 61 72 74 73 20 6f 66 20  y what parts of 
0150: 74 68 65 20 53 51 4c 20 6c 61 6e 67 75 61 67 65  the SQL language
0160: 20 53 51 4c 69 74 65 20 64 6f 65 73 0a 61 6e 64   SQLite does.and
0170: 20 64 6f 65 73 20 6e 6f 74 20 73 75 70 70 6f 72   does not suppor
0180: 74 2e 20 20 41 20 6c 69 73 74 20 6f 66 20 5b 53  t.  A list of [S
0190: 51 4c 20 6b 65 79 77 6f 72 64 73 5d 20 69 73 20  QL keywords] is 
01a0: 0a 61 6c 73 6f 20 70 72 6f 76 69 64 65 64 2e 20  .also provided. 
01b0: 20 54 68 65 20 53 51 4c 20 6c 61 6e 67 75 61 67   The SQL languag
01c0: 65 20 73 79 6e 74 61 78 20 69 73 20 64 65 73 63  e syntax is desc
01d0: 72 69 62 65 64 20 62 79 0a 5b 73 79 6e 74 61 78  ribed by.[syntax
01e0: 20 64 69 61 67 72 61 6d 73 5d 2e 0a 0a 3c 70 3e   diagrams]...<p>
01f0: 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 73 79  The following sy
0200: 6e 74 61 78 20 64 6f 63 75 6d 65 6e 74 61 74 69  ntax documentati
0210: 6f 6e 20 74 6f 70 69 63 73 20 61 72 65 20 61 76  on topics are av
0220: 61 69 6c 61 62 6c 65 3a 3c 2f 70 3e 0a 0a 3c 74  ailable:</p>..<t
0230: 61 62 6c 65 20 77 69 64 74 68 3d 22 31 30 30 25  able width="100%
0240: 22 20 63 65 6c 6c 70 61 64 64 69 6e 67 3d 22 35  " cellpadding="5
0250: 22 20 62 6f 72 64 65 72 3d 22 30 22 3e 0a 3c 74  " border="0">.<t
0260: 72 3e 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  r><td valign="to
0270: 70 22 3e 3c 75 6c 3e 0a 0a 3c 74 63 6c 3e 0a 20  p"><ul>..<tcl>. 
0280: 20 73 65 74 20 69 20 30 0a 20 20 73 65 74 20 6c   set i 0.  set l
0290: 61 6e 67 5f 73 65 63 74 69 6f 6e 5f 6c 69 73 74  ang_section_list
02a0: 20 7b 0a 20 20 20 20 7b 7b 43 52 45 41 54 45 20   {.    {{CREATE 
02b0: 54 41 42 4c 45 7d 20 63 72 65 61 74 65 74 61 62  TABLE} createtab
02c0: 6c 65 7d 0a 20 20 20 20 7b 7b 43 52 45 41 54 45  le}.    {{CREATE
02d0: 20 56 49 52 54 55 41 4c 20 54 41 42 4c 45 7d 20   VIRTUAL TABLE} 
02e0: 63 72 65 61 74 65 76 74 61 62 7d 0a 20 20 20 20  createvtab}.    
02f0: 7b 7b 43 52 45 41 54 45 20 49 4e 44 45 58 7d 20  {{CREATE INDEX} 
0300: 63 72 65 61 74 65 69 6e 64 65 78 7d 0a 20 20 20  createindex}.   
0310: 20 7b 56 41 43 55 55 4d 20 76 61 63 75 75 6d 7d   {VACUUM vacuum}
0320: 0a 20 20 20 20 7b 7b 44 52 4f 50 20 54 41 42 4c  .    {{DROP TABL
0330: 45 7d 20 64 72 6f 70 74 61 62 6c 65 7d 0a 20 20  E} droptable}.  
0340: 20 20 7b 7b 44 52 4f 50 20 49 4e 44 45 58 7d 20    {{DROP INDEX} 
0350: 64 72 6f 70 69 6e 64 65 78 7d 0a 20 20 20 20 7b  dropindex}.    {
0360: 49 4e 53 45 52 54 20 69 6e 73 65 72 74 7d 0a 20  INSERT insert}. 
0370: 20 20 20 7b 52 45 50 4c 41 43 45 20 72 65 70 6c     {REPLACE repl
0380: 61 63 65 7d 0a 20 20 20 20 7b 44 45 4c 45 54 45  ace}.    {DELETE
0390: 20 64 65 6c 65 74 65 7d 0a 20 20 20 20 7b 55 50   delete}.    {UP
03a0: 44 41 54 45 20 75 70 64 61 74 65 7d 0a 20 20 20  DATE update}.   
03b0: 20 7b 53 45 4c 45 43 54 20 73 65 6c 65 63 74 7d   {SELECT select}
03c0: 0a 20 20 20 20 7b 63 6f 6d 6d 65 6e 74 20 63 6f  .    {comment co
03d0: 6d 6d 65 6e 74 7d 0a 20 20 20 20 7b 45 58 50 4c  mment}.    {EXPL
03e0: 41 49 4e 20 65 78 70 6c 61 69 6e 7d 0a 20 20 20  AIN explain}.   
03f0: 20 7b 65 78 70 72 65 73 73 69 6f 6e 20 65 78 70   {expression exp
0400: 72 7d 0a 20 20 20 20 7b 7b 42 45 47 49 4e 20 54  r}.    {{BEGIN T
0410: 52 41 4e 53 41 43 54 49 4f 4e 7d 20 74 72 61 6e  RANSACTION} tran
0420: 73 61 63 74 69 6f 6e 7d 0a 20 20 20 20 7b 7b 43  saction}.    {{C
0430: 4f 4d 4d 49 54 20 54 52 41 4e 53 41 43 54 49 4f  OMMIT TRANSACTIO
0440: 4e 7d 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 43  N} transaction C
0450: 4f 4d 4d 49 54 7d 0a 20 20 20 20 7b 7b 45 4e 44  OMMIT}.    {{END
0460: 20 54 52 41 4e 53 41 43 54 49 4f 4e 7d 20 74 72   TRANSACTION} tr
0470: 61 6e 73 61 63 74 69 6f 6e 20 43 4f 4d 4d 49 54  ansaction COMMIT
0480: 7d 0a 20 20 20 20 7b 7b 52 4f 4c 4c 42 41 43 4b  }.    {{ROLLBACK
0490: 20 54 52 41 4e 53 41 43 54 49 4f 4e 7d 20 74 72   TRANSACTION} tr
04a0: 61 6e 73 61 63 74 69 6f 6e 20 52 4f 4c 4c 42 41  ansaction ROLLBA
04b0: 43 4b 7d 0a 20 20 20 20 7b 53 41 56 45 50 4f 49  CK}.    {SAVEPOI
04c0: 4e 54 20 73 61 76 65 70 6f 69 6e 74 7d 0a 20 20  NT savepoint}.  
04d0: 20 20 7b 7b 52 45 4c 45 41 53 45 20 53 41 56 45    {{RELEASE SAVE
04e0: 50 4f 49 4e 54 7d 20 73 61 76 65 70 6f 69 6e 74  POINT} savepoint
04f0: 20 53 41 56 45 50 4f 49 4e 54 7d 0a 20 20 20 20   SAVEPOINT}.    
0500: 7b 50 52 41 47 4d 41 20 70 72 61 67 6d 61 2e 68  {PRAGMA pragma.h
0510: 74 6d 6c 7d 0a 20 20 20 20 7b 7b 4f 4e 20 43 4f  tml}.    {{ON CO
0520: 4e 46 4c 49 43 54 20 63 6c 61 75 73 65 7d 20 63  NFLICT clause} c
0530: 6f 6e 66 6c 69 63 74 7d 0a 20 20 20 20 7b 7b 43  onflict}.    {{C
0540: 52 45 41 54 45 20 56 49 45 57 7d 20 63 72 65 61  REATE VIEW} crea
0550: 74 65 76 69 65 77 7d 0a 20 20 20 20 7b 7b 44 52  teview}.    {{DR
0560: 4f 50 20 56 49 45 57 7d 20 64 72 6f 70 76 69 65  OP VIEW} dropvie
0570: 77 7d 0a 20 20 20 20 7b 7b 43 52 45 41 54 45 20  w}.    {{CREATE 
0580: 54 52 49 47 47 45 52 7d 20 63 72 65 61 74 65 74  TRIGGER} createt
0590: 72 69 67 67 65 72 7d 0a 20 20 20 20 7b 7b 44 52  rigger}.    {{DR
05a0: 4f 50 20 54 52 49 47 47 45 52 7d 20 64 72 6f 70  OP TRIGGER} drop
05b0: 74 72 69 67 67 65 72 7d 0a 20 20 20 20 7b 7b 41  trigger}.    {{A
05c0: 54 54 41 43 48 20 44 41 54 41 42 41 53 45 7d 20  TTACH DATABASE} 
05d0: 61 74 74 61 63 68 7d 0a 20 20 20 20 7b 7b 44 45  attach}.    {{DE
05e0: 54 41 43 48 20 44 41 54 41 42 41 53 45 7d 20 64  TACH DATABASE} d
05f0: 65 74 61 63 68 7d 0a 20 20 20 20 7b 52 45 49 4e  etach}.    {REIN
0600: 44 45 58 20 72 65 69 6e 64 65 78 7d 0a 20 20 20  DEX reindex}.   
0610: 20 7b 7b 41 4c 54 45 52 20 54 41 42 4c 45 7d 20   {{ALTER TABLE} 
0620: 61 6c 74 65 72 74 61 62 6c 65 7d 0a 20 20 20 20  altertable}.    
0630: 7b 7b 41 4e 41 4c 59 5a 45 7d 20 61 6e 61 6c 79  {{ANALYZE} analy
0640: 7a 65 7d 0a 20 20 20 20 7b 7b 49 4e 44 45 58 45  ze}.    {{INDEXE
0650: 44 20 42 59 7d 20 69 6e 64 65 78 65 64 62 79 7d  D BY} indexedby}
0660: 0a 20 20 20 20 7b 7b 61 67 67 72 65 67 61 74 65  .    {{aggregate
0670: 20 66 75 6e 63 74 69 6f 6e 73 7d 20 61 67 67 66   functions} aggf
0680: 75 6e 63 20 61 67 67 66 75 6e 63 7d 0a 20 20 20  unc aggfunc}.   
0690: 20 7b 7b 63 6f 72 65 20 66 75 6e 63 74 69 6f 6e   {{core function
06a0: 73 7d 20 63 6f 72 65 66 75 6e 63 20 63 6f 72 65  s} corefunc core
06b0: 66 75 6e 63 7d 0a 20 20 20 20 7b 7b 64 61 74 65  func}.    {{date
06c0: 20 61 6e 64 20 74 69 6d 65 20 66 75 6e 63 74 69   and time functi
06d0: 6f 6e 73 7d 20 64 61 74 65 66 75 6e 63 20 64 61  ons} datefunc da
06e0: 74 65 66 75 6e 63 7d 0a 20 20 20 20 7b 6b 65 79  tefunc}.    {key
06f0: 77 6f 72 64 73 20 6b 65 79 77 6f 72 64 73 20 7b  words keywords {
0700: 53 51 4c 20 6b 65 79 77 6f 72 64 73 7d 7d 0a 20  SQL keywords}}. 
0710: 20 7d 0a 20 20 73 65 74 20 6c 61 6e 67 5f 73 65   }.  set lang_se
0720: 63 74 69 6f 6e 5f 62 72 65 61 6b 20 5b 65 78 70  ction_break [exp
0730: 72 20 7b 28 5b 6c 6c 65 6e 67 74 68 20 24 6c 61  r {([llength $la
0740: 6e 67 5f 73 65 63 74 69 6f 6e 5f 6c 69 73 74 5d  ng_section_list]
0750: 2b 32 29 2f 33 7d 5d 0a 20 20 66 6f 72 65 61 63  +2)/3}].  foreac
0760: 68 20 7b 73 65 63 74 69 6f 6e 7d 20 5b 6c 73 6f  h {section} [lso
0770: 72 74 20 2d 69 6e 64 65 78 20 30 20 2d 64 69 63  rt -index 0 -dic
0780: 74 69 6f 6e 61 72 79 20 24 6c 61 6e 67 5f 73 65  tionary $lang_se
0790: 63 74 69 6f 6e 5f 6c 69 73 74 5d 20 7b 0a 20 20  ction_list] {.  
07a0: 66 6f 72 65 61 63 68 20 7b 73 5f 74 69 74 6c 65  foreach {s_title
07b0: 20 73 5f 74 61 67 20 73 5f 6b 77 7d 20 24 73 65   s_tag s_kw} $se
07c0: 63 74 69 6f 6e 20 7b 7d 0a 20 20 69 66 20 7b 24  ction {}.  if {$
07d0: 73 5f 6b 77 20 3d 3d 20 22 22 7d 20 7b 0a 20 20  s_kw == ""} {.  
07e0: 20 20 73 65 74 20 73 5f 6b 77 20 24 73 5f 74 69    set s_kw $s_ti
07f0: 74 6c 65 0a 20 20 7d 0a 20 20 69 66 20 7b 24 73  tle.  }.  if {$s
0800: 5f 74 61 67 3d 3d 22 70 72 61 67 6d 61 2e 68 74  _tag=="pragma.ht
0810: 6d 6c 22 7d 20 7b 0a 20 20 20 20 73 65 74 20 75  ml"} {.    set u
0820: 72 6c 20 24 73 5f 74 61 67 0a 20 20 7d 20 65 6c  rl $s_tag.  } el
0830: 73 65 20 7b 0a 20 20 20 20 73 65 74 20 75 72 6c  se {.    set url
0840: 20 6c 61 6e 67 5f 24 73 5f 74 61 67 2e 68 74 6d   lang_$s_tag.htm
0850: 6c 0a 20 20 7d 0a 20 20 68 64 5f 72 65 73 6f 6c  l.  }.  hd_resol
0860: 76 65 20 22 3c 6c 69 3e 5c 5b 24 73 5f 6b 77 7c  ve "<li>\[$s_kw|
0870: 24 73 5f 74 69 74 6c 65 5c 5d 3c 2f 6c 69 3e 22  $s_title\]</li>"
0880: 0a 20 20 69 6e 63 72 20 69 0a 20 20 69 66 20 7b  .  incr i.  if {
0890: 24 69 3d 3d 24 6c 61 6e 67 5f 73 65 63 74 69 6f  $i==$lang_sectio
08a0: 6e 5f 62 72 65 61 6b 20 7c 7c 20 24 69 3d 3d 32  n_break || $i==2
08b0: 2a 24 6c 61 6e 67 5f 73 65 63 74 69 6f 6e 5f 62  *$lang_section_b
08c0: 72 65 61 6b 7d 20 7b 0a 20 20 20 20 68 64 5f 70  reak} {.    hd_p
08d0: 75 74 73 20 22 3c 2f 75 6c 3e 3c 2f 74 64 3e 3c  uts "</ul></td><
08e0: 74 64 20 76 61 6c 69 67 6e 3d 5c 22 74 6f 70 5c  td valign=\"top\
08f0: 22 3e 3c 75 6c 3e 22 0a 20 20 7d 0a 7d 0a 3c 2f  "><ul>".  }.}.</
0900: 74 63 6c 3e 0a 3c 2f 75 6c 3e 3c 2f 74 64 3e 3c  tcl>.</ul></td><
0910: 2f 74 72 3e 3c 2f 74 61 62 6c 65 3e 0a 0a 3c 70  /tr></table>..<p
0920: 3e 5e 54 68 65 20 72 6f 75 74 69 6e 65 73 20 5b  >^The routines [
0930: 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f  sqlite3_prepare_
0940: 76 32 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f  v2()], [sqlite3_
0950: 70 72 65 70 61 72 65 28 29 5d 2c 0a 5b 73 71 6c  prepare()],.[sql
0960: 69 74 65 33 5f 70 72 65 70 61 72 65 31 36 28 29  ite3_prepare16()
0970: 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70  ], [sqlite3_prep
0980: 61 72 65 31 36 5f 76 32 28 29 5d 2c 20 0a 5b 73  are16_v2()], .[s
0990: 71 6c 69 74 65 33 5f 65 78 65 63 28 29 5d 2c 20  qlite3_exec()], 
09a0: 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f 67 65 74  and [sqlite3_get
09b0: 5f 74 61 62 6c 65 28 29 5d 20 61 63 63 65 70 74  _table()] accept
09c0: 0a 61 6e 20 53 51 4c 20 73 74 61 74 65 6d 65 6e  .an SQL statemen
09d0: 74 20 6c 69 73 74 20 28 73 71 6c 2d 73 74 6d 74  t list (sql-stmt
09e0: 2d 6c 69 73 74 29 20 77 68 69 63 68 20 69 73 20  -list) which is 
09f0: 61 20 73 65 6d 69 63 6f 6c 6f 6e 2d 73 65 70 61  a semicolon-sepa
0a00: 72 61 74 65 64 0a 6c 69 73 74 20 6f 66 20 73 74  rated.list of st
0a10: 61 74 65 6d 65 6e 74 73 2e 3c 2f 70 3e 0a 0a 3c  atements.</p>..<
0a20: 74 63 6c 3e 42 75 62 62 6c 65 44 69 61 67 72 61  tcl>BubbleDiagra
0a30: 6d 20 73 71 6c 2d 73 74 6d 74 2d 6c 69 73 74 3c  m sql-stmt-list<
0a40: 2f 74 63 6c 3e 0a 0a 3c 70 3e 45 61 63 68 20 53  /tcl>..<p>Each S
0a50: 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 69 6e 20  QL statement in 
0a60: 74 68 65 20 73 74 61 74 65 6d 65 6e 74 20 6c 69  the statement li
0a70: 73 74 20 69 73 20 61 6e 20 69 6e 73 74 61 6e 63  st is an instanc
0a80: 65 20 6f 66 20 74 68 65 0a 66 6f 6c 6c 6f 77 69  e of the.followi
0a90: 6e 67 3a 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 42 75  ng:</p>..<tcl>Bu
0aa0: 62 62 6c 65 44 69 61 67 72 61 6d 20 73 71 6c 2d  bbleDiagram sql-
0ab0: 73 74 6d 74 3c 2f 74 63 6c 3e 0a 0a 3c 74 63 6c  stmt</tcl>..<tcl
0ac0: 3e 0a 70 72 6f 63 20 4f 70 65 72 61 74 6f 72 20  >.proc Operator 
0ad0: 7b 6e 61 6d 65 7d 20 7b 0a 20 20 72 65 74 75 72  {name} {.  retur
0ae0: 6e 20 22 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 5c  n "<font color=\
0af0: 22 23 32 63 32 63 66 30 5c 22 3e 3c 62 69 67 3e  "#2c2cf0\"><big>
0b00: 24 6e 61 6d 65 3c 2f 62 69 67 3e 3c 2f 66 6f 6e  $name</big></fon
0b10: 74 3e 22 0a 7d 0a 70 72 6f 63 20 4e 6f 6e 74 65  t>".}.proc Nonte
0b20: 72 6d 69 6e 61 6c 20 7b 6e 61 6d 65 7d 20 7b 0a  rminal {name} {.
0b30: 20 20 72 65 74 75 72 6e 20 22 3c 69 3e 3c 66 6f    return "<i><fo
0b40: 6e 74 20 63 6f 6c 6f 72 3d 5c 22 23 66 66 33 34  nt color=\"#ff34
0b50: 33 34 5c 22 3e 24 6e 61 6d 65 3c 2f 66 6f 6e 74  34\">$name</font
0b60: 3e 3c 2f 69 3e 22 0a 7d 0a 70 72 6f 63 20 4b 65  ></i>".}.proc Ke
0b70: 79 77 6f 72 64 20 7b 6e 61 6d 65 7d 20 7b 0a 20  yword {name} {. 
0b80: 20 72 65 74 75 72 6e 20 22 3c 66 6f 6e 74 20 63   return "<font c
0b90: 6f 6c 6f 72 3d 5c 22 23 32 63 32 63 66 30 5c 22  olor=\"#2c2cf0\"
0ba0: 3e 24 6e 61 6d 65 3c 2f 66 6f 6e 74 3e 22 0a 7d  >$name</font>".}
0bb0: 0a 70 72 6f 63 20 45 78 61 6d 70 6c 65 20 7b 74  .proc Example {t
0bc0: 65 78 74 7d 20 7b 0a 20 20 68 64 5f 70 75 74 73  ext} {.  hd_puts
0bd0: 20 22 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70   "<blockquote><p
0be0: 72 65 3e 24 74 65 78 74 3c 2f 70 72 65 3e 3c 2f  re>$text</pre></
0bf0: 62 6c 6f 63 6b 71 75 6f 74 65 3e 22 0a 7d 0a 0a  blockquote>".}..
0c00: 70 72 6f 63 20 53 65 63 74 69 6f 6e 20 7b 6e 61  proc Section {na
0c10: 6d 65 20 6c 61 62 65 6c 20 6b 65 79 77 6f 72 64  me label keyword
0c20: 73 7d 20 7b 0a 20 20 67 6c 6f 62 61 6c 20 44 4f  s} {.  global DO
0c30: 43 0a 20 20 68 64 5f 63 6c 6f 73 65 5f 6d 61 69  C.  hd_close_mai
0c40: 6e 0a 20 20 68 64 5f 6f 70 65 6e 5f 6d 61 69 6e  n.  hd_open_main
0c50: 20 6c 61 6e 67 5f 24 6c 61 62 65 6c 2e 68 74 6d   lang_$label.htm
0c60: 6c 0a 20 20 68 64 5f 68 65 61 64 65 72 20 22 53  l.  hd_header "S
0c70: 51 4c 69 74 65 20 51 75 65 72 79 20 4c 61 6e 67  QLite Query Lang
0c80: 75 61 67 65 3a 20 24 6e 61 6d 65 22 20 24 44 4f  uage: $name" $DO
0c90: 43 2f 70 61 67 65 73 2f 6c 61 6e 67 2e 69 6e 0a  C/pages/lang.in.
0ca0: 20 20 65 76 61 6c 20 68 64 5f 6b 65 79 77 6f 72    eval hd_keywor
0cb0: 64 73 20 24 6b 65 79 77 6f 72 64 73 0a 20 20 69  ds $keywords.  i
0cc0: 66 20 7b 5b 6c 73 65 61 72 63 68 20 24 6b 65 79  f {[lsearch $key
0cd0: 77 6f 72 64 73 20 24 6e 61 6d 65 5d 20 3d 3d 20  words $name] == 
0ce0: 2d 31 20 26 26 20 5b 6c 73 65 61 72 63 68 20 24  -1 && [lsearch $
0cf0: 6b 65 79 77 6f 72 64 73 20 2a 24 6e 61 6d 65 5d  keywords *$name]
0d00: 20 3d 3d 20 2d 31 7d 20 7b 0a 20 20 20 20 65 76   == -1} {.    ev
0d10: 61 6c 20 68 64 5f 6b 65 79 77 6f 72 64 73 20 7b  al hd_keywords {
0d20: 20 24 6e 61 6d 65 20 7d 0a 20 20 7d 0a 20 20 68   $name }.  }.  h
0d30: 64 5f 70 75 74 73 20 7b 3c 68 31 20 61 6c 69 67  d_puts {<h1 alig
0d40: 6e 3d 22 63 65 6e 74 65 72 22 3e 53 51 4c 20 41  n="center">SQL A
0d50: 73 20 55 6e 64 65 72 73 74 6f 6f 64 20 42 79 20  s Understood By 
0d60: 53 51 4c 69 74 65 3c 2f 68 31 3e 7d 0a 20 20 68  SQLite</h1>}.  h
0d70: 64 5f 70 75 74 73 20 7b 3c 70 3e 3c 61 20 68 72  d_puts {<p><a hr
0d80: 65 66 3d 22 6c 61 6e 67 2e 68 74 6d 6c 22 3e 5b  ef="lang.html">[
0d90: 54 6f 70 5d 3c 2f 61 3e 3c 2f 70 3e 7d 0a 20 20  Top]</a></p>}.  
0da0: 68 64 5f 70 75 74 73 20 22 3c 68 32 3e 24 6e 61  hd_puts "<h2>$na
0db0: 6d 65 3c 2f 68 32 3e 22 0a 7d 0a 0a 23 23 23 23  me</h2>".}..####
0dc0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0dd0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0de0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0df0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0e00: 23 23 23 23 23 23 23 23 23 23 23 0a 53 65 63 74  ###########.Sect
0e10: 69 6f 6e 20 7b 41 4c 54 45 52 20 54 41 42 4c 45  ion {ALTER TABLE
0e20: 7d 20 61 6c 74 65 72 74 61 62 6c 65 20 7b 7b 41  } altertable {{A
0e30: 4c 54 45 52 20 54 41 42 4c 45 7d 20 7b 2a 41 4c  LTER TABLE} {*AL
0e40: 54 45 52 7d 7d 0a 0a 42 75 62 62 6c 65 44 69 61  TER}}..BubbleDia
0e50: 67 72 61 6d 20 61 6c 74 65 72 2d 74 61 62 6c 65  gram alter-table
0e60: 2d 73 74 6d 74 20 31 0a 3c 2f 74 63 6c 3e 0a 0a  -stmt 1.</tcl>..
0e70: 3c 70 3e 53 51 4c 69 74 65 20 73 75 70 70 6f 72  <p>SQLite suppor
0e80: 74 73 20 61 20 6c 69 6d 69 74 65 64 20 73 75 62  ts a limited sub
0e90: 73 65 74 20 6f 66 20 41 4c 54 45 52 20 54 41 42  set of ALTER TAB
0ea0: 4c 45 2e 0a 54 68 65 20 41 4c 54 45 52 20 54 41  LE..The ALTER TA
0eb0: 42 4c 45 20 63 6f 6d 6d 61 6e 64 20 69 6e 20 53  BLE command in S
0ec0: 51 4c 69 74 65 20 61 6c 6c 6f 77 73 20 74 68 65  QLite allows the
0ed0: 20 75 73 65 72 20 74 6f 20 72 65 6e 61 6d 65 20   user to rename 
0ee0: 61 20 74 61 62 6c 65 0a 6f 72 20 74 6f 20 61 64  a table.or to ad
0ef0: 64 20 61 20 6e 65 77 20 63 6f 6c 75 6d 6e 20 74  d a new column t
0f00: 6f 20 61 6e 20 65 78 69 73 74 69 6e 67 20 74 61  o an existing ta
0f10: 62 6c 65 2e 20 49 74 20 69 73 20 6e 6f 74 20 70  ble. It is not p
0f20: 6f 73 73 69 62 6c 65 0a 74 6f 20 72 65 6e 61 6d  ossible.to renam
0f30: 65 20 61 20 63 6f 6c 75 6d 6e 2c 20 72 65 6d 6f  e a column, remo
0f40: 76 65 20 61 20 63 6f 6c 75 6d 6e 2c 20 6f 72 20  ve a column, or 
0f50: 61 64 64 20 6f 72 20 72 65 6d 6f 76 65 20 63 6f  add or remove co
0f60: 6e 73 74 72 61 69 6e 74 73 20 66 72 6f 6d 20 61  nstraints from a
0f70: 20 74 61 62 6c 65 2e 0a 3c 2f 70 3e 0a 0a 3c 70   table..</p>..<p
0f80: 3e 20 5e 28 54 68 65 20 52 45 4e 41 4d 45 20 54  > ^(The RENAME T
0f90: 4f 20 73 79 6e 74 61 78 20 69 73 20 75 73 65 64  O syntax is used
0fa0: 20 74 6f 20 72 65 6e 61 6d 65 20 74 68 65 20 74   to rename the t
0fb0: 61 62 6c 65 20 69 64 65 6e 74 69 66 69 65 64 20  able identified 
0fc0: 62 79 20 0a 3c 69 3e 26 23 39 31 3b 64 61 74 61  by .<i>&#91;data
0fd0: 62 61 73 65 2d 6e 61 6d 65 2e 26 23 39 33 3b 74  base-name.&#93;t
0fe0: 61 62 6c 65 2d 6e 61 6d 65 3c 2f 69 3e 20 74 6f  able-name</i> to
0ff0: 20 3c 69 3e 6e 65 77 2d 74 61 62 6c 65 2d 6e 61   <i>new-table-na
1000: 6d 65 3c 2f 69 3e 2e 29 5e 0a 54 68 69 73 20 63  me</i>.)^.This c
1010: 6f 6d 6d 61 6e 64 20 0a 63 61 6e 6e 6f 74 20 62  ommand .cannot b
1020: 65 20 75 73 65 64 20 74 6f 20 6d 6f 76 65 20 61  e used to move a
1030: 20 74 61 62 6c 65 20 62 65 74 77 65 65 6e 20 61   table between a
1040: 74 74 61 63 68 65 64 20 64 61 74 61 62 61 73 65  ttached database
1050: 73 2c 20 6f 6e 6c 79 20 74 6f 20 72 65 6e 61 6d  s, only to renam
1060: 65 20 0a 61 20 74 61 62 6c 65 20 77 69 74 68 69  e .a table withi
1070: 6e 20 74 68 65 20 73 61 6d 65 20 64 61 74 61 62  n the same datab
1080: 61 73 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 20 5e 49  ase.</p>..<p> ^I
1090: 66 20 74 68 65 20 74 61 62 6c 65 20 62 65 69 6e  f the table bein
10a0: 67 20 72 65 6e 61 6d 65 64 20 68 61 73 20 74 72  g renamed has tr
10b0: 69 67 67 65 72 73 20 6f 72 20 69 6e 64 69 63 65  iggers or indice
10c0: 73 2c 20 74 68 65 6e 20 74 68 65 73 65 20 72 65  s, then these re
10d0: 6d 61 69 6e 0a 61 74 74 61 63 68 65 64 20 74 6f  main.attached to
10e0: 20 74 68 65 20 74 61 62 6c 65 20 61 66 74 65 72   the table after
10f0: 20 69 74 20 68 61 73 20 62 65 65 6e 20 72 65 6e   it has been ren
1100: 61 6d 65 64 2e 20 20 5e 48 6f 77 65 76 65 72 2c  amed.  ^However,
1110: 20 69 66 20 74 68 65 72 65 20 61 72 65 0a 61 6e   if there are.an
1120: 79 20 76 69 65 77 20 64 65 66 69 6e 69 74 69 6f  y view definitio
1130: 6e 73 2c 20 6f 72 20 73 74 61 74 65 6d 65 6e 74  ns, or statement
1140: 73 20 65 78 65 63 75 74 65 64 20 62 79 20 74 72  s executed by tr
1150: 69 67 67 65 72 73 20 74 68 61 74 20 72 65 66 65  iggers that refe
1160: 72 20 74 6f 0a 74 68 65 20 74 61 62 6c 65 20 62  r to.the table b
1170: 65 69 6e 67 20 72 65 6e 61 6d 65 64 2c 20 74 68  eing renamed, th
1180: 65 73 65 20 61 72 65 20 6e 6f 74 20 61 75 74 6f  ese are not auto
1190: 6d 61 74 69 63 61 6c 6c 79 20 6d 6f 64 69 66 69  matically modifi
11a0: 65 64 20 74 6f 20 75 73 65 20 74 68 65 20 6e 65  ed to use the ne
11b0: 77 0a 74 61 62 6c 65 20 6e 61 6d 65 2e 20 49 66  w.table name. If
11c0: 20 74 68 69 73 20 69 73 20 72 65 71 75 69 72 65   this is require
11d0: 64 2c 20 74 68 65 20 74 72 69 67 67 65 72 73 20  d, the triggers 
11e0: 6f 72 20 76 69 65 77 20 64 65 66 69 6e 69 74 69  or view definiti
11f0: 6f 6e 73 20 6d 75 73 74 20 62 65 0a 64 72 6f 70  ons must be.drop
1200: 70 65 64 20 61 6e 64 20 72 65 63 72 65 61 74 65  ped and recreate
1210: 64 20 74 6f 20 75 73 65 20 74 68 65 20 6e 65 77  d to use the new
1220: 20 74 61 62 6c 65 20 6e 61 6d 65 20 62 79 20 68   table name by h
1230: 61 6e 64 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 5e 49  and..</p>..<p>^I
1240: 66 20 5b 66 6f 72 65 69 67 6e 20 6b 65 79 20 63  f [foreign key c
1250: 6f 6e 73 74 72 61 69 6e 74 73 5d 20 61 72 65 20  onstraints] are 
1260: 0a 5b 66 6f 72 65 69 67 6e 5f 6b 65 79 73 20 70  .[foreign_keys p
1270: 72 61 67 6d 61 20 7c 20 65 6e 61 62 6c 65 64 5d  ragma | enabled]
1280: 20 77 68 65 6e 20 61 20 74 61 62 6c 65 20 69 73   when a table is
1290: 20 72 65 6e 61 6d 65 64 2c 20 74 68 65 6e 20 61   renamed, then a
12a0: 6e 79 0a 5b 66 6f 72 65 69 67 6e 2d 6b 65 79 2d  ny.[foreign-key-
12b0: 63 6c 61 75 73 65 20 7c 20 52 45 46 45 52 45 4e  clause | REFEREN
12c0: 43 45 53 20 63 6c 61 75 73 65 73 5d 20 69 6e 20  CES clauses] in 
12d0: 61 6e 79 20 74 61 62 6c 65 20 28 65 69 74 68 65  any table (eithe
12e0: 72 20 74 68 65 0a 74 61 62 6c 65 20 62 65 69 6e  r the.table bein
12f0: 67 20 72 65 6e 61 6d 65 64 20 6f 72 20 73 6f 6d  g renamed or som
1300: 65 20 6f 74 68 65 72 20 74 61 62 6c 65 29 0a 74  e other table).t
1310: 68 61 74 20 72 65 66 65 72 20 74 6f 20 74 68 65  hat refer to the
1320: 20 74 61 62 6c 65 20 62 65 69 6e 67 20 72 65 6e   table being ren
1330: 61 6d 65 64 20 61 72 65 20 6d 6f 64 69 66 69 65  amed are modifie
1340: 64 20 74 6f 20 72 65 66 65 72 20 0a 74 6f 20 74  d to refer .to t
1350: 68 65 20 72 65 6e 61 6d 65 64 20 74 61 62 6c 65  he renamed table
1360: 20 62 79 20 69 74 73 20 6e 65 77 20 6e 61 6d 65   by its new name
1370: 2e 0a 0a 3c 70 3e 20 5e 54 68 65 20 41 44 44 20  ...<p> ^The ADD 
1380: 43 4f 4c 55 4d 4e 20 73 79 6e 74 61 78 0a 69 73  COLUMN syntax.is
1390: 20 75 73 65 64 20 74 6f 20 61 64 64 20 61 20 6e   used to add a n
13a0: 65 77 20 63 6f 6c 75 6d 6e 20 74 6f 20 61 6e 20  ew column to an 
13b0: 65 78 69 73 74 69 6e 67 20 74 61 62 6c 65 2e 0a  existing table..
13c0: 5e 54 68 65 20 6e 65 77 20 63 6f 6c 75 6d 6e 20  ^The new column 
13d0: 69 73 20 61 6c 77 61 79 73 20 61 70 70 65 6e 64  is always append
13e0: 65 64 20 74 6f 20 74 68 65 20 65 6e 64 20 6f 66  ed to the end of
13f0: 20 74 68 65 20 6c 69 73 74 20 6f 66 20 65 78 69   the list of exi
1400: 73 74 69 6e 67 20 63 6f 6c 75 6d 6e 73 2e 0a 54  sting columns..T
1410: 68 65 20 5b 63 6f 6c 75 6d 6e 2d 64 65 66 5d 20  he [column-def] 
1420: 72 75 6c 65 20 64 65 66 69 6e 65 73 20 74 68 65  rule defines the
1430: 20 63 68 61 72 61 63 74 65 72 69 73 74 69 63 73   characteristics
1440: 20 6f 66 20 74 68 65 20 6e 65 77 20 63 6f 6c 75   of the new colu
1450: 6d 6e 2e 0a 5e 28 54 68 65 20 6e 65 77 20 63 6f  mn..^(The new co
1460: 6c 75 6d 6e 20 6d 61 79 20 74 61 6b 65 20 61 6e  lumn may take an
1470: 79 20 6f 66 20 74 68 65 20 66 6f 72 6d 73 20 70  y of the forms p
1480: 65 72 6d 69 73 73 69 62 6c 65 20 69 6e 20 61 20  ermissible in a 
1490: 5b 43 52 45 41 54 45 20 54 41 42 4c 45 5d 0a 73  [CREATE TABLE].s
14a0: 74 61 74 65 6d 65 6e 74 2c 20 77 69 74 68 20 74  tatement, with t
14b0: 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 72 65 73  he following res
14c0: 74 72 69 63 74 69 6f 6e 73 3a 29 5e 0a 3c 75 6c  trictions:)^.<ul
14d0: 3e 0a 3c 6c 69 3e 5e 54 68 65 20 63 6f 6c 75 6d  >.<li>^The colum
14e0: 6e 20 6d 61 79 20 6e 6f 74 20 68 61 76 65 20 61  n may not have a
14f0: 20 50 52 49 4d 41 52 59 20 4b 45 59 20 6f 72 20   PRIMARY KEY or 
1500: 55 4e 49 51 55 45 20 63 6f 6e 73 74 72 61 69 6e  UNIQUE constrain
1510: 74 2e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 5e 54 68 65  t.</li>.<li>^The
1520: 20 63 6f 6c 75 6d 6e 20 6d 61 79 20 6e 6f 74 20   column may not 
1530: 68 61 76 65 20 61 20 64 65 66 61 75 6c 74 20 76  have a default v
1540: 61 6c 75 65 20 6f 66 20 43 55 52 52 45 4e 54 5f  alue of CURRENT_
1550: 54 49 4d 45 2c 20 43 55 52 52 45 4e 54 5f 44 41  TIME, CURRENT_DA
1560: 54 45 2c 20 0a 20 20 20 20 43 55 52 52 45 4e 54  TE, .    CURRENT
1570: 5f 54 49 4d 45 53 54 41 4d 50 2c 20 6f 72 20 61  _TIMESTAMP, or a
1580: 6e 20 65 78 70 72 65 73 73 69 6f 6e 20 69 6e 20  n expression in 
1590: 70 61 72 65 6e 74 68 65 73 65 73 2e 3c 2f 6c 69  parentheses.</li
15a0: 3e 0a 3c 6c 69 3e 5e 49 66 20 61 20 4e 4f 54 20  >.<li>^If a NOT 
15b0: 4e 55 4c 4c 20 63 6f 6e 73 74 72 61 69 6e 74 20  NULL constraint 
15c0: 69 73 20 73 70 65 63 69 66 69 65 64 2c 20 74 68  is specified, th
15d0: 65 6e 20 74 68 65 20 63 6f 6c 75 6d 6e 20 6d 75  en the column mu
15e0: 73 74 20 68 61 76 65 20 61 0a 20 20 20 20 64 65  st have a.    de
15f0: 66 61 75 6c 74 20 76 61 6c 75 65 20 6f 74 68 65  fault value othe
1600: 72 20 74 68 61 6e 20 4e 55 4c 4c 2e 0a 3c 6c 69  r than NULL..<li
1610: 3e 5e 49 66 20 5b 66 6f 72 65 69 67 6e 20 6b 65  >^If [foreign ke
1620: 79 20 63 6f 6e 73 74 72 61 69 6e 74 73 5d 20 61  y constraints] a
1630: 72 65 20 5b 66 6f 72 65 69 67 6e 5f 6b 65 79 73  re [foreign_keys
1640: 20 70 72 61 67 6d 61 20 7c 20 65 6e 61 62 6c 65   pragma | enable
1650: 64 5d 20 61 6e 64 0a 20 20 20 20 61 20 63 6f 6c  d] and.    a col
1660: 75 6d 6e 20 77 69 74 68 20 61 20 5b 66 6f 72 65  umn with a [fore
1670: 69 67 6e 2d 6b 65 79 2d 63 6c 61 75 73 65 20 7c  ign-key-clause |
1680: 20 52 45 46 45 52 45 4e 43 45 53 20 63 6c 61 75   REFERENCES clau
1690: 73 65 5d 0a 20 20 20 20 69 73 20 61 64 64 65 64  se].    is added
16a0: 2c 20 74 68 65 20 63 6f 6c 75 6d 6e 20 6d 75 73  , the column mus
16b0: 74 20 68 61 76 65 20 61 20 64 65 66 61 75 6c 74  t have a default
16c0: 20 76 61 6c 75 65 20 6f 66 20 4e 55 4c 4c 2e 0a   value of NULL..
16d0: 3c 2f 75 6c 3e 0a 0a 3c 70 3e 5e 4e 6f 74 65 20  </ul>..<p>^Note 
16e0: 61 6c 73 6f 20 74 68 61 74 20 77 68 65 6e 20 61  also that when a
16f0: 64 64 69 6e 67 20 61 20 43 48 45 43 4b 20 63 6f  dding a CHECK co
1700: 6e 73 74 72 61 69 6e 74 2c 20 74 68 65 20 43 48  nstraint, the CH
1710: 45 43 4b 20 63 6f 6e 73 74 72 61 69 6e 74 0a 69  ECK constraint.i
1720: 73 20 6e 6f 74 20 74 65 73 74 65 64 20 61 67 61  s not tested aga
1730: 69 6e 73 74 20 70 72 65 65 78 69 73 74 69 6e 67  inst preexisting
1740: 20 72 6f 77 73 20 6f 66 20 74 68 65 20 74 61 62   rows of the tab
1750: 6c 65 2e 0a 5e 54 68 69 73 20 63 61 6e 20 72 65  le..^This can re
1760: 73 75 6c 74 20 69 6e 20 61 20 74 61 62 6c 65 20  sult in a table 
1770: 74 68 61 74 20 63 6f 6e 74 61 69 6e 73 20 64 61  that contains da
1780: 74 61 20 74 68 61 74 0a 69 73 20 69 6e 20 76 69  ta that.is in vi
1790: 6f 6c 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 43  olation of the C
17a0: 48 45 43 4b 20 63 6f 6e 73 74 72 61 69 6e 74 2e  HECK constraint.
17b0: 20 20 46 75 74 75 72 65 20 76 65 72 73 69 6f 6e    Future version
17c0: 73 20 6f 66 20 53 51 4c 69 74 65 20 6d 69 67 68  s of SQLite migh
17d0: 74 0a 63 68 61 6e 67 65 20 74 6f 20 76 61 6c 69  t.change to vali
17e0: 64 61 74 65 20 43 48 45 43 4b 20 63 6f 6e 73 74  date CHECK const
17f0: 72 61 69 6e 74 73 20 61 73 20 74 68 65 79 20 61  raints as they a
1800: 72 65 20 61 64 64 65 64 2e 3c 2f 70 3e 0a 0a 3c  re added.</p>..<
1810: 70 3e 20 54 68 65 20 65 78 65 63 75 74 69 6f 6e  p> The execution
1820: 20 74 69 6d 65 20 6f 66 20 74 68 65 20 41 4c 54   time of the ALT
1830: 45 52 20 54 41 42 4c 45 20 63 6f 6d 6d 61 6e 64  ER TABLE command
1840: 20 69 73 20 69 6e 64 65 70 65 6e 64 65 6e 74 20   is independent 
1850: 6f 66 0a 74 68 65 20 61 6d 6f 75 6e 74 20 6f 66  of.the amount of
1860: 20 64 61 74 61 20 69 6e 20 74 68 65 20 74 61 62   data in the tab
1870: 6c 65 2e 20 20 54 68 65 20 41 4c 54 45 52 20 54  le.  The ALTER T
1880: 41 42 4c 45 20 63 6f 6d 6d 61 6e 64 20 72 75 6e  ABLE command run
1890: 73 20 61 73 20 71 75 69 63 6b 6c 79 0a 6f 6e 20  s as quickly.on 
18a0: 61 20 74 61 62 6c 65 20 77 69 74 68 20 31 30 20  a table with 10 
18b0: 6d 69 6c 6c 69 6f 6e 20 72 6f 77 73 20 61 73 20  million rows as 
18c0: 69 74 20 64 6f 65 73 20 6f 6e 20 61 20 74 61 62  it does on a tab
18d0: 6c 65 20 77 69 74 68 20 31 20 72 6f 77 2e 0a 3c  le with 1 row..<
18e0: 2f 70 3e 0a 0a 3c 70 3e 41 66 74 65 72 20 41 44  /p>..<p>After AD
18f0: 44 20 43 4f 4c 55 4d 4e 20 68 61 73 20 62 65 65  D COLUMN has bee
1900: 6e 20 72 75 6e 20 6f 6e 20 61 20 64 61 74 61 62  n run on a datab
1910: 61 73 65 2c 20 74 68 61 74 20 64 61 74 61 62 61  ase, that databa
1920: 73 65 20 77 69 6c 6c 20 6e 6f 74 0a 62 65 20 72  se will not.be r
1930: 65 61 64 61 62 6c 65 20 62 79 20 53 51 4c 69 74  eadable by SQLit
1940: 65 20 76 65 72 73 69 6f 6e 20 33 2e 31 2e 33 20  e version 3.1.3 
1950: 61 6e 64 20 65 61 72 6c 69 65 72 2e 3c 2f 70 3e  and earlier.</p>
1960: 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23  ..<tcl>.########
1970: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1980: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1990: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
19a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
19b0: 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b  ######.Section {
19c0: 41 4e 41 4c 59 5a 45 7d 20 61 6e 61 6c 79 7a 65  ANALYZE} analyze
19d0: 20 41 4e 41 4c 59 5a 45 0a 0a 42 75 62 62 6c 65   ANALYZE..Bubble
19e0: 44 69 61 67 72 61 6d 20 61 6e 61 6c 79 7a 65 2d  Diagram analyze-
19f0: 73 74 6d 74 20 31 0a 3c 2f 74 63 6c 3e 0a 0a 3c  stmt 1.</tcl>..<
1a00: 70 3e 20 5e 54 68 65 20 41 4e 41 4c 59 5a 45 20  p> ^The ANALYZE 
1a10: 63 6f 6d 6d 61 6e 64 20 67 61 74 68 65 72 73 20  command gathers 
1a20: 73 74 61 74 69 73 74 69 63 73 20 61 62 6f 75 74  statistics about
1a30: 20 69 6e 64 69 63 65 73 20 61 6e 64 20 73 74 6f   indices and sto
1a40: 72 65 73 20 74 68 65 6d 0a 69 6e 20 61 20 73 70  res them.in a sp
1a50: 65 63 69 61 6c 20 74 61 62 6c 65 73 20 69 6e 20  ecial tables in 
1a60: 74 68 65 20 64 61 74 61 62 61 73 65 20 77 68 65  the database whe
1a70: 72 65 20 74 68 65 20 71 75 65 72 79 20 6f 70 74  re the query opt
1a80: 69 6d 69 7a 65 72 20 63 61 6e 20 75 73 65 0a 74  imizer can use.t
1a90: 68 65 6d 20 74 6f 20 68 65 6c 70 20 6d 61 6b 65  hem to help make
1aa0: 20 62 65 74 74 65 72 20 69 6e 64 65 78 20 63 68   better index ch
1ab0: 6f 69 63 65 73 2e 0a 5e 49 66 20 6e 6f 20 61 72  oices..^If no ar
1ac0: 67 75 6d 65 6e 74 73 20 61 72 65 20 67 69 76 65  guments are give
1ad0: 6e 2c 20 61 6c 6c 20 69 6e 64 69 63 65 73 20 69  n, all indices i
1ae0: 6e 20 61 6c 6c 20 61 74 74 61 63 68 65 64 20 64  n all attached d
1af0: 61 74 61 62 61 73 65 73 20 61 72 65 0a 61 6e 61  atabases are.ana
1b00: 6c 79 7a 65 64 2e 20 20 5e 49 66 20 61 20 64 61  lyzed.  ^If a da
1b10: 74 61 62 61 73 65 20 6e 61 6d 65 20 69 73 20 67  tabase name is g
1b20: 69 76 65 6e 20 61 73 20 74 68 65 20 61 72 67 75  iven as the argu
1b30: 6d 65 6e 74 2c 20 61 6c 6c 20 69 6e 64 69 63 65  ment, all indice
1b40: 73 0a 69 6e 20 74 68 61 74 20 6f 6e 65 20 64 61  s.in that one da
1b50: 74 61 62 61 73 65 20 61 72 65 20 61 6e 61 6c 79  tabase are analy
1b60: 7a 65 64 2e 20 20 5e 49 66 20 74 68 65 20 61 72  zed.  ^If the ar
1b70: 67 75 6d 65 6e 74 20 69 73 20 61 20 74 61 62 6c  gument is a tabl
1b80: 65 20 6e 61 6d 65 2c 0a 74 68 65 6e 20 6f 6e 6c  e name,.then onl
1b90: 79 20 69 6e 64 69 63 65 73 20 61 73 73 6f 63 69  y indices associ
1ba0: 61 74 65 64 20 77 69 74 68 20 74 68 61 74 20 6f  ated with that o
1bb0: 6e 65 20 74 61 62 6c 65 20 61 72 65 20 61 6e 61  ne table are ana
1bc0: 6c 79 7a 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 20  lyzed.</p>..<p> 
1bd0: 5e 54 68 65 20 64 65 66 61 75 6c 74 20 69 6d 70  ^The default imp
1be0: 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 73 74 6f 72  lementation stor
1bf0: 65 73 20 61 6c 6c 20 73 74 61 74 69 73 74 69 63  es all statistic
1c00: 73 20 69 6e 20 61 20 73 69 6e 67 6c 65 0a 74 61  s in a single.ta
1c10: 62 6c 65 20 6e 61 6d 65 64 20 3c 62 3e 73 71 6c  ble named <b>sql
1c20: 69 74 65 5f 73 74 61 74 31 3c 2f 62 3e 2e 20 20  ite_stat1</b>.  
1c30: 5e 49 66 20 53 51 4c 69 74 65 20 69 73 20 63 6f  ^If SQLite is co
1c40: 6d 70 69 6c 65 64 20 77 69 74 68 20 74 68 65 0a  mpiled with the.
1c50: 5b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53  [SQLITE_ENABLE_S
1c60: 54 41 54 32 5d 20 6f 70 74 69 6f 6e 2c 20 74 68  TAT2] option, th
1c70: 65 6e 20 61 64 64 69 74 69 6f 6e 61 6c 20 68 69  en additional hi
1c80: 73 74 6f 67 72 61 6d 20 64 61 74 61 20 69 73 0a  stogram data is.
1c90: 63 6f 6c 6c 65 63 74 65 64 20 61 6e 64 20 73 74  collected and st
1ca0: 6f 72 65 64 20 69 6e 20 3c 62 3e 73 71 6c 69 74  ored in <b>sqlit
1cb0: 65 5f 73 74 61 74 32 3c 2f 62 3e 2e 0a 46 75 74  e_stat2</b>..Fut
1cc0: 75 72 65 20 65 6e 68 61 6e 63 65 6d 65 6e 74 73  ure enhancements
1cd0: 20 6d 61 79 20 63 72 65 61 74 65 0a 61 64 64 69   may create.addi
1ce0: 74 69 6f 6e 61 6c 20 74 61 62 6c 65 73 20 77 69  tional tables wi
1cf0: 74 68 20 74 68 65 20 73 61 6d 65 20 6e 61 6d 65  th the same name
1d00: 20 70 61 74 74 65 72 6e 20 65 78 63 65 70 74 20   pattern except 
1d10: 77 69 74 68 20 74 68 65 20 22 31 22 0a 6f 72 20  with the "1".or 
1d20: 22 32 22 20 63 68 61 6e 67 65 64 20 74 6f 20 61  "2" changed to a
1d30: 20 64 69 66 66 65 72 65 6e 74 20 64 69 67 69 74   different digit
1d40: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 20 5e 54 68 65 20  .</p>..<p> ^The 
1d50: 5b 44 52 4f 50 20 54 41 42 4c 45 5d 20 63 6f 6d  [DROP TABLE] com
1d60: 6d 61 6e 64 20 64 6f 65 73 0a 6e 6f 74 20 77 6f  mand does.not wo
1d70: 72 6b 20 6f 6e 20 74 68 65 20 3c 62 3e 73 71 6c  rk on the <b>sql
1d80: 69 74 65 5f 73 74 61 74 31 3c 2f 62 3e 20 6f 72  ite_stat1</b> or
1d90: 20 3c 62 3e 73 71 6c 69 74 65 5f 73 74 61 74 32   <b>sqlite_stat2
1da0: 3c 2f 62 3e 20 74 61 62 6c 65 73 2c 0a 62 75 74  </b> tables,.but
1db0: 20 61 6c 6c 20 74 68 65 20 63 6f 6e 74 65 6e 74   all the content
1dc0: 20 6f 66 20 74 68 6f 73 65 20 74 61 62 6c 65 73   of those tables
1dd0: 20 63 61 6e 20 62 65 20 71 75 65 72 69 65 64 20   can be queried 
1de0: 75 73 69 6e 67 20 5b 53 45 4c 45 43 54 5d 0a 61  using [SELECT].a
1df0: 6e 64 20 63 61 6e 20 62 65 20 64 65 6c 65 74 65  nd can be delete
1e00: 64 2c 20 61 75 67 6d 65 6e 74 65 64 2c 20 6f 72  d, augmented, or
1e10: 20 6d 6f 64 69 66 69 65 64 20 75 73 69 6e 67 20   modified using 
1e20: 74 68 65 20 5b 44 45 4c 45 54 45 5d 2c 0a 5b 49  the [DELETE],.[I
1e30: 4e 53 45 52 54 5d 2c 20 61 6e 64 20 5b 55 50 44  NSERT], and [UPD
1e40: 41 54 45 5d 20 63 6f 6d 6d 61 6e 64 73 2e 0a 41  ATE] commands..A
1e50: 70 70 72 6f 70 72 69 61 74 65 20 63 61 72 65 20  ppropriate care 
1e60: 73 68 6f 75 6c 64 20 62 65 20 75 73 65 64 20 77  should be used w
1e70: 68 65 6e 20 63 68 61 6e 67 69 6e 67 20 74 68 65  hen changing the
1e80: 20 63 6f 6e 74 65 6e 74 20 6f 66 20 74 68 65 20   content of the 
1e90: 73 74 61 74 69 73 74 69 63 73 0a 74 61 62 6c 65  statistics.table
1ea0: 73 20 61 73 20 69 6e 76 61 6c 69 64 20 63 6f 6e  s as invalid con
1eb0: 74 65 6e 74 20 63 61 6e 20 63 61 75 73 65 20 53  tent can cause S
1ec0: 51 4c 69 74 65 20 74 6f 20 73 65 6c 65 63 74 20  QLite to select 
1ed0: 69 6e 65 66 66 69 63 69 65 6e 74 0a 71 75 65 72  inefficient.quer
1ee0: 79 20 70 6c 61 6e 73 2e 20 20 47 65 6e 65 72 61  y plans.  Genera
1ef0: 6c 6c 79 20 73 70 65 61 6b 69 6e 67 2c 20 6f 6e  lly speaking, on
1f00: 65 20 73 68 6f 75 6c 64 20 6e 6f 74 20 6d 6f 64  e should not mod
1f10: 69 66 79 20 74 68 65 20 63 6f 6e 74 65 6e 74 20  ify the content 
1f20: 6f 66 0a 74 68 65 20 73 74 61 74 69 73 74 69 63  of.the statistic
1f30: 73 20 74 61 62 6c 65 73 20 62 79 20 61 6e 79 20  s tables by any 
1f40: 6d 65 63 68 61 6e 69 73 6d 20 6f 74 68 65 72 20  mechanism other 
1f50: 74 68 61 6e 20 69 6e 76 6f 6b 69 6e 67 20 74 68  than invoking th
1f60: 65 0a 41 4e 41 4c 59 5a 45 20 63 6f 6d 6d 61 6e  e.ANALYZE comman
1f70: 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 20 5e 53 74 61  d.</p>..<p> ^Sta
1f80: 74 69 73 74 69 63 73 20 67 61 74 68 65 72 65 64  tistics gathered
1f90: 20 62 79 20 41 4e 41 4c 59 5a 45 20 61 72 65 20   by ANALYZE are 
1fa0: 3c 75 3e 6e 6f 74 3c 2f 75 3e 20 61 75 74 6f 6d  <u>not</u> autom
1fb0: 61 74 69 63 61 6c 6c 79 20 75 70 64 61 74 65 64  atically updated
1fc0: 20 61 73 0a 74 68 65 20 63 6f 6e 74 65 6e 74 20   as.the content 
1fd0: 6f 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20  of the database 
1fe0: 63 68 61 6e 67 65 73 2e 20 20 49 66 20 74 68 65  changes.  If the
1ff0: 20 63 6f 6e 74 65 6e 74 20 6f 66 20 74 68 65 20   content of the 
2000: 64 61 74 61 62 61 73 65 0a 63 68 61 6e 67 65 73  database.changes
2010: 20 73 69 67 6e 69 66 69 63 61 6e 74 6c 79 2c 20   significantly, 
2020: 6f 72 20 69 66 20 74 68 65 20 64 61 74 61 62 61  or if the databa
2030: 73 65 20 73 63 68 65 6d 61 20 63 68 61 6e 67 65  se schema change
2040: 73 2c 20 74 68 65 6e 20 6f 6e 65 20 73 68 6f 75  s, then one shou
2050: 6c 64 0a 63 6f 6e 73 69 64 65 72 20 72 65 72 75  ld.consider reru
2060: 6e 6e 69 6e 67 20 74 68 65 20 41 4e 41 4c 59 5a  nning the ANALYZ
2070: 45 20 63 6f 6d 6d 61 6e 64 20 69 6e 20 6f 72 64  E command in ord
2080: 65 72 20 74 6f 20 75 70 64 61 74 65 20 74 68 65  er to update the
2090: 20 73 74 61 74 69 73 74 69 63 73 2e 3c 2f 70 3e   statistics.</p>
20a0: 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23  ..<tcl>.########
20b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
20c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
20d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
20e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
20f0: 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b  ######.Section {
2100: 41 54 54 41 43 48 20 44 41 54 41 42 41 53 45 7d  ATTACH DATABASE}
2110: 20 61 74 74 61 63 68 20 2a 41 54 54 41 43 48 0a   attach *ATTACH.
2120: 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 61  .BubbleDiagram a
2130: 74 74 61 63 68 2d 73 74 6d 74 20 31 0a 3c 2f 74  ttach-stmt 1.</t
2140: 63 6c 3e 0a 0a 3c 70 3e 20 5e 54 68 65 20 41 54  cl>..<p> ^The AT
2150: 54 41 43 48 20 44 41 54 41 42 41 53 45 20 73 74  TACH DATABASE st
2160: 61 74 65 6d 65 6e 74 20 61 64 64 73 20 61 6e 6f  atement adds ano
2170: 74 68 65 72 20 64 61 74 61 62 61 73 65 20 0a 66  ther database .f
2180: 69 6c 65 20 74 6f 20 74 68 65 20 63 75 72 72 65  ile to the curre
2190: 6e 74 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e  nt [database con
21a0: 6e 65 63 74 69 6f 6e 5d 2e 20 0a 5e 54 68 65 20  nection]. .^The 
21b0: 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 73 20 27  database-names '
21c0: 6d 61 69 6e 27 20 61 6e 64 20 0a 27 74 65 6d 70  main' and .'temp
21d0: 27 20 72 65 66 65 72 20 74 6f 20 74 68 65 20 6d  ' refer to the m
21e0: 61 69 6e 20 64 61 74 61 62 61 73 65 20 61 6e 64  ain database and
21f0: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 75 73   the database us
2200: 65 64 20 66 6f 72 20 0a 74 65 6d 70 6f 72 61 72  ed for .temporar
2210: 79 20 74 61 62 6c 65 73 2e 20 20 5e 54 68 65 20  y tables.  ^The 
2220: 6d 61 69 6e 20 61 6e 64 20 74 65 6d 70 20 64 61  main and temp da
2230: 74 61 62 61 73 65 73 20 63 61 6e 6e 6f 74 20 62  tabases cannot b
2240: 65 20 61 74 74 61 63 68 65 64 20 6f 72 0a 64 65  e attached or.de
2250: 74 61 63 68 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e  tached.</p>..<p>
2260: 20 5e 28 54 61 62 6c 65 73 20 69 6e 20 61 6e 20   ^(Tables in an 
2270: 61 74 74 61 63 68 65 64 20 64 61 74 61 62 61 73  attached databas
2280: 65 20 63 61 6e 20 62 65 20 72 65 66 65 72 72 65  e can be referre
2290: 64 20 74 6f 20 75 73 69 6e 67 20 74 68 65 20 73  d to using the s
22a0: 79 6e 74 61 78 20 0a 3c 69 3e 64 61 74 61 62 61  yntax .<i>databa
22b0: 73 65 2d 6e 61 6d 65 2e 74 61 62 6c 65 2d 6e 61  se-name.table-na
22c0: 6d 65 3c 2f 69 3e 2e 29 5e 20 20 5e 49 66 20 74  me</i>.)^  ^If t
22d0: 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 74  he name of the t
22e0: 61 62 6c 65 20 69 73 20 75 6e 69 71 75 65 0a 61  able is unique.a
22f0: 63 72 6f 73 73 20 61 6c 6c 20 61 74 74 61 63 68  cross all attach
2300: 65 64 20 64 61 74 61 62 61 73 65 73 20 61 6e 64  ed databases and
2310: 20 74 68 65 20 6d 61 69 6e 20 61 6e 64 20 74 65   the main and te
2320: 6d 70 20 64 61 74 61 62 61 73 65 73 2c 20 74 68  mp databases, th
2330: 65 6e 20 74 68 65 0a 3c 69 3e 64 61 74 61 62 61  en the.<i>databa
2340: 73 65 2d 6e 61 6d 65 3c 2f 69 3e 20 70 72 65 66  se-name</i> pref
2350: 69 78 20 69 73 20 6e 6f 74 20 72 65 71 75 69 72  ix is not requir
2360: 65 64 2e 20 20 5e 49 66 20 74 77 6f 20 6f 72 20  ed.  ^If two or 
2370: 6d 6f 72 65 20 74 61 62 6c 65 73 20 69 6e 0a 64  more tables in.d
2380: 69 66 66 65 72 65 6e 74 20 64 61 74 61 62 61 73  ifferent databas
2390: 65 73 20 68 61 76 65 20 74 68 65 20 73 61 6d 65  es have the same
23a0: 20 6e 61 6d 65 20 61 6e 64 20 74 68 65 20 0a 3c   name and the .<
23b0: 69 3e 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3c  i>database-name<
23c0: 2f 69 3e 20 70 72 65 66 69 78 20 69 73 20 6e 6f  /i> prefix is no
23d0: 74 20 75 73 65 64 20 6f 6e 20 61 20 74 61 62 6c  t used on a tabl
23e0: 65 20 72 65 66 65 72 65 6e 63 65 2c 20 74 68 65  e reference, the
23f0: 6e 20 74 68 65 0a 74 61 62 6c 65 20 63 68 6f 73  n the.table chos
2400: 65 6e 20 69 73 20 74 68 65 20 6f 6e 65 20 69 6e  en is the one in
2410: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 74 68   the database th
2420: 61 74 20 77 61 73 20 6c 65 61 73 74 20 72 65 63  at was least rec
2430: 65 6e 74 6c 79 20 61 74 74 61 63 68 65 64 2e 3c  ently attached.<
2440: 2f 70 3e 0a 0a 3c 70 3e 0a 5e 54 72 61 6e 73 61  /p>..<p>.^Transa
2450: 63 74 69 6f 6e 73 20 69 6e 76 6f 6c 76 69 6e 67  ctions involving
2460: 20 6d 75 6c 74 69 70 6c 65 20 61 74 74 61 63 68   multiple attach
2470: 65 64 20 64 61 74 61 62 61 73 65 73 20 61 72 65  ed databases are
2480: 20 61 74 6f 6d 69 63 2c 0a 61 73 73 75 6d 69 6e   atomic,.assumin
2490: 67 20 74 68 61 74 20 74 68 65 20 6d 61 69 6e 20  g that the main 
24a0: 64 61 74 61 62 61 73 65 20 69 73 20 6e 6f 74 20  database is not 
24b0: 22 5b 3a 6d 65 6d 6f 72 79 3a 5d 22 20 61 6e 64  "[:memory:]" and
24c0: 20 74 68 65 20 0a 5b 6a 6f 75 72 6e 61 6c 5f 6d   the .[journal_m
24d0: 6f 64 65 5d 20 69 73 20 6e 6f 74 20 5b 57 41 4c  ode] is not [WAL
24e0: 5d 2e 20 20 5e 28 49 66 20 74 68 65 20 6d 61 69  ].  ^(If the mai
24f0: 6e 0a 64 61 74 61 62 61 73 65 20 69 73 20 22 3a  n.database is ":
2500: 6d 65 6d 6f 72 79 3a 22 20 6f 72 20 69 66 20 74  memory:" or if t
2510: 68 65 20 6a 6f 75 72 6e 61 6c 5f 6d 6f 64 65 20  he journal_mode 
2520: 69 73 20 57 41 4c 2c 20 74 68 65 6e 20 0a 74 72  is WAL, then .tr
2530: 61 6e 73 61 63 74 69 6f 6e 73 20 63 6f 6e 74 69  ansactions conti
2540: 6e 75 65 20 74 6f 20 62 65 20 61 74 6f 6d 69 63  nue to be atomic
2550: 20 77 69 74 68 69 6e 20 65 61 63 68 20 69 6e 64   within each ind
2560: 69 76 69 64 75 61 6c 0a 64 61 74 61 62 61 73 65  ividual.database
2570: 20 66 69 6c 65 2e 20 42 75 74 20 69 66 20 74 68   file. But if th
2580: 65 20 68 6f 73 74 20 63 6f 6d 70 75 74 65 72 20  e host computer 
2590: 63 72 61 73 68 65 73 20 69 6e 20 74 68 65 20 6d  crashes in the m
25a0: 69 64 64 6c 65 0a 6f 66 20 61 20 5b 43 4f 4d 4d  iddle.of a [COMM
25b0: 49 54 5d 20 77 68 65 72 65 20 74 77 6f 20 6f 72  IT] where two or
25c0: 20 6d 6f 72 65 20 64 61 74 61 62 61 73 65 20 66   more database f
25d0: 69 6c 65 73 20 61 72 65 20 75 70 64 61 74 65 64  iles are updated
25e0: 2c 0a 73 6f 6d 65 20 6f 66 20 74 68 6f 73 65 20  ,.some of those 
25f0: 66 69 6c 65 73 20 6d 69 67 68 74 20 67 65 74 20  files might get 
2600: 74 68 65 20 63 68 61 6e 67 65 73 20 77 68 65 72  the changes wher
2610: 65 20 6f 74 68 65 72 73 0a 6d 69 67 68 74 20 6e  e others.might n
2620: 6f 74 2e 29 5e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 20  ot.)^.</p>..<p> 
2630: 5e 54 68 65 72 65 20 69 73 20 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 65 64 2c 20 68 6f 77 65 76 65 72 2e 3c  celed, however.<
43f0: 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20 52 45 4c  /p>..<p>^The REL
4400: 45 41 53 45 20 63 6f 6d 6d 61 6e 64 20 69 73 20  EASE command is 
4410: 6c 69 6b 65 20 61 20 5b 43 4f 4d 4d 49 54 5d 20  like a [COMMIT] 
4420: 66 6f 72 20 61 20 53 41 56 45 50 4f 49 4e 54 2e  for a SAVEPOINT.
4430: 0a 5e 54 68 65 20 52 45 4c 45 41 53 45 20 63 6f  .^The RELEASE co
4440: 6d 6d 61 6e 64 20 63 61 75 73 65 73 20 61 6c 6c  mmand causes all
4450: 20 73 61 76 65 70 6f 69 6e 74 73 20 62 61 63 6b   savepoints back
4460: 20 74 6f 20 61 6e 64 20 69 6e 63 6c 75 64 69 6e   to and includin
4470: 67 20 74 68 65 20 0a 6d 6f 73 74 20 72 65 63 65  g the .most rece
4480: 6e 74 20 73 61 76 65 70 6f 69 6e 74 20 77 69 74  nt savepoint wit
4490: 68 20 61 20 6d 61 74 63 68 69 6e 67 20 6e 61 6d  h a matching nam
44a0: 65 20 74 6f 20 62 65 20 72 65 6d 6f 76 65 64 20  e to be removed 
44b0: 66 72 6f 6d 20 74 68 65 20 0a 74 72 61 6e 73 61  from the .transa
44c0: 63 74 69 6f 6e 20 73 74 61 63 6b 2e 20 20 5e 54  ction stack.  ^T
44d0: 68 65 20 52 45 4c 45 41 53 45 20 6f 66 20 61 6e  he RELEASE of an
44e0: 20 69 6e 6e 65 72 20 74 72 61 6e 73 61 63 74 69   inner transacti
44f0: 6f 6e 0a 64 6f 65 73 20 6e 6f 74 20 63 61 75 73  on.does not caus
4500: 65 20 61 6e 79 20 63 68 61 6e 67 65 73 20 74 6f  e any changes to
4510: 20 62 65 20 77 72 69 74 74 65 6e 20 74 6f 20 74   be written to t
4520: 68 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  he database file
4530: 3b 20 69 74 20 6d 65 72 65 6c 79 0a 72 65 6d 6f  ; it merely.remo
4540: 76 65 73 20 73 61 76 65 70 6f 69 6e 74 73 20 66  ves savepoints f
4550: 72 6f 6d 20 74 68 65 20 74 72 61 6e 73 61 63 74  rom the transact
4560: 69 6f 6e 20 73 74 61 63 6b 20 73 75 63 68 20 74  ion stack such t
4570: 68 61 74 20 69 74 20 69 73 0a 6e 6f 20 6c 6f 6e  hat it is.no lon
4580: 67 65 72 20 70 6f 73 73 69 62 6c 65 20 74 6f 20  ger possible to 
4590: 52 4f 4c 4c 42 41 43 4b 20 54 4f 20 74 68 6f 73  ROLLBACK TO thos
45a0: 65 20 73 61 76 65 70 6f 69 6e 74 73 2e 0a 5e 49  e savepoints..^I
45b0: 66 20 61 20 52 45 4c 45 41 53 45 20 63 6f 6d 6d  f a RELEASE comm
45c0: 61 6e 64 20 72 65 6c 65 61 73 65 73 20 74 68 65  and releases the
45d0: 20 6f 75 74 65 72 6d 6f 73 74 20 73 61 76 65 70   outermost savep
45e0: 6f 69 6e 74 2c 20 73 6f 0a 74 68 61 74 20 74 68  oint, so.that th
45f0: 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 73 74  e transaction st
4600: 61 63 6b 20 62 65 63 6f 6d 65 73 20 65 6d 70 74  ack becomes empt
4610: 79 2c 20 74 68 65 6e 20 52 45 4c 45 41 53 45 20  y, then RELEASE 
4620: 69 73 20 74 68 65 20 73 61 6d 65 0a 61 73 20 5b  is the same.as [
4630: 43 4f 4d 4d 49 54 5d 2e 0a 5e 54 68 65 20 5b 43  COMMIT]..^The [C
4640: 4f 4d 4d 49 54 5d 20 63 6f 6d 6d 61 6e 64 20 6d  OMMIT] command m
4650: 61 79 20 62 65 20 75 73 65 64 20 74 6f 20 72 65  ay be used to re
4660: 6c 65 61 73 65 20 61 6c 6c 20 73 61 76 65 70 6f  lease all savepo
4670: 69 6e 74 73 20 61 6e 64 0a 63 6f 6d 6d 69 74 20  ints and.commit 
4680: 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  the transaction 
4690: 65 76 65 6e 20 69 66 20 74 68 65 20 74 72 61 6e  even if the tran
46a0: 73 61 63 74 69 6f 6e 20 77 61 73 20 6f 72 69 67  saction was orig
46b0: 69 6e 61 6c 6c 79 20 73 74 61 72 74 65 64 0a 62  inally started.b
46c0: 79 20 61 20 53 41 56 45 50 4f 49 4e 54 20 63 6f  y a SAVEPOINT co
46d0: 6d 6d 61 6e 64 20 69 6e 73 74 65 61 64 20 6f 66  mmand instead of
46e0: 20 61 20 5b 42 45 47 49 4e 5d 20 63 6f 6d 6d 61   a [BEGIN] comma
46f0: 6e 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 49 66 20  nd.</p>..<p>^If 
4700: 74 68 65 20 73 61 76 65 70 6f 69 6e 74 2d 6e 61  the savepoint-na
4710: 6d 65 20 69 6e 20 61 20 52 45 4c 45 41 53 45 20  me in a RELEASE 
4720: 63 6f 6d 6d 61 6e 64 20 64 6f 65 73 20 6e 6f 74  command does not
4730: 20 6d 61 74 63 68 20 61 6e 79 0a 73 61 76 65 70   match any.savep
4740: 6f 69 6e 74 20 63 75 72 72 65 6e 74 6c 79 20 69  oint currently i
4750: 6e 20 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f  n the transactio
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 6f 75  dard is ambiguou
6060: 73 29 20 61 6e 64 20 69 73 20 74 68 65 20 69 6e  s) and is the in
6070: 74 65 72 70 72 65 74 61 74 69 6f 6e 0a 66 6f 6c  terpretation.fol
6080: 6c 6f 77 65 64 20 62 79 20 50 6f 73 74 67 72 65  lowed by Postgre
6090: 53 51 4c 2c 20 4d 79 53 51 4c 2c 20 46 69 72 65  SQL, MySQL, Fire
60a0: 62 69 72 64 2c 20 61 6e 64 20 4f 72 61 63 6c 65  bird, and Oracle
60b0: 2e 20 20 49 6e 66 6f 72 6d 69 78 20 61 6e 64 0a  .  Informix and.
60c0: 4d 69 63 72 6f 73 6f 66 74 20 53 51 4c 20 53 65  Microsoft SQL Se
60d0: 72 76 65 72 20 66 6f 6c 6c 6f 77 20 74 68 65 20  rver follow the 
60e0: 6f 74 68 65 72 20 69 6e 74 65 72 70 72 65 74 61  other interpreta
60f0: 74 69 6f 6e 20 6f 66 20 74 68 65 20 73 74 61 6e  tion of the stan
6100: 64 61 72 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 49  dard.</p>..<p>^I
6110: 66 20 74 68 65 20 6f 70 74 69 6f 6e 61 6c 20 49  f the optional I
6120: 46 20 4e 4f 54 20 45 58 49 53 54 53 20 63 6c 61  F NOT EXISTS cla
6130: 75 73 65 20 69 73 20 70 72 65 73 65 6e 74 20 61  use is present a
6140: 6e 64 20 61 6e 6f 74 68 65 72 20 69 6e 64 65 78  nd another index
6150: 0a 77 69 74 68 20 74 68 65 20 73 61 6d 65 20 6e  .with the same n
6160: 61 6d 65 20 61 6c 72 65 61 64 79 20 65 78 69 73  ame already 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 65 6e 74 0a 6b 65 79 77  independent.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 72 65 61 64 79 20 65 78 69 73 74 73 2c 20  already exists, 
7730: 74 68 65 6e 20 74 68 69 73 20 63 6f 6d 6d 61 6e  then this comman
7740: 64 20 62 65 63 6f 6d 65 73 20 61 20 6e 6f 2d 6f  d becomes a no-o
7750: 70 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 61 62 6c  p.</p>..<p>^Tabl
7760: 65 73 20 61 72 65 20 72 65 6d 6f 76 65 64 20 75  es are removed u
7770: 73 69 6e 67 20 74 68 65 20 5b 44 52 4f 50 20 54  sing the [DROP T
7780: 41 42 4c 45 5d 20 73 74 61 74 65 6d 65 6e 74 2e  ABLE] statement.
7790: 20 20 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 68 64 5f    </p>..<tcl>hd_
77a0: 66 72 61 67 6d 65 6e 74 20 72 6f 77 69 64 20 7b  fragment rowid {
77b0: 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59 20  INTEGER PRIMARY 
77c0: 4b 45 59 7d 20 52 4f 57 49 44 20 72 6f 77 69 64  KEY} ROWID rowid
77d0: 3c 2f 74 63 6c 3e 0a 3c 68 33 3e 52 4f 57 49 44  </tcl>.<h3>ROWID
77e0: 73 20 61 6e 64 20 74 68 65 20 49 4e 54 45 47 45  s and the INTEGE
77f0: 52 20 50 52 49 4d 41 52 59 20 4b 45 59 3c 2f 68  R PRIMARY KEY</h
7800: 33 3e 0a 0a 3c 70 3e 5e 45 76 65 72 79 20 72 6f  3>..<p>^Every ro
7810: 77 20 6f 66 20 65 76 65 72 79 20 53 51 4c 69 74  w of every SQLit
7820: 65 20 74 61 62 6c 65 20 68 61 73 20 61 20 36 34  e table has a 64
7830: 2d 62 69 74 20 73 69 67 6e 65 64 20 69 6e 74 65  -bit signed inte
7840: 67 65 72 20 6b 65 79 20 0a 74 68 61 74 20 69 73  ger key .that is
7850: 20 75 6e 69 71 75 65 20 77 69 74 68 69 6e 20 74   unique within t
7860: 68 65 20 73 61 6d 65 20 74 61 62 6c 65 2e 0a 54  he same table..T
7870: 68 69 73 20 69 6e 74 65 67 65 72 20 69 73 20 75  his integer is u
7880: 73 75 61 6c 6c 79 20 63 61 6c 6c 65 64 20 74 68  sually called th
7890: 65 20 22 72 6f 77 69 64 22 2e 20 20 5e 54 68 65  e "rowid".  ^The
78a0: 20 72 6f 77 69 64 20 69 73 20 74 68 65 20 61 63   rowid is the ac
78b0: 74 75 61 6c 20 6b 65 79 20 75 73 65 64 0a 69 6e  tual key used.in
78c0: 20 74 68 65 20 42 2d 54 72 65 65 20 74 68 61 74   the B-Tree that
78d0: 20 69 6d 70 6c 65 6d 65 6e 74 73 20 61 6e 20 53   implements an S
78e0: 51 4c 69 74 65 20 74 61 62 6c 65 2e 20 20 5e 52  QLite table.  ^R
78f0: 6f 77 73 20 61 72 65 20 73 74 6f 72 65 64 20 69  ows are stored i
7900: 6e 0a 72 6f 77 69 64 20 6f 72 64 65 72 2e 20 5e  n.rowid order. ^
7910: 54 68 65 0a 72 6f 77 69 64 20 76 61 6c 75 65 20  The.rowid value 
7920: 63 61 6e 20 62 65 20 61 63 63 65 73 73 65 64 20  can be accessed 
7930: 75 73 69 6e 67 20 6f 6e 65 20 6f 66 20 74 68 65  using one of the
7940: 20 73 70 65 63 69 61 6c 20 6e 61 6d 65 73 0a 22   special names."
7950: 3c 62 3e 52 4f 57 49 44 3c 2f 62 3e 22 2c 20 22  <b>ROWID</b>", "
7960: 3c 62 3e 4f 49 44 3c 2f 62 3e 22 2c 20 6f 72 20  <b>OID</b>", or 
7970: 22 3c 62 3e 5f 52 4f 57 49 44 5f 3c 2f 62 3e 22  "<b>_ROWID_</b>"
7980: 20 61 73 73 75 6d 69 6e 67 20 74 68 6f 73 65 20   assuming those 
7990: 6e 61 6d 65 73 0a 61 72 65 20 6e 6f 20 75 73 65  names.are no use
79a0: 64 20 62 79 20 6f 74 68 65 72 20 63 6f 6e 76 65  d by other conve
79b0: 6e 74 69 6f 6e 61 6c 20 74 61 62 6c 65 20 63 6f  ntional table co
79c0: 6c 75 6d 6e 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 0a  lumns.</p>..<p>.
79d0: 5e 49 66 20 61 20 63 6f 6c 75 6d 6e 20 69 73 20  ^If a column is 
79e0: 64 65 63 6c 61 72 65 64 20 74 6f 20 62 65 20 61  declared to be a
79f0: 6e 20 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52  n INTEGER PRIMAR
7a00: 59 20 4b 45 59 2c 20 74 68 65 6e 20 74 68 61 74  Y KEY, then that
7a10: 20 63 6f 6c 75 6d 6e 20 69 73 20 6e 6f 74 0a 61   column is not.a
7a20: 20 22 72 65 61 6c 22 20 64 61 74 61 62 61 73 65   "real" database
7a30: 20 63 6f 6c 75 6d 6e 20 62 75 74 20 69 6e 73 74   column but inst
7a40: 65 61 64 20 62 65 63 6f 6d 65 73 0a 61 6e 20 61  ead becomes.an a
7a50: 6c 69 61 73 20 66 6f 72 20 74 68 65 20 72 6f 77  lias for the row
7a60: 69 64 2e 20 20 5e 55 6e 6c 69 6b 65 20 6e 6f 72  id.  ^Unlike nor
7a70: 6d 61 6c 20 53 51 4c 69 74 65 20 63 6f 6c 75 6d  mal SQLite colum
7a80: 6e 73 2c 20 74 68 65 20 72 6f 77 69 64 0a 6d 75  ns, the rowid.mu
7a90: 73 74 20 62 65 20 61 20 6e 6f 6e 2d 4e 55 4c 4c  st be a non-NULL
7aa0: 20 69 6e 74 65 67 65 72 20 76 61 6c 75 65 2e 20   integer value. 
7ab0: 20 5e 54 68 65 20 72 6f 77 69 64 20 69 73 20 6e   ^The rowid is n
7ac0: 6f 74 20 61 62 6c 65 20 74 6f 20 68 6f 6c 64 0a  ot able to hold.
7ad0: 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20 76  floating point v
7ae0: 61 6c 75 65 73 2c 20 73 74 72 69 6e 67 73 2c 20  alues, strings, 
7af0: 42 4c 4f 42 73 2c 20 6f 72 20 4e 55 4c 4c 73 2e  BLOBs, or NULLs.
7b00: 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74  </p>..<blockquot
7b10: 65 3e 3c 69 3e 0a 5e 41 6e 20 49 4e 54 45 47 45  e><i>.^An INTEGE
7b20: 52 20 50 52 49 4d 41 52 59 20 4b 45 59 20 63 6f  R PRIMARY KEY co
7b30: 6c 75 6d 6e 20 69 73 20 61 6e 20 61 6c 69 61 73  lumn is an alias
7b40: 20 66 6f 72 20 74 68 65 20 36 34 2d 62 69 74 20   for the 64-bit 
7b50: 73 69 67 6e 65 64 20 69 6e 74 65 67 65 72 20 72  signed integer r
7b60: 6f 77 69 64 2e 0a 3c 2f 69 3e 3c 2f 62 6c 6f 63  owid..</i></bloc
7b70: 6b 71 75 6f 74 65 3e 0a 0a 3c 70 3e 5e 41 6e 20  kquote>..<p>^An 
7b80: 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59 20  INTEGER PRIMARY 
7b90: 4b 45 59 20 63 6f 6c 75 6d 6e 20 63 61 6e 20 61  KEY column can a
7ba0: 6c 73 6f 20 69 6e 63 6c 75 64 65 20 74 68 65 0a  lso include the.
7bb0: 6b 65 79 77 6f 72 64 20 5b 41 55 54 4f 49 4e 43  keyword [AUTOINC
7bc0: 52 45 4d 45 4e 54 5d 2e 20 20 5e 54 68 65 20 5b  REMENT].  ^The [
7bd0: 41 55 54 4f 49 4e 43 52 45 4d 45 4e 54 5d 20 6b  AUTOINCREMENT] k
7be0: 65 79 77 6f 72 64 20 6d 6f 64 69 66 69 65 64 20  eyword modified 
7bf0: 74 68 65 20 77 61 79 0a 74 68 61 74 20 42 2d 54  the way.that B-T
7c00: 72 65 65 20 6b 65 79 73 20 61 72 65 20 61 75 74  ree keys are aut
7c10: 6f 6d 61 74 69 63 61 6c 6c 79 20 67 65 6e 65 72  omatically gener
7c20: 61 74 65 64 2e 20 20 41 64 64 69 74 69 6f 6e 61  ated.  Additiona
7c30: 6c 20 64 65 74 61 69 6c 0a 6f 6e 20 61 75 74 6f  l detail.on auto
7c40: 6d 61 74 69 63 20 42 2d 54 72 65 65 20 6b 65 79  matic B-Tree key
7c50: 20 67 65 6e 65 72 61 74 69 6f 6e 20 69 73 20 61   generation is a
7c60: 76 61 69 6c 61 62 6c 65 0a 3c 61 20 68 72 65 66  vailable.<a href
7c70: 3d 22 61 75 74 6f 69 6e 63 2e 68 74 6d 6c 22 3e  ="autoinc.html">
7c80: 73 65 70 61 72 61 74 65 6c 79 3c 2f 61 3e 2e 3c  separately</a>.<
7c90: 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20 73 70 65  /p>..<p>^The spe
7ca0: 63 69 61 6c 20 62 65 68 61 76 69 6f 72 20 6f 66  cial behavior of
7cb0: 20 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59   INTEGER PRIMARY
7cc0: 20 4b 45 59 0a 69 73 20 6f 6e 6c 79 20 61 76 61   KEY.is only ava
7cd0: 69 6c 61 62 6c 65 20 69 66 20 74 68 65 20 74 79  ilable if the ty
7ce0: 70 65 20 6e 61 6d 65 20 69 73 20 65 78 61 63 74  pe name is exact
7cf0: 6c 79 20 22 49 4e 54 45 47 45 52 22 20 69 6e 20  ly "INTEGER" in 
7d00: 61 6e 79 20 6d 69 78 74 75 72 65 0a 6f 66 20 75  any mixture.of u
7d10: 70 70 65 72 20 61 6e 64 20 6c 6f 77 65 72 20 63  pper and lower c
7d20: 61 73 65 2e 20 20 5e 4f 74 68 65 72 20 69 6e 74  ase.  ^Other int
7d30: 65 67 65 72 20 74 79 70 65 20 6e 61 6d 65 73 0a  eger type names.
7d40: 6c 69 6b 65 20 22 49 4e 54 22 20 6f 72 20 22 42  like "INT" or "B
7d50: 49 47 49 4e 54 22 20 6f 72 20 22 53 48 4f 52 54  IGINT" or "SHORT
7d60: 20 49 4e 54 45 47 45 52 22 20 6f 72 20 22 55 4e   INTEGER" or "UN
7d70: 53 49 47 4e 45 44 20 49 4e 54 45 47 45 52 22 0a  SIGNED INTEGER".
7d80: 63 61 75 73 65 73 20 74 68 65 20 70 72 69 6d 61  causes the prima
7d90: 72 79 20 6b 65 79 20 63 6f 6c 75 6d 6e 20 74 6f  ry key column to
7da0: 20 62 65 68 61 76 65 20 61 73 20 61 6e 20 6f 72   behave as an or
7db0: 64 69 6e 61 72 79 20 74 61 62 6c 65 20 63 6f 6c  dinary table col
7dc0: 75 6d 6e 20 77 69 74 68 0a 69 6e 74 65 67 65 72  umn with.integer
7dd0: 20 5b 61 66 66 69 6e 69 74 79 5d 20 61 6e 64 20   [affinity] and 
7de0: 61 20 75 6e 69 71 75 65 20 69 6e 64 65 78 2c 20  a unique index, 
7df0: 6e 6f 74 20 61 73 20 61 6e 20 61 6c 69 61 73 20  not as an alias 
7e00: 66 6f 72 20 74 68 65 20 72 6f 77 69 64 2e 0a 5e  for the rowid..^
7e10: 28 54 68 65 20 73 70 65 63 69 61 6c 20 62 65 68  (The special beh
7e20: 61 76 69 6f 72 20 6f 66 20 49 4e 54 45 47 45 52  avior of INTEGER
7e30: 20 50 52 49 4d 41 52 59 20 4b 45 59 20 69 73 20   PRIMARY KEY is 
7e40: 6f 6e 6c 79 20 61 76 61 69 6c 61 62 6c 65 20 69  only available i
7e50: 66 20 74 68 65 0a 70 72 69 6d 61 72 79 20 6b 65  f the.primary ke
7e60: 79 20 69 73 20 61 20 73 69 6e 67 6c 65 20 63 6f  y is a single co
7e70: 6c 75 6d 6e 2e 20 20 4d 75 6c 74 69 2d 63 6f 6c  lumn.  Multi-col
7e80: 75 6d 6e 20 70 72 69 6d 61 72 79 20 6b 65 79 73  umn primary keys
7e90: 20 64 6f 20 6e 6f 74 20 62 65 63 6f 6d 65 0a 61   do not become.a
7ea0: 6c 69 61 73 65 73 20 66 6f 72 20 74 68 65 20 72  liases for the r
7eb0: 6f 77 69 64 2e 29 5e 0a 5e 54 68 65 20 41 55 54  owid.)^.^The AUT
7ec0: 4f 49 4e 43 52 45 4d 45 4e 54 20 6b 65 79 77 6f  OINCREMENT keywo
7ed0: 72 64 20 6f 6e 6c 79 20 77 6f 72 6b 73 20 6f 6e  rd only works on
7ee0: 20 61 20 63 6f 6c 75 6d 6e 20 74 68 61 74 20 69   a column that i
7ef0: 73 20 61 6e 20 61 6c 69 61 73 0a 66 6f 72 20 74  s an alias.for t
7f00: 68 65 20 72 6f 77 69 64 2e 3c 2f 70 3e 0a 0a 3c  he rowid.</p>..<
7f10: 70 3e 4e 6f 74 65 20 74 68 61 74 20 73 65 61 72  p>Note that sear
7f20: 63 68 65 73 20 61 67 61 69 6e 73 74 20 61 20 72  ches against a r
7f30: 6f 77 69 64 20 61 72 65 20 67 65 6e 65 72 61 6c  owid are general
7f40: 6c 79 20 61 62 6f 75 74 20 74 77 69 63 65 20 61  ly about twice a
7f50: 73 0a 66 61 73 74 20 61 73 20 73 65 61 72 63 68  s.fast as search
7f60: 65 73 20 61 67 61 69 6e 73 74 20 61 6e 79 20 6f  es against any o
7f70: 74 68 65 72 20 50 52 49 4d 41 52 59 20 4b 45 59  ther PRIMARY KEY
7f80: 20 6f 72 20 69 6e 64 65 78 65 64 20 76 61 6c 75   or indexed valu
7f90: 65 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 3c 62 3e 47  e..</p>..<p><b>G
7fa0: 6f 6f 66 79 20 62 65 68 61 76 69 6f 72 20 61 6c  oofy behavior al
7fb0: 65 72 74 3a 3c 2f 62 3e 20 20 5e 28 54 68 65 20  ert:</b>  ^(The 
7fc0: 66 6f 6c 6c 6f 77 69 6e 67 20 74 68 72 65 65 20  following three 
7fd0: 64 65 63 6c 61 72 61 74 69 6f 6e 73 20 61 6c 6c  declarations all
7fe0: 20 63 61 75 73 65 0a 74 68 65 20 63 6f 6c 75 6d   cause.the colum
7ff0: 6e 20 22 78 22 20 62 65 20 61 6e 20 61 6c 69 61  n "x" be an alia
8000: 73 20 66 6f 72 20 74 68 65 20 72 6f 77 69 64 3a  s for the rowid:
8010: 3c 2f 70 3e 0a 0a 3c 75 6c 3e 0a 3c 6c 69 3e 3c  </p>..<ul>.<li><
8020: 74 74 3e 43 52 45 41 54 45 20 54 41 42 4c 45 20  tt>CREATE TABLE 
8030: 74 28 78 20 49 4e 54 45 47 45 52 20 50 52 49 4d  t(x INTEGER PRIM
8040: 41 52 59 20 4b 45 59 20 41 53 43 2c 20 79 2c 20  ARY KEY ASC, y, 
8050: 7a 29 3b 3c 2f 74 74 3e 0a 3c 6c 69 3e 3c 74 74  z);</tt>.<li><tt
8060: 3e 43 52 45 41 54 45 20 54 41 42 4c 45 20 74 28  >CREATE TABLE t(
8070: 78 20 49 4e 54 45 47 45 52 2c 20 79 2c 20 7a 2c  x INTEGER, y, z,
8080: 20 50 52 49 4d 41 52 59 20 4b 45 59 28 78 20 41   PRIMARY KEY(x A
8090: 53 43 29 29 3b 3c 2f 74 74 3e 0a 3c 6c 69 3e 3c  SC));</tt>.<li><
80a0: 74 74 3e 43 52 45 41 54 45 20 54 41 42 4c 45 20  tt>CREATE TABLE 
80b0: 74 28 78 20 49 4e 54 45 47 45 52 2c 20 79 2c 20  t(x INTEGER, y, 
80c0: 7a 2c 20 50 52 49 4d 41 52 59 20 4b 45 59 28 78  z, PRIMARY KEY(x
80d0: 20 44 45 53 43 29 29 3b 3c 2f 74 74 3e 0a 3c 2f   DESC));</tt>.</
80e0: 75 6c 3e 29 5e 0a 0a 3c 70 3e 42 75 74 2c 20 69  ul>)^..<p>But, i
80f0: 6e 20 63 6f 6e 74 72 61 73 74 2c 20 5e 28 74 68  n contrast, ^(th
8100: 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 64 65 63 6c  e following decl
8110: 61 72 61 74 69 6f 6e 20 64 6f 65 73 20 3c 75 3e  aration does <u>
8120: 6e 6f 74 3c 2f 75 3e 20 72 65 73 75 6c 74 20 69  not</u> result i
8130: 6e 0a 22 78 22 20 62 65 69 6e 67 20 61 6e 20 61  n."x" being an a
8140: 6c 69 61 73 20 66 6f 72 20 74 68 65 20 72 6f 77  lias for the row
8150: 69 64 3a 3c 2f 70 3e 0a 0a 3c 75 6c 3e 0a 3c 6c  id:</p>..<ul>.<l
8160: 69 3e 3c 74 74 3e 43 52 45 41 54 45 20 54 41 42  i><tt>CREATE TAB
8170: 4c 45 20 74 28 78 20 49 4e 54 45 47 45 52 20 50  LE t(x INTEGER P
8180: 52 49 4d 41 52 59 20 4b 45 59 20 44 45 53 43 2c  RIMARY KEY DESC,
8190: 20 79 2c 20 7a 29 3b 3c 2f 74 74 3e 0a 3c 2f 75   y, z);</tt>.</u
81a0: 6c 3e 29 5e 0a 0a 3c 70 3e 54 68 69 73 20 61 73  l>)^..<p>This as
81b0: 79 6d 6d 65 74 72 69 63 61 6c 20 62 65 68 61 76  ymmetrical behav
81c0: 69 6f 72 20 69 73 20 75 6e 66 6f 72 74 75 6e 61  ior is unfortuna
81d0: 74 65 20 61 6e 64 20 69 73 20 72 65 61 6c 6c 79  te and is really
81e0: 20 64 75 65 20 74 6f 20 61 20 62 75 67 0a 69 6e   due to a bug.in
81f0: 20 74 68 65 20 70 61 72 73 65 72 20 69 6e 20 65   the parser in e
8200: 61 72 6c 79 20 76 65 72 73 69 6f 6e 73 20 6f 66  arly versions of
8210: 20 53 51 4c 69 74 65 2e 20 20 42 75 74 20 66 69   SQLite.  But fi
8220: 78 69 6e 67 20 74 68 65 20 62 75 67 20 77 6f 75  xing the bug wou
8230: 6c 64 0a 72 65 73 75 6c 74 20 69 6e 20 76 65 72  ld.result in ver
8240: 79 20 73 65 72 69 6f 75 73 20 62 61 63 6b 77 61  y serious backwa
8250: 72 64 73 20 69 6e 63 6f 6d 70 61 74 69 62 69 6c  rds incompatibil
8260: 69 74 69 65 73 2e 20 20 54 68 65 20 53 51 4c 69  ities.  The SQLi
8270: 74 65 20 64 65 76 65 6c 6f 70 65 72 73 0a 66 65  te developers.fe
8280: 65 6c 20 74 68 61 74 20 67 6f 6f 66 79 20 62 65  el that goofy be
8290: 68 61 76 69 6f 72 20 69 6e 20 61 6e 20 63 6f 72  havior in an cor
82a0: 6e 65 72 20 63 61 73 65 20 69 73 20 66 61 72 20  ner case is far 
82b0: 62 65 74 74 65 72 20 74 68 61 6e 0a 61 20 63 6f  better than.a co
82c0: 6d 70 61 74 69 62 69 6c 69 74 79 20 62 72 65 61  mpatibility brea
82d0: 6b 2c 20 73 6f 20 74 68 65 20 6f 72 69 67 69 6e  k, so the origin
82e0: 61 6c 20 62 65 68 61 76 69 6f 72 20 69 73 20 72  al behavior is r
82f0: 65 74 61 69 6e 65 64 2e 3c 2f 70 3e 0a 0a 3c 74  etained.</p>..<t
8300: 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23  cl>.############
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 23 0a 53 65 63 74 69 6f 6e 20 7b 43 52 45 41  ##.Section {CREA
8360: 54 45 20 54 52 49 47 47 45 52 7d 20 63 72 65 61  TE TRIGGER} crea
8370: 74 65 74 72 69 67 67 65 72 20 7b 7b 43 52 45 41  tetrigger {{CREA
8380: 54 45 20 54 52 49 47 47 45 52 7d 7d 0a 0a 42 75  TE TRIGGER}}..Bu
8390: 62 62 6c 65 44 69 61 67 72 61 6d 20 63 72 65 61  bbleDiagram crea
83a0: 74 65 2d 74 72 69 67 67 65 72 2d 73 74 6d 74 20  te-trigger-stmt 
83b0: 31 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 5e 54 68  1.</tcl>..<p>^Th
83c0: 65 20 43 52 45 41 54 45 20 54 52 49 47 47 45 52  e CREATE TRIGGER
83d0: 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 75 73   statement is us
83e0: 65 64 20 74 6f 20 61 64 64 20 74 72 69 67 67 65  ed to add trigge
83f0: 72 73 20 74 6f 20 74 68 65 20 0a 64 61 74 61 62  rs to the .datab
8400: 61 73 65 20 73 63 68 65 6d 61 2e 20 5e 54 72 69  ase schema. ^Tri
8410: 67 67 65 72 73 20 61 72 65 20 64 61 74 61 62 61  ggers are databa
8420: 73 65 20 6f 70 65 72 61 74 69 6f 6e 73 20 0a 74  se operations .t
8430: 68 61 74 20 61 72 65 20 61 75 74 6f 6d 61 74 69  hat are automati
8440: 63 61 6c 6c 79 20 70 65 72 66 6f 72 6d 65 64 20  cally performed 
8450: 77 68 65 6e 20 61 20 73 70 65 63 69 66 69 65 64  when a specified
8460: 20 64 61 74 61 62 61 73 65 20 65 76 65 6e 74 0a   database event.
8470: 6f 63 63 75 72 73 2e 20 20 3c 2f 70 3e 0a 0a 3c  occurs.  </p>..<
8480: 70 3e 5e 41 20 74 72 69 67 67 65 72 20 6d 61 79  p>^A trigger may
8490: 20 62 65 20 73 70 65 63 69 66 69 65 64 20 74 6f   be specified to
84a0: 20 66 69 72 65 20 77 68 65 6e 65 76 65 72 20 61   fire whenever a
84b0: 20 5b 44 45 4c 45 54 45 5d 2c 20 5b 49 4e 53 45   [DELETE], [INSE
84c0: 52 54 5d 2c 0a 6f 72 20 5b 55 50 44 41 54 45 5d  RT],.or [UPDATE]
84d0: 20 6f 66 20 61 0a 70 61 72 74 69 63 75 6c 61 72   of a.particular
84e0: 20 64 61 74 61 62 61 73 65 20 74 61 62 6c 65 20   database table 
84f0: 6f 63 63 75 72 73 2c 20 6f 72 20 77 68 65 6e 65  occurs, or whene
8500: 76 65 72 20 61 6e 20 5b 55 50 44 41 54 45 5d 20  ver an [UPDATE] 
8510: 6f 63 63 75 72 73 20 6f 6e 0a 6f 6e 20 6f 6e 65  occurs on.on one
8520: 20 6f 72 20 6d 6f 72 65 20 73 70 65 63 69 66 69   or more specifi
8530: 65 64 20 63 6f 6c 75 6d 6e 73 20 6f 66 20 61 20  ed columns of a 
8540: 74 61 62 6c 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e  table.</p>..<p>^
8550: 41 74 20 74 68 69 73 20 74 69 6d 65 20 53 51 4c  At this time SQL
8560: 69 74 65 20 73 75 70 70 6f 72 74 73 20 6f 6e 6c  ite supports onl
8570: 79 20 46 4f 52 20 45 41 43 48 20 52 4f 57 20 74  y FOR EACH ROW t
8580: 72 69 67 67 65 72 73 2c 20 6e 6f 74 20 46 4f 52  riggers, not FOR
8590: 20 45 41 43 48 0a 53 54 41 54 45 4d 45 4e 54 20   EACH.STATEMENT 
85a0: 74 72 69 67 67 65 72 73 2e 20 5e 48 65 6e 63 65  triggers. ^Hence
85b0: 20 65 78 70 6c 69 63 69 74 6c 79 20 73 70 65 63   explicitly spec
85c0: 69 66 79 69 6e 67 20 46 4f 52 20 45 41 43 48 20  ifying FOR EACH 
85d0: 52 4f 57 20 69 73 20 6f 70 74 69 6f 6e 61 6c 2e  ROW is optional.
85e0: 0a 5e 46 4f 52 20 45 41 43 48 20 52 4f 57 20 69  .^FOR EACH ROW i
85f0: 6d 70 6c 69 65 73 20 74 68 61 74 20 74 68 65 20  mplies that the 
8600: 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 20 73  SQL statements s
8610: 70 65 63 69 66 69 65 64 20 69 6e 20 74 68 65 20  pecified in the 
8620: 74 72 69 67 67 65 72 0a 6d 61 79 20 62 65 20 65  trigger.may be e
8630: 78 65 63 75 74 65 64 20 28 64 65 70 65 6e 64 69  xecuted (dependi
8640: 6e 67 20 6f 6e 20 74 68 65 20 57 48 45 4e 20 63  ng on the WHEN c
8650: 6c 61 75 73 65 29 20 66 6f 72 20 65 61 63 68 20  lause) for each 
8660: 64 61 74 61 62 61 73 65 20 72 6f 77 20 62 65 69  database row bei
8670: 6e 67 0a 69 6e 73 65 72 74 65 64 2c 20 75 70 64  ng.inserted, upd
8680: 61 74 65 64 20 6f 72 20 64 65 6c 65 74 65 64 20  ated or deleted 
8690: 62 79 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74  by the statement
86a0: 20 63 61 75 73 69 6e 67 20 74 68 65 20 74 72 69   causing the tri
86b0: 67 67 65 72 20 74 6f 20 66 69 72 65 2e 3c 2f 70  gger to fire.</p
86c0: 3e 0a 0a 3c 70 3e 5e 28 42 6f 74 68 20 74 68 65  >..<p>^(Both the
86d0: 20 57 48 45 4e 20 63 6c 61 75 73 65 20 61 6e 64   WHEN clause and
86e0: 20 74 68 65 20 74 72 69 67 67 65 72 20 61 63 74   the trigger act
86f0: 69 6f 6e 73 20 6d 61 79 20 61 63 63 65 73 73 20  ions may access 
8700: 65 6c 65 6d 65 6e 74 73 20 6f 66 20 0a 74 68 65  elements of .the
8710: 20 72 6f 77 20 62 65 69 6e 67 20 69 6e 73 65 72   row being inser
8720: 74 65 64 2c 20 64 65 6c 65 74 65 64 20 6f 72 20  ted, deleted or 
8730: 75 70 64 61 74 65 64 20 75 73 69 6e 67 20 72 65  updated using re
8740: 66 65 72 65 6e 63 65 73 20 6f 66 20 74 68 65 20  ferences of the 
8750: 66 6f 72 6d 20 0a 22 4e 45 57 2e 3c 69 3e 63 6f  form ."NEW.<i>co
8760: 6c 75 6d 6e 2d 6e 61 6d 65 3c 2f 69 3e 22 20 61  lumn-name</i>" a
8770: 6e 64 20 22 4f 4c 44 2e 3c 69 3e 63 6f 6c 75 6d  nd "OLD.<i>colum
8780: 6e 2d 6e 61 6d 65 3c 2f 69 3e 22 2c 20 77 68 65  n-name</i>", whe
8790: 72 65 0a 3c 69 3e 63 6f 6c 75 6d 6e 2d 6e 61 6d  re.<i>column-nam
87a0: 65 3c 2f 69 3e 20 69 73 20 74 68 65 20 6e 61 6d  e</i> is the nam
87b0: 65 20 6f 66 20 61 20 63 6f 6c 75 6d 6e 20 66 72  e of a column fr
87c0: 6f 6d 20 74 68 65 20 74 61 62 6c 65 20 74 68 61  om the table tha
87d0: 74 20 74 68 65 20 74 72 69 67 67 65 72 0a 69 73  t the trigger.is
87e0: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
87f0: 2e 29 5e 20 5e 28 4f 4c 44 20 61 6e 64 20 4e 45  .)^ ^(OLD and NE
8800: 57 20 72 65 66 65 72 65 6e 63 65 73 20 6d 61 79  W references may
8810: 20 6f 6e 6c 79 20 62 65 20 75 73 65 64 20 69 6e   only be used in
8820: 20 74 72 69 67 67 65 72 73 20 6f 6e 0a 65 76 65   triggers on.eve
8830: 6e 74 73 20 66 6f 72 20 77 68 69 63 68 20 74 68  nts for which th
8840: 65 79 20 61 72 65 20 72 65 6c 65 76 61 6e 74 2c  ey are relevant,
8850: 20 61 73 20 66 6f 6c 6c 6f 77 73 3a 3c 2f 70 3e   as follows:</p>
8860: 0a 0a 3c 74 61 62 6c 65 20 62 6f 72 64 65 72 3d  ..<table border=
8870: 30 20 63 65 6c 6c 70 61 64 64 69 6e 67 3d 31 30  0 cellpadding=10
8880: 3e 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67  >.<tr>.<td valig
8890: 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72  n="top" align="r
88a0: 69 67 68 74 22 20 77 69 64 74 68 3d 31 32 30 3e  ight" width=120>
88b0: 3c 69 3e 49 4e 53 45 52 54 3c 2f 69 3e 3c 2f 74  <i>INSERT</i></t
88c0: 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  d>.<td valign="t
88d0: 6f 70 22 3e 4e 45 57 20 72 65 66 65 72 65 6e 63  op">NEW referenc
88e0: 65 73 20 61 72 65 20 76 61 6c 69 64 3c 2f 74 64  es are valid</td
88f0: 3e 0a 3c 2f 74 72 3e 0a 3c 74 72 3e 0a 3c 74 64  >.</tr>.<tr>.<td
8900: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c   valign="top" al
8910: 69 67 6e 3d 22 72 69 67 68 74 22 20 77 69 64 74  ign="right" widt
8920: 68 3d 31 32 30 3e 3c 69 3e 55 50 44 41 54 45 3c  h=120><i>UPDATE<
8930: 2f 69 3e 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c  /i></td>.<td val
8940: 69 67 6e 3d 22 74 6f 70 22 3e 4e 45 57 20 61 6e  ign="top">NEW an
8950: 64 20 4f 4c 44 20 72 65 66 65 72 65 6e 63 65 73  d OLD references
8960: 20 61 72 65 20 76 61 6c 69 64 3c 2f 74 64 3e 0a   are valid</td>.
8970: 3c 2f 74 72 3e 0a 3c 74 72 3e 0a 3c 74 64 20 76  </tr>.<tr>.<td v
8980: 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67  align="top" alig
8990: 6e 3d 22 72 69 67 68 74 22 20 77 69 64 74 68 3d  n="right" width=
89a0: 31 32 30 3e 3c 69 3e 44 45 4c 45 54 45 3c 2f 69  120><i>DELETE</i
89b0: 3e 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67  ></td>.<td valig
89c0: 6e 3d 22 74 6f 70 22 3e 4f 4c 44 20 72 65 66 65  n="top">OLD refe
89d0: 72 65 6e 63 65 73 20 61 72 65 20 76 61 6c 69 64  rences are valid
89e0: 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 2f 74 61  </td>.</tr>.</ta
89f0: 62 6c 65 3e 0a 3c 2f 70 3e 29 5e 0a 0a 3c 70 3e  ble>.</p>)^..<p>
8a00: 5e 49 66 20 61 20 57 48 45 4e 20 63 6c 61 75 73  ^If a WHEN claus
8a10: 65 20 69 73 20 73 75 70 70 6c 69 65 64 2c 20 74  e is supplied, t
8a20: 68 65 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74  he SQL statement
8a30: 73 20 73 70 65 63 69 66 69 65 64 0a 61 72 65 20  s specified.are 
8a40: 6f 6e 6c 79 20 65 78 65 63 75 74 65 64 20 66 6f  only executed fo
8a50: 72 20 72 6f 77 73 20 66 6f 72 20 77 68 69 63 68  r rows for which
8a60: 20 74 68 65 20 57 48 45 4e 0a 63 6c 61 75 73 65   the WHEN.clause
8a70: 20 69 73 20 74 72 75 65 2e 20 5e 49 66 20 6e 6f   is true. ^If no
8a80: 20 57 48 45 4e 20 63 6c 61 75 73 65 20 69 73 20   WHEN clause is 
8a90: 73 75 70 70 6c 69 65 64 2c 20 74 68 65 20 53 51  supplied, the SQ
8aa0: 4c 20 73 74 61 74 65 6d 65 6e 74 73 0a 61 72 65  L statements.are
8ab0: 20 65 78 65 63 75 74 65 64 20 66 6f 72 20 61 6c   executed for al
8ac0: 6c 20 72 6f 77 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e  l rows.</p>..<p>
8ad0: 5e 54 68 65 20 42 45 46 4f 52 45 20 6f 72 20 41  ^The BEFORE or A
8ae0: 46 54 45 52 20 6b 65 79 77 6f 72 64 20 64 65 74  FTER keyword det
8af0: 65 72 6d 69 6e 65 73 20 77 68 65 6e 20 74 68 65  ermines when the
8b00: 20 74 72 69 67 67 65 72 20 61 63 74 69 6f 6e 73   trigger actions
8b10: 0a 77 69 6c 6c 20 62 65 20 65 78 65 63 75 74 65  .will be execute
8b20: 64 20 72 65 6c 61 74 69 76 65 20 74 6f 20 74 68  d relative to th
8b30: 65 20 69 6e 73 65 72 74 69 6f 6e 2c 20 6d 6f 64  e insertion, mod
8b40: 69 66 69 63 61 74 69 6f 6e 20 6f 72 20 72 65 6d  ification or rem
8b50: 6f 76 61 6c 20 6f 66 20 74 68 65 0a 61 73 73 6f  oval of the.asso
8b60: 63 69 61 74 65 64 20 72 6f 77 2e 3c 2f 70 3e 0a  ciated row.</p>.
8b70: 0a 3c 70 3e 5e 41 6e 20 5b 4f 4e 20 43 4f 4e 46  .<p>^An [ON CONF
8b80: 4c 49 43 54 5d 20 63 6c 61 75 73 65 20 6d 61 79  LICT] clause may
8b90: 20 62 65 20 73 70 65 63 69 66 69 65 64 20 61 73   be specified as
8ba0: 20 70 61 72 74 20 6f 66 20 61 6e 20 5b 55 50 44   part of an [UPD
8bb0: 41 54 45 5d 20 6f 72 20 5b 49 4e 53 45 52 54 5d  ATE] or [INSERT]
8bc0: 0a 61 63 74 69 6f 6e 20 77 69 74 68 69 6e 20 74  .action within t
8bd0: 68 65 20 62 6f 64 79 20 6f 66 20 74 68 65 20 74  he body of the t
8be0: 72 69 67 67 65 72 2e 0a 5e 48 6f 77 65 76 65 72  rigger..^However
8bf0: 20 69 66 20 61 6e 20 5b 4f 4e 20 43 4f 4e 46 4c   if an [ON CONFL
8c00: 49 43 54 5d 20 63 6c 61 75 73 65 20 69 73 20 73  ICT] clause is s
8c10: 70 65 63 69 66 69 65 64 20 61 73 20 70 61 72 74  pecified as part
8c20: 20 6f 66 20 0a 74 68 65 20 73 74 61 74 65 6d 65   of .the stateme
8c30: 6e 74 20 63 61 75 73 69 6e 67 20 74 68 65 20 74  nt causing the t
8c40: 72 69 67 67 65 72 20 74 6f 20 66 69 72 65 2c 20  rigger to fire, 
8c50: 74 68 65 6e 20 63 6f 6e 66 6c 69 63 74 20 68 61  then conflict ha
8c60: 6e 64 6c 69 6e 67 0a 70 6f 6c 69 63 79 20 6f 66  ndling.policy of
8c70: 20 74 68 65 20 6f 75 74 65 72 20 73 74 61 74 65   the outer state
8c80: 6d 65 6e 74 20 69 73 20 75 73 65 64 20 69 6e 73  ment is used ins
8c90: 74 65 61 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54  tead.</p>..<p>^T
8ca0: 72 69 67 67 65 72 73 20 61 72 65 20 61 75 74 6f  riggers are auto
8cb0: 6d 61 74 69 63 61 6c 6c 79 20 5b 44 52 4f 50 20  matically [DROP 
8cc0: 54 52 49 47 47 45 52 20 7c 20 64 72 6f 70 70 65  TRIGGER | droppe
8cd0: 64 5d 0a 77 68 65 6e 20 74 68 65 20 74 61 62 6c  d].when the tabl
8ce0: 65 20 74 68 61 74 20 74 68 65 79 20 61 72 65 20  e that they are 
8cf0: 0a 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68  .associated with
8d00: 20 28 74 68 65 20 3c 69 3e 74 61 62 6c 65 2d 6e   (the <i>table-n
8d10: 61 6d 65 3c 2f 69 3e 20 74 61 62 6c 65 29 20 69  ame</i> table) i
8d20: 73 20 0a 5b 44 52 4f 50 20 54 41 42 4c 45 20 7c  s .[DROP TABLE |
8d30: 20 64 72 6f 70 70 65 64 5d 2e 20 20 5e 48 6f 77   dropped].  ^How
8d40: 65 76 65 72 20 69 66 20 74 68 65 20 74 68 65 20  ever if the the 
8d50: 74 72 69 67 67 65 72 20 61 63 74 69 6f 6e 73 20  trigger actions 
8d60: 72 65 66 65 72 65 6e 63 65 0a 6f 74 68 65 72 20  reference.other 
8d70: 74 61 62 6c 65 73 2c 20 74 68 65 20 74 72 69 67  tables, the trig
8d80: 67 65 72 20 69 73 20 6e 6f 74 20 64 72 6f 70 70  ger is not dropp
8d90: 65 64 20 6f 72 20 6d 6f 64 69 66 69 65 64 20 69  ed or modified i
8da0: 66 20 74 68 6f 73 65 20 6f 74 68 65 72 0a 74 61  f those other.ta
8db0: 62 6c 65 73 20 61 72 65 20 5b 44 52 4f 50 20 54  bles are [DROP T
8dc0: 41 42 4c 45 20 7c 20 64 72 6f 70 70 65 64 5d 20  ABLE | dropped] 
8dd0: 6f 72 20 5b 41 4c 54 45 52 20 54 41 42 4c 45 20  or [ALTER TABLE 
8de0: 7c 20 6d 6f 64 69 66 69 65 64 5d 2e 3c 2f 70 3e  | modified].</p>
8df0: 0a 0a 3c 70 3e 5e 54 72 69 67 67 65 72 73 20 61  ..<p>^Triggers a
8e00: 72 65 20 72 65 6d 6f 76 65 64 20 75 73 69 6e 67  re removed using
8e10: 20 74 68 65 20 5b 44 52 4f 50 20 54 52 49 47 47   the [DROP TRIGG
8e20: 45 52 5d 20 73 74 61 74 65 6d 65 6e 74 2e 3c 2f  ER] statement.</
8e30: 70 3e 0a 0a 3c 68 33 3e 53 79 6e 74 61 78 20 52  p>..<h3>Syntax R
8e40: 65 73 74 72 69 63 74 69 6f 6e 73 20 4f 6e 20 55  estrictions On U
8e50: 50 44 41 54 45 2c 20 44 45 4c 45 54 45 2c 20 61  PDATE, DELETE, a
8e60: 6e 64 20 49 4e 53 45 52 54 20 53 74 61 74 65 6d  nd INSERT Statem
8e70: 65 6e 74 73 20 57 69 74 68 69 6e 0a 20 20 20 20  ents Within.    
8e80: 54 72 69 67 67 65 72 73 3c 2f 68 33 3e 0a 0a 3c  Triggers</h3>..<
8e90: 70 3e 5e 54 68 65 20 5b 55 50 44 41 54 45 5d 2c  p>^The [UPDATE],
8ea0: 20 5b 44 45 4c 45 54 45 5d 2c 20 61 6e 64 20 5b   [DELETE], and [
8eb0: 49 4e 53 45 52 54 5d 0a 73 74 61 74 65 6d 65 6e  INSERT].statemen
8ec0: 74 73 20 77 69 74 68 69 6e 20 74 72 69 67 67 65  ts within trigge
8ed0: 72 73 20 64 6f 20 6e 6f 74 20 73 75 70 70 6f 72  rs do not suppor
8ee0: 74 0a 74 68 65 20 66 75 6c 6c 20 73 79 6e 74 61  t.the full synta
8ef0: 78 20 66 6f 72 20 5b 55 50 44 41 54 45 5d 2c 20  x for [UPDATE], 
8f00: 5b 44 45 4c 45 54 45 5d 2c 20 61 6e 64 20 5b 49  [DELETE], and [I
8f10: 4e 53 45 52 54 5d 20 73 74 61 74 65 6d 65 6e 74  NSERT] statement
8f20: 73 2e 20 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e  s.  The followin
8f30: 67 0a 72 65 73 74 72 69 63 74 69 6f 6e 73 20 61  g.restrictions a
8f40: 70 70 6c 79 3a 3c 2f 70 3e 0a 0a 3c 75 6c 3e 0a  pply:</p>..<ul>.
8f50: 3c 6c 69 3e 3c 70 3e 0a 20 20 5e 28 54 68 65 20  <li><p>.  ^(The 
8f60: 6e 61 6d 65 20 6f 66 20 74 68 65 20 74 61 62 6c  name of the tabl
8f70: 65 20 74 6f 20 62 65 20 6d 6f 64 69 66 69 65 64  e to be modified
8f80: 20 69 6e 20 61 6e 20 5b 55 50 44 41 54 45 5d 2c   in an [UPDATE],
8f90: 20 5b 44 45 4c 45 54 45 5d 2c 20 6f 72 20 5b 49   [DELETE], or [I
8fa0: 4e 53 45 52 54 5d 0a 20 20 73 74 61 74 65 6d 65  NSERT].  stateme
8fb0: 6e 74 20 6d 75 73 74 20 62 65 20 61 6e 20 75 6e  nt must be an un
8fc0: 71 75 61 6c 69 66 69 65 64 20 74 61 62 6c 65 20  qualified table 
8fd0: 6e 61 6d 65 2e 20 20 49 6e 20 6f 74 68 65 72 20  name.  In other 
8fe0: 77 6f 72 64 73 2c 20 6f 6e 65 20 6d 75 73 74 0a  words, one must.
8ff0: 20 20 75 73 65 20 6a 75 73 74 20 22 3c 69 3e 74    use just "<i>t
9000: 61 62 6c 65 6e 61 6d 65 3c 2f 69 3e 22 20 6e 6f  ablename</i>" no
9010: 74 20 22 3c 69 3e 64 61 74 61 62 61 73 65 3c 2f  t "<i>database</
9020: 69 3e 3c 62 3e 2e 3c 2f 62 3e 3c 69 3e 74 61 62  i><b>.</b><i>tab
9030: 6c 65 6e 61 6d 65 3c 2f 69 3e 22 0a 20 20 77 68  lename</i>".  wh
9040: 65 6e 20 73 70 65 63 69 66 79 69 6e 67 20 74 68  en specifying th
9050: 65 20 74 61 62 6c 65 2e 29 5e 20 20 5e 54 68 65  e table.)^  ^The
9060: 20 74 61 62 6c 65 20 74 6f 20 62 65 20 6d 6f 64   table to be mod
9070: 69 66 69 65 64 20 6d 75 73 74 20 65 78 69 73 74  ified must exist
9080: 20 69 6e 20 74 68 65 0a 20 20 73 61 6d 65 20 64   in the.  same d
9090: 61 74 61 62 61 73 65 20 61 73 20 74 68 65 20 74  atabase as the t
90a0: 61 62 6c 65 20 6f 72 20 76 69 65 77 20 74 6f 20  able or view to 
90b0: 77 68 69 63 68 20 74 68 65 20 74 72 69 67 67 65  which the trigge
90c0: 72 20 69 73 20 61 74 74 61 63 68 65 64 2e 0a 20  r is attached.. 
90d0: 20 3c 2f 70 3e 3c 2f 6c 69 3e 0a 0a 3c 6c 69 3e   </p></li>..<li>
90e0: 3c 70 3e 0a 20 20 5e 54 68 65 20 22 49 4e 53 45  <p>.  ^The "INSE
90f0: 52 54 20 49 4e 54 4f 20 3c 69 3e 74 61 62 6c 65  RT INTO <i>table
9100: 3c 2f 69 3e 20 44 45 46 41 55 4c 54 20 56 41 4c  </i> DEFAULT VAL
9110: 55 45 53 22 20 66 6f 72 6d 20 6f 66 20 74 68 65  UES" form of the
9120: 20 5b 49 4e 53 45 52 54 5d 20 73 74 61 74 65 6d   [INSERT] statem
9130: 65 6e 74 0a 20 20 69 73 20 6e 6f 74 20 73 75 70  ent.  is not sup
9140: 70 6f 72 74 65 64 2e 0a 20 20 3c 2f 70 3e 3c 2f  ported..  </p></
9150: 6c 69 3e 0a 0a 3c 6c 69 3e 3c 70 3e 0a 20 20 5e  li>..<li><p>.  ^
9160: 54 68 65 20 49 4e 44 45 58 45 44 20 42 59 20 61  The INDEXED BY a
9170: 6e 64 20 4e 4f 54 20 49 4e 44 45 58 45 44 20 63  nd NOT INDEXED c
9180: 6c 61 75 73 65 73 20 61 72 65 20 6e 6f 74 20 73  lauses are not s
9190: 75 70 70 6f 72 74 65 64 20 66 6f 72 20 5b 55 50  upported for [UP
91a0: 44 41 54 45 5d 20 61 6e 64 0a 20 20 5b 44 45 4c  DATE] and.  [DEL
91b0: 45 54 45 5d 20 73 74 61 74 65 6d 65 6e 74 73 2e  ETE] statements.
91c0: 0a 20 20 3c 2f 70 3e 3c 2f 6c 69 3e 0a 0a 3c 6c  .  </p></li>..<l
91d0: 69 3e 3c 70 3e 0a 20 20 5e 28 54 68 65 20 4f 52  i><p>.  ^(The OR
91e0: 44 45 52 20 42 59 20 61 6e 64 20 4c 49 4d 49 54  DER BY and LIMIT
91f0: 20 63 6c 61 75 73 65 73 20 6f 6e 20 5b 55 50 44   clauses on [UPD
9200: 41 54 45 5d 20 61 6e 64 20 5b 44 45 4c 45 54 45  ATE] and [DELETE
9210: 5d 20 73 74 61 74 65 6d 65 6e 74 73 20 61 72 65  ] statements are
9220: 20 6e 6f 74 0a 20 20 73 75 70 70 6f 72 74 65 64   not.  supported
9230: 2e 20 20 4f 52 44 45 52 20 42 59 20 61 6e 64 20  .  ORDER BY and 
9240: 4c 49 4d 49 54 20 61 72 65 20 6e 6f 74 20 6e 6f  LIMIT are not no
9250: 72 6d 61 6c 6c 79 20 73 75 70 70 6f 72 74 65 64  rmally supported
9260: 20 66 6f 72 20 5b 55 50 44 41 54 45 5d 20 6f 72   for [UPDATE] or
9270: 0a 20 20 5b 44 45 4c 45 54 45 5d 20 69 6e 20 61  .  [DELETE] in a
9280: 6e 79 20 63 6f 6e 74 65 78 74 20 62 75 74 20 63  ny context but c
9290: 61 6e 20 62 65 20 65 6e 61 62 6c 65 64 20 66 6f  an be enabled fo
92a0: 72 20 74 6f 70 2d 6c 65 76 65 6c 20 73 74 61 74  r top-level stat
92b0: 65 6d 65 6e 74 73 0a 20 20 75 73 69 6e 67 20 74  ements.  using t
92c0: 68 65 20 5b 53 51 4c 49 54 45 5f 45 4e 41 42 4c  he [SQLITE_ENABL
92d0: 45 5f 55 50 44 41 54 45 5f 44 45 4c 45 54 45 5f  E_UPDATE_DELETE_
92e0: 4c 49 4d 49 54 5d 20 63 6f 6d 70 69 6c 65 2d 74  LIMIT] compile-t
92f0: 69 6d 65 20 6f 70 74 69 6f 6e 2e 20 20 48 6f 77  ime option.  How
9300: 65 76 65 72 2c 0a 20 20 74 68 61 74 20 63 6f 6d  ever,.  that com
9310: 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e  pile-time option
9320: 20 6f 6e 6c 79 20 61 70 70 6c 69 65 73 20 74 6f   only applies to
9330: 20 74 6f 70 2d 6c 65 76 65 6c 20 5b 55 50 44 41   top-level [UPDA
9340: 54 45 5d 20 61 6e 64 20 5b 44 45 4c 45 54 45 5d  TE] and [DELETE]
9350: 0a 20 20 73 74 61 74 65 6d 65 6e 74 73 2c 20 6e  .  statements, n
9360: 6f 74 20 5b 55 50 44 41 54 45 5d 20 61 6e 64 20  ot [UPDATE] and 
9370: 5b 44 45 4c 45 54 45 5d 20 73 74 61 74 65 6d 65  [DELETE] stateme
9380: 6e 74 73 20 77 69 74 68 69 6e 20 74 72 69 67 67  nts within trigg
9390: 65 72 73 2e 29 5e 0a 20 20 3c 2f 70 3e 3c 2f 6c  ers.)^.  </p></l
93a0: 69 3e 0a 3c 2f 75 6c 3e 0a 0a 3c 74 63 6c 3e 68  i>.</ul>..<tcl>h
93b0: 64 5f 66 72 61 67 6d 65 6e 74 20 69 6e 73 74 65  d_fragment inste
93c0: 61 64 5f 6f 66 5f 74 72 69 67 67 65 72 20 7b 49  ad_of_trigger {I
93d0: 4e 53 54 45 41 44 20 4f 46 7d 20 7b 49 4e 53 54  NSTEAD OF} {INST
93e0: 45 41 44 20 4f 46 20 74 72 69 67 67 65 72 7d 3c  EAD OF trigger}<
93f0: 2f 74 63 6c 3e 0a 3c 68 33 3e 49 4e 53 54 45 41  /tcl>.<h3>INSTEA
9400: 44 20 4f 46 20 74 72 69 67 67 65 72 3c 2f 68 33  D OF trigger</h3
9410: 3e 0a 0a 3c 70 3e 5e 54 72 69 67 67 65 72 73 20  >..<p>^Triggers 
9420: 6d 61 79 20 62 65 20 63 72 65 61 74 65 64 20 6f  may be created o
9430: 6e 20 5b 76 69 65 77 73 5d 2c 20 61 73 20 77 65  n [views], as we
9440: 6c 6c 20 61 73 20 6f 72 64 69 6e 61 72 79 20 74  ll as ordinary t
9450: 61 62 6c 65 73 2c 20 62 79 0a 73 70 65 63 69 66  ables, by.specif
9460: 79 69 6e 67 20 49 4e 53 54 45 41 44 20 4f 46 20  ying INSTEAD OF 
9470: 69 6e 20 74 68 65 20 43 52 45 41 54 45 20 54 52  in the CREATE TR
9480: 49 47 47 45 52 20 73 74 61 74 65 6d 65 6e 74 2e  IGGER statement.
9490: 20 0a 5e 49 66 20 6f 6e 65 20 6f 72 20 6d 6f 72   .^If one or mor
94a0: 65 20 4f 4e 20 49 4e 53 45 52 54 2c 20 4f 4e 20  e ON INSERT, ON 
94b0: 44 45 4c 45 54 45 0a 6f 72 20 4f 4e 20 55 50 44  DELETE.or ON UPD
94c0: 41 54 45 20 74 72 69 67 67 65 72 73 20 61 72 65  ATE triggers are
94d0: 20 64 65 66 69 6e 65 64 20 6f 6e 20 61 20 76 69   defined on a vi
94e0: 65 77 2c 20 74 68 65 6e 20 69 74 20 69 73 20 6e  ew, then it is n
94f0: 6f 74 20 61 6e 0a 65 72 72 6f 72 20 74 6f 20 65  ot an.error to e
9500: 78 65 63 75 74 65 20 61 6e 20 49 4e 53 45 52 54  xecute an INSERT
9510: 2c 20 44 45 4c 45 54 45 20 6f 72 20 55 50 44 41  , DELETE or UPDA
9520: 54 45 20 73 74 61 74 65 6d 65 6e 74 20 6f 6e 20  TE statement on 
9530: 74 68 65 20 76 69 65 77 2c 20 0a 72 65 73 70 65  the view, .respe
9540: 63 74 69 76 65 6c 79 2e 20 20 5e 49 6e 73 74 65  ctively.  ^Inste
9550: 61 64 2c 0a 65 78 65 63 75 74 69 6e 67 20 61 6e  ad,.executing an
9560: 20 49 4e 53 45 52 54 2c 20 44 45 4c 45 54 45 20   INSERT, DELETE 
9570: 6f 72 20 55 50 44 41 54 45 20 6f 6e 20 74 68 65  or UPDATE on the
9580: 20 76 69 65 77 20 63 61 75 73 65 73 20 74 68 65   view causes the
9590: 20 61 73 73 6f 63 69 61 74 65 64 0a 74 72 69 67   associated.trig
95a0: 67 65 72 73 20 74 6f 20 66 69 72 65 2e 20 5e 54  gers to fire. ^T
95b0: 68 65 20 72 65 61 6c 20 74 61 62 6c 65 73 20 75  he real tables u
95c0: 6e 64 65 72 6c 79 69 6e 67 20 74 68 65 20 76 69  nderlying the vi
95d0: 65 77 20 61 72 65 20 6e 6f 74 20 6d 6f 64 69 66  ew are not modif
95e0: 69 65 64 0a 28 65 78 63 65 70 74 20 70 6f 73 73  ied.(except poss
95f0: 69 62 6c 79 20 65 78 70 6c 69 63 69 74 6c 79 2c  ibly explicitly,
9600: 20 62 79 20 61 20 74 72 69 67 67 65 72 20 70 72   by a trigger pr
9610: 6f 67 72 61 6d 29 2e 3c 2f 70 3e 0a 0a 3c 70 3e  ogram).</p>..<p>
9620: 5e 4e 6f 74 65 20 74 68 61 74 20 74 68 65 20 5b  ^Note that the [
9630: 73 71 6c 69 74 65 33 5f 63 68 61 6e 67 65 73 28  sqlite3_changes(
9640: 29 5d 20 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f  )] and [sqlite3_
9650: 74 6f 74 61 6c 5f 63 68 61 6e 67 65 73 28 29 5d  total_changes()]
9660: 20 69 6e 74 65 72 66 61 63 65 73 0a 64 6f 20 6e   interfaces.do n
9670: 6f 74 20 63 6f 75 6e 74 20 49 4e 53 54 45 41 44  ot count INSTEAD
9680: 20 4f 46 20 74 72 69 67 67 65 72 20 66 69 72 69   OF trigger firi
9690: 6e 67 73 2c 20 62 75 74 20 74 68 65 0a 5b 63 6f  ngs, but the.[co
96a0: 75 6e 74 5f 63 68 61 6e 67 65 73 20 70 72 61 67  unt_changes prag
96b0: 6d 61 5d 20 64 6f 65 73 20 63 6f 75 6e 74 20 49  ma] does count I
96c0: 4e 53 54 45 41 44 20 4f 46 20 74 72 69 67 67 65  NSTEAD OF trigge
96d0: 72 20 66 69 72 69 6e 67 2e 3c 2f 70 3e 0a 0a 3c  r firing.</p>..<
96e0: 68 33 3e 45 78 61 6d 70 6c 65 73 3c 2f 68 33 3e  h3>Examples</h3>
96f0: 0a 0a 3c 70 3e 5e 28 41 73 73 75 6d 69 6e 67 20  ..<p>^(Assuming 
9700: 74 68 61 74 20 63 75 73 74 6f 6d 65 72 20 72 65  that customer re
9710: 63 6f 72 64 73 20 61 72 65 20 73 74 6f 72 65 64  cords are stored
9720: 20 69 6e 20 74 68 65 20 22 63 75 73 74 6f 6d 65   in the "custome
9730: 72 73 22 20 74 61 62 6c 65 2c 20 61 6e 64 0a 74  rs" table, and.t
9740: 68 61 74 20 6f 72 64 65 72 20 72 65 63 6f 72 64  hat order record
9750: 73 20 61 72 65 20 73 74 6f 72 65 64 20 69 6e 20  s are stored in 
9760: 74 68 65 20 22 6f 72 64 65 72 73 22 20 74 61 62  the "orders" tab
9770: 6c 65 2c 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e  le, the followin
9780: 67 20 74 72 69 67 67 65 72 0a 65 6e 73 75 72 65  g trigger.ensure
9790: 73 20 74 68 61 74 20 61 6c 6c 20 61 73 73 6f 63  s that all assoc
97a0: 69 61 74 65 64 20 6f 72 64 65 72 73 20 61 72 65  iated orders are
97b0: 20 72 65 64 69 72 65 63 74 65 64 20 77 68 65 6e   redirected when
97c0: 20 61 20 63 75 73 74 6f 6d 65 72 20 63 68 61 6e   a customer chan
97d0: 67 65 73 0a 68 69 73 20 6f 72 20 68 65 72 20 61  ges.his or her a
97e0: 64 64 72 65 73 73 3a 3c 2f 70 3e 0a 0a 3c 74 63  ddress:</p>..<tc
97f0: 6c 3e 45 78 61 6d 70 6c 65 20 7b 0a 43 52 45 41  l>Example {.CREA
9800: 54 45 20 54 52 49 47 47 45 52 20 75 70 64 61 74  TE TRIGGER updat
9810: 65 5f 63 75 73 74 6f 6d 65 72 5f 61 64 64 72 65  e_customer_addre
9820: 73 73 20 55 50 44 41 54 45 20 4f 46 20 61 64 64  ss UPDATE OF add
9830: 72 65 73 73 20 4f 4e 20 63 75 73 74 6f 6d 65 72  ress ON customer
9840: 73 20 0a 20 20 42 45 47 49 4e 0a 20 20 20 20 55  s .  BEGIN.    U
9850: 50 44 41 54 45 20 6f 72 64 65 72 73 20 53 45 54  PDATE orders SET
9860: 20 61 64 64 72 65 73 73 20 3d 20 6e 65 77 2e 61   address = new.a
9870: 64 64 72 65 73 73 20 57 48 45 52 45 20 63 75 73  ddress WHERE cus
9880: 74 6f 6d 65 72 5f 6e 61 6d 65 20 3d 20 6f 6c 64  tomer_name = old
9890: 2e 6e 61 6d 65 3b 0a 20 20 45 4e 44 3b 0a 7d 3c  .name;.  END;.}<
98a0: 2f 74 63 6c 3e 0a 0a 3c 70 3e 57 69 74 68 20 74  /tcl>..<p>With t
98b0: 68 69 73 20 74 72 69 67 67 65 72 20 69 6e 73 74  his trigger inst
98c0: 61 6c 6c 65 64 2c 20 65 78 65 63 75 74 69 6e 67  alled, executing
98d0: 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74 3a 3c   the statement:<
98e0: 2f 70 3e 0a 0a 3c 74 63 6c 3e 45 78 61 6d 70 6c  /p>..<tcl>Exampl
98f0: 65 20 7b 0a 55 50 44 41 54 45 20 63 75 73 74 6f  e {.UPDATE custo
9900: 6d 65 72 73 20 53 45 54 20 61 64 64 72 65 73 73  mers SET address
9910: 20 3d 20 27 31 20 4d 61 69 6e 20 53 74 2e 27 20   = '1 Main St.' 
9920: 57 48 45 52 45 20 6e 61 6d 65 20 3d 20 27 4a 61  WHERE name = 'Ja
9930: 63 6b 20 4a 6f 6e 65 73 27 3b 0a 7d 3c 2f 74 63  ck Jones';.}</tc
9940: 6c 3e 0a 0a 3c 70 3e 63 61 75 73 65 73 20 74 68  l>..<p>causes th
9950: 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 6f 20 62  e following to b
9960: 65 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20  e automatically 
9970: 65 78 65 63 75 74 65 64 3a 3c 2f 70 3e 0a 0a 3c  executed:</p>..<
9980: 74 63 6c 3e 45 78 61 6d 70 6c 65 20 7b 0a 55 50  tcl>Example {.UP
9990: 44 41 54 45 20 6f 72 64 65 72 73 20 53 45 54 20  DATE orders SET 
99a0: 61 64 64 72 65 73 73 20 3d 20 27 31 20 4d 61 69  address = '1 Mai
99b0: 6e 20 53 74 2e 27 20 57 48 45 52 45 20 63 75 73  n St.' WHERE cus
99c0: 74 6f 6d 65 72 5f 6e 61 6d 65 20 3d 20 27 4a 61  tomer_name = 'Ja
99d0: 63 6b 20 4a 6f 6e 65 73 27 3b 0a 7d 3c 2f 74 63  ck Jones';.}</tc
99e0: 6c 3e 29 5e 0a 0a 3c 74 63 6c 3e 68 64 5f 66 72  l>)^..<tcl>hd_fr
99f0: 61 67 6d 65 6e 74 20 75 6e 64 65 66 5f 62 65 66  agment undef_bef
9a00: 6f 72 65 20 7b 75 6e 64 65 66 69 6e 65 64 20 42  ore {undefined B
9a10: 45 46 4f 52 45 20 74 72 69 67 67 65 72 20 62 65  EFORE trigger be
9a20: 68 61 76 69 6f 72 7d 3c 2f 74 63 6c 3e 0a 3c 68  havior}</tcl>.<h
9a30: 33 3e 43 61 75 74 69 6f 6e 73 20 4f 6e 20 54 68  3>Cautions On Th
9a40: 65 20 55 73 65 20 4f 66 20 42 45 46 4f 52 45 20  e Use Of BEFORE 
9a50: 74 72 69 67 67 65 72 73 3c 2f 68 33 3e 0a 0a 3c  triggers</h3>..<
9a60: 70 3e 49 66 20 61 20 42 45 46 4f 52 45 20 55 50  p>If a BEFORE UP
9a70: 44 41 54 45 20 6f 72 20 42 45 46 4f 52 45 20 44  DATE or BEFORE D
9a80: 45 4c 45 54 45 20 74 72 69 67 67 65 72 20 6d 6f  ELETE trigger mo
9a90: 64 69 66 69 65 73 20 6f 72 20 64 65 6c 65 74 65  difies or delete
9aa0: 73 20 61 20 72 6f 77 0a 74 68 61 74 20 77 61 73  s a row.that was
9ab0: 20 74 6f 20 68 61 76 65 20 62 65 65 6e 20 75 70   to have been up
9ac0: 64 61 74 65 64 20 6f 72 20 64 65 6c 65 74 65 64  dated or deleted
9ad0: 2c 20 74 68 65 6e 20 74 68 65 20 72 65 73 75 6c  , then the resul
9ae0: 74 20 6f 66 20 74 68 65 20 73 75 62 73 65 71 75  t of the subsequ
9af0: 65 6e 74 0a 75 70 64 61 74 65 20 6f 72 20 64 65  ent.update or de
9b00: 6c 65 74 65 20 6f 70 65 72 61 74 69 6f 6e 20 69  lete operation i
9b10: 73 20 75 6e 64 65 66 69 6e 65 64 2e 20 20 46 75  s undefined.  Fu
9b20: 72 74 68 65 72 6d 6f 72 65 2c 20 69 66 20 61 20  rthermore, if a 
9b30: 42 45 46 4f 52 45 20 74 72 69 67 67 65 72 0a 6d  BEFORE trigger.m
9b40: 6f 64 69 66 69 65 73 20 6f 72 20 64 65 6c 65 74  odifies or delet
9b50: 65 73 20 61 20 72 6f 77 2c 20 74 68 65 6e 20 69  es a row, then i
9b60: 74 20 69 73 20 75 6e 64 65 66 69 6e 65 64 20 77  t is undefined w
9b70: 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 41 46  hether or not AF
9b80: 54 45 52 20 74 72 69 67 67 65 72 73 0a 74 68 61  TER triggers.tha
9b90: 74 20 77 6f 75 6c 64 20 68 61 76 65 20 6f 74 68  t would have oth
9ba0: 65 72 77 69 73 65 20 72 75 6e 20 6f 6e 20 74 68  erwise run on th
9bb0: 6f 73 65 20 72 6f 77 73 20 77 69 6c 6c 20 69 6e  ose rows will in
9bc0: 20 66 61 63 74 20 72 75 6e 2e 0a 3c 2f 70 3e 0a   fact run..</p>.
9bd0: 0a 3c 70 3e 54 68 65 20 76 61 6c 75 65 20 6f 66  .<p>The value of
9be0: 20 4e 45 57 2e 72 6f 77 69 64 20 69 73 20 75 6e   NEW.rowid is un
9bf0: 64 65 66 69 6e 65 64 20 69 6e 20 61 20 42 45 46  defined in a BEF
9c00: 4f 52 45 20 49 4e 53 45 52 54 20 74 72 69 67 67  ORE INSERT trigg
9c10: 65 72 20 69 6e 20 77 68 69 63 68 0a 74 68 65 20  er in which.the 
9c20: 72 6f 77 69 64 20 69 73 20 6e 6f 74 20 65 78 70  rowid is not exp
9c30: 6c 69 63 69 74 6c 79 20 73 65 74 20 74 6f 20 61  licitly set to a
9c40: 6e 20 69 6e 74 65 67 65 72 2e 3c 2f 70 3e 0a 0a  n integer.</p>..
9c50: 3c 70 3e 42 65 63 61 75 73 65 20 6f 66 20 74 68  <p>Because of th
9c60: 65 20 62 65 68 61 76 69 6f 72 73 20 64 65 73 63  e behaviors desc
9c70: 72 69 62 65 64 20 61 62 6f 76 65 2c 20 70 72 6f  ribed above, pro
9c80: 67 72 61 6d 6d 65 72 73 20 61 72 65 20 65 6e 63  grammers are enc
9c90: 6f 75 72 61 67 65 64 20 74 6f 0a 70 72 65 66 65  ouraged to.prefe
9ca0: 72 20 41 46 54 45 52 20 74 72 69 67 67 65 72 73  r AFTER triggers
9cb0: 20 6f 76 65 72 20 42 45 46 4f 52 45 20 74 72 69   over BEFORE tri
9cc0: 67 67 65 72 73 2e 3c 2f 70 3e 0a 0a 3c 68 33 3e  ggers.</p>..<h3>
9cd0: 54 68 65 20 52 41 49 53 45 28 29 20 66 75 6e 63  The RAISE() func
9ce0: 74 69 6f 6e 3c 2f 68 33 3e 0a 0a 3c 70 3e 5e 28  tion</h3>..<p>^(
9cf0: 41 20 73 70 65 63 69 61 6c 20 53 51 4c 20 66 75  A special SQL fu
9d00: 6e 63 74 69 6f 6e 20 52 41 49 53 45 28 29 20 6d  nction RAISE() m
9d10: 61 79 20 62 65 20 75 73 65 64 20 77 69 74 68 69  ay be used withi
9d20: 6e 20 61 20 74 72 69 67 67 65 72 2d 70 72 6f 67  n a trigger-prog
9d30: 72 61 6d 2c 29 5e 0a 77 69 74 68 20 74 68 65 20  ram,)^.with the 
9d40: 66 6f 6c 6c 6f 77 69 6e 67 20 73 79 6e 74 61 78  following syntax
9d50: 3c 2f 70 3e 20 0a 0a 3c 74 63 6c 3e 42 75 62 62  </p> ..<tcl>Bubb
9d60: 6c 65 44 69 61 67 72 61 6d 20 72 61 69 73 65 2d  leDiagram raise-
9d70: 66 75 6e 63 74 69 6f 6e 3c 2f 74 63 6c 3e 0a 0a  function</tcl>..
9d80: 3c 70 3e 5e 57 68 65 6e 20 6f 6e 65 20 6f 66 20  <p>^When one of 
9d90: 74 68 65 20 66 69 72 73 74 20 74 68 72 65 65 20  the first three 
9da0: 66 6f 72 6d 73 20 69 73 20 63 61 6c 6c 65 64 20  forms is called 
9db0: 64 75 72 69 6e 67 20 74 72 69 67 67 65 72 2d 70  during trigger-p
9dc0: 72 6f 67 72 61 6d 0a 65 78 65 63 75 74 69 6f 6e  rogram.execution
9dd0: 2c 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  , the specified 
9de0: 5b 4f 4e 20 43 4f 4e 46 4c 49 43 54 5d 20 70 72  [ON CONFLICT] pr
9df0: 6f 63 65 73 73 69 6e 67 20 69 73 20 70 65 72 66  ocessing is perf
9e00: 6f 72 6d 65 64 0a 28 65 69 74 68 65 72 20 41 42  ormed.(either AB
9e10: 4f 52 54 2c 20 46 41 49 4c 20 6f 72 20 52 4f 4c  ORT, FAIL or ROL
9e20: 4c 42 41 43 4b 29 20 61 6e 64 20 74 68 65 20 63  LBACK) and the c
9e30: 75 72 72 65 6e 74 20 71 75 65 72 79 20 74 65 72  urrent query ter
9e40: 6d 69 6e 61 74 65 73 2e 0a 41 6e 20 65 72 72 6f  minates..An erro
9e50: 72 20 63 6f 64 65 20 6f 66 20 5b 53 51 4c 49 54  r code of [SQLIT
9e60: 45 5f 43 4f 4e 53 54 52 41 49 4e 54 5d 20 69 73  E_CONSTRAINT] is
9e70: 20 72 65 74 75 72 6e 65 64 20 74 6f 20 74 68 65   returned to the
9e80: 20 61 70 70 6c 69 63 61 74 69 6f 6e 2c 0a 61 6c   application,.al
9e90: 6f 6e 67 20 77 69 74 68 20 74 68 65 20 73 70 65  ong with the spe
9ea0: 63 69 66 69 65 64 20 65 72 72 6f 72 20 6d 65 73  cified error mes
9eb0: 73 61 67 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 57  sage.</p>..<p>^W
9ec0: 68 65 6e 20 52 41 49 53 45 28 49 47 4e 4f 52 45  hen RAISE(IGNORE
9ed0: 29 20 69 73 20 63 61 6c 6c 65 64 2c 20 74 68 65  ) is called, the
9ee0: 20 72 65 6d 61 69 6e 64 65 72 20 6f 66 20 74 68   remainder of th
9ef0: 65 20 63 75 72 72 65 6e 74 20 74 72 69 67 67 65  e current trigge
9f00: 72 20 70 72 6f 67 72 61 6d 2c 0a 74 68 65 20 73  r program,.the s
9f10: 74 61 74 65 6d 65 6e 74 20 74 68 61 74 20 63 61  tatement that ca
9f20: 75 73 65 64 20 74 68 65 20 74 72 69 67 67 65 72  used the trigger
9f30: 20 70 72 6f 67 72 61 6d 20 74 6f 20 65 78 65 63   program to exec
9f40: 75 74 65 20 61 6e 64 20 61 6e 79 20 73 75 62 73  ute and any subs
9f50: 65 71 75 65 6e 74 0a 74 72 69 67 67 65 72 20 70  equent.trigger p
9f60: 72 6f 67 72 61 6d 73 20 74 68 61 74 20 77 6f 75  rograms that wou
9f70: 6c 64 20 6f 66 20 62 65 65 6e 20 65 78 65 63 75  ld of been execu
9f80: 74 65 64 20 61 72 65 20 61 62 61 6e 64 6f 6e 65  ted are abandone
9f90: 64 2e 20 5e 4e 6f 20 64 61 74 61 62 61 73 65 0a  d. ^No database.
9fa0: 63 68 61 6e 67 65 73 20 61 72 65 20 72 6f 6c 6c  changes are roll
9fb0: 65 64 20 62 61 63 6b 2e 20 20 5e 49 66 20 74 68  ed back.  ^If th
9fc0: 65 20 73 74 61 74 65 6d 65 6e 74 20 74 68 61 74  e statement that
9fd0: 20 63 61 75 73 65 64 20 74 68 65 20 74 72 69 67   caused the trig
9fe0: 67 65 72 20 70 72 6f 67 72 61 6d 0a 74 6f 20 65  ger program.to e
9ff0: 78 65 63 75 74 65 20 69 73 20 69 74 73 65 6c 66  xecute is itself
a000: 20 70 61 72 74 20 6f 66 20 61 20 74 72 69 67 67   part of a trigg
a010: 65 72 20 70 72 6f 67 72 61 6d 2c 20 74 68 65 6e  er program, then
a020: 20 74 68 61 74 20 74 72 69 67 67 65 72 20 70 72   that trigger pr
a030: 6f 67 72 61 6d 0a 72 65 73 75 6d 65 73 20 65 78  ogram.resumes ex
a040: 65 63 75 74 69 6f 6e 20 61 74 20 74 68 65 20 62  ecution at the b
a050: 65 67 69 6e 6e 69 6e 67 20 6f 66 20 74 68 65 20  eginning of the 
a060: 6e 65 78 74 20 73 74 65 70 2e 0a 3c 2f 70 3e 0a  next step..</p>.
a070: 0a 0a 3c 74 63 6c 3e 0a 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 23 0a 53 65 63 74 69 6f 6e 20  #######.Section 
a0d0: 7b 43 52 45 41 54 45 20 56 49 45 57 7d 20 7b 63  {CREATE VIEW} {c
a0e0: 72 65 61 74 65 76 69 65 77 7d 20 7b 7b 43 52 45  reateview} {{CRE
a0f0: 41 54 45 20 56 49 45 57 7d 20 76 69 65 77 20 2a  ATE VIEW} view *
a100: 76 69 65 77 73 7d 0a 0a 42 75 62 62 6c 65 44 69  views}..BubbleDi
a110: 61 67 72 61 6d 20 63 72 65 61 74 65 2d 76 69 65  agram create-vie
a120: 77 2d 73 74 6d 74 20 31 0a 3c 2f 74 63 6c 3e 0a  w-stmt 1.</tcl>.
a130: 0a 3c 70 3e 5e 54 68 65 20 43 52 45 41 54 45 20  .<p>^The CREATE 
a140: 56 49 45 57 20 63 6f 6d 6d 61 6e 64 20 61 73 73  VIEW command ass
a150: 69 67 6e 73 20 61 20 6e 61 6d 65 20 74 6f 20 61  igns a name to a
a160: 20 70 72 65 2d 70 61 63 6b 61 67 65 64 20 0a 5b   pre-packaged .[
a170: 53 45 4c 45 43 54 5d 20 73 74 61 74 65 6d 65 6e  SELECT] statemen
a180: 74 2e 20 0a 5e 4f 6e 63 65 20 74 68 65 20 76 69  t. .^Once the vi
a190: 65 77 20 69 73 20 63 72 65 61 74 65 64 2c 20 69  ew is created, i
a1a0: 74 20 63 61 6e 20 62 65 20 75 73 65 64 20 69 6e  t can be used in
a1b0: 20 74 68 65 20 46 52 4f 4d 20 63 6c 61 75 73 65   the FROM clause
a1c0: 0a 6f 66 20 61 6e 6f 74 68 65 72 20 5b 53 45 4c  .of another [SEL
a1d0: 45 43 54 5d 20 69 6e 20 70 6c 61 63 65 20 6f 66  ECT] in place of
a1e0: 20 61 20 74 61 62 6c 65 20 6e 61 6d 65 2e 0a 3c   a table name..<
a1f0: 2f 70 3e 0a 0a 3c 70 3e 5e 49 66 20 74 68 65 20  /p>..<p>^If the 
a200: 22 54 45 4d 50 22 20 6f 72 20 22 54 45 4d 50 4f  "TEMP" or "TEMPO
a210: 52 41 52 59 22 20 6b 65 79 77 6f 72 64 20 6f 63  RARY" keyword oc
a220: 63 75 72 73 20 69 6e 20 62 65 74 77 65 65 6e 20  curs in between 
a230: 22 43 52 45 41 54 45 22 0a 61 6e 64 20 22 56 49  "CREATE".and "VI
a240: 45 57 22 20 74 68 65 6e 20 74 68 65 20 76 69 65  EW" then the vie
a250: 77 20 74 68 61 74 20 69 73 20 63 72 65 61 74 65  w that is create
a260: 64 20 69 73 20 6f 6e 6c 79 20 76 69 73 69 62 6c  d is only visibl
a270: 65 20 74 6f 20 74 68 65 0a 70 72 6f 63 65 73 73  e to the.process
a280: 20 74 68 61 74 20 6f 70 65 6e 65 64 20 74 68 65   that opened the
a290: 20 64 61 74 61 62 61 73 65 20 61 6e 64 20 69 73   database and is
a2a0: 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 64   automatically d
a2b0: 65 6c 65 74 65 64 20 77 68 65 6e 0a 74 68 65 20  eleted when.the 
a2c0: 64 61 74 61 62 61 73 65 20 69 73 20 63 6c 6f 73  database is clos
a2d0: 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 20 5e 49 66  ed.</p>..<p> ^If
a2e0: 20 61 20 26 6c 74 3b 64 61 74 61 62 61 73 65 2d   a &lt;database-
a2f0: 6e 61 6d 65 26 67 74 3b 20 69 73 20 73 70 65 63  name&gt; is spec
a300: 69 66 69 65 64 2c 20 74 68 65 6e 20 74 68 65 20  ified, then the 
a310: 76 69 65 77 20 69 73 20 63 72 65 61 74 65 64 20  view is created 
a320: 69 6e 20 0a 74 68 65 20 6e 61 6d 65 64 20 64 61  in .the named da
a330: 74 61 62 61 73 65 2e 20 5e 49 74 20 69 73 20 61  tabase. ^It is a
a340: 6e 20 65 72 72 6f 72 20 74 6f 20 73 70 65 63 69  n error to speci
a350: 66 79 20 62 6f 74 68 20 61 20 26 6c 74 3b 64 61  fy both a &lt;da
a360: 74 61 62 61 73 65 2d 6e 61 6d 65 26 67 74 3b 0a  tabase-name&gt;.
a370: 61 6e 64 20 74 68 65 20 54 45 4d 50 20 6b 65 79  and the TEMP key
a380: 77 6f 72 64 20 6f 6e 20 61 20 56 49 45 57 2c 20  word on a VIEW, 
a390: 75 6e 6c 65 73 73 20 74 68 65 20 26 6c 74 3b 64  unless the &lt;d
a3a0: 61 74 61 62 61 73 65 2d 6e 61 6d 65 26 67 74 3b  atabase-name&gt;
a3b0: 20 69 73 20 22 74 65 6d 70 22 2e 0a 5e 49 66 20   is "temp"..^If 
a3c0: 6e 6f 20 64 61 74 61 62 61 73 65 20 6e 61 6d 65  no database name
a3d0: 20 69 73 20 73 70 65 63 69 66 69 65 64 2c 20 61   is specified, a
a3e0: 6e 64 20 74 68 65 20 54 45 4d 50 20 6b 65 79 77  nd the TEMP keyw
a3f0: 6f 72 64 20 69 73 20 6e 6f 74 20 70 72 65 73 65  ord is not prese
a400: 6e 74 2c 0a 74 68 65 20 56 49 45 57 20 69 73 20  nt,.the VIEW is 
a410: 63 72 65 61 74 65 64 20 69 6e 20 74 68 65 20 6d  created in the m
a420: 61 69 6e 20 64 61 74 61 62 61 73 65 2e 3c 2f 70  ain database.</p
a430: 3e 0a 0a 3c 70 3e 5e 59 6f 75 20 63 61 6e 6e 6f  >..<p>^You canno
a440: 74 20 5b 44 45 4c 45 54 45 5d 2c 20 5b 49 4e 53  t [DELETE], [INS
a450: 45 52 54 5d 2c 20 6f 72 20 5b 55 50 44 41 54 45  ERT], or [UPDATE
a460: 5d 20 61 20 76 69 65 77 2e 20 20 5e 56 69 65 77  ] a view.  ^View
a470: 73 20 61 72 65 20 72 65 61 64 2d 6f 6e 6c 79 20  s are read-only 
a480: 0a 69 6e 20 53 51 4c 69 74 65 2e 20 20 5e 48 6f  .in SQLite.  ^Ho
a490: 77 65 76 65 72 2c 20 69 6e 20 6d 61 6e 79 20 63  wever, in many c
a4a0: 61 73 65 73 20 79 6f 75 20 63 61 6e 20 75 73 65  ases you can use
a4b0: 20 61 6e 0a 5b 49 4e 53 54 45 41 44 20 4f 46 20   an.[INSTEAD OF 
a4c0: 74 72 69 67 67 65 72 5d 20 6f 6e 20 74 68 65 20  trigger] on the 
a4d0: 76 69 65 77 20 74 6f 20 61 63 63 6f 6d 70 6c 69  view to accompli
a4e0: 73 68 20 0a 74 68 65 20 73 61 6d 65 20 74 68 69  sh .the same thi
a4f0: 6e 67 2e 20 20 5e 56 69 65 77 73 20 61 72 65 20  ng.  ^Views are 
a500: 72 65 6d 6f 76 65 64 20 0a 77 69 74 68 20 74 68  removed .with th
a510: 65 20 5b 44 52 4f 50 20 56 49 45 57 5d 20 63 6f  e [DROP VIEW] co
a520: 6d 6d 61 6e 64 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c  mmand.</p>..<tcl
a530: 3e 0a 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 23  ################
a580: 0a 53 65 63 74 69 6f 6e 20 7b 43 52 45 41 54 45  .Section {CREATE
a590: 20 56 49 52 54 55 41 4c 20 54 41 42 4c 45 7d 20   VIRTUAL TABLE} 
a5a0: 7b 63 72 65 61 74 65 76 74 61 62 7d 20 7b 7b 43  {createvtab} {{C
a5b0: 52 45 41 54 45 20 56 49 52 54 55 41 4c 20 54 41  REATE VIRTUAL TA
a5c0: 42 4c 45 7d 7d 0a 0a 42 75 62 62 6c 65 44 69 61  BLE}}..BubbleDia
a5d0: 67 72 61 6d 20 63 72 65 61 74 65 2d 76 69 72 74  gram create-virt
a5e0: 75 61 6c 2d 74 61 62 6c 65 2d 73 74 6d 74 20 31  ual-table-stmt 1
a5f0: 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 41 20 5b 76  .</tcl>..<p>A [v
a600: 69 72 74 75 61 6c 20 74 61 62 6c 65 5d 20 69 73  irtual table] is
a610: 20 61 6e 20 69 6e 74 65 72 66 61 63 65 20 74 6f   an interface to
a620: 20 61 6e 20 65 78 74 65 72 6e 61 6c 20 73 74 6f   an external sto
a630: 72 61 67 65 20 6f 72 20 63 6f 6d 70 75 74 61 74  rage or computat
a640: 69 6f 6e 0a 65 6e 67 69 6e 65 20 74 68 61 74 20  ion.engine that 
a650: 61 70 70 65 61 72 73 20 74 6f 20 62 65 20 61 20  appears to be a 
a660: 74 61 62 6c 65 20 62 75 74 20 64 6f 65 73 20 6e  table but does n
a670: 6f 74 20 61 63 74 75 61 6c 6c 79 20 73 74 6f 72  ot actually stor
a680: 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 0a 69 6e  e information.in
a690: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66 69   the database fi
a6a0: 6c 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 6e 20 67  le.</p>..<p>In g
a6b0: 65 6e 65 72 61 6c 2c 20 79 6f 75 20 63 61 6e 20  eneral, you can 
a6c0: 64 6f 20 61 6e 79 74 68 69 6e 67 20 77 69 74 68  do anything with
a6d0: 20 61 20 5b 76 69 72 74 75 61 6c 20 74 61 62 6c   a [virtual tabl
a6e0: 65 5d 20 74 68 61 74 20 63 61 6e 20 62 65 20 64  e] that can be d
a6f0: 6f 6e 65 0a 77 69 74 68 20 61 6e 20 6f 72 64 69  one.with an ordi
a700: 6e 61 72 79 20 74 61 62 6c 65 2c 20 65 78 63 65  nary table, exce
a710: 70 74 20 74 68 61 74 20 5e 79 6f 75 20 63 61 6e  pt that ^you can
a720: 6e 6f 74 20 63 72 65 61 74 65 20 69 6e 64 69 63  not create indic
a730: 65 73 20 6f 72 20 74 72 69 67 67 65 72 73 20 6f  es or triggers o
a740: 6e 20 61 0a 76 69 72 74 75 61 6c 20 74 61 62 6c  n a.virtual tabl
a750: 65 2e 20 20 5e 53 6f 6d 65 20 76 69 72 74 75 61  e.  ^Some virtua
a760: 6c 20 74 61 62 6c 65 20 69 6d 70 6c 65 6d 65 6e  l table implemen
a770: 74 61 74 69 6f 6e 73 20 6d 69 67 68 74 20 69 6d  tations might im
a780: 70 6f 73 65 20 61 64 64 69 74 69 6f 6e 61 6c 0a  pose additional.
a790: 72 65 73 74 72 69 63 74 69 6f 6e 73 2e 20 20 46  restrictions.  F
a7a0: 6f 72 20 65 78 61 6d 70 6c 65 2c 20 6d 61 6e 79  or example, many
a7b0: 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 73 20   virtual tables 
a7c0: 61 72 65 20 72 65 61 64 2d 6f 6e 6c 79 2e 3c 2f  are read-only.</
a7d0: 70 3e 0a 0a 3c 70 3e 54 68 65 20 26 6c 74 3b 6d  p>..<p>The &lt;m
a7e0: 6f 64 75 6c 65 2d 6e 61 6d 65 26 67 74 3b 20 69  odule-name&gt; i
a7f0: 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 61 6e  s the name of an
a800: 20 6f 62 6a 65 63 74 20 74 68 61 74 20 69 6d 70   object that imp
a810: 6c 65 6d 65 6e 74 73 0a 74 68 65 20 76 69 72 74  lements.the virt
a820: 75 61 6c 20 74 61 62 6c 65 2e 20 20 5e 54 68 65  ual table.  ^The
a830: 20 26 6c 74 3b 6d 6f 64 75 6c 65 2d 6e 61 6d 65   &lt;module-name
a840: 26 67 74 3b 20 6d 75 73 74 20 62 65 20 72 65 67  &gt; must be reg
a850: 69 73 74 65 72 65 64 20 77 69 74 68 0a 74 68 65  istered with.the
a860: 20 53 51 4c 69 74 65 20 64 61 74 61 62 61 73 65   SQLite database
a870: 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 75 73 69 6e   connection usin
a880: 67 0a 5b 73 71 6c 69 74 65 33 5f 63 72 65 61 74  g.[sqlite3_creat
a890: 65 5f 6d 6f 64 75 6c 65 28 29 5d 20 6f 72 20 5b  e_module()] or [
a8a0: 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 6d  sqlite3_create_m
a8b0: 6f 64 75 6c 65 5f 76 32 28 29 5d 0a 70 72 69 6f  odule_v2()].prio
a8c0: 72 20 74 6f 20 69 73 73 75 69 6e 67 20 74 68 65  r to issuing the
a8d0: 20 43 52 45 41 54 45 20 56 49 52 54 55 41 4c 20   CREATE VIRTUAL 
a8e0: 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 2e  TABLE statement.
a8f0: 0a 5e 54 68 65 20 6d 6f 64 75 6c 65 20 74 61 6b  .^The module tak
a900: 65 73 20 7a 65 72 6f 20 6f 72 20 6d 6f 72 65 20  es zero or more 
a910: 63 6f 6d 6d 61 2d 73 65 70 61 72 61 74 65 64 20  comma-separated 
a920: 61 72 67 75 6d 65 6e 74 73 2e 0a 5e 54 68 65 20  arguments..^The 
a930: 61 72 67 75 6d 65 6e 74 73 20 63 61 6e 20 62 65  arguments can be
a940: 20 6a 75 73 74 20 61 62 6f 75 74 20 61 6e 79 20   just about any 
a950: 74 65 78 74 20 61 73 20 6c 6f 6e 67 20 61 73 20  text as long as 
a960: 69 74 20 68 61 73 20 62 61 6c 61 6e 63 65 64 0a  it has balanced.
a970: 70 61 72 65 6e 74 68 65 73 65 73 2e 20 20 54 68  parentheses.  Th
a980: 65 20 61 72 67 75 6d 65 6e 74 20 73 79 6e 74 61  e argument synta
a990: 78 20 69 73 20 73 75 66 66 69 63 69 65 6e 74 6c  x is sufficientl
a9a0: 79 20 67 65 6e 65 72 61 6c 20 74 68 61 74 20 74  y general that t
a9b0: 68 65 0a 61 72 67 75 6d 65 6e 74 73 20 63 61 6e  he.arguments can
a9c0: 20 62 65 20 6d 61 64 65 20 74 6f 20 61 70 70 65   be made to appe
a9d0: 61 72 20 61 73 20 63 6f 6c 75 6d 6e 20 64 65 66  ar as column def
a9e0: 69 6e 69 74 69 6f 6e 73 20 69 6e 20 61 20 74 72  initions in a tr
a9f0: 61 64 69 74 69 6f 6e 61 6c 0a 5b 43 52 45 41 54  aditional.[CREAT
aa00: 45 20 54 41 42 4c 45 5d 20 73 74 61 74 65 6d 65  E TABLE] stateme
aa10: 6e 74 2e 20 20 0a 5e 53 51 4c 69 74 65 20 70 61  nt.  .^SQLite pa
aa20: 73 73 65 73 20 74 68 65 20 6d 6f 64 75 6c 65 20  sses the module 
aa30: 61 72 67 75 6d 65 6e 74 73 20 64 69 72 65 63 74  arguments direct
aa40: 6c 79 0a 74 6f 20 74 68 65 20 5b 78 43 72 65 61  ly.to the [xCrea
aa50: 74 65 5d 20 61 6e 64 20 5b 78 43 6f 6e 6e 65 63  te] and [xConnec
aa60: 74 5d 20 6d 65 74 68 6f 64 73 20 6f 66 20 74 68  t] methods of th
aa70: 65 20 6d 6f 64 75 6c 65 20 69 6d 70 6c 65 6d 65  e module impleme
aa80: 6e 74 61 74 69 6f 6e 0a 77 69 74 68 6f 75 74 20  ntation.without 
aa90: 61 6e 79 20 69 6e 74 65 72 70 72 65 74 61 74 69  any interpretati
aaa0: 6f 6e 2e 20 20 49 74 20 69 73 20 74 68 65 20 72  on.  It is the r
aab0: 65 73 70 6f 6e 73 69 62 69 6c 69 74 79 0a 6f 66  esponsibility.of
aac0: 20 74 68 65 20 6d 6f 64 75 6c 65 20 69 6d 70 6c   the module impl
aad0: 65 6d 65 6e 74 61 74 69 6f 6e 20 74 6f 20 70 61  ementation to pa
aae0: 72 73 65 20 61 6e 64 20 69 6e 74 65 72 70 72 65  rse and interpre
aaf0: 74 20 69 74 73 20 6f 77 6e 20 61 72 67 75 6d 65  t its own argume
ab00: 6e 74 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 41 20  nts.</p>..<p>^A 
ab10: 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20 69 73  virtual table is
ab20: 20 64 65 73 74 72 6f 79 65 64 20 75 73 69 6e 67   destroyed using
ab30: 20 74 68 65 20 6f 72 64 69 6e 61 72 79 0a 5b 44   the ordinary.[D
ab40: 52 4f 50 20 54 41 42 4c 45 5d 20 73 74 61 74 65  ROP TABLE] state
ab50: 6d 65 6e 74 2e 20 20 54 68 65 72 65 20 69 73 20  ment.  There is 
ab60: 6e 6f 0a 44 52 4f 50 20 56 49 52 54 55 41 4c 20  no.DROP VIRTUAL 
ab70: 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 2e  TABLE statement.
ab80: 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 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 23 0a 53 65 63 74 69  ##########.Secti
abe0: 6f 6e 20 44 45 4c 45 54 45 20 64 65 6c 65 74 65  on DELETE delete
abf0: 20 7b 44 45 4c 45 54 45 20 2a 44 45 4c 45 54 45   {DELETE *DELETE
ac00: 73 7d 0a 0a 42 75 62 62 6c 65 44 69 61 67 72 61  s}..BubbleDiagra
ac10: 6d 20 64 65 6c 65 74 65 2d 73 74 6d 74 20 31 0a  m delete-stmt 1.
ac20: 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 71 75  BubbleDiagram qu
ac30: 61 6c 69 66 69 65 64 2d 74 61 62 6c 65 2d 6e 61  alified-table-na
ac40: 6d 65 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 5e 54  me.</tcl>..<p>^T
ac50: 68 65 20 44 45 4c 45 54 45 20 63 6f 6d 6d 61 6e  he DELETE comman
ac60: 64 20 69 73 20 75 73 65 64 20 74 6f 20 72 65 6d  d is used to rem
ac70: 6f 76 65 20 72 65 63 6f 72 64 73 20 66 72 6f 6d  ove records from
ac80: 20 61 20 74 61 62 6c 65 2e 0a 5e 54 68 65 20 63   a table..^The c
ac90: 6f 6d 6d 61 6e 64 20 63 6f 6e 73 69 73 74 73 20  ommand consists 
aca0: 6f 66 20 74 68 65 20 22 44 45 4c 45 54 45 20 46  of the "DELETE F
acb0: 52 4f 4d 22 20 6b 65 79 77 6f 72 64 73 20 66 6f  ROM" keywords fo
acc0: 6c 6c 6f 77 65 64 20 62 79 0a 74 68 65 20 6e 61  llowed by.the na
acd0: 6d 65 20 6f 66 20 74 68 65 20 74 61 62 6c 65 20  me of the table 
ace0: 66 72 6f 6d 20 77 68 69 63 68 20 72 65 63 6f 72  from which recor
acf0: 64 73 20 61 72 65 20 74 6f 20 62 65 20 72 65 6d  ds are to be rem
ad00: 6f 76 65 64 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 5e  oved..</p>..<p>^
ad10: 57 69 74 68 6f 75 74 20 61 20 57 48 45 52 45 20  Without a WHERE 
ad20: 63 6c 61 75 73 65 2c 20 61 6c 6c 20 72 6f 77 73  clause, all rows
ad30: 20 6f 66 20 74 68 65 20 74 61 62 6c 65 20 61 72   of the table ar
ad40: 65 20 72 65 6d 6f 76 65 64 2e 0a 5e 49 66 20 61  e removed..^If a
ad50: 20 57 48 45 52 45 20 63 6c 61 75 73 65 20 69 73   WHERE clause is
ad60: 20 73 75 70 70 6c 69 65 64 2c 20 74 68 65 6e 20   supplied, then 
ad70: 6f 6e 6c 79 20 74 68 6f 73 65 20 72 6f 77 73 20  only those rows 
ad80: 74 68 61 74 20 6d 61 74 63 68 0a 74 68 65 20 65  that match.the e
ad90: 78 70 72 65 73 73 69 6f 6e 20 61 72 65 20 72 65  xpression are re
ada0: 6d 6f 76 65 64 2e 3c 2f 70 3e 0a 0a 3c 68 33 3e  moved.</p>..<h3>
adb0: 52 65 73 74 72 69 63 74 69 6f 6e 73 20 6f 6e 20  Restrictions on 
adc0: 44 45 4c 45 54 45 20 53 74 61 74 65 6d 65 6e 74  DELETE Statement
add0: 73 20 57 69 74 68 69 6e 20 43 52 45 41 54 45 20  s Within CREATE 
ade0: 54 52 49 47 47 45 52 3c 2f 68 33 3e 0a 0a 3c 70  TRIGGER</h3>..<p
adf0: 3e 5e 54 68 65 72 65 20 61 72 65 20 61 64 64 69  >^There are addi
ae00: 74 69 6f 6e 61 6c 20 73 79 6e 74 61 78 20 72 65  tional syntax re
ae10: 73 74 72 69 63 74 69 6f 6e 73 20 6f 6e 20 44 45  strictions on DE
ae20: 4c 45 54 45 20 73 74 61 74 65 6d 65 6e 74 73 20  LETE statements 
ae30: 74 68 61 74 0a 6f 63 63 75 72 20 77 69 74 68 69  that.occur withi
ae40: 6e 20 74 68 65 20 62 6f 64 79 20 6f 66 20 61 20  n the body of a 
ae50: 5b 43 52 45 41 54 45 20 54 52 49 47 47 45 52 5d  [CREATE TRIGGER]
ae60: 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 5e 54 68   statement.  ^Th
ae70: 65 20 3c 69 3e 74 61 62 6c 65 2d 6e 61 6d 65 3c  e <i>table-name<
ae80: 2f 69 3e 0a 6d 75 73 74 20 62 65 20 75 6e 71 75  /i>.must be unqu
ae90: 61 6c 69 66 69 65 64 2e 20 0a 5e 28 49 6e 20 6f  alified. .^(In o
aea0: 74 68 65 72 20 77 6f 72 64 73 2c 20 74 68 65 20  ther words, the 
aeb0: 3c 69 3e 64 61 74 61 62 61 73 65 2d 6e 61 6d 65  <i>database-name
aec0: 3c 2f 69 3e 3c 62 3e 2e 3c 2f 62 3e 20 70 72 65  </i><b>.</b> pre
aed0: 66 69 78 0a 6f 6e 20 74 68 65 20 74 61 62 6c 65  fix.on the table
aee0: 20 6e 61 6d 65 20 69 73 20 6e 6f 74 20 61 6c 6c   name is not all
aef0: 6f 77 65 64 20 77 69 74 68 69 6e 20 74 72 69 67  owed within trig
af00: 67 65 72 73 2e 20 29 5e 0a 5e 54 68 65 20 74 61  gers. )^.^The ta
af10: 62 6c 65 20 66 72 6f 6d 20 77 68 69 63 68 20 74  ble from which t
af20: 6f 20 64 65 6c 65 74 65 20 6d 75 73 74 20 62 65  o delete must be
af30: 20 69 6e 20 74 68 65 20 73 61 6d 65 0a 64 61 74   in the same.dat
af40: 61 62 61 73 65 20 61 73 20 74 68 65 20 74 61 62  abase as the tab
af50: 6c 65 20 74 6f 20 77 68 69 63 68 20 74 68 65 20  le to which the 
af60: 74 72 69 67 67 65 72 20 69 73 20 61 74 74 61 63  trigger is attac
af70: 68 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68  hed.</p>..<p>^Th
af80: 65 20 49 4e 44 45 58 45 44 20 42 59 20 61 6e 64  e INDEXED BY and
af90: 20 4e 4f 54 20 49 4e 44 45 58 45 44 20 63 6c 61   NOT INDEXED cla
afa0: 75 73 65 73 20 61 72 65 20 6e 6f 74 20 61 6c 6c  uses are not all
afb0: 6f 77 65 64 20 6f 6e 20 44 45 4c 45 54 45 0a 73  owed on DELETE.s
afc0: 74 61 74 65 6d 65 6e 74 73 20 77 69 74 68 69 6e  tatements within
afd0: 20 74 72 69 67 67 65 72 73 2e 3c 2f 70 3e 0a 0a   triggers.</p>..
afe0: 3c 70 3e 5e 54 68 65 20 4c 49 4d 49 54 20 63 6c  <p>^The LIMIT cl
aff0: 61 75 73 65 20 28 64 65 73 63 72 69 62 65 64 20  ause (described 
b000: 62 65 6c 6f 77 29 20 69 73 20 75 6e 73 75 70 70  below) is unsupp
b010: 6f 72 74 65 64 20 77 69 74 68 69 6e 20 74 72 69  orted within tri
b020: 67 67 65 72 73 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c  ggers.</p>..<tcl
b030: 3e 68 64 5f 66 72 61 67 6d 65 6e 74 20 74 72 75  >hd_fragment tru
b040: 63 61 74 65 6f 70 74 20 7b 74 72 75 6e 63 61 74  cateopt {truncat
b050: 65 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 7d 3c  e optimization}<
b060: 2f 74 63 6c 3e 0a 3c 68 33 3e 54 68 65 20 54 72  /tcl>.<h3>The Tr
b070: 75 6e 63 61 74 65 20 4f 70 74 69 6d 69 7a 61 74  uncate Optimizat
b080: 69 6f 6e 3c 2f 68 33 3e 0a 0a 3c 70 3e 5e 57 68  ion</h3>..<p>^Wh
b090: 65 6e 20 74 68 65 20 57 48 45 52 45 20 69 73 20  en the WHERE is 
b0a0: 6f 6d 69 74 74 65 64 20 66 72 6f 6d 20 61 20 44  omitted from a D
b0b0: 45 4c 45 54 45 20 73 74 61 74 65 6d 65 6e 74 20  ELETE statement 
b0c0: 61 6e 64 20 74 68 65 20 74 61 62 6c 65 0a 62 65  and the table.be
b0d0: 69 6e 67 20 64 65 6c 65 74 65 64 20 68 61 73 20  ing deleted has 
b0e0: 6e 6f 20 74 72 69 67 67 65 72 73 2c 0a 53 51 4c  no triggers,.SQL
b0f0: 69 74 65 20 75 73 65 73 20 61 6e 20 6f 70 74 69  ite uses an opti
b100: 6d 69 7a 61 74 69 6f 6e 20 74 6f 20 65 72 61 73  mization to eras
b110: 65 20 74 68 65 20 65 6e 74 69 72 65 20 74 61 62  e the entire tab
b120: 6c 65 20 63 6f 6e 74 65 6e 74 0a 77 69 74 68 6f  le content.witho
b130: 75 74 20 68 61 76 69 6e 67 20 74 6f 20 76 69 73  ut having to vis
b140: 69 74 20 65 61 63 68 20 72 6f 77 20 6f 66 20 74  it each row of t
b150: 68 65 20 74 61 62 6c 65 20 69 6e 64 69 76 69 64  he table individ
b160: 75 61 6c 6c 79 2e 0a 54 68 69 73 20 22 74 72 75  ually..This "tru
b170: 6e 63 61 74 65 22 20 6f 70 74 69 6d 69 7a 61 74  ncate" optimizat
b180: 69 6f 6e 20 6d 61 6b 65 73 20 74 68 65 20 64 65  ion makes the de
b190: 6c 65 74 65 20 72 75 6e 20 6d 75 63 68 20 66 61  lete run much fa
b1a0: 73 74 65 72 2e 0a 50 72 69 6f 72 20 74 6f 20 53  ster..Prior to S
b1b0: 51 4c 69 74 65 20 5b 76 65 72 73 69 6f 6e 20 33  QLite [version 3
b1c0: 2e 36 2e 35 5d 2c 20 74 68 65 20 74 72 75 6e 63  .6.5], the trunc
b1d0: 61 74 65 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e  ate optimization
b1e0: 0a 61 6c 73 6f 20 6d 65 61 6e 74 20 74 68 61 74  .also meant that
b1f0: 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 63 68   the [sqlite3_ch
b200: 61 6e 67 65 73 28 29 5d 20 61 6e 64 0a 5b 73 71  anges()] and.[sq
b210: 6c 69 74 65 33 5f 74 6f 74 61 6c 5f 63 68 61 6e  lite3_total_chan
b220: 67 65 73 28 29 5d 20 69 6e 74 65 72 66 61 63 65  ges()] interface
b230: 73 0a 61 6e 64 20 74 68 65 20 5b 63 6f 75 6e 74  s.and the [count
b240: 5f 63 68 61 6e 67 65 73 20 70 72 61 67 6d 61 5d  _changes pragma]
b250: 0a 77 69 6c 6c 20 6e 6f 74 20 61 63 74 75 61 6c  .will not actual
b260: 6c 79 20 72 65 74 75 72 6e 20 74 68 65 20 6e 75  ly return the nu
b270: 6d 62 65 72 20 6f 66 20 64 65 6c 65 74 65 64 20  mber of deleted 
b280: 72 6f 77 73 2e 20 20 0a 54 68 61 74 20 70 72 6f  rows.  .That pro
b290: 62 6c 65 6d 20 68 61 73 20 62 65 65 6e 20 66 69  blem has been fi
b2a0: 78 65 64 20 61 73 20 6f 66 20 5b 76 65 72 73 69  xed as of [versi
b2b0: 6f 6e 20 33 2e 36 2e 35 5d 2e 0a 0a 3c 70 3e 5e  on 3.6.5]...<p>^
b2c0: 54 68 65 20 74 72 75 6e 63 61 74 65 20 6f 70 74  The truncate opt
b2d0: 69 6d 69 7a 61 74 69 6f 6e 20 63 61 6e 20 62 65  imization can be
b2e0: 20 70 65 72 6d 61 6e 65 6e 74 6c 79 20 64 69 73   permanently dis
b2f0: 61 62 6c 65 64 20 66 6f 72 20 61 6c 6c 20 71 75  abled for all qu
b300: 65 72 69 65 73 0a 62 79 20 72 65 63 6f 6d 70 69  eries.by recompi
b310: 6c 69 6e 67 0a 53 51 4c 69 74 65 20 77 69 74 68  ling.SQLite with
b320: 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 4f 4d 49   the [SQLITE_OMI
b330: 54 5f 54 52 55 4e 43 41 54 45 5f 4f 50 54 49 4d  T_TRUNCATE_OPTIM
b340: 49 5a 41 54 49 4f 4e 5d 20 63 6f 6d 70 69 6c 65  IZATION] compile
b350: 2d 74 69 6d 65 20 73 77 69 74 63 68 2e 3c 2f 70  -time switch.</p
b360: 3e 0a 0a 3c 70 3e 54 68 65 20 74 72 75 6e 63 61  >..<p>The trunca
b370: 74 65 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20  te optimization 
b380: 63 61 6e 20 61 6c 73 6f 20 62 65 20 64 69 73 61  can also be disa
b390: 62 6c 65 64 20 61 74 20 72 75 6e 74 69 6d 65 20  bled at runtime 
b3a0: 75 73 69 6e 67 0a 74 68 65 20 5b 73 71 6c 69 74  using.the [sqlit
b3b0: 65 33 5f 73 65 74 5f 61 75 74 68 6f 72 69 7a 65  e3_set_authorize
b3c0: 72 28 29 5d 20 69 6e 74 65 72 66 61 63 65 2e 20  r()] interface. 
b3d0: 20 5e 49 66 20 61 6e 20 61 75 74 68 6f 72 69 7a   ^If an authoriz
b3e0: 65 72 20 63 61 6c 6c 62 61 63 6b 0a 72 65 74 75  er callback.retu
b3f0: 72 6e 73 20 5b 53 51 4c 49 54 45 5f 49 47 4e 4f  rns [SQLITE_IGNO
b400: 52 45 5d 20 66 6f 72 20 61 6e 20 5b 53 51 4c 49  RE] for an [SQLI
b410: 54 45 5f 44 45 4c 45 54 45 5d 20 61 63 74 69 6f  TE_DELETE] actio
b420: 6e 20 63 6f 64 65 2c 20 74 68 65 6e 0a 74 68 65  n code, then.the
b430: 20 44 45 4c 45 54 45 20 6f 70 65 72 61 74 69 6f   DELETE operatio
b440: 6e 20 77 69 6c 6c 20 70 72 6f 63 65 65 64 20 62  n will proceed b
b450: 75 74 20 74 68 65 20 74 72 75 6e 63 61 74 65 20  ut the truncate 
b460: 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20 77 69 6c  optimization wil
b470: 6c 0a 62 65 20 62 79 70 61 73 73 65 64 20 61 6e  l.be bypassed an
b480: 64 20 72 6f 77 73 20 77 69 6c 6c 20 62 65 20 64  d rows will be d
b490: 65 6c 65 74 65 64 20 6f 6e 65 20 62 79 20 6f 6e  eleted one by on
b4a0: 65 2e 3c 2f 70 3e 0a 0a 3c 68 33 3e 55 73 65 20  e.</p>..<h3>Use 
b4b0: 4f 66 20 4c 49 4d 49 54 3c 2f 68 33 3e 0a 0a 3c  Of LIMIT</h3>..<
b4c0: 70 3e 5e 28 49 66 20 53 51 4c 69 74 65 20 69 73  p>^(If SQLite is
b4d0: 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 74   compiled with t
b4e0: 68 65 20 5b 53 51 4c 49 54 45 5f 45 4e 41 42 4c  he [SQLITE_ENABL
b4f0: 45 5f 55 50 44 41 54 45 5f 44 45 4c 45 54 45 5f  E_UPDATE_DELETE_
b500: 4c 49 4d 49 54 5d 0a 63 6f 6d 70 69 6c 65 2d 74  LIMIT].compile-t
b510: 69 6d 65 20 6f 70 74 69 6f 6e 2c 20 74 68 65 6e  ime option, then
b520: 20 74 68 65 20 73 79 6e 74 61 78 20 6f 66 20 74   the syntax of t
b530: 68 65 20 44 45 4c 45 54 45 20 73 74 61 74 65 6d  he DELETE statem
b540: 65 6e 74 20 69 73 0a 65 78 74 65 6e 64 65 64 20  ent is.extended 
b550: 62 79 20 74 68 65 20 61 64 64 69 74 69 6f 6e 20  by the addition 
b560: 6f 66 20 6f 70 74 69 6f 6e 61 6c 20 4f 52 44 45  of optional ORDE
b570: 52 20 42 59 20 61 6e 64 20 4c 49 4d 49 54 20 63  R BY and LIMIT c
b580: 6c 61 75 73 65 73 3a 29 5e 3c 2f 70 3e 0a 0a 3c  lauses:)^</p>..<
b590: 74 63 6c 3e 42 75 62 62 6c 65 44 69 61 67 72 61  tcl>BubbleDiagra
b5a0: 6d 20 64 65 6c 65 74 65 2d 73 74 6d 74 2d 6c 69  m delete-stmt-li
b5b0: 6d 69 74 65 64 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e  mited</tcl>..<p>
b5c0: 5e 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20 4c 49  ^The optional LI
b5d0: 4d 49 54 20 63 6c 61 75 73 65 20 63 61 6e 20 62  MIT clause can b
b5e0: 65 20 75 73 65 64 20 74 6f 20 6c 69 6d 69 74 20  e used to limit 
b5f0: 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 0a 72 6f  the number of.ro
b600: 77 73 20 64 65 6c 65 74 65 64 2c 20 61 6e 64 20  ws deleted, and 
b610: 74 68 65 72 65 62 79 20 6c 69 6d 69 74 20 74 68  thereby limit th
b620: 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20 74 72  e size of the tr
b630: 61 6e 73 61 63 74 69 6f 6e 2e 0a 5e 54 68 65 20  ansaction..^The 
b640: 4f 52 44 45 52 20 42 59 20 63 6c 61 75 73 65 20  ORDER BY clause 
b650: 6f 6e 20 61 20 44 45 4c 45 54 45 20 73 74 61 74  on a DELETE stat
b660: 65 6d 65 6e 74 0a 69 73 20 75 73 65 64 20 6f 6e  ement.is used on
b670: 6c 79 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20  ly to determine 
b680: 77 68 69 63 68 20 72 6f 77 73 20 66 61 6c 6c 0a  which rows fall.
b690: 77 69 74 68 69 6e 20 74 68 65 20 4c 49 4d 49 54  within the LIMIT
b6a0: 2e 20 20 5e 54 68 65 20 6f 72 64 65 72 20 69 6e  .  ^The order in
b6b0: 20 77 68 69 63 68 20 72 6f 77 73 20 61 72 65 20   which rows are 
b6c0: 64 65 6c 65 74 65 64 20 69 73 20 61 72 62 69 74  deleted is arbit
b6d0: 72 61 72 79 0a 61 6e 64 20 69 73 20 6e 6f 74 20  rary.and is not 
b6e0: 64 65 74 65 72 6d 69 6e 65 64 20 62 79 20 74 68  determined by th
b6f0: 65 20 4f 52 44 45 52 20 42 59 20 63 6c 61 75 73  e ORDER BY claus
b700: 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20  e.</p>..<p>^The 
b710: 70 72 65 73 65 6e 63 65 20 6f 66 20 61 20 4c 49  presence of a LI
b720: 4d 49 54 20 63 6c 61 75 73 65 20 64 65 66 65 61  MIT clause defea
b730: 74 73 20 74 68 65 20 74 72 75 6e 63 61 74 65 20  ts the truncate 
b740: 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 0a 63 61 75  optimization.cau
b750: 73 69 6e 67 20 61 6c 6c 20 72 6f 77 73 20 62 65  sing all rows be
b760: 69 6e 67 20 64 65 6c 65 74 65 64 20 74 6f 20 62  ing deleted to b
b770: 65 20 76 69 73 69 74 65 64 2e 3c 2f 70 3e 0a 0a  e visited.</p>..
b780: 3c 74 63 6c 3e 0a 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 23 0a 53 65 63 74 69 6f 6e 20 7b 44  #####.Section {D
b7e0: 45 54 41 43 48 20 44 41 54 41 42 41 53 45 7d 20  ETACH DATABASE} 
b7f0: 64 65 74 61 63 68 20 2a 44 45 54 41 43 48 0a 0a  detach *DETACH..
b800: 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 64 65  BubbleDiagram de
b810: 74 61 63 68 2d 73 74 6d 74 20 31 0a 3c 2f 74 63  tach-stmt 1.</tc
b820: 6c 3e 0a 0a 3c 70 3e 5e 54 68 69 73 20 73 74 61  l>..<p>^This sta
b830: 74 65 6d 65 6e 74 20 64 65 74 61 63 68 65 73 20  tement detaches 
b840: 61 6e 20 61 64 64 69 74 69 6f 6e 61 6c 20 64 61  an additional da
b850: 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
b860: 6e 20 70 72 65 76 69 6f 75 73 6c 79 20 0a 61 74  n previously .at
b870: 74 61 63 68 65 64 20 75 73 69 6e 67 20 74 68 65  tached using the
b880: 20 5b 41 54 54 41 43 48 5d 20 73 74 61 74 65 6d   [ATTACH] statem
b890: 65 6e 74 2e 20 20 0a 5e 49 74 20 69 73 20 70 6f  ent.  .^It is po
b8a0: 73 73 69 62 6c 65 20 74 6f 20 68 61 76 65 20 74  ssible to have t
b8b0: 68 65 20 73 61 6d 65 20 64 61 74 61 62 61 73 65  he same database
b8c0: 20 66 69 6c 65 20 61 74 74 61 63 68 65 64 20 6d   file attached m
b8d0: 75 6c 74 69 70 6c 65 20 74 69 6d 65 73 20 75 73  ultiple times us
b8e0: 69 6e 67 20 0a 64 69 66 66 65 72 65 6e 74 20 6e  ing .different n
b8f0: 61 6d 65 73 2c 20 61 6e 64 20 64 65 74 61 63 68  ames, and detach
b900: 69 6e 67 20 6f 6e 65 20 63 6f 6e 6e 65 63 74 69  ing one connecti
b910: 6f 6e 20 74 6f 20 61 20 66 69 6c 65 20 77 69 6c  on to a file wil
b920: 6c 20 6c 65 61 76 65 20 74 68 65 20 0a 6f 74 68  l leave the .oth
b930: 65 72 73 20 69 6e 74 61 63 74 2e 3c 2f 70 3e 0a  ers intact.</p>.
b940: 0a 3c 70 3e 5e 54 68 69 73 20 73 74 61 74 65 6d  .<p>^This statem
b950: 65 6e 74 20 77 69 6c 6c 20 66 61 69 6c 20 69 66  ent will fail if
b960: 20 53 51 4c 69 74 65 20 69 73 20 69 6e 20 74 68   SQLite is in th
b970: 65 20 6d 69 64 64 6c 65 20 6f 66 20 61 20 74 72  e middle of a tr
b980: 61 6e 73 61 63 74 69 6f 6e 2e 3c 2f 70 3e 0a 0a  ansaction.</p>..
b990: 0a 3c 74 63 6c 3e 0a 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 23 0a 53 65 63 74 69 6f 6e 20 7b 44  #####.Section {D
b9f0: 52 4f 50 20 49 4e 44 45 58 7d 20 64 72 6f 70 69  ROP INDEX} dropi
ba00: 6e 64 65 78 20 7b 7b 44 52 4f 50 20 49 4e 44 45  ndex {{DROP INDE
ba10: 58 7d 7d 0a 0a 42 75 62 62 6c 65 44 69 61 67 72  X}}..BubbleDiagr
ba20: 61 6d 20 64 72 6f 70 2d 69 6e 64 65 78 2d 73 74  am drop-index-st
ba30: 6d 74 20 31 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e  mt 1.</tcl>..<p>
ba40: 5e 54 68 65 20 44 52 4f 50 20 49 4e 44 45 58 20  ^The DROP INDEX 
ba50: 73 74 61 74 65 6d 65 6e 74 20 72 65 6d 6f 76 65  statement remove
ba60: 73 20 61 6e 20 69 6e 64 65 78 20 61 64 64 65 64  s an index added
ba70: 0a 77 69 74 68 20 74 68 65 20 5b 43 52 45 41 54  .with the [CREAT
ba80: 45 20 49 4e 44 45 58 5d 20 73 74 61 74 65 6d 65  E INDEX] stateme
ba90: 6e 74 2e 20 20 54 68 65 20 69 6e 64 65 78 20 69  nt.  The index i
baa0: 73 20 63 6f 6d 70 6c 65 74 65 6c 79 20 72 65 6d  s completely rem
bab0: 6f 76 65 64 20 66 72 6f 6d 0a 74 68 65 20 64 69  oved from.the di
bac0: 73 6b 2e 20 20 54 68 65 20 6f 6e 6c 79 20 77 61  sk.  The only wa
bad0: 79 20 74 6f 20 72 65 63 6f 76 65 72 20 74 68 65  y to recover the
bae0: 20 69 6e 64 65 78 20 69 73 20 74 6f 20 72 65 65   index is to ree
baf0: 6e 74 65 72 20 74 68 65 0a 61 70 70 72 6f 70 72  nter the.appropr
bb00: 69 61 74 65 20 5b 43 52 45 41 54 45 20 49 4e 44  iate [CREATE IND
bb10: 45 58 5d 20 63 6f 6d 6d 61 6e 64 2e 3c 2f 70 3e  EX] command.</p>
bb20: 0a 0a 3c 74 63 6c 3e 0a 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 23 0a 53 65 63 74 69 6f 6e 20 7b  ######.Section {
bb80: 44 52 4f 50 20 54 41 42 4c 45 7d 20 64 72 6f 70  DROP TABLE} drop
bb90: 74 61 62 6c 65 20 7b 7b 44 52 4f 50 20 54 41 42  table {{DROP TAB
bba0: 4c 45 7d 7d 0a 0a 42 75 62 62 6c 65 44 69 61 67  LE}}..BubbleDiag
bbb0: 72 61 6d 20 64 72 6f 70 2d 74 61 62 6c 65 2d 73  ram drop-table-s
bbc0: 74 6d 74 20 31 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70  tmt 1.</tcl>..<p
bbd0: 3e 5e 54 68 65 20 44 52 4f 50 20 54 41 42 4c 45  >^The DROP TABLE
bbe0: 20 73 74 61 74 65 6d 65 6e 74 20 72 65 6d 6f 76   statement remov
bbf0: 65 73 20 61 20 74 61 62 6c 65 20 61 64 64 65 64  es a table added
bc00: 20 77 69 74 68 20 74 68 65 0a 5b 43 52 45 41 54   with the.[CREAT
bc10: 45 20 54 41 42 4c 45 5d 20 73 74 61 74 65 6d 65  E TABLE] stateme
bc20: 6e 74 2e 20 20 54 68 65 20 6e 61 6d 65 20 73 70  nt.  The name sp
bc30: 65 63 69 66 69 65 64 20 69 73 20 74 68 65 0a 74  ecified is the.t
bc40: 61 62 6c 65 20 6e 61 6d 65 2e 20 20 5e 54 68 65  able name.  ^The
bc50: 20 64 72 6f 70 70 65 64 20 74 61 62 6c 65 20 69   dropped table i
bc60: 73 20 63 6f 6d 70 6c 65 74 65 6c 79 20 72 65 6d  s completely rem
bc70: 6f 76 65 64 20 66 72 6f 6d 20 74 68 65 20 64 61  oved from the da
bc80: 74 61 62 61 73 65 20 0a 73 63 68 65 6d 61 20 61  tabase .schema a
bc90: 6e 64 20 74 68 65 20 64 69 73 6b 20 66 69 6c 65  nd the disk file
bca0: 2e 20 20 54 68 65 20 74 61 62 6c 65 20 63 61 6e  .  The table can
bcb0: 20 6e 6f 74 20 62 65 20 72 65 63 6f 76 65 72 65   not be recovere
bcc0: 64 2e 20 20 0a 5e 41 6c 6c 20 69 6e 64 69 63 65  d.  .^All indice
bcd0: 73 20 61 6e 64 20 74 72 69 67 67 65 72 73 0a 61  s and triggers.a
bce0: 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74  ssociated with t
bcf0: 68 65 20 74 61 62 6c 65 20 61 72 65 20 61 6c 73  he table are als
bd00: 6f 20 64 65 6c 65 74 65 64 2e 3c 2f 70 3e 0a 0a  o deleted.</p>..
bd10: 3c 70 3e 5e 54 68 65 20 6f 70 74 69 6f 6e 61 6c  <p>^The optional
bd20: 20 49 46 20 45 58 49 53 54 53 20 63 6c 61 75 73   IF EXISTS claus
bd30: 65 20 73 75 70 70 72 65 73 73 65 73 20 74 68 65  e suppresses the
bd40: 20 65 72 72 6f 72 20 74 68 61 74 20 77 6f 75 6c   error that woul
bd50: 64 20 6e 6f 72 6d 61 6c 6c 79 0a 72 65 73 75 6c  d normally.resul
bd60: 74 20 69 66 20 74 68 65 20 74 61 62 6c 65 20 64  t if the table d
bd70: 6f 65 73 20 6e 6f 74 20 65 78 69 73 74 2e 3c 2f  oes not exist.</
bd80: 70 3e 0a 0a 3c 70 3e 5e 49 66 20 5b 66 6f 72 65  p>..<p>^If [fore
bd90: 69 67 6e 20 6b 65 79 20 63 6f 6e 73 74 72 61 69  ign key constrai
bda0: 6e 74 73 5d 20 61 72 65 20 65 6e 61 62 6c 65 64  nts] are enabled
bdb0: 2c 20 61 20 44 52 4f 50 20 54 41 42 4c 45 20 63  , a DROP TABLE c
bdc0: 6f 6d 6d 61 6e 64 20 70 65 72 66 6f 72 6d 73 20  ommand performs 
bdd0: 61 6e 0a 69 6d 70 6c 69 63 69 74 20 5b 44 45 4c  an.implicit [DEL
bde0: 45 54 45 20 7c 20 44 45 4c 45 54 45 20 46 52 4f  ETE | DELETE FRO
bdf0: 4d 20 26 6c 74 3b 74 62 6c 26 67 74 3b 5d 20 63  M &lt;tbl&gt;] c
be00: 6f 6d 6d 61 6e 64 20 62 65 66 6f 72 65 20 72 65  ommand before re
be10: 6d 6f 76 69 6e 67 20 74 68 65 0a 74 61 62 6c 65  moving the.table
be20: 20 66 72 6f 6d 20 74 68 65 20 64 61 74 61 62 61   from the databa
be30: 73 65 20 73 63 68 65 6d 61 2e 20 5e 41 6e 79 20  se schema. ^Any 
be40: 74 72 69 67 67 65 72 73 20 61 74 74 61 63 68 65  triggers attache
be50: 64 20 74 6f 20 74 68 65 20 74 61 62 6c 65 20 61  d to the table a
be60: 72 65 0a 64 72 6f 70 70 65 64 20 66 72 6f 6d 20  re.dropped from 
be70: 74 68 65 20 64 61 74 61 62 61 73 65 20 73 63 68  the database sch
be80: 65 6d 61 20 62 65 66 6f 72 65 20 74 68 65 20 69  ema before the i
be90: 6d 70 6c 69 63 69 74 20 44 45 4c 45 54 45 20 46  mplicit DELETE F
bea0: 52 4f 4d 20 26 6c 74 3b 74 62 6c 26 67 74 3b 20  ROM &lt;tbl&gt; 
beb0: 0a 69 73 20 65 78 65 63 75 74 65 64 2c 20 73 6f  .is executed, so
bec0: 20 74 68 69 73 20 63 61 6e 6e 6f 74 20 63 61 75   this cannot cau
bed0: 73 65 20 61 6e 79 20 74 72 69 67 67 65 72 73 20  se any triggers 
bee0: 74 6f 20 66 69 72 65 2e 20 42 79 20 63 6f 6e 74  to fire. By cont
bef0: 72 61 73 74 2c 20 5e 61 6e 0a 69 6d 70 6c 69 63  rast, ^an.implic
bf00: 69 74 20 44 45 4c 45 54 45 20 46 52 4f 4d 20 26  it DELETE FROM &
bf10: 6c 74 3b 74 62 6c 26 67 74 3b 20 64 6f 65 73 20  lt;tbl&gt; does 
bf20: 63 61 75 73 65 20 61 6e 79 20 63 6f 6e 66 69 67  cause any config
bf30: 75 72 65 64 0a 5b 66 6f 72 65 69 67 6e 20 6b 65  ured.[foreign ke
bf40: 79 20 61 63 74 69 6f 6e 73 5d 20 74 6f 20 74 61  y actions] to ta
bf50: 6b 65 20 70 6c 61 63 65 2e 20 0a 5e 49 66 20 74  ke place. .^If t
bf60: 68 65 20 69 6d 70 6c 69 63 69 74 20 44 45 4c 45  he implicit DELE
bf70: 54 45 20 46 52 4f 4d 20 26 6c 74 3b 74 62 6c 26  TE FROM &lt;tbl&
bf80: 67 74 3b 20 65 78 65 63 75 74 65 64 0a 61 73 20  gt; executed.as 
bf90: 70 61 72 74 20 6f 66 20 61 20 44 52 4f 50 20 54  part of a DROP T
bfa0: 41 42 4c 45 20 63 6f 6d 6d 61 6e 64 20 76 69 6f  ABLE command vio
bfb0: 6c 61 74 65 73 20 61 6e 79 20 69 6d 6d 65 64 69  lates any immedi
bfc0: 61 74 65 20 66 6f 72 65 69 67 6e 20 6b 65 79 20  ate foreign key 
bfd0: 63 6f 6e 73 74 72 61 69 6e 74 73 2c 0a 61 6e 20  constraints,.an 
bfe0: 65 72 72 6f 72 20 69 73 20 72 65 74 75 72 6e 65  error is returne
bff0: 64 20 61 6e 64 20 74 68 65 20 74 61 62 6c 65 20  d and the table 
c000: 69 73 20 6e 6f 74 20 64 72 6f 70 70 65 64 2e 20  is not dropped. 
c010: 5e 49 66 20 0a 74 68 65 20 69 6d 70 6c 69 63 69  ^If .the implici
c020: 74 20 44 45 4c 45 54 45 20 46 52 4f 4d 20 26 6c  t DELETE FROM &l
c030: 74 3b 74 62 6c 26 67 74 3b 20 63 61 75 73 65 73  t;tbl&gt; causes
c040: 20 61 6e 79 20 0a 64 65 66 65 72 72 65 64 20 66   any .deferred f
c050: 6f 72 65 69 67 6e 20 6b 65 79 20 63 6f 6e 73 74  oreign key const
c060: 72 61 69 6e 74 73 20 74 6f 20 62 65 20 76 69 6f  raints to be vio
c070: 6c 61 74 65 64 2c 20 61 6e 64 20 74 68 65 20 76  lated, and the v
c080: 69 6f 6c 61 74 69 6f 6e 73 20 73 74 69 6c 6c 0a  iolations still.
c090: 65 78 69 73 74 20 77 68 65 6e 20 74 68 65 20 74  exist when the t
c0a0: 72 61 6e 73 61 63 74 69 6f 6e 20 69 73 20 63 6f  ransaction is co
c0b0: 6d 6d 69 74 74 65 64 2c 20 61 6e 20 65 72 72 6f  mmitted, an erro
c0c0: 72 20 69 73 20 72 65 74 75 72 6e 65 64 20 61 74  r is returned at
c0d0: 20 74 68 65 20 74 69 6d 65 0a 6f 66 20 63 6f 6d   the time.of com
c0e0: 6d 69 74 2e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23  mit...<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 23 0a 53 65 63 74 69  ##########.Secti
c140: 6f 6e 20 7b 44 52 4f 50 20 54 52 49 47 47 45 52  on {DROP TRIGGER
c150: 7d 20 64 72 6f 70 74 72 69 67 67 65 72 20 7b 7b  } droptrigger {{
c160: 44 52 4f 50 20 54 52 49 47 47 45 52 7d 7d 0a 0a  DROP TRIGGER}}..
c170: 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 64 72  BubbleDiagram dr
c180: 6f 70 2d 74 72 69 67 67 65 72 2d 73 74 6d 74 20  op-trigger-stmt 
c190: 31 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 5e 54 68  1.</tcl>..<p>^Th
c1a0: 65 20 44 52 4f 50 20 54 52 49 47 47 45 52 20 73  e DROP TRIGGER s
c1b0: 74 61 74 65 6d 65 6e 74 20 72 65 6d 6f 76 65 73  tatement removes
c1c0: 20 61 20 74 72 69 67 67 65 72 20 63 72 65 61 74   a trigger creat
c1d0: 65 64 20 62 79 20 74 68 65 20 0a 5b 43 52 45 41  ed by the .[CREA
c1e0: 54 45 20 54 52 49 47 47 45 52 5d 20 73 74 61 74  TE TRIGGER] stat
c1f0: 65 6d 65 6e 74 2e 20 20 5e 54 68 65 20 74 72 69  ement.  ^The tri
c200: 67 67 65 72 20 69 73 20 0a 64 65 6c 65 74 65 64  gger is .deleted
c210: 20 66 72 6f 6d 20 74 68 65 20 64 61 74 61 62 61   from the databa
c220: 73 65 20 73 63 68 65 6d 61 2e 20 5e 4e 6f 74 65  se schema. ^Note
c230: 20 74 68 61 74 20 74 72 69 67 67 65 72 73 20 61   that triggers a
c240: 72 65 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79  re automatically
c250: 20 0a 64 72 6f 70 70 65 64 20 77 68 65 6e 20 74   .dropped when t
c260: 68 65 20 61 73 73 6f 63 69 61 74 65 64 20 74 61  he associated ta
c270: 62 6c 65 20 69 73 20 64 72 6f 70 70 65 64 2e 3c  ble is dropped.<
c280: 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 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 23 0a 53 65 63 74 69 6f  #########.Sectio
c2e0: 6e 20 7b 44 52 4f 50 20 56 49 45 57 7d 20 64 72  n {DROP VIEW} dr
c2f0: 6f 70 76 69 65 77 20 7b 7b 44 52 4f 50 20 56 49  opview {{DROP VI
c300: 45 57 7d 7d 0a 0a 42 75 62 62 6c 65 44 69 61 67  EW}}..BubbleDiag
c310: 72 61 6d 20 64 72 6f 70 2d 76 69 65 77 2d 73 74  ram drop-view-st
c320: 6d 74 20 31 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e  mt 1.</tcl>..<p>
c330: 5e 54 68 65 20 44 52 4f 50 20 56 49 45 57 20 73  ^The DROP VIEW s
c340: 74 61 74 65 6d 65 6e 74 20 72 65 6d 6f 76 65 73  tatement removes
c350: 20 61 20 76 69 65 77 20 63 72 65 61 74 65 64 20   a view created 
c360: 62 79 20 74 68 65 0a 5b 43 52 45 41 54 45 20 56  by the.[CREATE V
c370: 49 45 57 5d 20 73 74 61 74 65 6d 65 6e 74 2e 20  IEW] statement. 
c380: 20 5e 54 68 65 20 6e 61 6d 65 20 73 70 65 63 69   ^The name speci
c390: 66 69 65 64 20 69 73 20 74 68 65 20 0a 76 69 65  fied is the .vie
c3a0: 77 20 6e 61 6d 65 2e 20 20 5e 49 74 20 69 73 20  w name.  ^It is 
c3b0: 72 65 6d 6f 76 65 64 20 66 72 6f 6d 20 74 68 65  removed from the
c3c0: 20 64 61 74 61 62 61 73 65 20 73 63 68 65 6d 61   database schema
c3d0: 2c 20 62 75 74 20 6e 6f 20 61 63 74 75 61 6c 20  , but no actual 
c3e0: 64 61 74 61 20 0a 69 6e 20 74 68 65 20 75 6e 64  data .in the und
c3f0: 65 72 6c 79 69 6e 67 20 62 61 73 65 20 74 61 62  erlying base tab
c400: 6c 65 73 20 69 73 20 6d 6f 64 69 66 69 65 64 2e  les is modified.
c410: 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 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 23 0a 53 65 63 74 69  ##########.Secti
c470: 6f 6e 20 45 58 50 4c 41 49 4e 20 65 78 70 6c 61  on EXPLAIN expla
c480: 69 6e 20 45 58 50 4c 41 49 4e 0a 0a 42 75 62 62  in EXPLAIN..Bubb
c490: 6c 65 44 69 61 67 72 61 6d 20 73 71 6c 2d 73 74  leDiagram sql-st
c4a0: 6d 74 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 5e 41  mt.</tcl>..<p>^A
c4b0: 6e 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20  n SQL statement 
c4c0: 63 61 6e 20 62 65 20 70 72 65 63 65 64 65 64 20  can be preceded 
c4d0: 62 79 20 74 68 65 20 6b 65 79 77 6f 72 64 20 22  by the keyword "
c4e0: 45 58 50 4c 41 49 4e 22 20 6f 72 0a 62 79 20 74  EXPLAIN" or.by t
c4f0: 68 65 20 70 68 72 61 73 65 20 22 45 58 50 4c 41  he phrase "EXPLA
c500: 49 4e 20 51 55 45 52 59 20 50 4c 41 4e 22 2e 20  IN QUERY PLAN". 
c510: 20 5e 45 69 74 68 65 72 20 6d 6f 64 69 66 69 63   ^Either modific
c520: 61 74 69 6f 6e 20 63 61 75 73 65 73 20 74 68 65  ation causes the
c530: 0a 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 74  .SQL statement t
c540: 6f 20 62 65 68 61 76 65 20 61 73 20 61 20 71 75  o behave as a qu
c550: 65 72 79 20 61 6e 64 20 74 6f 20 72 65 74 75 72  ery and to retur
c560: 6e 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62  n information ab
c570: 6f 75 74 0a 68 6f 77 20 74 68 65 20 53 51 4c 20  out.how the SQL 
c580: 73 74 61 74 65 6d 65 6e 74 20 77 6f 75 6c 64 20  statement would 
c590: 68 61 76 65 20 6f 70 65 72 61 74 65 64 20 69 66  have operated if
c5a0: 20 74 68 65 20 45 58 50 4c 41 49 4e 20 6b 65 79   the EXPLAIN key
c5b0: 77 6f 72 64 20 6f 72 0a 70 68 72 61 73 65 20 68  word or.phrase h
c5c0: 61 64 20 62 65 65 6e 20 6f 6d 69 74 74 65 64 2e  ad been omitted.
c5d0: 3c 2f 70 3e 0a 0a 3c 70 3e 5e 57 68 65 6e 20 74  </p>..<p>^When t
c5e0: 68 65 20 45 58 50 4c 41 49 4e 20 6b 65 79 77 6f  he EXPLAIN keywo
c5f0: 72 64 20 61 70 70 65 61 72 73 20 62 79 20 69 74  rd appears by it
c600: 73 65 6c 66 20 69 74 20 63 61 75 73 65 73 20 74  self it causes t
c610: 68 65 20 73 74 61 74 65 6d 65 6e 74 0a 74 6f 20  he statement.to 
c620: 62 65 68 61 76 65 20 61 73 20 61 20 71 75 65 72  behave as a quer
c630: 79 20 74 68 61 74 20 72 65 74 75 72 6e 73 20 74  y that returns t
c640: 68 65 20 73 65 71 75 65 6e 63 65 20 6f 66 20 0a  he sequence of .
c650: 5b 76 69 72 74 75 61 6c 20 6d 61 63 68 69 6e 65  [virtual machine
c660: 20 69 6e 73 74 72 75 63 74 69 6f 6e 73 5d 20 69   instructions] i
c670: 74 20 77 6f 75 6c 64 20 68 61 76 65 0a 75 73 65  t would have.use
c680: 64 20 74 6f 20 65 78 65 63 75 74 65 20 74 68 65  d to execute the
c690: 20 63 6f 6d 6d 61 6e 64 20 68 61 64 20 74 68 65   command had the
c6a0: 20 45 58 50 4c 41 49 4e 20 6b 65 79 77 6f 72 64   EXPLAIN keyword
c6b0: 20 6e 6f 74 20 62 65 65 6e 20 70 72 65 73 65 6e   not been presen
c6c0: 74 2e 0a 5e 57 68 65 6e 20 74 68 65 20 45 58 50  t..^When the EXP
c6d0: 4c 41 49 4e 20 51 55 45 52 59 20 50 4c 41 4e 20  LAIN QUERY PLAN 
c6e0: 70 68 72 61 73 65 20 61 70 70 65 61 72 73 2c 20  phrase appears, 
c6f0: 74 68 65 20 73 74 61 74 65 6d 65 6e 74 20 72 65  the statement re
c700: 74 75 72 6e 73 0a 68 69 67 68 2d 6c 65 76 65 6c  turns.high-level
c710: 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f   information abo
c720: 75 74 20 77 68 61 74 20 69 6e 64 69 63 65 73 20  ut what indices 
c730: 77 6f 75 6c 64 20 68 61 76 65 20 62 65 65 6e 20  would have been 
c740: 75 73 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68  used.</p>..<p>Th
c750: 65 20 6f 75 74 70 75 74 20 66 72 6f 6d 20 45 58  e output from EX
c760: 50 4c 41 49 4e 20 61 6e 64 20 45 58 50 4c 41 49  PLAIN and EXPLAI
c770: 4e 20 51 55 45 52 59 20 50 4c 41 4e 20 69 73 20  N QUERY PLAN is 
c780: 69 6e 74 65 6e 64 65 64 20 66 6f 72 0a 69 6e 74  intended for.int
c790: 65 72 61 63 74 69 76 65 20 61 6e 61 6c 79 73 69  eractive analysi
c7a0: 73 20 61 6e 64 20 74 72 6f 75 62 6c 65 73 68 6f  s and troublesho
c7b0: 6f 74 69 6e 67 20 6f 6e 6c 79 2e 20 20 54 68 65  oting only.  The
c7c0: 20 64 65 74 61 69 6c 73 20 6f 66 20 74 68 65 20   details of the 
c7d0: 0a 6f 75 74 70 75 74 20 66 6f 72 6d 61 74 20 61  .output format a
c7e0: 72 65 20 73 75 62 6a 65 63 74 20 74 6f 20 63 68  re subject to ch
c7f0: 61 6e 67 65 20 66 72 6f 6d 20 6f 6e 65 20 72 65  ange from one re
c800: 6c 65 61 73 65 20 6f 66 20 53 51 4c 69 74 65 20  lease of SQLite 
c810: 74 6f 20 74 68 65 20 6e 65 78 74 2e 0a 41 70 70  to the next..App
c820: 6c 69 63 61 74 69 6f 6e 73 20 73 68 6f 75 6c 64  lications should
c830: 20 6e 6f 74 20 75 73 65 20 45 58 50 4c 41 49 4e   not use EXPLAIN
c840: 20 6f 72 20 45 58 50 4c 41 49 4e 20 51 55 45 52   or EXPLAIN QUER
c850: 59 20 50 4c 41 4e 20 73 69 6e 63 65 0a 74 68 65  Y PLAN since.the
c860: 69 72 20 65 78 61 63 74 20 62 65 68 61 76 69 6f  ir exact behavio
c870: 72 20 69 73 20 75 6e 64 6f 63 75 6d 65 6e 74 65  r is undocumente
c880: 64 2c 20 75 6e 73 70 65 63 69 66 69 65 64 2c 20  d, unspecified, 
c890: 61 6e 64 20 76 61 72 69 61 62 6c 65 2e 3c 2f 70  and variable.</p
c8a0: 3e 0a 0a 3c 74 63 6c 3e 0a 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 23 0a 53 65 63 74 69 6f 6e 20  #######.Section 
c900: 65 78 70 72 65 73 73 69 6f 6e 20 65 78 70 72 20  expression expr 
c910: 7b 2a 65 78 70 72 65 73 73 69 6f 6e 20 7b 65 78  {*expression {ex
c920: 70 72 65 73 73 69 6f 6e 20 73 79 6e 74 61 78 7d  pression syntax}
c930: 7d 0a 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d  }..BubbleDiagram
c940: 20 65 78 70 72 20 31 0a 42 75 62 62 6c 65 44 69   expr 1.BubbleDi
c950: 61 67 72 61 6d 20 6c 69 74 65 72 61 6c 2d 76 61  agram literal-va
c960: 6c 75 65 0a 42 75 62 62 6c 65 44 69 61 67 72 61  lue.BubbleDiagra
c970: 6d 20 73 69 67 6e 65 64 2d 6e 75 6d 62 65 72 0a  m signed-number.
c980: 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 72 61  BubbleDiagram ra
c990: 69 73 65 2d 66 75 6e 63 74 69 6f 6e 0a 3c 2f 74  ise-function.</t
c9a0: 63 6c 3e 0a 0a 3c 70 3e 54 68 69 73 20 73 65 63  cl>..<p>This sec
c9b0: 74 69 6f 6e 20 69 73 20 64 69 66 66 65 72 65 6e  tion is differen
c9c0: 74 20 66 72 6f 6d 20 74 68 65 20 6f 74 68 65 72  t from the other
c9d0: 73 2e 20 20 4d 6f 73 74 20 6f 74 68 65 72 20 73  s.  Most other s
c9e0: 65 63 74 69 6f 6e 73 20 6f 66 0a 74 68 69 73 20  ections of.this 
c9f0: 64 6f 63 75 6d 65 6e 74 20 74 61 6c 6b 73 20 61  document talks a
ca00: 62 6f 75 74 20 61 20 70 61 72 74 69 63 75 6c 61  bout a particula
ca10: 72 20 53 51 4c 20 63 6f 6d 6d 61 6e 64 2e 20 20  r SQL command.  
ca20: 54 68 69 73 20 73 65 63 74 69 6f 6e 20 64 6f 65  This section doe
ca30: 73 0a 6e 6f 74 20 74 61 6c 6b 20 61 62 6f 75 74  s.not talk about
ca40: 20 61 20 73 74 61 6e 64 61 6c 6f 6e 65 20 63 6f   a standalone co
ca50: 6d 6d 61 6e 64 20 62 75 74 20 61 62 6f 75 74 20  mmand but about 
ca60: 22 65 78 70 72 65 73 73 69 6f 6e 73 22 20 77 68  "expressions" wh
ca70: 69 63 68 20 61 72 65 20 0a 73 75 62 63 6f 6d 70  ich are .subcomp
ca80: 6f 6e 65 6e 74 73 20 6f 66 20 6d 6f 73 74 20 6f  onents of most o
ca90: 74 68 65 72 20 63 6f 6d 6d 61 6e 64 73 2e 3c 2f  ther commands.</
caa0: 70 3e 0a 0a 3c 74 63 6c 3e 68 64 5f 66 72 61 67  p>..<tcl>hd_frag
cab0: 6d 65 6e 74 20 62 69 6e 61 72 79 6f 70 73 20 7b  ment binaryops {
cac0: 62 69 6e 61 72 79 20 6f 70 65 72 61 74 6f 72 73  binary operators
cad0: 7d 3c 2f 74 63 6c 3e 0a 3c 68 33 3e 4f 70 65 72  }</tcl>.<h3>Oper
cae0: 61 74 6f 72 73 3c 2f 68 33 3e 0a 3c 70 3e 5e 28  ators</h3>.<p>^(
caf0: 53 51 4c 69 74 65 20 75 6e 64 65 72 73 74 61 6e  SQLite understan
cb00: 64 73 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  ds the following
cb10: 20 62 69 6e 61 72 79 20 6f 70 65 72 61 74 6f 72   binary operator
cb20: 73 2c 20 69 6e 20 6f 72 64 65 72 20 66 72 6f 6d  s, in order from
cb30: 0a 68 69 67 68 65 73 74 20 74 6f 20 6c 6f 77 65  .highest to lowe
cb40: 73 74 20 70 72 65 63 65 64 65 6e 63 65 3a 3c 2f  st precedence:</
cb50: 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e  p>..<blockquote>
cb60: 3c 70 72 65 3e 0a 3c 66 6f 6e 74 20 63 6f 6c 6f  <pre>.<font colo
cb70: 72 3d 22 23 32 63 32 63 66 30 22 3e 3c 62 69 67  r="#2c2cf0"><big
cb80: 3e 7c 7c 0a 2a 20 20 20 20 2f 20 20 20 20 25 0a  >||.*    /    %.
cb90: 2b 20 20 20 20 2d 0a 26 6c 74 3b 26 6c 74 3b 20  +    -.&lt;&lt; 
cba0: 20 20 26 67 74 3b 26 67 74 3b 20 20 20 26 61 6d    &gt;&gt;   &am
cbb0: 70 3b 20 20 20 20 7c 0a 26 6c 74 3b 20 20 20 20  p;    |.&lt;    
cbc0: 26 6c 74 3b 3d 20 20 20 26 67 74 3b 20 20 20 20  &lt;=   &gt;    
cbd0: 26 67 74 3b 3d 0a 3d 20 20 20 20 3d 3d 20 20 20  &gt;=.=    ==   
cbe0: 21 3d 20 20 20 26 6c 74 3b 26 67 74 3b 20 20 20  !=   &lt;&gt;   
cbf0: 3c 2f 62 69 67 3e 49 53 20 20 20 49 53 20 4e 4f  </big>IS   IS NO
cc00: 54 20 20 20 49 4e 20 20 20 4c 49 4b 45 20 20 20  T   IN   LIKE   
cc10: 47 4c 4f 42 20 20 20 4d 41 54 43 48 20 20 20 52  GLOB   MATCH   R
cc20: 45 47 45 58 50 0a 41 4e 44 20 20 20 0a 4f 52 3c  EGEXP.AND   .OR<
cc30: 2f 66 6f 6e 74 3e 0a 3c 2f 70 72 65 3e 3c 2f 62  /font>.</pre></b
cc40: 6c 6f 63 6b 71 75 6f 74 65 3e 29 5e 0a 0a 3c 70  lockquote>)^..<p
cc50: 3e 5e 28 53 75 70 70 6f 72 74 65 64 20 75 6e 61  >^(Supported una
cc60: 72 79 20 70 72 65 66 69 78 20 6f 70 65 72 61 74  ry prefix operat
cc70: 6f 72 73 20 61 72 65 20 74 68 65 73 65 3a 3c 2f  ors are these:</
cc80: 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e  p>..<blockquote>
cc90: 3c 70 72 65 3e 0a 3c 66 6f 6e 74 20 63 6f 6c 6f  <pre>.<font colo
cca0: 72 3d 22 23 32 63 32 63 66 30 22 3e 3c 62 69 67  r="#2c2cf0"><big
ccb0: 3e 2d 20 20 20 20 2b 20 20 20 20 7e 20 20 20 20  >-    +    ~    
ccc0: 4e 4f 54 3c 2f 62 69 67 3e 3c 2f 66 6f 6e 74 3e  NOT</big></font>
ccd0: 0a 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75  .</pre></blockqu
cce0: 6f 74 65 3e 29 5e 0a 0a 3c 74 63 6c 3e 68 64 5f  ote>)^..<tcl>hd_
ccf0: 66 72 61 67 6d 65 6e 74 20 63 6f 6c 6c 61 74 65  fragment collate
cd00: 6f 70 20 7b 43 4f 4c 4c 41 54 45 20 6f 70 65 72  op {COLLATE oper
cd10: 61 74 6f 72 7d 3c 2f 74 63 6c 3e 0a 3c 70 3e 5e  ator}</tcl>.<p>^
cd20: 54 68 65 20 43 4f 4c 4c 41 54 45 20 6f 70 65 72  The COLLATE oper
cd30: 61 74 6f 72 20 63 61 6e 20 62 65 20 74 68 6f 75  ator can be thou
cd40: 67 68 74 20 6f 66 20 61 73 20 61 20 75 6e 61 72  ght of as a unar
cd50: 79 20 70 6f 73 74 66 69 78 0a 6f 70 65 72 61 74  y postfix.operat
cd60: 6f 72 2e 20 20 5e 54 68 65 20 43 4f 4c 4c 41 54  or.  ^The COLLAT
cd70: 45 20 6f 70 65 72 61 74 6f 72 20 68 61 73 20 74  E operator has t
cd80: 68 65 20 68 69 67 68 65 73 74 20 70 72 65 63 65  he highest prece
cd90: 64 65 6e 63 65 2e 0a 5e 49 74 20 61 6c 77 61 79  dence..^It alway
cda0: 73 20 62 69 6e 64 73 20 6d 6f 72 65 20 74 69 67  s binds more tig
cdb0: 68 74 6c 79 20 74 68 61 6e 20 61 6e 79 20 70 72  htly than any pr
cdc0: 65 66 69 78 20 75 6e 61 72 79 20 6f 70 65 72 61  efix unary opera
cdd0: 74 6f 72 20 6f 72 0a 61 6e 79 20 62 69 6e 61 72  tor or.any binar
cde0: 79 20 6f 70 65 72 61 74 6f 72 2e 3c 2f 70 3e 0a  y operator.</p>.
cdf0: 0a 3c 74 63 6c 3e 68 64 5f 70 75 74 73 20 22 0a  .<tcl>hd_puts ".
ce00: 3c 70 3e 5e 54 68 65 20 75 6e 61 72 79 20 6f 70  <p>^The unary op
ce10: 65 72 61 74 6f 72 20 5b 4f 70 65 72 61 74 6f 72  erator [Operator
ce20: 20 2b 5d 20 69 73 20 61 20 6e 6f 2d 6f 70 2e 20   +] is a no-op. 
ce30: 20 5e 49 74 20 63 61 6e 20 62 65 20 61 70 70 6c   ^It can be appl
ce40: 69 65 64 0a 74 6f 20 73 74 72 69 6e 67 73 2c 20  ied.to strings, 
ce50: 6e 75 6d 62 65 72 73 2c 20 62 6c 6f 62 73 20 6f  numbers, blobs o
ce60: 72 20 4e 55 4c 4c 20 61 6e 64 20 69 74 20 61 6c  r NULL and it al
ce70: 77 61 79 73 20 72 65 74 75 72 6e 73 20 61 20 72  ways returns a r
ce80: 65 73 75 6c 74 0a 77 69 74 68 20 74 68 65 20 73  esult.with the s
ce90: 61 6d 65 20 76 61 6c 75 65 20 61 73 20 74 68 65  ame value as the
cea0: 20 6f 70 65 72 61 6e 64 2e 3c 2f 70 3e 22 3c 2f   operand.</p>"</
ceb0: 74 63 6c 3e 0a 0a 3c 70 3e 4e 6f 74 65 20 74 68  tcl>..<p>Note th
cec0: 61 74 20 74 68 65 72 65 20 61 72 65 20 74 77 6f  at there are two
ced0: 20 76 61 72 69 61 74 69 6f 6e 73 20 6f 66 20 74   variations of t
cee0: 68 65 20 65 71 75 61 6c 73 20 61 6e 64 20 6e 6f  he equals and no
cef0: 74 20 65 71 75 61 6c 73 0a 6f 70 65 72 61 74 6f  t equals.operato
cf00: 72 73 2e 20 20 5e 45 71 75 61 6c 73 20 63 61 6e  rs.  ^Equals can
cf10: 20 62 65 20 65 69 74 68 65 72 0a 0a 3c 74 63 6c   be either..<tcl
cf20: 3e 0a 68 64 5f 70 75 74 73 20 22 5b 4f 70 65 72  >.hd_puts "[Oper
cf30: 61 74 6f 72 20 3d 5d 20 6f 72 20 5b 4f 70 65 72  ator =] or [Oper
cf40: 61 74 6f 72 20 3d 3d 5d 2e 0a 5e 54 68 65 20 6e  ator ==]..^The n
cf50: 6f 6e 2d 65 71 75 61 6c 73 20 6f 70 65 72 61 74  on-equals operat
cf60: 6f 72 20 63 61 6e 20 62 65 20 65 69 74 68 65 72  or can be either
cf70: 0a 5b 4f 70 65 72 61 74 6f 72 20 21 3d 5d 20 6f  .[Operator !=] o
cf80: 72 20 5b 4f 70 65 72 61 74 6f 72 20 7b 26 6c 74  r [Operator {&lt
cf90: 3b 26 67 74 3b 7d 5d 2e 0a 5e 54 68 65 20 5b 4f  ;&gt;}]..^The [O
cfa0: 70 65 72 61 74 6f 72 20 7c 7c 5d 20 6f 70 65 72  perator ||] oper
cfb0: 61 74 6f 72 20 69 73 20 5c 22 63 6f 6e 63 61 74  ator is \"concat
cfc0: 65 6e 61 74 65 5c 22 20 2d 20 69 74 20 6a 6f 69  enate\" - it joi
cfd0: 6e 73 20 74 6f 67 65 74 68 65 72 0a 74 68 65 20  ns together.the 
cfe0: 74 77 6f 20 73 74 72 69 6e 67 73 20 6f 66 20 69  two strings of i
cff0: 74 73 20 6f 70 65 72 61 6e 64 73 2e 0a 5e 54 68  ts operands..^Th
d000: 65 20 6f 70 65 72 61 74 6f 72 20 5b 4f 70 65 72  e operator [Oper
d010: 61 74 6f 72 20 25 5d 20 6f 75 74 70 75 74 73 20  ator %] outputs 
d020: 74 68 65 20 76 61 6c 75 65 20 6f 66 20 69 74 73  the value of its
d030: 20 6c 65 66 74 20 0a 6f 70 65 72 61 6e 64 20 6d   left .operand m
d040: 6f 64 75 6c 6f 20 69 74 73 20 72 69 67 68 74 20  odulo its right 
d050: 6f 70 65 72 61 6e 64 2e 3c 2f 70 3e 0a 0a 3c 70  operand.</p>..<p
d060: 3e 5e 54 68 65 20 72 65 73 75 6c 74 20 6f 66 20  >^The result of 
d070: 61 6e 79 20 62 69 6e 61 72 79 20 6f 70 65 72 61  any binary opera
d080: 74 6f 72 20 69 73 20 65 69 74 68 65 72 20 61 20  tor is either a 
d090: 6e 75 6d 65 72 69 63 20 76 61 6c 75 65 20 6f 72  numeric value or
d0a0: 20 0a 4e 55 4c 4c 2c 20 65 78 63 65 70 74 20 66   .NULL, except f
d0b0: 6f 72 20 74 68 65 20 5b 4f 70 65 72 61 74 6f 72  or the [Operator
d0c0: 20 7c 7c 5d 20 63 6f 6e 63 61 74 65 6e 61 74 69   ||] concatenati
d0d0: 6f 6e 20 6f 70 65 72 61 74 6f 72 20 77 68 69 63  on operator whic
d0e0: 68 20 61 6c 77 61 79 73 20 0a 65 76 61 6c 75 61  h always .evalua
d0f0: 74 65 73 20 74 6f 20 65 69 74 68 65 72 20 4e 55  tes to either NU
d100: 4c 4c 20 6f 72 20 61 20 74 65 78 74 20 76 61 6c  LL or a text val
d110: 75 65 2e 3c 2f 70 3e 22 0a 0a 68 64 5f 66 72 61  ue.</p>"..hd_fra
d120: 67 6d 65 6e 74 20 7b 69 73 69 73 6e 6f 74 7d 20  gment {isisnot} 
d130: 7b 49 53 20 6f 70 65 72 61 74 6f 72 7d 20 7b 49  {IS operator} {I
d140: 53 20 4e 4f 54 20 6f 70 65 72 61 74 6f 72 7d 0a  S NOT operator}.
d150: 0a 68 64 5f 70 75 74 73 20 22 3c 70 3e 5e 54 68  .hd_puts "<p>^Th
d160: 65 20 5b 4f 70 65 72 61 74 6f 72 20 49 53 5d 20  e [Operator IS] 
d170: 61 6e 64 20 5b 4f 70 65 72 61 74 6f 72 20 7b 49  and [Operator {I
d180: 53 20 4e 4f 54 7d 5d 20 6f 70 65 72 61 74 6f 72  S NOT}] operator
d190: 73 20 77 6f 72 6b 0a 6c 69 6b 65 20 5b 4f 70 65  s work.like [Ope
d1a0: 72 61 74 6f 72 20 3d 5d 20 61 6e 64 20 5b 4f 70  rator =] and [Op
d1b0: 65 72 61 74 6f 72 20 21 3d 5d 20 65 78 63 65 70  erator !=] excep
d1c0: 74 20 77 68 65 6e 20 6f 6e 65 20 6f 72 20 62 6f  t when one or bo
d1d0: 74 68 20 6f 66 20 74 68 65 0a 6f 70 65 72 61 6e  th of the.operan
d1e0: 64 73 20 61 72 65 20 4e 55 4c 4c 2e 20 5e 49 6e  ds are NULL. ^In
d1f0: 20 74 68 69 73 20 63 61 73 65 2c 20 69 66 20 62   this case, if b
d200: 6f 74 68 20 6f 70 65 72 61 6e 64 73 20 61 72 65  oth operands are
d210: 20 4e 55 4c 4c 2c 20 74 68 65 6e 20 74 68 65 0a   NULL, then the.
d220: 49 53 20 6f 70 65 72 61 74 6f 72 20 65 76 61 6c  IS operator eval
d230: 75 61 74 65 73 20 74 6f 20 31 20 28 74 72 75 65  uates to 1 (true
d240: 29 20 61 6e 64 20 74 68 65 20 49 53 20 4e 4f 54  ) and the IS NOT
d250: 20 6f 70 65 72 61 74 6f 72 20 65 76 61 6c 75 61   operator evalua
d260: 74 65 73 0a 74 6f 20 30 20 28 66 61 6c 73 65 29  tes.to 0 (false)
d270: 2e 20 5e 49 66 20 6f 6e 65 20 6f 70 65 72 61 6e  . ^If one operan
d280: 64 20 69 73 20 4e 55 4c 4c 20 61 6e 64 20 74 68  d is NULL and th
d290: 65 20 6f 74 68 65 72 20 69 73 20 6e 6f 74 2c 20  e other is not, 
d2a0: 74 68 65 6e 20 74 68 65 0a 49 53 20 6f 70 65 72  then the.IS oper
d2b0: 61 74 6f 72 20 65 76 61 6c 75 61 74 65 73 20 74  ator evaluates t
d2c0: 6f 20 30 20 28 66 61 6c 73 65 29 20 61 6e 64 20  o 0 (false) and 
d2d0: 74 68 65 20 49 53 20 4e 4f 54 20 6f 70 65 72 61  the IS NOT opera
d2e0: 74 6f 72 20 69 73 20 31 20 28 74 72 75 65 29 2e  tor is 1 (true).
d2f0: 0a 5e 49 74 20 69 73 20 6e 6f 74 20 70 6f 73 73  .^It is not poss
d300: 69 62 6c 65 20 66 6f 72 20 61 6e 20 49 53 20 6f  ible for an IS o
d310: 72 20 49 53 20 4e 4f 54 20 65 78 70 72 65 73 73  r IS NOT express
d320: 69 6f 6e 20 74 6f 20 65 76 61 6c 75 61 74 65 20  ion to evaluate 
d330: 74 6f 20 4e 55 4c 4c 2e 0a 5e 4f 70 65 72 61 74  to NULL..^Operat
d340: 6f 72 73 20 5b 4f 70 65 72 61 74 6f 72 20 49 53  ors [Operator IS
d350: 5d 20 61 6e 64 20 5b 4f 70 65 72 61 74 6f 72 20  ] and [Operator 
d360: 7b 49 53 20 4e 4f 54 7d 5d 20 68 61 76 65 20 74  {IS NOT}] have t
d370: 68 65 20 73 61 6d 65 20 0a 70 72 65 63 65 64 65  he same .precede
d380: 6e 63 65 20 61 73 20 5b 4f 70 65 72 61 74 6f 72  nce as [Operator
d390: 20 3d 5d 2e 22 0a 0a 3c 74 63 6c 3e 68 64 5f 66   =]."..<tcl>hd_f
d3a0: 72 61 67 6d 65 6e 74 20 6c 69 74 76 61 6c 75 65  ragment litvalue
d3b0: 20 7b 6c 69 74 65 72 61 6c 20 76 61 6c 75 65 7d   {literal value}
d3c0: 3c 2f 74 63 6c 3e 0a 3c 68 33 3e 4c 69 74 65 72  </tcl>.<h3>Liter
d3d0: 61 6c 20 56 61 6c 75 65 73 3c 2f 68 33 3e 0a 3c  al Values</h3>.<
d3e0: 70 3e 0a 5e 41 20 6c 69 74 65 72 61 6c 20 76 61  p>.^A literal va
d3f0: 6c 75 65 20 69 73 20 61 20 63 6f 6e 73 74 61 6e  lue is a constan
d400: 74 20 6f 66 20 73 6f 6d 65 20 6b 69 6e 64 2e 0a  t of some kind..
d410: 5e 4c 69 74 65 72 61 6c 20 76 61 6c 75 65 73 20  ^Literal values 
d420: 6d 61 79 20 62 65 20 69 6e 74 65 67 65 72 73 2c  may be integers,
d430: 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20   floating point 
d440: 6e 75 6d 62 65 72 73 2c 20 73 74 72 69 6e 67 73  numbers, strings
d450: 2c 0a 42 4c 4f 42 73 2c 20 6f 72 20 4e 55 4c 4c  ,.BLOBs, or NULL
d460: 73 2e 0a 5e 53 63 69 65 6e 74 69 66 69 63 20 6e  s..^Scientific n
d470: 6f 74 61 74 69 6f 6e 20 69 73 20 73 75 70 70 6f  otation is suppo
d480: 72 74 65 64 20 66 6f 72 20 66 6c 6f 61 74 69 6e  rted for floatin
d490: 67 20 70 6f 69 6e 74 20 6c 69 74 65 72 61 6c 20  g point literal 
d4a0: 76 61 6c 75 65 73 2e 0a 5e 28 54 68 65 20 22 2e  values..^(The ".
d4b0: 22 20 63 68 61 72 61 63 74 65 72 20 69 73 20 61  " character is a
d4c0: 6c 77 61 79 73 20 75 73 65 64 20 0a 61 73 20 74  lways used .as t
d4d0: 68 65 20 64 65 63 69 6d 61 6c 20 70 6f 69 6e 74  he decimal point
d4e0: 20 65 76 65 6e 20 69 66 20 74 68 65 20 6c 6f 63   even if the loc
d4f0: 61 6c 65 20 73 65 74 74 69 6e 67 20 73 70 65 63  ale setting spec
d500: 69 66 69 65 73 20 22 2c 22 20 66 6f 72 0a 74 68  ifies "," for.th
d510: 69 73 20 72 6f 6c 65 20 2d 20 74 68 65 20 75 73  is role - the us
d520: 65 20 6f 66 20 22 2c 22 20 66 6f 72 20 74 68 65  e of "," for the
d530: 20 64 65 63 69 6d 61 6c 20 70 6f 69 6e 74 20 77   decimal point w
d540: 6f 75 6c 64 20 72 65 73 75 6c 74 20 69 6e 0a 73  ould result in.s
d550: 79 6e 74 61 63 74 69 63 20 61 6d 62 69 67 75 69  yntactic ambigui
d560: 74 79 2e 29 5e 20 20 5e 41 20 73 74 72 69 6e 67  ty.)^  ^A string
d570: 20 63 6f 6e 73 74 61 6e 74 20 69 73 20 66 6f 72   constant is for
d580: 6d 65 64 20 62 79 20 65 6e 63 6c 6f 73 69 6e 67  med by enclosing
d590: 20 74 68 65 0a 73 74 72 69 6e 67 20 69 6e 20 73   the.string in s
d5a0: 69 6e 67 6c 65 20 71 75 6f 74 65 73 20 28 27 29  ingle quotes (')
d5b0: 2e 20 20 5e 41 20 73 69 6e 67 6c 65 20 71 75 6f  .  ^A single quo
d5c0: 74 65 20 77 69 74 68 69 6e 20 74 68 65 20 73 74  te within the st
d5d0: 72 69 6e 67 20 63 61 6e 0a 62 65 20 65 6e 63 6f  ring can.be enco
d5e0: 64 65 64 20 62 79 20 70 75 74 74 69 6e 67 20 74  ded by putting t
d5f0: 77 6f 20 73 69 6e 67 6c 65 20 71 75 6f 74 65 73  wo single quotes
d600: 20 69 6e 20 61 20 72 6f 77 20 2d 20 61 73 20 69   in a row - as i
d610: 6e 20 50 61 73 63 61 6c 2e 0a 43 2d 73 74 79 6c  n Pascal..C-styl
d620: 65 20 65 73 63 61 70 65 73 20 75 73 69 6e 67 20  e escapes using 
d630: 74 68 65 20 62 61 63 6b 73 6c 61 73 68 20 63 68  the backslash ch
d640: 61 72 61 63 74 65 72 20 61 72 65 20 6e 6f 74 20  aracter are not 
d650: 73 75 70 70 6f 72 74 65 64 20 62 65 63 61 75 73  supported becaus
d660: 65 0a 74 68 65 79 20 61 72 65 20 6e 6f 74 20 73  e.they are not s
d670: 74 61 6e 64 61 72 64 20 53 51 4c 2e 0a 5e 42 4c  tandard SQL..^BL
d680: 4f 42 20 6c 69 74 65 72 61 6c 73 20 61 72 65 20  OB literals are 
d690: 73 74 72 69 6e 67 20 6c 69 74 65 72 61 6c 73 20  string literals 
d6a0: 63 6f 6e 74 61 69 6e 69 6e 67 20 68 65 78 61 64  containing hexad
d6b0: 65 63 69 6d 61 6c 20 64 61 74 61 20 61 6e 64 0a  ecimal data and.
d6c0: 70 72 65 63 65 64 65 64 20 62 79 20 61 20 73 69  preceded by a si
d6d0: 6e 67 6c 65 20 22 78 22 20 6f 72 20 22 58 22 20  ngle "x" or "X" 
d6e0: 63 68 61 72 61 63 74 65 72 2e 20 20 5e 28 46 6f  character.  ^(Fo
d6f0: 72 20 65 78 61 6d 70 6c 65 3a 3c 2f 70 3e 0a 0a  r example:</p>..
d700: 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70 72 65  <blockquote><pre
d710: 3e 0a 58 27 35 33 35 31 34 43 36 39 37 34 36 35  >.X'53514C697465
d720: 27 0a 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b 71  '.</pre></blockq
d730: 75 6f 74 65 3e 29 5e 0a 0a 3c 70 3e 0a 5e 41 20  uote>)^..<p>.^A 
d740: 6c 69 74 65 72 61 6c 20 76 61 6c 75 65 20 63 61  literal value ca
d750: 6e 20 61 6c 73 6f 20 62 65 20 74 68 65 20 74 6f  n also be the to
d760: 6b 65 6e 20 22 4e 55 4c 4c 22 2e 0a 3c 2f 70 3e  ken "NULL"..</p>
d770: 0a 0a 3c 74 63 6c 3e 68 64 5f 66 72 61 67 6d 65  ..<tcl>hd_fragme
d780: 6e 74 20 76 61 72 70 61 72 61 6d 20 70 61 72 61  nt varparam para
d790: 6d 65 74 65 72 20 70 61 72 61 6d 65 74 65 72 73  meter parameters
d7a0: 20 7b 62 6f 75 6e 64 20 70 61 72 61 6d 65 74 65   {bound paramete
d7b0: 72 7d 20 7b 62 6f 75 6e 64 20 70 61 72 61 6d 65  r} {bound parame
d7c0: 74 65 72 73 7d 3c 2f 74 63 6c 3e 0a 3c 68 33 3e  ters}</tcl>.<h3>
d7d0: 50 61 72 61 6d 65 74 65 72 73 3c 2f 68 33 3e 0a  Parameters</h3>.
d7e0: 3c 70 3e 0a 41 20 22 76 61 72 69 61 62 6c 65 22  <p>.A "variable"
d7f0: 20 6f 72 20 22 70 61 72 61 6d 65 74 65 72 22 20   or "parameter" 
d800: 74 6f 6b 65 6e 0a 73 70 65 63 69 66 69 65 73 20  token.specifies 
d810: 61 20 70 6c 61 63 65 68 6f 6c 64 65 72 20 69 6e  a placeholder in
d820: 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20   the expression 
d830: 66 6f 72 20 61 20 6c 69 74 65 72 61 6c 0a 76 61  for a literal.va
d840: 6c 75 65 20 74 68 61 74 20 69 73 20 66 69 6c 6c  lue that is fill
d850: 65 64 20 69 6e 20 61 74 20 72 75 6e 74 69 6d 65  ed in at runtime
d860: 20 75 73 69 6e 67 20 74 68 65 0a 5b 73 71 6c 69   using the.[sqli
d870: 74 65 33 5f 62 69 6e 64 5f 62 6c 6f 62 28 29 20  te3_bind_blob() 
d880: 7c 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 28 29  | sqlite3_bind()
d890: 5d 20 66 61 6d 69 6c 79 20 6f 66 20 43 2f 43 2b  ] family of C/C+
d8a0: 2b 20 69 6e 74 65 72 66 61 63 65 73 2e 0a 5e 28  + interfaces..^(
d8b0: 50 61 72 61 6d 65 74 65 72 73 20 63 61 6e 20 74  Parameters can t
d8c0: 61 6b 65 20 73 65 76 65 72 61 6c 20 66 6f 72 6d  ake several form
d8d0: 73 3a 0a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71  s:.</p>..<blockq
d8e0: 75 6f 74 65 3e 0a 3c 74 61 62 6c 65 3e 0a 3c 74  uote>.<table>.<t
d8f0: 72 3e 0a 3c 74 64 20 61 6c 69 67 6e 3d 22 72 69  r>.<td align="ri
d900: 67 68 74 22 20 76 61 6c 69 67 6e 3d 22 74 6f 70  ght" valign="top
d910: 22 3e 3c 62 3e 3f 3c 2f 62 3e 3c 69 3e 4e 4e 4e  "><b>?</b><i>NNN
d920: 3c 2f 69 3e 3c 2f 74 64 3e 3c 74 64 20 77 69 64  </i></td><td wid
d930: 74 68 3d 22 32 30 22 3e 3c 2f 74 64 3e 0a 3c 74  th="20"></td>.<t
d940: 64 3e 41 20 71 75 65 73 74 69 6f 6e 20 6d 61 72  d>A question mar
d950: 6b 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 61 20  k followed by a 
d960: 6e 75 6d 62 65 72 20 3c 69 3e 4e 4e 4e 3c 2f 69  number <i>NNN</i
d970: 3e 20 68 6f 6c 64 73 20 61 20 73 70 6f 74 20 66  > holds a spot f
d980: 6f 72 20 74 68 65 0a 4e 4e 4e 2d 74 68 20 70 61  or the.NNN-th pa
d990: 72 61 6d 65 74 65 72 2e 20 20 4e 4e 4e 20 6d 75  rameter.  NNN mu
d9a0: 73 74 20 62 65 20 62 65 74 77 65 65 6e 20 31 20  st be between 1 
d9b0: 61 6e 64 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f  and [SQLITE_MAX_
d9c0: 56 41 52 49 41 42 4c 45 5f 4e 55 4d 42 45 52 5d  VARIABLE_NUMBER]
d9d0: 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 74 72  .</td>.</tr>.<tr
d9e0: 3e 0a 3c 74 64 20 61 6c 69 67 6e 3d 22 72 69 67  >.<td align="rig
d9f0: 68 74 22 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  ht" valign="top"
da00: 3e 3c 62 3e 3f 3c 2f 62 3e 3c 2f 74 64 3e 3c 74  ><b>?</b></td><t
da10: 64 20 77 69 64 74 68 3d 22 32 30 22 3e 3c 2f 74  d width="20"></t
da20: 64 3e 0a 3c 74 64 3e 41 20 71 75 65 73 74 69 6f  d>.<td>A questio
da30: 6e 20 6d 61 72 6b 20 74 68 61 74 20 69 73 20 6e  n mark that is n
da40: 6f 74 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 61  ot followed by a
da50: 20 6e 75 6d 62 65 72 20 68 6f 6c 64 73 20 61 20   number holds a 
da60: 73 70 6f 74 20 66 6f 72 0a 74 68 65 20 6e 65 78  spot for.the nex
da70: 74 20 75 6e 75 73 65 64 20 70 61 72 61 6d 65 74  t unused paramet
da80: 65 72 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c  er.</td>.</tr>.<
da90: 74 72 3e 0a 3c 74 64 20 61 6c 69 67 6e 3d 22 72  tr>.<td align="r
daa0: 69 67 68 74 22 20 76 61 6c 69 67 6e 3d 22 74 6f  ight" valign="to
dab0: 70 22 3e 3c 62 3e 3a 3c 2f 62 3e 3c 69 3e 41 41  p"><b>:</b><i>AA
dac0: 41 41 3c 2f 69 3e 3c 2f 74 64 3e 3c 74 64 20 77  AA</i></td><td w
dad0: 69 64 74 68 3d 22 32 30 22 3e 3c 2f 74 64 3e 0a  idth="20"></td>.
dae0: 3c 74 64 3e 41 20 63 6f 6c 6f 6e 20 66 6f 6c 6c  <td>A colon foll
daf0: 6f 77 65 64 20 62 79 20 61 6e 20 69 64 65 6e 74  owed by an ident
db00: 69 66 69 65 72 20 6e 61 6d 65 20 68 6f 6c 64 73  ifier name holds
db10: 20 61 20 73 70 6f 74 20 66 6f 72 20 61 20 6e 61   a spot for a na
db20: 6d 65 64 0a 70 61 72 61 6d 65 74 65 72 20 77 69  med.parameter wi
db30: 74 68 20 74 68 65 20 6e 61 6d 65 20 41 41 41 41  th the name AAAA
db40: 2e 20 20 4e 61 6d 65 64 20 70 61 72 61 6d 65 74  .  Named paramet
db50: 65 72 73 20 61 72 65 20 61 6c 73 6f 20 6e 75 6d  ers are also num
db60: 62 65 72 65 64 2e 0a 54 68 65 20 6e 75 6d 62 65  bered..The numbe
db70: 72 20 61 73 73 69 67 6e 65 64 20 69 73 20 74 68  r assigned is th
db80: 65 20 6e 65 78 74 20 75 6e 75 73 65 64 20 6e 75  e next unused nu
db90: 6d 62 65 72 2e 20 20 54 6f 20 61 76 6f 69 64 20  mber.  To avoid 
dba0: 63 6f 6e 66 75 73 69 6f 6e 2c 0a 69 74 20 69 73  confusion,.it is
dbb0: 20 62 65 73 74 20 74 6f 20 61 76 6f 69 64 20 6d   best to avoid m
dbc0: 69 78 69 6e 67 20 6e 61 6d 65 64 20 61 6e 64 20  ixing named and 
dbd0: 6e 75 6d 62 65 72 65 64 20 70 61 72 61 6d 65 74  numbered paramet
dbe0: 65 72 73 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a  ers.</td>.</tr>.
dbf0: 3c 74 72 3e 0a 3c 74 64 20 61 6c 69 67 6e 3d 22  <tr>.<td align="
dc00: 72 69 67 68 74 22 20 76 61 6c 69 67 6e 3d 22 74  right" valign="t
dc10: 6f 70 22 3e 3c 62 3e 40 3c 2f 62 3e 3c 69 3e 41  op"><b>@</b><i>A
dc20: 41 41 41 3c 2f 69 3e 3c 2f 74 64 3e 3c 74 64 20  AAA</i></td><td 
dc30: 77 69 64 74 68 3d 22 32 30 22 3e 3c 2f 74 64 3e  width="20"></td>
dc40: 0a 3c 74 64 3e 41 6e 20 22 61 74 22 20 73 69 67  .<td>An "at" sig
dc50: 6e 20 77 6f 72 6b 73 20 65 78 61 63 74 6c 79 20  n works exactly 
dc60: 6c 69 6b 65 20 61 20 63 6f 6c 6f 6e 2e 3c 2f 74  like a colon.</t
dc70: 64 3e 0a 3c 2f 74 72 3e 0a 3c 74 72 3e 0a 3c 74  d>.</tr>.<tr>.<t
dc80: 64 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 20  d align="right" 
dc90: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 3c 62 3e  valign="top"><b>
dca0: 24 3c 2f 62 3e 3c 69 3e 41 41 41 41 3c 2f 69 3e  $</b><i>AAAA</i>
dcb0: 3c 2f 74 64 3e 3c 74 64 20 77 69 64 74 68 3d 22  </td><td width="
dcc0: 32 30 22 3e 3c 2f 74 64 3e 0a 3c 74 64 3e 41 20  20"></td>.<td>A 
dcd0: 64 6f 6c 6c 61 72 2d 73 69 67 6e 20 66 6f 6c 6c  dollar-sign foll
dce0: 6f 77 65 64 20 62 79 20 61 6e 20 69 64 65 6e 74  owed by an ident
dcf0: 69 66 69 65 72 20 6e 61 6d 65 20 61 6c 73 6f 20  ifier name also 
dd00: 68 6f 6c 64 73 20 61 20 73 70 6f 74 20 66 6f 72  holds a spot for
dd10: 20 61 20 6e 61 6d 65 64 0a 70 61 72 61 6d 65 74   a named.paramet
dd20: 65 72 20 77 69 74 68 20 74 68 65 20 6e 61 6d 65  er with the name
dd30: 20 41 41 41 41 2e 20 20 54 68 65 20 69 64 65 6e   AAAA.  The iden
dd40: 74 69 66 69 65 72 20 6e 61 6d 65 20 69 6e 20 74  tifier name in t
dd50: 68 69 73 20 63 61 73 65 20 63 61 6e 20 69 6e 63  his case can inc
dd60: 6c 75 64 65 0a 6f 6e 65 20 6f 72 20 6d 6f 72 65  lude.one or more
dd70: 20 6f 63 63 75 72 72 65 6e 63 65 73 20 6f 66 20   occurrences of 
dd80: 22 3a 3a 22 20 61 6e 64 20 61 20 73 75 66 66 69  "::" and a suffi
dd90: 78 20 65 6e 63 6c 6f 73 65 64 20 69 6e 20 22 28  x enclosed in "(
dda0: 2e 2e 2e 29 22 20 63 6f 6e 74 61 69 6e 69 6e 67  ...)" containing
ddb0: 0a 61 6e 79 20 74 65 78 74 20 61 74 20 61 6c 6c  .any text at all
ddc0: 2e 20 20 54 68 69 73 20 73 79 6e 74 61 78 20 69  .  This syntax i
ddd0: 73 20 74 68 65 20 66 6f 72 6d 20 6f 66 20 61 20  s the form of a 
dde0: 76 61 72 69 61 62 6c 65 20 6e 61 6d 65 20 69 6e  variable name in
ddf0: 20 74 68 65 0a 5b 68 74 74 70 3a 2f 2f 77 77 77   the.[http://www
de00: 2e 74 63 6c 2e 74 6b 2f 20 7c 20 54 63 6c 20 70  .tcl.tk/ | Tcl p
de10: 72 6f 67 72 61 6d 6d 69 6e 67 20 6c 61 6e 67 75  rogramming langu
de20: 61 67 65 5d 2e 20 20 54 68 65 20 70 72 65 73 65  age].  The prese
de30: 6e 63 65 0a 6f 66 20 74 68 69 73 20 73 79 6e 74  nce.of this synt
de40: 61 78 20 72 65 73 75 6c 74 73 20 66 72 6f 6d 20  ax results from 
de50: 74 68 65 20 66 61 63 74 20 74 68 61 74 20 53 51  the fact that SQ
de60: 4c 69 74 65 20 69 73 20 72 65 61 6c 6c 79 20 61  Lite is really a
de70: 20 0a 5b 54 63 6c 20 65 78 74 65 6e 73 69 6f 6e   .[Tcl extension
de80: 5d 20 74 68 61 74 20 68 61 73 20 65 73 63 61 70  ] that has escap
de90: 65 64 20 69 6e 74 6f 20 74 68 65 20 77 69 6c 64  ed into the wild
dea0: 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 2f 74  .</td>.</tr>.</t
deb0: 61 62 6c 65 3e 0a 3c 2f 62 6c 6f 63 6b 71 75 6f  able>.</blockquo
dec0: 74 65 3e 29 5e 0a 0a 3c 70 3e 5e 50 61 72 61 6d  te>)^..<p>^Param
ded0: 65 74 65 72 73 20 74 68 61 74 20 61 72 65 20 6e  eters that are n
dee0: 6f 74 20 61 73 73 69 67 6e 65 64 20 76 61 6c 75  ot assigned valu
def0: 65 73 20 75 73 69 6e 67 0a 5b 73 71 6c 69 74 65  es using.[sqlite
df00: 33 5f 62 69 6e 64 5f 62 6c 6f 62 28 29 20 7c 20  3_bind_blob() | 
df10: 73 71 6c 69 74 65 33 5f 62 69 6e 64 28 29 5d 20  sqlite3_bind()] 
df20: 61 72 65 20 74 72 65 61 74 65 64 0a 61 73 20 4e  are treated.as N
df30: 55 4c 4c 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 68  ULL.</p>..<tcl>h
df40: 64 5f 66 72 61 67 6d 65 6e 74 20 6c 69 6b 65 20  d_fragment like 
df50: 4c 49 4b 45 20 45 53 43 41 50 45 3c 2f 74 63 6c  LIKE ESCAPE</tcl
df60: 3e 0a 3c 68 33 3e 54 68 65 20 4c 49 4b 45 20 61  >.<h3>The LIKE a
df70: 6e 64 20 47 4c 4f 42 20 6f 70 65 72 61 74 6f 72  nd GLOB operator
df80: 73 3c 2f 68 33 3e 0a 3c 70 3e 5e 54 68 65 20 4c  s</h3>.<p>^The L
df90: 49 4b 45 20 6f 70 65 72 61 74 6f 72 20 64 6f 65  IKE operator doe
dfa0: 73 20 61 20 70 61 74 74 65 72 6e 20 6d 61 74 63  s a pattern matc
dfb0: 68 69 6e 67 20 63 6f 6d 70 61 72 69 73 6f 6e 2e  hing comparison.
dfc0: 20 5e 54 68 65 20 6f 70 65 72 61 6e 64 0a 74 6f   ^The operand.to
dfd0: 20 74 68 65 20 72 69 67 68 74 20 6f 66 20 74 68   the right of th
dfe0: 65 20 4c 49 4b 45 20 6f 70 65 72 61 74 6f 72 20  e LIKE operator 
dff0: 63 6f 6e 74 61 69 6e 73 20 74 68 65 20 70 61 74  contains the pat
e000: 74 65 72 6e 20 61 6e 64 20 74 68 65 20 6c 65 66  tern and the lef
e010: 74 20 68 61 6e 64 0a 6f 70 65 72 61 6e 64 20 63  t hand.operand c
e020: 6f 6e 74 61 69 6e 73 20 74 68 65 20 73 74 72 69  ontains the stri
e030: 6e 67 20 74 6f 20 6d 61 74 63 68 20 61 67 61 69  ng to match agai
e040: 6e 73 74 20 74 68 65 20 70 61 74 74 65 72 6e 2e  nst the pattern.
e050: 0a 0a 3c 74 63 6c 3e 68 64 5f 70 75 74 73 20 22  ..<tcl>hd_puts "
e060: 5e 41 20 70 65 72 63 65 6e 74 20 73 79 6d 62 6f  ^A percent symbo
e070: 6c 20 28 5c 22 25 5c 22 29 20 69 6e 20 74 68 65  l (\"%\") in the
e080: 20 4c 49 4b 45 20 70 61 74 74 65 72 6e 20 6d 61   LIKE pattern ma
e090: 74 63 68 65 73 20 61 6e 79 0a 73 65 71 75 65 6e  tches any.sequen
e0a0: 63 65 20 6f 66 20 7a 65 72 6f 20 6f 72 20 6d 6f  ce of zero or mo
e0b0: 72 65 20 63 68 61 72 61 63 74 65 72 73 20 69 6e  re characters in
e0c0: 20 74 68 65 20 73 74 72 69 6e 67 2e 20 20 5e 41   the string.  ^A
e0d0: 6e 20 75 6e 64 65 72 73 63 6f 72 65 0a 28 5c 22  n underscore.(\"
e0e0: 5f 5c 22 29 20 69 6e 20 74 68 65 20 4c 49 4b 45  _\") in the LIKE
e0f0: 20 70 61 74 74 65 72 6e 20 6d 61 74 63 68 65 73   pattern matches
e100: 20 61 6e 79 20 73 69 6e 67 6c 65 20 63 68 61 72   any single char
e110: 61 63 74 65 72 20 69 6e 20 74 68 65 0a 73 74 72  acter in the.str
e120: 69 6e 67 2e 20 20 5e 28 41 6e 79 20 6f 74 68 65  ing.  ^(Any othe
e130: 72 20 63 68 61 72 61 63 74 65 72 20 6d 61 74 63  r character matc
e140: 68 65 73 20 69 74 73 65 6c 66 20 6f 72 20 69 74  hes itself or it
e150: 73 20 6c 6f 77 65 72 2f 75 70 70 65 72 20 63 61  s lower/upper ca
e160: 73 65 0a 65 71 75 69 76 61 6c 65 6e 74 20 28 69  se.equivalent (i
e170: 2e 65 2e 20 63 61 73 65 2d 69 6e 73 65 6e 73 69  .e. case-insensi
e180: 74 69 76 65 20 6d 61 74 63 68 69 6e 67 29 2e 29  tive matching).)
e190: 5e 20 20 28 41 20 62 75 67 3a 20 5e 53 51 4c 69  ^  (A bug: ^SQLi
e1a0: 74 65 20 6f 6e 6c 79 0a 75 6e 64 65 72 73 74 61  te only.understa
e1b0: 6e 64 73 20 75 70 70 65 72 2f 6c 6f 77 65 72 20  nds upper/lower 
e1c0: 63 61 73 65 20 66 6f 72 20 41 53 43 49 49 20 63  case for ASCII c
e1d0: 68 61 72 61 63 74 65 72 73 20 62 79 20 64 65 66  haracters by def
e1e0: 61 75 6c 74 2e 20 20 5e 54 68 65 0a 4c 49 4b 45  ault.  ^The.LIKE
e1f0: 20 6f 70 65 72 61 74 6f 72 20 69 73 20 63 61 73   operator is cas
e200: 65 20 73 65 6e 73 69 74 69 76 65 20 62 79 20 64  e sensitive by d
e210: 65 66 61 75 6c 74 20 66 6f 72 20 75 6e 69 63 6f  efault for unico
e220: 64 65 20 63 68 61 72 61 63 74 65 72 73 20 74 68  de characters th
e230: 61 74 20 61 72 65 0a 62 65 79 6f 6e 64 20 74 68  at are.beyond th
e240: 65 20 41 53 43 49 49 20 72 61 6e 67 65 2e 20 20  e ASCII range.  
e250: 46 6f 72 20 65 78 61 6d 70 6c 65 2c 0a 5e 74 68  For example,.^th
e260: 65 20 65 78 70 72 65 73 73 69 6f 6e 20 3c 62 3e  e expression <b>
e270: 27 61 27 26 6e 62 73 70 3b 4c 49 4b 45 26 6e 62  'a'&nbsp;LIKE&nb
e280: 73 70 3b 27 41 27 3c 2f 62 3e 0a 69 73 20 54 52  sp;'A'</b>.is TR
e290: 55 45 20 62 75 74 20 3c 62 3e 27 26 61 65 6c 69  UE but <b>'&aeli
e2a0: 67 3b 27 26 6e 62 73 70 3b 4c 49 4b 45 26 6e 62  g;'&nbsp;LIKE&nb
e2b0: 73 70 3b 27 26 41 45 6c 69 67 3b 27 3c 2f 62 3e  sp;'&AElig;'</b>
e2c0: 20 69 73 20 46 41 4c 53 45 2e 29 3c 70 3e 22 3c   is FALSE.)<p>"<
e2d0: 2f 74 63 6c 3e 0a 0a 3c 70 3e 5e 49 66 20 74 68  /tcl>..<p>^If th
e2e0: 65 20 6f 70 74 69 6f 6e 61 6c 20 45 53 43 41 50  e optional ESCAP
e2f0: 45 20 63 6c 61 75 73 65 20 69 73 20 70 72 65 73  E clause is pres
e300: 65 6e 74 2c 20 74 68 65 6e 20 74 68 65 20 65 78  ent, then the ex
e310: 70 72 65 73 73 69 6f 6e 0a 66 6f 6c 6c 6f 77 69  pression.followi
e320: 6e 67 20 74 68 65 20 45 53 43 41 50 45 20 6b 65  ng the ESCAPE ke
e330: 79 77 6f 72 64 20 6d 75 73 74 20 65 76 61 6c 75  yword must evalu
e340: 61 74 65 20 74 6f 20 61 20 73 74 72 69 6e 67 20  ate to a string 
e350: 63 6f 6e 73 69 73 74 69 6e 67 20 6f 66 0a 61 20  consisting of.a 
e360: 73 69 6e 67 6c 65 20 63 68 61 72 61 63 74 65 72  single character
e370: 2e 20 5e 54 68 69 73 20 63 68 61 72 61 63 74 65  . ^This characte
e380: 72 20 6d 61 79 20 62 65 20 75 73 65 64 20 69 6e  r may be used in
e390: 20 74 68 65 20 4c 49 4b 45 20 70 61 74 74 65 72   the LIKE patter
e3a0: 6e 0a 74 6f 20 69 6e 63 6c 75 64 65 20 6c 69 74  n.to include lit
e3b0: 65 72 61 6c 20 70 65 72 63 65 6e 74 20 6f 72 20  eral percent or 
e3c0: 75 6e 64 65 72 73 63 6f 72 65 20 63 68 61 72 61  underscore chara
e3d0: 63 74 65 72 73 2e 20 5e 54 68 65 20 65 73 63 61  cters. ^The esca
e3e0: 70 65 0a 63 68 61 72 61 63 74 65 72 20 66 6f 6c  pe.character fol
e3f0: 6c 6f 77 65 64 20 62 79 20 61 20 70 65 72 63 65  lowed by a perce
e400: 6e 74 20 73 79 6d 62 6f 6c 20 28 25 29 2c 20 75  nt symbol (%), u
e410: 6e 64 65 72 73 63 6f 72 65 20 28 5f 29 2c 20 6f  nderscore (_), o
e420: 72 20 61 20 73 65 63 6f 6e 64 0a 69 6e 73 74 61  r a second.insta
e430: 6e 63 65 20 6f 66 20 74 68 65 20 65 73 63 61 70  nce of the escap
e440: 65 20 63 68 61 72 61 63 74 65 72 20 69 74 73 65  e character itse
e450: 6c 66 20 6d 61 74 63 68 65 73 20 61 0a 6c 69 74  lf matches a.lit
e460: 65 72 61 6c 20 70 65 72 63 65 6e 74 20 73 79 6d  eral percent sym
e470: 62 6f 6c 2c 20 75 6e 64 65 72 73 63 6f 72 65 2c  bol, underscore,
e480: 20 6f 72 20 61 20 73 69 6e 67 6c 65 20 65 73 63   or a single esc
e490: 61 70 65 20 63 68 61 72 61 63 74 65 72 2c 0a 72  ape character,.r
e4a0: 65 73 70 65 63 74 69 76 65 6c 79 2e 0a 0a 3c 70  espectively...<p
e4b0: 3e 5e 54 68 65 20 69 6e 66 69 78 20 4c 49 4b 45  >^The infix LIKE
e4c0: 20 6f 70 65 72 61 74 6f 72 20 69 73 20 69 6d 70   operator is imp
e4d0: 6c 65 6d 65 6e 74 65 64 20 62 79 20 63 61 6c 6c  lemented by call
e4e0: 69 6e 67 20 74 68 65 0a 61 70 70 6c 69 63 61 74  ing the.applicat
e4f0: 69 6f 6e 2d 64 65 66 69 6e 65 64 20 53 51 4c 20  ion-defined SQL 
e500: 66 75 6e 63 74 69 6f 6e 73 20 5b 6c 69 6b 65 28  functions [like(
e510: 3c 69 3e 59 3c 2f 69 3e 2c 3c 69 3e 58 3c 2f 69  <i>Y</i>,<i>X</i
e520: 3e 29 5d 20 6f 72 0a 5b 6c 69 6b 65 28 3c 69 3e  >)] or.[like(<i>
e530: 59 3c 2f 69 3e 2c 3c 69 3e 58 3c 2f 69 3e 2c 3c  Y</i>,<i>X</i>,<
e540: 69 3e 5a 3c 2f 69 3e 29 5d 3c 2f 61 3e 2e 3c 2f  i>Z</i>)]</a>.</
e550: 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20 4c 49 4b 45  p>..<p>^The LIKE
e560: 20 6f 70 65 72 61 74 6f 72 20 63 61 6e 20 62 65   operator can be
e570: 20 6d 61 64 65 20 63 61 73 65 20 73 65 6e 73 69   made case sensi
e580: 74 69 76 65 20 75 73 69 6e 67 20 74 68 65 0a 5b  tive using the.[
e590: 63 61 73 65 5f 73 65 6e 73 69 74 69 76 65 5f 6c  case_sensitive_l
e5a0: 69 6b 65 20 70 72 61 67 6d 61 5d 2e 3c 2f 70 3e  ike pragma].</p>
e5b0: 0a 0a 3c 74 63 6c 3e 68 64 5f 66 72 61 67 6d 65  ..<tcl>hd_fragme
e5c0: 6e 74 20 67 6c 6f 62 20 47 4c 4f 42 3c 2f 74 63  nt glob GLOB</tc
e5d0: 6c 3e 0a 3c 70 3e 5e 54 68 65 20 47 4c 4f 42 20  l>.<p>^The GLOB 
e5e0: 6f 70 65 72 61 74 6f 72 20 69 73 20 73 69 6d 69  operator is simi
e5f0: 6c 61 72 20 74 6f 20 4c 49 4b 45 20 62 75 74 20  lar to LIKE but 
e600: 75 73 65 73 20 74 68 65 20 55 6e 69 78 0a 66 69  uses the Unix.fi
e610: 6c 65 20 67 6c 6f 62 62 69 6e 67 20 73 79 6e 74  le globbing synt
e620: 61 78 20 66 6f 72 20 69 74 73 20 77 69 6c 64 63  ax for its wildc
e630: 61 72 64 73 2e 20 20 5e 41 6c 73 6f 2c 20 47 4c  ards.  ^Also, GL
e640: 4f 42 20 69 73 20 63 61 73 65 0a 73 65 6e 73 69  OB is case.sensi
e650: 74 69 76 65 2c 20 75 6e 6c 69 6b 65 20 4c 49 4b  tive, unlike LIK
e660: 45 2e 20 20 5e 42 6f 74 68 20 47 4c 4f 42 20 61  E.  ^Both GLOB a
e670: 6e 64 20 4c 49 4b 45 20 6d 61 79 20 62 65 20 70  nd LIKE may be p
e680: 72 65 63 65 64 65 64 20 62 79 0a 74 68 65 20 4e  receded by.the N
e690: 4f 54 20 6b 65 79 77 6f 72 64 20 74 6f 20 69 6e  OT keyword to in
e6a0: 76 65 72 74 20 74 68 65 20 73 65 6e 73 65 20 6f  vert the sense o
e6b0: 66 20 74 68 65 20 74 65 73 74 2e 20 20 5e 54 68  f the test.  ^Th
e6c0: 65 20 69 6e 66 69 78 20 47 4c 4f 42 20 0a 6f 70  e infix GLOB .op
e6d0: 65 72 61 74 6f 72 20 69 73 20 69 6d 70 6c 65 6d  erator is implem
e6e0: 65 6e 74 65 64 20 62 79 20 63 61 6c 6c 69 6e 67  ented by calling
e6f0: 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 0a 5b 67   the function.[g
e700: 6c 6f 62 28 3c 69 3e 59 3c 2f 69 3e 2c 3c 69 3e  lob(<i>Y</i>,<i>
e710: 58 3c 2f 69 3e 29 5d 20 61 6e 64 20 63 61 6e 20  X</i>)] and can 
e720: 62 65 20 6d 6f 64 69 66 69 65 64 20 62 79 20 6f  be modified by o
e730: 76 65 72 72 69 64 69 6e 67 0a 74 68 61 74 20 66  verriding.that f
e740: 75 6e 63 74 69 6f 6e 2e 3c 2f 70 3e 0a 0a 3c 74  unction.</p>..<t
e750: 63 6c 3e 68 64 5f 66 72 61 67 6d 65 6e 74 20 72  cl>hd_fragment r
e760: 65 67 65 78 70 20 52 45 47 45 58 50 3c 2f 74 63  egexp REGEXP</tc
e770: 6c 3e 0a 3c 70 3e 5e 54 68 65 20 52 45 47 45 58  l>.<p>^The REGEX
e780: 50 20 6f 70 65 72 61 74 6f 72 20 69 73 20 61 20  P operator is a 
e790: 73 70 65 63 69 61 6c 20 73 79 6e 74 61 78 20 66  special syntax f
e7a0: 6f 72 20 74 68 65 20 72 65 67 65 78 70 28 29 0a  or the regexp().
e7b0: 75 73 65 72 20 66 75 6e 63 74 69 6f 6e 2e 20 20  user function.  
e7c0: 5e 4e 6f 20 72 65 67 65 78 70 28 29 20 75 73 65  ^No regexp() use
e7d0: 72 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 64 65  r function is de
e7e0: 66 69 6e 65 64 20 62 79 20 64 65 66 61 75 6c 74  fined by default
e7f0: 0a 61 6e 64 20 73 6f 20 75 73 65 20 6f 66 20 74  .and so use of t
e800: 68 65 20 52 45 47 45 58 50 20 6f 70 65 72 61 74  he REGEXP operat
e810: 6f 72 20 77 69 6c 6c 20 6e 6f 72 6d 61 6c 6c 79  or will normally
e820: 20 72 65 73 75 6c 74 20 69 6e 20 61 6e 0a 65 72   result in an.er
e830: 72 6f 72 20 6d 65 73 73 61 67 65 2e 20 20 5e 49  ror message.  ^I
e840: 66 20 61 20 5b 61 70 70 6c 69 63 61 74 69 6f 6e  f a [application
e850: 2d 64 65 66 69 6e 65 64 20 53 51 4c 20 66 75 6e  -defined SQL fun
e860: 63 74 69 6f 6e 5d 20 6e 61 6d 65 64 20 22 72 65  ction] named "re
e870: 67 65 78 70 22 0a 69 73 20 61 64 64 65 64 20 61  gexp".is added a
e880: 74 20 72 75 6e 2d 74 69 6d 65 2c 20 74 68 61 74  t run-time, that
e890: 20 66 75 6e 63 74 69 6f 6e 20 77 69 6c 6c 20 62   function will b
e8a0: 65 20 63 61 6c 6c 65 64 20 69 6e 20 6f 72 64 65  e called in orde
e8b0: 72 0a 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 74  r.to implement t
e8c0: 68 65 20 52 45 47 45 58 50 20 6f 70 65 72 61 74  he REGEXP operat
e8d0: 6f 72 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 68 64  or.</p>..<tcl>hd
e8e0: 5f 66 72 61 67 6d 65 6e 74 20 6d 61 74 63 68 20  _fragment match 
e8f0: 4d 41 54 43 48 3c 2f 74 63 6c 3e 0a 3c 70 3e 5e  MATCH</tcl>.<p>^
e900: 54 68 65 20 4d 41 54 43 48 20 6f 70 65 72 61 74  The MATCH operat
e910: 6f 72 20 69 73 20 61 20 73 70 65 63 69 61 6c 20  or is a special 
e920: 73 79 6e 74 61 78 20 66 6f 72 20 74 68 65 20 6d  syntax for the m
e930: 61 74 63 68 28 29 0a 61 70 70 6c 69 63 61 74 69  atch().applicati
e940: 6f 6e 2d 64 65 66 69 6e 65 64 20 66 75 6e 63 74  on-defined funct
e950: 69 6f 6e 2e 20 20 5e 54 68 65 20 64 65 66 61 75  ion.  ^The defau
e960: 6c 74 20 6d 61 74 63 68 28 29 20 66 75 6e 63 74  lt match() funct
e970: 69 6f 6e 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  ion implementati
e980: 6f 6e 0a 72 61 69 73 65 73 20 61 6e 20 65 78 63  on.raises an exc
e990: 65 70 74 69 6f 6e 20 61 6e 64 20 69 73 20 6e 6f  eption and is no
e9a0: 74 20 72 65 61 6c 6c 79 20 75 73 65 66 75 6c 20  t really useful 
e9b0: 66 6f 72 20 61 6e 79 74 68 69 6e 67 2e 0a 5e 42  for anything..^B
e9c0: 75 74 20 65 78 74 65 6e 73 69 6f 6e 73 20 63 61  ut extensions ca
e9d0: 6e 20 6f 76 65 72 72 69 64 65 20 74 68 65 20 6d  n override the m
e9e0: 61 74 63 68 28 29 20 66 75 6e 63 74 69 6f 6e 20  atch() function 
e9f0: 77 69 74 68 20 6d 6f 72 65 0a 68 65 6c 70 66 75  with more.helpfu
ea00: 6c 20 6c 6f 67 69 63 2e 3c 2f 70 3e 0a 0a 3c 74  l logic.</p>..<t
ea10: 63 6c 3e 68 64 5f 66 72 61 67 6d 65 6e 74 20 62  cl>hd_fragment b
ea20: 65 74 77 65 65 6e 20 42 45 54 57 45 45 4e 3c 2f  etween BETWEEN</
ea30: 74 63 6c 3e 0a 3c 68 33 3e 54 68 65 20 42 45 54  tcl>.<h3>The BET
ea40: 57 45 45 4e 20 6f 70 65 72 61 74 6f 72 3c 2f 68  WEEN operator</h
ea50: 33 3e 0a 3c 70 3e 5e 28 54 68 65 20 42 45 54 57  3>.<p>^(The BETW
ea60: 45 45 4e 20 6f 70 65 72 61 74 6f 72 20 69 73 20  EEN operator is 
ea70: 6c 6f 67 69 63 61 6c 6c 79 20 65 71 75 69 76 61  logically equiva
ea80: 6c 65 6e 74 20 74 6f 20 61 20 70 61 69 72 20 6f  lent to a pair o
ea90: 66 20 63 6f 6d 70 61 72 69 73 6f 6e 73 2e 0a 22  f comparisons.."
eaa0: 3c 69 3e 78 3c 2f 69 3e 20 3c 62 3e 42 45 54 57  <i>x</i> <b>BETW
eab0: 45 45 4e 3c 2f 62 3e 20 3c 69 3e 79 3c 2f 69 3e  EEN</b> <i>y</i>
eac0: 20 3c 62 3e 41 4e 44 3c 2f 62 3e 20 3c 69 3e 7a   <b>AND</b> <i>z
ead0: 3c 2f 69 3e 22 20 69 73 20 0a 65 71 75 69 76 61  </i>" is .equiva
eae0: 6c 65 6e 74 20 74 6f 20 0a 22 3c 69 3e 78 3c 2f  lent to ."<i>x</
eaf0: 69 3e 3c 62 3e 26 67 74 3b 3d 3c 2f 62 3e 3c 69  i><b>&gt;=</b><i
eb00: 3e 79 3c 2f 69 3e 20 3c 62 3e 41 4e 44 3c 2f 62  >y</i> <b>AND</b
eb10: 3e 20 3c 69 3e 78 3c 2f 69 3e 3c 62 3e 26 6c 74  > <i>x</i><b>&lt
eb20: 3b 3d 3c 2f 62 3e 3c 69 3e 7a 3c 2f 69 3e 22 20  ;=</b><i>z</i>" 
eb30: 65 78 63 65 70 74 0a 74 68 61 74 20 77 69 74 68  except.that with
eb40: 20 42 45 54 57 45 45 4e 2c 20 74 68 65 20 3c 69   BETWEEN, the <i
eb50: 3e 78 3c 2f 69 3e 20 65 78 70 72 65 73 73 69 6f  >x</i> expressio
eb60: 6e 20 69 73 20 6f 6e 6c 79 20 65 76 61 6c 75 61  n is only evalua
eb70: 74 65 64 20 6f 6e 63 65 2e 29 5e 0a 5e 54 68 65  ted once.)^.^The
eb80: 20 70 72 65 63 65 64 65 6e 63 65 20 6f 66 20 74   precedence of t
eb90: 68 65 20 42 45 54 57 45 45 4e 20 6f 70 65 72 61  he BETWEEN opera
eba0: 74 6f 72 20 69 73 20 74 68 65 20 73 61 6d 65 20  tor is the same 
ebb0: 61 73 20 74 68 65 20 70 72 65 63 65 64 65 6e 63  as the precedenc
ebc0: 65 0a 61 73 20 6f 70 65 72 61 74 6f 72 73 20 3c  e.as operators <
ebd0: 62 3e 3d 3d 3c 2f 62 3e 20 61 6e 64 20 3c 62 3e  b>==</b> and <b>
ebe0: 21 3d 3c 2f 62 3e 20 61 6e 64 20 3c 62 3e 4c 49  !=</b> and <b>LI
ebf0: 4b 45 3c 2f 62 3e 20 61 6e 64 20 67 72 6f 75 70  KE</b> and group
ec00: 73 20 6c 65 66 74 20 74 6f 20 72 69 67 68 74 2e  s left to right.
ec10: 0a 0a 3c 74 63 6c 3e 68 64 5f 66 72 61 67 6d 65  ..<tcl>hd_fragme
ec20: 6e 74 20 63 61 73 65 20 7b 43 41 53 45 20 65 78  nt case {CASE ex
ec30: 70 72 65 73 73 69 6f 6e 7d 3c 2f 74 63 6c 3e 0a  pression}</tcl>.
ec40: 3c 68 33 3e 54 68 65 20 43 41 53 45 20 65 78 70  <h3>The CASE exp
ec50: 72 65 73 73 69 6f 6e 3c 2f 68 33 3e 0a 3c 70 3e  ression</h3>.<p>
ec60: 41 20 43 41 53 45 20 65 78 70 72 65 73 73 69 6f  A CASE expressio
ec70: 6e 20 73 65 72 76 65 73 20 61 20 72 6f 6c 65 20  n serves a role 
ec80: 73 69 6d 69 6c 61 72 20 74 6f 20 49 46 2d 54 48  similar to IF-TH
ec90: 45 4e 2d 45 4c 53 45 20 69 6e 20 6f 74 68 65 72  EN-ELSE in other
eca0: 0a 70 72 6f 67 72 61 6d 6d 69 6e 67 20 6c 61 6e  .programming lan
ecb0: 67 75 61 67 65 73 2e 20 20 5e 57 48 45 4e 20 65  guages.  ^WHEN e
ecc0: 78 70 72 65 73 73 69 6f 6e 73 20 61 72 65 20 65  xpressions are e
ecd0: 76 61 6c 75 61 74 65 64 20 66 72 6f 6d 20 6c 65  valuated from le
ece0: 66 74 20 74 6f 0a 72 69 67 68 74 20 75 6e 74 69  ft to.right unti
ecf0: 6c 20 6f 6e 65 20 69 73 20 66 6f 75 6e 64 20 74  l one is found t
ed00: 68 61 74 20 69 73 20 74 72 75 65 2c 20 61 74 20  hat is true, at 
ed10: 77 68 69 63 68 20 70 6f 69 6e 74 20 74 68 65 20  which point the 
ed20: 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 0a 54 48  corresponding.TH
ed30: 45 4e 20 74 65 72 6d 20 62 65 63 6f 6d 65 73 20  EN term becomes 
ed40: 74 68 65 20 72 65 73 75 6c 74 2e 20 20 5e 49 66  the result.  ^If
ed50: 20 6e 6f 20 57 48 45 4e 20 65 78 70 72 65 73 73   no WHEN express
ed60: 69 6f 6e 20 69 73 20 74 72 75 65 20 74 68 65 6e  ion is true then
ed70: 20 74 68 65 20 45 4c 53 45 20 0a 63 6c 61 75 73   the ELSE .claus
ed80: 65 20 64 65 74 65 72 6d 69 6e 65 73 20 74 68 65  e determines the
ed90: 20 72 65 73 75 6c 74 20 6f 72 20 74 68 65 20 72   result or the r
eda0: 65 73 75 6c 74 20 69 73 20 4e 55 4c 4c 20 69 66  esult is NULL if
edb0: 20 74 68 65 72 65 20 69 73 20 6e 6f 20 45 4c 53   there is no ELS
edc0: 45 20 63 6c 61 75 73 65 2e 0a 3c 2f 70 3e 0a 0a  E clause..</p>..
edd0: 3c 70 3e 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20  <p>The optional 
ede0: 65 78 70 72 65 73 73 69 6f 6e 20 74 68 61 74 20  expression that 
edf0: 6f 63 63 75 72 73 20 69 6e 20 62 65 74 77 65 65  occurs in betwee
ee00: 6e 20 74 68 65 20 43 41 53 45 20 6b 65 79 77 6f  n the CASE keywo
ee10: 72 64 20 61 6e 64 20 74 68 65 0a 66 69 72 73 74  rd and the.first
ee20: 20 57 48 45 4e 20 6b 65 79 77 6f 72 64 20 69 73   WHEN keyword is
ee30: 20 74 68 65 20 22 62 61 73 65 22 20 65 78 70 72   the "base" expr
ee40: 65 73 73 69 6f 6e 2e 20 20 5e 54 68 65 72 65 20  ession.  ^There 
ee50: 61 72 65 20 74 77 6f 20 62 61 73 69 63 20 66 6f  are two basic fo
ee60: 72 6d 73 0a 6f 66 20 61 20 43 41 53 45 20 65 78  rms.of a CASE ex
ee70: 70 72 65 73 73 69 6f 6e 3a 20 74 68 6f 73 65 20  pression: those 
ee80: 77 69 74 68 20 61 6e 64 20 77 69 74 68 6f 75 74  with and without
ee90: 20 61 20 62 61 73 65 20 65 78 70 72 65 73 73 69   a base expressi
eea0: 6f 6e 2e 0a 5e 49 6e 20 61 20 43 41 53 45 20 77  on..^In a CASE w
eeb0: 69 74 68 6f 75 74 20 61 20 62 61 73 65 20 65 78  ithout a base ex
eec0: 70 72 65 73 73 69 6f 6e 2c 20 65 61 63 68 20 57  pression, each W
eed0: 48 45 4e 20 65 78 70 72 65 73 73 69 6f 6e 20 69  HEN expression i
eee0: 73 20 65 76 61 6c 75 61 74 65 64 0a 61 73 20 61  s evaluated.as a
eef0: 20 62 6f 6f 6c 65 61 6e 20 61 6e 64 20 74 68 65   boolean and the
ef00: 20 6f 76 65 72 61 6c 6c 20 72 65 73 75 6c 74 20   overall result 
ef10: 69 73 20 64 65 74 65 72 6d 69 6e 65 64 20 62 79  is determined by
ef20: 20 66 69 72 73 74 20 57 48 45 4e 20 65 78 70 72   first WHEN expr
ef30: 65 73 73 69 6f 6e 0a 74 68 61 74 20 69 73 20 74  ession.that is t
ef40: 72 75 65 2e 0a 5e 49 6e 20 61 20 43 41 53 45 20  rue..^In a CASE 
ef50: 77 69 74 68 20 61 20 62 61 73 65 20 65 78 70 72  with a base expr
ef60: 65 73 73 69 6f 6e 2c 20 74 68 65 20 62 61 73 65  ession, the base
ef70: 20 65 78 70 72 65 73 73 69 6f 6e 20 69 73 20 65   expression is e
ef80: 76 61 6c 75 61 74 65 64 20 6a 75 73 74 0a 6f 6e  valuated just.on
ef90: 63 65 20 61 6e 64 20 74 68 65 20 72 65 73 75 6c  ce and the resul
efa0: 74 20 69 73 20 63 6f 6d 70 61 72 65 64 20 61 67  t is compared ag
efb0: 61 69 6e 73 74 20 65 61 63 68 20 57 48 45 4e 20  ainst each WHEN 
efc0: 65 78 70 72 65 73 73 69 6f 6e 20 75 6e 74 69 6c  expression until
efd0: 20 61 20 0a 6d 61 74 63 68 20 69 73 20 66 6f 75   a .match is fou
efe0: 6e 64 2e 0a 5e 57 68 65 6e 20 63 6f 6d 70 61 72  nd..^When compar
eff0: 69 6e 67 20 61 20 62 61 73 65 20 65 78 70 72 65  ing a base expre
f000: 73 73 69 6f 6e 20 61 67 61 69 6e 73 74 20 61 20  ssion against a 
f010: 57 48 45 4e 20 65 78 70 72 65 73 73 69 6f 6e 2c  WHEN expression,
f020: 20 74 68 65 20 73 61 6d 65 0a 63 6f 6c 6c 61 74   the same.collat
f030: 69 6e 67 20 73 65 71 75 65 6e 63 65 2c 20 61 66  ing sequence, af
f040: 66 69 6e 69 74 79 2c 20 61 6e 64 20 4e 55 4c 4c  finity, and NULL
f050: 2d 68 61 6e 64 6c 69 6e 67 20 72 75 6c 65 73 20  -handling rules 
f060: 61 70 70 6c 79 20 61 73 20 69 66 20 74 68 65 0a  apply as if the.
f070: 62 61 73 65 20 65 78 70 72 65 73 73 69 6f 6e 20  base expression 
f080: 61 6e 64 20 57 48 45 4e 20 65 78 70 72 65 73 73  and WHEN express
f090: 69 6f 6e 20 61 72 65 20 72 65 73 70 65 63 74 69  ion are respecti
f0a0: 76 65 6c 79 20 74 68 65 20 6c 65 66 74 2d 20 61  vely the left- a
f0b0: 6e 64 0a 72 69 67 68 74 2d 68 61 6e 64 20 6f 70  nd.right-hand op
f0c0: 65 72 61 6e 64 73 20 6f 66 20 61 6e 20 3c 62 69  erands of an <bi
f0d0: 67 3e 3c 62 3e 3d 3c 2f 62 3e 3c 2f 62 69 67 3e  g><b>=</b></big>
f0e0: 20 6f 70 65 72 61 74 6f 72 2e 3c 2f 70 3e 0a 0a   operator.</p>..
f0f0: 3c 70 3e 5e 28 41 73 73 75 6d 69 6e 67 20 74 68  <p>^(Assuming th
f100: 65 20 73 75 62 65 78 70 72 65 73 73 69 6f 6e 73  e subexpressions
f110: 20 68 61 76 65 20 6e 6f 20 73 69 64 65 2d 65 66   have no side-ef
f120: 66 65 63 74 73 2c 20 74 68 65 20 66 6f 6c 6c 6f  fects, the follo
f130: 77 69 6e 67 0a 74 77 6f 20 65 78 70 72 65 73 73  wing.two express
f140: 69 6f 6e 73 20 61 72 65 20 65 71 75 69 76 61 6c  ions are equival
f150: 65 6e 74 3a 3c 2f 70 3e 0a 0a 3c 75 6c 3e 0a 3c  ent:</p>..<ul>.<
f160: 6c 69 3e 43 41 53 45 20 78 20 57 48 45 4e 20 77  li>CASE x WHEN w
f170: 31 20 54 48 45 4e 20 72 31 20 57 48 45 4e 20 77  1 THEN r1 WHEN w
f180: 32 20 54 48 45 4e 20 72 32 20 45 4c 53 45 20 72  2 THEN r2 ELSE r
f190: 33 20 45 4e 44 0a 3c 6c 69 3e 43 41 53 45 20 57  3 END.<li>CASE W
f1a0: 48 45 4e 20 78 3d 77 31 20 54 48 45 4e 20 72 31  HEN x=w1 THEN r1
f1b0: 20 57 48 45 4e 20 78 3d 77 32 20 54 48 45 4e 20   WHEN x=w2 THEN 
f1c0: 72 32 20 45 4c 53 45 20 72 33 20 45 4e 44 0a 3c  r2 ELSE r3 END.<
f1d0: 2f 75 6c 3e 29 5e 0a 0a 3c 70 3e 5e 54 68 65 20  /ul>)^..<p>^The 
f1e0: 6f 6e 6c 79 20 64 69 66 66 65 72 65 6e 63 65 20  only difference 
f1f0: 62 65 74 77 65 65 6e 20 74 68 65 20 74 77 6f 20  between the two 
f200: 43 41 53 45 20 65 78 70 72 65 73 73 69 6f 6e 73  CASE expressions
f210: 20 73 68 6f 77 6e 20 61 62 6f 76 65 0a 69 73 20   shown above.is 
f220: 74 68 61 74 20 74 68 65 20 3c 69 3e 78 3c 2f 69  that the <i>x</i
f230: 3e 20 65 78 70 72 65 73 73 69 6f 6e 20 69 73 20  > expression is 
f240: 65 76 61 6c 75 61 74 65 64 0a 65 78 61 63 74 6c  evaluated.exactl
f250: 79 20 6f 6e 63 65 20 69 6e 20 74 68 65 20 66 69  y once in the fi
f260: 72 73 74 20 65 78 61 6d 70 6c 65 20 62 75 74 20  rst example but 
f270: 6d 69 67 68 74 20 62 65 20 65 76 61 6c 75 61 74  might be evaluat
f280: 65 64 20 6d 75 6c 74 69 70 6c 65 20 74 69 6d 65  ed multiple time
f290: 73 0a 69 6e 20 74 68 65 20 73 65 63 6f 6e 64 2e  s.in the second.
f2a0: 3c 2f 70 3e 0a 0a 3c 70 3e 5e 41 20 4e 55 4c 4c  </p>..<p>^A NULL
f2b0: 20 72 65 73 75 6c 74 20 69 73 20 63 6f 6e 73 69   result is consi
f2c0: 64 65 72 65 64 20 66 61 6c 73 65 20 77 68 65 6e  dered false when
f2d0: 20 65 76 61 6c 75 61 74 69 6e 67 20 57 48 45 4e   evaluating WHEN
f2e0: 20 74 65 72 6d 73 2e 0a 5e 49 66 20 74 68 65 20   terms..^If the 
f2f0: 62 61 73 65 20 65 78 70 72 65 73 73 69 6f 6e 20  base expression 
f300: 69 73 20 4e 55 4c 4c 20 74 68 65 6e 20 74 68 65  is NULL then the
f310: 20 72 65 73 75 6c 74 20 6f 66 20 74 68 65 20 43   result of the C
f320: 41 53 45 20 69 73 20 74 68 65 0a 72 65 73 75 6c  ASE is the.resul
f330: 74 20 6f 66 20 74 68 65 20 45 4c 53 45 20 65 78  t of the ELSE ex
f340: 70 72 65 73 73 69 6f 6e 20 69 66 20 69 74 20 65  pression if it e
f350: 78 69 73 74 73 2c 20 6f 72 20 4e 55 4c 4c 20 69  xists, or NULL i
f360: 66 20 74 68 65 20 45 4c 53 45 20 63 6c 61 75 73  f the ELSE claus
f370: 65 0a 69 73 20 6f 6d 69 74 74 65 64 2e 3c 2f 70  e.is omitted.</p
f380: 3e 0a 0a 3c 74 63 6c 3e 68 64 5f 66 72 61 67 6d  >..<tcl>hd_fragm
f390: 65 6e 74 20 69 6e 5f 6f 70 20 7b 49 4e 20 6f 70  ent in_op {IN op
f3a0: 65 72 61 74 6f 72 7d 20 7b 4e 4f 54 20 49 4e 20  erator} {NOT IN 
f3b0: 6f 70 65 72 61 74 6f 72 7d 3c 2f 74 63 6c 3e 0a  operator}</tcl>.
f3c0: 3c 68 33 3e 54 68 65 20 49 4e 20 61 6e 64 20 4e  <h3>The IN and N
f3d0: 4f 54 20 49 4e 20 6f 70 65 72 61 74 6f 72 73 3c  OT IN operators<
f3e0: 2f 68 33 3e 0a 3c 70 3e 5e 54 68 65 20 49 4e 20  /h3>.<p>^The IN 
f3f0: 61 6e 64 20 4e 4f 54 20 49 4e 20 6f 70 65 72 61  and NOT IN opera
f400: 74 6f 72 73 20 74 61 6b 65 20 61 20 73 69 6e 67  tors take a sing
f410: 6c 65 20 73 63 61 6c 61 72 20 6f 70 65 72 61 6e  le scalar operan
f420: 64 20 6f 6e 20 74 68 65 0a 6c 65 66 74 20 61 6e  d on the.left an
f430: 64 20 61 20 76 65 63 74 6f 72 20 6f 70 65 72 61  d a vector opera
f440: 6e 64 20 6f 6e 20 74 68 65 20 72 69 67 68 74 0a  nd on the right.
f450: 66 6f 72 6d 65 64 20 62 79 20 61 6e 20 65 78 70  formed by an exp
f460: 6c 69 63 69 74 20 6c 69 73 74 20 6f 66 20 7a 65  licit list of ze
f470: 72 6f 20 6f 72 20 6d 6f 72 65 20 73 63 61 6c 61  ro or more scala
f480: 72 73 20 6f 72 20 62 79 20 61 20 0a 73 69 6e 67  rs or by a .sing
f490: 6c 65 20 73 75 62 71 75 65 72 79 2e 0a 5e 57 68  le subquery..^Wh
f4a0: 65 6e 20 74 68 65 20 72 69 67 68 74 20 6f 70 65  en the right ope
f4b0: 72 61 6e 64 20 6f 66 20 61 6e 20 49 4e 20 6f 72  rand of an IN or
f4c0: 20 4e 4f 54 20 49 4e 20 6f 70 65 72 61 74 6f 72   NOT IN operator
f4d0: 20 69 73 20 61 20 73 75 62 71 75 65 72 79 2c 20   is a subquery, 
f4e0: 74 68 65 0a 73 75 62 71 75 65 72 79 20 6d 75 73  the.subquery mus
f4f0: 74 20 68 61 76 65 20 61 20 73 69 6e 67 6c 65 20  t have a single 
f500: 72 65 73 75 6c 74 20 63 6f 6c 75 6d 6e 2e 0a 5e  result column..^
f510: 57 68 65 6e 20 74 68 65 20 72 69 67 68 74 20 6f  When the right o
f520: 70 65 72 61 6e 64 20 69 73 20 61 6e 20 65 6d 70  perand is an emp
f530: 74 79 20 73 65 74 2c 20 74 68 65 20 72 65 73 75  ty set, the resu
f540: 6c 74 20 6f 66 20 49 4e 20 69 73 20 66 61 6c 73  lt of IN is fals
f550: 65 20 61 6e 64 20 74 68 65 0a 72 65 73 75 6c 74  e and the.result
f560: 20 6f 66 20 4e 4f 54 20 49 4e 20 69 73 20 74 72   of NOT IN is tr
f570: 75 65 2c 20 72 65 67 61 72 64 6c 65 73 73 20 6f  ue, regardless o
f580: 66 20 74 68 65 20 6c 65 66 74 20 6f 70 65 72 61  f the left opera
f590: 6e 64 20 61 6e 64 20 65 76 65 6e 20 69 66 20 74  nd and even if t
f5a0: 68 65 0a 6c 65 66 74 20 6f 70 65 72 61 6e 64 20  he.left operand 
f5b0: 69 73 20 4e 55 4c 4c 2e 0a 5e 28 54 68 65 20 72  is NULL..^(The r
f5c0: 65 73 75 6c 74 20 6f 66 20 61 6e 20 49 4e 20 6f  esult of an IN o
f5d0: 72 20 4e 4f 54 20 49 4e 20 6f 70 65 72 61 74 6f  r NOT IN operato
f5e0: 72 20 69 73 20 64 65 74 65 72 6d 69 6e 65 64 20  r is determined 
f5f0: 62 79 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  by the following
f600: 0a 6d 61 74 72 69 78 3a 0a 0a 3c 63 65 6e 74 65  .matrix:..<cente
f610: 72 3e 0a 3c 74 61 62 6c 65 20 62 6f 72 64 65 72  r>.<table border
f620: 3d 31 3e 0a 3c 74 72 3e 0a 3c 74 68 3e 4c 65 66  =1>.<tr>.<th>Lef
f630: 74 20 6f 70 65 72 61 6e 64 20 3c 62 72 3e 69 73  t operand <br>is
f640: 20 4e 55 4c 4c 0a 3c 74 68 3e 52 69 67 68 74 20   NULL.<th>Right 
f650: 6f 70 65 72 61 6e 64 20 3c 62 72 3e 63 6f 6e 74  operand <br>cont
f660: 61 69 6e 73 20 4e 55 4c 4c 0a 3c 74 68 3e 52 69  ains NULL.<th>Ri
f670: 67 68 74 20 6f 70 65 72 61 6e 64 20 3c 62 72 3e  ght operand <br>
f680: 69 73 20 61 6e 20 65 6d 70 74 79 20 73 65 74 0a  is an empty set.
f690: 3c 74 68 3e 4c 65 66 74 20 6f 70 65 72 61 6e 64  <th>Left operand
f6a0: 20 66 6f 75 6e 64 20 3c 62 72 3e 77 69 74 68 69   found <br>withi
f6b0: 6e 20 72 69 67 68 74 20 6f 70 65 72 61 6e 64 0a  n right operand.
f6c0: 3c 74 68 3e 52 65 73 75 6c 74 20 6f 66 20 3c 62  <th>Result of <b
f6d0: 72 3e 49 4e 20 6f 70 65 72 61 74 6f 72 0a 3c 74  r>IN operator.<t
f6e0: 68 3e 52 65 73 75 6c 74 20 6f 66 20 3c 62 72 3e  h>Result of <br>
f6f0: 4e 4f 54 20 49 4e 20 6f 70 65 72 61 74 6f 72 0a  NOT IN operator.
f700: 3c 74 72 3e 0a 3c 74 64 20 61 6c 69 67 6e 3d 22  <tr>.<td align="
f710: 63 65 6e 74 65 72 22 3e 6e 6f 0a 3c 74 64 20 61  center">no.<td a
f720: 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 6e 6f  lign="center">no
f730: 0a 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74  .<td align="cent
f740: 65 72 22 3e 6e 6f 0a 3c 74 64 20 61 6c 69 67 6e  er">no.<td align
f750: 3d 22 63 65 6e 74 65 72 22 3e 6e 6f 0a 3c 74 64  ="center">no.<td
f760: 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e   align="center">
f770: 66 61 6c 73 65 0a 3c 74 64 20 61 6c 69 67 6e 3d  false.<td align=
f780: 22 63 65 6e 74 65 72 22 3e 74 72 75 65 0a 3c 74  "center">true.<t
f790: 72 3e 0a 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65  r>.<td align="ce
f7a0: 6e 74 65 72 22 3e 64 6f 65 73 20 6e 6f 74 20 6d  nter">does not m
f7b0: 61 74 74 65 72 0a 3c 74 64 20 61 6c 69 67 6e 3d  atter.<td align=
f7c0: 22 63 65 6e 74 65 72 22 3e 6e 6f 0a 3c 74 64 20  "center">no.<td 
f7d0: 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 79  align="center">y
f7e0: 65 73 0a 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65  es.<td align="ce
f7f0: 6e 74 65 72 22 3e 6e 6f 0a 3c 74 64 20 61 6c 69  nter">no.<td ali
f800: 67 6e 3d 22 63 65 6e 74 65 72 22 3e 66 61 6c 73  gn="center">fals
f810: 65 0a 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e  e.<td align="cen
f820: 74 65 72 22 3e 74 72 75 65 0a 3c 74 72 3e 0a 3c  ter">true.<tr>.<
f830: 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72  td align="center
f840: 22 3e 6e 6f 0a 3c 74 64 20 61 6c 69 67 6e 3d 22  ">no.<td align="
f850: 63 65 6e 74 65 72 22 3e 64 6f 65 73 20 6e 6f 74  center">does not
f860: 20 6d 61 74 74 65 72 0a 3c 74 64 20 61 6c 69 67   matter.<td alig
f870: 6e 3d 22 63 65 6e 74 65 72 22 3e 6e 6f 0a 3c 74  n="center">no.<t
f880: 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22  d align="center"
f890: 3e 79 65 73 0a 3c 74 64 20 61 6c 69 67 6e 3d 22  >yes.<td align="
f8a0: 63 65 6e 74 65 72 22 3e 74 72 75 65 0a 3c 74 64  center">true.<td
f8b0: 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e   align="center">
f8c0: 66 61 6c 73 65 0a 3c 74 72 3e 0a 3c 74 64 20 61  false.<tr>.<td a
f8d0: 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 6e 6f  lign="center">no
f8e0: 0a 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74  .<td align="cent
f8f0: 65 72 22 3e 79 65 73 0a 3c 74 64 20 61 6c 69 67  er">yes.<td alig
f900: 6e 3d 22 63 65 6e 74 65 72 22 3e 6e 6f 0a 3c 74  n="center">no.<t
f910: 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22  d align="center"
f920: 3e 6e 6f 0a 3c 74 64 20 61 6c 69 67 6e 3d 22 63  >no.<td align="c
f930: 65 6e 74 65 72 22 3e 4e 55 4c 4c 0a 3c 74 64 20  enter">NULL.<td 
f940: 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 4e  align="center">N
f950: 55 4c 4c 0a 3c 74 72 3e 0a 3c 74 64 20 61 6c 69  ULL.<tr>.<td ali
f960: 67 6e 3d 22 63 65 6e 74 65 72 22 3e 79 65 73 0a  gn="center">yes.
f970: 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65  <td align="cente
f980: 72 22 3e 64 6f 65 73 20 6e 6f 74 20 6d 61 74 74  r">does not matt
f990: 65 72 0a 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65  er.<td align="ce
f9a0: 6e 74 65 72 22 3e 6e 6f 0a 3c 74 64 20 61 6c 69  nter">no.<td ali
f9b0: 67 6e 3d 22 63 65 6e 74 65 72 22 3e 64 6f 65 73  gn="center">does
f9c0: 20 6e 6f 74 20 6d 61 74 74 65 72 0a 3c 74 64 20   not matter.<td 
f9d0: 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 4e  align="center">N
f9e0: 55 4c 4c 0a 3c 74 64 20 61 6c 69 67 6e 3d 22 63  ULL.<td align="c
f9f0: 65 6e 74 65 72 22 3e 4e 55 4c 4c 0a 3c 2f 74 61  enter">NULL.</ta
fa00: 62 6c 65 3e 0a 3c 2f 63 65 6e 74 65 72 3e 29 5e  ble>.</center>)^
fa10: 0a 0a 3c 70 3e 5e 4e 6f 74 65 20 74 68 61 74 20  ..<p>^Note that 
fa20: 53 51 4c 69 74 65 20 61 6c 6c 6f 77 73 20 74 68  SQLite allows th
fa30: 65 20 70 61 72 65 6e 74 68 65 73 69 7a 65 64 20  e parenthesized 
fa40: 6c 69 73 74 20 6f 66 20 73 63 61 6c 61 72 20 76  list of scalar v
fa50: 61 6c 75 65 73 20 6f 6e 0a 74 68 65 20 72 69 67  alues on.the rig
fa60: 68 74 2d 68 61 6e 64 20 73 69 64 65 20 6f 66 20  ht-hand side of 
fa70: 61 6e 20 49 4e 20 6f 72 20 4e 4f 54 20 49 4e 20  an IN or NOT IN 
fa80: 6f 70 65 72 61 74 6f 72 20 74 6f 20 62 65 20 61  operator to be a
fa90: 6e 20 65 6d 70 74 79 20 6c 69 73 74 20 62 75 74  n empty list but
faa0: 0a 6d 6f 73 74 20 6f 74 68 65 72 20 53 51 4c 20  .most other SQL 
fab0: 64 61 74 61 62 61 73 65 20 64 61 74 61 62 61 73  database databas
fac0: 65 20 65 6e 67 69 6e 65 73 20 61 6e 64 20 74 68  e engines and th
fad0: 65 20 53 51 4c 39 32 20 73 74 61 6e 64 61 72 64  e SQL92 standard
fae0: 20 72 65 71 75 69 72 65 0a 74 68 65 20 6c 69 73   require.the lis
faf0: 74 20 74 6f 20 63 6f 6e 74 61 69 6e 20 61 74 20  t to contain at 
fb00: 6c 65 61 73 74 20 6f 6e 65 20 65 6c 65 6d 65 6e  least one elemen
fb10: 74 2e 3c 2f 70 3e 0a 0a 0a 3c 68 33 3e 54 61 62  t.</p>...<h3>Tab
fb20: 6c 65 20 43 6f 6c 75 6d 6e 20 4e 61 6d 65 73 3c  le Column Names<
fb30: 2f 68 33 3e 0a 3c 70 3e 5e 41 20 63 6f 6c 75 6d  /h3>.<p>^A colum
fb40: 6e 20 6e 61 6d 65 20 63 61 6e 20 62 65 20 61 6e  n name can be an
fb50: 79 20 6f 66 20 74 68 65 20 6e 61 6d 65 73 20 64  y of the names d
fb60: 65 66 69 6e 65 64 20 69 6e 20 74 68 65 20 5b 43  efined in the [C
fb70: 52 45 41 54 45 20 54 41 42 4c 45 5d 0a 73 74 61  REATE TABLE].sta
fb80: 74 65 6d 65 6e 74 20 6f 72 20 6f 6e 65 20 6f 66  tement or one of
fb90: 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 73   the following s
fba0: 70 65 63 69 61 6c 20 69 64 65 6e 74 69 66 69 65  pecial identifie
fbb0: 72 73 3a 20 22 3c 62 3e 52 4f 57 49 44 3c 2f 62  rs: "<b>ROWID</b
fbc0: 3e 22 2c 0a 22 3c 62 3e 4f 49 44 3c 2f 62 3e 22  >",."<b>OID</b>"
fbd0: 2c 20 6f 72 20 22 3c 62 3e 5f 52 4f 57 49 44 5f  , or "<b>_ROWID_
fbe0: 3c 2f 62 3e 22 2e 0a 5e 54 68 65 73 65 20 73 70  </b>"..^These sp
fbf0: 65 63 69 61 6c 20 69 64 65 6e 74 69 66 69 65 72  ecial identifier
fc00: 73 20 61 6c 6c 20 64 65 73 63 72 69 62 65 20 74  s all describe t
fc10: 68 65 0a 75 6e 69 71 75 65 20 69 6e 74 65 67 65  he.unique intege
fc20: 72 20 6b 65 79 20 28 74 68 65 20 5b 72 6f 77 69  r key (the [rowi
fc30: 64 5d 29 20 61 73 73 6f 63 69 61 74 65 64 20 77  d]) associated w
fc40: 69 74 68 20 65 76 65 72 79 20 0a 72 6f 77 20 6f  ith every .row o
fc50: 66 20 65 76 65 72 79 20 74 61 62 6c 65 2e 0a 5e  f every table..^
fc60: 54 68 65 20 73 70 65 63 69 61 6c 20 69 64 65 6e  The special iden
fc70: 74 69 66 69 65 72 73 20 6f 6e 6c 79 20 72 65 66  tifiers only ref
fc80: 65 72 20 74 6f 20 74 68 65 20 72 6f 77 20 6b 65  er to the row ke
fc90: 79 20 69 66 20 74 68 65 20 5b 43 52 45 41 54 45  y if the [CREATE
fca0: 20 54 41 42 4c 45 5d 0a 73 74 61 74 65 6d 65 6e   TABLE].statemen
fcb0: 74 20 64 6f 65 73 20 6e 6f 74 20 64 65 66 69 6e  t does not defin
fcc0: 65 20 61 20 72 65 61 6c 20 63 6f 6c 75 6d 6e 20  e a real column 
fcd0: 77 69 74 68 20 74 68 65 20 73 61 6d 65 20 6e 61  with the same na
fce0: 6d 65 2e 0a 5e 54 68 65 20 72 6f 77 69 64 20 63  me..^The rowid c
fcf0: 61 6e 20 62 65 20 75 73 65 64 20 61 6e 79 77 68  an be used anywh
fd00: 65 72 65 20 61 20 72 65 67 75 6c 61 72 0a 63 6f  ere a regular.co
fd10: 6c 75 6d 6e 20 63 61 6e 20 62 65 20 75 73 65 64  lumn can be used
fd20: 2e 3c 2f 70 3e 0a 0a 3c 68 33 3e 53 75 62 71 75  .</p>..<h3>Subqu
fd30: 65 72 69 65 73 3c 2f 68 33 3e 0a 3c 70 3e 5e 5b  eries</h3>.<p>^[
fd40: 53 45 4c 45 43 54 5d 20 73 74 61 74 65 6d 65 6e  SELECT] statemen
fd50: 74 73 20 63 61 6e 20 61 70 70 65 61 72 20 69 6e  ts can appear in
fd60: 20 65 78 70 72 65 73 73 69 6f 6e 73 20 61 73 20   expressions as 
fd70: 65 69 74 68 65 72 20 74 68 65 0a 72 69 67 68 74  either the.right
fd80: 2d 68 61 6e 64 20 6f 70 65 72 61 6e 64 20 6f 66  -hand operand of
fd90: 20 74 68 65 20 49 4e 20 6f 72 20 4e 4f 54 20 49   the IN or NOT I
fda0: 4e 20 6f 70 65 72 61 74 6f 72 73 2c 20 61 73 20  N operators, as 
fdb0: 61 20 73 63 61 6c 61 72 20 71 75 61 6e 74 69 74  a scalar quantit
fdc0: 79 2c 20 6f 72 0a 61 73 20 74 68 65 20 6f 70 65  y, or.as the ope
fdd0: 72 61 6e 64 20 6f 66 20 61 6e 20 45 58 49 53 54  rand of an EXIST
fde0: 53 20 6f 70 65 72 61 74 6f 72 2e 0a 5e 41 73 20  S operator..^As 
fdf0: 61 20 73 63 61 6c 61 72 20 71 75 61 6e 74 69 74  a scalar quantit
fe00: 79 20 6f 72 20 74 68 65 20 6f 70 65 72 61 6e 64  y or the operand
fe10: 20 6f 66 20 61 6e 20 49 4e 20 6f 72 20 4e 4f 54   of an IN or NOT
fe20: 20 49 4e 20 6f 70 65 72 61 74 6f 72 2c 0a 74 68   IN operator,.th
fe30: 65 20 53 45 4c 45 43 54 20 6d 61 79 20 68 61 76  e SELECT may hav
fe40: 65 20 6f 6e 6c 79 20 61 20 73 69 6e 67 6c 65 20  e only a single 
fe50: 63 6f 6c 75 6d 6e 20 69 6e 20 69 74 73 0a 72 65  column in its.re
fe60: 73 75 6c 74 2e 20 20 5e 43 6f 6d 70 6f 75 6e 64  sult.  ^Compound
fe70: 20 53 45 4c 45 43 54 73 20 28 63 6f 6e 6e 65 63   SELECTs (connec
fe80: 74 65 64 20 77 69 74 68 20 6b 65 79 77 6f 72 64  ted with keyword
fe90: 73 20 6c 69 6b 65 20 55 4e 49 4f 4e 20 6f 72 0a  s like UNION or.
fea0: 45 58 43 45 50 54 29 20 61 72 65 20 61 6c 6c 6f  EXCEPT) are allo
feb0: 77 65 64 20 69 6e 20 61 6e 79 20 73 75 62 71 75  wed in any subqu
fec0: 65 72 79 2e 0a 5e 57 69 74 68 20 74 68 65 20 45  ery..^With the E
fed0: 58 49 53 54 53 20 6f 70 65 72 61 74 6f 72 2c 20  XISTS operator, 
fee0: 74 68 65 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74  the columns in t
fef0: 68 65 20 72 65 73 75 6c 74 20 73 65 74 20 6f 66  he result set of
ff00: 20 74 68 65 20 5b 53 45 4c 45 43 54 5d 20 61 72   the [SELECT] ar
ff10: 65 0a 69 67 6e 6f 72 65 64 20 61 6e 64 20 74 68  e.ignored and th
ff20: 65 20 65 78 70 72 65 73 73 69 6f 6e 20 72 65 74  e expression ret
ff30: 75 72 6e 73 20 54 52 55 45 20 69 66 20 6f 6e 65  urns TRUE if one
ff40: 20 6f 72 20 6d 6f 72 65 20 72 6f 77 73 20 65 78   or more rows ex
ff50: 69 73 74 0a 61 6e 64 20 46 41 4c 53 45 20 69 66  ist.and FALSE if
ff60: 20 74 68 65 20 72 65 73 75 6c 74 20 73 65 74 20   the result set 
ff70: 69 73 20 65 6d 70 74 79 2e 0a 5e 49 66 20 6e 6f  is empty..^If no
ff80: 20 74 65 72 6d 73 20 69 6e 20 74 68 65 20 5b 53   terms in the [S
ff90: 45 4c 45 43 54 5d 20 65 78 70 72 65 73 73 69 6f  ELECT] expressio
ffa0: 6e 20 72 65 66 65 72 20 74 6f 20 76 61 6c 75 65  n refer to value
ffb0: 73 20 69 6e 20 74 68 65 20 63 6f 6e 74 61 69 6e  s in the contain
ffc0: 69 6e 67 0a 71 75 65 72 79 2c 20 74 68 65 6e 20  ing.query, then 
ffd0: 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20 69  the expression i
ffe0: 73 20 65 76 61 6c 75 61 74 65 64 20 6f 6e 63 65  s evaluated once
fff0: 20 70 72 69 6f 72 20 74 6f 20 61 6e 79 20 6f 74   prior to any ot
10000 68 65 72 0a 70 72 6f 63 65 73 73 69 6e 67 20 61  her.processing a
10010 6e 64 20 74 68 65 20 72 65 73 75 6c 74 20 69 73  nd the result is
10020 20 72 65 75 73 65 64 20 61 73 20 6e 65 63 65 73   reused as neces
10030 73 61 72 79 2e 20 20 5e 49 66 20 74 68 65 20 5b  sary.  ^If the [
10040 53 45 4c 45 43 54 5d 20 65 78 70 72 65 73 73 69  SELECT] expressi
10050 6f 6e 0a 64 6f 65 73 20 63 6f 6e 74 61 69 6e 20  on.does contain 
10060 76 61 72 69 61 62 6c 65 73 20 66 72 6f 6d 20 74  variables from t
10070 68 65 20 6f 75 74 65 72 20 71 75 65 72 79 2c 20  he outer query, 
10080 74 68 65 6e 20 74 68 65 20 5b 53 45 4c 45 43 54  then the [SELECT
10090 5d 20 69 73 20 72 65 65 76 61 6c 75 61 74 65 64  ] is reevaluated
100a0 0a 65 76 65 72 79 20 74 69 6d 65 20 69 74 20 69  .every time it i
100b0 73 20 6e 65 65 64 65 64 2e 3c 2f 70 3e 0a 0a 3c  s needed.</p>..<
100c0 70 3e 5e 57 68 65 6e 20 61 20 53 45 4c 45 43 54  p>^When a SELECT
100d0 20 61 70 70 65 61 72 73 20 77 69 74 68 69 6e 20   appears within 
100e0 61 6e 20 65 78 70 72 65 73 73 69 6f 6e 20 62 75  an expression bu
100f0 74 20 69 73 20 6e 6f 74 20 74 68 65 20 72 69 67  t is not the rig
10100 68 74 0a 6f 70 65 72 61 6e 64 20 6f 66 20 61 6e  ht.operand of an
10110 20 49 4e 20 6f 72 20 4e 4f 54 20 49 4e 20 6f 70   IN or NOT IN op
10120 65 72 61 74 6f 72 2c 20 74 68 65 6e 20 74 68 65  erator, then the
10130 20 66 69 72 73 74 20 72 6f 77 20 6f 66 20 74 68   first row of th
10140 65 20 72 65 73 75 6c 74 20 6f 66 20 74 68 65 0a  e result of the.
10150 53 45 4c 45 43 54 20 62 65 63 6f 6d 65 73 20 74  SELECT becomes t
10160 68 65 20 76 61 6c 75 65 20 75 73 65 64 20 69 6e  he value used in
10170 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 2e   the expression.
10180 20 20 5e 49 66 20 74 68 65 20 53 45 4c 45 43 54    ^If the SELECT
10190 20 79 69 65 6c 64 73 0a 6d 6f 72 65 20 74 68 61   yields.more tha
101a0 6e 20 6f 6e 65 20 72 65 73 75 6c 74 20 72 6f 77  n one result row
101b0 2c 20 61 6c 6c 20 72 6f 77 73 20 61 66 74 65 72  , all rows after
101c0 20 74 68 65 20 66 69 72 73 74 20 61 72 65 20 69   the first are i
101d0 67 6e 6f 72 65 64 2e 20 20 5e 49 66 0a 74 68 65  gnored.  ^If.the
101e0 20 53 45 4c 45 43 54 20 79 69 65 6c 64 73 20 6e   SELECT yields n
101f0 6f 20 72 6f 77 73 2c 20 74 68 65 6e 20 74 68 65  o rows, then the
10200 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 53 45   value of the SE
10210 4c 45 43 54 20 69 73 20 4e 55 4c 4c 2e 3c 2f 70  LECT is NULL.</p
10220 3e 0a 0a 3c 74 63 6c 3e 68 64 5f 66 72 61 67 6d  >..<tcl>hd_fragm
10230 65 6e 74 20 63 61 73 74 65 78 70 72 20 7b 43 41  ent castexpr {CA
10240 53 54 20 65 78 70 72 65 73 73 69 6f 6e 7d 3c 2f  ST expression}</
10250 74 63 6c 3e 0a 3c 68 33 3e 43 41 53 54 20 65 78  tcl>.<h3>CAST ex
10260 70 72 65 73 73 69 6f 6e 73 3c 2f 68 33 3e 0a 0a  pressions</h3>..
10270 3c 70 3e 5e 41 20 43 41 53 54 20 65 78 70 72 65  <p>^A CAST expre
10280 73 73 69 6f 6e 20 63 68 61 6e 67 65 73 20 74 68  ssion changes th
10290 65 20 5b 64 61 74 61 74 79 70 65 5d 20 6f 66 20  e [datatype] of 
102a0 74 68 65 20 3c 65 78 70 72 3e 20 69 6e 74 6f 20  the <expr> into 
102b0 74 68 65 0a 74 79 70 65 20 73 70 65 63 69 66 69  the.type specifi
102c0 65 64 20 62 79 20 26 6c 74 3b 74 79 70 65 26 67  ed by &lt;type&g
102d0 74 3b 2e 20 0a 5e 28 26 6c 74 3b 74 79 70 65 26  t;. .^(&lt;type&
102e0 67 74 3b 20 63 61 6e 20 62 65 20 61 6e 79 20 6e  gt; can be any n
102f0 6f 6e 2d 65 6d 70 74 79 20 74 79 70 65 20 6e 61  on-empty type na
10300 6d 65 20 74 68 61 74 20 69 73 20 76 61 6c 69 64  me that is valid
10310 0a 66 6f 72 20 74 68 65 20 74 79 70 65 20 69 6e  .for the type in
10320 20 61 20 63 6f 6c 75 6d 6e 20 64 65 66 69 6e 69   a column defini
10330 74 69 6f 6e 20 6f 66 20 61 20 5b 43 52 45 41 54  tion of a [CREAT
10340 45 20 54 41 42 4c 45 5d 20 73 74 61 74 65 6d 65  E TABLE] stateme
10350 6e 74 2e 29 5e 0a 5e 54 68 65 20 26 6c 74 3b 74  nt.)^.^The &lt;t
10360 79 70 65 26 67 74 3b 20 6e 61 6d 65 20 69 73 20  ype&gt; name is 
10370 69 6e 74 65 72 70 72 65 74 65 64 20 61 63 63 6f  interpreted acco
10380 72 64 69 6e 67 20 74 6f 20 74 68 65 20 0a 5b 72  rding to the .[r
10390 75 6c 65 73 20 66 6f 72 20 64 65 74 65 72 6d 69  ules for determi
103a0 6e 69 6e 67 20 63 6f 6c 75 6d 6e 20 61 66 66 69  ning column affi
103b0 6e 69 74 79 5d 2e 0a 0a 3c 70 3e 5e 41 6e 20 65  nity]...<p>^An e
103c0 78 70 6c 69 63 69 74 20 63 61 73 74 20 69 73 20  xplicit cast is 
103d0 73 74 72 6f 6e 67 65 72 20 74 68 61 6e 20 61 66  stronger than af
103e0 66 69 6e 69 74 79 3b 20 77 69 74 68 20 74 68 65  finity; with the
103f0 20 43 41 53 54 20 65 78 70 72 65 73 73 69 6f 6e   CAST expression
10400 0a 74 68 65 20 64 61 74 61 74 79 70 65 20 63 6f  .the datatype co
10410 6e 76 65 72 73 69 6f 6e 20 69 73 20 66 6f 72 63  nversion is forc
10420 65 64 20 65 76 65 6e 20 69 66 20 69 74 20 69 73  ed even if it is
10430 20 6c 6f 73 73 79 20 61 6e 64 20 69 72 72 72 65   lossy and irrre
10440 76 65 72 73 69 62 6c 65 2e 0a 3c 75 6c 3e 0a 3c  versible..<ul>.<
10450 6c 69 3e 3c 70 3e 0a 20 20 5e 41 20 63 61 73 74  li><p>.  ^A cast
10460 20 6f 66 20 61 20 52 45 41 4c 20 76 61 6c 75 65   of a REAL value
10470 20 69 6e 74 6f 20 61 6e 20 49 4e 54 45 47 45 52   into an INTEGER
10480 20 77 69 6c 6c 20 74 72 75 6e 63 61 74 65 20 74   will truncate t
10490 68 65 0a 20 20 66 72 61 63 74 69 6f 6e 61 6c 20  he.  fractional 
104a0 70 61 72 74 20 6f 66 20 74 68 65 20 52 45 41 4c  part of the REAL
104b0 2e 20 20 5e 49 66 20 61 6e 20 52 45 41 4c 20 69  .  ^If an REAL i
104c0 73 20 74 6f 6f 20 6c 61 72 67 65 20 74 6f 20 62  s too large to b
104d0 65 0a 20 20 72 65 70 72 65 73 65 6e 74 65 64 20  e.  represented 
104e0 61 73 20 61 6e 20 49 4e 54 45 47 45 52 20 74 68  as an INTEGER th
104f0 65 6e 20 74 68 65 20 72 65 73 75 6c 74 20 6f 66  en the result of
10500 20 74 68 65 20 63 61 73 74 20 69 73 0a 20 20 74   the cast is.  t
10510 68 65 20 6c 61 72 67 65 73 74 20 6e 65 67 61 74  he largest negat
10520 69 76 65 20 69 6e 74 65 67 65 72 3a 20 2d 39 32  ive integer: -92
10530 32 33 33 37 32 30 33 36 38 35 34 37 37 35 38 30  2337203685477580
10540 38 2e 0a 0a 3c 6c 69 3e 3c 70 3e 0a 20 5e 41 20  8...<li><p>. ^A 
10550 63 61 73 74 20 6f 66 20 61 20 54 45 58 54 20 76  cast of a TEXT v
10560 61 6c 75 65 20 69 6e 74 6f 20 61 6e 20 49 4e 54  alue into an INT
10570 45 47 45 52 20 6f 72 20 52 45 41 4c 20 77 69 6c  EGER or REAL wil
10580 6c 20 72 65 61 64 20 61 20 70 72 65 66 69 78 0a  l read a prefix.
10590 20 6f 66 20 74 68 65 20 54 45 58 54 20 76 61 6c   of the TEXT val
105a0 75 65 20 74 68 61 74 20 6c 6f 6f 6b 73 20 6c 69  ue that looks li
105b0 6b 65 20 61 6e 20 69 6e 74 65 67 65 72 20 6f 72  ke an integer or
105c0 20 72 65 61 6c 20 76 61 6c 75 65 2c 20 72 65 73   real value, res
105d0 70 65 63 74 69 76 65 6c 79 2c 0a 20 61 6e 64 20  pectively,. and 
105e0 69 67 6e 6f 72 65 20 74 68 65 20 72 65 73 74 2e  ignore the rest.
105f0 20 20 5e 57 68 65 6e 20 63 61 73 74 69 6e 67 20    ^When casting 
10600 66 72 6f 6d 20 54 45 58 54 20 69 6e 74 6f 20 49  from TEXT into I
10610 4e 54 45 47 45 52 20 6f 72 20 52 45 41 4c 2c 0a  NTEGER or REAL,.
10620 20 6c 65 61 64 69 6e 67 20 73 70 61 63 65 73 20   leading spaces 
10630 69 6e 20 74 68 65 20 54 45 58 54 20 76 61 6c 75  in the TEXT valu
10640 65 20 61 72 65 20 69 67 6e 6f 72 65 64 2e 20 20  e are ignored.  
10650 5e 28 41 20 63 61 73 74 20 6f 66 20 61 20 54 45  ^(A cast of a TE
10660 58 54 20 76 61 6c 75 65 0a 20 74 68 61 74 20 6c  XT value. that l
10670 6f 6f 6b 73 20 6e 6f 74 68 69 6e 67 20 6c 69 6b  ooks nothing lik
10680 65 20 61 20 6e 75 6d 62 65 72 20 69 6e 74 6f 20  e a number into 
10690 49 4e 54 45 47 45 52 20 6f 72 20 52 45 41 4c 20  INTEGER or REAL 
106a0 72 65 73 75 6c 74 73 20 69 6e 20 30 20 6f 72 20  results in 0 or 
106b0 30 2e 30 2c 0a 20 72 65 73 70 65 63 74 69 76 65  0.0,. respective
106c0 6c 79 2e 29 5e 0a 0a 3c 6c 69 3e 3c 70 3e 0a 20  ly.)^..<li><p>. 
106d0 5e 43 61 73 74 69 6e 67 20 61 20 76 61 6c 75 65  ^Casting a value
106e0 20 69 6e 74 6f 20 4e 55 4d 45 52 49 43 20 66 69   into NUMERIC fi
106f0 72 73 74 20 64 6f 65 73 20 61 20 66 6f 72 63 65  rst does a force
10700 64 20 63 6f 6e 76 65 72 73 69 6f 6e 20 69 6e 74  d conversion int
10710 6f 20 52 45 41 4c 0a 20 20 62 75 74 20 77 69 6c  o REAL.  but wil
10720 6c 20 74 68 65 6e 20 66 75 72 74 68 65 72 20 63  l then further c
10730 6f 6e 76 65 72 74 73 20 74 68 65 20 72 65 73 75  onverts the resu
10740 6c 74 20 69 6e 74 6f 20 49 4e 54 45 47 45 52 20  lt into INTEGER 
10750 69 66 20 61 6e 64 20 6f 6e 6c 79 20 69 66 0a 20  if and only if. 
10760 20 74 68 65 20 63 6f 6e 76 65 72 73 69 6f 6e 20   the conversion 
10770 66 72 6f 6d 20 52 45 41 4c 20 74 6f 20 49 4e 54  from REAL to INT
10780 45 47 45 52 20 69 73 20 6c 6f 73 73 6c 65 73 73  EGER is lossless
10790 20 61 6e 64 20 72 65 76 65 72 73 69 62 6c 65 2e   and reversible.
107a0 0a 20 20 54 68 69 73 20 69 73 20 74 68 65 20 6f  .  This is the o
107b0 6e 6c 79 20 63 6f 6e 74 65 78 74 20 69 6e 20 53  nly context in S
107c0 51 4c 69 74 65 20 77 68 65 72 65 20 74 68 65 20  QLite where the 
107d0 4e 55 4d 45 52 49 43 20 61 6e 64 20 49 4e 54 45  NUMERIC and INTE
107e0 47 45 52 0a 20 20 5b 61 66 66 69 6e 69 74 69 65  GER.  [affinitie
107f0 73 5d 20 62 65 68 61 76 65 20 64 69 66 66 65 72  s] behave differ
10800 65 6e 74 6c 79 2e 0a 0a 3c 6c 69 3e 3c 70 3e 0a  ently...<li><p>.
10810 20 5e 43 61 73 74 69 6e 67 20 61 20 76 61 6c 75   ^Casting a valu
10820 65 20 69 6e 74 6f 20 54 45 58 54 20 72 65 6e 64  e into TEXT rend
10830 65 72 73 20 74 68 65 20 76 61 6c 75 65 20 61 73  ers the value as
10840 20 69 66 20 76 69 61 20 5b 73 71 6c 69 74 65 33   if via [sqlite3
10850 5f 73 6e 70 72 69 6e 74 66 28 29 5d 0a 20 20 65  _snprintf()].  e
10860 78 63 65 70 74 20 74 68 61 74 20 74 68 65 20 72  xcept that the r
10870 65 73 75 6c 74 69 6e 67 20 54 45 58 54 20 75 73  esulting TEXT us
10880 65 73 20 74 68 65 20 5b 65 6e 63 6f 64 69 6e 67  es the [encoding
10890 5d 20 6f 66 20 74 68 65 20 64 61 74 61 62 61 73  ] of the databas
108a0 65 0a 20 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0a  e.  connection..
108b0 0a 3c 6c 69 3e 3c 70 3e 0a 20 5e 43 61 73 74 69  .<li><p>. ^Casti
108c0 6e 67 20 61 20 76 61 6c 75 65 20 74 6f 20 61 20  ng a value to a 
108d0 26 6c 74 3b 74 79 70 65 26 67 74 3b 20 77 69 74  &lt;type&gt; wit
108e0 68 20 6e 6f 20 61 66 66 69 6e 69 74 79 20 63 61  h no affinity ca
108f0 75 73 65 73 20 74 68 65 20 76 61 6c 75 65 20 74  uses the value t
10900 6f 0a 20 20 62 65 20 63 6f 6e 76 65 72 74 65 64  o.  be converted
10910 20 69 6e 74 6f 20 61 20 42 4c 4f 42 2e 20 20 5e   into a BLOB.  ^
10920 43 61 73 74 69 6e 67 20 74 6f 20 61 20 42 4c 4f  Casting to a BLO
10930 42 20 63 6f 6e 73 69 73 74 73 20 6f 66 20 66 69  B consists of fi
10940 72 73 74 20 63 61 73 74 69 6e 67 0a 20 20 74 68  rst casting.  th
10950 65 20 76 61 6c 75 65 20 74 6f 20 54 45 58 54 20  e value to TEXT 
10960 69 6e 20 74 68 65 20 5b 65 6e 63 6f 64 69 6e 67  in the [encoding
10970 5d 20 6f 66 20 74 68 65 20 64 61 74 61 62 61 73  ] of the databas
10980 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c 20 74 68  e connection, th
10990 65 6e 0a 20 20 69 6e 74 65 72 70 72 65 74 69 6e  en.  interpretin
109a0 67 20 74 68 65 20 72 65 73 75 6c 74 69 6e 67 20  g the resulting 
109b0 62 79 74 65 20 73 65 71 75 65 6e 63 65 20 61 73  byte sequence as
109c0 20 61 20 42 4c 4f 42 20 69 6e 73 74 65 61 64 20   a BLOB instead 
109d0 6f 66 20 61 73 20 54 45 58 54 2e 0a 0a 3c 6c 69  of as TEXT...<li
109e0 3e 3c 70 3e 0a 20 5e 43 61 73 74 69 6e 67 20 61  ><p>. ^Casting a
109f0 20 42 4c 4f 42 20 76 61 6c 75 65 20 69 6e 74 6f   BLOB value into
10a00 20 61 6e 79 20 74 79 70 65 20 6f 74 68 65 72 20   any type other 
10a10 74 68 61 6e 20 61 20 42 4c 4f 42 20 63 6f 6e 73  than a BLOB cons
10a20 69 73 74 73 20 6f 66 20 66 69 72 73 74 0a 20 20  ists of first.  
10a30 69 6e 74 65 72 70 72 65 74 69 6e 67 20 74 68 65  interpreting the
10a40 20 62 79 74 65 20 73 65 71 75 65 6e 63 65 20 6f   byte sequence o
10a50 66 20 74 68 65 20 42 4c 4f 42 20 61 73 20 61 20  f the BLOB as a 
10a60 54 45 58 54 20 73 74 72 69 6e 67 20 69 6e 20 74  TEXT string in t
10a70 68 65 0a 20 20 64 61 74 61 62 61 73 65 20 65 6e  he.  database en
10a80 63 6f 64 69 6e 67 20 74 68 65 6e 20 63 6f 6e 74  coding then cont
10a90 69 6e 75 69 6e 67 20 61 73 20 69 66 20 74 68 65  inuing as if the
10aa0 20 76 61 6c 75 65 20 77 68 65 72 65 20 6f 72 69   value where ori
10ab0 67 69 6e 61 6c 6c 79 20 6f 66 0a 20 20 74 79 70  ginally of.  typ
10ac0 65 20 54 45 58 54 2e 0a 0a 3c 6c 69 3e 3c 70 3e  e TEXT...<li><p>
10ad0 0a 20 5e 41 6e 79 20 63 61 73 74 20 6f 66 20 61  . ^Any cast of a
10ae0 20 4e 55 4c 4c 20 76 61 6c 75 65 20 79 69 65 6c   NULL value yiel
10af0 64 73 20 61 20 4e 55 4c 4c 20 72 65 73 75 6c 74  ds a NULL result
10b00 2e 0a 3c 2f 75 6c 3e 0a 0a 3c 70 3e 5e 4e 6f 74  ..</ul>..<p>^Not
10b10 65 20 74 68 61 74 20 74 68 65 20 72 65 73 75 6c  e that the resul
10b20 74 20 66 72 6f 6d 20 63 61 73 74 69 6e 67 20 61  t from casting a
10b30 6e 79 20 6e 6f 6e 2d 42 4c 4f 42 20 76 61 6c 75  ny non-BLOB valu
10b40 65 20 69 6e 74 6f 20 61 20 0a 42 4c 4f 42 20 61  e into a .BLOB a
10b50 6e 64 20 74 68 65 20 72 65 73 75 6c 74 20 66 72  nd the result fr
10b60 6f 6d 20 63 61 73 74 69 6e 67 20 61 6e 79 20 42  om casting any B
10b70 4c 4f 42 20 76 61 6c 75 65 20 69 6e 74 6f 20 61  LOB value into a
10b80 20 6e 6f 6e 2d 42 4c 4f 42 20 76 61 6c 75 65 0a   non-BLOB value.
10b90 77 69 6c 6c 20 62 65 20 64 69 66 66 65 72 65 6e  will be differen
10ba0 74 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 77  t depending on w
10bb0 68 65 74 68 65 72 20 74 68 65 20 64 61 74 61 62  hether the datab
10bc0 61 73 65 20 5b 65 6e 63 6f 64 69 6e 67 5d 20 69  ase [encoding] i
10bd0 73 20 55 54 46 2d 38 2c 0a 55 54 46 2d 31 36 62  s UTF-8,.UTF-16b
10be0 65 2c 20 6f 72 20 55 54 46 2d 31 36 6c 65 2e 0a  e, or UTF-16le..
10bf0 0a 3c 68 33 3e 46 75 6e 63 74 69 6f 6e 73 3c 2f  .<h3>Functions</
10c00 68 33 3e 0a 3c 70 3e 5e 42 6f 74 68 20 5b 63 6f  h3>.<p>^Both [co
10c10 72 65 66 75 6e 63 7c 73 69 6d 70 6c 65 5d 20 61  refunc|simple] a
10c20 6e 64 20 5b 61 67 67 66 75 6e 63 7c 61 67 67 72  nd [aggfunc|aggr
10c30 65 67 61 74 65 5d 20 66 75 6e 63 74 69 6f 6e 73  egate] functions
10c40 20 61 72 65 20 73 75 70 70 6f 72 74 65 64 2e 0a   are supported..
10c50 28 46 6f 72 20 70 72 65 73 65 6e 74 61 74 69 6f  (For presentatio
10c60 6e 20 70 75 72 70 6f 73 65 73 2c 20 73 69 6d 70  n purposes, simp
10c70 6c 65 20 66 75 6e 63 74 69 6f 6e 73 20 61 72 65  le functions are
10c80 20 66 75 72 74 68 65 72 20 73 75 62 64 69 76 69   further subdivi
10c90 64 65 64 20 69 6e 74 6f 0a 5b 63 6f 72 65 66 75  ded into.[corefu
10ca0 6e 63 20 7c 20 63 6f 72 65 20 66 75 6e 63 74 69  nc | core functi
10cb0 6f 6e 73 5d 20 61 6e 64 20 5b 64 61 74 65 66 75  ons] and [datefu
10cc0 6e 63 20 7c 20 64 61 74 65 2d 74 69 6d 65 20 66  nc | date-time f
10cd0 75 6e 63 74 69 6f 6e 73 5d 2e 29 0a 5e 41 20 73  unctions].).^A s
10ce0 69 6d 70 6c 65 20 66 75 6e 63 74 69 6f 6e 20 63  imple function c
10cf0 61 6e 20 62 65 20 75 73 65 64 20 69 6e 20 61 6e  an be used in an
10d00 79 20 65 78 70 72 65 73 73 69 6f 6e 2e 20 20 5e  y expression.  ^
10d10 53 69 6d 70 6c 65 20 66 75 6e 63 74 69 6f 6e 73  Simple functions
10d20 20 72 65 74 75 72 6e 0a 61 20 72 65 73 75 6c 74   return.a result
10d30 20 69 6d 6d 65 64 69 61 74 65 6c 79 20 62 61 73   immediately bas
10d40 65 64 20 6f 6e 20 74 68 65 69 72 20 69 6e 70 75  ed on their inpu
10d50 74 73 2e 20 20 5e 41 67 67 72 65 67 61 74 65 20  ts.  ^Aggregate 
10d60 66 75 6e 63 74 69 6f 6e 73 0a 6d 61 79 20 6f 6e  functions.may on
10d70 6c 79 20 62 65 20 75 73 65 64 20 69 6e 20 61 20  ly be used in a 
10d80 53 45 4c 45 43 54 20 73 74 61 74 65 6d 65 6e 74  SELECT statement
10d90 2e 20 20 5e 41 67 67 72 65 67 61 74 65 20 66 75  .  ^Aggregate fu
10da0 6e 63 74 69 6f 6e 73 20 63 6f 6d 70 75 74 65 0a  nctions compute.
10db0 74 68 65 69 72 20 72 65 73 75 6c 74 20 61 63 72  their result acr
10dc0 6f 73 73 20 61 6c 6c 20 72 6f 77 73 20 6f 66 20  oss all rows of 
10dd0 74 68 65 20 72 65 73 75 6c 74 20 73 65 74 2e 3c  the result set.<
10de0 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23  /p>..<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 23 23 23 23 23 0a 53 65 63 74 69 6f  #########.Sectio
10e40 6e 20 7b 43 6f 72 65 20 46 75 6e 63 74 69 6f 6e  n {Core Function
10e50 73 7d 20 63 6f 72 65 66 75 6e 63 20 7b 2a 63 6f  s} corefunc {*co
10e60 72 65 66 75 6e 63 7d 0a 70 72 6f 63 20 66 75 6e  refunc}.proc fun
10e70 63 64 65 66 20 7b 73 79 6e 74 61 78 20 6b 65 79  cdef {syntax key
10e80 77 6f 72 64 73 20 64 65 73 63 7d 20 7b 0a 20 20  words desc} {.  
10e90 68 64 5f 70 75 74 73 20 7b 3c 74 72 3e 7d 0a 20  hd_puts {<tr>}. 
10ea0 20 72 65 67 73 75 62 20 2d 61 6c 6c 20 7b 5c 73   regsub -all {\s
10eb0 2b 7d 20 5b 73 74 72 69 6e 67 20 74 72 69 6d 20  +} [string trim 
10ec0 24 73 79 6e 74 61 78 5d 20 7b 3c 62 72 3e 3c 2f  $syntax] {<br></
10ed0 62 72 3e 7d 20 73 79 6e 74 61 78 0a 20 20 72 65  br>} syntax.  re
10ee0 67 73 75 62 20 2d 61 6c 6c 20 7b 5c 28 28 5b 5e  gsub -all {\(([^
10ef0 2a 29 5d 2b 29 5c 29 7d 20 24 73 79 6e 74 61 78  *)]+)\)} $syntax
10f00 20 7b 28 3c 69 3e 5c 31 3c 2f 69 3e 29 7d 20 73   {(<i>\1</i>)} s
10f10 79 6e 74 61 78 0a 20 20 72 65 67 73 75 62 20 2d  yntax.  regsub -
10f20 61 6c 6c 20 7b 2c 7d 20 24 73 79 6e 74 61 78 20  all {,} $syntax 
10f30 7b 3c 2f 69 3e 2c 3c 69 3e 7d 20 73 79 6e 74 61  {</i>,<i>} synta
10f40 78 0a 20 20 72 65 67 73 75 62 20 2d 61 6c 6c 20  x.  regsub -all 
10f50 7b 3c 69 3e 5c 2e 5c 2e 5c 2e 3c 2f 69 3e 7d 20  {<i>\.\.\.</i>} 
10f60 24 73 79 6e 74 61 78 20 7b 2e 2e 2e 7d 20 73 79  $syntax {...} sy
10f70 6e 74 61 78 0a 20 20 68 64 5f 70 75 74 73 20 22  ntax.  hd_puts "
10f80 3c 74 64 20 76 61 6c 69 67 6e 3d 5c 22 74 6f 70  <td valign=\"top
10f90 5c 22 20 61 6c 69 67 6e 3d 5c 22 72 69 67 68 74  \" align=\"right
10fa0 5c 22 20 77 69 64 74 68 3d 5c 22 31 32 30 5c 22  \" width=\"120\"
10fb0 3e 22 0a 20 20 69 66 20 7b 5b 6c 6c 65 6e 67 74  >".  if {[llengt
10fc0 68 20 24 6b 65 79 77 6f 72 64 73 5d 3d 3d 30 7d  h $keywords]==0}
10fd0 20 7b 0a 20 20 20 20 72 65 67 65 78 70 20 7b 5b   {.    regexp {[
10fe0 61 2d 7a 5f 5d 2b 7d 20 24 73 79 6e 74 61 78 20  a-z_]+} $syntax 
10ff0 6e 61 6d 65 0a 20 20 20 20 68 64 5f 66 72 61 67  name.    hd_frag
11000 6d 65 6e 74 20 24 6e 61 6d 65 20 2a 24 6e 61 6d  ment $name *$nam
11010 65 20 22 24 7b 6e 61 6d 65 7d 28 29 20 53 51 4c  e "${name}() SQL
11020 20 66 75 6e 63 74 69 6f 6e 22 0a 20 20 7d 20 65   function".  } e
11030 6c 73 65 20 7b 0a 20 20 20 20 73 65 74 20 66 72  lse {.    set fr
11040 61 67 6e 61 6d 65 20 5b 6c 69 6e 64 65 78 20 24  agname [lindex $
11050 6b 65 79 77 6f 72 64 73 20 30 5d 0a 20 20 20 20  keywords 0].    
11060 72 65 67 73 75 62 20 2d 61 6c 6c 20 7b 5b 5e 61  regsub -all {[^a
11070 2d 7a 5d 7d 20 24 66 72 61 67 6e 61 6d 65 20 7b  -z]} $fragname {
11080 7d 20 66 72 61 67 6e 61 6d 65 0a 20 20 20 20 68  } fragname.    h
11090 64 5f 66 72 61 67 6d 65 6e 74 20 24 66 72 61 67  d_fragment $frag
110a0 6e 61 6d 65 0a 20 20 20 20 65 76 61 6c 20 68 64  name.    eval hd
110b0 5f 6b 65 79 77 6f 72 64 73 20 5b 73 74 72 69 6e  _keywords [strin
110c0 67 20 6d 61 70 20 7b 5c 6e 20 7b 20 7d 7d 20 24  g map {\n { }} $
110d0 6b 65 79 77 6f 72 64 73 5d 0a 20 20 7d 0a 20 20  keywords].  }.  
110e0 68 64 5f 70 75 74 73 20 22 24 73 79 6e 74 61 78  hd_puts "$syntax
110f0 3c 2f 74 64 3e 22 0a 20 20 68 64 5f 70 75 74 73  </td>".  hd_puts
11100 20 7b 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f   {<td valign="to
11110 70 22 3e 7d 0a 20 20 68 64 5f 72 65 73 6f 6c 76  p">}.  hd_resolv
11120 65 20 24 64 65 73 63 0a 20 20 68 64 5f 70 75 74  e $desc.  hd_put
11130 73 20 7b 3c 2f 74 64 3e 3c 2f 74 72 3e 7d 0a 7d  s {</td></tr>}.}
11140 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20  .</tcl>..<p>The 
11150 63 6f 72 65 20 66 75 6e 63 74 69 6f 6e 73 20 73  core functions s
11160 68 6f 77 6e 20 62 65 6c 6f 77 20 61 72 65 20 61  hown below are a
11170 76 61 69 6c 61 62 6c 65 20 62 79 20 64 65 66 61  vailable by defa
11180 75 6c 74 2e 20 0a 5b 64 61 74 65 66 75 6e 63 20  ult. .[datefunc 
11190 7c 20 44 61 74 65 20 26 61 6d 70 3b 20 54 69 6d  | Date &amp; Tim
111a0 65 20 66 75 6e 63 74 69 6f 6e 73 5d 20 61 6e 64  e functions] and
111b0 0a 5b 61 67 67 66 75 6e 63 20 7c 20 61 67 67 72  .[aggfunc | aggr
111c0 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 73 5d  egate functions]
111d0 20 61 72 65 20 64 6f 63 75 6d 65 6e 74 65 64 20   are documented 
111e0 73 65 70 61 72 61 74 65 6c 79 2e 20 20 41 6e 0a  separately.  An.
111f0 61 70 70 6c 69 63 61 74 69 6f 6e 20 6d 61 79 20  application may 
11200 64 65 66 69 6e 65 20 61 64 64 69 74 69 6f 6e 61  define additiona
11210 6c 0a 66 75 6e 63 74 69 6f 6e 73 20 77 72 69 74  l.functions writ
11220 74 65 6e 20 69 6e 20 43 20 61 6e 64 20 61 64 64  ten in C and add
11230 65 64 20 74 6f 20 74 68 65 20 64 61 74 61 62 61  ed to the databa
11240 73 65 20 65 6e 67 69 6e 65 20 75 73 69 6e 67 0a  se engine using.
11250 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 63 72 65  the [sqlite3_cre
11260 61 74 65 5f 66 75 6e 63 74 69 6f 6e 28 29 5d 20  ate_function()] 
11270 41 50 49 2e 3c 2f 70 3e 0a 0a 3c 74 61 62 6c 65  API.</p>..<table
11280 20 62 6f 72 64 65 72 3d 30 20 63 65 6c 6c 70 61   border=0 cellpa
11290 64 64 69 6e 67 3d 31 30 3e 0a 3c 74 63 6c 3e 0a  dding=10>.<tcl>.
112a0 66 75 6e 63 64 65 66 20 7b 61 62 73 28 58 29 7d  funcdef {abs(X)}
112b0 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20 61 62 73   {} {.  ^The abs
112c0 28 58 29 20 66 75 6e 63 74 69 6f 6e 20 72 65 74  (X) function ret
112d0 75 72 6e 73 20 74 68 65 20 61 62 73 6f 6c 75 74  urns the absolut
112e0 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 6e  e value of the n
112f0 75 6d 65 72 69 63 0a 20 20 61 72 67 75 6d 65 6e  umeric.  argumen
11300 74 20 58 2e 20 20 5e 41 62 73 28 58 29 20 72 65  t X.  ^Abs(X) re
11310 74 75 72 6e 73 20 4e 55 4c 4c 20 69 66 20 58 20  turns NULL if X 
11320 69 73 20 4e 55 4c 4c 2e 20 0a 20 20 5e 28 41 62  is NULL. .  ^(Ab
11330 73 28 58 29 20 72 65 74 75 72 6e 20 30 2e 30 20  s(X) return 0.0 
11340 69 66 20 58 20 69 73 20 61 20 73 74 72 69 6e 67  if X is a string
11350 20 6f 72 20 62 6c 6f 62 0a 20 20 74 68 61 74 20   or blob.  that 
11360 63 61 6e 6e 6f 74 20 62 65 20 63 6f 6e 76 65 72  cannot be conver
11370 74 65 64 20 74 6f 20 61 20 6e 75 6d 65 72 69 63  ted to a numeric
11380 20 76 61 6c 75 65 2e 29 5e 20 20 5e 49 66 20 58   value.)^  ^If X
11390 20 69 73 20 74 68 65 20 0a 20 20 69 6e 74 65 67   is the .  integ
113a0 65 72 20 2d 39 32 32 33 33 37 32 30 33 36 38 35  er -922337203685
113b0 34 37 37 35 38 30 37 20 74 68 65 6e 20 61 62 73  4775807 then abs
113c0 28 58 29 20 74 68 72 6f 77 73 20 61 6e 20 69 6e  (X) throws an in
113d0 74 65 67 65 72 20 6f 76 65 72 66 6c 6f 77 0a 20  teger overflow. 
113e0 20 65 72 72 6f 72 20 73 69 6e 63 65 20 74 68 65   error since the
113f0 72 65 20 69 73 20 6e 6f 20 65 71 75 69 76 61 6c  re is no equival
11400 65 6e 74 20 70 6f 73 69 74 69 76 65 20 36 34 2d  ent positive 64-
11410 62 69 74 20 74 77 6f 20 63 6f 6d 70 6c 65 6d 65  bit two compleme
11420 6e 74 20 76 61 6c 75 65 2e 0a 7d 0a 0a 66 75 6e  nt value..}..fun
11430 63 64 65 66 20 7b 63 68 61 6e 67 65 73 28 29 7d  cdef {changes()}
11440 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20 63 68 61   {} {.  ^The cha
11450 6e 67 65 73 28 29 20 66 75 6e 63 74 69 6f 6e 20  nges() function 
11460 72 65 74 75 72 6e 73 20 74 68 65 20 6e 75 6d 62  returns the numb
11470 65 72 20 6f 66 20 64 61 74 61 62 61 73 65 20 72  er of database r
11480 6f 77 73 20 74 68 61 74 20 77 65 72 65 20 63 68  ows that were ch
11490 61 6e 67 65 64 0a 20 20 6f 72 20 69 6e 73 65 72  anged.  or inser
114a0 74 65 64 20 6f 72 20 64 65 6c 65 74 65 64 20 62  ted or deleted b
114b0 79 20 74 68 65 20 6d 6f 73 74 20 72 65 63 65 6e  y the most recen
114c0 74 6c 79 20 63 6f 6d 70 6c 65 74 65 64 20 49 4e  tly completed IN
114d0 53 45 52 54 2c 20 44 45 4c 45 54 45 2c 0a 20 20  SERT, DELETE,.  
114e0 6f 72 20 55 50 44 41 54 45 20 73 74 61 74 65 6d  or UPDATE statem
114f0 65 6e 74 2c 20 65 78 63 6c 75 73 69 76 65 20 6f  ent, exclusive o
11500 66 20 73 74 61 74 65 6d 65 6e 74 73 20 69 6e 20  f statements in 
11510 6c 6f 77 65 72 2d 6c 65 76 65 6c 20 74 72 69 67  lower-level trig
11520 67 65 72 73 2e 0a 20 20 5e 54 68 65 20 63 68 61  gers..  ^The cha
11530 6e 67 65 73 28 29 20 53 51 4c 20 66 75 6e 63 74  nges() SQL funct
11540 69 6f 6e 20 69 73 20 61 20 77 72 61 70 70 65 72  ion is a wrapper
11550 20 61 72 6f 75 6e 64 20 74 68 65 20 5b 73 71 6c   around the [sql
11560 69 74 65 33 5f 63 68 61 6e 67 65 73 28 29 5d 0a  ite3_changes()].
11570 20 20 43 2f 43 2b 2b 20 66 75 6e 63 74 69 6f 6e    C/C++ function
11580 20 61 6e 64 20 68 65 6e 63 65 20 66 6f 6c 6c 6f   and hence follo
11590 77 73 20 74 68 65 20 73 61 6d 65 20 72 75 6c 65  ws the same rule
115a0 73 20 66 6f 72 20 63 6f 75 6e 74 69 6e 67 20 63  s for counting c
115b0 68 61 6e 67 65 73 2e 0a 7d 0a 0a 66 75 6e 63 64  hanges..}..funcd
115c0 65 66 20 7b 63 6f 61 6c 65 73 63 65 28 58 2c 59  ef {coalesce(X,Y
115d0 2c 2e 2e 2e 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54  ,...)} {} {.  ^T
115e0 68 65 20 63 6f 61 6c 65 73 63 65 28 29 20 66 75  he coalesce() fu
115f0 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 61  nction returns a
11600 20 63 6f 70 79 20 6f 66 20 69 74 73 20 66 69 72   copy of its fir
11610 73 74 20 6e 6f 6e 2d 4e 55 4c 4c 20 61 72 67 75  st non-NULL argu
11620 6d 65 6e 74 2c 20 6f 72 0a 20 20 4e 55 4c 4c 20  ment, or.  NULL 
11630 69 66 20 61 6c 6c 20 61 72 67 75 6d 65 6e 74 73  if all arguments
11640 20 61 72 65 20 4e 55 4c 4c 2e 20 20 5e 43 6f 61   are NULL.  ^Coa
11650 6c 65 73 63 65 28 29 20 6d 75 73 74 20 62 65 20  lesce() must be 
11660 61 74 20 6c 65 61 73 74 20 0a 20 20 32 20 61 72  at least .  2 ar
11670 67 75 6d 65 6e 74 73 2e 0a 7d 0a 0a 66 75 6e 63  guments..}..func
11680 64 65 66 20 7b 67 6c 6f 62 28 58 2c 59 29 7d 20  def {glob(X,Y)} 
11690 7b 7d 20 7b 0a 20 20 5e 54 68 65 20 67 6c 6f 62  {} {.  ^The glob
116a0 28 58 2c 59 29 20 66 75 6e 63 74 69 6f 6e 20 69  (X,Y) function i
116b0 73 20 65 71 75 69 76 61 6c 65 6e 74 20 74 6f 20  s equivalent to 
116c0 74 68 65 0a 20 20 65 78 70 72 65 73 73 69 6f 6e  the.  expression
116d0 20 22 3c 62 3e 59 20 47 4c 4f 42 20 58 3c 2f 62   "<b>Y GLOB X</b
116e0 3e 22 2e 0a 20 20 4e 6f 74 65 20 74 68 61 74 20  >"..  Note that 
116f0 74 68 65 20 58 20 61 6e 64 20 59 20 61 72 67 75  the X and Y argu
11700 6d 65 6e 74 73 20 61 72 65 20 72 65 76 65 72 73  ments are revers
11710 65 64 20 69 6e 20 74 68 65 20 67 6c 6f 62 28 29  ed in the glob()
11720 20 66 75 6e 63 74 69 6f 6e 0a 20 20 72 65 6c 61   function.  rela
11730 74 69 76 65 20 74 6f 20 74 68 65 20 69 6e 66 69  tive to the infi
11740 78 20 5b 47 4c 4f 42 5d 20 6f 70 65 72 61 74 6f  x [GLOB] operato
11750 72 2e 0a 20 20 5e 49 66 20 74 68 65 20 5b 73 71  r..  ^If the [sq
11760 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 66 75 6e  lite3_create_fun
11770 63 74 69 6f 6e 28 29 5d 20 69 6e 74 65 72 66 61  ction()] interfa
11780 63 65 20 69 73 20 75 73 65 64 20 74 6f 0a 20 20  ce is used to.  
11790 6f 76 65 72 72 69 64 65 20 74 68 65 20 67 6c 6f  override the glo
117a0 62 28 58 2c 59 29 20 66 75 6e 63 74 69 6f 6e 20  b(X,Y) function 
117b0 77 69 74 68 20 61 6e 20 61 6c 74 65 72 6e 61 74  with an alternat
117c0 69 76 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  ive implementati
117d0 6f 6e 20 74 68 65 6e 0a 20 20 74 68 65 20 5b 47  on then.  the [G
117e0 4c 4f 42 5d 20 6f 70 65 72 61 74 6f 72 20 77 69  LOB] operator wi
117f0 6c 6c 20 69 6e 76 6f 6b 65 20 74 68 65 20 61 6c  ll invoke the al
11800 74 65 72 6e 61 74 69 76 65 20 69 6d 70 6c 65 6d  ternative implem
11810 65 6e 74 61 74 69 6f 6e 2e 0a 7d 0a 0a 66 75 6e  entation..}..fun
11820 63 64 65 66 20 7b 69 66 6e 75 6c 6c 28 58 2c 59  cdef {ifnull(X,Y
11830 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20 69  )} {} {.  ^The i
11840 66 6e 75 6c 6c 28 29 20 66 75 6e 63 74 69 6f 6e  fnull() function
11850 20 72 65 74 75 72 6e 73 20 61 20 63 6f 70 79 20   returns a copy 
11860 6f 66 20 69 74 73 20 66 69 72 73 74 20 6e 6f 6e  of its first non
11870 2d 4e 55 4c 4c 20 61 72 67 75 6d 65 6e 74 2c 20  -NULL argument, 
11880 6f 72 0a 20 20 4e 55 4c 4c 20 69 66 20 62 6f 74  or.  NULL if bot
11890 68 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20  h arguments are 
118a0 4e 55 4c 4c 2e 20 20 5e 49 66 6e 75 6c 6c 28 29  NULL.  ^Ifnull()
118b0 20 6d 75 73 74 20 68 61 76 65 20 65 78 61 63 74   must have exact
118c0 6c 79 20 32 20 61 72 67 75 6d 65 6e 74 73 2e 0a  ly 2 arguments..
118d0 20 20 5e 54 68 65 20 69 66 6e 75 6c 6c 28 29 20    ^The ifnull() 
118e0 66 75 6e 63 74 69 6f 6e 20 69 73 20 65 71 75 69  function is equi
118f0 76 61 6c 65 6e 74 20 74 6f 20 5b 63 6f 61 6c 65  valent to [coale
11900 73 63 65 28 29 5d 20 77 69 74 68 20 74 77 6f 20  sce()] with two 
11910 61 72 67 75 6d 65 6e 74 73 2e 0a 7d 0a 0a 66 75  arguments..}..fu
11920 6e 63 64 65 66 20 7b 68 65 78 28 58 29 7d 20 7b  ncdef {hex(X)} {
11930 7d 20 7b 0a 20 20 5e 54 68 65 20 68 65 78 28 29  } {.  ^The hex()
11940 20 66 75 6e 63 74 69 6f 6e 20 69 6e 74 65 72 70   function interp
11950 72 65 74 73 20 69 74 73 20 61 72 67 75 6d 65 6e  rets its argumen
11960 74 20 61 73 20 61 20 42 4c 4f 42 20 61 6e 64 20  t as a BLOB and 
11970 72 65 74 75 72 6e 73 0a 20 20 61 20 73 74 72 69  returns.  a stri
11980 6e 67 20 77 68 69 63 68 20 69 73 20 74 68 65 20  ng which is the 
11990 75 70 70 65 72 2d 63 61 73 65 20 68 65 78 61 64  upper-case hexad
119a0 65 63 69 6d 61 6c 20 72 65 6e 64 65 72 69 6e 67  ecimal rendering
119b0 20 6f 66 20 74 68 65 20 63 6f 6e 74 65 6e 74 20   of the content 
119c0 6f 66 0a 20 20 74 68 61 74 20 62 6c 6f 62 2e 0a  of.  that blob..
119d0 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 6c 61 73 74  }..funcdef {last
119e0 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 28 29 7d  _insert_rowid()}
119f0 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20 6c 61 73   {} {.  ^The las
11a00 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 28 29  t_insert_rowid()
11a10 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e   function return
11a20 73 20 74 68 65 20 5b 52 4f 57 49 44 5d 0a 20 20  s the [ROWID].  
11a30 6f 66 20 74 68 65 20 6c 61 73 74 20 72 6f 77 20  of the last row 
11a40 69 6e 73 65 72 74 20 66 72 6f 6d 20 74 68 65 20  insert from the 
11a50 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
11a60 69 6f 6e 20 77 68 69 63 68 20 69 6e 76 6f 6b 65  ion which invoke
11a70 64 20 74 68 65 0a 20 20 66 75 6e 63 74 69 6f 6e  d the.  function
11a80 2e 0a 20 20 5e 54 68 65 20 6c 61 73 74 5f 69 6e  ..  ^The last_in
11a90 73 65 72 74 5f 72 6f 77 69 64 28 29 20 53 51 4c  sert_rowid() SQL
11aa0 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 61 20 77   function is a w
11ab0 72 61 70 70 65 72 20 61 72 6f 75 6e 64 20 74 68  rapper around th
11ac0 65 0a 20 20 5b 73 71 6c 69 74 65 33 5f 6c 61 73  e.  [sqlite3_las
11ad0 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 28 29  t_insert_rowid()
11ae0 5d 20 43 2f 43 2b 2b 20 69 6e 74 65 72 66 61 63  ] C/C++ interfac
11af0 65 20 66 75 6e 63 74 69 6f 6e 2e 0a 7d 0a 0a 66  e function..}..f
11b00 75 6e 63 64 65 66 20 7b 6c 65 6e 67 74 68 28 58  uncdef {length(X
11b10 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20 6c  )} {} {.  ^The l
11b20 65 6e 67 74 68 28 58 29 20 66 75 6e 63 74 69 6f  ength(X) functio
11b30 6e 20 72 65 74 75 72 6e 73 20 74 68 65 20 6c 65  n returns the le
11b40 6e 67 74 68 20 6f 66 20 58 20 69 6e 20 0a 20 20  ngth of X in .  
11b50 63 68 61 72 61 63 74 65 72 73 20 69 66 20 58 20  characters if X 
11b60 69 73 20 61 20 73 74 72 69 6e 67 2c 20 6f 72 20  is a string, or 
11b70 69 6e 20 62 79 74 65 73 20 69 66 20 58 20 69 73  in bytes if X is
11b80 20 61 20 62 6c 6f 62 2e 0a 20 20 5e 49 66 20 58   a blob..  ^If X
11b90 20 69 73 20 4e 55 4c 4c 20 74 68 65 6e 20 6c 65   is NULL then le
11ba0 6e 67 74 68 28 58 29 20 69 73 20 4e 55 4c 4c 2e  ngth(X) is NULL.
11bb0 0a 20 20 5e 49 66 20 58 20 69 73 20 6e 75 6d 65  .  ^If X is nume
11bc0 72 69 63 20 74 68 65 6e 20 6c 65 6e 67 74 68 28  ric then length(
11bd0 58 29 20 72 65 74 75 72 6e 73 20 74 68 65 20 6c  X) returns the l
11be0 65 6e 67 74 68 20 6f 66 20 61 20 73 74 72 69 6e  ength of a strin
11bf0 67 0a 20 20 72 65 70 72 65 73 65 6e 74 61 74 69  g.  representati
11c00 6f 6e 20 6f 66 20 58 2e 0a 7d 0a 0a 66 75 6e 63  on of X..}..func
11c10 64 65 66 20 7b 6c 69 6b 65 28 58 2c 59 29 20 6c  def {like(X,Y) l
11c20 69 6b 65 28 58 2c 59 2c 5a 29 7d 20 7b 7d 20 7b  ike(X,Y,Z)} {} {
11c30 0a 20 20 5e 54 68 65 20 6c 69 6b 65 28 29 20 66  .  ^The like() f
11c40 75 6e 63 74 69 6f 6e 20 69 73 20 75 73 65 64 20  unction is used 
11c50 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 74 68 65  to implement the
11c60 0a 20 20 22 3c 62 3e 59 20 4c 49 4b 45 20 58 20  .  "<b>Y LIKE X 
11c70 26 23 39 31 3b 45 53 43 41 50 45 20 5a 26 23 39  &#91;ESCAPE Z&#9
11c80 33 3b 3c 2f 62 3e 22 20 65 78 70 72 65 73 73 69  3;</b>" expressi
11c90 6f 6e 2e 20 0a 20 20 5e 49 66 20 74 68 65 20 6f  on. .  ^If the o
11ca0 70 74 69 6f 6e 61 6c 20 45 53 43 41 50 45 20 63  ptional ESCAPE c
11cb0 6c 61 75 73 65 20 69 73 20 70 72 65 73 65 6e 74  lause is present
11cc0 2c 20 74 68 65 6e 20 74 68 65 0a 20 20 6c 69 6b  , then the.  lik
11cd0 65 28 29 20 66 75 6e 63 74 69 6f 6e 20 69 73 20  e() function is 
11ce0 69 6e 76 6f 6b 65 64 20 77 69 74 68 20 74 68 72  invoked with thr
11cf0 65 65 20 61 72 67 75 6d 65 6e 74 73 2e 20 20 5e  ee arguments.  ^
11d00 4f 74 68 65 72 77 69 73 65 2c 20 69 74 20 69 73  Otherwise, it is
11d10 0a 20 20 69 6e 76 6f 6b 65 64 20 77 69 74 68 20  .  invoked with 
11d20 74 77 6f 20 61 72 67 75 6d 65 6e 74 73 20 6f 6e  two arguments on
11d30 6c 79 2e 20 4e 6f 74 65 20 74 68 61 74 20 74 68  ly. Note that th
11d40 65 20 58 20 61 6e 64 20 59 20 70 61 72 61 6d 65  e X and Y parame
11d50 74 65 72 73 20 61 72 65 0a 20 20 72 65 76 65 72  ters are.  rever
11d60 73 65 64 20 69 6e 20 74 68 65 20 6c 69 6b 65 28  sed in the like(
11d70 29 20 66 75 6e 63 74 69 6f 6e 20 72 65 6c 61 74  ) function relat
11d80 69 76 65 20 74 6f 20 74 68 65 20 69 6e 66 69 78  ive to the infix
11d90 20 5b 4c 49 4b 45 5d 20 6f 70 65 72 61 74 6f 72   [LIKE] operator
11da0 2e 0a 20 20 5e 54 68 65 20 5b 73 71 6c 69 74 65  ..  ^The [sqlite
11db0 33 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f  3_create_functio
11dc0 6e 28 29 5d 20 69 6e 74 65 72 66 61 63 65 20 63  n()] interface c
11dd0 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 6f 76  an be used to ov
11de0 65 72 72 69 64 65 20 74 68 65 0a 20 20 6c 69 6b  erride the.  lik
11df0 65 28 29 20 66 75 6e 63 74 69 6f 6e 20 61 6e 64  e() function and
11e00 20 74 68 65 72 65 62 79 20 63 68 61 6e 67 65 20   thereby change 
11e10 74 68 65 20 6f 70 65 72 61 74 69 6f 6e 20 6f 66  the operation of
11e20 20 74 68 65 0a 20 20 5b 4c 49 4b 45 5d 20 6f 70   the.  [LIKE] op
11e30 65 72 61 74 6f 72 2e 20 20 57 68 65 6e 20 6f 76  erator.  When ov
11e40 65 72 72 69 64 69 6e 67 20 74 68 65 20 6c 69 6b  erriding the lik
11e50 65 28 29 20 66 75 6e 63 74 69 6f 6e 2c 20 69 74  e() function, it
11e60 20 6d 61 79 20 62 65 20 69 6d 70 6f 72 74 61 6e   may be importan
11e70 74 0a 20 20 74 6f 20 6f 76 65 72 72 69 64 65 20  t.  to override 
11e80 62 6f 74 68 20 74 68 65 20 74 77 6f 20 61 6e 64  both the two and
11e90 20 74 68 72 65 65 20 61 72 67 75 6d 65 6e 74 20   three argument 
11ea0 76 65 72 73 69 6f 6e 73 20 6f 66 20 74 68 65 20  versions of the 
11eb0 6c 69 6b 65 28 29 20 0a 20 20 66 75 6e 63 74 69  like() .  functi
11ec0 6f 6e 2e 20 4f 74 68 65 72 77 69 73 65 2c 20 64  on. Otherwise, d
11ed0 69 66 66 65 72 65 6e 74 20 63 6f 64 65 20 6d 61  ifferent code ma
11ee0 79 20 62 65 20 63 61 6c 6c 65 64 20 74 6f 20 69  y be called to i
11ef0 6d 70 6c 65 6d 65 6e 74 20 74 68 65 0a 20 20 5b  mplement the.  [
11f00 4c 49 4b 45 5d 20 6f 70 65 72 61 74 6f 72 20 64  LIKE] operator d
11f10 65 70 65 6e 64 69 6e 67 20 6f 6e 20 77 68 65 74  epending on whet
11f20 68 65 72 20 6f 72 20 6e 6f 74 20 61 6e 20 45 53  her or not an ES
11f30 43 41 50 45 20 63 6c 61 75 73 65 20 77 61 73 20  CAPE clause was 
11f40 0a 20 20 73 70 65 63 69 66 69 65 64 2e 0a 7d 0a  .  specified..}.
11f50 0a 66 75 6e 63 64 65 66 20 7b 6c 6f 61 64 5f 65  .funcdef {load_e
11f60 78 74 65 6e 73 69 6f 6e 28 58 29 20 6c 6f 61 64  xtension(X) load
11f70 5f 65 78 74 65 6e 73 69 6f 6e 28 58 2c 59 29 7d  _extension(X,Y)}
11f80 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20 6c 6f 61   {} {.  ^The loa
11f90 64 5f 65 78 74 65 6e 73 69 6f 6e 28 58 2c 59 29  d_extension(X,Y)
11fa0 20 66 75 6e 63 74 69 6f 6e 20 6c 6f 61 64 73 20   function loads 
11fb0 53 51 4c 69 74 65 20 65 78 74 65 6e 73 69 6f 6e  SQLite extension
11fc0 73 20 6f 75 74 20 6f 66 20 74 68 65 20 73 68 61  s out of the sha
11fd0 72 65 64 0a 20 20 6c 69 62 72 61 72 79 20 66 69  red.  library fi
11fe0 6c 65 20 6e 61 6d 65 64 20 58 20 75 73 69 6e 67  le named X using
11ff0 20 74 68 65 20 65 6e 74 72 79 20 70 6f 69 6e 74   the entry point
12000 20 59 2e 20 20 5e 54 68 65 20 72 65 73 75 6c 74   Y.  ^The result
12010 20 6f 66 20 6c 6f 61 64 5f 65 78 74 65 6e 73 69   of load_extensi
12020 6f 6e 28 29 0a 20 20 69 73 20 61 6c 77 61 79 73  on().  is always
12030 20 61 20 4e 55 4c 4c 2e 20 20 5e 49 66 20 59 20   a NULL.  ^If Y 
12040 69 73 20 6f 6d 69 74 74 65 64 20 74 68 65 6e 20  is omitted then 
12050 74 68 65 20 64 65 66 61 75 6c 74 20 65 6e 74 72  the default entr
12060 79 20 70 6f 69 6e 74 0a 20 20 6f 66 20 3c 62 3e  y point.  of <b>
12070 73 71 6c 69 74 65 33 5f 65 78 74 65 6e 73 69 6f  sqlite3_extensio
12080 6e 5f 69 6e 69 74 3c 2f 62 3e 20 69 73 20 75 73  n_init</b> is us
12090 65 64 2e 20 20 5e 54 68 65 20 6c 6f 61 64 5f 65  ed.  ^The load_e
120a0 78 74 65 6e 73 69 6f 6e 28 29 20 66 75 6e 63 74  xtension() funct
120b0 69 6f 6e 0a 20 20 72 61 69 73 65 73 20 61 6e 20  ion.  raises an 
120c0 65 78 63 65 70 74 69 6f 6e 20 69 66 20 74 68 65  exception if the
120d0 20 65 78 74 65 6e 73 69 6f 6e 20 66 61 69 6c 73   extension fails
120e0 20 74 6f 20 6c 6f 61 64 20 6f 72 20 69 6e 69 74   to load or init
120f0 69 61 6c 69 7a 65 20 63 6f 72 72 65 63 74 6c 79  ialize correctly
12100 2e 0a 0a 20 20 3c 70 3e 5e 54 68 65 20 6c 6f 61  ...  <p>^The loa
12110 64 5f 65 78 74 65 6e 73 69 6f 6e 28 29 20 66 75  d_extension() fu
12120 6e 63 74 69 6f 6e 20 77 69 6c 6c 20 66 61 69 6c  nction will fail
12130 20 69 66 20 74 68 65 20 65 78 74 65 6e 73 69 6f   if the extensio
12140 6e 20 61 74 74 65 6d 70 74 73 20 74 6f 20 0a 20  n attempts to . 
12150 20 6d 6f 64 69 66 79 20 6f 72 20 64 65 6c 65 74   modify or delet
12160 65 20 61 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e  e a SQL function
12170 20 6f 72 20 63 6f 6c 6c 61 74 69 6e 67 20 73 65   or collating se
12180 71 75 65 6e 63 65 2e 20 20 5e 54 68 65 0a 20 20  quence.  ^The.  
12190 65 78 74 65 6e 73 69 6f 6e 20 63 61 6e 20 61 64  extension can ad
121a0 64 20 6e 65 77 20 66 75 6e 63 74 69 6f 6e 73 20  d new functions 
121b0 6f 72 20 63 6f 6c 6c 61 74 69 6e 67 20 73 65 71  or collating seq
121c0 75 65 6e 63 65 73 2c 20 62 75 74 20 63 61 6e 6e  uences, but cann
121d0 6f 74 0a 20 20 6d 6f 64 69 66 79 20 6f 72 20 64  ot.  modify or d
121e0 65 6c 65 74 65 20 65 78 69 73 74 69 6e 67 20 66  elete existing f
121f0 75 6e 63 74 69 6f 6e 73 20 6f 72 20 63 6f 6c 6c  unctions or coll
12200 61 74 69 6e 67 20 73 65 71 75 65 6e 63 65 73 20  ating sequences 
12210 62 65 63 61 75 73 65 0a 20 20 74 68 6f 73 65 20  because.  those 
12220 66 75 6e 63 74 69 6f 6e 73 20 61 6e 64 2f 6f 72  functions and/or
12230 20 63 6f 6c 6c 61 74 69 6e 67 20 73 65 71 75 65   collating seque
12240 6e 63 65 73 20 6d 69 67 68 74 20 62 65 20 75 73  nces might be us
12250 65 64 20 65 6c 73 65 77 68 65 72 65 0a 20 20 69  ed elsewhere.  i
12260 6e 20 74 68 65 20 63 75 72 72 65 6e 74 6c 79 20  n the currently 
12270 72 75 6e 6e 69 6e 67 20 53 51 4c 20 73 74 61 74  running SQL stat
12280 65 6d 65 6e 74 2e 20 20 54 6f 20 6c 6f 61 64 20  ement.  To load 
12290 61 6e 20 65 78 74 65 6e 73 69 6f 6e 20 74 68 61  an extension tha
122a0 74 0a 20 20 63 68 61 6e 67 65 73 20 6f 72 20 64  t.  changes or d
122b0 65 6c 65 74 65 73 20 66 75 6e 63 74 69 6f 6e 73  eletes functions
122c0 20 6f 72 20 63 6f 6c 6c 61 74 69 6e 67 20 73 65   or collating se
122d0 71 75 65 6e 63 65 73 2c 20 75 73 65 20 74 68 65  quences, use the
122e0 0a 20 20 5b 73 71 6c 69 74 65 33 5f 6c 6f 61 64  .  [sqlite3_load
122f0 5f 65 78 74 65 6e 73 69 6f 6e 28 29 5d 20 43 2d  _extension()] C-
12300 6c 61 6e 67 75 61 67 65 20 41 50 49 2e 3c 2f 70  language API.</p
12310 3e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 6c 6f  >.}..funcdef {lo
12320 77 65 72 28 58 29 7d 20 7b 7d 20 7b 0a 20 20 5e  wer(X)} {} {.  ^
12330 54 68 65 20 6c 6f 77 65 72 28 58 29 20 66 75 6e  The lower(X) fun
12340 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 61 20  ction returns a 
12350 63 6f 70 79 20 6f 66 20 73 74 72 69 6e 67 20 58  copy of string X
12360 20 77 69 74 68 20 61 6c 6c 20 41 53 43 49 49 20   with all ASCII 
12370 63 68 61 72 61 63 74 65 72 73 0a 20 20 63 6f 6e  characters.  con
12380 76 65 72 74 65 64 20 74 6f 20 6c 6f 77 65 72 20  verted to lower 
12390 63 61 73 65 2e 20 20 5e 54 68 65 20 64 65 66 61  case.  ^The defa
123a0 75 6c 74 20 62 75 69 6c 74 2d 69 6e 20 6c 6f 77  ult built-in low
123b0 65 72 28 29 20 66 75 6e 63 74 69 6f 6e 20 77 6f  er() function wo
123c0 72 6b 73 0a 20 20 66 6f 72 20 41 53 43 49 49 20  rks.  for ASCII 
123d0 63 68 61 72 61 63 74 65 72 73 20 6f 6e 6c 79 2e  characters only.
123e0 20 20 54 6f 20 64 6f 20 63 61 73 65 20 63 6f 6e    To do case con
123f0 76 65 72 73 69 6f 6e 73 20 6f 6e 20 6e 6f 6e 2d  versions on non-
12400 41 53 43 49 49 0a 20 20 63 68 61 72 61 63 74 65  ASCII.  characte
12410 72 73 2c 20 6c 6f 61 64 20 74 68 65 20 49 43 55  rs, load the ICU
12420 20 65 78 74 65 6e 73 69 6f 6e 2e 0a 7d 0a 0a 66   extension..}..f
12430 75 6e 63 64 65 66 20 7b 6c 74 72 69 6d 28 58 29  uncdef {ltrim(X)
12440 20 6c 74 72 69 6d 28 58 2c 59 29 7d 20 7b 7d 20   ltrim(X,Y)} {} 
12450 7b 0a 20 20 5e 54 68 65 20 6c 74 72 69 6d 28 58  {.  ^The ltrim(X
12460 2c 59 29 20 66 75 6e 63 74 69 6f 6e 20 72 65 74  ,Y) function ret
12470 75 72 6e 73 20 61 20 73 74 72 69 6e 67 20 66 6f  urns a string fo
12480 72 6d 65 64 20 62 79 20 72 65 6d 6f 76 69 6e 67  rmed by removing
12490 20 61 6e 79 20 61 6e 64 20 61 6c 6c 0a 20 20 63   any and all.  c
124a0 68 61 72 61 63 74 65 72 73 20 74 68 61 74 20 61  haracters that a
124b0 70 70 65 61 72 20 69 6e 20 59 20 66 72 6f 6d 20  ppear in Y from 
124c0 74 68 65 20 6c 65 66 74 20 73 69 64 65 20 6f 66  the left side of
124d0 20 58 2e 0a 20 20 5e 49 66 20 74 68 65 20 59 20   X..  ^If the Y 
124e0 61 72 67 75 6d 65 6e 74 20 69 73 20 6f 6d 69 74  argument is omit
124f0 74 65 64 2c 20 6c 74 72 69 6d 28 58 29 20 72 65  ted, ltrim(X) re
12500 6d 6f 76 65 73 20 73 70 61 63 65 73 20 66 72 6f  moves spaces fro
12510 6d 20 74 68 65 20 6c 65 66 74 20 73 69 64 65 0a  m the left side.
12520 20 20 6f 66 20 58 2e 0a 7d 0a 0a 66 75 6e 63 64    of X..}..funcd
12530 65 66 20 7b 6d 61 78 28 58 2c 59 2c 2e 2e 2e 29  ef {max(X,Y,...)
12540 7d 20 7b 2a 6d 61 78 43 6f 72 65 46 75 6e 63 20  } {*maxCoreFunc 
12550 2a 6d 61 78 20 7b 6d 61 78 28 29 20 53 51 4c 20  *max {max() SQL 
12560 66 75 6e 63 74 69 6f 6e 7d 7d 20 7b 0a 20 20 5e  function}} {.  ^
12570 54 68 65 20 6d 75 6c 74 69 2d 61 72 67 75 6d 65  The multi-argume
12580 6e 74 20 6d 61 78 28 29 20 66 75 6e 63 74 69 6f  nt max() functio
12590 6e 20 72 65 74 75 72 6e 73 20 74 68 65 20 61 72  n returns the ar
125a0 67 75 6d 65 6e 74 20 77 69 74 68 20 74 68 65 20  gument with the 
125b0 0a 20 20 6d 61 78 69 6d 75 6d 20 76 61 6c 75 65  .  maximum value
125c0 2c 20 6f 72 20 72 65 74 75 72 6e 20 4e 55 4c 4c  , or return NULL
125d0 20 69 66 20 61 6e 79 20 61 72 67 75 6d 65 6e 74   if any argument
125e0 20 69 73 20 4e 55 4c 4c 2e 20 0a 20 20 5e 54 68   is NULL. .  ^Th
125f0 65 20 6d 75 6c 74 69 2d 61 72 67 75 6d 65 6e 74  e multi-argument
12600 20 6d 61 78 28 29 20 66 75 6e 63 74 69 6f 6e 20   max() function 
12610 73 65 61 72 63 68 65 73 20 69 74 73 20 61 72 67  searches its arg
12620 75 6d 65 6e 74 73 20 66 72 6f 6d 20 6c 65 66 74  uments from left
12630 20 74 6f 20 72 69 67 68 74 0a 20 20 66 6f 72 20   to right.  for 
12640 61 6e 20 61 72 67 75 6d 65 6e 74 20 74 68 61 74  an argument that
12650 20 64 65 66 69 6e 65 73 20 61 20 63 6f 6c 6c 61   defines a colla
12660 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e 20 61 6e  ting function an
12670 64 20 75 73 65 73 20 74 68 61 74 20 63 6f 6c 6c  d uses that coll
12680 61 74 69 6e 67 0a 20 20 66 75 6e 63 74 69 6f 6e  ating.  function
12690 20 66 6f 72 20 61 6c 6c 20 73 74 72 69 6e 67 20   for all string 
126a0 63 6f 6d 70 61 72 69 73 6f 6e 73 2e 20 20 5e 49  comparisons.  ^I
126b0 66 20 6e 6f 6e 65 20 6f 66 20 74 68 65 20 61 72  f none of the ar
126c0 67 75 6d 65 6e 74 73 20 74 6f 20 6d 61 78 28 29  guments to max()
126d0 0a 20 20 64 65 66 69 6e 65 20 61 20 63 6f 6c 6c  .  define a coll
126e0 61 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e 2c 20  ating function, 
126f0 74 68 65 6e 20 74 68 65 20 42 49 4e 41 52 59 20  then the BINARY 
12700 63 6f 6c 6c 61 74 69 6e 67 20 66 75 6e 63 74 69  collating functi
12710 6f 6e 20 69 73 20 75 73 65 64 2e 0a 20 20 4e 6f  on is used..  No
12720 74 65 20 74 68 61 74 20 3c 62 3e 6d 61 78 28 29  te that <b>max()
12730 3c 2f 62 3e 20 69 73 20 61 20 73 69 6d 70 6c 65  </b> is a simple
12740 20 66 75 6e 63 74 69 6f 6e 20 77 68 65 6e 0a 20   function when. 
12750 20 69 74 20 68 61 73 20 32 20 6f 72 20 6d 6f 72   it has 2 or mor
12760 65 20 61 72 67 75 6d 65 6e 74 73 20 62 75 74 20  e arguments but 
12770 6f 70 65 72 61 74 65 73 20 61 73 20 61 6e 0a 20  operates as an. 
12780 20 5b 6d 69 6e 41 67 67 46 75 6e 63 20 7c 20 61   [minAggFunc | a
12790 67 67 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f  ggregate functio
127a0 6e 5d 20 69 66 20 67 69 76 65 6e 20 6f 6e 6c 79  n] if given only
127b0 20 61 20 73 69 6e 67 6c 65 20 61 72 67 75 6d 65   a single argume
127c0 6e 74 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b  nt..}..funcdef {
127d0 6d 69 6e 28 58 2c 59 2c 2e 2e 2e 29 7d 20 7b 2a  min(X,Y,...)} {*
127e0 6d 69 6e 43 6f 72 65 46 75 6e 63 20 2a 6d 69 6e  minCoreFunc *min
127f0 20 7b 6d 69 6e 28 29 20 53 51 4c 20 66 75 6e 63   {min() SQL func
12800 74 69 6f 6e 7d 7d 20 7b 0a 20 20 5e 54 68 65 20  tion}} {.  ^The 
12810 6d 75 6c 74 69 2d 61 72 67 75 6d 65 6e 74 20 6d  multi-argument m
12820 69 6e 28 29 20 66 75 6e 63 74 69 6f 6e 20 72 65  in() function re
12830 74 75 72 6e 73 20 74 68 65 20 61 72 67 75 6d 65  turns the argume
12840 6e 74 20 77 69 74 68 20 74 68 65 0a 20 20 6d 69  nt with the.  mi
12850 6e 69 6d 75 6d 20 76 61 6c 75 65 2e 0a 20 20 5e  nimum value..  ^
12860 54 68 65 20 6d 75 6c 74 69 2d 61 72 67 75 6d 65  The multi-argume
12870 6e 74 20 6d 69 6e 28 29 20 66 75 6e 63 74 69 6f  nt min() functio
12880 6e 20 73 65 61 72 63 68 65 73 20 69 74 73 20 61  n searches its a
12890 72 67 75 6d 65 6e 74 73 20 66 72 6f 6d 20 6c 65  rguments from le
128a0 66 74 20 74 6f 20 72 69 67 68 74 0a 20 20 66 6f  ft to right.  fo
128b0 72 20 61 6e 20 61 72 67 75 6d 65 6e 74 20 74 68  r an argument th
128c0 61 74 20 64 65 66 69 6e 65 73 20 61 20 63 6f 6c  at defines a col
128d0 6c 61 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e 20  lating function 
128e0 61 6e 64 20 75 73 65 73 20 74 68 61 74 20 63 6f  and uses that co
128f0 6c 6c 61 74 69 6e 67 0a 20 20 66 75 6e 63 74 69  llating.  functi
12900 6f 6e 20 66 6f 72 20 61 6c 6c 20 73 74 72 69 6e  on for all strin
12910 67 20 63 6f 6d 70 61 72 69 73 6f 6e 73 2e 20 20  g comparisons.  
12920 5e 49 66 20 6e 6f 6e 65 20 6f 66 20 74 68 65 20  ^If none of the 
12930 61 72 67 75 6d 65 6e 74 73 20 74 6f 20 6d 69 6e  arguments to min
12940 28 29 0a 20 20 64 65 66 69 6e 65 20 61 20 63 6f  ().  define a co
12950 6c 6c 61 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e  llating function
12960 2c 20 74 68 65 6e 20 74 68 65 20 42 49 4e 41 52  , then the BINAR
12970 59 20 63 6f 6c 6c 61 74 69 6e 67 20 66 75 6e 63  Y collating func
12980 74 69 6f 6e 20 69 73 20 75 73 65 64 2e 0a 20 20  tion is used..  
12990 4e 6f 74 65 20 74 68 61 74 20 3c 62 3e 6d 69 6e  Note that <b>min
129a0 28 29 3c 2f 62 3e 20 69 73 20 61 20 73 69 6d 70  ()</b> is a simp
129b0 6c 65 20 66 75 6e 63 74 69 6f 6e 20 77 68 65 6e  le function when
129c0 0a 20 20 69 74 20 68 61 73 20 32 20 6f 72 20 6d  .  it has 2 or m
129d0 6f 72 65 20 61 72 67 75 6d 65 6e 74 73 20 62 75  ore arguments bu
129e0 74 20 6f 70 65 72 61 74 65 73 20 61 73 20 61 6e  t operates as an
129f0 20 0a 20 20 5b 6d 61 78 41 67 67 46 75 6e 63 20   .  [maxAggFunc 
12a00 7c 20 61 67 67 72 65 67 61 74 65 20 66 75 6e 63  | aggregate func
12a10 74 69 6f 6e 5d 20 69 66 20 67 69 76 65 6e 0a 20  tion] if given. 
12a20 20 6f 6e 6c 79 20 61 20 73 69 6e 67 6c 65 20 61   only a single a
12a30 72 67 75 6d 65 6e 74 2e 0a 7d 0a 0a 66 75 6e 63  rgument..}..func
12a40 64 65 66 20 7b 6e 75 6c 6c 69 66 28 58 2c 59 29  def {nullif(X,Y)
12a50 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20 6e 75  } {} {.  ^The nu
12a60 6c 6c 69 66 28 58 2c 59 29 20 66 75 6e 63 74 69  llif(X,Y) functi
12a70 6f 6e 20 72 65 74 75 72 6e 73 20 69 74 73 20 66  on returns its f
12a80 69 72 73 74 20 61 72 67 75 6d 65 6e 74 20 69 66  irst argument if
12a90 20 74 68 65 20 61 72 67 75 6d 65 6e 74 73 20 61   the arguments a
12aa0 72 65 0a 20 20 64 69 66 66 65 72 65 6e 74 20 61  re.  different a
12ab0 6e 64 20 4e 55 4c 4c 20 69 66 20 74 68 65 20 61  nd NULL if the a
12ac0 72 67 75 6d 65 6e 74 73 20 61 72 65 20 74 68 65  rguments are the
12ad0 20 73 61 6d 65 2e 20 20 5e 54 68 65 20 6e 75 6c   same.  ^The nul
12ae0 6c 69 66 28 58 2c 59 29 20 66 75 6e 63 74 69 6f  lif(X,Y) functio
12af0 6e 0a 20 20 73 65 61 72 63 68 65 73 20 69 74 73  n.  searches its
12b00 20 61 72 67 75 6d 65 6e 74 73 20 66 72 6f 6d 20   arguments from 
12b10 6c 65 66 74 20 74 6f 20 72 69 67 68 74 20 66 6f  left to right fo
12b20 72 20 61 6e 20 61 72 67 75 6d 65 6e 74 20 74 68  r an argument th
12b30 61 74 20 64 65 66 69 6e 65 73 20 61 0a 20 20 63  at defines a.  c
12b40 6f 6c 6c 61 74 69 6e 67 20 66 75 6e 63 74 69 6f  ollating functio
12b50 6e 20 61 6e 64 20 75 73 65 73 20 74 68 61 74 20  n and uses that 
12b60 63 6f 6c 6c 61 74 69 6e 67 20 66 75 6e 63 74 69  collating functi
12b70 6f 6e 20 66 6f 72 20 61 6c 6c 20 73 74 72 69 6e  on for all strin
12b80 67 0a 20 20 63 6f 6d 70 61 72 69 73 6f 6e 73 2e  g.  comparisons.
12b90 20 20 5e 49 66 20 6e 65 69 74 68 65 72 20 61 72    ^If neither ar
12ba0 67 75 6d 65 6e 74 20 74 6f 20 6e 75 6c 6c 69 66  gument to nullif
12bb0 28 29 20 64 65 66 69 6e 65 73 20 61 20 63 6f 6c  () defines a col
12bc0 6c 61 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e 0a  lating function.
12bd0 20 20 74 68 65 6e 20 74 68 65 20 42 49 4e 41 52    then the BINAR
12be0 59 20 69 73 20 75 73 65 64 2e 0a 7d 0a 0a 66 75  Y is used..}..fu
12bf0 6e 63 64 65 66 20 7b 71 75 6f 74 65 28 58 29 7d  ncdef {quote(X)}
12c00 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20 71 75 6f   {} {.  ^The quo
12c10 74 65 28 58 29 20 66 75 6e 63 74 69 6f 6e 20 72  te(X) function r
12c20 65 74 75 72 6e 73 20 61 20 73 74 72 69 6e 67 20  eturns a string 
12c30 77 68 69 63 68 20 69 73 20 74 68 65 20 76 61 6c  which is the val
12c40 75 65 20 6f 66 0a 20 20 69 74 73 20 61 72 67 75  ue of.  its argu
12c50 6d 65 6e 74 20 73 75 69 74 61 62 6c 65 20 66 6f  ment suitable fo
12c60 72 20 69 6e 63 6c 75 73 69 6f 6e 20 69 6e 74 6f  r inclusion into
12c70 20 61 6e 6f 74 68 65 72 20 53 51 4c 20 73 74 61   another SQL sta
12c80 74 65 6d 65 6e 74 2e 0a 20 20 5e 53 74 72 69 6e  tement..  ^Strin
12c90 67 73 20 61 72 65 20 73 75 72 72 6f 75 6e 64 65  gs are surrounde
12ca0 64 20 62 79 20 73 69 6e 67 6c 65 2d 71 75 6f 74  d by single-quot
12cb0 65 73 20 77 69 74 68 20 65 73 63 61 70 65 73 20  es with escapes 
12cc0 6f 6e 20 69 6e 74 65 72 69 6f 72 20 71 75 6f 74  on interior quot
12cd0 65 73 0a 20 20 61 73 20 6e 65 65 64 65 64 2e 20  es.  as needed. 
12ce0 20 5e 42 4c 4f 42 73 20 61 72 65 20 65 6e 63 6f   ^BLOBs are enco
12cf0 64 65 64 20 61 73 20 68 65 78 61 64 65 63 69 6d  ded as hexadecim
12d00 61 6c 20 6c 69 74 65 72 61 6c 73 2e 0a 7d 0a 0a  al literals..}..
12d10 66 75 6e 63 64 65 66 20 7b 72 61 6e 64 6f 6d 28  funcdef {random(
12d20 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20 72  )} {} {.  ^The r
12d30 61 6e 64 6f 6d 28 29 20 66 75 6e 63 74 69 6f 6e  andom() function
12d40 20 72 65 74 75 72 6e 73 20 61 20 70 73 65 75 64   returns a pseud
12d50 6f 2d 72 61 6e 64 6f 6d 20 69 6e 74 65 67 65 72  o-random integer
12d60 0a 20 20 62 65 74 77 65 65 6e 20 2d 39 32 32 33  .  between -9223
12d70 33 37 32 30 33 36 38 35 34 37 37 35 38 30 38 20  372036854775808 
12d80 61 6e 64 20 2b 39 32 32 33 33 37 32 30 33 36 38  and +92233720368
12d90 35 34 37 37 35 38 30 37 2e 0a 7d 0a 0a 66 75 6e  54775807..}..fun
12da0 63 64 65 66 20 7b 72 61 6e 64 6f 6d 62 6c 6f 62  cdef {randomblob
12db0 28 4e 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68 65  (N)} {} {.  ^The
12dc0 20 72 61 6e 64 6f 6d 62 6c 6f 62 28 4e 29 20 66   randomblob(N) f
12dd0 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 20 61  unction return a
12de0 6e 20 4e 2d 62 79 74 65 20 62 6c 6f 62 20 63 6f  n N-byte blob co
12df0 6e 74 61 69 6e 69 6e 67 20 70 73 65 75 64 6f 2d  ntaining pseudo-
12e00 72 61 6e 64 6f 6d 0a 20 20 62 79 74 65 73 2e 20  random.  bytes. 
12e10 5e 49 66 20 4e 20 69 73 20 6c 65 73 73 20 74 68  ^If N is less th
12e20 61 6e 20 31 20 74 68 65 6e 20 61 20 31 2d 62 79  an 1 then a 1-by
12e30 74 65 20 72 61 6e 64 6f 6d 20 62 6c 6f 62 20 69  te random blob i
12e40 73 20 72 65 74 75 72 6e 65 64 2e 0a 0a 20 20 3c  s returned...  <
12e50 70 3e 48 69 6e 74 3a 20 20 61 70 70 6c 69 63 61  p>Hint:  applica
12e60 74 69 6f 6e 73 20 63 61 6e 20 67 65 6e 65 72 61  tions can genera
12e70 74 65 20 67 6c 6f 62 61 6c 6c 79 20 75 6e 69 71  te globally uniq
12e80 75 65 20 69 64 65 6e 74 69 66 69 65 72 73 0a 20  ue identifiers. 
12e90 20 75 73 69 6e 67 20 74 68 69 73 20 66 75 6e 63   using this func
12ea0 74 69 6f 6e 20 74 6f 67 65 74 68 65 72 20 77 69  tion together wi
12eb0 74 68 20 5b 68 65 78 28 29 5d 20 61 6e 64 2f 6f  th [hex()] and/o
12ec0 72 0a 20 20 5b 6c 6f 77 65 72 28 29 5d 20 6c 69  r.  [lower()] li
12ed0 6b 65 20 74 68 69 73 3a 3c 2f 70 3e 0a 0a 20 20  ke this:</p>..  
12ee0 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 20 20 68  <blockquote>.  h
12ef0 65 78 28 72 61 6e 64 6f 6d 62 6c 6f 62 28 31 36  ex(randomblob(16
12f00 29 29 3c 62 72 3e 3c 2f 62 72 3e 0a 20 20 6c 6f  ))<br></br>.  lo
12f10 77 65 72 28 68 65 78 28 72 61 6e 64 6f 6d 62 6c  wer(hex(randombl
12f20 6f 62 28 31 36 29 29 29 0a 20 20 3c 2f 62 6c 6f  ob(16))).  </blo
12f30 63 6b 71 75 6f 74 65 3e 0a 7d 0a 0a 66 75 6e 63  ckquote>.}..func
12f40 64 65 66 20 7b 72 65 70 6c 61 63 65 28 58 2c 59  def {replace(X,Y
12f50 2c 5a 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68 65  ,Z)} {} {.  ^The
12f60 20 72 65 70 6c 61 63 65 28 58 2c 59 2c 5a 29 20   replace(X,Y,Z) 
12f70 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73  function returns
12f80 20 61 20 73 74 72 69 6e 67 20 66 6f 72 6d 65 64   a string formed
12f90 20 62 79 20 73 75 62 73 74 69 74 75 74 69 6e 67   by substituting
12fa0 0a 20 20 73 74 72 69 6e 67 20 5a 20 66 6f 72 20  .  string Z for 
12fb0 65 76 65 72 79 20 6f 63 63 75 72 72 65 6e 63 65  every occurrence
12fc0 20 6f 66 20 73 74 72 69 6e 67 20 59 20 69 6e 20   of string Y in 
12fd0 73 74 72 69 6e 67 20 58 2e 20 20 5e 54 68 65 20  string X.  ^The 
12fe0 5b 42 49 4e 41 52 59 5d 0a 20 20 63 6f 6c 6c 61  [BINARY].  colla
12ff0 74 69 6e 67 20 73 65 71 75 65 6e 63 65 20 69 73  ting sequence is
13000 20 75 73 65 64 20 66 6f 72 20 63 6f 6d 70 61 72   used for compar
13010 69 73 6f 6e 73 2e 20 20 5e 49 66 20 59 20 69 73  isons.  ^If Y is
13020 20 61 6e 20 65 6d 70 74 79 0a 20 20 73 74 72 69   an empty.  stri
13030 6e 67 20 74 68 65 6e 20 72 65 74 75 72 6e 20 58  ng then return X
13040 20 75 6e 63 68 61 6e 67 65 64 2e 20 20 5e 49 66   unchanged.  ^If
13050 20 5a 20 69 73 20 6e 6f 74 20 69 6e 69 74 69 61   Z is not initia
13060 6c 6c 79 0a 20 20 61 20 73 74 72 69 6e 67 2c 20  lly.  a string, 
13070 69 74 20 69 73 20 63 61 73 74 20 74 6f 20 61 20  it is cast to a 
13080 55 54 46 2d 38 20 73 74 72 69 6e 67 20 70 72 69  UTF-8 string pri
13090 6f 72 20 74 6f 20 70 72 6f 63 65 73 73 69 6e 67  or to processing
130a0 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 72 6f  ..}..funcdef {ro
130b0 75 6e 64 28 58 29 20 72 6f 75 6e 64 28 58 2c 59  und(X) round(X,Y
130c0 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20 72  )} {} {.  ^The r
130d0 6f 75 6e 64 28 58 2c 59 29 20 66 75 6e 63 74 69  ound(X,Y) functi
130e0 6f 6e 20 72 65 74 75 72 6e 73 20 61 20 73 74 72  on returns a str
130f0 69 6e 67 20 72 65 70 72 65 73 65 6e 74 61 74 69  ing representati
13100 6f 6e 20 6f 66 20 74 68 65 20 66 6c 6f 61 74 69  on of the floati
13110 6e 67 2d 70 6f 69 6e 74 0a 20 20 76 61 6c 75 65  ng-point.  value
13120 20 58 20 72 6f 75 6e 64 65 64 20 74 6f 20 59 20   X rounded to Y 
13130 64 69 67 69 74 73 20 74 6f 20 74 68 65 20 72 69  digits to the ri
13140 67 68 74 20 6f 66 20 74 68 65 20 64 65 63 69 6d  ght of the decim
13150 61 6c 20 70 6f 69 6e 74 2e 0a 20 20 5e 49 66 20  al point..  ^If 
13160 74 68 65 20 59 20 61 72 67 75 6d 65 6e 74 20 69  the Y argument i
13170 73 20 6f 6d 69 74 74 65 64 2c 20 74 68 65 20 58  s omitted, the X
13180 20 76 61 6c 75 65 20 69 73 20 74 72 75 6e 63 61   value is trunca
13190 74 65 64 20 74 6f 20 61 6e 20 69 6e 74 65 67 65  ted to an intege
131a0 72 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 72  r..}..funcdef {r
131b0 74 72 69 6d 28 58 29 20 72 74 72 69 6d 28 58 2c  trim(X) rtrim(X,
131c0 59 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20  Y)} {} {.  ^The 
131d0 72 74 72 69 6d 28 58 2c 59 29 20 66 75 6e 63 74  rtrim(X,Y) funct
131e0 69 6f 6e 20 72 65 74 75 72 6e 73 20 61 20 73 74  ion returns a st
131f0 72 69 6e 67 20 66 6f 72 6d 65 64 20 62 79 20 72  ring formed by r
13200 65 6d 6f 76 69 6e 67 20 61 6e 79 20 61 6e 64 20  emoving any and 
13210 61 6c 6c 0a 20 20 63 68 61 72 61 63 74 65 72 73  all.  characters
13220 20 74 68 61 74 20 61 70 70 65 61 72 20 69 6e 20   that appear in 
13230 59 20 66 72 6f 6d 20 74 68 65 20 72 69 67 68 74  Y from the right
13240 20 73 69 64 65 20 6f 66 20 58 2e 0a 20 20 5e 49   side of X..  ^I
13250 66 20 74 68 65 20 59 20 61 72 67 75 6d 65 6e 74  f the Y argument
13260 20 69 73 20 6f 6d 69 74 74 65 64 2c 20 72 74 72   is omitted, rtr
13270 69 6d 28 58 29 20 72 65 6d 6f 76 65 73 20 73 70  im(X) removes sp
13280 61 63 65 73 20 66 72 6f 6d 20 74 68 65 20 72 69  aces from the ri
13290 67 68 74 0a 20 20 73 69 64 65 20 6f 66 20 58 2e  ght.  side of X.
132a0 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 73 6f 75  .}..funcdef {sou
132b0 6e 64 65 78 28 58 29 7d 20 7b 7d 20 7b 0a 20 20  ndex(X)} {} {.  
132c0 5e 54 68 65 20 73 6f 75 6e 64 65 78 28 58 29 20  ^The soundex(X) 
132d0 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73  function returns
132e0 20 61 20 73 74 72 69 6e 67 20 74 68 61 74 20 69   a string that i
132f0 73 20 74 68 65 20 73 6f 75 6e 64 65 78 20 65 6e  s the soundex en
13300 63 6f 64 69 6e 67 20 0a 20 20 6f 66 20 74 68 65  coding .  of the
13310 20 73 74 72 69 6e 67 20 58 2e 0a 20 20 5e 54 68   string X..  ^Th
13320 65 20 73 74 72 69 6e 67 20 22 3f 30 30 30 22 20  e string "?000" 
13330 69 73 20 72 65 74 75 72 6e 65 64 20 69 66 20 74  is returned if t
13340 68 65 20 61 72 67 75 6d 65 6e 74 20 69 73 20 4e  he argument is N
13350 55 4c 4c 20 6f 72 20 63 6f 6e 74 61 69 6e 73 0a  ULL or contains.
13360 20 20 6e 6f 20 41 53 43 49 49 20 61 6c 70 68 61    no ASCII alpha
13370 62 65 74 69 63 20 63 68 61 72 61 63 74 65 72 73  betic characters
13380 2e 0a 20 20 5e 28 54 68 69 73 20 66 75 6e 63 74  ..  ^(This funct
13390 69 6f 6e 20 69 73 20 6f 6d 69 74 74 65 64 20 66  ion is omitted f
133a0 72 6f 6d 20 53 51 4c 69 74 65 20 62 79 20 64 65  rom SQLite by de
133b0 66 61 75 6c 74 2e 0a 20 20 49 74 20 69 73 20 6f  fault..  It is o
133c0 6e 6c 79 20 61 76 61 69 6c 61 62 6c 65 20 69 66  nly available if
133d0 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 53 4f 55   the [SQLITE_SOU
133e0 4e 44 45 58 5d 20 63 6f 6d 70 69 6c 65 2d 74 69  NDEX] compile-ti
133f0 6d 65 20 6f 70 74 69 6f 6e 0a 20 20 69 73 20 75  me option.  is u
13400 73 65 64 20 77 68 65 6e 20 53 51 4c 69 74 65 20  sed when SQLite 
13410 69 73 20 62 75 69 6c 74 2e 29 5e 0a 7d 0a 0a 66  is built.)^.}..f
13420 75 6e 63 64 65 66 20 7b 73 71 6c 69 74 65 5f 63  uncdef {sqlite_c
13430 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 67 65 74  ompileoption_get
13440 28 4e 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68 65  (N)} {} {.  ^The
13450 20 73 71 6c 69 74 65 5f 63 6f 6d 70 69 6c 65 6f   sqlite_compileo
13460 70 74 69 6f 6e 5f 67 65 74 28 29 20 53 51 4c 20  ption_get() SQL 
13470 66 75 6e 63 74 69 6f 6e 20 69 73 20 61 20 77 72  function is a wr
13480 61 70 70 65 72 20 61 72 6f 75 6e 64 20 74 68 65  apper around the
13490 0a 20 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6d 70  .  [sqlite3_comp
134a0 69 6c 65 6f 70 74 69 6f 6e 5f 67 65 74 28 29 5d  ileoption_get()]
134b0 20 43 2f 43 2b 2b 20 66 75 6e 63 74 69 6f 6e 2e   C/C++ function.
134c0 0a 20 20 5e 54 68 69 73 20 72 6f 75 74 69 6e 65  .  ^This routine
134d0 20 72 65 74 75 72 6e 73 20 74 68 65 20 4e 2d 74   returns the N-t
134e0 68 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  h compile-time o
134f0 70 74 69 6f 6e 20 75 73 65 64 20 74 6f 20 62 75  ption used to bu
13500 69 6c 64 20 53 51 4c 69 74 65 0a 20 20 6f 72 20  ild SQLite.  or 
13510 4e 55 4c 4c 20 69 66 20 4e 20 69 73 20 6f 75 74  NULL if N is out
13520 20 6f 66 20 72 61 6e 67 65 2e 20 20 53 65 65 20   of range.  See 
13530 61 6c 73 6f 20 74 68 65 20 5b 63 6f 6d 70 69 6c  also the [compil
13540 65 5f 6f 70 74 69 6f 6e 73 20 70 72 61 67 6d 61  e_options pragma
13550 5d 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 73  ]..}..funcdef {s
13560 71 6c 69 74 65 5f 63 6f 6d 70 69 6c 65 6f 70 74  qlite_compileopt
13570 69 6f 6e 5f 75 73 65 64 28 58 29 7d 20 7b 7d 20  ion_used(X)} {} 
13580 7b 0a 20 20 5e 54 68 65 20 73 71 6c 69 74 65 5f  {.  ^The sqlite_
13590 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 75 73  compileoption_us
135a0 65 64 28 29 20 53 51 4c 20 66 75 6e 63 74 69 6f  ed() SQL functio
135b0 6e 20 69 73 20 61 20 77 72 61 70 70 65 72 20 61  n is a wrapper a
135c0 72 6f 75 6e 64 20 74 68 65 0a 20 20 5b 73 71 6c  round the.  [sql
135d0 69 74 65 33 5f 63 6f 6d 70 69 6c 65 6f 70 74 69  ite3_compileopti
135e0 6f 6e 5f 75 73 65 64 28 29 5d 20 43 2f 43 2b 2b  on_used()] C/C++
135f0 20 66 75 6e 63 74 69 6f 6e 2e 0a 20 20 5e 57 68   function..  ^Wh
13600 65 6e 20 74 68 65 20 61 72 67 75 6d 65 6e 74 20  en the argument 
13610 58 20 74 6f 20 73 71 6c 69 74 65 5f 63 6f 6d 70  X to sqlite_comp
13620 69 6c 65 6f 70 74 69 6f 6e 5f 75 73 65 64 28 58  ileoption_used(X
13630 29 20 69 73 20 61 20 73 74 72 69 6e 67 20 77 68  ) is a string wh
13640 69 63 68 0a 20 20 69 73 20 74 68 65 20 6e 61 6d  ich.  is the nam
13650 65 20 6f 66 20 61 20 63 6f 6d 70 69 6c 65 2d 74  e of a compile-t
13660 69 6d 65 20 6f 70 74 69 6f 6e 2c 20 74 68 69 73  ime option, this
13670 20 72 6f 75 74 69 6e 65 20 72 65 74 75 72 6e 73   routine returns
13680 20 74 72 75 65 20 28 31 29 20 6f 72 0a 20 20 66   true (1) or.  f
13690 61 6c 73 65 20 28 30 29 20 64 65 70 65 6e 64 69  alse (0) dependi
136a0 6e 67 20 6f 6e 20 77 68 65 74 68 65 72 20 6f 72  ng on whether or
136b0 20 6e 6f 74 20 74 68 61 74 20 6f 70 74 69 6f 6e   not that option
136c0 20 77 61 73 20 75 73 65 64 20 64 75 72 69 6e 67   was used during
136d0 20 74 68 65 0a 20 20 62 75 69 6c 64 2e 0a 7d 0a   the.  build..}.
136e0 0a 66 75 6e 63 64 65 66 20 7b 73 71 6c 69 74 65  .funcdef {sqlite
136f0 5f 73 6f 75 72 63 65 5f 69 64 28 29 7d 20 7b 7d  _source_id()} {}
13700 20 7b 0a 20 20 5e 54 68 65 20 73 71 6c 69 74 65   {.  ^The sqlite
13710 5f 73 6f 75 72 63 65 5f 69 64 28 29 20 66 75 6e  _source_id() fun
13720 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 61 20  ction returns a 
13730 73 74 72 69 6e 67 20 74 68 61 74 20 69 64 65 6e  string that iden
13740 74 69 66 69 65 73 20 74 68 65 0a 20 20 73 70 65  tifies the.  spe
13750 63 69 66 69 63 20 76 65 72 73 69 6f 6e 20 6f 66  cific version of
13760 20 74 68 65 20 73 6f 75 72 63 65 20 63 6f 64 65   the source code
13770 20 74 68 61 74 20 77 61 73 20 75 73 65 64 20 74   that was used t
13780 6f 20 62 75 69 6c 64 20 74 68 65 20 53 51 4c 69  o build the SQLi
13790 74 65 0a 20 20 6c 69 62 72 61 72 79 2e 20 20 5e  te.  library.  ^
137a0 54 68 65 20 73 74 72 69 6e 67 20 72 65 74 75 72  The string retur
137b0 6e 65 64 20 62 79 20 73 71 6c 69 74 65 5f 73 6f  ned by sqlite_so
137c0 75 72 63 65 5f 69 64 28 29 20 62 65 67 69 6e 73  urce_id() begins
137d0 20 77 69 74 68 0a 20 20 74 68 65 20 64 61 74 65   with.  the date
137e0 20 61 6e 64 20 74 69 6d 65 20 74 68 61 74 20 74   and time that t
137f0 68 65 20 73 6f 75 72 63 65 20 63 6f 64 65 20 77  he source code w
13800 61 73 20 63 68 65 63 6b 65 64 20 69 6e 20 61 6e  as checked in an
13810 64 20 69 73 20 66 6f 6c 6c 6f 77 73 20 62 79 0a  d is follows by.
13820 20 20 61 6e 20 53 48 41 31 20 68 61 73 68 20 74    an SHA1 hash t
13830 68 61 74 20 75 6e 69 71 75 65 6c 79 20 69 64 65  hat uniquely ide
13840 6e 74 69 66 69 65 73 20 74 68 65 20 73 6f 75 72  ntifies the sour
13850 63 65 20 74 72 65 65 2e 20 20 5e 54 68 69 73 20  ce tree.  ^This 
13860 66 75 6e 63 74 69 6f 6e 20 69 73 0a 20 20 61 6e  function is.  an
13870 20 53 51 4c 20 77 72 61 70 70 65 72 20 61 72 6f   SQL wrapper aro
13880 75 6e 64 20 74 68 65 20 5b 73 71 6c 69 74 65 33  und the [sqlite3
13890 5f 73 6f 75 72 63 65 69 64 28 29 5d 20 43 20 69  _sourceid()] C i
138a0 6e 74 65 72 66 61 63 65 2e 0a 7d 0a 0a 66 75 6e  nterface..}..fun
138b0 63 64 65 66 20 7b 73 71 6c 69 74 65 5f 76 65 72  cdef {sqlite_ver
138c0 73 69 6f 6e 28 29 7d 20 7b 7d 20 7b 0a 20 20 5e  sion()} {} {.  ^
138d0 54 68 65 20 73 71 6c 69 74 65 5f 76 65 72 73 69  The sqlite_versi
138e0 6f 6e 28 29 20 66 75 6e 63 74 69 6f 6e 20 72 65  on() function re
138f0 74 75 72 6e 73 20 74 68 65 20 76 65 72 73 69 6f  turns the versio
13900 6e 20 73 74 72 69 6e 67 20 66 6f 72 20 74 68 65  n string for the
13910 20 53 51 4c 69 74 65 0a 20 20 6c 69 62 72 61 72   SQLite.  librar
13920 79 20 74 68 61 74 20 69 73 20 72 75 6e 6e 69 6e  y that is runnin
13930 67 2e 20 20 5e 54 68 69 73 20 66 75 6e 63 74 69  g.  ^This functi
13940 6f 6e 20 69 73 20 61 6e 20 53 51 4c 0a 20 20 77  on is an SQL.  w
13950 72 61 70 70 65 72 20 61 72 6f 75 6e 64 20 74 68  rapper around th
13960 65 20 5b 73 71 6c 69 74 65 33 5f 6c 69 62 76 65  e [sqlite3_libve
13970 72 73 69 6f 6e 28 29 5d 20 43 2d 69 6e 74 65 72  rsion()] C-inter
13980 66 61 63 65 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66  face..}..funcdef
13990 20 7b 73 75 62 73 74 72 28 58 2c 59 2c 5a 29 20   {substr(X,Y,Z) 
139a0 73 75 62 73 74 72 28 58 2c 59 29 7d 20 7b 7d 20  substr(X,Y)} {} 
139b0 7b 0a 20 20 5e 54 68 65 20 73 75 62 73 74 72 28  {.  ^The substr(
139c0 58 2c 59 2c 5a 29 20 66 75 6e 63 74 69 6f 6e 20  X,Y,Z) function 
139d0 72 65 74 75 72 6e 73 20 61 20 73 75 62 73 74 72  returns a substr
139e0 69 6e 67 20 6f 66 20 69 6e 70 75 74 20 73 74 72  ing of input str
139f0 69 6e 67 20 58 20 74 68 61 74 20 62 65 67 69 6e  ing X that begin
13a00 73 0a 20 20 77 69 74 68 20 74 68 65 20 59 2d 74  s.  with the Y-t
13a10 68 20 63 68 61 72 61 63 74 65 72 20 61 6e 64 20  h character and 
13a20 77 68 69 63 68 20 69 73 20 5a 20 63 68 61 72 61  which is Z chara
13a30 63 74 65 72 73 20 6c 6f 6e 67 2e 0a 20 20 5e 49  cters long..  ^I
13a40 66 20 5a 20 69 73 20 6f 6d 69 74 74 65 64 20 74  f Z is omitted t
13a50 68 65 6e 20 73 75 62 73 74 72 28 58 2c 59 29 20  hen substr(X,Y) 
13a60 72 65 74 75 72 6e 73 20 61 6c 6c 20 63 68 61 72  returns all char
13a70 61 63 74 65 72 73 20 74 68 72 6f 75 67 68 20 74  acters through t
13a80 68 65 20 65 6e 64 0a 20 20 6f 66 20 74 68 65 20  he end.  of the 
13a90 73 74 72 69 6e 67 20 58 20 62 65 67 69 6e 6e 69  string X beginni
13aa0 6e 67 20 77 69 74 68 20 74 68 65 20 59 2d 74 68  ng with the Y-th
13ab0 2e 0a 20 20 5e 54 68 65 20 6c 65 66 74 2d 6d 6f  ..  ^The left-mo
13ac0 73 74 20 63 68 61 72 61 63 74 65 72 20 6f 66 20  st character of 
13ad0 58 20 69 73 20 6e 75 6d 62 65 72 20 31 2e 20 20  X is number 1.  
13ae0 5e 49 66 20 59 20 69 73 20 6e 65 67 61 74 69 76  ^If Y is negativ
13af0 65 0a 20 20 74 68 65 6e 20 74 68 65 20 66 69 72  e.  then the fir
13b00 73 74 20 63 68 61 72 61 63 74 65 72 20 6f 66 20  st character of 
13b10 74 68 65 20 73 75 62 73 74 72 69 6e 67 20 69 73  the substring is
13b20 20 66 6f 75 6e 64 20 62 79 20 63 6f 75 6e 74 69   found by counti
13b30 6e 67 20 66 72 6f 6d 20 74 68 65 0a 20 20 72 69  ng from the.  ri
13b40 67 68 74 20 72 61 74 68 65 72 20 74 68 61 6e 20  ght rather than 
13b50 74 68 65 20 6c 65 66 74 2e 20 20 5e 49 66 20 5a  the left.  ^If Z
13b60 20 69 73 20 6e 65 67 61 74 69 76 65 20 74 68 65   is negative the
13b70 6e 0a 20 20 74 68 65 20 61 62 73 28 5a 29 20 63  n.  the abs(Z) c
13b80 68 61 72 61 63 74 65 72 73 20 70 72 65 63 65 64  haracters preced
13b90 69 6e 67 20 74 68 65 20 59 2d 74 68 20 63 68 61  ing the Y-th cha
13ba0 72 61 63 74 65 72 20 61 72 65 20 72 65 74 75 72  racter are retur
13bb0 6e 65 64 2e 0a 20 20 5e 49 66 20 58 20 69 73 20  ned..  ^If X is 
13bc0 61 20 73 74 72 69 6e 67 20 74 68 65 6e 20 63 68  a string then ch
13bd0 61 72 61 63 74 65 72 73 20 69 6e 64 69 63 65 73  aracters indices
13be0 20 72 65 66 65 72 20 74 6f 20 61 63 74 75 61 6c   refer to actual
13bf0 20 55 54 46 2d 38 20 0a 20 20 63 68 61 72 61 63   UTF-8 .  charac
13c00 74 65 72 73 2e 20 20 5e 49 66 20 58 20 69 73 20  ters.  ^If X is 
13c10 61 20 42 4c 4f 42 20 74 68 65 6e 20 74 68 65 20  a BLOB then the 
13c20 69 6e 64 69 63 65 73 20 72 65 66 65 72 20 74 6f  indices refer to
13c30 20 62 79 74 65 73 2e 0a 7d 0a 0a 66 75 6e 63 64   bytes..}..funcd
13c40 65 66 20 7b 74 6f 74 61 6c 5f 63 68 61 6e 67 65  ef {total_change
13c50 73 28 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68 65  s()} {} {.  ^The
13c60 20 74 6f 74 61 6c 5f 63 68 61 6e 67 65 73 28 29   total_changes()
13c70 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e   function return
13c80 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  s the number of 
13c90 72 6f 77 20 63 68 61 6e 67 65 73 0a 20 20 63 61  row changes.  ca
13ca0 75 73 65 64 20 62 79 20 49 4e 53 45 52 54 2c 20  used by INSERT, 
13cb0 55 50 44 41 54 45 20 6f 72 20 44 45 4c 45 54 45  UPDATE or DELETE
13cc0 0a 20 20 73 74 61 74 65 6d 65 6e 74 73 20 73 69  .  statements si
13cd0 6e 63 65 20 74 68 65 20 63 75 72 72 65 6e 74 20  nce the current 
13ce0 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
13cf0 69 6f 6e 20 77 61 73 20 6f 70 65 6e 65 64 2e 0a  ion was opened..
13d00 20 20 5e 54 68 69 73 20 66 75 6e 63 74 69 6f 6e    ^This function
13d10 20 69 73 20 61 20 77 72 61 70 70 65 72 20 61 72   is a wrapper ar
13d20 6f 75 6e 64 20 74 68 65 20 5b 73 71 6c 69 74 65  ound the [sqlite
13d30 33 5f 74 6f 74 61 6c 5f 63 68 61 6e 67 65 73 28  3_total_changes(
13d40 29 5d 0a 20 20 43 2f 43 2b 2b 20 69 6e 74 65 72  )].  C/C++ inter
13d50 66 61 63 65 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66  face..}..funcdef
13d60 20 7b 74 72 69 6d 28 58 29 20 74 72 69 6d 28 58   {trim(X) trim(X
13d70 2c 59 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68 65  ,Y)} {} {.  ^The
13d80 20 74 72 69 6d 28 58 2c 59 29 20 66 75 6e 63 74   trim(X,Y) funct
13d90 69 6f 6e 20 72 65 74 75 72 6e 73 20 61 20 73 74  ion returns a st
13da0 72 69 6e 67 20 66 6f 72 6d 65 64 20 62 79 20 72  ring formed by r
13db0 65 6d 6f 76 69 6e 67 20 61 6e 79 20 61 6e 64 20  emoving any and 
13dc0 61 6c 6c 0a 20 20 63 68 61 72 61 63 74 65 72 73  all.  characters
13dd0 20 74 68 61 74 20 61 70 70 65 61 72 20 69 6e 20   that appear in 
13de0 59 20 66 72 6f 6d 20 62 6f 74 68 20 65 6e 64 73  Y from both ends
13df0 20 6f 66 20 58 2e 0a 20 20 5e 49 66 20 74 68 65   of X..  ^If the
13e00 20 59 20 61 72 67 75 6d 65 6e 74 20 69 73 20 6f   Y argument is o
13e10 6d 69 74 74 65 64 2c 20 74 72 69 6d 28 58 29 20  mitted, trim(X) 
13e20 72 65 6d 6f 76 65 73 20 73 70 61 63 65 73 20 66  removes spaces f
13e30 72 6f 6d 20 62 6f 74 68 20 65 6e 64 73 20 6f 66  rom both ends of
13e40 20 58 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b   X..}..funcdef {
13e50 74 79 70 65 6f 66 28 58 29 7d 20 7b 7d 20 7b 0a  typeof(X)} {} {.
13e60 20 20 5e 54 68 65 20 74 79 70 65 6f 66 28 58 29    ^The typeof(X)
13e70 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e   function return
13e80 73 20 61 20 73 74 72 69 6e 67 20 74 68 61 74 20  s a string that 
13e90 69 6e 64 69 63 61 74 65 73 20 74 68 65 20 5b 64  indicates the [d
13ea0 61 74 61 74 79 70 65 5d 20 6f 66 0a 20 20 74 68  atatype] of.  th
13eb0 65 20 65 78 70 72 65 73 73 69 6f 6e 20 58 3a 20  e expression X: 
13ec0 22 6e 75 6c 6c 22 2c 20 22 69 6e 74 65 67 65 72  "null", "integer
13ed0 22 2c 20 22 72 65 61 6c 22 2c 20 22 74 65 78 74  ", "real", "text
13ee0 22 2c 20 6f 72 20 22 62 6c 6f 62 22 2e 0a 7d 0a  ", or "blob"..}.
13ef0 0a 66 75 6e 63 64 65 66 20 7b 75 70 70 65 72 28  .funcdef {upper(
13f00 58 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20  X)} {} {.  ^The 
13f10 75 70 70 65 72 28 58 29 20 66 75 6e 63 74 69 6f  upper(X) functio
13f20 6e 20 72 65 74 75 72 6e 73 20 61 20 63 6f 70 79  n returns a copy
13f30 20 6f 66 20 69 6e 70 75 74 20 73 74 72 69 6e 67   of input string
13f40 20 58 20 69 6e 20 77 68 69 63 68 20 61 6c 6c 20   X in which all 
13f50 0a 20 20 6c 6f 77 65 72 2d 63 61 73 65 20 41 53  .  lower-case AS
13f60 43 49 49 20 63 68 61 72 61 63 74 65 72 73 20 61  CII characters a
13f70 72 65 20 63 6f 6e 76 65 72 74 65 64 20 74 6f 20  re converted to 
13f80 74 68 65 69 72 20 75 70 70 65 72 2d 63 61 73 65  their upper-case
13f90 20 65 71 75 69 76 61 6c 65 6e 74 2e 0a 7d 0a 0a   equivalent..}..
13fa0 66 75 6e 63 64 65 66 20 7b 7a 65 72 6f 62 6c 6f  funcdef {zeroblo
13fb0 62 28 4e 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68  b(N)} {} {.  ^Th
13fc0 65 20 7a 65 72 6f 62 6c 6f 62 28 4e 29 20 66 75  e zeroblob(N) fu
13fd0 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 61  nction returns a
13fe0 20 42 4c 4f 42 20 63 6f 6e 73 69 73 74 69 6e 67   BLOB consisting
13ff0 20 6f 66 20 4e 20 62 79 74 65 73 20 6f 66 20 30   of N bytes of 0
14000 78 30 30 2e 0a 20 20 53 51 4c 69 74 65 20 6d 61  x00..  SQLite ma
14010 6e 61 67 65 73 20 74 68 65 73 65 20 7a 65 72 6f  nages these zero
14020 62 6c 6f 62 73 20 76 65 72 79 20 65 66 66 69 63  blobs very effic
14030 69 65 6e 74 6c 79 2e 20 20 5a 65 72 6f 62 6c 6f  iently.  Zeroblo
14040 62 73 20 63 61 6e 20 62 65 20 75 73 65 64 20 74  bs can be used t
14050 6f 0a 20 20 72 65 73 65 72 76 65 20 73 70 61 63  o.  reserve spac
14060 65 20 66 6f 72 20 61 20 42 4c 4f 42 20 74 68 61  e for a BLOB tha
14070 74 20 69 73 20 6c 61 74 65 72 20 77 72 69 74 74  t is later writt
14080 65 6e 20 75 73 69 6e 67 20 0a 20 20 5b 73 71 6c  en using .  [sql
14090 69 74 65 33 5f 62 6c 6f 62 5f 6f 70 65 6e 28 29  ite3_blob_open()
140a0 20 7c 20 69 6e 63 72 65 6d 65 6e 74 61 6c 20 42   | incremental B
140b0 4c 4f 42 20 49 2f 4f 5d 2e 0a 20 20 5e 54 68 69  LOB I/O]..  ^Thi
140c0 73 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 20 69  s SQL function i
140d0 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 75 73  s implemented us
140e0 69 6e 67 20 74 68 65 20 5b 73 71 6c 69 74 65 33  ing the [sqlite3
140f0 5f 72 65 73 75 6c 74 5f 7a 65 72 6f 62 6c 6f 62  _result_zeroblob
14100 28 29 5d 0a 20 20 72 6f 75 74 69 6e 65 20 66 72  ()].  routine fr
14110 6f 6d 20 74 68 65 20 43 2f 43 2b 2b 20 69 6e 74  om the C/C++ int
14120 65 72 66 61 63 65 2e 0a 7d 0a 3c 2f 74 63 6c 3e  erface..}.</tcl>
14130 0a 3c 2f 74 61 62 6c 65 3e 0a 0a 3c 74 63 6c 3e  .</table>..<tcl>
14140 0a 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 23 23 23 23 0a  ###############.
14190 53 65 63 74 69 6f 6e 20 7b 44 61 74 65 20 41 6e  Section {Date An
141a0 64 20 54 69 6d 65 20 46 75 6e 63 74 69 6f 6e 73  d Time Functions
141b0 7d 20 64 61 74 65 66 75 6e 63 20 7b 2a 64 61 74  } datefunc {*dat
141c0 65 66 75 6e 63 7d 0a 68 64 5f 6b 65 79 77 6f 72  efunc}.hd_keywor
141d0 64 73 20 7b 64 61 74 65 28 29 20 53 51 4c 20 66  ds {date() SQL f
141e0 75 6e 63 74 69 6f 6e 7d 20 7b 74 69 6d 65 28 29  unction} {time()
141f0 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 7d 0a 68   SQL function}.h
14200 64 5f 6b 65 79 77 6f 72 64 73 20 7b 64 61 74 65  d_keywords {date
14210 74 69 6d 65 28 29 20 53 51 4c 20 66 75 6e 63 74  time() SQL funct
14220 69 6f 6e 7d 20 7b 6a 75 6c 69 61 6e 64 61 79 28  ion} {julianday(
14230 29 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 7d 0a  ) SQL function}.
14240 68 64 5f 6b 65 79 77 6f 72 64 73 20 7b 73 74 72  hd_keywords {str
14250 66 74 69 6d 65 28 29 20 53 51 4c 20 66 75 6e 63  ftime() SQL func
14260 74 69 6f 6e 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70  tion}.</tcl>..<p
14270 3e 0a 53 51 4c 69 74 65 20 73 75 70 70 6f 72 74  >.SQLite support
14280 73 20 66 69 76 65 20 64 61 74 65 20 61 6e 64 20  s five date and 
14290 74 69 6d 65 20 66 75 6e 63 74 69 6f 6e 73 20 61  time functions a
142a0 73 20 66 6f 6c 6c 6f 77 73 3a 0a 3c 2f 70 3e 0a  s follows:.</p>.
142b0 0a 3c 70 3e 0a 3c 6f 6c 3e 0a 3c 6c 69 3e 20 5e  .<p>.<ol>.<li> ^
142c0 28 3c 62 3e 64 61 74 65 28 3c 2f 62 3e 3c 69 3e  (<b>date(</b><i>
142d0 74 69 6d 65 73 74 72 69 6e 67 2c 20 6d 6f 64 69  timestring, modi
142e0 66 69 65 72 2c 20 6d 6f 64 69 66 69 65 72 2c 20  fier, modifier, 
142f0 2e 2e 2e 3c 2f 69 3e 3c 62 3e 29 3c 2f 62 3e 29  ...</i><b>)</b>)
14300 5e 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5e 28 3c  ^ </li>.<li> ^(<
14310 62 3e 74 69 6d 65 28 3c 2f 62 3e 3c 69 3e 74 69  b>time(</b><i>ti
14320 6d 65 73 74 72 69 6e 67 2c 20 6d 6f 64 69 66 69  mestring, modifi
14330 65 72 2c 20 6d 6f 64 69 66 69 65 72 2c 20 2e 2e  er, modifier, ..
14340 2e 3c 2f 69 3e 3c 62 3e 29 3c 2f 62 3e 29 5e 20  .</i><b>)</b>)^ 
14350 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5e 28 3c 62 3e  </li>.<li> ^(<b>
14360 64 61 74 65 74 69 6d 65 28 3c 2f 62 3e 3c 69 3e  datetime(</b><i>
14370 74 69 6d 65 73 74 72 69 6e 67 2c 20 6d 6f 64 69  timestring, modi
14380 66 69 65 72 2c 20 6d 6f 64 69 66 69 65 72 2c 20  fier, modifier, 
14390 2e 2e 2e 3c 2f 69 3e 3c 62 3e 29 3c 2f 62 3e 29  ...</i><b>)</b>)
143a0 5e 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5e 28 3c  ^ </li>.<li> ^(<
143b0 62 3e 6a 75 6c 69 61 6e 64 61 79 28 3c 2f 62 3e  b>julianday(</b>
143c0 3c 69 3e 74 69 6d 65 73 74 72 69 6e 67 2c 20 6d  <i>timestring, m
143d0 6f 64 69 66 69 65 72 2c 20 6d 6f 64 69 66 69 65  odifier, modifie
143e0 72 2c 20 2e 2e 2e 3c 2f 69 3e 3c 62 3e 29 3c 2f  r, ...</i><b>)</
143f0 62 3e 29 5e 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20  b>)^ </li>.<li> 
14400 5e 28 3c 62 3e 73 74 72 66 74 69 6d 65 28 3c 2f  ^(<b>strftime(</
14410 62 3e 3c 69 3e 66 6f 72 6d 61 74 2c 20 74 69 6d  b><i>format, tim
14420 65 73 74 72 69 6e 67 2c 20 6d 6f 64 69 66 69 65  estring, modifie
14430 72 2c 20 6d 6f 64 69 66 69 65 72 2c 20 2e 2e 2e  r, modifier, ...
14440 3c 2f 69 3e 3c 62 3e 29 3c 2f 62 3e 29 5e 20 3c  </i><b>)</b>)^ <
14450 2f 6c 69 3e 0a 3c 2f 6f 6c 3e 0a 0a 3c 70 3e 0a  /li>.</ol>..<p>.
14460 5e 41 6c 6c 20 66 69 76 65 20 64 61 74 65 20 61  ^All five date a
14470 6e 64 20 74 69 6d 65 20 66 75 6e 63 74 69 6f 6e  nd time function
14480 73 20 74 61 6b 65 20 61 20 74 69 6d 65 20 73 74  s take a time st
14490 72 69 6e 67 20 61 73 20 61 6e 20 61 72 67 75 6d  ring as an argum
144a0 65 6e 74 2e 20 0a 5e 54 68 65 20 74 69 6d 65 20  ent. .^The time 
144b0 73 74 72 69 6e 67 20 69 73 20 66 6f 6c 6c 6f 77  string is follow
144c0 65 64 20 62 79 20 7a 65 72 6f 20 6f 72 20 6d 6f  ed by zero or mo
144d0 72 65 20 6d 6f 64 69 66 69 65 72 73 2e 20 0a 5e  re modifiers. .^
144e0 54 68 65 20 73 74 72 66 74 69 6d 65 28 29 20 66  The strftime() f
144f0 75 6e 63 74 69 6f 6e 20 61 6c 73 6f 20 74 61 6b  unction also tak
14500 65 73 20 61 20 66 6f 72 6d 61 74 20 73 74 72 69  es a format stri
14510 6e 67 20 61 73 20 69 74 73 20 66 69 72 73 74 20  ng as its first 
14520 61 72 67 75 6d 65 6e 74 2e 0a 3c 2f 70 3e 0a 0a  argument..</p>..
14530 3c 70 3e 0a 54 68 65 20 64 61 74 65 20 61 6e 64  <p>.The date and
14540 20 74 69 6d 65 20 66 75 6e 63 74 69 6f 6e 73 20   time functions 
14550 75 73 65 20 61 20 73 75 62 73 65 74 20 6f 66 0a  use a subset of.
14560 5b 68 74 74 70 3a 2f 2f 65 6e 2e 77 69 6b 69 70  [http://en.wikip
14570 65 64 69 61 2e 6f 72 67 2f 77 69 6b 69 2f 49 53  edia.org/wiki/IS
14580 4f 5f 38 36 30 31 20 7c 20 49 53 30 2d 38 36 30  O_8601 | IS0-860
14590 31 5d 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65  1] date and time
145a0 0a 66 6f 72 6d 61 74 73 2e 0a 5e 54 68 65 20 64  .formats..^The d
145b0 61 74 65 28 29 20 66 75 6e 63 74 69 6f 6e 20 72  ate() function r
145c0 65 74 75 72 6e 73 20 74 68 65 20 64 61 74 65 20  eturns the date 
145d0 69 6e 20 74 68 69 73 20 66 6f 72 6d 61 74 3a 20  in this format: 
145e0 59 59 59 59 2d 4d 4d 2d 44 44 2e 20 0a 5e 54 68  YYYY-MM-DD. .^Th
145f0 65 20 74 69 6d 65 28 29 20 66 75 6e 63 74 69 6f  e time() functio
14600 6e 20 72 65 74 75 72 6e 73 20 74 68 65 20 74 69  n returns the ti
14610 6d 65 20 61 73 20 48 48 3a 4d 4d 3a 53 53 2e 20  me as HH:MM:SS. 
14620 0a 5e 54 68 65 20 64 61 74 65 74 69 6d 65 28 29  .^The datetime()
14630 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e   function return
14640 73 20 22 59 59 59 59 2d 4d 4d 2d 44 44 20 48 48  s "YYYY-MM-DD HH
14650 3a 4d 4d 3a 53 53 22 2e 20 0a 5e 28 54 68 65 20  :MM:SS". .^(The 
14660 6a 75 6c 69 61 6e 64 61 79 28 29 20 66 75 6e 63  julianday() func
14670 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 74 68 65  tion returns the
14680 20 0a 5b 68 74 74 70 3a 2f 2f 65 6e 2e 77 69 6b   .[http://en.wik
14690 69 70 65 64 69 61 2e 6f 72 67 2f 77 69 6b 69 2f  ipedia.org/wiki/
146a0 4a 75 6c 69 61 6e 5f 64 61 79 20 7c 20 4a 75 6c  Julian_day | Jul
146b0 69 61 6e 20 64 61 79 5d 20 2d 20 74 68 65 0a 6e  ian day] - the.n
146c0 75 6d 62 65 72 20 6f 66 20 64 61 79 73 20 73 69  umber of days si
146d0 6e 63 65 20 6e 6f 6f 6e 20 69 6e 20 47 72 65 65  nce noon in Gree
146e0 6e 77 69 63 68 20 6f 6e 20 4e 6f 76 65 6d 62 65  nwich on Novembe
146f0 72 20 32 34 2c 20 34 37 31 34 20 42 2e 43 2e 20  r 24, 4714 B.C. 
14700 0a 28 5b 68 74 74 70 3a 2f 2f 65 6e 2e 77 69 6b  .([http://en.wik
14710 69 70 65 64 69 61 2e 6f 72 67 2f 77 69 6b 69 2f  ipedia.org/wiki/
14720 50 72 6f 6c 65 70 74 69 63 5f 47 72 65 67 6f 72  Proleptic_Gregor
14730 69 61 6e 5f 63 61 6c 65 6e 64 61 72 20 7c 20 50  ian_calendar | P
14740 72 6f 6c 65 70 74 69 63 20 47 72 65 67 6f 72 69  roleptic Gregori
14750 61 6e 20 63 61 6c 65 6e 64 61 72 5d 29 2e 29 5e  an calendar]).)^
14760 0a 5e 54 68 65 20 73 74 72 66 74 69 6d 65 28 29  .^The strftime()
14770 20 72 6f 75 74 69 6e 65 20 72 65 74 75 72 6e 73   routine returns
14780 20 74 68 65 20 64 61 74 65 20 66 6f 72 6d 61 74   the date format
14790 74 65 64 20 61 63 63 6f 72 64 69 6e 67 20 74 6f  ted according to
147a0 20 0a 74 68 65 20 66 6f 72 6d 61 74 20 73 74 72   .the format str
147b0 69 6e 67 20 73 70 65 63 69 66 69 65 64 20 61 73  ing specified as
147c0 20 74 68 65 20 66 69 72 73 74 20 61 72 67 75 6d   the first argum
147d0 65 6e 74 2e 0a 5e 54 68 65 20 66 6f 72 6d 61 74  ent..^The format
147e0 20 73 74 72 69 6e 67 20 73 75 70 70 6f 72 74 73   string supports
147f0 20 74 68 65 20 6d 6f 73 74 20 63 6f 6d 6d 6f 6e   the most common
14800 20 73 75 62 73 74 69 74 75 74 69 6f 6e 73 20 66   substitutions f
14810 6f 75 6e 64 20 69 6e 20 74 68 65 20 0a 5b 68 74  ound in the .[ht
14820 74 70 3a 2f 2f 6f 70 65 6e 67 72 6f 75 70 2e 6f  tp://opengroup.o
14830 72 67 2f 6f 6e 6c 69 6e 65 70 75 62 73 2f 30 30  rg/onlinepubs/00
14840 37 39 30 38 37 39 39 2f 78 73 68 2f 73 74 72 66  7908799/xsh/strf
14850 74 69 6d 65 2e 68 74 6d 6c 20 7c 20 73 74 72 66  time.html | strf
14860 74 69 6d 65 28 29 20 66 75 6e 63 74 69 6f 6e 5d  time() function]
14870 0a 66 72 6f 6d 20 74 68 65 20 73 74 61 6e 64 61  .from the standa
14880 72 64 20 43 20 6c 69 62 72 61 72 79 20 70 6c 75  rd C library plu
14890 73 20 74 77 6f 20 6e 65 77 20 73 75 62 73 74 69  s two new substi
148a0 74 75 74 69 6f 6e 73 2c 20 25 66 20 61 6e 64 20  tutions, %f and 
148b0 25 4a 2e 0a 5e 28 54 68 65 20 66 6f 6c 6c 6f 77  %J..^(The follow
148c0 69 6e 67 20 69 73 20 61 20 63 6f 6d 70 6c 65 74  ing is a complet
148d0 65 20 6c 69 73 74 20 6f 66 20 76 61 6c 69 64 20  e list of valid 
148e0 73 74 72 66 74 69 6d 65 28 29 20 73 75 62 73 74  strftime() subst
148f0 69 74 75 74 69 6f 6e 73 3a 0a 3c 2f 70 3e 0a 0a  itutions:.</p>..
14900 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 3c 74 61  <blockquote>.<ta
14910 62 6c 65 20 62 6f 72 64 65 72 3d 22 30 22 20 63  ble border="0" c
14920 65 6c 6c 70 61 64 64 69 6e 67 3d 22 30 22 20 63  ellpadding="0" c
14930 65 6c 6c 73 70 61 63 69 6e 67 3d 22 30 22 3e 0a  ellspacing="0">.
14940 3c 74 72 3e 3c 74 64 3e 3c 74 64 20 77 69 64 74  <tr><td><td widt
14950 68 3d 22 31 30 22 3e 3c 74 64 3e 3c 2f 74 72 3e  h="10"><td></tr>
14960 0a 0a 3c 74 72 3e 3c 74 64 3e 20 25 64 20 3c 74  ..<tr><td> %d <t
14970 64 3e 3c 74 64 3e 20 64 61 79 20 6f 66 20 6d 6f  d><td> day of mo
14980 6e 74 68 3a 20 30 30 0a 3c 74 72 3e 3c 74 64 3e  nth: 00.<tr><td>
14990 20 25 66 20 3c 74 64 3e 3c 74 64 3e 20 66 72 61   %f <td><td> fra
149a0 63 74 69 6f 6e 61 6c 20 73 65 63 6f 6e 64 73 3a  ctional seconds:
149b0 20 53 53 2e 53 53 53 0a 3c 74 72 3e 3c 74 64 3e   SS.SSS.<tr><td>
149c0 20 25 48 20 3c 74 64 3e 3c 74 64 3e 20 68 6f 75   %H <td><td> hou
149d0 72 3a 20 30 30 2d 32 34 20 0a 3c 74 72 3e 3c 74  r: 00-24 .<tr><t
149e0 64 3e 20 25 6a 20 3c 74 64 3e 3c 74 64 3e 20 64  d> %j <td><td> d
149f0 61 79 20 6f 66 20 79 65 61 72 3a 20 30 30 31 2d  ay of year: 001-
14a00 33 36 36 0a 3c 74 72 3e 3c 74 64 3e 20 25 4a 20  366.<tr><td> %J 
14a10 3c 74 64 3e 3c 74 64 3e 20 4a 75 6c 69 61 6e 20  <td><td> Julian 
14a20 64 61 79 20 6e 75 6d 62 65 72 0a 3c 74 72 3e 3c  day number.<tr><
14a30 74 64 3e 20 25 6d 20 3c 74 64 3e 3c 74 64 3e 20  td> %m <td><td> 
14a40 6d 6f 6e 74 68 3a 20 30 31 2d 31 32 0a 3c 74 72  month: 01-12.<tr
14a50 3e 3c 74 64 3e 20 25 4d 20 3c 74 64 3e 3c 74 64  ><td> %M <td><td
14a60 3e 20 6d 69 6e 75 74 65 3a 20 30 30 2d 35 39 0a  > minute: 00-59.
14a70 3c 74 72 3e 3c 74 64 3e 20 25 73 20 3c 74 64 3e  <tr><td> %s <td>
14a80 3c 74 64 3e 20 73 65 63 6f 6e 64 73 20 73 69 6e  <td> seconds sin
14a90 63 65 20 31 39 37 30 2d 30 31 2d 30 31 0a 3c 74  ce 1970-01-01.<t
14aa0 72 3e 3c 74 64 3e 20 25 53 20 3c 74 64 3e 3c 74  r><td> %S <td><t
14ab0 64 3e 20 73 65 63 6f 6e 64 73 3a 20 30 30 2d 35  d> seconds: 00-5
14ac0 39 0a 3c 74 72 3e 3c 74 64 3e 20 25 77 20 3c 74  9.<tr><td> %w <t
14ad0 64 3e 3c 74 64 3e 20 64 61 79 20 6f 66 20 77 65  d><td> day of we
14ae0 65 6b 20 30 2d 36 20 77 69 74 68 20 73 75 6e 64  ek 0-6 with sund
14af0 61 79 3d 3d 30 0a 3c 74 72 3e 3c 74 64 3e 20 25  ay==0.<tr><td> %
14b00 57 20 3c 74 64 3e 3c 74 64 3e 20 77 65 65 6b 20  W <td><td> week 
14b10 6f 66 20 79 65 61 72 3a 20 30 30 2d 35 33 0a 3c  of year: 00-53.<
14b20 74 72 3e 3c 74 64 3e 20 25 59 20 3c 74 64 3e 3c  tr><td> %Y <td><
14b30 74 64 3e 20 79 65 61 72 3a 20 30 30 30 30 2d 39  td> year: 0000-9
14b40 39 39 39 0a 3c 74 72 3e 3c 74 64 3e 20 25 25 20  999.<tr><td> %% 
14b50 3c 74 64 3e 3c 74 64 3e 20 25 0a 3c 2f 74 61 62  <td><td> %.</tab
14b60 6c 65 3e 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65  le>.</blockquote
14b70 3e 29 5e 0a 0a 3c 70 3e 0a 5e 28 4e 6f 74 69 63  >)^..<p>.^(Notic
14b80 65 20 74 68 61 74 20 61 6c 6c 20 6f 74 68 65 72  e that all other
14b90 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20 66   date and time f
14ba0 75 6e 63 74 69 6f 6e 73 20 63 61 6e 20 62 65 20  unctions can be 
14bb0 65 78 70 72 65 73 73 65 64 0a 69 6e 20 74 65 72  expressed.in ter
14bc0 6d 73 20 6f 66 20 73 74 72 66 74 69 6d 65 28 29  ms of strftime()
14bd0 3a 0a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75  :.</p>..<blockqu
14be0 6f 74 65 3e 0a 3c 74 61 62 6c 65 20 62 6f 72 64  ote>.<table bord
14bf0 65 72 3d 22 30 22 20 63 65 6c 6c 70 61 64 64 69  er="0" cellpaddi
14c00 6e 67 3d 22 30 22 20 63 65 6c 6c 73 70 61 63 69  ng="0" cellspaci
14c10 6e 67 3d 22 30 22 3e 0a 3c 74 72 3e 3c 74 64 3e  ng="0">.<tr><td>
14c20 3c 62 3e 46 75 6e 63 74 69 6f 6e 3c 2f 62 3e 3c  <b>Function</b><
14c30 74 64 20 77 69 64 74 68 3d 22 33 30 22 3e 3c 74  td width="30"><t
14c40 64 3e 3c 62 3e 45 71 75 69 76 61 6c 65 6e 74 20  d><b>Equivalent 
14c50 73 74 72 66 74 69 6d 65 28 29 3c 2f 62 3e 0a 3c  strftime()</b>.<
14c60 74 72 3e 3c 74 64 3e 20 20 20 64 61 74 65 28 2e  tr><td>   date(.
14c70 2e 2e 29 20 20 20 20 20 20 3c 74 64 3e 3c 74 64  ..)      <td><td
14c80 3e 20 20 73 74 72 66 74 69 6d 65 28 27 25 59 2d  >  strftime('%Y-
14c90 25 6d 2d 25 64 27 2c 20 2e 2e 2e 29 0a 3c 74 72  %m-%d', ...).<tr
14ca0 3e 3c 74 64 3e 20 20 20 74 69 6d 65 28 2e 2e 2e  ><td>   time(...
14cb0 29 20 20 20 20 20 20 3c 74 64 3e 3c 74 64 3e 20  )      <td><td> 
14cc0 20 73 74 72 66 74 69 6d 65 28 27 25 48 3a 25 4d   strftime('%H:%M
14cd0 3a 25 53 27 2c 20 2e 2e 2e 29 0a 3c 74 72 3e 3c  :%S', ...).<tr><
14ce0 74 64 3e 20 20 20 64 61 74 65 74 69 6d 65 28 2e  td>   datetime(.
14cf0 2e 2e 29 20 20 3c 74 64 3e 3c 74 64 3e 20 20 73  ..)  <td><td>  s
14d00 74 72 66 74 69 6d 65 28 27 25 59 2d 25 6d 2d 25  trftime('%Y-%m-%
14d10 64 20 25 48 3a 25 4d 3a 25 53 27 2c 20 2e 2e 2e  d %H:%M:%S', ...
14d20 29 0a 3c 74 72 3e 3c 74 64 3e 20 20 20 6a 75 6c  ).<tr><td>   jul
14d30 69 61 6e 64 61 79 28 2e 2e 2e 29 20 3c 74 64 3e  ianday(...) <td>
14d40 3c 74 64 3e 20 20 73 74 72 66 74 69 6d 65 28 27  <td>  strftime('
14d50 25 4a 27 2c 20 2e 2e 2e 29 0a 3c 2f 74 61 62 6c  %J', ...).</tabl
14d60 65 3e 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e  e>.</blockquote>
14d70 29 5e 0a 0a 3c 70 3e 0a 54 68 65 20 6f 6e 6c 79  )^..<p>.The only
14d80 20 72 65 61 73 6f 6e 73 20 66 6f 72 20 70 72 6f   reasons for pro
14d90 76 69 64 69 6e 67 20 66 75 6e 63 74 69 6f 6e 73  viding functions
14da0 20 6f 74 68 65 72 20 74 68 61 6e 20 73 74 72 66   other than strf
14db0 74 69 6d 65 28 29 20 69 73 0a 66 6f 72 20 63 6f  time() is.for co
14dc0 6e 76 65 6e 69 65 6e 63 65 20 61 6e 64 20 66 6f  nvenience and fo
14dd0 72 20 65 66 66 69 63 69 65 6e 63 79 2e 0a 3c 2f  r efficiency..</
14de0 70 3e 0a 0a 3c 68 33 3e 54 69 6d 65 20 53 74 72  p>..<h3>Time Str
14df0 69 6e 67 73 3c 2f 68 33 3e 0a 0a 3c 70 3e 5e 28  ings</h3>..<p>^(
14e00 41 20 74 69 6d 65 20 73 74 72 69 6e 67 20 63 61  A time string ca
14e10 6e 20 62 65 20 69 6e 20 61 6e 79 20 6f 66 20 74  n be in any of t
14e20 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 66 6f 72  he following for
14e30 6d 61 74 73 3a 3c 2f 70 3e 0a 0a 3c 6f 6c 3e 0a  mats:</p>..<ol>.
14e40 3c 6c 69 3e 20 3c 69 3e 59 59 59 59 2d 4d 4d 2d  <li> <i>YYYY-MM-
14e50 44 44 3c 2f 69 3e 0a 3c 6c 69 3e 20 3c 69 3e 59  DD</i>.<li> <i>Y
14e60 59 59 59 2d 4d 4d 2d 44 44 20 48 48 3a 4d 4d 3c  YYY-MM-DD HH:MM<
14e70 2f 69 3e 0a 3c 6c 69 3e 20 3c 69 3e 59 59 59 59  /i>.<li> <i>YYYY
14e80 2d 4d 4d 2d 44 44 20 48 48 3a 4d 4d 3a 53 53 3c  -MM-DD HH:MM:SS<
14e90 2f 69 3e 0a 3c 6c 69 3e 20 3c 69 3e 59 59 59 59  /i>.<li> <i>YYYY
14ea0 2d 4d 4d 2d 44 44 20 48 48 3a 4d 4d 3a 53 53 2e  -MM-DD HH:MM:SS.
14eb0 53 53 53 3c 2f 69 3e 0a 3c 6c 69 3e 20 3c 69 3e  SSS</i>.<li> <i>
14ec0 59 59 59 59 2d 4d 4d 2d 44 44 3c 2f 69 3e 3c 62  YYYY-MM-DD</i><b
14ed0 3e 54 3c 2f 62 3e 3c 69 3e 48 48 3a 4d 4d 3c 2f  >T</b><i>HH:MM</
14ee0 69 3e 0a 3c 6c 69 3e 20 3c 69 3e 59 59 59 59 2d  i>.<li> <i>YYYY-
14ef0 4d 4d 2d 44 44 3c 2f 69 3e 3c 62 3e 54 3c 2f 62  MM-DD</i><b>T</b
14f00 3e 3c 69 3e 48 48 3a 4d 4d 3a 53 53 3c 2f 69 3e  ><i>HH:MM:SS</i>
14f10 0a 3c 6c 69 3e 20 3c 69 3e 59 59 59 59 2d 4d 4d  .<li> <i>YYYY-MM
14f20 2d 44 44 3c 2f 69 3e 3c 62 3e 54 3c 2f 62 3e 3c  -DD</i><b>T</b><
14f30 69 3e 48 48 3a 4d 4d 3a 53 53 2e 53 53 53 3c 2f  i>HH:MM:SS.SSS</
14f40 69 3e 0a 3c 6c 69 3e 20 3c 69 3e 48 48 3a 4d 4d  i>.<li> <i>HH:MM
14f50 3c 2f 69 3e 0a 3c 6c 69 3e 20 3c 69 3e 48 48 3a  </i>.<li> <i>HH:
14f60 4d 4d 3a 53 53 3c 2f 69 3e 0a 3c 6c 69 3e 20 3c  MM:SS</i>.<li> <
14f70 69 3e 48 48 3a 4d 4d 3a 53 53 2e 53 53 53 3c 2f  i>HH:MM:SS.SSS</
14f80 69 3e 0a 3c 6c 69 3e 20 3c 62 3e 6e 6f 77 3c 2f  i>.<li> <b>now</
14f90 62 3e 0a 3c 6c 69 3e 20 3c 69 3e 44 44 44 44 44  b>.<li> <i>DDDDD
14fa0 44 44 44 44 44 3c 2f 69 3e 0a 3c 2f 6f 6c 3e 29  DDDDD</i>.</ol>)
14fb0 5e 0a 0a 3c 70 3e 0a 5e 49 6e 20 66 6f 72 6d 61  ^..<p>.^In forma
14fc0 74 73 20 35 20 74 68 72 6f 75 67 68 20 37 2c 20  ts 5 through 7, 
14fd0 74 68 65 20 22 54 22 20 69 73 20 61 20 6c 69 74  the "T" is a lit
14fe0 65 72 61 6c 20 63 68 61 72 61 63 74 65 72 20 73  eral character s
14ff0 65 70 61 72 61 74 69 6e 67 20 0a 74 68 65 20 64  eparating .the d
15000 61 74 65 20 61 6e 64 20 74 68 65 20 74 69 6d 65  ate and the time
15010 2c 20 61 73 20 72 65 71 75 69 72 65 64 20 62 79  , as required by
15020 20 0a 5b 68 74 74 70 3a 2f 2f 77 77 77 2e 77 33   .[http://www.w3
15030 63 2e 6f 72 67 2f 54 52 2f 4e 4f 54 45 2d 64 61  c.org/TR/NOTE-da
15040 74 65 74 69 6d 65 20 7c 20 49 53 4f 2d 38 36 30  tetime | ISO-860
15050 31 5d 2e 20 0a 5e 46 6f 72 6d 61 74 73 20 38 20  1]. .^Formats 8 
15060 74 68 72 6f 75 67 68 20 31 30 20 74 68 61 74 20  through 10 that 
15070 73 70 65 63 69 66 79 20 6f 6e 6c 79 20 61 20 74  specify only a t
15080 69 6d 65 20 61 73 73 75 6d 65 20 61 20 64 61 74  ime assume a dat
15090 65 20 6f 66 20 0a 32 30 30 30 2d 30 31 2d 30 31  e of .2000-01-01
150a0 2e 20 46 6f 72 6d 61 74 20 31 31 2c 20 74 68 65  . Format 11, the
150b0 20 73 74 72 69 6e 67 20 27 6e 6f 77 27 2c 20 69   string 'now', i
150c0 73 20 63 6f 6e 76 65 72 74 65 64 20 69 6e 74 6f  s converted into
150d0 20 74 68 65 20 0a 63 75 72 72 65 6e 74 20 64 61   the .current da
150e0 74 65 20 61 6e 64 20 74 69 6d 65 20 61 73 20 6f  te and time as o
150f0 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 74 68 65  btained from the
15100 20 78 43 75 72 72 65 6e 74 54 69 6d 65 20 6d 65   xCurrentTime me
15110 74 68 6f 64 0a 6f 66 20 74 68 65 20 5b 73 71 6c  thod.of the [sql
15120 69 74 65 33 5f 76 66 73 5d 20 6f 62 6a 65 63 74  ite3_vfs] object
15130 20 69 6e 20 75 73 65 2e 0a 5e 5b 68 74 74 70 3a   in use..^[http:
15140 2f 2f 65 6e 2e 77 69 6b 69 70 65 64 69 61 2e 6f  //en.wikipedia.o
15150 72 67 2f 77 69 6b 69 2f 43 6f 6f 72 64 69 6e 61  rg/wiki/Coordina
15160 74 65 64 5f 55 6e 69 76 65 72 73 61 6c 5f 54 69  ted_Universal_Ti
15170 6d 65 20 7c 20 55 6e 69 76 65 72 73 61 6c 20 43  me | Universal C
15180 6f 6f 72 64 69 6e 61 74 65 64 20 54 69 6d 65 20  oordinated Time 
15190 28 55 54 43 29 5d 20 69 73 20 75 73 65 64 2e 20  (UTC)] is used. 
151a0 0a 5e 46 6f 72 6d 61 74 20 31 32 20 69 73 20 74  .^Format 12 is t
151b0 68 65 20 0a 5b 68 74 74 70 3a 2f 2f 65 6e 2e 77  he .[http://en.w
151c0 69 6b 69 70 65 64 69 61 2e 6f 72 67 2f 77 69 6b  ikipedia.org/wik
151d0 69 2f 4a 75 6c 69 61 6e 5f 64 61 79 20 7c 20 4a  i/Julian_day | J
151e0 75 6c 69 61 6e 20 64 61 79 20 6e 75 6d 62 65 72  ulian day number
151f0 5d 0a 65 78 70 72 65 73 73 65 64 20 61 73 20 61  ].expressed as a
15200 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20   floating point 
15210 76 61 6c 75 65 2e 0a 3c 2f 70 3e 0a 0a 3c 68 33  value..</p>..<h3
15220 3e 4d 6f 64 69 66 69 65 72 73 3c 2f 68 33 3e 0a  >Modifiers</h3>.
15230 0a 3c 70 3e 5e 54 68 65 20 74 69 6d 65 20 73 74  .<p>^The time st
15240 72 69 6e 67 20 63 61 6e 20 62 65 20 66 6f 6c 6c  ring can be foll
15250 6f 77 65 64 20 62 79 20 7a 65 72 6f 20 6f 72 20  owed by zero or 
15260 6d 6f 72 65 20 6d 6f 64 69 66 69 65 72 73 20 74  more modifiers t
15270 68 61 74 20 0a 61 6c 74 65 72 20 74 68 65 20 64  hat .alter the d
15280 61 74 65 20 61 6e 64 20 74 69 6d 65 20 73 74 72  ate and time str
15290 69 6e 67 2e 20 5e 45 61 63 68 20 6d 6f 64 69 66  ing. ^Each modif
152a0 69 65 72 0a 69 73 20 61 20 74 72 61 6e 73 66 6f  ier.is a transfo
152b0 72 6d 61 74 69 6f 6e 20 74 68 61 74 20 69 73 20  rmation that is 
152c0 61 70 70 6c 69 65 64 20 74 6f 20 74 68 65 20 74  applied to the t
152d0 69 6d 65 20 76 61 6c 75 65 20 74 6f 20 69 74 73  ime value to its
152e0 20 6c 65 66 74 2e 0a 5e 4d 6f 64 69 66 69 65 72   left..^Modifier
152f0 73 20 61 72 65 20 61 70 70 6c 69 65 64 20 66 72  s are applied fr
15300 6f 6d 20 6c 65 66 74 20 74 6f 20 72 69 67 68 74  om left to right
15310 3b 20 6f 72 64 65 72 20 69 73 20 69 6d 70 6f 72  ; order is impor
15320 74 61 6e 74 2e 0a 5e 28 54 68 65 20 61 76 61 69  tant..^(The avai
15330 6c 61 62 6c 65 20 6d 6f 64 69 66 69 65 72 73 20  lable modifiers 
15340 61 72 65 20 61 73 20 66 6f 6c 6c 6f 77 73 2e 3c  are as follows.<
15350 2f 70 3e 0a 0a 3c 6f 6c 3e 0a 3c 6c 69 3e 20 4e  /p>..<ol>.<li> N
15360 4e 4e 20 64 61 79 73 0a 3c 6c 69 3e 20 4e 4e 4e  NN days.<li> NNN
15370 20 68 6f 75 72 73 0a 3c 6c 69 3e 20 4e 4e 4e 20   hours.<li> NNN 
15380 6d 69 6e 75 74 65 73 0a 3c 6c 69 3e 20 4e 4e 4e  minutes.<li> NNN
15390 2e 4e 4e 4e 4e 20 73 65 63 6f 6e 64 73 0a 3c 6c  .NNNN seconds.<l
153a0 69 3e 20 4e 4e 4e 20 6d 6f 6e 74 68 73 0a 3c 6c  i> NNN months.<l
153b0 69 3e 20 4e 4e 4e 20 79 65 61 72 73 0a 3c 6c 69  i> NNN years.<li
153c0 3e 20 73 74 61 72 74 20 6f 66 20 6d 6f 6e 74 68  > start of month
153d0 0a 3c 6c 69 3e 20 73 74 61 72 74 20 6f 66 20 79  .<li> start of y
153e0 65 61 72 0a 3c 6c 69 3e 20 73 74 61 72 74 20 6f  ear.<li> start o
153f0 66 20 64 61 79 0a 3c 6c 69 3e 20 77 65 65 6b 64  f day.<li> weekd
15400 61 79 20 4e 0a 3c 6c 69 3e 20 75 6e 69 78 65 70  ay N.<li> unixep
15410 6f 63 68 0a 3c 6c 69 3e 20 6c 6f 63 61 6c 74 69  och.<li> localti
15420 6d 65 0a 3c 6c 69 3e 20 75 74 63 20 0a 3c 2f 6f  me.<li> utc .</o
15430 6c 3e 29 5e 0a 0a 3c 70 3e 5e 54 68 65 20 66 69  l>)^..<p>^The fi
15440 72 73 74 20 73 69 78 20 6d 6f 64 69 66 69 65 72  rst six modifier
15450 73 20 28 31 20 74 68 72 6f 75 67 68 20 36 29 20  s (1 through 6) 
15460 0a 73 69 6d 70 6c 79 20 61 64 64 20 74 68 65 20  .simply add the 
15470 73 70 65 63 69 66 69 65 64 20 61 6d 6f 75 6e 74  specified amount
15480 20 6f 66 20 74 69 6d 65 20 74 6f 20 74 68 65 20   of time to the 
15490 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20 0a 73  date and time .s
154a0 70 65 63 69 66 69 65 64 20 62 79 20 74 68 65 20  pecified by the 
154b0 70 72 65 63 65 64 69 6e 67 20 74 69 6d 65 73 74  preceding timest
154c0 72 69 6e 67 20 61 6e 64 20 6d 6f 64 69 66 69 65  ring and modifie
154d0 72 73 2e 0a 5e 4e 6f 74 65 20 74 68 61 74 20 22  rs..^Note that "
154e0 26 70 6c 75 73 6d 6e 3b 4e 4e 4e 20 6d 6f 6e 74  &plusmn;NNN mont
154f0 68 73 22 20 77 6f 72 6b 73 20 62 79 20 72 65 6e  hs" works by ren
15500 64 65 72 69 6e 67 20 74 68 65 20 6f 72 69 67 69  dering the origi
15510 6e 61 6c 20 64 61 74 65 20 69 6e 74 6f 0a 74 68  nal date into.th
15520 65 20 59 59 59 59 2d 4d 4d 2d 44 44 20 66 6f 72  e YYYY-MM-DD for
15530 6d 61 74 2c 20 61 64 64 69 6e 67 20 74 68 65 20  mat, adding the 
15540 26 70 6c 75 73 6d 6e 3b 4e 4e 4e 20 74 6f 20 74  &plusmn;NNN to t
15550 68 65 20 4d 4d 20 6d 6f 6e 74 68 20 76 61 6c 75  he MM month valu
15560 65 2c 20 74 68 65 6e 0a 6e 6f 72 6d 61 6c 69 7a  e, then.normaliz
15570 69 6e 67 20 74 68 65 20 72 65 73 75 6c 74 2e 20  ing the result. 
15580 20 5e 54 68 75 73 2c 20 66 6f 72 20 65 78 61 6d   ^Thus, for exam
15590 70 6c 65 2c 20 74 68 65 20 64 61 74 61 20 32 30  ple, the data 20
155a0 30 31 2d 30 33 2d 33 31 20 6d 6f 64 69 66 69 65  01-03-31 modifie
155b0 64 0a 62 79 20 27 2b 31 20 6d 6f 6e 74 68 27 20  d.by '+1 month' 
155c0 69 6e 69 74 69 61 6c 6c 79 20 79 69 65 6c 64 73  initially yields
155d0 20 32 30 30 31 2d 30 34 2d 33 31 2c 20 62 75 74   2001-04-31, but
155e0 20 41 70 72 69 6c 20 6f 6e 6c 79 20 68 61 73 20   April only has 
155f0 33 30 20 64 61 79 73 0a 73 6f 20 74 68 65 20 64  30 days.so the d
15600 61 74 65 20 69 73 20 6e 6f 72 6d 61 6c 69 7a 65  ate is normalize
15610 64 20 74 6f 20 32 30 30 31 2d 30 35 2d 30 31 2e  d to 2001-05-01.
15620 20 20 5e 41 20 73 69 6d 69 6c 61 72 20 65 66 66    ^A similar eff
15630 65 63 74 20 6f 63 63 75 72 73 20 77 68 65 6e 0a  ect occurs when.
15640 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 64 61 74  the original dat
15650 65 20 69 73 20 46 65 62 72 75 61 72 79 20 32 39  e is February 29
15660 20 6f 66 20 61 20 6c 65 61 70 79 65 61 72 20 61   of a leapyear a
15670 6e 64 20 74 68 65 20 6d 6f 64 69 66 69 65 72 20  nd the modifier 
15680 69 73 0a 26 70 6c 75 73 6d 6e 3b 4e 20 79 65 61  is.&plusmn;N yea
15690 72 73 20 77 68 65 72 65 20 4e 20 69 73 20 6e 6f  rs where N is no
156a0 74 20 61 20 6d 75 6c 74 69 70 6c 65 20 6f 66 20  t a multiple of 
156b0 66 6f 75 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54  four.</p>..<p>^T
156c0 68 65 20 22 73 74 61 72 74 20 6f 66 22 20 6d 6f  he "start of" mo
156d0 64 69 66 69 65 72 73 20 28 37 20 74 68 72 6f 75  difiers (7 throu
156e0 67 68 20 39 29 20 73 68 69 66 74 20 74 68 65 20  gh 9) shift the 
156f0 64 61 74 65 20 62 61 63 6b 77 61 72 64 73 20 0a  date backwards .
15700 74 6f 20 74 68 65 20 62 65 67 69 6e 6e 69 6e 67  to the beginning
15710 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20   of the current 
15720 6d 6f 6e 74 68 2c 20 79 65 61 72 20 6f 72 20 64  month, year or d
15730 61 79 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65  ay.</p>..<p>^The
15740 20 22 77 65 65 6b 64 61 79 22 20 6d 6f 64 69 66   "weekday" modif
15750 69 65 72 20 61 64 76 61 6e 63 65 73 20 74 68 65  ier advances the
15760 20 64 61 74 65 20 66 6f 72 77 61 72 64 20 74 6f   date forward to
15770 20 74 68 65 20 6e 65 78 74 20 64 61 74 65 20 0a   the next date .
15780 77 68 65 72 65 20 74 68 65 20 77 65 65 6b 64 61  where the weekda
15790 79 20 6e 75 6d 62 65 72 20 69 73 20 4e 2e 20 53  y number is N. S
157a0 75 6e 64 61 79 20 69 73 20 30 2c 20 4d 6f 6e 64  unday is 0, Mond
157b0 61 79 20 69 73 20 31 2c 20 61 6e 64 20 73 6f 20  ay is 1, and so 
157c0 66 6f 72 74 68 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e  forth.</p>..<p>^
157d0 54 68 65 20 22 75 6e 69 78 65 70 6f 63 68 22 20  The "unixepoch" 
157e0 6d 6f 64 69 66 69 65 72 20 28 31 31 29 20 6f 6e  modifier (11) on
157f0 6c 79 20 77 6f 72 6b 73 20 69 66 20 69 74 20 69  ly works if it i
15800 6d 6d 65 64 69 61 74 65 6c 79 20 66 6f 6c 6c 6f  mmediately follo
15810 77 73 20 0a 61 20 74 69 6d 65 73 74 72 69 6e 67  ws .a timestring
15820 20 69 6e 20 74 68 65 20 44 44 44 44 44 44 44 44   in the DDDDDDDD
15830 44 44 20 66 6f 72 6d 61 74 2e 20 0a 5e 54 68 69  DD format. .^Thi
15840 73 20 6d 6f 64 69 66 69 65 72 20 63 61 75 73 65  s modifier cause
15850 73 20 74 68 65 20 44 44 44 44 44 44 44 44 44 44  s the DDDDDDDDDD
15860 20 74 6f 20 62 65 20 69 6e 74 65 72 70 72 65 74   to be interpret
15870 65 64 20 6e 6f 74 20 0a 61 73 20 61 20 4a 75 6c  ed not .as a Jul
15880 69 61 6e 20 64 61 79 20 6e 75 6d 62 65 72 20 61  ian day number a
15890 73 20 69 74 20 6e 6f 72 6d 61 6c 6c 79 20 77 6f  s it normally wo
158a0 75 6c 64 20 62 65 2c 20 62 75 74 20 61 73 0a 5b  uld be, but as.[
158b0 68 74 74 70 3a 2f 2f 65 6e 2e 77 69 6b 69 70 65  http://en.wikipe
158c0 64 69 61 2e 6f 72 67 2f 77 69 6b 69 2f 55 6e 69  dia.org/wiki/Uni
158d0 78 5f 74 69 6d 65 20 7c 20 55 6e 69 78 20 54 69  x_time | Unix Ti
158e0 6d 65 5d 20 2d 20 74 68 65 20 0a 6e 75 6d 62 65  me] - the .numbe
158f0 72 20 6f 66 20 73 65 63 6f 6e 64 73 20 73 69 6e  r of seconds sin
15900 63 65 20 31 39 37 30 2e 20 20 49 66 20 74 68 65  ce 1970.  If the
15910 20 22 75 6e 69 78 65 70 6f 63 68 22 20 6d 6f 64   "unixepoch" mod
15920 69 66 69 65 72 20 64 6f 65 73 20 6e 6f 74 0a 66  ifier does not.f
15930 6f 6c 6c 6f 77 20 61 20 74 69 6d 65 73 74 72 69  ollow a timestri
15940 6e 67 20 6f 66 20 74 68 65 20 66 6f 72 6d 20 44  ng of the form D
15950 44 44 44 44 44 44 44 44 44 20 77 68 69 63 68 20  DDDDDDDDD which 
15960 65 78 70 72 65 73 73 65 73 20 74 68 65 20 6e 75  expresses the nu
15970 6d 62 65 72 0a 6f 66 20 73 65 63 6f 6e 64 73 20  mber.of seconds 
15980 73 69 6e 63 65 20 31 39 37 30 20 6f 72 20 69 66  since 1970 or if
15990 20 6f 74 68 65 72 20 6d 6f 64 69 66 69 65 72 73   other modifiers
159a0 0a 73 65 70 61 72 61 74 65 20 74 68 65 20 22 75  .separate the "u
159b0 6e 69 78 65 70 6f 63 68 22 20 6d 6f 64 69 66 69  nixepoch" modifi
159c0 65 72 20 66 72 6f 6d 20 70 72 69 6f 72 20 44 44  er from prior DD
159d0 44 44 44 44 44 44 44 44 20 74 68 65 6e 20 74 68  DDDDDDDD then th
159e0 65 0a 62 65 68 61 76 69 6f 72 20 69 73 20 75 6e  e.behavior is un
159f0 64 65 66 69 6e 65 64 2e 0a 44 75 65 20 74 6f 20  defined..Due to 
15a00 70 72 65 63 69 73 69 6f 6e 20 6c 69 6d 69 74 61  precision limita
15a10 74 69 6f 6e 73 20 69 6d 70 6f 73 65 64 20 62 79  tions imposed by
15a20 20 74 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74   the implementat
15a30 69 6f 6e 73 20 75 73 65 0a 6f 66 20 36 34 2d 62  ions use.of 64-b
15a40 69 74 20 69 6e 74 65 67 65 72 73 2c 20 74 68 65  it integers, the
15a50 20 22 75 6e 69 78 65 70 6f 63 68 22 20 6d 6f 64   "unixepoch" mod
15a60 69 66 69 65 72 20 6f 6e 6c 79 20 77 6f 72 6b 73  ifier only works
15a70 20 66 6f 72 0a 64 61 74 65 73 20 62 65 74 77 65   for.dates betwe
15a80 65 6e 20 30 30 30 30 2d 30 31 2d 30 31 20 30 30  en 0000-01-01 00
15a90 3a 30 30 3a 30 30 20 61 6e 64 20 35 33 35 32 2d  :00:00 and 5352-
15aa0 31 31 2d 30 31 20 31 30 3a 35 32 3a 34 37 20 28  11-01 10:52:47 (
15ab0 75 6e 69 78 20 74 69 6d 65 73 0a 6f 66 20 2d 36  unix times.of -6
15ac0 32 31 36 37 32 31 39 32 30 30 20 74 68 72 6f 75  2167219200 throu
15ad0 67 68 20 31 30 36 37 35 31 39 39 31 36 37 29 2e  gh 10675199167).
15ae0 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20 22 6c  </p>..<p>^The "l
15af0 6f 63 61 6c 74 69 6d 65 22 20 6d 6f 64 69 66 69  ocaltime" modifi
15b00 65 72 20 28 31 32 29 20 61 73 73 75 6d 65 73 20  er (12) assumes 
15b10 74 68 65 20 74 69 6d 65 20 73 74 72 69 6e 67 20  the time string 
15b20 74 6f 20 69 74 73 20 6c 65 66 74 20 69 73 20 69  to its left is i
15b30 6e 0a 55 6e 69 76 65 72 73 61 6c 20 43 6f 6f 72  n.Universal Coor
15b40 64 69 6e 61 74 65 64 20 54 69 6d 65 20 28 55 54  dinated Time (UT
15b50 43 29 20 61 6e 64 20 61 64 6a 75 73 74 73 20 74  C) and adjusts t
15b60 68 65 20 74 69 6d 65 0a 73 74 72 69 6e 67 20 73  he time.string s
15b70 6f 20 74 68 61 74 20 69 74 20 64 69 73 70 6c 61  o that it displa
15b80 79 73 20 6c 6f 63 61 6c 74 69 6d 65 2e 20 20 49  ys localtime.  I
15b90 66 20 22 6c 6f 63 61 6c 74 69 6d 65 22 0a 66 6f  f "localtime".fo
15ba0 6c 6c 6f 77 73 20 61 20 74 69 6d 65 20 74 68 61  llows a time tha
15bb0 74 20 69 73 20 6e 6f 74 20 55 54 43 2c 20 74 68  t is not UTC, th
15bc0 65 6e 20 74 68 65 20 62 65 68 61 76 69 6f 72 20  en the behavior 
15bd0 69 73 20 75 6e 64 65 66 69 6e 65 64 2e 0a 5e 28  is undefined..^(
15be0 54 68 65 20 22 75 74 63 22 20 69 73 20 74 68 65  The "utc" is the
15bf0 20 6f 70 70 6f 73 69 74 65 20 6f 66 20 22 6c 6f   opposite of "lo
15c00 63 61 6c 74 69 6d 65 22 2e 20 20 22 75 74 63 22  caltime".  "utc"
15c10 20 61 73 73 75 6d 65 73 20 74 68 61 74 20 74 68   assumes that th
15c20 65 20 73 74 72 69 6e 67 0a 74 6f 20 69 74 73 20  e string.to its 
15c30 6c 65 66 74 20 69 73 20 69 6e 20 74 68 65 20 6c  left is in the l
15c40 6f 63 61 6c 20 74 69 6d 65 7a 6f 6e 65 20 61 6e  ocal timezone an
15c50 64 20 61 64 6a 75 73 74 73 20 74 68 61 74 20 73  d adjusts that s
15c60 74 72 69 6e 67 20 74 6f 20 62 65 20 69 6e 20 55  tring to be in U
15c70 54 43 2e 29 5e 0a 49 66 20 74 68 65 20 70 72 69  TC.)^.If the pri
15c80 6f 72 20 73 74 72 69 6e 67 20 69 73 20 6e 6f 74  or string is not
15c90 20 69 6e 20 6c 6f 63 61 6c 74 69 6d 65 2c 20 74   in localtime, t
15ca0 68 65 6e 20 74 68 65 20 72 65 73 75 6c 74 20 6f  hen the result o
15cb0 66 20 22 75 74 63 22 20 69 73 0a 75 6e 64 65 66  f "utc" is.undef
15cc0 69 6e 65 64 2e 3c 2f 70 3e 0a 0a 3c 68 33 3e 45  ined.</p>..<h3>E
15cd0 78 61 6d 70 6c 65 73 3c 2f 68 33 3e 0a 0a 5e 28  xamples</h3>..^(
15ce0 3c 70 3e 43 6f 6d 70 75 74 65 20 74 68 65 20 63  <p>Compute the c
15cf0 75 72 72 65 6e 74 20 64 61 74 65 2e 3c 70 3e 0a  urrent date.<p>.
15d00 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 53 45 4c  .<blockquote>SEL
15d10 45 43 54 20 64 61 74 65 28 27 6e 6f 77 27 29 3b  ECT date('now');
15d20 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 29 5e 0a  </blockquote>)^.
15d30 0a 5e 28 3c 70 3e 43 6f 6d 70 75 74 65 20 74 68  .^(<p>Compute th
15d40 65 20 6c 61 73 74 20 64 61 79 20 6f 66 20 74 68  e last day of th
15d50 65 20 63 75 72 72 65 6e 74 20 6d 6f 6e 74 68 2e  e current month.
15d60 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74  </p>..<blockquot
15d70 65 3e 53 45 4c 45 43 54 20 64 61 74 65 28 27 6e  e>SELECT date('n
15d80 6f 77 27 2c 27 73 74 61 72 74 20 6f 66 20 6d 6f  ow','start of mo
15d90 6e 74 68 27 2c 27 2b 31 20 6d 6f 6e 74 68 27 2c  nth','+1 month',
15da0 27 2d 31 20 64 61 79 27 29 3b 0a 3c 2f 62 6c 6f  '-1 day');.</blo
15db0 63 6b 71 75 6f 74 65 3e 29 5e 0a 0a 5e 28 3c 70  ckquote>)^..^(<p
15dc0 3e 43 6f 6d 70 75 74 65 20 74 68 65 20 64 61 74  >Compute the dat
15dd0 65 20 61 6e 64 20 74 69 6d 65 20 67 69 76 65 6e  e and time given
15de0 20 61 20 75 6e 69 78 20 74 69 6d 65 73 74 61 6d   a unix timestam
15df0 70 20 31 30 39 32 39 34 31 34 36 36 2e 3c 2f 70  p 1092941466.</p
15e00 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a  >..<blockquote>.
15e10 20 20 20 20 53 45 4c 45 43 54 20 64 61 74 65 74      SELECT datet
15e20 69 6d 65 28 31 30 39 32 39 34 31 34 36 36 2c 20  ime(1092941466, 
15e30 27 75 6e 69 78 65 70 6f 63 68 27 29 3b 0a 3c 2f  'unixepoch');.</
15e40 62 6c 6f 63 6b 71 75 6f 74 65 3e 29 5e 0a 0a 5e  blockquote>)^..^
15e50 28 3c 70 3e 43 6f 6d 70 75 74 65 20 74 68 65 20  (<p>Compute the 
15e60 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20 67 69  date and time gi
15e70 76 65 6e 20 61 20 75 6e 69 78 20 74 69 6d 65 73  ven a unix times
15e80 74 61 6d 70 20 31 30 39 32 39 34 31 34 36 36 2c  tamp 1092941466,
15e90 20 61 6e 64 20 0a 63 6f 6d 70 65 6e 73 61 74 65   and .compensate
15ea0 20 66 6f 72 20 79 6f 75 72 20 6c 6f 63 61 6c 20   for your local 
15eb0 74 69 6d 65 7a 6f 6e 65 2e 3c 2f 70 3e 0a 0a 3c  timezone.</p>..<
15ec0 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 20 20 53 45  blockquote>.  SE
15ed0 4c 45 43 54 20 64 61 74 65 74 69 6d 65 28 31 30  LECT datetime(10
15ee0 39 32 39 34 31 34 36 36 2c 20 27 75 6e 69 78 65  92941466, 'unixe
15ef0 70 6f 63 68 27 2c 20 27 6c 6f 63 61 6c 74 69 6d  poch', 'localtim
15f00 65 27 29 3b 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74  e');.</blockquot
15f10 65 3e 29 5e 0a 0a 5e 28 3c 70 3e 43 6f 6d 70 75  e>)^..^(<p>Compu
15f20 74 65 20 74 68 65 20 63 75 72 72 65 6e 74 20 75  te the current u
15f30 6e 69 78 20 74 69 6d 65 73 74 61 6d 70 2e 3c 2f  nix timestamp.</
15f40 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e  p>..<blockquote>
15f50 0a 20 20 53 45 4c 45 43 54 20 73 74 72 66 74 69  .  SELECT strfti
15f60 6d 65 28 27 25 73 27 2c 27 6e 6f 77 27 29 3b 0a  me('%s','now');.
15f70 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 29 5e 0a  </blockquote>)^.
15f80 0a 5e 28 3c 70 3e 43 6f 6d 70 75 74 65 20 74 68  .^(<p>Compute th
15f90 65 20 6e 75 6d 62 65 72 20 6f 66 20 64 61 79 73  e number of days
15fa0 20 73 69 6e 63 65 20 74 68 65 20 73 69 67 6e 69   since the signi
15fb0 6e 67 20 6f 66 20 74 68 65 20 55 53 20 44 65 63  ng of the US Dec
15fc0 6c 61 72 61 74 69 6f 6e 0a 6f 66 20 49 6e 64 65  laration.of Inde
15fd0 70 65 6e 64 65 6e 63 65 2e 3c 2f 70 3e 0a 0a 3c  pendence.</p>..<
15fe0 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 20 20 53 45  blockquote>.  SE
15ff0 4c 45 43 54 20 6a 75 6c 69 61 6e 64 61 79 28 27  LECT julianday('
16000 6e 6f 77 27 29 20 2d 20 6a 75 6c 69 61 6e 64 61  now') - julianda
16010 79 28 27 31 37 37 36 2d 30 37 2d 30 34 27 29 3b  y('1776-07-04');
16020 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 29 5e  .</blockquote>)^
16030 0a 0a 5e 28 3c 70 3e 43 6f 6d 70 75 74 65 20 74  ..^(<p>Compute t
16040 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 73 65 63  he number of sec
16050 6f 6e 64 73 20 73 69 6e 63 65 20 61 20 70 61 72  onds since a par
16060 74 69 63 75 6c 61 72 20 6d 6f 6d 65 6e 74 20 69  ticular moment i
16070 6e 20 32 30 30 34 3a 3c 2f 70 3e 0a 0a 3c 62 6c  n 2004:</p>..<bl
16080 6f 63 6b 71 75 6f 74 65 3e 0a 20 20 53 45 4c 45  ockquote>.  SELE
16090 43 54 20 73 74 72 66 74 69 6d 65 28 27 25 73 27  CT strftime('%s'
160a0 2c 27 6e 6f 77 27 29 20 2d 20 73 74 72 66 74 69  ,'now') - strfti
160b0 6d 65 28 27 25 73 27 2c 27 32 30 30 34 2d 30 31  me('%s','2004-01
160c0 2d 30 31 20 30 32 3a 33 34 3a 35 36 27 29 3b 0a  -01 02:34:56');.
160d0 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 29 5e 0a  </blockquote>)^.
160e0 0a 5e 28 3c 70 3e 0a 43 6f 6d 70 75 74 65 20 74  .^(<p>.Compute t
160f0 68 65 20 64 61 74 65 20 6f 66 20 74 68 65 20 66  he date of the f
16100 69 72 73 74 20 54 75 65 73 64 61 79 20 69 6e 20  irst Tuesday in 
16110 4f 63 74 6f 62 65 72 0a 66 6f 72 20 74 68 65 20  October.for the 
16120 63 75 72 72 65 6e 74 20 79 65 61 72 2e 0a 3c 2f  current year..</
16130 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e  p>..<blockquote>
16140 0a 20 20 53 45 4c 45 43 54 20 64 61 74 65 28 27  .  SELECT date('
16150 6e 6f 77 27 2c 27 73 74 61 72 74 20 6f 66 20 79  now','start of y
16160 65 61 72 27 2c 27 2b 39 20 6d 6f 6e 74 68 73 27  ear','+9 months'
16170 2c 27 77 65 65 6b 64 61 79 20 32 27 29 3b 0a 3c  ,'weekday 2');.<
16180 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 29 5e 0a 0a  /blockquote>)^..
16190 5e 28 3c 70 3e 43 6f 6d 70 75 74 65 20 74 68 65  ^(<p>Compute the
161a0 20 74 69 6d 65 20 73 69 6e 63 65 20 74 68 65 20   time since the 
161b0 75 6e 69 78 20 65 70 6f 63 68 20 69 6e 20 73 65  unix epoch in se
161c0 63 6f 6e 64 73 20 0a 28 6c 69 6b 65 20 73 74 72  conds .(like str
161d0 66 74 69 6d 65 28 27 25 73 27 2c 27 6e 6f 77 27  ftime('%s','now'
161e0 29 20 65 78 63 65 70 74 20 69 6e 63 6c 75 64 65  ) except include
161f0 73 20 66 72 61 63 74 69 6f 6e 61 6c 20 70 61 72  s fractional par
16200 74 29 3a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71  t):</p>..<blockq
16210 75 6f 74 65 3e 0a 20 20 53 45 4c 45 43 54 20 28  uote>.  SELECT (
16220 6a 75 6c 69 61 6e 64 61 79 28 27 6e 6f 77 27 29  julianday('now')
16230 20 2d 20 32 34 34 30 35 38 37 2e 35 29 2a 38 36   - 2440587.5)*86
16240 34 30 30 2e 30 3b 0a 3c 2f 62 6c 6f 63 6b 71 75  400.0;.</blockqu
16250 6f 74 65 3e 29 5e 0a 0a 3c 68 33 3e 43 61 76 65  ote>)^..<h3>Cave
16260 61 74 73 20 41 6e 64 20 42 75 67 73 3c 2f 68 33  ats And Bugs</h3
16270 3e 0a 0a 3c 70 3e 54 68 65 20 63 6f 6d 70 75 74  >..<p>The comput
16280 61 74 69 6f 6e 20 6f 66 20 6c 6f 63 61 6c 20 74  ation of local t
16290 69 6d 65 20 64 65 70 65 6e 64 73 20 68 65 61 76  ime depends heav
162a0 69 6c 79 20 6f 6e 20 74 68 65 20 77 68 69 6d 20  ily on the whim 
162b0 0a 6f 66 20 70 6f 6c 69 74 69 63 69 61 6e 73 20  .of politicians 
162c0 61 6e 64 20 69 73 20 74 68 75 73 20 64 69 66 66  and is thus diff
162d0 69 63 75 6c 74 20 74 6f 20 67 65 74 20 63 6f 72  icult to get cor
162e0 72 65 63 74 20 66 6f 72 20 0a 61 6c 6c 20 6c 6f  rect for .all lo
162f0 63 61 6c 65 73 2e 20 5e 49 6e 20 74 68 69 73 20  cales. ^In this 
16300 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2c 20  implementation, 
16310 74 68 65 20 73 74 61 6e 64 61 72 64 20 43 20 6c  the standard C l
16320 69 62 72 61 72 79 20 0a 66 75 6e 63 74 69 6f 6e  ibrary .function
16330 20 6c 6f 63 61 6c 74 69 6d 65 5f 72 28 29 20 69   localtime_r() i
16340 73 20 75 73 65 64 20 74 6f 20 61 73 73 69 73 74  s used to assist
16350 20 69 6e 20 74 68 65 20 63 61 6c 63 75 6c 61 74   in the calculat
16360 69 6f 6e 20 6f 66 20 0a 6c 6f 63 61 6c 20 74 69  ion of .local ti
16370 6d 65 2e 20 20 5e 28 54 68 65 20 0a 6c 6f 63 61  me.  ^(The .loca
16380 6c 74 69 6d 65 5f 72 28 29 20 43 20 66 75 6e 63  ltime_r() C func
16390 74 69 6f 6e 20 6e 6f 72 6d 61 6c 6c 79 20 6f 6e  tion normally on
163a0 6c 79 20 77 6f 72 6b 73 20 66 6f 72 20 79 65 61  ly works for yea
163b0 72 73 0a 62 65 74 77 65 65 6e 20 31 39 37 30 20  rs.between 1970 
163c0 61 6e 64 20 32 30 33 37 2e 20 46 6f 72 20 64 61  and 2037. For da
163d0 74 65 73 20 6f 75 74 73 69 64 65 20 74 68 69 73  tes outside this
163e0 20 72 61 6e 67 65 2c 20 53 51 4c 69 74 65 20 0a   range, SQLite .
163f0 61 74 74 65 6d 70 74 73 20 74 6f 20 6d 61 70 20  attempts to map 
16400 74 68 65 20 79 65 61 72 20 69 6e 74 6f 20 61 6e  the year into an
16410 20 65 71 75 69 76 61 6c 65 6e 74 20 79 65 61 72   equivalent year
16420 20 77 69 74 68 69 6e 20 0a 74 68 69 73 20 72 61   within .this ra
16430 6e 67 65 2c 20 64 6f 20 74 68 65 20 63 61 6c 63  nge, do the calc
16440 75 6c 61 74 69 6f 6e 2c 20 74 68 65 6e 20 6d 61  ulation, then ma
16450 70 20 74 68 65 20 79 65 61 72 20 62 61 63 6b 2e  p the year back.
16460 29 5e 3c 2f 70 3e 0a 0a 0a 3c 70 3e 5e 28 54 68  )^</p>...<p>^(Th
16470 65 73 65 20 66 75 6e 63 74 69 6f 6e 73 20 6f 6e  ese functions on
16480 6c 79 20 77 6f 72 6b 20 66 6f 72 20 64 61 74 65  ly work for date
16490 73 20 62 65 74 77 65 65 6e 20 30 30 30 30 2d 30  s between 0000-0
164a0 31 2d 30 31 20 30 30 3a 30 30 3a 30 30 0a 61 6e  1-01 00:00:00.an
164b0 64 20 39 39 39 39 2d 31 32 2d 33 31 20 32 33 3a  d 9999-12-31 23:
164c0 35 39 3a 35 39 20 28 6a 75 6c 69 64 61 6e 20 64  59:59 (julidan d
164d0 61 79 20 6e 75 6d 62 65 72 73 20 31 37 32 31 30  ay numbers 17210
164e0 35 39 2e 35 20 74 68 72 6f 75 67 68 20 35 33 37  59.5 through 537
164f0 33 34 38 34 2e 35 29 2e 29 5e 0a 46 6f 72 20 64  3484.5).)^.For d
16500 61 74 65 73 20 6f 75 74 73 69 64 65 20 74 68 61  ates outside tha
16510 74 20 72 61 6e 67 65 2c 20 74 68 65 20 72 65 73  t range, the res
16520 75 6c 74 73 20 6f 66 20 74 68 65 73 65 0a 66 75  ults of these.fu
16530 6e 63 74 69 6f 6e 73 20 61 72 65 20 75 6e 64 65  nctions are unde
16540 66 69 6e 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 4e  fined.</p>..<p>N
16550 6f 6e 2d 56 69 73 74 61 20 57 69 6e 64 6f 77 73  on-Vista Windows
16560 20 70 6c 61 74 66 6f 72 6d 73 20 6f 6e 6c 79 20   platforms only 
16570 73 75 70 70 6f 72 74 20 6f 6e 65 20 73 65 74 20  support one set 
16580 6f 66 20 44 53 54 20 72 75 6c 65 73 2e 20 0a 56  of DST rules. .V
16590 69 73 74 61 20 6f 6e 6c 79 20 73 75 70 70 6f 72  ista only suppor
165a0 74 73 20 74 77 6f 2e 20 54 68 65 72 65 66 6f 72  ts two. Therefor
165b0 65 2c 20 6f 6e 20 74 68 65 73 65 20 70 6c 61 74  e, on these plat
165c0 66 6f 72 6d 73 2c 20 0a 68 69 73 74 6f 72 69 63  forms, .historic
165d0 61 6c 20 44 53 54 20 63 61 6c 63 75 6c 61 74 69  al DST calculati
165e0 6f 6e 73 20 77 69 6c 6c 20 62 65 20 69 6e 63 6f  ons will be inco
165f0 72 72 65 63 74 2e 20 0a 46 6f 72 20 65 78 61 6d  rrect. .For exam
16600 70 6c 65 2c 20 69 6e 20 74 68 65 20 55 53 2c 20  ple, in the US, 
16610 69 6e 20 32 30 30 37 20 74 68 65 20 44 53 54 20  in 2007 the DST 
16620 72 75 6c 65 73 20 63 68 61 6e 67 65 64 2e 20 0a  rules changed. .
16630 4e 6f 6e 2d 56 69 73 74 61 20 57 69 6e 64 6f 77  Non-Vista Window
16640 73 20 70 6c 61 74 66 6f 72 6d 73 20 61 70 70 6c  s platforms appl
16650 79 20 74 68 65 20 6e 65 77 20 32 30 30 37 20 44  y the new 2007 D
16660 53 54 20 72 75 6c 65 73 20 0a 74 6f 20 61 6c 6c  ST rules .to all
16670 20 70 72 65 76 69 6f 75 73 20 79 65 61 72 73 20   previous years 
16680 61 73 20 77 65 6c 6c 2e 20 56 69 73 74 61 20 64  as well. Vista d
16690 6f 65 73 20 73 6f 6d 65 77 68 61 74 20 62 65 74  oes somewhat bet
166a0 74 65 72 0a 67 65 74 74 69 6e 67 20 72 65 73 75  ter.getting resu
166b0 6c 74 73 20 63 6f 72 72 65 63 74 20 62 61 63 6b  lts correct back
166c0 20 74 6f 20 31 39 38 36 2c 20 77 68 65 6e 20 74   to 1986, when t
166d0 68 65 20 72 75 6c 65 73 20 77 65 72 65 20 61 6c  he rules were al
166e0 73 6f 20 63 68 61 6e 67 65 64 2e 3c 2f 70 3e 0a  so changed.</p>.
166f0 0a 3c 70 3e 41 6c 6c 20 69 6e 74 65 72 6e 61 6c  .<p>All internal
16700 20 63 6f 6d 70 75 74 61 74 69 6f 6e 73 20 61 73   computations as
16710 73 75 6d 65 20 74 68 65 20 0a 5b 68 74 74 70 3a  sume the .[http:
16720 2f 2f 65 6e 2e 77 69 6b 69 70 65 64 69 61 2e 6f  //en.wikipedia.o
16730 72 67 2f 77 69 6b 69 2f 47 72 65 67 6f 72 69 61  rg/wiki/Gregoria
16740 6e 5f 63 61 6c 65 6e 64 61 72 20 7c 20 47 72 65  n_calendar | Gre
16750 67 6f 72 69 61 6e 20 63 61 6c 65 6e 64 61 72 5d  gorian calendar]
16760 0a 73 79 73 74 65 6d 2e 20 20 49 74 20 69 73 20  .system.  It is 
16770 61 6c 73 6f 20 61 73 73 75 6d 65 64 20 74 68 61  also assumed tha
16780 74 20 65 76 65 72 79 0a 64 61 79 20 69 73 20 65  t every.day is e
16790 78 61 63 74 6c 79 20 38 36 34 30 30 20 73 65 63  xactly 86400 sec
167a0 6f 6e 64 73 20 69 6e 20 64 75 72 61 74 69 6f 6e  onds in duration
167b0 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23  .</p>..<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 23 23 23 23 0a 53 65 63 74  ###########.Sect
16810 69 6f 6e 20 7b 41 67 67 72 65 67 61 74 65 20 46  ion {Aggregate F
16820 75 6e 63 74 69 6f 6e 73 7d 20 61 67 67 66 75 6e  unctions} aggfun
16830 63 20 7b 2a 61 67 67 66 75 6e 63 7d 0a 3c 2f 74  c {*aggfunc}.</t
16840 63 6c 3e 0a 0a 3c 70 3e 0a 54 68 65 20 61 67 67  cl>..<p>.The agg
16850 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 73  regate functions
16860 20 73 68 6f 77 6e 20 62 65 6c 6f 77 20 61 72 65   shown below are
16870 20 61 76 61 69 6c 61 62 6c 65 20 62 79 20 64 65   available by de
16880 66 61 75 6c 74 2e 20 20 41 64 64 69 74 69 6f 6e  fault.  Addition
16890 61 6c 0a 61 67 67 72 65 67 61 74 65 20 66 75 6e  al.aggregate fun
168a0 63 74 69 6f 6e 73 20 77 72 69 74 74 65 6e 20 69  ctions written i
168b0 6e 20 43 20 6d 61 79 20 62 65 20 61 64 64 65 64  n C may be added
168c0 20 75 73 69 6e 67 20 74 68 65 20 0a 5b 73 71 6c   using the .[sql
168d0 69 74 65 33 5f 63 72 65 61 74 65 5f 66 75 6e 63  ite3_create_func
168e0 74 69 6f 6e 28 29 5d 3c 2f 61 3e 0a 41 50 49 2e  tion()]</a>.API.
168f0 3c 2f 70 3e 0a 0a 3c 70 3e 0a 5e 49 6e 20 61 6e  </p>..<p>.^In an
16900 79 20 61 67 67 72 65 67 61 74 65 20 66 75 6e 63  y aggregate func
16910 74 69 6f 6e 20 74 68 61 74 20 74 61 6b 65 73 20  tion that takes 
16920 61 20 73 69 6e 67 6c 65 20 61 72 67 75 6d 65 6e  a single argumen
16930 74 2c 20 74 68 61 74 20 61 72 67 75 6d 65 6e 74  t, that argument
16940 0a 63 61 6e 20 62 65 20 70 72 65 63 65 64 65 64  .can be preceded
16950 20 62 79 20 74 68 65 20 6b 65 79 77 6f 72 64 20   by the keyword 
16960 44 49 53 54 49 4e 43 54 2e 20 20 5e 49 6e 20 73  DISTINCT.  ^In s
16970 75 63 68 20 63 61 73 65 73 2c 20 64 75 70 6c 69  uch cases, dupli
16980 63 61 74 65 0a 65 6c 65 6d 65 6e 74 73 20 61 72  cate.elements ar
16990 65 20 66 69 6c 74 65 72 65 64 20 62 65 66 6f 72  e filtered befor
169a0 65 20 62 65 69 6e 67 20 70 61 73 73 65 64 20 69  e being passed i
169b0 6e 74 6f 20 74 68 65 20 61 67 67 72 65 67 61 74  nto the aggregat
169c0 65 20 66 75 6e 63 74 69 6f 6e 2e 0a 5e 46 6f 72  e function..^For
169d0 20 65 78 61 6d 70 6c 65 2c 20 74 68 65 20 66 75   example, the fu
169e0 6e 63 74 69 6f 6e 20 22 63 6f 75 6e 74 28 64 69  nction "count(di
169f0 73 74 69 6e 63 74 20 58 29 22 20 77 69 6c 6c 20  stinct X)" will 
16a00 72 65 74 75 72 6e 20 74 68 65 20 6e 75 6d 62 65  return the numbe
16a10 72 0a 6f 66 20 64 69 73 74 69 6e 63 74 20 76 61  r.of distinct va
16a20 6c 75 65 73 20 6f 66 20 63 6f 6c 75 6d 6e 20 58  lues of column X
16a30 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20   instead of the 
16a40 74 6f 74 61 6c 20 6e 75 6d 62 65 72 20 6f 66 20  total number of 
16a50 6e 6f 6e 2d 6e 75 6c 6c 0a 76 61 6c 75 65 73 20  non-null.values 
16a60 69 6e 20 63 6f 6c 75 6d 6e 20 58 2e 0a 3c 2f 70  in column X..</p
16a70 3e 0a 0a 3c 74 61 62 6c 65 20 62 6f 72 64 65 72  >..<table border
16a80 3d 30 20 63 65 6c 6c 70 61 64 64 69 6e 67 3d 31  =0 cellpadding=1
16a90 30 3e 0a 3c 74 63 6c 3e 0a 66 75 6e 63 64 65 66  0>.<tcl>.funcdef
16aa0 20 7b 61 76 67 28 58 29 7d 20 7b 2a 61 76 67 20   {avg(X)} {*avg 
16ab0 7b 61 76 67 28 29 20 61 67 67 72 65 67 61 74 65  {avg() aggregate
16ac0 20 66 75 6e 63 74 69 6f 6e 7d 7d 20 7b 0a 20 20   function}} {.  
16ad0 5e 54 68 65 20 61 76 67 28 29 20 66 75 6e 63 74  ^The avg() funct
16ae0 69 6f 6e 0a 20 20 72 65 74 75 72 6e 73 20 74 68  ion.  returns th
16af0 65 20 61 76 65 72 61 67 65 20 76 61 6c 75 65 20  e average value 
16b00 6f 66 20 61 6c 6c 20 6e 6f 6e 2d 4e 55 4c 4c 20  of all non-NULL 
16b10 3c 69 3e 58 3c 2f 69 3e 20 77 69 74 68 69 6e 20  <i>X</i> within 
16b20 61 0a 20 20 67 72 6f 75 70 2e 20 20 5e 53 74 72  a.  group.  ^Str
16b30 69 6e 67 20 61 6e 64 20 42 4c 4f 42 20 76 61 6c  ing and BLOB val
16b40 75 65 73 20 74 68 61 74 20 64 6f 20 6e 6f 74 20  ues that do not 
16b50 6c 6f 6f 6b 20 6c 69 6b 65 20 6e 75 6d 62 65 72  look like number
16b60 73 20 61 72 65 0a 20 20 69 6e 74 65 72 70 72 65  s are.  interpre
16b70 74 65 64 20 61 73 20 30 2e 0a 20 20 5e 54 68 65  ted as 0..  ^The
16b80 20 72 65 73 75 6c 74 20 6f 66 20 61 76 67 28 29   result of avg()
16b90 20 69 73 20 61 6c 77 61 79 73 20 61 20 66 6c 6f   is always a flo
16ba0 61 74 69 6e 67 20 70 6f 69 6e 74 20 76 61 6c 75  ating point valu
16bb0 65 20 61 73 20 6c 6f 6e 67 20 61 73 0a 20 20 61  e as long as.  a
16bc0 74 20 74 68 65 72 65 20 69 73 20 61 74 20 6c 65  t there is at le
16bd0 61 73 74 20 6f 6e 65 20 6e 6f 6e 2d 4e 55 4c 4c  ast one non-NULL
16be0 20 69 6e 70 75 74 20 65 76 65 6e 20 69 66 20 61   input even if a
16bf0 6c 6c 0a 20 20 69 6e 70 75 74 73 20 61 72 65 20  ll.  inputs are 
16c00 69 6e 74 65 67 65 72 73 2e 20 20 5e 54 68 65 20  integers.  ^The 
16c10 72 65 73 75 6c 74 20 6f 66 20 61 76 67 28 29 20  result of avg() 
16c20 69 73 20 4e 55 4c 4c 20 69 66 20 61 6e 64 20 6f  is NULL if and o
16c30 6e 6c 79 20 69 66 0a 20 20 74 68 65 72 65 20 61  nly if.  there a
16c40 72 65 20 6e 6f 20 6e 6f 6e 2d 4e 55 4c 4c 20 69  re no non-NULL i
16c50 6e 70 75 74 73 2e 20 20 0a 7d 0a 0a 66 75 6e 63  nputs.  .}..func
16c60 64 65 66 20 7b 63 6f 75 6e 74 28 58 29 20 63 6f  def {count(X) co
16c70 75 6e 74 28 2a 29 7d 20 7b 2a 63 6f 75 6e 74 20  unt(*)} {*count 
16c80 7b 63 6f 75 6e 74 28 29 20 61 67 67 72 65 67 61  {count() aggrega
16c90 74 65 20 66 75 6e 63 74 69 6f 6e 7d 7d 20 7b 0a  te function}} {.
16ca0 20 20 5e 54 68 65 20 63 6f 75 6e 74 28 58 29 20    ^The count(X) 
16cb0 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73  function returns
16cc0 0a 20 20 61 20 63 6f 75 6e 74 20 6f 66 20 74 68  .  a count of th
16cd0 65 20 6e 75 6d 62 65 72 20 6f 66 20 74 69 6d 65  e number of time
16ce0 73 0a 20 20 74 68 61 74 20 3c 69 3e 58 3c 2f 69  s.  that <i>X</i
16cf0 3e 20 69 73 20 6e 6f 74 20 4e 55 4c 4c 20 69 6e  > is not NULL in
16d00 20 61 20 67 72 6f 75 70 2e 20 20 5e 54 68 65 20   a group.  ^The 
16d10 63 6f 75 6e 74 28 2a 29 20 66 75 6e 63 74 69 6f  count(*) functio
16d20 6e 0a 20 20 28 77 69 74 68 20 6e 6f 20 61 72 67  n.  (with no arg
16d30 75 6d 65 6e 74 73 29 20 72 65 74 75 72 6e 73 20  uments) returns 
16d40 74 68 65 20 74 6f 74 61 6c 20 6e 75 6d 62 65 72  the total number
16d50 20 6f 66 20 72 6f 77 73 20 69 6e 20 74 68 65 20   of rows in the 
16d60 67 72 6f 75 70 2e 0a 7d 0a 0a 66 75 6e 63 64 65  group..}..funcde
16d70 66 20 7b 67 72 6f 75 70 5f 63 6f 6e 63 61 74 28  f {group_concat(
16d80 58 29 20 67 72 6f 75 70 5f 63 6f 6e 63 61 74 28  X) group_concat(
16d90 58 2c 59 29 7d 20 7b 0a 20 20 2a 67 72 6f 75 70  X,Y)} {.  *group
16da0 5f 63 6f 6e 63 61 74 20 7b 67 72 6f 75 70 5f 63  _concat {group_c
16db0 6f 6e 63 61 74 28 29 20 61 67 67 72 65 67 61 74  oncat() aggregat
16dc0 65 20 66 75 6e 63 74 69 6f 6e 7d 0a 7d 20 7b 0a  e function}.} {.
16dd0 20 20 5e 54 68 65 20 67 72 6f 75 70 5f 63 6f 6e    ^The group_con
16de0 63 61 74 28 29 20 66 75 6e 63 74 69 6f 6e 20 72  cat() function r
16df0 65 74 75 72 6e 73 0a 20 20 61 20 73 74 72 69 6e  eturns.  a strin
16e00 67 20 77 68 69 63 68 20 69 73 20 74 68 65 20 63  g which is the c
16e10 6f 6e 63 61 74 65 6e 61 74 69 6f 6e 20 6f 66 0a  oncatenation of.
16e20 20 20 61 6c 6c 20 6e 6f 6e 2d 4e 55 4c 4c 20 76    all non-NULL v
16e30 61 6c 75 65 73 20 6f 66 20 3c 69 3e 58 3c 2f 69  alues of <i>X</i
16e40 3e 2e 20 20 5e 49 66 20 70 61 72 61 6d 65 74 65  >.  ^If paramete
16e50 72 20 3c 69 3e 59 3c 2f 69 3e 20 69 73 20 70 72  r <i>Y</i> is pr
16e60 65 73 65 6e 74 20 74 68 65 6e 0a 20 20 69 73 20  esent then.  is 
16e70 69 73 20 75 73 65 64 20 61 73 20 74 68 65 20 73  is used as the s
16e80 65 70 61 72 61 74 6f 72 0a 20 20 62 65 74 77 65  eparator.  betwe
16e90 65 6e 20 69 6e 73 74 61 6e 63 65 73 20 6f 66 20  en instances of 
16ea0 3c 69 3e 58 3c 2f 69 3e 2e 20 20 5e 41 20 63 6f  <i>X</i>.  ^A co
16eb0 6d 6d 61 20 28 22 2c 22 29 20 69 73 20 75 73 65  mma (",") is use
16ec0 64 20 61 73 20 74 68 65 20 73 65 70 61 72 61 74  d as the separat
16ed0 6f 72 0a 20 20 69 66 20 3c 69 3e 59 3c 2f 69 3e  or.  if <i>Y</i>
16ee0 20 69 73 20 6f 6d 69 74 74 65 64 2e 20 20 54 68   is omitted.  Th
16ef0 65 20 6f 72 64 65 72 20 6f 66 20 74 68 65 20 63  e order of the c
16f00 6f 6e 63 61 74 65 6e 61 74 65 64 20 65 6c 65 6d  oncatenated elem
16f10 65 6e 74 73 20 69 73 0a 20 20 61 72 62 69 74 72  ents is.  arbitr
16f20 61 72 79 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20  ary..}..funcdef 
16f30 7b 6d 61 78 28 58 29 7d 20 7b 2a 6d 61 78 41 67  {max(X)} {*maxAg
16f40 67 46 75 6e 63 20 2a 61 67 67 5f 6d 61 78 20 7b  gFunc *agg_max {
16f50 6d 61 78 28 29 20 61 67 67 72 65 67 61 74 65 20  max() aggregate 
16f60 66 75 6e 63 74 69 6f 6e 7d 7d 20 7b 0a 20 20 5e  function}} {.  ^
16f70 54 68 65 20 6d 61 78 28 29 20 61 67 67 72 65 67  The max() aggreg
16f80 61 74 65 20 66 75 6e 63 74 69 6f 6e 0a 20 20 72  ate function.  r
16f90 65 74 75 72 6e 73 20 74 68 65 20 6d 61 78 69 6d  eturns the maxim
16fa0 75 6d 20 76 61 6c 75 65 20 6f 66 20 61 6c 6c 20  um value of all 
16fb0 76 61 6c 75 65 73 20 69 6e 20 74 68 65 20 67 72  values in the gr
16fc0 6f 75 70 2e 0a 20 20 5e 54 68 65 20 6d 61 78 69  oup..  ^The maxi
16fd0 6d 75 6d 20 76 61 6c 75 65 20 69 73 20 74 68 65  mum value is the
16fe0 20 76 61 6c 75 65 20 74 68 61 74 20 77 6f 75 6c   value that woul
16ff0 64 20 62 65 20 72 65 74 75 72 6e 65 64 20 6c 61  d be returned la
17000 73 74 20 69 6e 20 61 6e 0a 20 20 4f 52 44 45 52  st in an.  ORDER
17010 20 42 59 20 6f 6e 20 74 68 65 20 73 61 6d 65 20   BY on the same 
17020 63 6f 6c 75 6d 6e 2e 20 20 5e 41 67 67 72 65 67  column.  ^Aggreg
17030 61 74 65 20 6d 61 78 28 29 20 72 65 74 75 72 6e  ate max() return
17040 73 20 4e 55 4c 4c 20 0a 20 20 69 66 20 61 6e 64  s NULL .  if and
17050 20 6f 6e 6c 79 20 69 66 20 74 68 65 72 65 20 61   only if there a
17060 72 65 20 6e 6f 20 6e 6f 6e 2d 4e 55 4c 4c 20 76  re no non-NULL v
17070 61 6c 75 65 73 20 69 6e 20 74 68 65 20 67 72 6f  alues in the gro
17080 75 70 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b  up..}..funcdef {
17090 6d 69 6e 28 58 29 7d 20 7b 2a 6d 69 6e 41 67 67  min(X)} {*minAgg
170a0 46 75 6e 63 20 2a 61 67 67 5f 6d 69 6e 20 7b 6d  Func *agg_min {m
170b0 69 6e 28 29 20 61 67 67 72 65 67 61 74 65 20 66  in() aggregate f
170c0 75 6e 63 74 69 6f 6e 7d 7d 20 7b 0a 20 20 5e 54  unction}} {.  ^T
170d0 68 65 20 6d 69 6e 28 29 20 61 67 67 72 65 67 61  he min() aggrega
170e0 74 65 20 66 75 6e 63 74 69 6f 6e 0a 20 20 72 65  te function.  re
170f0 74 75 72 6e 73 20 74 68 65 20 6d 69 6e 69 6d 75  turns the minimu
17100 6d 20 6e 6f 6e 2d 4e 55 4c 4c 20 76 61 6c 75 65  m non-NULL value
17110 20 6f 66 20 61 6c 6c 20 76 61 6c 75 65 73 20 69   of all values i
17120 6e 20 74 68 65 20 67 72 6f 75 70 2e 0a 20 20 5e  n the group..  ^
17130 54 68 65 20 6d 69 6e 69 6d 75 6d 20 76 61 6c 75  The minimum valu
17140 65 20 69 73 20 74 68 65 20 66 69 72 73 74 20 6e  e is the first n
17150 6f 6e 2d 4e 55 4c 4c 20 76 61 6c 75 65 20 74 68  on-NULL value th
17160 61 74 20 77 6f 75 6c 64 20 61 70 70 65 61 72 0a  at would appear.
17170 20 20 69 6e 20 61 6e 20 4f 52 44 45 52 20 42 59    in an ORDER BY
17180 20 6f 66 20 74 68 65 20 63 6f 6c 75 6d 6e 2e 0a   of the column..
17190 20 20 5e 41 67 67 72 65 67 61 74 65 20 6d 69 6e    ^Aggregate min
171a0 28 29 20 72 65 74 75 72 6e 73 20 4e 55 4c 4c 20  () returns NULL 
171b0 69 66 20 61 6e 64 20 6f 6e 6c 79 20 69 66 20 74  if and only if t
171c0 68 65 72 65 20 61 72 65 20 6e 6f 20 6e 6f 6e 2d  here are no non-
171d0 4e 55 4c 4c 0a 20 20 76 61 6c 75 65 73 20 69 6e  NULL.  values in
171e0 20 74 68 65 20 67 72 6f 75 70 2e 0a 7d 0a 0a 66   the group..}..f
171f0 75 6e 63 64 65 66 20 7b 73 75 6d 28 58 29 20 74  uncdef {sum(X) t
17200 6f 74 61 6c 28 58 29 7d 20 7b 0a 20 20 2a 73 75  otal(X)} {.  *su
17210 6d 46 75 6e 63 20 2a 73 75 6d 20 2a 74 6f 74 61  mFunc *sum *tota
17220 6c 0a 20 20 7b 73 75 6d 28 29 20 61 67 67 72 65  l.  {sum() aggre
17230 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 7d 0a 20  gate function}. 
17240 20 7b 74 6f 74 61 6c 28 29 20 61 67 67 72 65 67   {total() aggreg
17250 61 74 65 20 66 75 6e 63 74 69 6f 6e 7d 0a 7d 20  ate function}.} 
17260 7b 0a 20 20 5e 54 68 65 20 73 75 6d 28 29 20 61  {.  ^The sum() a
17270 6e 64 20 74 6f 74 61 6c 28 29 20 61 67 67 72 65  nd total() aggre
17280 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 73 0a 20  gate functions. 
17290 20 72 65 74 75 72 6e 20 73 75 6d 20 6f 66 20 61   return sum of a
172a0 6c 6c 20 6e 6f 6e 2d 4e 55 4c 4c 20 76 61 6c 75  ll non-NULL valu
172b0 65 73 20 69 6e 20 74 68 65 20 67 72 6f 75 70 2e  es in the group.
172c0 0a 20 20 5e 49 66 20 74 68 65 72 65 20 61 72 65  .  ^If there are
172d0 20 6e 6f 20 6e 6f 6e 2d 4e 55 4c 4c 20 69 6e 70   no non-NULL inp
172e0 75 74 20 72 6f 77 73 20 74 68 65 6e 20 73 75 6d  ut rows then sum
172f0 28 29 20 72 65 74 75 72 6e 73 0a 20 20 4e 55 4c  () returns.  NUL
17300 4c 20 62 75 74 20 74 6f 74 61 6c 28 29 20 72 65  L but total() re
17310 74 75 72 6e 73 20 30 2e 30 2e 0a 20 20 4e 55 4c  turns 0.0..  NUL
17320 4c 20 69 73 20 6e 6f 74 20 6e 6f 72 6d 61 6c 6c  L is not normall
17330 79 20 61 20 68 65 6c 70 66 75 6c 20 72 65 73 75  y a helpful resu
17340 6c 74 20 66 6f 72 20 74 68 65 20 73 75 6d 20 6f  lt for the sum o
17350 66 20 6e 6f 20 72 6f 77 73 0a 20 20 62 75 74 20  f no rows.  but 
17360 74 68 65 20 53 51 4c 20 73 74 61 6e 64 61 72 64  the SQL standard
17370 20 72 65 71 75 69 72 65 73 20 69 74 20 61 6e 64   requires it and
17380 20 6d 6f 73 74 20 6f 74 68 65 72 0a 20 20 53 51   most other.  SQ
17390 4c 20 64 61 74 61 62 61 73 65 20 65 6e 67 69 6e  L database engin
173a0 65 73 20 69 6d 70 6c 65 6d 65 6e 74 20 73 75 6d  es implement sum
173b0 28 29 20 74 68 61 74 20 77 61 79 20 73 6f 20 53  () that way so S
173c0 51 4c 69 74 65 20 64 6f 65 73 20 69 74 20 69 6e  QLite does it in
173d0 20 74 68 65 0a 20 20 73 61 6d 65 20 77 61 79 20   the.  same way 
173e0 69 6e 20 6f 72 64 65 72 20 74 6f 20 62 65 20 63  in order to be c
173f0 6f 6d 70 61 74 69 62 6c 65 2e 20 20 20 54 68 65  ompatible.   The
17400 20 6e 6f 6e 2d 73 74 61 6e 64 61 72 64 20 74 6f   non-standard to
17410 74 61 6c 28 29 20 66 75 6e 63 74 69 6f 6e 0a 20  tal() function. 
17420 20 69 73 20 70 72 6f 76 69 64 65 64 20 61 73 20   is provided as 
17430 61 20 63 6f 6e 76 65 6e 69 65 6e 74 20 77 61 79  a convenient way
17440 20 74 6f 20 77 6f 72 6b 20 61 72 6f 75 6e 64 20   to work around 
17450 74 68 69 73 20 64 65 73 69 67 6e 20 70 72 6f 62  this design prob
17460 6c 65 6d 0a 20 20 69 6e 20 74 68 65 20 53 51 4c  lem.  in the SQL
17470 20 6c 61 6e 67 75 61 67 65 2e 3c 2f 70 3e 0a 0a   language.</p>..
17480 20 20 3c 70 3e 5e 54 68 65 20 72 65 73 75 6c 74    <p>^The result
17490 20 6f 66 20 74 6f 74 61 6c 28 29 20 69 73 20 61   of total() is a
174a0 6c 77 61 79 73 20 61 20 66 6c 6f 61 74 69 6e 67  lways a floating
174b0 20 70 6f 69 6e 74 20 76 61 6c 75 65 2e 0a 20 20   point value..  
174c0 5e 54 68 65 20 72 65 73 75 6c 74 20 6f 66 20 73  ^The result of s
174d0 75 6d 28 29 20 69 73 20 61 6e 20 69 6e 74 65 67  um() is an integ
174e0 65 72 20 76 61 6c 75 65 20 69 66 20 61 6c 6c 20  er value if all 
174f0 6e 6f 6e 2d 4e 55 4c 4c 20 69 6e 70 75 74 73 20  non-NULL inputs 
17500 61 72 65 20 69 6e 74 65 67 65 72 73 2e 0a 20 20  are integers..  
17510 5e 49 66 20 61 6e 79 20 69 6e 70 75 74 20 74 6f  ^If any input to
17520 20 73 75 6d 28 29 20 69 73 20 6e 65 69 74 68 65   sum() is neithe
17530 72 20 61 6e 20 69 6e 74 65 67 65 72 20 6f 72 20  r an integer or 
17540 61 20 4e 55 4c 4c 0a 20 20 74 68 65 6e 20 73 75  a NULL.  then su
17550 6d 28 29 20 72 65 74 75 72 6e 73 20 61 20 66 6c  m() returns a fl
17560 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20 76 61 6c  oating point val
17570 75 65 0a 20 20 77 68 69 63 68 20 6d 69 67 68 74  ue.  which might
17580 20 62 65 20 61 6e 20 61 70 70 72 6f 78 69 6d 61   be an approxima
17590 74 69 6f 6e 20 74 6f 20 74 68 65 20 74 72 75 65  tion to the true
175a0 20 73 75 6d 2e 3c 2f 70 3e 0a 0a 20 20 3c 70 3e   sum.</p>..  <p>
175b0 5e 53 75 6d 28 29 20 77 69 6c 6c 20 74 68 72 6f  ^Sum() will thro
175c0 77 20 61 6e 20 22 69 6e 74 65 67 65 72 20 6f 76  w an "integer ov
175d0 65 72 66 6c 6f 77 22 20 65 78 63 65 70 74 69 6f  erflow" exceptio
175e0 6e 20 69 66 20 61 6c 6c 20 69 6e 70 75 74 73 0a  n if all inputs.
175f0 20 20 61 72 65 20 69 6e 74 65 67 65 72 73 20 6f    are integers o
17600 72 20 4e 55 4c 4c 0a 20 20 61 6e 64 20 61 6e 20  r NULL.  and an 
17610 69 6e 74 65 67 65 72 20 6f 76 65 72 66 6c 6f 77  integer overflow
17620 20 6f 63 63 75 72 73 20 61 74 20 61 6e 79 20 70   occurs at any p
17630 6f 69 6e 74 20 64 75 72 69 6e 67 20 74 68 65 20  oint during the 
17640 63 6f 6d 70 75 74 61 74 69 6f 6e 2e 0a 20 20 5e  computation..  ^
17650 54 6f 74 61 6c 28 29 20 6e 65 76 65 72 20 74 68  Total() never th
17660 72 6f 77 73 20 61 6e 20 69 6e 74 65 67 65 72 20  rows an integer 
17670 6f 76 65 72 66 6c 6f 77 2e 0a 7d 0a 3c 2f 74 63  overflow..}.</tc
17680 6c 3e 0a 3c 2f 74 61 62 6c 65 3e 0a 0a 3c 74 63  l>.</table>..<tc
17690 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23 23  l>.#############
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 23 23 23  ################
176e0 23 0a 53 65 63 74 69 6f 6e 20 49 4e 53 45 52 54  #.Section INSERT
176f0 20 69 6e 73 65 72 74 20 7b 49 4e 53 45 52 54 20   insert {INSERT 
17700 2a 49 4e 53 45 52 54 73 7d 0a 0a 42 75 62 62 6c  *INSERTs}..Bubbl
17710 65 44 69 61 67 72 61 6d 20 69 6e 73 65 72 74 2d  eDiagram insert-
17720 73 74 6d 74 20 31 0a 3c 2f 74 63 6c 3e 0a 0a 3c  stmt 1.</tcl>..<
17730 70 3e 54 68 65 20 49 4e 53 45 52 54 20 73 74 61  p>The INSERT sta
17740 74 65 6d 65 6e 74 20 63 6f 6d 65 73 20 69 6e 20  tement comes in 
17750 74 68 72 65 65 20 62 61 73 69 63 20 66 6f 72 6d  three basic form
17760 73 2e 20 20 5e 54 68 65 20 66 69 72 73 74 20 66  s.  ^The first f
17770 6f 72 6d 0a 28 77 69 74 68 20 74 68 65 20 22 56  orm.(with the "V
17780 41 4c 55 45 53 22 20 6b 65 79 77 6f 72 64 29 20  ALUES" keyword) 
17790 63 72 65 61 74 65 73 20 61 20 73 69 6e 67 6c 65  creates a single
177a0 20 6e 65 77 20 72 6f 77 20 69 6e 20 61 6e 20 65   new row in an e
177b0 78 69 73 74 69 6e 67 20 74 61 62 6c 65 2e 0a 5e  xisting table..^
177c0 49 66 20 6e 6f 20 63 6f 6c 75 6d 6e 2d 6c 69 73  If no column-lis
177d0 74 20 69 73 20 73 70 65 63 69 66 69 65 64 20 74  t is specified t
177e0 68 65 6e 20 74 68 65 20 6e 75 6d 62 65 72 20 6f  hen the number o
177f0 66 20 76 61 6c 75 65 73 20 6d 75 73 74 0a 62 65  f values must.be
17800 20 74 68 65 20 73 61 6d 65 20 61 73 20 74 68 65   the same as the
17810 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d   number of colum
17820 6e 73 20 69 6e 20 74 68 65 20 74 61 62 6c 65 2e  ns in the table.
17830 20 20 5e 49 66 20 61 20 63 6f 6c 75 6d 6e 2d 6c    ^If a column-l
17840 69 73 74 0a 69 73 20 73 70 65 63 69 66 69 65 64  ist.is specified
17850 2c 20 74 68 65 6e 20 74 68 65 20 6e 75 6d 62 65  , then the numbe
17860 72 20 6f 66 20 76 61 6c 75 65 73 20 6d 75 73 74  r of values must
17870 20 6d 61 74 63 68 20 74 68 65 20 6e 75 6d 62 65   match the numbe
17880 72 20 6f 66 0a 73 70 65 63 69 66 69 65 64 20 63  r of.specified c
17890 6f 6c 75 6d 6e 73 2e 20 20 5e 43 6f 6c 75 6d 6e  olumns.  ^Column
178a0 73 20 6f 66 20 74 68 65 20 74 61 62 6c 65 20 74  s of the table t
178b0 68 61 74 20 64 6f 20 6e 6f 74 20 61 70 70 65 61  hat do not appea
178c0 72 20 69 6e 20 74 68 65 0a 63 6f 6c 75 6d 6e 20  r in the.column 
178d0 6c 69 73 74 20 61 72 65 20 66 69 6c 6c 65 64 20  list are filled 
178e0 77 69 74 68 20 74 68 65 20 64 65 66 61 75 6c 74  with the default
178f0 20 76 61 6c 75 65 2c 20 6f 72 20 77 69 74 68 20   value, or with 
17900 4e 55 4c 4c 20 69 66 20 6e 6f 0a 64 65 66 61 75  NULL if no.defau
17910 6c 74 20 76 61 6c 75 65 20 69 73 20 73 70 65 63  lt value is spec
17920 69 66 69 65 64 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e  ified..</p>..<p>
17930 5e 54 68 65 20 73 65 63 6f 6e 64 20 66 6f 72 6d  ^The second form
17940 20 6f 66 20 74 68 65 20 49 4e 53 45 52 54 20 73   of the INSERT s
17950 74 61 74 65 6d 65 6e 74 20 74 61 6b 65 73 20 69  tatement takes i
17960 74 73 20 64 61 74 61 20 66 72 6f 6d 20 61 0a 53  ts data from a.S
17970 45 4c 45 43 54 20 73 74 61 74 65 6d 65 6e 74 2e  ELECT statement.
17980 20 20 5e 54 68 65 20 6e 75 6d 62 65 72 20 6f 66    ^The number of
17990 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65 20   columns in the 
179a0 72 65 73 75 6c 74 20 6f 66 20 74 68 65 0a 53 45  result of the.SE
179b0 4c 45 43 54 20 6d 75 73 74 20 65 78 61 63 74 6c  LECT must exactl
179c0 79 20 6d 61 74 63 68 20 74 68 65 20 6e 75 6d 62  y match the numb
179d0 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e  er of columns in
179e0 20 74 68 65 20 74 61 62 6c 65 20 69 66 0a 6e 6f   the table if.no
179f0 20 63 6f 6c 75 6d 6e 20 6c 69 73 74 20 69 73 20   column list is 
17a00 73 70 65 63 69 66 69 65 64 2c 20 6f 72 20 69 74  specified, or it
17a10 20 6d 75 73 74 20 6d 61 74 63 68 20 74 68 65 20   must match the 
17a20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e  number of column
17a30 73 0a 6e 61 6d 65 64 20 69 6e 20 74 68 65 20 63  s.named in the c
17a40 6f 6c 75 6d 6e 20 6c 69 73 74 2e 20 20 5e 41 20  olumn list.  ^A 
17a50 6e 65 77 20 65 6e 74 72 79 20 69 73 20 6d 61 64  new entry is mad
17a60 65 20 69 6e 20 74 68 65 20 74 61 62 6c 65 0a 66  e in the table.f
17a70 6f 72 20 65 76 65 72 79 20 72 6f 77 20 6f 66 20  or every row of 
17a80 74 68 65 20 53 45 4c 45 43 54 20 72 65 73 75 6c  the SELECT resul
17a90 74 2e 20 20 5e 54 68 65 20 53 45 4c 45 43 54 20  t.  ^The SELECT 
17aa0 6d 61 79 20 62 65 20 73 69 6d 70 6c 65 0a 6f 72  may be simple.or
17ab0 20 63 6f 6d 70 6f 75 6e 64 2e 3c 2f 70 3e 0a 0a   compound.</p>..
17ac0 3c 70 3e 5e 54 68 65 20 74 68 69 72 64 20 66 6f  <p>^The third fo
17ad0 72 6d 20 6f 66 20 61 6e 20 49 4e 53 45 52 54 20  rm of an INSERT 
17ae0 73 74 61 74 65 6d 65 6e 74 20 69 73 20 77 69 74  statement is wit
17af0 68 20 44 45 46 41 55 4c 54 20 56 41 4c 55 45 53  h DEFAULT VALUES
17b00 2e 0a 5e 28 54 68 65 20 49 4e 53 45 52 54 20 2e  ..^(The INSERT .
17b10 2e 2e 20 44 45 46 41 55 4c 54 20 56 41 4c 55 45  .. DEFAULT VALUE
17b20 53 20 73 74 61 74 65 6d 65 6e 74 20 73 69 6d 70  S statement simp
17b30 6c 79 20 63 72 65 61 74 65 73 20 61 20 73 69 6e  ly creates a sin
17b40 67 6c 65 20 6e 65 77 0a 72 6f 77 20 69 6e 20 74  gle new.row in t
17b50 68 65 20 74 61 62 6c 65 20 69 6e 20 77 68 69 63  he table in whic
17b60 68 20 65 61 63 68 20 63 6f 6c 75 6d 6e 20 69 73  h each column is
17b70 20 66 69 6c 6c 65 64 20 77 69 74 68 20 69 74 73   filled with its
17b80 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 2e 29   default value.)
17b90 5e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20 6f  ^</p>..<p>^The o
17ba0 70 74 69 6f 6e 61 6c 20 63 6f 6e 66 6c 69 63 74  ptional conflict
17bb0 2d 63 6c 61 75 73 65 20 61 6c 6c 6f 77 73 20 74  -clause allows t
17bc0 68 65 20 73 70 65 63 69 66 69 63 61 74 69 6f 6e  he specification
17bd0 20 6f 66 20 61 6e 20 61 6c 74 65 72 6e 61 74 69   of an alternati
17be0 76 65 0a 63 6f 6e 73 74 72 61 69 6e 74 20 63 6f  ve.constraint co
17bf0 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f  nflict resolutio
17c00 6e 20 61 6c 67 6f 72 69 74 68 6d 20 74 6f 20 75  n algorithm to u
17c10 73 65 20 64 75 72 69 6e 67 20 74 68 69 73 20 6f  se during this o
17c20 6e 65 20 49 4e 53 45 52 54 20 63 6f 6d 6d 61 6e  ne INSERT comman
17c30 64 2e 0a 53 65 65 20 74 68 65 20 73 65 63 74 69  d..See the secti
17c40 6f 6e 20 74 69 74 6c 65 64 0a 5b 4f 4e 20 43 4f  on titled.[ON CO
17c50 4e 46 4c 49 43 54 5d 20 66 6f 72 20 61 64 64 69  NFLICT] for addi
17c60 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69  tional informati
17c70 6f 6e 2e 0a 5e 46 6f 72 20 63 6f 6d 70 61 74 69  on..^For compati
17c80 62 69 6c 69 74 79 20 77 69 74 68 20 4d 79 53 51  bility with MySQ
17c90 4c 2c 20 74 68 65 20 70 61 72 73 65 72 20 61 6c  L, the parser al
17ca0 6c 6f 77 73 20 74 68 65 20 75 73 65 20 6f 66 20  lows the use of 
17cb0 74 68 65 0a 73 69 6e 67 6c 65 20 6b 65 79 77 6f  the.single keywo
17cc0 72 64 20 3c 61 20 68 72 65 66 3d 22 6c 61 6e 67  rd <a href="lang
17cd0 5f 72 65 70 6c 61 63 65 2e 68 74 6d 6c 22 3e 52  _replace.html">R
17ce0 45 50 4c 41 43 45 3c 2f 61 3e 20 61 73 20 61 6e  EPLACE</a> as an
17cf0 20 0a 61 6c 69 61 73 20 66 6f 72 20 22 49 4e 53   .alias for "INS
17d00 45 52 54 20 4f 52 20 52 45 50 4c 41 43 45 22 2e  ERT OR REPLACE".
17d10 0a 3c 2f 70 3e 0a 0a 3c 70 3e 5e 28 54 68 65 20  .</p>..<p>^(The 
17d20 6f 70 74 69 6f 6e 61 6c 20 22 3c 69 3e 64 61 74  optional "<i>dat
17d30 61 62 61 73 65 2d 6e 61 6d 65 3c 2f 69 3e 3c 62  abase-name</i><b
17d40 3e 2e 3c 2f 62 3e 22 20 70 72 65 66 69 78 20 6f  >.</b>" prefix o
17d50 6e 20 74 68 65 20 3c 69 3e 74 61 62 6c 65 2d 6e  n the <i>table-n
17d60 61 6d 65 3c 2f 69 3e 0a 69 73 20 73 75 70 70 6f  ame</i>.is suppo
17d70 72 74 20 66 6f 72 20 74 6f 70 2d 6c 65 76 65 6c  rt for top-level
17d80 20 49 4e 53 45 52 54 20 73 74 61 74 65 6d 65 6e   INSERT statemen
17d90 74 73 20 6f 6e 6c 79 2e 29 5e 20 20 5e 54 68 65  ts only.)^  ^The
17da0 20 74 61 62 6c 65 20 6e 61 6d 65 20 6d 75 73 74   table name must
17db0 20 62 65 0a 75 6e 71 75 61 6c 69 66 69 65 64 20   be.unqualified 
17dc0 66 6f 72 20 49 4e 53 45 52 54 20 73 74 61 74 65  for INSERT state
17dd0 6d 65 6e 74 73 20 74 68 61 74 20 6f 63 63 75 72  ments that occur
17de0 20 77 69 74 68 69 6e 20 5b 43 52 45 41 54 45 20   within [CREATE 
17df0 54 52 49 47 47 45 52 5d 20 73 74 61 74 65 6d 65  TRIGGER] stateme
17e00 6e 74 73 2e 0a 5e 53 69 6d 69 6c 61 72 6c 79 2c  nts..^Similarly,
17e10 20 74 68 65 20 22 44 45 46 41 55 4c 54 20 56 41   the "DEFAULT VA
17e20 4c 55 45 53 22 20 66 6f 72 6d 20 6f 66 20 74 68  LUES" form of th
17e30 65 20 49 4e 53 45 52 54 20 73 74 61 74 65 6d 65  e INSERT stateme
17e40 6e 74 20 69 73 20 73 75 70 70 6f 72 74 65 64 20  nt is supported 
17e50 66 6f 72 0a 74 6f 70 2d 6c 65 76 65 6c 20 49 4e  for.top-level IN
17e60 53 45 52 54 20 73 74 61 74 65 6d 65 6e 74 73 20  SERT statements 
17e70 6f 6e 6c 79 20 61 6e 64 20 6e 6f 74 20 66 6f 72  only and not for
17e80 20 49 4e 53 45 52 54 20 73 74 61 74 65 6d 65 6e   INSERT statemen
17e90 74 73 20 77 69 74 68 69 6e 0a 74 72 69 67 67 65  ts within.trigge
17ea0 72 73 2e 0a 3c 70 3e 0a 0a 3c 74 63 6c 3e 0a 23  rs..<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 23 23 23 23 0a 53 65  #############.Se
17f00 63 74 69 6f 6e 20 7b 4f 4e 20 43 4f 4e 46 4c 49  ction {ON CONFLI
17f10 43 54 20 63 6c 61 75 73 65 7d 20 63 6f 6e 66 6c  CT clause} confl
17f20 69 63 74 20 7b 7b 63 6f 6e 66 6c 69 63 74 20 63  ict {{conflict c
17f30 6c 61 75 73 65 7d 20 7b 4f 4e 20 43 4f 4e 46 4c  lause} {ON CONFL
17f40 49 43 54 7d 7d 0a 0a 42 75 62 62 6c 65 44 69 61  ICT}}..BubbleDia
17f50 67 72 61 6d 20 63 6f 6e 66 6c 69 63 74 2d 63 6c  gram conflict-cl
17f60 61 75 73 65 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e  ause.</tcl>..<p>
17f70 54 68 65 20 4f 4e 20 43 4f 4e 46 4c 49 43 54 20  The ON CONFLICT 
17f80 63 6c 61 75 73 65 20 69 73 20 6e 6f 74 20 61 20  clause is not a 
17f90 73 65 70 61 72 61 74 65 20 53 51 4c 20 63 6f 6d  separate SQL com
17fa0 6d 61 6e 64 2e 20 20 49 74 20 69 73 20 61 0a 6e  mand.  It is a.n
17fb0 6f 6e 2d 73 74 61 6e 64 61 72 64 20 63 6c 61 75  on-standard clau
17fc0 73 65 20 74 68 61 74 20 63 61 6e 20 61 70 70 65  se that can appe
17fd0 61 72 20 69 6e 20 6d 61 6e 79 20 6f 74 68 65 72  ar in many other
17fe0 20 53 51 4c 20 63 6f 6d 6d 61 6e 64 73 2e 0a 49   SQL commands..I
17ff0 74 20 69 73 20 67 69 76 65 6e 20 69 74 73 20 6f  t is given its o
18000 77 6e 20 73 65 63 74 69 6f 6e 20 69 6e 20 74 68  wn section in th
18010 69 73 20 64 6f 63 75 6d 65 6e 74 20 62 65 63 61  is document beca
18020 75 73 65 20 69 74 20 69 73 20 6e 6f 74 0a 70 61  use it is not.pa
18030 72 74 20 6f 66 20 73 74 61 6e 64 61 72 64 20 53  rt of standard S
18040 51 4c 20 61 6e 64 20 74 68 65 72 65 66 6f 72 65  QL and therefore
18050 20 6d 69 67 68 74 20 6e 6f 74 20 62 65 20 66 61   might not be fa
18060 6d 69 6c 69 61 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e  miliar.</p>..<p>
18070 5e 54 68 65 20 73 79 6e 74 61 78 20 66 6f 72 20  ^The syntax for 
18080 74 68 65 20 4f 4e 20 43 4f 4e 46 4c 49 43 54 20  the ON CONFLICT 
18090 63 6c 61 75 73 65 20 69 73 20 61 73 20 73 68 6f  clause is as sho
180a0 77 6e 20 61 62 6f 76 65 20 66 6f 72 0a 74 68 65  wn above for.the
180b0 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 63 6f   CREATE TABLE co
180c0 6d 6d 61 6e 64 2e 20 20 5e 46 6f 72 20 74 68 65  mmand.  ^For the
180d0 20 49 4e 53 45 52 54 20 61 6e 64 0a 55 50 44 41   INSERT and.UPDA
180e0 54 45 20 63 6f 6d 6d 61 6e 64 73 2c 20 74 68 65  TE commands, the
180f0 20 6b 65 79 77 6f 72 64 73 20 22 4f 4e 20 43 4f   keywords "ON CO
18100 4e 46 4c 49 43 54 22 20 61 72 65 20 72 65 70 6c  NFLICT" are repl
18110 61 63 65 64 20 62 79 20 22 4f 52 22 20 73 6f 20  aced by "OR" so 
18120 74 68 61 74 0a 74 68 65 20 73 79 6e 74 61 78 20  that.the syntax 
18130 72 65 61 64 73 20 6d 6f 72 65 20 6e 61 74 75 72  reads more natur
18140 61 6c 6c 79 2e 20 20 46 6f 72 20 65 78 61 6d 70  ally.  For examp
18150 6c 65 2c 20 69 6e 73 74 65 61 64 20 6f 66 0a 22  le, instead of."
18160 49 4e 53 45 52 54 20 4f 4e 20 43 4f 4e 46 4c 49  INSERT ON CONFLI
18170 43 54 20 49 47 4e 4f 52 45 22 20 77 65 20 68 61  CT IGNORE" we ha
18180 76 65 20 22 49 4e 53 45 52 54 20 4f 52 20 49 47  ve "INSERT OR IG
18190 4e 4f 52 45 22 2e 0a 54 68 65 20 6b 65 79 77 6f  NORE"..The keywo
181a0 72 64 73 20 63 68 61 6e 67 65 20 62 75 74 20 74  rds change but t
181b0 68 65 20 6d 65 61 6e 69 6e 67 20 6f 66 20 74 68  he meaning of th
181c0 65 20 63 6c 61 75 73 65 20 69 73 20 74 68 65 20  e clause is the 
181d0 73 61 6d 65 0a 65 69 74 68 65 72 20 77 61 79 2e  same.either way.
181e0 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 4f 4e 20  </p>..<p>The ON 
181f0 43 4f 4e 46 4c 49 43 54 20 63 6c 61 75 73 65 20  CONFLICT clause 
18200 61 70 70 6c 69 65 73 20 74 6f 20 55 4e 49 51 55  applies to UNIQU
18210 45 2c 20 4e 4f 54 20 4e 55 4c 4c 2c 20 61 6e 64  E, NOT NULL, and
18220 20 43 48 45 43 4b 0a 63 6f 6e 73 74 72 61 69 6e   CHECK.constrain
18230 74 73 20 28 61 6e 64 20 74 6f 20 50 52 49 4d 41  ts (and to PRIMA
18240 52 59 20 4b 45 59 20 63 6f 6e 73 74 72 61 69 6e  RY KEY constrain
18250 74 73 20 77 68 69 63 68 20 66 6f 72 20 74 68 65  ts which for the
18260 20 70 75 72 70 6f 73 65 73 20 0a 6f 66 20 74 68   purposes .of th
18270 69 73 20 73 65 63 74 69 6f 6e 20 61 72 65 20 74  is section are t
18280 68 65 20 73 61 6d 65 20 74 68 69 6e 67 20 61 73  he same thing as
18290 20 55 4e 49 51 55 45 20 63 6f 6e 73 74 72 61 69   UNIQUE constrai
182a0 6e 74 73 29 2e 0a 54 68 65 20 4f 4e 20 43 4f 4e  nts)..The ON CON
182b0 46 4c 49 43 54 20 61 6c 67 6f 72 69 74 68 6d 20  FLICT algorithm 
182c0 64 6f 65 73 20 6e 6f 74 0a 61 70 70 6c 79 20 74  does not.apply t
182d0 6f 20 5b 46 4f 52 45 49 47 4e 20 4b 45 59 20 63  o [FOREIGN KEY c
182e0 6f 6e 73 74 72 61 69 6e 74 73 5d 2e 0a 54 68 65  onstraints]..The
182f0 72 65 20 61 72 65 20 66 69 76 65 20 63 6f 6e 66  re are five conf
18300 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20  lict resolution 
18310 61 6c 67 6f 72 69 74 68 6d 20 63 68 6f 69 63 65  algorithm choice
18320 73 3a 0a 52 4f 4c 4c 42 41 43 4b 2c 20 41 42 4f  s:.ROLLBACK, ABO
18330 52 54 2c 20 46 41 49 4c 2c 20 49 47 4e 4f 52 45  RT, FAIL, IGNORE
18340 2c 20 61 6e 64 20 52 45 50 4c 41 43 45 2e 0a 5e  , and REPLACE..^
18350 54 68 65 20 64 65 66 61 75 6c 74 20 63 6f 6e 66  The default conf
18360 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20  lict resolution 
18370 61 6c 67 6f 72 69 74 68 6d 20 69 73 20 41 42 4f  algorithm is ABO
18380 52 54 2e 20 20 54 68 69 73 0a 69 73 20 77 68 61  RT.  This.is wha
18390 74 20 74 68 65 79 20 6d 65 61 6e 3a 3c 2f 70 3e  t they mean:</p>
183a0 0a 0a 3c 64 6c 3e 0a 3c 64 74 3e 3c 62 3e 52 4f  ..<dl>.<dt><b>RO
183b0 4c 4c 42 41 43 4b 3c 2f 62 3e 3c 2f 64 74 3e 0a  LLBACK</b></dt>.
183c0 3c 64 64 3e 3c 70 3e 20 5e 57 68 65 6e 20 61 6e  <dd><p> ^When an
183d0 20 61 70 70 6c 69 63 61 62 6c 65 20 63 6f 6e 73   applicable cons
183e0 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e  traint violation
183f0 20 6f 63 63 75 72 73 2c 20 74 68 65 20 52 4f 4c   occurs, the ROL
18400 4c 42 41 43 4b 0a 72 65 73 6f 6c 75 74 69 6f 6e  LBACK.resolution
18410 20 61 6c 67 6f 72 69 74 68 6d 20 61 62 6f 72 74   algorithm abort
18420 73 20 74 68 65 20 63 75 72 72 65 6e 74 20 53 51  s the current SQ
18430 4c 20 73 74 61 74 65 6d 65 6e 74 20 77 69 74 68  L statement with
18440 0a 61 6e 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54  .an SQLITE_CONST
18450 52 41 49 4e 54 20 65 72 72 6f 72 20 61 6e 64 20  RAINT error and 
18460 72 6f 6c 6c 73 20 62 61 63 6b 20 74 68 65 20 63  rolls back the c
18470 75 72 72 65 6e 74 20 74 72 61 6e 73 61 63 74 69  urrent transacti
18480 6f 6e 2e 0a 5e 49 66 20 6e 6f 20 74 72 61 6e 73  on..^If no trans
18490 61 63 74 69 6f 6e 20 69 73 0a 61 63 74 69 76 65  action is.active
184a0 20 28 6f 74 68 65 72 20 74 68 61 6e 20 74 68 65   (other than the
184b0 20 69 6d 70 6c 69 65 64 20 74 72 61 6e 73 61 63   implied transac
184c0 74 69 6f 6e 20 74 68 61 74 20 69 73 20 63 72 65  tion that is cre
184d0 61 74 65 64 20 6f 6e 20 65 76 65 72 79 0a 63 6f  ated on every.co
184e0 6d 6d 61 6e 64 29 20 74 68 65 6e 20 74 68 65 20  mmand) then the 
184f0 52 4f 4c 4c 42 41 43 4b 20 72 65 73 6f 6c 75 74  ROLLBACK resolut
18500 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 20 77 6f  ion algorithm wo
18510 72 6b 73 20 74 68 65 20 73 61 6d 65 20 61 73 20  rks the same as 
18520 74 68 65 0a 41 42 4f 52 54 20 61 6c 67 6f 72 69  the.ABORT algori
18530 74 68 6d 2e 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a 3c  thm.</p></dd>..<
18540 64 74 3e 3c 62 3e 41 42 4f 52 54 3c 2f 62 3e 3c  dt><b>ABORT</b><
18550 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 20 5e 57 68  /dt>.<dd><p> ^Wh
18560 65 6e 20 61 6e 20 61 70 70 6c 69 63 61 62 6c 65  en an applicable
18570 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c   constraint viol
18580 61 74 69 6f 6e 20 6f 63 63 75 72 73 2c 20 74 68  ation occurs, th
18590 65 20 41 42 4f 52 54 0a 72 65 73 6f 6c 75 74 69  e ABORT.resoluti
185a0 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 20 61 62 6f  on algorithm abo
185b0 72 74 73 20 74 68 65 20 63 75 72 72 65 6e 74 20  rts the current 
185c0 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 0a 77 69  SQL statement.wi
185d0 74 68 20 61 6e 20 53 51 4c 49 54 45 5f 43 4f 4e  th an SQLITE_CON
185e0 53 54 52 41 49 54 20 65 72 72 6f 72 20 61 6e 64  STRAIT error and
185f0 20 62 61 63 6b 73 20 6f 75 74 20 61 6e 79 20 63   backs out any c
18600 68 61 6e 67 65 73 0a 6d 61 64 65 20 62 79 20 74  hanges.made by t
18610 68 65 20 63 75 72 72 65 6e 74 20 53 51 4c 20 73  he current SQL s
18620 74 61 74 65 6d 65 6e 74 3b 20 62 75 74 20 63 68  tatement; but ch
18630 61 6e 67 65 73 20 63 61 75 73 65 64 0a 62 79 20  anges caused.by 
18640 70 72 69 6f 72 20 53 51 4c 20 73 74 61 74 65 6d  prior SQL statem
18650 65 6e 74 73 20 77 69 74 68 69 6e 20 74 68 65 20  ents within the 
18660 73 61 6d 65 20 74 72 61 6e 73 61 63 74 69 6f 6e  same transaction
18670 20 61 72 65 20 70 72 65 73 65 72 76 65 64 20 61   are preserved a
18680 6e 64 20 74 68 65 0a 74 72 61 6e 73 61 63 74 69  nd the.transacti
18690 6f 6e 20 72 65 6d 61 69 6e 73 20 61 63 74 69 76  on remains activ
186a0 65 2e 0a 54 68 69 73 20 69 73 20 74 68 65 20 64  e..This is the d
186b0 65 66 61 75 6c 74 20 62 65 68 61 76 69 6f 72 20  efault behavior 
186c0 61 6e 64 20 74 68 65 20 62 65 68 61 76 69 6f 72  and the behavior
186d0 20 70 72 6f 73 63 72 69 62 65 64 20 74 68 65 20   proscribed the 
186e0 74 68 65 20 53 51 4c 0a 73 74 61 6e 64 61 72 64  the SQL.standard
186f0 2e 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a 3c 64 74 3e  .</p></dd>..<dt>
18700 3c 62 3e 46 41 49 4c 3c 2f 62 3e 3c 2f 64 74 3e  <b>FAIL</b></dt>
18710 0a 3c 64 64 3e 3c 70 3e 20 5e 57 68 65 6e 20 61  .<dd><p> ^When a
18720 6e 20 61 70 70 6c 69 63 61 62 6c 65 20 63 6f 6e  n applicable con
18730 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f  straint violatio
18740 6e 20 6f 63 63 75 72 73 2c 20 74 68 65 20 46 41  n occurs, the FA
18750 49 4c 0a 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c  IL.resolution al
18760 67 6f 72 69 74 68 6d 20 61 62 6f 72 74 73 20 74  gorithm aborts t
18770 68 65 20 63 75 72 72 65 6e 74 20 53 51 4c 20 73  he current SQL s
18780 74 61 74 65 6d 65 6e 74 20 77 69 74 68 20 61 6e  tatement with an
18790 0a 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49  .SQLITE_CONSTRAI
187a0 4e 54 20 65 72 72 6f 72 2e 20 20 5e 42 75 74 20  NT error.  ^But 
187b0 74 68 65 20 46 41 49 4c 20 72 65 73 6f 6c 75 74  the FAIL resolut
187c0 69 6f 6e 20 64 6f 65 73 20 6e 6f 74 0a 62 61 63  ion does not.bac
187d0 6b 20 6f 75 74 20 70 72 69 6f 72 20 63 68 61 6e  k out prior chan
187e0 67 65 73 20 6f 66 20 74 68 65 20 53 51 4c 20 73  ges of the SQL s
187f0 74 61 74 65 6d 65 6e 74 20 74 68 61 74 20 66 61  tatement that fa
18800 69 6c 65 64 20 6e 6f 72 20 64 6f 65 73 0a 69 74  iled nor does.it
18810 20 65 6e 64 20 74 68 65 20 74 72 61 6e 73 61 63   end the transac
18820 74 69 6f 6e 2e 0a 5e 46 6f 72 20 65 78 61 6d 70  tion..^For examp
18830 6c 65 2c 20 69 66 20 61 6e 20 55 50 44 41 54 45  le, if an UPDATE
18840 0a 73 74 61 74 65 6d 65 6e 74 20 65 6e 63 6f 75  .statement encou
18850 6e 74 65 72 65 64 20 61 20 63 6f 6e 73 74 72 61  ntered a constra
18860 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 6e  int violation on
18870 20 74 68 65 20 31 30 30 74 68 20 72 6f 77 20 74   the 100th row t
18880 68 61 74 0a 69 74 20 61 74 74 65 6d 70 74 73 20  hat.it attempts 
18890 74 6f 20 75 70 64 61 74 65 2c 20 74 68 65 6e 20  to update, then 
188a0 74 68 65 20 66 69 72 73 74 20 39 39 20 72 6f 77  the first 99 row
188b0 20 63 68 61 6e 67 65 73 20 61 72 65 20 70 72 65   changes are pre
188c0 73 65 72 76 65 64 0a 62 75 74 20 63 68 61 6e 67  served.but chang
188d0 65 73 20 74 6f 20 72 6f 77 73 20 31 30 30 20 61  es to rows 100 a
188e0 6e 64 20 62 65 79 6f 6e 64 20 6e 65 76 65 72 20  nd beyond never 
188f0 6f 63 63 75 72 2e 3c 2f 70 3e 3c 2f 64 64 3e 0a  occur.</p></dd>.
18900 0a 28 3c 64 74 3e 3c 62 3e 49 47 4e 4f 52 45 3c  .(<dt><b>IGNORE<
18910 2f 62 3e 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e  /b></dt>.<dd><p>
18920 20 5e 57 68 65 6e 20 61 6e 20 61 70 70 6c 69 63   ^When an applic
18930 61 62 6c 65 20 63 6f 6e 73 74 72 61 69 6e 74 20  able constraint 
18940 76 69 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72 73  violation occurs
18950 2c 20 0a 74 68 65 20 49 47 4e 4f 52 45 20 72 65  , .the IGNORE re
18960 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74  solution algorit
18970 68 6d 20 73 6b 69 70 73 20 74 68 65 20 6f 6e 65  hm skips the one
18980 20 72 6f 77 20 74 68 61 74 20 63 6f 6e 74 61 69   row that contai
18990 6e 73 0a 74 68 65 20 63 6f 6e 73 74 72 61 69 6e  ns.the constrain
189a0 74 20 76 69 6f 6c 61 74 69 6f 6e 20 61 6e 64 20  t violation and 
189b0 63 6f 6e 74 69 6e 75 65 73 20 70 72 6f 63 65 73  continues proces
189c0 73 69 6e 67 20 73 75 62 73 65 71 75 65 6e 74 20  sing subsequent 
189d0 72 6f 77 73 0a 6f 66 20 74 68 65 20 53 51 4c 20  rows.of the SQL 
189e0 73 74 61 74 65 6d 65 6e 74 20 61 73 20 69 66 20  statement as if 
189f0 6e 6f 74 68 69 6e 67 20 77 65 6e 74 20 77 72 6f  nothing went wro
18a00 6e 67 2e 0a 4f 74 68 65 72 20 72 6f 77 73 20 62  ng..Other rows b
18a10 65 66 6f 72 65 20 61 6e 64 20 61 66 74 65 72 20  efore and after 
18a20 74 68 65 20 72 6f 77 20 74 68 61 74 0a 63 6f 6e  the row that.con
18a30 74 61 69 6e 65 64 20 74 68 65 20 63 6f 6e 73 74  tained the const
18a40 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20  raint violation 
18a50 61 72 65 20 69 6e 73 65 72 74 65 64 20 6f 72 20  are inserted or 
18a60 75 70 64 61 74 65 64 0a 6e 6f 72 6d 61 6c 6c 79  updated.normally
18a70 2e 20 5e 4e 6f 20 65 72 72 6f 72 20 69 73 20 72  . ^No error is r
18a80 65 74 75 72 6e 65 64 20 77 68 65 6e 20 74 68 65  eturned when the
18a90 20 49 47 4e 4f 52 45 20 63 6f 6e 66 6c 69 63 74   IGNORE conflict
18aa0 20 72 65 73 6f 6c 75 74 69 6f 6e 0a 61 6c 67 6f   resolution.algo
18ab0 72 69 74 68 6d 20 69 73 20 75 73 65 64 2e 3c 2f  rithm is used.</
18ac0 70 3e 3c 2f 64 64 3e 0a 0a 3c 64 74 3e 3c 62 3e  p></dd>..<dt><b>
18ad0 52 45 50 4c 41 43 45 3c 2f 62 3e 3c 2f 64 74 3e  REPLACE</b></dt>
18ae0 0a 3c 64 64 3e 3c 70 3e 20 5e 57 68 65 6e 20 61  .<dd><p> ^When a
18af0 20 55 4e 49 51 55 45 20 63 6f 6e 73 74 72 61 69   UNIQUE constrai
18b00 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 63 63  nt violation occ
18b10 75 72 73 2c 20 74 68 65 20 52 45 50 4c 41 43 45  urs, the REPLACE
18b20 20 61 6c 67 6f 72 69 74 68 6d 0a 64 65 6c 65 74   algorithm.delet
18b30 65 73 20 70 72 65 2d 65 78 69 73 74 69 6e 67 20  es pre-existing 
18b40 72 6f 77 73 20 74 68 61 74 20 61 72 65 20 63 61  rows that are ca
18b50 75 73 69 6e 67 20 74 68 65 20 63 6f 6e 73 74 72  using the constr
18b60 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 0a 70  aint violation.p
18b70 72 69 6f 72 20 74 6f 20 69 6e 73 65 72 74 69 6e  rior to insertin
18b80 67 20 6f 72 20 75 70 64 61 74 69 6e 67 20 74 68  g or updating th
18b90 65 20 63 75 72 72 65 6e 74 20 72 6f 77 20 61 6e  e current row an
18ba0 64 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20 63 6f  d the command co
18bb0 6e 74 69 6e 75 65 73 20 0a 65 78 65 63 75 74 69  ntinues .executi
18bc0 6e 67 20 6e 6f 72 6d 61 6c 6c 79 2e 0a 5e 49 66  ng normally..^If
18bd0 20 61 20 4e 4f 54 20 4e 55 4c 4c 20 63 6f 6e 73   a NOT NULL cons
18be0 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e  traint violation
18bf0 20 6f 63 63 75 72 73 2c 20 74 68 65 20 52 45 50   occurs, the REP
18c00 4c 41 43 45 20 63 6f 6e 66 6c 69 63 74 0a 72 65  LACE conflict.re
18c10 73 6f 6c 75 74 69 6f 6e 20 72 65 70 6c 61 63 65  solution replace
18c20 73 20 74 68 65 20 4e 55 4c 4c 20 76 61 6c 75 65  s the NULL value
18c30 20 77 69 74 68 0a 68 65 20 64 65 66 61 75 6c 74   with.he default
18c40 20 76 61 6c 75 65 20 66 6f 72 20 74 68 61 74 20   value for that 
18c50 63 6f 6c 75 6d 6e 2c 20 6f 72 20 69 66 20 74 68  column, or if th
18c60 65 20 63 6f 6c 75 6d 6e 20 68 61 73 20 6e 6f 20  e column has no 
18c70 64 65 66 61 75 6c 74 0a 76 61 6c 75 65 2c 20 74  default.value, t
18c80 68 65 6e 20 74 68 65 20 41 42 4f 52 54 20 61 6c  hen the ABORT al
18c90 67 6f 72 69 74 68 6d 20 69 73 20 75 73 65 64 2e  gorithm is used.
18ca0 0a 5e 49 66 20 61 20 43 48 45 43 4b 20 63 6f 6e  .^If a CHECK con
18cb0 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f  straint violatio
18cc0 6e 20 6f 63 63 75 72 73 2c 20 74 68 65 20 52 45  n occurs, the RE
18cd0 50 4c 41 43 45 20 63 6f 6e 66 6c 69 63 74 20 72  PLACE conflict r
18ce0 65 73 6f 6c 75 74 69 6f 6e 0a 61 6c 67 6f 72 69  esolution.algori
18cf0 74 68 6d 20 61 6c 77 61 79 73 20 77 6f 72 6b 73  thm always works
18d00 20 6c 69 6b 65 20 41 42 4f 52 54 2e 3c 2f 70 3e   like ABORT.</p>
18d10 0a 0a 3c 70 3e 5e 57 68 65 6e 20 74 68 65 20 52  ..<p>^When the R
18d20 45 50 4c 41 43 45 20 63 6f 6e 66 6c 69 63 74 20  EPLACE conflict 
18d30 72 65 73 6f 6c 75 74 69 6f 6e 20 73 74 72 61 74  resolution strat
18d40 65 67 79 20 64 65 6c 65 74 65 73 20 72 6f 77 73  egy deletes rows
18d50 20 69 6e 20 6f 72 64 65 72 20 74 6f 0a 73 61 74   in order to.sat
18d60 69 73 66 79 20 61 20 63 6f 6e 73 74 72 61 69 6e  isfy a constrain
18d70 74 2c 20 5b 43 52 45 41 54 45 20 54 52 49 47 47  t, [CREATE TRIGG
18d80 45 52 20 7c 20 64 65 6c 65 74 65 20 74 72 69 67  ER | delete trig
18d90 67 65 72 73 5d 20 66 69 72 65 20 69 66 20 61 6e  gers] fire if an
18da0 64 20 6f 6e 6c 79 20 69 66 0a 5b 72 65 63 75 72  d only if.[recur
18db0 73 69 76 65 5f 74 72 69 67 67 65 72 73 20 70 72  sive_triggers pr
18dc0 61 67 6d 61 20 7c 20 72 65 63 75 72 73 69 76 65  agma | recursive
18dd0 20 74 72 69 67 67 65 72 73 5d 20 61 72 65 20 65   triggers] are e
18de0 6e 61 62 6c 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e  nabled.</p>..<p>
18df0 5e 54 68 65 20 5b 73 71 6c 69 74 65 33 5f 75 70  ^The [sqlite3_up
18e00 64 61 74 65 5f 68 6f 6f 6b 20 7c 20 75 70 64 61  date_hook | upda
18e10 74 65 20 68 6f 6f 6b 5d 20 69 73 20 6e 6f 74 20  te hook] is not 
18e20 69 6e 76 6f 6b 65 64 20 66 6f 72 20 72 6f 77 73  invoked for rows
18e30 20 74 68 61 74 0a 61 72 65 20 64 65 6c 65 74 65   that.are delete
18e40 64 20 62 79 20 74 68 65 20 52 45 50 4c 41 43 45  d by the REPLACE
18e50 20 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75   conflict resolu
18e60 74 69 6f 6e 20 73 74 72 65 74 65 67 79 2e 20 20  tion stretegy.  
18e70 5e 4e 6f 72 20 64 6f 65 73 0a 52 45 50 4c 41 43  ^Nor does.REPLAC
18e80 45 20 69 6e 63 72 65 6d 65 6e 74 20 74 68 65 20  E increment the 
18e90 5b 73 71 6c 69 74 65 33 5f 63 68 61 6e 67 65 73  [sqlite3_changes
18ea0 20 7c 20 63 68 61 6e 67 65 20 63 6f 75 6e 74 65   | change counte
18eb0 72 5d 2e 0a 54 68 65 20 65 78 63 65 70 74 69 6f  r]..The exceptio
18ec0 6e 61 6c 20 62 65 68 61 76 69 6f 72 73 20 64 65  nal behaviors de
18ed0 66 69 6e 65 64 20 69 6e 20 74 68 69 73 20 70 61  fined in this pa
18ee0 72 61 67 72 61 70 68 20 6d 69 67 68 74 20 63 68  ragraph might ch
18ef0 61 6e 67 65 20 0a 69 6e 20 61 20 66 75 74 75 72  ange .in a futur
18f00 65 20 72 65 6c 65 61 73 65 2e 3c 2f 70 3e 0a 3c  e release.</p>.<
18f10 2f 64 6c 3e 0a 0a 3c 70 3e 5e 54 68 65 20 61 6c  /dl>..<p>^The al
18f20 67 6f 72 69 74 68 6d 20 73 70 65 63 69 66 69 65  gorithm specifie
18f30 64 20 69 6e 20 74 68 65 20 4f 52 20 63 6c 61 75  d in the OR clau
18f40 73 65 20 6f 66 20 61 20 49 4e 53 45 52 54 20 6f  se of a INSERT o
18f50 72 20 55 50 44 41 54 45 0a 6f 76 65 72 72 69 64  r UPDATE.overrid
18f60 65 73 20 61 6e 79 20 61 6c 67 6f 72 69 74 68 6d  es any algorithm
18f70 20 73 70 65 63 69 66 69 65 64 20 69 6e 20 61 20   specified in a 
18f80 43 52 45 41 54 45 20 54 41 42 4c 45 2e 0a 5e 49  CREATE TABLE..^I
18f90 66 20 6e 6f 20 61 6c 67 6f 72 69 74 68 6d 20 69  f no algorithm i
18fa0 73 20 73 70 65 63 69 66 69 65 64 20 61 6e 79 77  s specified anyw
18fb0 68 65 72 65 2c 20 74 68 65 20 41 42 4f 52 54 20  here, the ABORT 
18fc0 61 6c 67 6f 72 69 74 68 6d 20 69 73 20 75 73 65  algorithm is use
18fd0 64 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23  d.</p>..<tcl>.##
18fe0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18ff0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
19000 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
19010 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
19020 23 23 23 23 23 23 23 23 23 23 23 23 0a 53 65 63  ############.Sec
19030 74 69 6f 6e 20 52 45 49 4e 44 45 58 20 72 65 69  tion REINDEX rei
19040 6e 64 65 78 20 52 45 49 4e 44 45 58 0a 0a 42 75  ndex REINDEX..Bu
19050 62 62 6c 65 44 69 61 67 72 61 6d 20 72 65 69 6e  bbleDiagram rein
19060 64 65 78 2d 73 74 6d 74 20 31 0a 3c 2f 74 63 6c  dex-stmt 1.</tcl
19070 3e 0a 0a 3c 70 3e 5e 54 68 65 20 52 45 49 4e 44  >..<p>^The REIND
19080 45 58 20 63 6f 6d 6d 61 6e 64 20 69 73 20 75 73  EX command is us
19090 65 64 20 74 6f 20 64 65 6c 65 74 65 20 61 6e 64  ed to delete and
190a0 20 72 65 63 72 65 61 74 65 20 69 6e 64 69 63 65   recreate indice
190b0 73 20 66 72 6f 6d 20 73 63 72 61 74 63 68 2e 0a  s from scratch..
190c0 54 68 69 73 20 69 73 20 75 73 65 66 75 6c 20 77  This is useful w
190d0 68 65 6e 20 74 68 65 20 64 65 66 69 6e 69 74 69  hen the definiti
190e0 6f 6e 20 6f 66 20 61 20 63 6f 6c 6c 61 74 69 6f  on of a collatio
190f0 6e 20 73 65 71 75 65 6e 63 65 20 68 61 73 20 63  n sequence has c
19100 68 61 6e 67 65 64 2e 0a 3c 2f 70 3e 0a 0a 3c 70  hanged..</p>..<p
19110 3e 5e 49 6e 20 74 68 65 20 66 69 72 73 74 20 66  >^In the first f
19120 6f 72 6d 2c 20 61 6c 6c 20 69 6e 64 69 63 65 73  orm, all indices
19130 20 69 6e 20 61 6c 6c 20 61 74 74 61 63 68 65 64   in all attached
19140 20 64 61 74 61 62 61 73 65 73 20 74 68 61 74 20   databases that 
19150 75 73 65 20 74 68 65 0a 6e 61 6d 65 64 20 63 6f  use the.named co
19160 6c 6c 61 74 69 6f 6e 20 73 65 71 75 65 6e 63 65  llation sequence
19170 20 61 72 65 20 72 65 63 72 65 61 74 65 64 2e 20   are recreated. 
19180 5e 28 49 6e 20 74 68 65 20 73 65 63 6f 6e 64 20  ^(In the second 
19190 66 6f 72 6d 2c 20 69 66 20 0a 3c 69 3e 26 23 39  form, if .<i>&#9
191a0 31 3b 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 2e  1;database-name.
191b0 26 23 39 33 3b 74 61 62 6c 65 2f 69 6e 64 65 78  &#93;table/index
191c0 2d 6e 61 6d 65 3c 2f 69 3e 20 69 64 65 6e 74 69  -name</i> identi
191d0 66 69 65 73 20 61 20 74 61 62 6c 65 2c 0a 74 68  fies a table,.th
191e0 65 6e 20 61 6c 6c 20 69 6e 64 69 63 65 73 0a 61  en all indices.a
191f0 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74  ssociated with t
19200 68 65 20 74 61 62 6c 65 20 61 72 65 20 72 65 62  he table are reb
19210 75 69 6c 74 2e 29 5e 20 5e 49 66 20 61 6e 20 69  uilt.)^ ^If an i
19220 6e 64 65 78 20 69 73 20 69 64 65 6e 74 69 66 69  ndex is identifi
19230 65 64 2c 20 74 68 65 6e 20 6f 6e 6c 79 0a 74 68  ed, then only.th
19240 69 73 20 73 70 65 63 69 66 69 63 20 69 6e 64 65  is specific inde
19250 78 20 69 73 20 64 65 6c 65 74 65 64 20 61 6e 64  x is deleted and
19260 20 72 65 63 72 65 61 74 65 64 2e 0a 3c 2f 70 3e   recreated..</p>
19270 0a 0a 3c 70 3e 5e 49 66 20 6e 6f 20 3c 69 3e 64  ..<p>^If no <i>d
19280 61 74 61 62 61 73 65 2d 6e 61 6d 65 3c 2f 69 3e  atabase-name</i>
19290 20 69 73 20 73 70 65 63 69 66 69 65 64 20 61 6e   is specified an
192a0 64 20 74 68 65 72 65 20 65 78 69 73 74 73 20 62  d there exists b
192b0 6f 74 68 20 61 20 74 61 62 6c 65 20 6f 72 0a 69  oth a table or.i
192c0 6e 64 65 78 20 61 6e 64 20 61 20 63 6f 6c 6c 61  ndex and a colla
192d0 74 69 6f 6e 20 73 65 71 75 65 6e 63 65 20 6f 66  tion sequence of
192e0 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6e   the specified n
192f0 61 6d 65 2c 20 74 68 65 6e 20 69 6e 64 69 63 65  ame, then indice
19300 73 20 61 73 73 6f 63 69 61 74 65 64 0a 77 69 74  s associated.wit
19310 68 20 74 68 65 20 63 6f 6c 6c 61 74 69 6f 6e 20  h the collation 
19320 73 65 71 75 65 6e 63 65 20 6f 6e 6c 79 20 61 72  sequence only ar
19330 65 20 72 65 63 6f 6e 73 74 72 75 63 74 65 64 2e  e reconstructed.
19340 20 54 68 69 73 20 61 6d 62 69 67 75 69 74 79 20   This ambiguity 
19350 6d 61 79 20 62 65 0a 64 69 73 70 65 6c 6c 65 64  may be.dispelled
19360 20 62 79 20 61 6c 77 61 79 73 20 73 70 65 63 69   by always speci
19370 66 79 69 6e 67 20 61 20 3c 69 3e 64 61 74 61 62  fying a <i>datab
19380 61 73 65 2d 6e 61 6d 65 3c 2f 69 3e 20 77 68 65  ase-name</i> whe
19390 6e 20 72 65 69 6e 64 65 78 69 6e 67 20 61 0a 73  n reindexing a.s
193a0 70 65 63 69 66 69 63 20 74 61 62 6c 65 20 6f 72  pecific table or
193b0 20 69 6e 64 65 78 2e 0a 0a 3c 74 63 6c 3e 0a 23   index...<tcl>.#
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 23 23 23  ################
193e0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
193f0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
19400 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 53  ##############.S
19410 65 63 74 69 6f 6e 20 52 45 50 4c 41 43 45 20 72  ection REPLACE r
19420 65 70 6c 61 63 65 20 52 45 50 4c 41 43 45 0a 0a  eplace REPLACE..
19430 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 5e 54 68 65 20  </tcl>..<p>^The 
19440 52 45 50 4c 41 43 45 20 63 6f 6d 6d 61 6e 64 20  REPLACE command 
19450 69 73 20 61 6e 20 61 6c 69 61 73 20 66 6f 72 20  is an alias for 
19460 74 68 65 20 22 5b 4f 4e 20 43 4f 4e 46 4c 49 43  the "[ON CONFLIC
19470 54 20 7c 20 49 4e 53 45 52 54 20 4f 52 20 52 45  T | INSERT OR RE
19480 50 4c 41 43 45 5d 22 0a 76 61 72 69 61 6e 74 20  PLACE]".variant 
19490 6f 66 20 74 68 65 20 5b 49 4e 53 45 52 54 5d 20  of the [INSERT] 
194a0 63 6f 6d 6d 61 6e 64 2e 20 20 0a 54 68 69 73 20  command.  .This 
194b0 61 6c 69 61 73 20 69 73 20 70 72 6f 76 69 64 65  alias is provide
194c0 64 20 66 6f 72 20 63 6f 6d 70 61 74 69 62 69 6c  d for compatibil
194d0 69 74 79 20 6f 74 68 65 72 20 53 51 4c 20 64 61  ity other SQL da
194e0 74 61 62 61 73 65 20 65 6e 67 69 6e 65 73 2e 20  tabase engines. 
194f0 20 53 65 65 20 74 68 65 20 0a 5b 49 4e 53 45 52   See the .[INSER
19500 54 5d 20 63 6f 6d 6d 61 6e 64 20 64 6f 63 75 6d  T] command docum
19510 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 61 64 64  entation for add
19520 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74  itional informat
19530 69 6f 6e 2e 3c 2f 70 3e 20 20 0a 0a 3c 74 63 6c  ion.</p>  ..<tcl
19540 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23  >.##############
19550 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
19560 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
19570 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
19580 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
19590 23 0a 53 65 63 74 69 6f 6e 20 53 45 4c 45 43 54  #.Section SELECT
195a0 20 73 65 6c 65 63 74 20 7b 53 45 4c 45 43 54 20   select {SELECT 
195b0 71 75 65 72 79 7d 0a 0a 42 75 62 62 6c 65 44 69  query}..BubbleDi
195c0 61 67 72 61 6d 20 73 65 6c 65 63 74 2d 73 74 6d  agram select-stm
195d0 74 20 31 0a 42 75 62 62 6c 65 44 69 61 67 72 61  t 1.BubbleDiagra
195e0 6d 20 73 65 6c 65 63 74 2d 63 6f 72 65 0a 42 75  m select-core.Bu
195f0 62 62 6c 65 44 69 61 67 72 61 6d 20 72 65 73 75  bbleDiagram resu
19600 6c 74 2d 63 6f 6c 75 6d 6e 0a 42 75 62 62 6c 65  lt-column.Bubble
19610 44 69 61 67 72 61 6d 20 6a 6f 69 6e 2d 73 6f 75  Diagram join-sou
19620 72 63 65 0a 42 75 62 62 6c 65 44 69 61 67 72 61  rce.BubbleDiagra
19630 6d 20 73 69 6e 67 6c 65 2d 73 6f 75 72 63 65 0a  m single-source.
19640 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 6a 6f  BubbleDiagram jo
19650 69 6e 2d 6f 70 0a 42 75 62 62 6c 65 44 69 61 67  in-op.BubbleDiag
19660 72 61 6d 20 6a 6f 69 6e 2d 63 6f 6e 73 74 72 61  ram join-constra
19670 69 6e 74 0a 42 75 62 62 6c 65 44 69 61 67 72 61  int.BubbleDiagra
19680 6d 20 6f 72 64 65 72 69 6e 67 2d 74 65 72 6d 0a  m ordering-term.
19690 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 63 6f  BubbleDiagram co
196a0 6d 70 6f 75 6e 64 2d 6f 70 65 72 61 74 6f 72 0a  mpound-operator.
196b0 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20 53  </tcl>..<p>The S
196c0 45 4c 45 43 54 20 73 74 61 74 65 6d 65 6e 74 20  ELECT statement 
196d0 69 73 20 75 73 65 64 20 74 6f 20 71 75 65 72 79  is used to query
196e0 20 74 68 65 20 64 61 74 61 62 61 73 65 2e 20 20   the database.  
196f0 5e 54 68 65 0a 72 65 73 75 6c 74 20 6f 66 20 61  ^The.result of a
19700 20 53 45 4c 45 43 54 20 69 73 20 7a 65 72 6f 20   SELECT is zero 
19710 6f 72 20 6d 6f 72 65 20 72 6f 77 73 20 6f 66 20  or more rows of 
19720 64 61 74 61 20 77 68 65 72 65 20 65 61 63 68 20  data where each 
19730 72 6f 77 0a 68 61 73 20 61 20 66 69 78 65 64 20  row.has a fixed 
19740 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e  number of column
19750 73 2e 20 20 5e 54 68 65 20 6e 75 6d 62 65 72 20  s.  ^The number 
19760 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68  of columns in th
19770 65 0a 72 65 73 75 6c 74 20 69 73 20 73 70 65 63  e.result is spec
19780 69 66 69 65 64 20 62 79 20 74 68 65 20 65 78 70  ified by the exp
19790 72 65 73 73 69 6f 6e 20 6c 69 73 74 20 69 6e 20  ression list in 
197a0 62 65 74 77 65 65 6e 20 74 68 65 0a 53 45 4c 45  between the.SELE
197b0 43 54 20 61 6e 64 20 46 52 4f 4d 20 6b 65 79 77  CT and FROM keyw
197c0 6f 72 64 73 2e 20 20 5e 41 6e 79 20 61 72 62 69  ords.  ^Any arbi
197d0 74 72 61 72 79 20 65 78 70 72 65 73 73 69 6f 6e  trary expression
197e0 20 63 61 6e 20 62 65 20 75 73 65 64 0a 61 73 20   can be used.as 
197f0 61 20 72 65 73 75 6c 74 2e 20 20 5e 49 66 20 61  a result.  ^If a
19800 20 72 65 73 75 6c 74 20 65 78 70 72 65 73 73 69   result expressi
19810 6f 6e 20 69 73 20 7d 0a 68 64 5f 70 75 74 73 20  on is }.hd_puts 
19820 22 5b 4f 70 65 72 61 74 6f 72 20 2a 5d 20 74 68  "[Operator *] th
19830 65 6e 20 61 6c 6c 20 63 6f 6c 75 6d 6e 73 20 6f  en all columns o
19840 66 20 61 6c 6c 20 74 61 62 6c 65 73 20 61 72 65  f all tables are
19850 20 73 75 62 73 74 69 74 75 74 65 64 5c 6e 22 0a   substituted\n".
19860 68 64 5f 70 75 74 73 20 22 66 6f 72 20 74 68 61  hd_puts "for tha
19870 74 20 6f 6e 65 20 65 78 70 72 65 73 73 69 6f 6e  t one expression
19880 2e 20 20 5e 28 49 66 20 74 68 65 20 65 78 70 72  .  ^(If the expr
19890 65 73 73 69 6f 6e 20 69 73 20 74 68 65 20 6e 61  ession is the na
198a0 6d 65 20 6f 66 5c 6e 22 0a 68 64 5f 70 75 74 73  me of\n".hd_puts
198b0 20 22 61 20 74 61 62 6c 65 20 66 6f 6c 6c 6f 77   "a table follow
198c0 65 64 20 62 79 20 5b 4f 70 65 72 61 74 6f 72 20  ed by [Operator 
198d0 2e 2a 5d 20 74 68 65 6e 20 74 68 65 20 72 65 73  .*] then the res
198e0 75 6c 74 20 69 73 20 61 6c 6c 20 63 6f 6c 75 6d  ult is all colum
198f0 6e 73 5c 6e 22 0a 68 64 5f 70 75 74 73 20 7b 69  ns\n".hd_puts {i
19900 6e 20 74 68 61 74 20 6f 6e 65 20 74 61 62 6c 65  n that one table
19910 2e 3c 2f 70 3e 29 5e 0a 0a 3c 70 3e 5e 54 68 65  .</p>)^..<p>^The
19920 20 44 49 53 54 49 4e 43 54 20 6b 65 79 77 6f 72   DISTINCT keywor
19930 64 20 63 61 75 73 65 73 20 61 20 73 75 62 73 65  d causes a subse
19940 74 20 6f 66 20 72 65 73 75 6c 74 20 72 6f 77 73  t of result rows
19950 20 74 6f 20 62 65 20 72 65 74 75 72 6e 65 64 2c   to be returned,
19960 20 0a 69 6e 20 77 68 69 63 68 20 65 61 63 68 20   .in which each 
19970 72 65 73 75 6c 74 20 72 6f 77 20 69 73 20 64 69  result row is di
19980 66 66 65 72 65 6e 74 2e 20 20 5e 4e 55 4c 4c 20  fferent.  ^NULL 
19990 76 61 6c 75 65 73 20 61 72 65 20 6e 6f 74 20 74  values are not t
199a0 72 65 61 74 65 64 20 61 73 20 0a 64 69 73 74 69  reated as .disti
199b0 6e 63 74 20 66 72 6f 6d 20 65 61 63 68 20 6f 74  nct from each ot
199c0 68 65 72 2e 20 20 5e 54 68 65 20 64 65 66 61 75  her.  ^The defau
199d0 6c 74 20 62 65 68 61 76 69 6f 72 20 69 73 20 74  lt behavior is t
199e0 68 61 74 20 61 6c 6c 20 72 65 73 75 6c 74 20 72  hat all result r
199f0 6f 77 73 20 0a 62 65 20 72 65 74 75 72 6e 65 64  ows .be returned
19a00 2c 20 77 68 69 63 68 20 63 61 6e 20 62 65 20 6d  , which can be m
19a10 61 64 65 20 65 78 70 6c 69 63 69 74 20 77 69 74  ade explicit wit
19a20 68 20 74 68 65 20 6b 65 79 77 6f 72 64 20 41 4c  h the keyword AL
19a30 4c 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20  L.</p>..<p>^The 
19a40 71 75 65 72 79 20 69 73 20 65 78 65 63 75 74 65  query is execute
19a50 64 20 61 67 61 69 6e 73 74 20 6f 6e 65 20 6f 72  d against one or
19a60 20 6d 6f 72 65 20 74 61 62 6c 65 73 20 73 70 65   more tables spe
19a70 63 69 66 69 65 64 20 61 66 74 65 72 0a 74 68 65  cified after.the
19a80 20 46 52 4f 4d 20 6b 65 79 77 6f 72 64 2e 20 20   FROM keyword.  
19a90 5e 49 66 20 6d 75 6c 74 69 70 6c 65 20 74 61 62  ^If multiple tab
19aa0 6c 65 73 20 6e 61 6d 65 73 20 61 72 65 20 73 65  les names are se
19ab0 70 61 72 61 74 65 64 20 62 79 20 63 6f 6d 6d 61  parated by comma
19ac0 73 2c 0a 74 68 65 6e 20 74 68 65 20 71 75 65 72  s,.then the quer
19ad0 79 20 69 73 20 61 67 61 69 6e 73 74 20 74 68 65  y is against the
19ae0 20 63 72 6f 73 73 20 6a 6f 69 6e 20 6f 66 20 74   cross join of t
19af0 68 65 20 76 61 72 69 6f 75 73 20 74 61 62 6c 65  he various table
19b00 73 2e 0a 5e 54 68 65 20 66 75 6c 6c 20 53 51 4c  s..^The full SQL
19b10 2d 39 32 20 6a 6f 69 6e 20 73 79 6e 74 61 78 20  -92 join syntax 
19b20 63 61 6e 20 61 6c 73 6f 20 62 65 20 75 73 65 64  can also be used
19b30 20 74 6f 20 73 70 65 63 69 66 79 20 6a 6f 69 6e   to specify join
19b40 73 2e 0a 5e 41 20 73 75 62 2d 71 75 65 72 79 0a  s..^A sub-query.
19b50 69 6e 20 70 61 72 65 6e 74 68 65 73 65 73 20 6d  in parentheses m
19b60 61 79 20 62 65 20 73 75 62 73 74 69 74 75 74 65  ay be substitute
19b70 64 20 66 6f 72 20 61 6e 79 20 74 61 62 6c 65 20  d for any table 
19b80 6e 61 6d 65 20 69 6e 20 74 68 65 20 46 52 4f 4d  name in the FROM
19b90 20 63 6c 61 75 73 65 2e 0a 5e 54 68 65 20 65 6e   clause..^The en
19ba0 74 69 72 65 20 46 52 4f 4d 20 63 6c 61 75 73 65  tire FROM clause
19bb0 20 6d 61 79 20 62 65 20 6f 6d 69 74 74 65 64 2c   may be omitted,
19bc0 20 69 6e 20 77 68 69 63 68 20 63 61 73 65 20 74   in which case t
19bd0 68 65 20 72 65 73 75 6c 74 20 69 73 20 61 0a 73  he result is a.s
19be0 69 6e 67 6c 65 20 72 6f 77 20 63 6f 6e 73 69 73  ingle row consis
19bf0 74 69 6e 67 20 6f 66 20 74 68 65 20 76 61 6c 75  ting of the valu
19c00 65 73 20 6f 66 20 74 68 65 20 65 78 70 72 65 73  es of the expres
19c10 73 69 6f 6e 20 6c 69 73 74 2e 0a 3c 2f 70 3e 0a  sion list..</p>.
19c20 0a 3c 70 3e 5e 54 68 65 20 57 48 45 52 45 20 63  .<p>^The WHERE c
19c30 6c 61 75 73 65 20 63 61 6e 20 62 65 20 75 73 65  lause can be use
19c40 64 20 74 6f 20 6c 69 6d 69 74 20 74 68 65 20 6e  d to limit the n
19c50 75 6d 62 65 72 20 6f 66 20 72 6f 77 73 20 6f 76  umber of rows ov
19c60 65 72 0a 77 68 69 63 68 20 74 68 65 20 71 75 65  er.which the que
19c70 72 79 20 6f 70 65 72 61 74 65 73 2e 3c 2f 70 3e  ry operates.</p>
19c80 0a 0a 3c 70 3e 5e 54 68 65 20 47 52 4f 55 50 20  ..<p>^The GROUP 
19c90 42 59 20 63 6c 61 75 73 65 20 63 61 75 73 65 73  BY clause causes
19ca0 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 72 6f 77   one or more row
19cb0 73 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74 20  s of the result 
19cc0 74 6f 0a 62 65 20 63 6f 6d 62 69 6e 65 64 20 69  to.be combined i
19cd0 6e 74 6f 20 61 20 73 69 6e 67 6c 65 20 72 6f 77  nto a single row
19ce0 20 6f 66 20 6f 75 74 70 75 74 2e 20 20 54 68 69   of output.  Thi
19cf0 73 20 69 73 20 65 73 70 65 63 69 61 6c 6c 79 20  s is especially 
19d00 75 73 65 66 75 6c 0a 77 68 65 6e 20 74 68 65 20  useful.when the 
19d10 72 65 73 75 6c 74 20 63 6f 6e 74 61 69 6e 73 20  result contains 
19d20 61 67 67 72 65 67 61 74 65 20 66 75 6e 63 74 69  aggregate functi
19d30 6f 6e 73 2e 20 20 5e 54 68 65 20 65 78 70 72 65  ons.  ^The expre
19d40 73 73 69 6f 6e 73 20 69 6e 0a 74 68 65 20 47 52  ssions in.the GR
19d50 4f 55 50 20 42 59 20 63 6c 61 75 73 65 20 64 6f  OUP BY clause do
19d60 20 3c 65 6d 3e 6e 6f 74 3c 2f 65 6d 3e 20 68 61   <em>not</em> ha
19d70 76 65 20 74 6f 20 62 65 20 65 78 70 72 65 73 73  ve to be express
19d80 69 6f 6e 73 20 74 68 61 74 0a 61 70 70 65 61 72  ions that.appear
19d90 20 69 6e 20 74 68 65 20 72 65 73 75 6c 74 2e 20   in the result. 
19da0 20 5e 54 68 65 20 48 41 56 49 4e 47 20 63 6c 61   ^The HAVING cla
19db0 75 73 65 20 69 73 20 73 69 6d 69 6c 61 72 20 74  use is similar t
19dc0 6f 20 57 48 45 52 45 20 65 78 63 65 70 74 0a 74  o WHERE except.t
19dd0 68 61 74 20 48 41 56 49 4e 47 20 61 70 70 6c 69  hat HAVING appli
19de0 65 73 20 61 66 74 65 72 20 67 72 6f 75 70 69 6e  es after groupin
19df0 67 20 68 61 73 20 6f 63 63 75 72 72 65 64 2e 20  g has occurred. 
19e00 20 5e 54 68 65 20 48 41 56 49 4e 47 20 65 78 70   ^The HAVING exp
19e10 72 65 73 73 69 6f 6e 0a 6d 61 79 20 72 65 66 65  ression.may refe
19e20 72 20 74 6f 20 76 61 6c 75 65 73 2c 20 65 76 65  r to values, eve
19e30 6e 20 61 67 67 72 65 67 61 74 65 20 66 75 6e 63  n aggregate func
19e40 74 69 6f 6e 73 2c 20 74 68 61 74 20 61 72 65 20  tions, that are 
19e50 6e 6f 74 20 69 6e 20 74 68 65 20 72 65 73 75 6c  not in the resul
19e60 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20  t.</p>..<p>^The 
19e70 4f 52 44 45 52 20 42 59 20 63 6c 61 75 73 65 20  ORDER BY clause 
19e80 63 61 75 73 65 73 20 74 68 65 20 6f 75 74 70 75  causes the outpu
19e90 74 20 72 6f 77 73 20 74 6f 20 62 65 20 73 6f 72  t rows to be sor
19ea0 74 65 64 2e 20 20 0a 5e 54 68 65 20 61 72 67 75  ted.  .^The argu
19eb0 6d 65 6e 74 20 74 6f 20 4f 52 44 45 52 20 42 59  ment to ORDER BY
19ec0 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20 65 78   is a list of ex
19ed0 70 72 65 73 73 69 6f 6e 73 20 74 68 61 74 20 61  pressions that a
19ee0 72 65 20 75 73 65 64 20 61 73 20 74 68 65 0a 6b  re used as the.k
19ef0 65 79 20 66 6f 72 20 74 68 65 20 73 6f 72 74 2e  ey for the sort.
19f00 20 20 5e 54 68 65 20 65 78 70 72 65 73 73 69 6f    ^The expressio
19f10 6e 73 20 64 6f 20 6e 6f 74 20 68 61 76 65 20 74  ns do not have t
19f20 6f 20 62 65 20 70 61 72 74 20 6f 66 20 74 68 65  o be part of the
19f30 0a 72 65 73 75 6c 74 20 66 6f 72 20 61 20 73 69  .result for a si
19f40 6d 70 6c 65 20 53 45 4c 45 43 54 2c 20 62 75 74  mple SELECT, but
19f50 20 69 6e 20 61 20 63 6f 6d 70 6f 75 6e 64 20 53   in a compound S
19f60 45 4c 45 43 54 20 65 61 63 68 20 73 6f 72 74 0a  ELECT each sort.
19f70 65 78 70 72 65 73 73 69 6f 6e 20 6d 75 73 74 20  expression must 
19f80 65 78 61 63 74 6c 79 20 6d 61 74 63 68 20 6f 6e  exactly match on
19f90 65 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74 20  e of the result 
19fa0 63 6f 6c 75 6d 6e 73 2e 20 20 5e 45 61 63 68 0a  columns.  ^Each.
19fb0 73 6f 72 74 20 65 78 70 72 65 73 73 69 6f 6e 20  sort expression 
19fc0 6d 61 79 20 62 65 20 6f 70 74 69 6f 6e 61 6c 6c  may be optionall
19fd0 79 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 61 20  y followed by a 
19fe0 43 4f 4c 4c 41 54 45 20 6b 65 79 77 6f 72 64 20  COLLATE keyword 
19ff0 61 6e 64 0a 74 68 65 20 6e 61 6d 65 20 6f 66 20  and.the name of 
1a000 61 20 63 6f 6c 6c 61 74 69 6e 67 20 66 75 6e 63  a collating func
1a010 74 69 6f 6e 20 75 73 65 64 20 66 6f 72 20 6f 72  tion used for or
1a020 64 65 72 69 6e 67 20 74 65 78 74 20 61 6e 64 2f  dering text and/
1a030 6f 72 0a 6b 65 79 77 6f 72 64 73 20 41 53 43 20  or.keywords ASC 
1a040 6f 72 20 44 45 53 43 20 74 6f 20 73 70 65 63 69  or DESC to speci
1a050 66 79 20 74 68 65 20 73 6f 72 74 20 6f 72 64 65  fy the sort orde
1a060 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 45 61 63 68 20  r.</p>..<p>Each 
1a070 74 65 72 6d 20 6f 66 20 61 6e 20 4f 52 44 45 52  term of an ORDER
1a080 20 42 59 20 65 78 70 72 65 73 73 69 6f 6e 20 69   BY expression i
1a090 73 20 70 72 6f 63 65 73 73 65 64 20 61 73 20 66  s processed as f
1a0a0 6f 6c 6c 6f 77 73 3a 3c 2f 70 3e 0a 0a 3c 6f 6c  ollows:</p>..<ol
1a0b0 3e 0a 3c 6c 69 3e 3c 70 3e 5e 49 66 20 74 68 65  >.<li><p>^If the
1a0c0 20 4f 52 44 45 52 20 42 59 20 65 78 70 72 65 73   ORDER BY expres
1a0d0 73 69 6f 6e 20 69 73 20 61 20 63 6f 6e 73 74 61  sion is a consta
1a0e0 6e 74 20 69 6e 74 65 67 65 72 20 4b 20 74 68 65  nt integer K the
1a0f0 6e 20 74 68 65 0a 6f 75 74 70 75 74 20 69 73 20  n the.output is 
1a100 6f 72 64 65 72 65 64 20 62 79 20 74 68 65 20 4b  ordered by the K
1a110 2d 74 68 20 63 6f 6c 75 6d 6e 20 6f 66 20 74 68  -th column of th
1a120 65 20 72 65 73 75 6c 74 20 73 65 74 2e 3c 2f 70  e result set.</p
1a130 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c 70 3e 5e 49  ></li>.<li><p>^I
1a140 66 20 74 68 65 20 4f 52 44 45 52 20 42 59 20 65  f the ORDER BY e
1a150 78 70 72 65 73 73 69 6f 6e 20 69 73 20 61 6e 20  xpression is an 
1a160 69 64 65 6e 74 69 66 69 65 72 20 61 6e 64 20 6f  identifier and o
1a170 6e 65 20 6f 66 20 74 68 65 0a 6f 75 74 70 75 74  ne of the.output
1a180 20 63 6f 6c 75 6d 6e 73 20 68 61 73 20 61 6e 20   columns has an 
1a190 61 6c 69 61 73 20 62 79 20 74 68 65 20 73 61 6d  alias by the sam
1a1a0 65 20 6e 61 6d 65 2c 20 74 68 65 6e 20 74 68 65  e name, then the
1a1b0 20 6f 75 74 70 75 74 20 69 73 0a 6f 72 64 65 72   output is.order
1a1c0 65 64 20 62 79 20 74 68 65 20 69 64 65 6e 74 69  ed by the identi
1a1d0 66 69 65 64 20 63 6f 6c 75 6d 6e 2e 3c 2f 70 3e  fied column.</p>
1a1e0 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c 70 3e 5e 4f 74  </li>.<li><p>^Ot
1a1f0 68 65 72 77 69 73 65 2c 20 74 68 65 20 4f 52 44  herwise, the ORD
1a200 45 52 20 42 59 20 65 78 70 72 65 73 73 69 6f 6e  ER BY expression
1a210 20 69 73 20 65 76 61 6c 75 61 74 65 64 20 61 6e   is evaluated an
1a220 64 20 74 68 65 20 6f 75 74 70 75 74 20 0a 69 73  d the output .is
1a230 20 6f 72 64 65 72 65 64 20 62 79 20 74 68 65 20   ordered by the 
1a240 76 61 6c 75 65 20 6f 66 20 74 68 61 74 20 65 78  value of that ex
1a250 70 72 65 73 73 69 6f 6e 2e 3c 2f 70 3e 3c 2f 6c  pression.</p></l
1a260 69 3e 0a 3c 2f 6f 6c 3e 0a 0a 3c 70 3e 5e 49 6e  i>.</ol>..<p>^In
1a270 20 61 20 63 6f 6d 70 6f 75 6e 64 20 53 45 4c 45   a compound SELE
1a280 43 54 20 73 74 61 74 65 6d 65 6e 74 2c 20 74 68  CT statement, th
1a290 65 20 74 68 69 72 64 20 4f 52 44 45 52 20 42 59  e third ORDER BY
1a2a0 20 6d 61 74 63 68 69 6e 67 20 72 75 6c 65 0a 72   matching rule.r
1a2b0 65 71 75 69 72 65 73 20 74 68 61 74 20 74 68 65  equires that the
1a2c0 20 65 78 70 72 65 73 73 69 6f 6e 20 62 65 20 69   expression be i
1a2d0 64 65 6e 74 69 63 61 6c 20 74 6f 20 6f 6e 65 20  dentical to one 
1a2e0 6f 66 20 74 68 65 20 63 6f 6c 75 6d 6e 73 20 69  of the columns i
1a2f0 6e 0a 74 68 65 20 72 65 73 75 6c 74 20 73 65 74  n.the result set
1a300 2e 20 20 5e 28 54 68 65 20 74 68 72 65 65 20 72  .  ^(The three r
1a310 75 6c 65 73 20 61 72 65 20 66 69 72 73 74 20 61  ules are first a
1a320 70 70 6c 69 65 64 20 74 6f 20 74 68 65 20 6c 65  pplied to the le
1a330 66 74 2d 6d 6f 73 74 0a 53 45 4c 45 43 54 20 69  ft-most.SELECT i
1a340 6e 20 74 68 65 20 63 6f 6d 70 6f 75 6e 64 2e 20  n the compound. 
1a350 20 49 66 20 61 20 6d 61 74 63 68 20 69 73 20 66   If a match is f
1a360 6f 75 6e 64 2c 20 74 68 65 20 73 65 61 72 63 68  ound, the search
1a370 20 73 74 6f 70 73 2e 20 20 4f 74 68 65 72 77 69   stops.  Otherwi
1a380 73 65 2c 0a 74 68 65 20 6e 65 78 74 20 53 45 4c  se,.the next SEL
1a390 45 43 54 20 74 6f 20 74 68 65 20 72 69 67 68 74  ECT to the right
1a3a0 20 69 73 20 74 72 69 65 64 2e 20 20 54 68 69 73   is tried.  This
1a3b0 20 63 6f 6e 74 69 6e 75 65 73 20 75 6e 74 69 6c   continues until
1a3c0 20 61 20 6d 61 74 63 68 0a 69 73 20 66 6f 75 6e   a match.is foun
1a3d0 64 2e 29 5e 20 20 5e 45 61 63 68 20 74 65 72 6d  d.)^  ^Each term
1a3e0 20 6f 66 20 74 68 65 20 4f 52 44 45 52 20 42 59   of the ORDER BY
1a3f0 20 63 6c 61 75 73 65 20 69 73 20 70 72 6f 63 65   clause is proce
1a400 73 73 65 64 20 73 65 70 61 72 61 74 65 6c 79 20  ssed separately 
1a410 0a 61 6e 64 20 6d 61 79 20 63 6f 6d 65 20 66 72  .and may come fr
1a420 6f 6d 20 64 69 66 66 65 72 65 6e 74 20 53 45 4c  om different SEL
1a430 45 43 54 20 73 74 61 74 65 6d 65 6e 74 73 20 69  ECT statements i
1a440 6e 20 74 68 65 20 63 6f 6d 70 6f 75 6e 64 2e 3c  n the compound.<
1a450 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20 4c 49 4d  /p>..<p>^The LIM
1a460 49 54 20 63 6c 61 75 73 65 20 70 6c 61 63 65 73  IT clause places
1a470 20 61 6e 20 75 70 70 65 72 20 62 6f 75 6e 64 20   an upper bound 
1a480 6f 6e 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  on the number of
1a490 20 72 6f 77 73 0a 72 65 74 75 72 6e 65 64 20 69   rows.returned i
1a4a0 6e 20 74 68 65 20 72 65 73 75 6c 74 2e 20 20 5e  n the result.  ^
1a4b0 41 20 6e 65 67 61 74 69 76 65 20 4c 49 4d 49 54  A negative LIMIT
1a4c0 20 69 6e 64 69 63 61 74 65 73 20 6e 6f 20 75 70   indicates no up
1a4d0 70 65 72 20 62 6f 75 6e 64 2e 0a 5e 54 68 65 20  per bound..^The 
1a4e0 6f 70 74 69 6f 6e 61 6c 20 4f 46 46 53 45 54 20  optional OFFSET 
1a4f0 66 6f 6c 6c 6f 77 69 6e 67 20 4c 49 4d 49 54 20  following LIMIT 
1a500 73 70 65 63 69 66 69 65 73 20 68 6f 77 20 6d 61  specifies how ma
1a510 6e 79 0a 72 6f 77 73 20 74 6f 20 73 6b 69 70 20  ny.rows to skip 
1a520 61 74 20 74 68 65 20 62 65 67 69 6e 6e 69 6e 67  at the beginning
1a530 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74 20 73   of the result s
1a540 65 74 2e 0a 5e 49 6e 20 61 20 63 6f 6d 70 6f 75  et..^In a compou
1a550 6e 64 20 71 75 65 72 79 2c 20 74 68 65 20 4c 49  nd query, the LI
1a560 4d 49 54 20 63 6c 61 75 73 65 20 6d 61 79 20 6f  MIT clause may o
1a570 6e 6c 79 20 61 70 70 65 61 72 20 6f 6e 20 74 68  nly appear on th
1a580 65 0a 66 69 6e 61 6c 20 53 45 4c 45 43 54 20 73  e.final SELECT s
1a590 74 61 74 65 6d 65 6e 74 2e 0a 5e 54 68 65 20 6c  tatement..^The l
1a5a0 69 6d 69 74 20 69 73 20 61 70 70 6c 69 65 64 20  imit is applied 
1a5b0 74 6f 20 74 68 65 20 65 6e 74 69 72 65 20 71 75  to the entire qu
1a5c0 65 72 79 20 6e 6f 74 0a 74 6f 20 74 68 65 20 69  ery not.to the i
1a5d0 6e 64 69 76 69 64 75 61 6c 20 53 45 4c 45 43 54  ndividual SELECT
1a5e0 20 73 74 61 74 65 6d 65 6e 74 20 74 6f 20 77 68   statement to wh
1a5f0 69 63 68 20 69 74 20 69 73 20 61 74 74 61 63 68  ich it is attach
1a600 65 64 2e 0a 5e 4e 6f 74 65 20 74 68 61 74 20 69  ed..^Note that i
1a610 66 20 74 68 65 20 4f 46 46 53 45 54 20 6b 65 79  f the OFFSET key
1a620 77 6f 72 64 20 69 73 20 75 73 65 64 20 69 6e 20  word is used in 
1a630 74 68 65 20 4c 49 4d 49 54 20 63 6c 61 75 73 65  the LIMIT clause
1a640 2c 20 74 68 65 6e 20 74 68 65 0a 6c 69 6d 69 74  , then the.limit
1a650 20 69 73 20 74 68 65 20 66 69 72 73 74 20 6e 75   is the first nu
1a660 6d 62 65 72 20 61 6e 64 20 74 68 65 20 6f 66 66  mber and the off
1a670 73 65 74 20 69 73 20 74 68 65 20 73 65 63 6f 6e  set is the secon
1a680 64 20 6e 75 6d 62 65 72 2e 20 20 5e 49 66 20 61  d number.  ^If a
1a690 0a 63 6f 6d 6d 61 20 69 73 20 75 73 65 64 20 69  .comma is used i
1a6a0 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20 4f 46  nstead of the OF
1a6b0 46 53 45 54 20 6b 65 79 77 6f 72 64 2c 20 74 68  FSET keyword, th
1a6c0 65 6e 20 74 68 65 20 6f 66 66 73 65 74 20 69 73  en the offset is
1a6d0 20 74 68 65 0a 66 69 72 73 74 20 6e 75 6d 62 65   the.first numbe
1a6e0 72 20 61 6e 64 20 74 68 65 20 6c 69 6d 69 74 20  r and the limit 
1a6f0 69 73 20 74 68 65 20 73 65 63 6f 6e 64 20 6e 75  is the second nu
1a700 6d 62 65 72 2e 20 20 54 68 69 73 20 73 65 65 6d  mber.  This seem
1a710 69 6e 67 0a 63 6f 6e 74 72 61 64 69 63 74 69 6f  ing.contradictio
1a720 6e 20 69 73 20 69 6e 74 65 6e 74 69 6f 6e 61 6c  n is intentional
1a730 20 2d 20 69 74 20 6d 61 78 69 6d 69 7a 65 73 20   - it maximizes 
1a740 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 77 69  compatibility wi
1a750 74 68 20 6c 65 67 61 63 79 0a 53 51 4c 20 64 61  th legacy.SQL da
1a760 74 61 62 61 73 65 20 73 79 73 74 65 6d 73 2e 0a  tabase systems..
1a770 3c 2f 70 3e 0a 0a 3c 70 3e 5e 41 20 63 6f 6d 70  </p>..<p>^A comp
1a780 6f 75 6e 64 20 53 45 4c 45 43 54 20 69 73 20 66  ound SELECT is f
1a790 6f 72 6d 65 64 20 66 72 6f 6d 20 74 77 6f 20 6f  ormed from two o
1a7a0 72 20 6d 6f 72 65 20 73 69 6d 70 6c 65 20 53 45  r more simple SE
1a7b0 4c 45 43 54 73 20 63 6f 6e 6e 65 63 74 65 64 0a  LECTs connected.
1a7c0 62 79 20 6f 6e 65 20 6f 66 20 74 68 65 20 6f 70  by one of the op
1a7d0 65 72 61 74 6f 72 73 20 55 4e 49 4f 4e 2c 20 55  erators UNION, U
1a7e0 4e 49 4f 4e 20 41 4c 4c 2c 20 49 4e 54 45 52 53  NION ALL, INTERS
1a7f0 45 43 54 2c 20 6f 72 20 45 58 43 45 50 54 2e 20  ECT, or EXCEPT. 
1a800 20 5e 49 6e 0a 61 20 63 6f 6d 70 6f 75 6e 64 20   ^In.a compound 
1a810 53 45 4c 45 43 54 2c 20 61 6c 6c 20 74 68 65 20  SELECT, all the 
1a820 63 6f 6e 73 74 69 74 75 65 6e 74 20 53 45 4c 45  constituent SELE
1a830 43 54 73 20 6d 75 73 74 20 73 70 65 63 69 66 79  CTs must specify
1a840 20 74 68 65 0a 73 61 6d 65 20 6e 75 6d 62 65 72   the.same number
1a850 20 6f 66 20 72 65 73 75 6c 74 20 63 6f 6c 75 6d   of result colum
1a860 6e 73 2e 20 20 5e 54 68 65 72 65 20 6d 61 79 20  ns.  ^There may 
1a870 62 65 20 6f 6e 6c 79 20 61 20 73 69 6e 67 6c 65  be only a single
1a880 20 4f 52 44 45 52 20 42 59 0a 63 6c 61 75 73 65   ORDER BY.clause
1a890 20 61 74 20 74 68 65 20 65 6e 64 20 6f 66 20 74   at the end of t
1a8a0 68 65 20 63 6f 6d 70 6f 75 6e 64 20 53 45 4c 45  he compound SELE
1a8b0 43 54 2e 20 20 5e 54 68 65 20 55 4e 49 4f 4e 20  CT.  ^The UNION 
1a8c0 61 6e 64 20 55 4e 49 4f 4e 20 41 4c 4c 0a 6f 70  and UNION ALL.op
1a8d0 65 72 61 74 6f 72 73 20 63 6f 6d 62 69 6e 65 20  erators combine 
1a8e0 74 68 65 20 72 65 73 75 6c 74 73 20 6f 66 20 74  the results of t
1a8f0 68 65 20 53 45 4c 45 43 54 73 20 74 6f 20 74 68  he SELECTs to th
1a900 65 20 72 69 67 68 74 20 61 6e 64 20 6c 65 66 74  e right and left
1a910 20 69 6e 74 6f 0a 61 20 73 69 6e 67 6c 65 20 62   into.a single b
1a920 69 67 20 74 61 62 6c 65 2e 20 20 5e 54 68 65 20  ig table.  ^The 
1a930 64 69 66 66 65 72 65 6e 63 65 20 69 73 20 74 68  difference is th
1a940 61 74 20 69 6e 20 55 4e 49 4f 4e 20 61 6c 6c 20  at in UNION all 
1a950 72 65 73 75 6c 74 20 72 6f 77 73 0a 61 72 65 20  result rows.are 
1a960 64 69 73 74 69 6e 63 74 20 77 68 65 72 65 20 69  distinct where i
1a970 6e 20 55 4e 49 4f 4e 20 41 4c 4c 20 74 68 65 72  n UNION ALL ther
1a980 65 20 6d 61 79 20 62 65 20 64 75 70 6c 69 63 61  e may be duplica
1a990 74 65 73 2e 0a 5e 54 68 65 20 49 4e 54 45 52 53  tes..^The INTERS
1a9a0 45 43 54 20 6f 70 65 72 61 74 6f 72 20 74 61 6b  ECT operator tak
1a9b0 65 73 20 74 68 65 20 69 6e 74 65 72 73 65 63 74  es the intersect
1a9c0 69 6f 6e 20 6f 66 20 74 68 65 20 72 65 73 75 6c  ion of the resul
1a9d0 74 73 20 6f 66 20 74 68 65 0a 6c 65 66 74 20 61  ts of the.left a
1a9e0 6e 64 20 72 69 67 68 74 20 53 45 4c 45 43 54 73  nd right SELECTs
1a9f0 2e 20 20 5e 45 58 43 45 50 54 20 74 61 6b 65 73  .  ^EXCEPT takes
1aa00 20 74 68 65 20 72 65 73 75 6c 74 20 6f 66 20 6c   the result of l
1aa10 65 66 74 20 53 45 4c 45 43 54 20 61 66 74 65 72  eft SELECT after
1aa20 0a 72 65 6d 6f 76 69 6e 67 20 74 68 65 20 72 65  .removing the re
1aa30 73 75 6c 74 73 20 6f 66 20 74 68 65 20 72 69 67  sults of the rig
1aa40 68 74 20 53 45 4c 45 43 54 2e 20 20 5e 57 68 65  ht SELECT.  ^Whe
1aa50 6e 20 74 68 72 65 65 20 6f 72 20 6d 6f 72 65 20  n three or more 
1aa60 53 45 4c 45 43 54 73 0a 61 72 65 20 63 6f 6e 6e  SELECTs.are conn
1aa70 65 63 74 65 64 20 69 6e 74 6f 20 61 20 63 6f 6d  ected into a com
1aa80 70 6f 75 6e 64 2c 20 74 68 65 79 20 67 72 6f 75  pound, they grou
1aa90 70 20 66 72 6f 6d 20 6c 65 66 74 20 74 6f 20 72  p from left to r
1aaa0 69 67 68 74 2e 3c 2f 70 3e 0a 0a 0a 3c 74 63 6c  ight.</p>...<tcl
1aab0 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23  >.##############
1aac0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1aad0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1aae0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1aaf0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1ab00 0a 53 65 63 74 69 6f 6e 20 55 50 44 41 54 45 20  .Section UPDATE 
1ab10 75 70 64 61 74 65 20 7b 55 50 44 41 54 45 20 2a  update {UPDATE *
1ab20 55 50 44 41 54 45 73 7d 0a 0a 42 75 62 62 6c 65  UPDATEs}..Bubble
1ab30 44 69 61 67 72 61 6d 20 75 70 64 61 74 65 2d 73  Diagram update-s
1ab40 74 6d 74 20 31 0a 42 75 62 62 6c 65 44 69 61 67  tmt 1.BubbleDiag
1ab50 72 61 6d 20 71 75 61 6c 69 66 69 65 64 2d 74 61  ram qualified-ta
1ab60 62 6c 65 2d 6e 61 6d 65 0a 3c 2f 74 63 6c 3e 0a  ble-name.</tcl>.
1ab70 0a 3c 70 3e 5e 54 68 65 20 55 50 44 41 54 45 20  .<p>^The UPDATE 
1ab80 73 74 61 74 65 6d 65 6e 74 20 69 73 20 75 73 65  statement is use
1ab90 64 20 74 6f 20 63 68 61 6e 67 65 20 74 68 65 20  d to change the 
1aba0 76 61 6c 75 65 20 6f 66 20 63 6f 6c 75 6d 6e 73  value of columns
1abb0 20 69 6e 20 0a 73 65 6c 65 63 74 65 64 20 72 6f   in .selected ro
1abc0 77 73 20 6f 66 20 61 20 74 61 62 6c 65 2e 20 20  ws of a table.  
1abd0 5e 45 61 63 68 20 61 73 73 69 67 6e 6d 65 6e 74  ^Each assignment
1abe0 20 69 6e 20 61 6e 20 55 50 44 41 54 45 20 73 70   in an UPDATE sp
1abf0 65 63 69 66 69 65 73 0a 61 20 63 6f 6c 75 6d 6e  ecifies.a column
1ac00 20 6e 61 6d 65 20 74 6f 20 74 68 65 20 6c 65 66   name to the lef
1ac10 74 20 6f 66 20 74 68 65 20 65 71 75 61 6c 73 20  t of the equals 
1ac20 73 69 67 6e 20 61 6e 64 20 61 6e 20 61 72 62 69  sign and an arbi
1ac30 74 72 61 72 79 20 65 78 70 72 65 73 73 69 6f 6e  trary expression
1ac40 0a 74 6f 20 74 68 65 20 72 69 67 68 74 2e 20 20  .to the right.  
1ac50 5e 54 68 65 20 65 78 70 72 65 73 73 69 6f 6e 73  ^The expressions
1ac60 20 6d 61 79 20 75 73 65 20 74 68 65 20 76 61 6c   may use the val
1ac70 75 65 73 20 6f 66 20 6f 74 68 65 72 20 63 6f 6c  ues of other col
1ac80 75 6d 6e 73 2e 0a 5e 41 6c 6c 20 65 78 70 72 65  umns..^All expre
1ac90 73 73 69 6f 6e 73 20 61 72 65 20 65 76 61 6c 75  ssions are evalu
1aca0 61 74 65 64 20 62 65 66 6f 72 65 20 61 6e 79 20  ated before any 
1acb0 61 73 73 69 67 6e 6d 65 6e 74 73 20 61 72 65 20  assignments are 
1acc0 6d 61 64 65 2e 0a 5e 41 20 57 48 45 52 45 20 63  made..^A WHERE c
1acd0 6c 61 75 73 65 20 63 61 6e 20 62 65 20 75 73 65  lause can be use
1ace0 64 20 74 6f 20 72 65 73 74 72 69 63 74 20 77 68  d to restrict wh
1acf0 69 63 68 20 72 6f 77 73 20 61 72 65 20 75 70 64  ich rows are upd
1ad00 61 74 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54  ated.</p>..<p>^T
1ad10 68 65 20 6f 70 74 69 6f 6e 61 6c 20 63 6f 6e 66  he optional conf
1ad20 6c 69 63 74 2d 63 6c 61 75 73 65 20 61 6c 6c 6f  lict-clause allo
1ad30 77 73 20 74 68 65 20 73 70 65 63 69 66 69 63 61  ws the specifica
1ad40 74 69 6f 6e 20 6f 66 20 61 6e 20 61 6c 74 65 72  tion of an alter
1ad50 6e 61 74 69 76 65 0a 63 6f 6e 73 74 72 61 69 6e  native.constrain
1ad60 74 20 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c  t conflict resol
1ad70 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 20  ution algorithm 
1ad80 74 6f 20 75 73 65 20 64 75 72 69 6e 67 20 74 68  to use during th
1ad90 69 73 20 6f 6e 65 20 55 50 44 41 54 45 20 63 6f  is one UPDATE co
1ada0 6d 6d 61 6e 64 2e 0a 53 65 65 20 74 68 65 20 73  mmand..See the s
1adb0 65 63 74 69 6f 6e 20 74 69 74 6c 65 64 0a 5b 4f  ection titled.[O
1adc0 4e 20 43 4f 4e 46 4c 49 43 54 5d 20 66 6f 72 20  N CONFLICT] for 
1add0 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72  additional infor
1ade0 6d 61 74 69 6f 6e 2e 3c 2f 70 3e 0a 0a 3c 68 33  mation.</p>..<h3
1adf0 3e 52 65 73 74 72 69 63 74 69 6f 6e 73 20 6f 6e  >Restrictions on
1ae00 20 55 50 44 41 54 45 20 53 74 61 74 65 6d 65 6e   UPDATE Statemen
1ae10 74 73 20 57 69 74 68 69 6e 20 43 52 45 41 54 45  ts Within CREATE
1ae20 20 54 52 49 47 47 45 52 3c 2f 68 33 3e 0a 0a 3c   TRIGGER</h3>..<
1ae30 70 3e 5e 54 68 65 72 65 20 61 72 65 20 61 64 64  p>^There are add
1ae40 69 74 69 6f 6e 61 6c 20 73 79 6e 74 61 78 20 72  itional syntax r
1ae50 65 73 74 72 69 63 74 69 6f 6e 73 20 6f 6e 20 55  estrictions on U
1ae60 50 44 41 54 45 20 73 74 61 74 65 6d 65 6e 74 73  PDATE statements
1ae70 20 74 68 61 74 0a 6f 63 63 75 72 20 77 69 74 68   that.occur with
1ae80 69 6e 20 74 68 65 20 62 6f 64 79 20 6f 66 20 61  in the body of a
1ae90 20 5b 43 52 45 41 54 45 20 54 52 49 47 47 45 52   [CREATE TRIGGER
1aea0 5d 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 5e 54  ] statement.  ^T
1aeb0 68 65 20 3c 69 3e 74 61 62 6c 65 2d 6e 61 6d 65  he <i>table-name
1aec0 3c 2f 69 3e 0a 6f 66 20 74 68 65 20 55 50 44 41  </i>.of the UPDA
1aed0 54 45 20 6d 75 73 74 20 62 65 20 75 6e 71 75 61  TE must be unqua
1aee0 6c 69 66 69 65 64 2e 20 0a 5e 28 49 6e 20 6f 74  lified. .^(In ot
1aef0 68 65 72 20 77 6f 72 64 73 2c 20 74 68 65 20 3c  her words, the <
1af00 69 3e 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3c  i>database-name<
1af10 2f 69 3e 3c 62 3e 2e 3c 2f 62 3e 20 70 72 65 66  /i><b>.</b> pref
1af20 69 78 20 0a 6f 6e 20 74 68 65 20 74 61 62 6c 65  ix .on the table
1af30 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 55 50 44   name of the UPD
1af40 41 54 45 20 69 73 20 6e 6f 74 20 61 6c 6c 6f 77  ATE is not allow
1af50 65 64 20 77 69 74 68 69 6e 20 74 72 69 67 67 65  ed within trigge
1af60 72 73 2e 29 5e 0a 5e 54 68 65 20 74 61 62 6c 65  rs.)^.^The table
1af70 20 74 6f 20 62 65 20 75 70 64 61 74 65 64 20 6d   to be updated m
1af80 75 73 74 20 62 65 20 69 6e 20 74 68 65 20 73 61  ust be in the sa
1af90 6d 65 0a 64 61 74 61 62 61 73 65 20 61 73 20 74  me.database as t
1afa0 68 65 20 74 61 62 6c 65 20 74 6f 20 77 68 69 63  he table to whic
1afb0 68 20 74 68 65 20 74 72 69 67 67 65 72 20 69 73  h the trigger is
1afc0 20 61 74 74 61 63 68 65 64 2e 3c 2f 70 3e 0a 0a   attached.</p>..
1afd0 3c 70 3e 5e 54 68 65 20 49 4e 44 45 58 45 44 20  <p>^The INDEXED 
1afe0 42 59 20 61 6e 64 20 4e 4f 54 20 49 4e 44 45 58  BY and NOT INDEX
1aff0 45 44 20 63 6c 61 75 73 65 73 20 61 72 65 20 6e  ED clauses are n
1b000 6f 74 20 61 6c 6c 6f 77 65 64 20 6f 6e 20 55 50  ot allowed on UP
1b010 44 41 54 45 0a 73 74 61 74 65 6d 65 6e 74 73 20  DATE.statements 
1b020 77 69 74 68 69 6e 20 74 72 69 67 67 65 72 73 2e  within triggers.
1b030 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20 4c 49  </p>..<p>^The LI
1b040 4d 49 54 20 63 6c 61 75 73 65 20 66 6f 72 20 55  MIT clause for U
1b050 50 44 41 54 45 20 69 73 20 75 6e 73 75 70 70 6f  PDATE is unsuppo
1b060 72 74 65 64 20 77 69 74 68 69 6e 20 74 72 69 67  rted within trig
1b070 67 65 72 73 2e 3c 2f 70 3e 0a 0a 3c 68 33 3e 4f  gers.</p>..<h3>O
1b080 70 74 69 6f 6e 61 6c 20 4c 49 4d 49 54 20 61 6e  ptional LIMIT an
1b090 64 20 4f 52 44 45 52 20 42 59 20 43 6c 61 75 73  d ORDER BY Claus
1b0a0 65 73 3c 2f 68 33 3e 0a 0a 3c 70 3e 5e 28 49 66  es</h3>..<p>^(If
1b0b0 20 53 51 4c 69 74 65 20 69 73 20 62 75 69 6c 74   SQLite is built
1b0c0 20 77 69 74 68 20 74 68 65 20 5b 53 51 4c 49 54   with the [SQLIT
1b0d0 45 5f 45 4e 41 42 4c 45 5f 55 50 44 41 54 45 5f  E_ENABLE_UPDATE_
1b0e0 44 45 4c 45 54 45 5f 4c 49 4d 49 54 5d 0a 63 6f  DELETE_LIMIT].co
1b0f0 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
1b100 6e 20 74 68 65 6e 20 74 68 65 20 73 79 6e 74 61  n then the synta
1b110 78 20 6f 66 20 74 68 65 20 55 50 44 41 54 45 20  x of the UPDATE 
1b120 73 74 61 74 65 6d 65 6e 74 20 69 73 20 65 78 74  statement is ext
1b130 65 6e 64 65 64 0a 77 69 74 68 20 6f 70 74 69 6f  ended.with optio
1b140 6e 61 6c 20 4f 52 44 45 52 20 42 59 20 61 6e 64  nal ORDER BY and
1b150 20 4c 49 4d 49 54 20 63 6c 61 75 73 65 73 29 5e   LIMIT clauses)^
1b160 20 61 73 20 66 6f 6c 6c 6f 77 73 3a 3c 2f 70 3e   as follows:</p>
1b170 0a 0a 3c 74 63 6c 3e 42 75 62 62 6c 65 44 69 61  ..<tcl>BubbleDia
1b180 67 72 61 6d 20 75 70 64 61 74 65 2d 73 74 6d 74  gram update-stmt
1b190 2d 6c 69 6d 69 74 65 64 3c 2f 74 63 6c 3e 0a 0a  -limited</tcl>..
1b1a0 3c 70 3e 5e 54 68 65 20 6f 70 74 69 6f 6e 61 6c  <p>^The optional
1b1b0 20 4c 49 4d 49 54 20 63 6c 61 75 73 65 20 63 61   LIMIT clause ca
1b1c0 6e 20 62 65 20 75 73 65 64 20 74 6f 20 6c 69 6d  n be used to lim
1b1d0 69 74 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  it the number of
1b1e0 0a 72 6f 77 73 20 6d 6f 64 69 66 69 65 64 2c 20  .rows modified, 
1b1f0 61 6e 64 20 74 68 65 72 65 62 79 20 6c 69 6d 69  and thereby limi
1b200 74 20 74 68 65 20 73 69 7a 65 20 6f 66 20 74 68  t the size of th
1b210 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 2e 0a 5e  e transaction..^
1b220 54 68 65 20 4f 52 44 45 52 20 42 59 20 63 6c 61  The ORDER BY cla
1b230 75 73 65 20 6f 6e 20 61 6e 20 55 50 44 41 54 45  use on an UPDATE
1b240 20 73 74 61 74 65 6d 65 6e 74 0a 69 73 20 75 73   statement.is us
1b250 65 64 20 6f 6e 6c 79 20 74 6f 20 64 65 74 65 72  ed only to deter
1b260 6d 69 6e 65 20 77 68 69 63 68 20 72 6f 77 73 20  mine which rows 
1b270 66 61 6c 6c 0a 77 69 74 68 69 6e 20 74 68 65 20  fall.within the 
1b280 4c 49 4d 49 54 2e 20 20 5e 54 68 65 20 6f 72 64  LIMIT.  ^The ord
1b290 65 72 20 69 6e 20 77 68 69 63 68 20 72 6f 77 73  er in which rows
1b2a0 20 61 72 65 20 6d 6f 64 69 66 69 65 64 20 69 73   are modified is
1b2b0 20 61 72 62 69 74 72 61 72 79 0a 61 6e 64 20 69   arbitrary.and i
1b2c0 73 20 6e 6f 74 20 64 65 74 65 72 6d 69 6e 65 64  s not determined
1b2d0 20 62 79 20 74 68 65 20 4f 52 44 45 52 20 42 59   by the ORDER BY
1b2e0 20 63 6c 61 75 73 65 2e 3c 2f 70 3e 0a 0a 3c 74   clause.</p>..<t
1b2f0 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23  cl>.############
1b300 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1b310 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1b320 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1b330 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1b340 23 23 0a 53 65 63 74 69 6f 6e 20 56 41 43 55 55  ##.Section VACUU
1b350 4d 20 76 61 63 75 75 6d 20 56 41 43 55 55 4d 0a  M vacuum VACUUM.
1b360 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 76  .BubbleDiagram v
1b370 61 63 75 75 6d 2d 73 74 6d 74 20 31 0a 3c 2f 74  acuum-stmt 1.</t
1b380 63 6c 3e 0a 0a 3c 70 3e 5e 57 68 65 6e 20 61 6e  cl>..<p>^When an
1b390 20 6f 62 6a 65 63 74 20 28 74 61 62 6c 65 2c 20   object (table, 
1b3a0 69 6e 64 65 78 2c 20 74 72 69 67 67 65 72 2c 20  index, trigger, 
1b3b0 6f 72 20 76 69 65 77 29 20 69 73 20 64 72 6f 70  or view) is drop
1b3c0 70 65 64 20 66 72 6f 6d 20 74 68 65 20 0a 64 61  ped from the .da
1b3d0 74 61 62 61 73 65 2c 20 69 74 20 6c 65 61 76 65  tabase, it leave
1b3e0 73 20 62 65 68 69 6e 64 20 65 6d 70 74 79 20 73  s behind empty s
1b3f0 70 61 63 65 2e 20 0a 5e 54 68 69 73 20 65 6d 70  pace. .^This emp
1b400 74 79 20 73 70 61 63 65 20 77 69 6c 6c 20 62 65  ty space will be
1b410 20 72 65 75 73 65 64 20 74 68 65 20 6e 65 78 74   reused the next
1b420 20 74 69 6d 65 20 6e 65 77 20 69 6e 66 6f 72 6d   time new inform
1b430 61 74 69 6f 6e 20 69 73 0a 61 64 64 65 64 20 74  ation is.added t
1b440 6f 20 74 68 65 20 64 61 74 61 62 61 73 65 2e 20  o the database. 
1b450 20 42 75 74 20 69 6e 20 74 68 65 20 6d 65 61 6e   But in the mean
1b460 74 69 6d 65 2c 20 74 68 65 20 64 61 74 61 62 61  time, the databa
1b470 73 65 20 66 69 6c 65 20 6d 69 67 68 74 0a 62 65  se file might.be
1b480 20 6c 61 72 67 65 72 20 74 68 61 6e 20 73 74 72   larger than str
1b490 69 63 74 6c 79 20 6e 65 63 65 73 73 61 72 79 2e  ictly necessary.
1b4a0 20 20 41 6c 73 6f 2c 20 66 72 65 71 75 65 6e 74    Also, frequent
1b4b0 20 69 6e 73 65 72 74 73 2c 20 75 70 64 61 74 65   inserts, update
1b4c0 73 2c 0a 61 6e 64 20 64 65 6c 65 74 65 73 20 63  s,.and deletes c
1b4d0 61 6e 20 63 61 75 73 65 20 74 68 65 20 69 6e 66  an cause the inf
1b4e0 6f 72 6d 61 74 69 6f 6e 20 69 6e 20 74 68 65 20  ormation in the 
1b4f0 64 61 74 61 62 61 73 65 20 74 6f 20 62 65 63 6f  database to beco
1b500 6d 65 0a 66 72 61 67 6d 65 6e 74 65 64 20 2d 20  me.fragmented - 
1b510 73 63 61 74 74 65 72 65 64 20 6f 75 74 20 61 6c  scattered out al
1b520 6c 20 61 63 72 6f 73 73 20 74 68 65 20 64 61 74  l across the dat
1b530 61 62 61 73 65 20 66 69 6c 65 20 72 61 74 68 65  abase file rathe
1b540 72 0a 74 68 61 6e 20 63 6c 75 73 74 65 72 65 64  r.than clustered
1b550 20 74 6f 67 65 74 68 65 72 20 69 6e 20 6f 6e 65   together in one
1b560 20 70 6c 61 63 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e   place.</p>..<p>
1b570 5e 54 68 65 20 56 41 43 55 55 4d 20 63 6f 6d 6d  ^The VACUUM comm
1b580 61 6e 64 20 63 6c 65 61 6e 73 0a 74 68 65 20 6d  and cleans.the m
1b590 61 69 6e 20 64 61 74 61 62 61 73 65 20 62 79 20  ain database by 
1b5a0 63 6f 70 79 69 6e 67 20 69 74 73 20 63 6f 6e 74  copying its cont
1b5b0 65 6e 74 73 20 74 6f 20 61 20 74 65 6d 70 6f 72  ents to a tempor
1b5c0 61 72 79 20 64 61 74 61 62 61 73 65 20 66 69 6c  ary database fil
1b5d0 65 20 61 6e 64 20 0a 72 65 6c 6f 61 64 69 6e 67  e and .reloading
1b5e0 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 64 61   the original da
1b5f0 74 61 62 61 73 65 20 66 69 6c 65 20 66 72 6f 6d  tabase file from
1b600 20 74 68 65 20 63 6f 70 79 2e 20 20 54 68 69 73   the copy.  This
1b610 20 65 6c 69 6d 69 6e 61 74 65 73 20 0a 66 72 65   eliminates .fre
1b620 65 20 70 61 67 65 73 2c 20 20 61 6c 69 67 6e 73  e pages,  aligns
1b630 20 74 61 62 6c 65 20 64 61 74 61 20 74 6f 20 62   table data to b
1b640 65 20 63 6f 6e 74 69 67 75 6f 75 73 2c 20 61 6e  e contiguous, an
1b650 64 20 6f 74 68 65 72 77 69 73 65 20 63 6c 65 61  d otherwise clea
1b660 6e 73 20 0a 75 70 20 74 68 65 20 64 61 74 61 62  ns .up the datab
1b670 61 73 65 20 66 69 6c 65 20 73 74 72 75 63 74 75  ase file structu
1b680 72 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65  re.</p>..<p>^The
1b690 20 56 41 43 55 55 4d 20 63 6f 6d 6d 61 6e 64 20   VACUUM command 
1b6a0 6d 61 79 20 63 68 61 6e 67 65 20 74 68 65 20 0a  may change the .
1b6b0 5b 52 4f 57 49 44 20 7c 20 52 4f 57 49 44 73 5d  [ROWID | ROWIDs]
1b6c0 20 6f 66 20 65 6e 74 72 69 65 73 20 69 6e 20 74   of entries in t
1b6d0 61 62 6c 65 73 20 74 68 61 74 20 64 6f 0a 6e 6f  ables that do.no
1b6e0 74 20 68 61 76 65 20 61 6e 20 65 78 70 6c 69 63  t have an explic
1b6f0 69 74 20 5b 49 4e 54 45 47 45 52 20 50 52 49 4d  it [INTEGER PRIM
1b700 41 52 59 20 4b 45 59 5d 2e 3c 2f 70 3e 0a 0a 3c  ARY KEY].</p>..<
1b710 70 3e 5e 56 41 43 55 55 4d 20 6f 6e 6c 79 20 77  p>^VACUUM only w
1b720 6f 72 6b 73 20 6f 6e 20 74 68 65 20 6d 61 69 6e  orks on the main
1b730 20 64 61 74 61 62 61 73 65 2e 0a 49 74 20 69 73   database..It is
1b740 20 6e 6f 74 20 70 6f 73 73 69 62 6c 65 20 74 6f   not possible to
1b750 20 56 41 43 55 55 4d 20 61 6e 20 61 74 74 61 63   VACUUM an attac
1b760 68 65 64 20 64 61 74 61 62 61 73 65 20 66 69 6c  hed database fil
1b770 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20  e.</p>..<p>^The 
1b780 56 41 43 55 55 4d 20 63 6f 6d 6d 61 6e 64 20 77  VACUUM command w
1b790 69 6c 6c 20 66 61 69 6c 20 69 66 20 74 68 65 72  ill fail if ther
1b7a0 65 20 69 73 20 61 6e 20 61 63 74 69 76 65 20 74  e is an active t
1b7b0 72 61 6e 73 61 63 74 69 6f 6e 2e 0a 5e 54 68 65  ransaction..^The
1b7c0 20 56 41 43 55 55 4d 20 63 6f 6d 6d 61 6e 64 20   VACUUM command 
1b7d0 69 73 20 61 20 6e 6f 2d 6f 70 20 66 6f 72 20 69  is a no-op for i
1b7e0 6e 2d 6d 65 6d 6f 72 79 20 64 61 74 61 62 61 73  n-memory databas
1b7f0 65 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 28 41 73  es.</p>..<p>^(As
1b800 20 6f 66 20 53 51 4c 69 74 65 20 76 65 72 73 69   of SQLite versi
1b810 6f 6e 20 33 2e 31 2c 20 61 6e 20 61 6c 74 65 72  on 3.1, an alter
1b820 6e 61 74 69 76 65 20 74 6f 20 75 73 69 6e 67 20  native to using 
1b830 74 68 65 20 56 41 43 55 55 4d 20 63 6f 6d 6d 61  the VACUUM comma
1b840 6e 64 0a 69 73 20 61 75 74 6f 2d 76 61 63 75 75  nd.is auto-vacuu
1b850 6d 20 6d 6f 64 65 2c 20 65 6e 61 62 6c 65 64 20  m mode, enabled 
1b860 75 73 69 6e 67 20 74 68 65 20 0a 5b 61 75 74 6f  using the .[auto
1b870 5f 76 61 63 75 75 6d 5d 20 70 72 61 67 6d 61 2e  _vacuum] pragma.
1b880 29 5e 20 20 5e 57 68 65 6e 20 5b 61 75 74 6f 5f  )^  ^When [auto_
1b890 76 61 63 75 75 6d 5d 20 69 73 20 65 6e 61 62 6c  vacuum] is enabl
1b8a0 65 64 20 66 6f 72 20 61 20 64 61 74 61 62 61 73  ed for a databas
1b8b0 65 2c 20 0a 6c 61 72 67 65 20 64 65 6c 65 74 65  e, .large delete
1b8c0 73 20 63 61 75 73 65 0a 74 68 65 20 73 69 7a 65  s cause.the size
1b8d0 20 6f 66 20 74 68 65 20 64 61 74 61 62 61 73 65   of the database
1b8e0 20 66 69 6c 65 20 74 6f 20 73 68 72 69 6e 6b 2e   file to shrink.
1b8f0 20 20 48 6f 77 65 76 65 72 2c 20 5b 61 75 74 6f    However, [auto
1b900 5f 76 61 63 75 75 6d 5d 0a 61 6c 73 6f 20 63 61  _vacuum].also ca
1b910 75 73 65 73 20 65 78 63 65 73 73 20 66 72 61 67  uses excess frag
1b920 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68 65  mentation of the
1b930 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 2e 20   database file. 
1b940 20 5e 41 6e 64 20 5b 61 75 74 6f 5f 76 61 63 75   ^And [auto_vacu
1b950 75 6d 5d 0a 64 6f 65 73 20 6e 6f 74 20 63 6f 6d  um].does not com
1b960 70 61 63 74 20 70 61 72 74 69 61 6c 6c 79 20 66  pact partially f
1b970 69 6c 6c 65 64 20 70 61 67 65 73 20 6f 66 20 74  illed pages of t
1b980 68 65 20 64 61 74 61 62 61 73 65 20 61 73 20 56  he database as V
1b990 41 43 55 55 4d 0a 64 6f 65 73 2e 3c 2f 70 3e 0a  ACUUM.does.</p>.
1b9a0 0a 3c 70 3e 5e 54 68 65 20 5b 70 61 67 65 5f 73  .<p>^The [page_s
1b9b0 69 7a 65 5d 20 61 6e 64 2f 6f 72 20 5b 61 75 74  ize] and/or [aut
1b9c0 6f 5f 76 61 63 75 75 6d 5d 20 6d 6f 64 65 20 6f  o_vacuum] mode o
1b9d0 66 20 61 20 64 61 74 61 62 61 73 65 20 63 61 6e  f a database can
1b9e0 20 62 65 20 63 68 61 6e 67 65 64 0a 62 79 20 69   be changed.by i
1b9f0 6e 76 6f 6b 69 6e 67 20 74 68 65 20 5b 70 61 67  nvoking the [pag
1ba00 65 5f 73 69 7a 65 20 70 72 61 67 6d 61 5d 20 61  e_size pragma] a
1ba10 6e 64 2f 6f 72 20 5b 61 75 74 6f 5f 76 61 63 75  nd/or [auto_vacu
1ba20 75 6d 20 70 72 61 67 6d 61 5d 20 61 6e 64 20 74  um pragma] and t
1ba30 68 65 6e 0a 69 6d 6d 65 64 69 61 74 65 6c 79 20  hen.immediately 
1ba40 56 41 43 55 55 4d 69 6e 67 20 74 68 65 20 64 61  VACUUMing the da
1ba50 74 61 62 61 73 65 2e 20 5e 45 78 63 65 70 74 2c  tabase. ^Except,
1ba60 20 74 68 65 20 70 61 67 65 20 73 69 7a 65 20 63   the page size c
1ba70 61 6e 6e 6f 74 20 62 65 0a 63 68 61 6e 67 65 64  annot be.changed
1ba80 20 77 68 65 6e 20 5b 77 72 69 74 65 2d 61 68 65   when [write-ahe
1ba90 61 64 20 6c 6f 67 5d 20 6d 6f 64 65 20 69 73 20  ad log] mode is 
1baa0 69 6e 20 75 73 65 2e 3c 2f 70 3e 0a 0a 3c 74 63  in use.</p>..<tc
1bab0 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23 23  l>.#############
1bac0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1bad0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1bae0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1baf0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1bb00 23 0a 53 65 63 74 69 6f 6e 20 7b 49 4e 44 45 58  #.Section {INDEX
1bb10 45 44 20 42 59 7d 20 69 6e 64 65 78 65 64 62 79  ED BY} indexedby
1bb20 20 7b 7b 49 4e 44 45 58 45 44 20 42 59 7d 20 7b   {{INDEXED BY} {
1bb30 4e 4f 54 20 49 4e 44 45 58 45 44 7d 7d 0a 0a 3c  NOT INDEXED}}..<
1bb40 2f 74 63 6c 3e 0a 3c 70 3e 5e 54 68 65 20 49 4e  /tcl>.<p>^The IN
1bb50 44 45 58 45 44 20 42 59 20 70 68 72 61 73 65 20  DEXED BY phrase 
1bb60 69 73 20 61 20 53 51 4c 20 65 78 74 65 6e 73 69  is a SQL extensi
1bb70 6f 6e 20 66 6f 75 6e 64 20 6f 6e 6c 79 20 69 6e  on found only in
1bb80 20 53 51 4c 69 74 65 20 77 68 69 63 68 20 63 61   SQLite which ca
1bb90 6e 0a 62 65 20 75 73 65 64 20 74 6f 20 76 65 72  n.be used to ver
1bba0 69 66 79 20 74 68 61 74 20 74 68 65 20 63 6f 72  ify that the cor
1bbb0 72 65 63 74 20 69 6e 64 69 63 65 73 20 61 72 65  rect indices are
1bbc0 20 62 65 69 6e 67 20 75 73 65 64 20 6f 6e 20 61   being used on a
1bbd0 20 5b 44 45 4c 45 54 45 5d 2c 0a 5b 53 45 4c 45   [DELETE],.[SELE
1bbe0 43 54 5d 2c 20 6f 72 20 5b 55 50 44 41 54 45 5d  CT], or [UPDATE]
1bbf0 20 73 74 61 74 65 6d 65 6e 74 2e 0a 5e 54 68 65   statement..^The
1bc00 20 49 4e 44 45 58 45 44 20 42 59 20 70 68 72 61   INDEXED BY phra
1bc10 73 65 20 61 6c 77 61 79 73 20 66 6f 6c 6c 6f 77  se always follow
1bc20 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 61 20  s the name of a 
1bc30 74 61 62 6c 65 20 74 68 61 74 20 53 51 4c 69 74  table that SQLit
1bc40 65 20 77 69 6c 6c 0a 62 65 20 72 65 61 64 69 6e  e will.be readin
1bc50 67 2e 20 20 54 68 65 20 49 4e 44 45 58 45 44 20  g.  The INDEXED 
1bc60 42 59 20 70 68 72 61 73 65 20 63 61 6e 20 62 65  BY phrase can be
1bc70 20 73 65 65 6e 20 69 6e 20 74 68 65 20 66 6f 6c   seen in the fol
1bc80 6c 6f 77 69 6e 67 20 73 79 6e 74 61 78 0a 64 69  lowing syntax.di
1bc90 61 67 72 61 6d 73 3a 3c 2f 70 3e 0a 0a 3c 74 63  agrams:</p>..<tc
1bca0 6c 3e 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d  l>.BubbleDiagram
1bcb0 20 71 75 61 6c 69 66 69 65 64 2d 74 61 62 6c 65   qualified-table
1bcc0 2d 6e 61 6d 65 0a 42 75 62 62 6c 65 44 69 61 67  -name.BubbleDiag
1bcd0 72 61 6d 20 73 69 6e 67 6c 65 2d 73 6f 75 72 63  ram single-sourc
1bce0 65 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 5e 54 68  e.</tcl>..<p>^Th
1bcf0 65 20 22 49 4e 44 45 58 45 44 20 42 59 20 69 6e  e "INDEXED BY in
1bd00 64 65 78 2d 6e 61 6d 65 22 20 63 6c 61 75 73 65  dex-name" clause
1bd10 20 73 70 65 63 69 66 69 65 73 20 74 68 61 74 20   specifies that 
1bd20 74 68 65 20 6e 61 6d 65 64 20 69 6e 64 65 78 0a  the named index.
1bd30 6d 75 73 74 20 62 65 20 75 73 65 64 20 69 6e 20  must be used in 
1bd40 6f 72 64 65 72 20 74 6f 20 6c 6f 6f 6b 20 75 70  order to look up
1bd50 20 76 61 6c 75 65 73 20 6f 6e 20 74 68 65 20 70   values on the p
1bd60 72 65 63 65 64 69 6e 67 20 74 61 62 6c 65 2e 0a  receding table..
1bd70 5e 49 66 20 69 6e 64 65 78 2d 6e 61 6d 65 20 64  ^If index-name d
1bd80 6f 65 73 20 6e 6f 74 20 65 78 69 73 74 20 6f 72  oes not exist or
1bd90 20 63 61 6e 6e 6f 74 20 62 65 20 75 73 65 64 20   cannot be used 
1bda0 66 6f 72 20 74 68 65 20 71 75 65 72 79 2c 20 74  for the query, t
1bdb0 68 65 6e 0a 74 68 65 20 70 72 65 70 61 72 61 74  hen.the preparat
1bdc0 69 6f 6e 20 6f 66 20 74 68 65 20 53 51 4c 20 73  ion of the SQL s
1bdd0 74 61 74 65 6d 65 6e 74 20 66 61 69 6c 73 2e 0a  tatement fails..
1bde0 5e 28 54 68 65 20 22 4e 4f 54 20 49 4e 44 45 58  ^(The "NOT INDEX
1bdf0 45 44 22 20 63 6c 61 75 73 65 20 73 70 65 63 69  ED" clause speci
1be00 66 69 65 73 20 74 68 61 74 20 6e 6f 20 69 6e 64  fies that no ind
1be10 65 78 20 73 68 61 6c 6c 20 62 65 20 75 73 65 64  ex shall be used
1be20 20 77 68 65 6e 0a 61 63 63 65 73 73 69 6e 67 20   when.accessing 
1be30 74 68 65 20 70 72 65 63 65 64 69 6e 67 20 74 61  the preceding ta
1be40 62 6c 65 2c 20 69 6e 63 6c 75 64 69 6e 67 20 69  ble, including i
1be50 6d 70 6c 69 65 64 20 69 6e 64 69 63 65 73 20 63  mplied indices c
1be60 72 65 61 74 65 20 62 79 0a 55 4e 49 51 55 45 20  reate by.UNIQUE 
1be70 61 6e 64 20 50 52 49 4d 41 52 59 20 4b 45 59 20  and PRIMARY KEY 
1be80 63 6f 6e 73 74 72 61 69 6e 74 73 2e 20 20 48 6f  constraints.  Ho
1be90 77 65 76 65 72 2c 20 74 68 65 20 49 4e 54 45 47  wever, the INTEG
1bea0 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 0a 63  ER PRIMARY KEY.c
1beb0 61 6e 20 73 74 69 6c 6c 20 62 65 20 75 73 65 64  an still be used
1bec0 20 74 6f 20 6c 6f 6f 6b 20 75 70 20 65 6e 74 72   to look up entr
1bed0 69 65 73 20 65 76 65 6e 20 77 68 65 6e 20 22 4e  ies even when "N
1bee0 4f 54 20 49 4e 44 45 58 45 44 22 20 69 73 20 73  OT INDEXED" is s
1bef0 70 65 63 69 66 69 65 64 2e 29 5e 3c 2f 70 3e 0a  pecified.)^</p>.
1bf00 0a 3c 70 3e 53 6f 6d 65 20 53 51 4c 20 64 61 74  .<p>Some SQL dat
1bf10 61 62 61 73 65 20 65 6e 67 69 6e 65 73 20 70 72  abase engines pr
1bf20 6f 76 69 64 65 20 6e 6f 6e 2d 73 74 61 6e 64 61  ovide non-standa
1bf30 72 64 20 22 68 69 6e 74 22 20 6d 65 63 68 61 6e  rd "hint" mechan
1bf40 69 73 6d 73 20 77 68 69 63 68 0a 63 61 6e 20 62  isms which.can b
1bf50 65 20 75 73 65 64 20 74 6f 20 67 69 76 65 20 74  e used to give t
1bf60 68 65 20 71 75 65 72 79 20 6f 70 74 69 6d 69 7a  he query optimiz
1bf70 65 72 20 63 6c 75 65 73 20 61 62 6f 75 74 20 77  er clues about w
1bf80 68 61 74 20 69 6e 64 69 63 65 73 20 69 74 20 73  hat indices it s
1bf90 68 6f 75 6c 64 0a 75 73 65 20 66 6f 72 20 61 20  hould.use for a 
1bfa0 70 61 72 74 69 63 75 6c 61 72 20 73 74 61 74 65  particular state
1bfb0 6d 65 6e 74 2e 20 20 54 68 65 20 49 4e 44 45 58  ment.  The INDEX
1bfc0 20 42 59 20 63 6c 61 75 73 65 20 6f 66 20 53 51   BY clause of SQ
1bfd0 4c 69 74 65 20 69 73 20 0a 3c 65 6d 3e 6e 6f 74  Lite is .<em>not
1bfe0 3c 2f 65 6d 3e 20 61 20 68 69 6e 74 69 6e 67 20  </em> a hinting 
1bff0 6d 65 63 68 61 6e 69 73 6d 20 61 6e 64 20 69 74  mechanism and it
1c000 20 73 68 6f 75 6c 64 20 6e 6f 74 20 62 65 20 75   should not be u
1c010 73 65 64 20 61 73 20 73 75 63 68 2e 0a 5e 54 68  sed as such..^Th
1c020 65 20 49 4e 44 45 58 45 44 20 42 59 20 63 6c 61  e INDEXED BY cla
1c030 75 73 65 20 64 6f 65 73 20 6e 6f 74 20 67 69 76  use does not giv
1c040 65 20 74 68 65 20 6f 70 74 69 6d 69 7a 65 72 20  e the optimizer 
1c050 68 69 6e 74 73 20 61 62 6f 75 74 20 77 68 69 63  hints about whic
1c060 68 20 69 6e 64 65 78 0a 74 6f 20 75 73 65 3b 20  h index.to use; 
1c070 69 74 20 67 69 76 65 73 20 74 68 65 20 6f 70 74  it gives the opt
1c080 69 6d 69 7a 65 72 20 61 20 72 65 71 75 69 72 65  imizer a require
1c090 6d 65 6e 74 20 6f 66 20 77 68 69 63 68 20 69 6e  ment of which in
1c0a0 64 65 78 20 74 6f 20 75 73 65 2e 0a 5e 49 66 20  dex to use..^If 
1c0b0 74 68 65 20 71 75 65 72 79 20 6f 70 74 69 6d 69  the query optimi
1c0c0 7a 65 72 20 69 73 20 75 6e 61 62 6c 65 20 74 6f  zer is unable to
1c0d0 20 75 73 65 20 74 68 65 20 69 6e 64 65 78 20 73   use the index s
1c0e0 70 65 63 69 66 69 65 64 20 62 79 20 74 68 65 0a  pecified by the.
1c0f0 49 4e 44 45 58 20 42 59 20 63 6c 61 75 73 65 2c  INDEX BY clause,
1c100 20 74 68 65 6e 20 74 68 65 20 71 75 65 72 79 20   then the query 
1c110 77 69 6c 6c 20 66 61 69 6c 20 77 69 74 68 20 61  will fail with a
1c120 6e 20 65 72 72 6f 72 2e 3c 2f 70 3e 0a 0a 3c 70  n error.</p>..<p
1c130 3e 54 68 65 20 49 4e 44 45 58 45 44 20 42 59 20  >The INDEXED BY 
1c140 63 6c 61 75 73 65 20 69 73 20 3c 65 6d 3e 6e 6f  clause is <em>no
1c150 74 3c 2f 65 6d 3e 20 69 6e 74 65 6e 64 65 64 20  t</em> intended 
1c160 66 6f 72 20 75 73 65 20 69 6e 20 74 75 6e 69 6e  for use in tunin
1c170 67 0a 74 68 65 20 70 72 65 66 6f 72 6d 61 6e 63  g.the preformanc
1c180 65 20 6f 66 20 61 20 71 75 65 72 79 2e 20 20 54  e of a query.  T
1c190 68 65 20 69 6e 74 65 6e 74 20 6f 66 20 74 68 65  he intent of the
1c1a0 20 49 4e 44 45 58 45 44 20 42 59 20 63 6c 61 75   INDEXED BY clau
1c1b0 73 65 20 69 73 0a 74 6f 20 72 61 69 73 65 20 61  se is.to raise a
1c1c0 20 72 75 6e 2d 74 69 6d 65 20 65 72 72 6f 72 20   run-time error 
1c1d0 69 66 20 61 20 73 63 68 65 6d 61 20 63 68 61 6e  if a schema chan
1c1e0 67 65 2c 20 73 75 63 68 20 61 73 20 64 72 6f 70  ge, such as drop
1c1f0 70 69 6e 67 20 6f 72 0a 63 72 65 61 74 69 6e 67  ping or.creating
1c200 20 61 6e 20 69 6e 64 65 78 2c 20 63 61 75 73 65   an index, cause
1c210 73 20 74 68 65 20 71 75 65 72 79 20 70 6c 61 6e  s the query plan
1c220 20 66 6f 72 20 61 20 74 69 6d 65 2d 73 65 6e 73   for a time-sens
1c230 69 74 69 76 65 20 71 75 65 72 79 0a 74 6f 20 63  itive query.to c
1c240 68 61 6e 67 65 2e 20 20 54 68 65 20 49 4e 44 45  hange.  The INDE
1c250 58 45 44 20 42 59 20 63 6c 61 75 73 65 20 69 73  XED BY clause is
1c260 20 64 65 73 69 67 6e 65 64 20 74 6f 20 68 65 6c   designed to hel
1c270 70 20 64 65 74 65 63 74 0a 75 6e 64 65 73 69 72  p detect.undesir
1c280 61 62 6c 65 20 71 75 65 72 79 20 70 6c 61 6e 20  able query plan 
1c290 63 68 61 6e 67 65 73 20 64 75 72 69 6e 67 20 72  changes during r
1c2a0 65 67 72 65 73 73 69 6f 6e 20 74 65 73 74 69 6e  egression testin
1c2b0 67 2e 0a 44 65 76 65 6c 6f 70 65 72 73 20 61 72  g..Developers ar
1c2c0 65 20 61 64 6d 6f 6e 69 73 68 65 64 20 74 6f 20  e admonished to 
1c2d0 6f 6d 69 74 20 61 6c 6c 20 75 73 65 20 6f 66 20  omit all use of 
1c2e0 49 4e 44 45 58 45 44 20 42 59 20 64 75 72 69 6e  INDEXED BY durin
1c2f0 67 0a 61 70 70 6c 69 63 61 74 69 6f 6e 20 64 65  g.application de
1c300 73 69 67 6e 2c 20 69 6d 70 6c 65 6d 65 6e 74 61  sign, implementa
1c310 74 69 6f 6e 2c 20 74 65 73 74 69 6e 67 2c 20 61  tion, testing, a
1c320 6e 64 20 74 75 6e 69 6e 67 2e 20 20 49 66 0a 49  nd tuning.  If.I
1c330 4e 44 45 58 45 44 20 42 59 20 69 73 20 74 6f 20  NDEXED BY is to 
1c340 62 65 20 75 73 65 64 20 61 74 20 61 6c 6c 2c 20  be used at all, 
1c350 69 74 20 73 68 6f 75 6c 64 20 62 65 20 69 6e 73  it should be ins
1c360 65 72 74 65 64 20 61 74 20 74 68 65 20 76 65 72  erted at the ver
1c370 79 0a 65 6e 64 20 6f 66 20 74 68 65 20 64 65 76  y.end of the dev
1c380 65 6c 6f 70 6d 65 6e 74 20 70 72 6f 63 65 73 73  elopment process
1c390 20 77 68 65 6e 20 22 6c 6f 63 6b 69 6e 67 20 64   when "locking d
1c3a0 6f 77 6e 22 20 61 20 64 65 73 69 67 6e 2e 3c 2f  own" a design.</
1c3b0 70 3e 0a 0a 3c 68 33 3e 53 65 65 20 41 6c 73 6f  p>..<h3>See Also
1c3c0 3a 3c 2f 68 33 3e 0a 0a 3c 70 3e 54 68 65 20 5b  :</h3>..<p>The [
1c3d0 73 71 6c 69 74 65 33 5f 73 74 6d 74 5f 73 74 61  sqlite3_stmt_sta
1c3e0 74 75 73 28 29 5d 20 43 2f 43 2b 2b 20 69 6e 74  tus()] C/C++ int
1c3f0 65 72 66 61 63 65 20 74 6f 67 65 74 68 65 72 20  erface together 
1c400 77 69 74 68 20 74 68 65 0a 5b 53 51 4c 49 54 45  with the.[SQLITE
1c410 5f 53 54 4d 54 53 54 41 54 55 53 5f 46 55 4c 4c  _STMTSTATUS_FULL
1c420 53 43 41 4e 5f 53 54 45 50 5d 20 61 6e 64 20 5b  SCAN_STEP] and [
1c430 53 51 4c 49 54 45 5f 53 54 4d 54 53 54 41 54 55  SQLITE_STMTSTATU
1c440 53 5f 53 4f 52 54 5d 20 76 65 72 62 73 0a 63 61  S_SORT] verbs.ca
1c450 6e 20 62 65 20 75 73 65 64 20 74 6f 20 64 65 74  n be used to det
1c460 65 63 74 20 61 74 20 72 75 6e 2d 74 69 6d 65 20  ect at run-time 
1c470 77 68 65 6e 20 61 6e 20 53 51 4c 20 73 74 61 74  when an SQL stat
1c480 65 6d 65 6e 74 20 69 73 20 6e 6f 74 0a 6d 61 6b  ement is not.mak
1c490 69 6e 67 20 65 66 66 65 63 74 69 76 65 20 75 73  ing effective us
1c4a0 65 20 6f 66 20 69 6e 64 69 63 65 73 2e 20 20 4d  e of indices.  M
1c4b0 61 6e 79 20 61 70 70 6c 69 63 61 74 69 6f 6e 73  any applications
1c4c0 20 6d 61 79 20 70 72 65 66 65 72 20 74 6f 0a 75   may prefer to.u
1c4d0 73 65 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  se the [sqlite3_
1c4e0 73 74 6d 74 5f 73 74 61 74 75 73 28 29 5d 20 69  stmt_status()] i
1c4f0 6e 74 65 72 66 61 63 65 20 74 6f 20 64 65 74 65  nterface to dete
1c500 63 74 20 69 6e 64 65 78 20 6d 69 73 75 73 65 0a  ct index misuse.
1c510 72 61 74 68 65 72 20 74 68 61 6e 20 74 68 65 20  rather than the 
1c520 49 4e 44 45 58 45 44 20 42 59 20 70 68 72 61 73  INDEXED BY phras
1c530 65 20 64 65 73 63 72 69 62 65 64 20 68 65 72 65  e described here
1c540 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23  .</p>..<tcl>.###
1c550 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1c560 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1c570 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1c580 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1c590 23 23 23 23 23 23 23 23 23 23 0a 23 20 41 20 6c  ##########.# A l
1c5a0 69 73 74 20 6f 66 20 6b 65 79 77 6f 72 64 73 2e  ist of keywords.
1c5b0 20 20 41 20 61 73 74 65 72 69 73 6b 20 6f 63 63    A asterisk occ
1c5c0 75 72 73 20 61 66 74 65 72 20 74 68 65 20 6b 65  urs after the ke
1c5d0 79 77 6f 72 64 20 69 66 20 69 74 20 69 73 20 6f  yword if it is o
1c5e0 6e 0a 23 20 74 68 65 20 66 61 6c 6c 62 61 63 6b  n.# the fallback
1c5f0 20 6c 69 73 74 2e 0a 23 0a 73 65 74 20 6b 65 79   list..#.set key
1c600 77 6f 72 64 5f 6c 69 73 74 20 5b 6c 73 6f 72 74  word_list [lsort
1c610 20 7b 0a 20 20 20 41 42 4f 52 54 0a 20 20 20 41   {.   ABORT.   A
1c620 43 54 49 4f 4e 0a 20 20 20 41 44 44 0a 20 20 20  CTION.   ADD.   
1c630 41 46 54 45 52 0a 20 20 20 41 4c 4c 0a 20 20 20  AFTER.   ALL.   
1c640 41 4c 54 45 52 0a 20 20 20 41 4e 41 4c 59 5a 45  ALTER.   ANALYZE
1c650 0a 20 20 20 41 4e 44 0a 20 20 20 41 53 0a 20 20  .   AND.   AS.  
1c660 20 41 53 43 0a 20 20 20 41 54 54 41 43 48 0a 20   ASC.   ATTACH. 
1c670 20 20 41 55 54 4f 49 4e 43 52 45 4d 45 4e 54 0a    AUTOINCREMENT.
1c680 20 20 20 42 45 46 4f 52 45 0a 20 20 20 42 45 47     BEFORE.   BEG
1c690 49 4e 0a 20 20 20 42 45 54 57 45 45 4e 0a 20 20  IN.   BETWEEN.  
1c6a0 20 42 59 0a 20 20 20 43 41 53 43 41 44 45 0a 20   BY.   CASCADE. 
1c6b0 20 20 43 41 53 45 0a 20 20 20 43 41 53 54 0a 20    CASE.   CAST. 
1c6c0 20 20 43 48 45 43 4b 0a 20 20 20 43 4f 4c 4c 41    CHECK.   COLLA
1c6d0 54 45 0a 20 20 20 43 4f 4c 55 4d 4e 0a 20 20 20  TE.   COLUMN.   
1c6e0 43 4f 4d 4d 49 54 0a 20 20 20 43 4f 4e 46 4c 49  COMMIT.   CONFLI
1c6f0 43 54 0a 20 20 20 43 4f 4e 53 54 52 41 49 4e 54  CT.   CONSTRAINT
1c700 0a 20 20 20 43 52 45 41 54 45 0a 20 20 20 43 52  .   CREATE.   CR
1c710 4f 53 53 0a 20 20 20 43 55 52 52 45 4e 54 5f 44  OSS.   CURRENT_D
1c720 41 54 45 0a 20 20 20 43 55 52 52 45 4e 54 5f 54  ATE.   CURRENT_T
1c730 49 4d 45 0a 20 20 20 43 55 52 52 45 4e 54 5f 54  IME.   CURRENT_T
1c740 49 4d 45 53 54 41 4d 50 0a 20 20 20 44 41 54 41  IMESTAMP.   DATA
1c750 42 41 53 45 0a 20 20 20 44 45 46 41 55 4c 54 0a  BASE.   DEFAULT.
1c760 20 20 20 44 45 46 45 52 52 45 44 0a 20 20 20 44     DEFERRED.   D
1c770 45 46 45 52 52 41 42 4c 45 0a 20 20 20 44 45 4c  EFERRABLE.   DEL
1c780 45 54 45 0a 20 20 20 44 45 53 43 0a 20 20 20 44  ETE.   DESC.   D
1c790 45 54 41 43 48 0a 20 20 20 44 49 53 54 49 4e 43  ETACH.   DISTINC
1c7a0 54 0a 20 20 20 44 52 4f 50 0a 20 20 20 45 4e 44  T.   DROP.   END
1c7b0 0a 20 20 20 45 41 43 48 0a 20 20 20 45 4c 53 45  .   EACH.   ELSE
1c7c0 0a 20 20 20 45 53 43 41 50 45 0a 20 20 20 45 58  .   ESCAPE.   EX
1c7d0 43 45 50 54 0a 20 20 20 45 58 43 4c 55 53 49 56  CEPT.   EXCLUSIV
1c7e0 45 0a 20 20 20 45 58 49 53 54 53 0a 20 20 20 45  E.   EXISTS.   E
1c7f0 58 50 4c 41 49 4e 0a 20 20 20 46 41 49 4c 0a 20  XPLAIN.   FAIL. 
1c800 20 20 46 4f 52 0a 20 20 20 46 4f 52 45 49 47 4e    FOR.   FOREIGN
1c810 0a 20 20 20 46 52 4f 4d 0a 20 20 20 46 55 4c 4c  .   FROM.   FULL
1c820 0a 20 20 20 47 4c 4f 42 0a 20 20 20 47 52 4f 55  .   GLOB.   GROU
1c830 50 0a 20 20 20 48 41 56 49 4e 47 0a 20 20 20 49  P.   HAVING.   I
1c840 46 0a 20 20 20 49 47 4e 4f 52 45 0a 20 20 20 49  F.   IGNORE.   I
1c850 4d 4d 45 44 49 41 54 45 0a 20 20 20 49 4e 0a 20  MMEDIATE.   IN. 
1c860 20 20 49 4e 44 45 58 0a 20 20 20 49 4e 44 45 58    INDEX.   INDEX
1c870 45 44 0a 20 20 20 49 4e 49 54 49 41 4c 4c 59 0a  ED.   INITIALLY.
1c880 20 20 20 49 4e 4e 45 52 0a 20 20 20 49 4e 53 45     INNER.   INSE
1c890 52 54 0a 20 20 20 49 4e 53 54 45 41 44 0a 20 20  RT.   INSTEAD.  
1c8a0 20 49 4e 54 45 52 53 45 43 54 0a 20 20 20 49 4e   INTERSECT.   IN
1c8b0 54 4f 0a 20 20 20 49 53 0a 20 20 20 49 53 4e 55  TO.   IS.   ISNU
1c8c0 4c 4c 0a 20 20 20 4a 4f 49 4e 0a 20 20 20 4b 45  LL.   JOIN.   KE
1c8d0 59 0a 20 20 20 4c 45 46 54 0a 20 20 20 4c 49 4b  Y.   LEFT.   LIK
1c8e0 45 0a 20 20 20 4c 49 4d 49 54 0a 20 20 20 4d 41  E.   LIMIT.   MA
1c8f0 54 43 48 0a 20 20 20 4e 41 54 55 52 41 4c 0a 20  TCH.   NATURAL. 
1c900 20 20 4e 4f 0a 20 20 20 4e 4f 54 0a 20 20 20 4e    NO.   NOT.   N
1c910 4f 54 4e 55 4c 4c 0a 20 20 20 4e 55 4c 4c 0a 20  OTNULL.   NULL. 
1c920 20 20 4f 46 0a 20 20 20 4f 46 46 53 45 54 0a 20    OF.   OFFSET. 
1c930 20 20 4f 4e 0a 20 20 20 4f 52 0a 20 20 20 4f 52    ON.   OR.   OR
1c940 44 45 52 0a 20 20 20 4f 55 54 45 52 0a 20 20 20  DER.   OUTER.   
1c950 50 4c 41 4e 0a 20 20 20 50 52 41 47 4d 41 0a 20  PLAN.   PRAGMA. 
1c960 20 20 50 52 49 4d 41 52 59 0a 20 20 20 51 55 45    PRIMARY.   QUE
1c970 52 59 0a 20 20 20 52 41 49 53 45 0a 20 20 20 52  RY.   RAISE.   R
1c980 45 46 45 52 45 4e 43 45 53 0a 20 20 20 52 45 47  EFERENCES.   REG
1c990 45 58 50 0a 20 20 20 52 45 49 4e 44 45 58 0a 20  EXP.   REINDEX. 
1c9a0 20 20 52 45 4c 45 41 53 45 0a 20 20 20 52 45 4e    RELEASE.   REN
1c9b0 41 4d 45 0a 20 20 20 52 45 50 4c 41 43 45 0a 20  AME.   REPLACE. 
1c9c0 20 20 52 45 53 54 52 49 43 54 0a 20 20 20 52 49    RESTRICT.   RI
1c9d0 47 48 54 0a 20 20 20 52 4f 4c 4c 42 41 43 4b 0a  GHT.   ROLLBACK.
1c9e0 20 20 20 52 4f 57 0a 20 20 20 53 41 56 45 50 4f     ROW.   SAVEPO
1c9f0 49 4e 54 0a 20 20 20 53 45 4c 45 43 54 0a 20 20  INT.   SELECT.  
1ca00 20 53 45 54 0a 20 20 20 54 41 42 4c 45 0a 20 20   SET.   TABLE.  
1ca10 20 54 45 4d 50 0a 20 20 20 54 45 4d 50 4f 52 41   TEMP.   TEMPORA
1ca20 52 59 0a 20 20 20 54 48 45 4e 0a 20 20 20 54 4f  RY.   THEN.   TO
1ca30 0a 20 20 20 54 52 41 4e 53 41 43 54 49 4f 4e 0a  .   TRANSACTION.
1ca40 20 20 20 54 52 49 47 47 45 52 0a 20 20 20 55 4e     TRIGGER.   UN
1ca50 49 4f 4e 0a 20 20 20 55 4e 49 51 55 45 0a 20 20  ION.   UNIQUE.  
1ca60 20 55 50 44 41 54 45 0a 20 20 20 55 53 49 4e 47   UPDATE.   USING
1ca70 0a 20 20 20 56 41 43 55 55 4d 0a 20 20 20 56 41  .   VACUUM.   VA
1ca80 4c 55 45 53 0a 20 20 20 56 49 45 57 0a 20 20 20  LUES.   VIEW.   
1ca90 56 49 52 54 55 41 4c 0a 20 20 20 57 48 45 4e 0a  VIRTUAL.   WHEN.
1caa0 20 20 20 57 48 45 52 45 0a 7d 5d 0a 0a 68 64 5f     WHERE.}]..hd_
1cab0 70 75 74 73 20 7b 3c 44 49 56 20 63 6c 61 73 73  puts {<DIV class
1cac0 3d 22 70 64 66 5f 73 65 63 74 69 6f 6e 22 3e 7d  ="pdf_section">}
1cad0 0a 53 65 63 74 69 6f 6e 20 7b 53 51 4c 69 74 65  .Section {SQLite
1cae0 20 4b 65 79 77 6f 72 64 73 7d 20 6b 65 79 77 6f   Keywords} keywo
1caf0 72 64 73 20 7b 7b 2a 53 51 4c 20 6b 65 79 77 6f  rds {{*SQL keywo
1cb00 72 64 7d 20 7b 53 51 4c 20 6b 65 79 77 6f 72 64  rd} {SQL keyword
1cb10 73 7d 7d 0a 68 64 5f 70 75 74 73 20 7b 3c 2f 44  s}}.hd_puts {</D
1cb20 49 56 3e 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e  IV>}.</tcl>..<p>
1cb30 54 68 65 20 53 51 4c 20 73 74 61 6e 64 61 72 64  The SQL standard
1cb40 20 73 70 65 63 69 66 69 65 73 20 61 20 68 75 67   specifies a hug
1cb50 65 20 6e 75 6d 62 65 72 20 6f 66 20 6b 65 79 77  e number of keyw
1cb60 6f 72 64 73 20 77 68 69 63 68 20 6d 61 79 20 6e  ords which may n
1cb70 6f 74 0a 62 65 20 75 73 65 64 20 61 73 20 74 68  ot.be used as th
1cb80 65 20 6e 61 6d 65 73 20 6f 66 20 74 61 62 6c 65  e names of table
1cb90 73 2c 20 69 6e 64 69 63 65 73 2c 20 63 6f 6c 75  s, indices, colu
1cba0 6d 6e 73 2c 20 64 61 74 61 62 61 73 65 73 2c 20  mns, databases, 
1cbb0 75 73 65 72 2d 64 65 66 69 6e 65 64 0a 66 75 6e  user-defined.fun
1cbc0 63 74 69 6f 6e 73 2c 20 63 6f 6c 6c 61 74 69 6f  ctions, collatio
1cbd0 6e 73 2c 20 76 69 72 74 75 61 6c 20 74 61 62 6c  ns, virtual tabl
1cbe0 65 20 6d 6f 64 75 6c 65 73 2c 20 6f 72 20 61 6e  e modules, or an
1cbf0 79 20 6f 74 68 65 72 20 6e 61 6d 65 64 20 6f 62  y other named ob
1cc00 6a 65 63 74 2e 0a 54 68 65 20 6c 69 73 74 20 6f  ject..The list o
1cc10 66 20 6b 65 79 77 6f 72 64 73 20 69 73 20 73 6f  f keywords is so
1cc20 20 6c 6f 6e 67 20 74 68 61 74 20 66 65 77 20 70   long that few p
1cc30 65 6f 70 6c 65 20 63 61 6e 20 72 65 6d 65 6d 62  eople can rememb
1cc40 65 72 20 74 68 65 6d 20 61 6c 6c 2e 0a 46 6f 72  er them all..For
1cc50 20 6d 6f 73 74 20 53 51 4c 20 63 6f 64 65 2c 20   most SQL code, 
1cc60 79 6f 75 72 20 73 61 66 65 73 74 20 62 65 74 20  your safest bet 
1cc70 69 73 20 74 6f 20 6e 65 76 65 72 20 75 73 65 20  is to never use 
1cc80 61 6e 79 20 45 6e 67 6c 69 73 68 20 6c 61 6e 67  any English lang
1cc90 75 61 67 65 0a 77 6f 72 64 20 61 73 20 74 68 65  uage.word as the
1cca0 20 6e 61 6d 65 20 6f 66 20 61 20 75 73 65 72 2d   name of a user-
1ccb0 64 65 66 69 6e 65 64 20 6f 62 6a 65 63 74 2e 3c  defined object.<
1ccc0 2f 70 3e 0a 0a 3c 70 3e 49 66 20 79 6f 75 20 77  /p>..<p>If you w
1ccd0 61 6e 74 20 74 6f 20 75 73 65 20 61 20 6b 65 79  ant to use a key
1cce0 77 6f 72 64 20 61 73 20 61 20 6e 61 6d 65 2c 20  word as a name, 
1ccf0 79 6f 75 20 6e 65 65 64 20 74 6f 20 71 75 6f 74  you need to quot
1cd00 65 20 69 74 2e 20 20 54 68 65 72 65 0a 61 72 65  e it.  There.are
1cd10 20 74 68 72 65 65 20 77 61 79 73 20 6f 66 20 71   three ways of q
1cd20 75 6f 74 69 6e 67 20 6b 65 79 77 6f 72 64 73 20  uoting keywords 
1cd30 69 6e 20 53 51 4c 69 74 65 3a 3c 2f 70 3e 0a 0a  in SQLite:</p>..
1cd40 3c 70 3e 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e  <p>.<blockquote>
1cd50 0a 3c 74 61 62 6c 65 3e 0a 3c 74 72 3e 09 3c 74  .<table>.<tr>.<t
1cd60 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 3c  d valign="top"><
1cd70 62 3e 27 6b 65 79 77 6f 72 64 27 3c 2f 62 3e 3c  b>'keyword'</b><
1cd80 2f 74 64 3e 3c 74 64 20 77 69 64 74 68 3d 22 32  /td><td width="2
1cd90 30 22 3e 3c 2f 74 64 3e 0a 09 3c 74 64 3e 5e 41  0"></td>..<td>^A
1cda0 20 6b 65 79 77 6f 72 64 20 69 6e 20 73 69 6e 67   keyword in sing
1cdb0 6c 65 20 71 75 6f 74 65 73 20 69 73 20 61 20 73  le quotes is a s
1cdc0 74 72 69 6e 67 20 6c 69 74 65 72 61 6c 2e 3c 2f  tring literal.</
1cdd0 74 64 3e 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 09 3c  td></tr>..<tr>.<
1cde0 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e  td valign="top">
1cdf0 3c 62 3e 22 6b 65 79 77 6f 72 64 22 3c 2f 62 3e  <b>"keyword"</b>
1ce00 3c 2f 74 64 3e 3c 74 64 3e 3c 2f 74 64 3e 0a 09  </td><td></td>..
1ce10 3c 74 64 3e 5e 41 20 6b 65 79 77 6f 72 64 20 69  <td>^A keyword i
1ce20 6e 20 64 6f 75 62 6c 65 2d 71 75 6f 74 65 73 20  n double-quotes 
1ce30 69 73 20 61 6e 20 69 64 65 6e 74 69 66 69 65 72  is an identifier
1ce40 2e 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 0a 3c 74 72  .</td></tr>..<tr
1ce50 3e 09 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
1ce60 70 22 3e 3c 62 3e 26 23 39 31 3b 6b 65 79 77 6f  p"><b>&#91;keywo
1ce70 72 64 26 23 39 33 3b 3c 2f 62 3e 3c 2f 74 64 3e  rd&#93;</b></td>
1ce80 3c 74 64 3e 3c 2f 74 64 3e 0a 09 3c 74 64 3e 5e  <td></td>..<td>^
1ce90 41 20 6b 65 79 77 6f 72 64 20 65 6e 63 6c 6f 73  A keyword enclos
1cea0 65 64 20 69 6e 20 73 71 75 61 72 65 20 62 72 61  ed in square bra
1ceb0 63 6b 65 74 73 20 69 73 20 0a 20 20 20 20 20 20  ckets is .      
1cec0 20 20 61 6e 20 69 64 65 6e 74 69 66 69 65 72 2e    an identifier.
1ced0 20 20 54 68 69 73 20 69 73 20 6e 6f 74 20 73 74    This is not st
1cee0 61 6e 64 61 72 64 20 53 51 4c 2e 20 20 54 68 69  andard SQL.  Thi
1cef0 73 20 71 75 6f 74 69 6e 67 20 6d 65 63 68 61 6e  s quoting mechan
1cf00 69 73 6d 0a 20 20 20 20 20 20 20 20 69 73 20 75  ism.        is u
1cf10 73 65 64 20 62 79 20 4d 53 20 41 63 63 65 73 73  sed by MS Access
1cf20 20 61 6e 64 20 53 51 4c 20 53 65 72 76 65 72 20   and SQL Server 
1cf30 61 6e 64 20 69 73 20 69 6e 63 6c 75 64 65 64 20  and is included 
1cf40 69 6e 20 53 51 4c 69 74 65 20 66 6f 72 0a 20 20  in SQLite for.  
1cf50 20 20 20 20 20 20 63 6f 6d 70 61 74 69 62 69 6c        compatibil
1cf60 69 74 79 2e 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 0a  ity.</td></tr>..
1cf70 3c 74 72 3e 09 3c 74 64 20 76 61 6c 69 67 6e 3d  <tr>.<td valign=
1cf80 22 74 6f 70 22 3e 3c 62 3e 26 23 39 36 3b 6b 65  "top"><b>&#96;ke
1cf90 79 77 6f 72 64 26 23 39 36 3b 3c 2f 62 3e 3c 2f  yword&#96;</b></
1cfa0 74 64 3e 3c 74 64 3e 3c 2f 74 64 3e 0a 09 3c 74  td><td></td>..<t
1cfb0 64 3e 5e 41 20 6b 65 79 77 6f 72 64 20 65 6e 63  d>^A keyword enc
1cfc0 6c 6f 73 65 64 20 69 6e 20 67 72 61 76 65 20 61  losed in grave a
1cfd0 63 63 65 6e 74 73 20 28 41 53 43 49 49 20 63 6f  ccents (ASCII co
1cfe0 64 65 20 39 36 29 20 69 73 20 0a 20 20 20 20 20  de 96) is .     
1cff0 20 20 20 61 6e 20 69 64 65 6e 74 69 66 69 65 72     an identifier
1d000 2e 20 20 54 68 69 73 20 69 73 20 6e 6f 74 20 73  .  This is not s
1d010 74 61 6e 64 61 72 64 20 53 51 4c 2e 20 20 54 68  tandard SQL.  Th
1d020 69 73 20 71 75 6f 74 69 6e 67 20 6d 65 63 68 61  is quoting mecha
1d030 6e 69 73 6d 0a 20 20 20 20 20 20 20 20 69 73 20  nism.        is 
1d040 75 73 65 64 20 62 79 20 4d 79 53 51 4c 20 61 6e  used by MySQL an
1d050 64 20 69 73 20 69 6e 63 6c 75 64 65 64 20 69 6e  d is included in
1d060 20 53 51 4c 69 74 65 20 66 6f 72 0a 20 20 20 20   SQLite for.    
1d070 20 20 20 20 63 6f 6d 70 61 74 69 62 69 6c 69 74      compatibilit
1d080 79 2e 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 3c 2f 74  y.</td></tr>.</t
1d090 61 62 6c 65 3e 0a 3c 2f 62 6c 6f 63 6b 71 75 6f  able>.</blockquo
1d0a0 74 65 3e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 46 6f 72  te>.</p>..<p>For
1d0b0 20 72 65 73 69 6c 69 65 6e 63 65 20 77 68 65 6e   resilience when
1d0c0 20 63 6f 6e 66 72 6f 6e 74 65 64 20 77 69 74 68   confronted with
1d0d0 20 68 69 73 74 6f 72 69 63 61 6c 20 53 51 4c 20   historical SQL 
1d0e0 73 74 61 74 65 6d 65 6e 74 73 2c 20 53 51 4c 69  statements, SQLi
1d0f0 74 65 0a 77 69 6c 6c 20 73 6f 6d 65 74 69 6d 65  te.will sometime
1d100 73 20 62 65 6e 64 20 74 68 65 20 71 75 6f 74 69  s bend the quoti
1d110 6e 67 20 72 75 6c 65 73 20 61 62 6f 76 65 3a 3c  ng rules above:<
1d120 2f 70 3e 0a 0a 3c 75 6c 3e 0a 3c 6c 69 3e 3c 70  /p>..<ul>.<li><p
1d130 3e 5e 49 66 20 61 20 6b 65 79 77 6f 72 64 20 69  >^If a keyword i
1d140 6e 20 73 69 6e 67 6c 65 0a 71 75 6f 74 65 73 20  n single.quotes 
1d150 28 65 78 3a 20 3c 62 3e 27 6b 65 79 27 3c 2f 62  (ex: <b>'key'</b
1d160 3e 20 6f 72 20 3c 62 3e 27 67 6c 6f 62 27 3c 2f  > or <b>'glob'</
1d170 62 3e 29 20 69 73 20 75 73 65 64 20 69 6e 20 61  b>) is used in a
1d180 20 63 6f 6e 74 65 78 74 20 77 68 65 72 65 0a 61   context where.a
1d190 6e 20 69 64 65 6e 74 69 66 69 65 72 20 69 73 20  n identifier is 
1d1a0 61 6c 6c 6f 77 65 64 20 62 75 74 20 77 68 65 72  allowed but wher
1d1b0 65 20 61 20 73 74 72 69 6e 67 20 6c 69 74 65 72  e a string liter
1d1c0 61 6c 20 69 73 20 6e 6f 74 20 61 6c 6c 6f 77 65  al is not allowe
1d1d0 64 2c 20 74 68 65 6e 0a 74 68 65 20 74 6f 6b 65  d, then.the toke
1d1e0 6e 20 69 73 20 75 6e 64 65 72 73 74 6f 6f 64 20  n is understood 
1d1f0 74 6f 20 62 65 20 61 6e 20 69 64 65 6e 74 69 66  to be an identif
1d200 69 65 72 20 69 6e 73 74 65 61 64 20 6f 66 20 61  ier instead of a
1d210 20 73 74 72 69 6e 67 20 6c 69 74 65 72 61 6c 2e   string literal.
1d220 0a 3c 2f 70 3e 3c 2f 6c 69 3e 0a 0a 3c 6c 69 3e  .</p></li>..<li>
1d230 3c 70 3e 5e 49 66 20 61 20 6b 65 79 77 6f 72 64  <p>^If a keyword
1d240 20 69 6e 20 64 6f 75 62 6c 65 0a 71 75 6f 74 65   in double.quote
1d250 73 20 28 65 78 3a 20 3c 62 3e 22 6b 65 79 22 3c  s (ex: <b>"key"<
1d260 2f 62 3e 20 6f 72 20 3c 62 3e 22 67 6c 6f 62 22  /b> or <b>"glob"
1d270 3c 2f 62 3e 29 20 69 73 20 75 73 65 64 20 69 6e  </b>) is used in
1d280 20 61 20 63 6f 6e 74 65 78 74 20 77 68 65 72 65   a context where
1d290 0a 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 72 65  .it cannot be re
1d2a0 73 6f 6c 76 65 64 20 74 6f 20 61 6e 20 69 64 65  solved to an ide
1d2b0 6e 74 69 66 69 65 72 20 62 75 74 20 77 68 65 72  ntifier but wher
1d2c0 65 20 61 20 73 74 72 69 6e 67 20 6c 69 74 65 72  e a string liter
1d2d0 61 6c 0a 69 73 20 61 6c 6c 6f 77 65 64 2c 20 74  al.is allowed, t
1d2e0 68 65 6e 20 74 68 65 20 74 6f 6b 65 6e 20 69 73  hen the token is
1d2f0 20 75 6e 64 65 72 73 74 6f 6f 64 20 74 6f 20 62   understood to b
1d300 65 20 61 20 73 74 72 69 6e 67 20 6c 69 74 65 72  e a string liter
1d310 61 6c 20 69 6e 73 74 65 61 64 0a 6f 66 20 61 6e  al instead.of an
1d320 20 69 64 65 6e 74 69 66 69 65 72 2e 3c 2f 70 3e   identifier.</p>
1d330 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e 0a 0a 3c 70 3e  </li>.</ul>..<p>
1d340 50 72 6f 67 72 61 6d 6d 65 72 73 20 61 72 65 20  Programmers are 
1d350 63 61 75 74 69 6f 6e 65 64 20 6e 6f 74 20 74 6f  cautioned not to
1d360 20 75 73 65 20 74 68 65 20 74 77 6f 20 65 78 63   use the two exc
1d370 65 70 74 69 6f 6e 73 20 64 65 73 63 72 69 62 65  eptions describe
1d380 64 20 69 6e 0a 74 68 65 20 70 72 65 76 69 6f 75  d in.the previou
1d390 73 20 62 75 6c 6c 65 74 73 2e 20 20 57 65 20 65  s bullets.  We e
1d3a0 6d 70 68 61 73 69 7a 65 20 74 68 61 74 20 74 68  mphasize that th
1d3b0 65 79 20 65 78 69 73 74 20 6f 6e 6c 79 20 73 6f  ey exist only so
1d3c0 20 74 68 61 74 20 6f 6c 64 0a 61 6e 64 20 69 6c   that old.and il
1d3d0 6c 2d 66 6f 72 6d 65 64 20 53 51 4c 20 73 74 61  l-formed SQL sta
1d3e0 74 65 6d 65 6e 74 73 20 77 69 6c 6c 20 72 75 6e  tements will run
1d3f0 20 63 6f 72 72 65 63 74 6c 79 2e 20 20 46 75 74   correctly.  Fut
1d400 75 72 65 20 76 65 72 73 69 6f 6e 73 20 6f 66 0a  ure versions of.
1d410 53 51 4c 69 74 65 20 6d 69 67 68 74 20 63 68 61  SQLite might cha
1d420 6e 67 65 20 74 6f 20 72 61 69 73 65 20 65 72 72  nge to raise err
1d430 6f 72 73 20 69 6e 73 74 65 61 64 20 6f 66 20 61  ors instead of a
1d440 63 63 65 70 74 69 6e 67 20 74 68 65 20 6d 61 6c  ccepting the mal
1d450 66 6f 72 6d 65 64 0a 73 74 61 74 65 6d 65 6e 74  formed.statement
1d460 73 20 63 6f 76 65 72 65 64 20 62 79 20 74 68 65  s covered by the
1d470 20 65 78 63 65 70 74 69 6f 6e 73 20 61 62 6f 76   exceptions abov
1d480 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 0a 53 51 4c 69  e.</p>..<p>.SQLi
1d490 74 65 20 61 64 64 73 20 6e 65 77 20 6b 65 79 77  te adds new keyw
1d4a0 6f 72 64 73 20 66 72 6f 6d 20 74 69 6d 65 20 74  ords from time t
1d4b0 6f 20 74 69 6d 65 20 77 68 65 6e 20 69 74 20 74  o time when it t
1d4c0 61 6b 65 73 20 6f 6e 20 6e 65 77 20 66 65 61 74  akes on new feat
1d4d0 75 72 65 73 2e 0a 53 6f 20 74 6f 20 70 72 65 76  ures..So to prev
1d4e0 65 6e 74 20 79 6f 75 72 20 63 6f 64 65 20 66 72  ent your code fr
1d4f0 6f 6d 20 62 65 69 6e 67 20 62 72 6f 6b 65 6e 20  om being broken 
1d500 62 79 20 66 75 74 75 72 65 20 65 6e 68 61 6e 63  by future enhanc
1d510 65 6d 65 6e 74 73 2c 20 79 6f 75 20 73 68 6f 75  ements, you shou
1d520 6c 64 0a 6e 6f 72 6d 61 6c 6c 79 20 71 75 6f 74  ld.normally quot
1d530 65 20 61 6e 79 20 69 64 65 6e 74 69 66 69 65 72  e any identifier
1d540 20 74 68 61 74 20 69 73 20 61 6e 20 45 6e 67 6c   that is an Engl
1d550 69 73 68 20 6c 61 6e 67 75 61 67 65 20 77 6f 72  ish language wor
1d560 64 2c 20 65 76 65 6e 20 69 66 0a 79 6f 75 20 64  d, even if.you d
1d570 6f 20 6e 6f 74 20 68 61 76 65 20 74 6f 2e 0a 3c  o not have to..<
1d580 2f 70 3e 0a 0a 3c 70 3e 0a 54 68 65 20 6c 69 73  /p>..<p>.The lis
1d590 74 20 62 65 6c 6f 77 20 73 68 6f 77 73 20 61 6c  t below shows al
1d5a0 6c 20 70 6f 73 73 69 62 6c 65 20 6b 65 79 77 6f  l possible keywo
1d5b0 72 64 73 20 75 73 65 64 20 62 79 20 61 6e 79 20  rds used by any 
1d5c0 62 75 69 6c 64 20 6f 66 0a 53 51 4c 69 74 65 20  build of.SQLite 
1d5d0 72 65 67 61 72 64 6c 65 73 73 20 6f 66 20 5b 63  regardless of [c
1d5e0 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
1d5f0 6f 6e 73 5d 2e 20 20 0a 4d 6f 73 74 20 72 65 61  ons].  .Most rea
1d600 73 6f 6e 61 62 6c 65 20 63 6f 6e 66 69 67 75 72  sonable configur
1d610 61 74 69 6f 6e 73 20 75 73 65 20 6d 6f 72 65 20  ations use more 
1d620 6f 72 20 61 6c 6c 20 6f 66 20 74 68 65 73 65 20  or all of these 
1d630 6b 65 79 77 6f 72 64 73 2c 0a 62 75 74 20 73 6f  keywords,.but so
1d640 6d 65 20 6b 65 79 77 6f 72 64 73 20 6d 61 79 20  me keywords may 
1d650 62 65 20 6f 6d 69 74 74 65 64 20 77 68 65 6e 20  be omitted when 
1d660 53 51 4c 20 6c 61 6e 67 75 61 67 65 20 66 65 61  SQL language fea
1d670 74 75 72 65 73 20 61 72 65 0a 64 69 73 61 62 6c  tures are.disabl
1d680 65 64 2e 0a 5e 28 52 65 67 61 72 64 6c 65 73 73  ed..^(Regardless
1d690 20 6f 66 20 74 68 65 20 63 6f 6d 70 69 6c 65 2d   of the compile-
1d6a0 74 69 6d 65 20 63 6f 6e 66 69 67 75 72 61 74 69  time configurati
1d6b0 6f 6e 2c 20 61 6e 79 20 69 64 65 6e 74 69 66 69  on, any identifi
1d6c0 65 72 20 74 68 61 74 20 69 73 20 6e 6f 74 20 6f  er that is not o
1d6d0 6e 0a 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20  n.the following 
1d6e0 3c 74 63 6c 3e 68 64 5f 70 75 74 73 20 5b 6c 6c  <tcl>hd_puts [ll
1d6f0 65 6e 67 74 68 20 24 6b 65 79 77 6f 72 64 5f 6c  ength $keyword_l
1d700 69 73 74 5d 3c 2f 74 63 6c 3e 20 65 6c 65 6d 65  ist]</tcl> eleme
1d710 6e 74 0a 6c 69 73 74 20 69 73 20 6e 6f 74 20 61  nt.list is not a
1d720 20 6b 65 79 77 6f 72 64 20 74 6f 20 74 68 65 20   keyword to the 
1d730 53 51 4c 20 70 61 72 73 65 72 20 69 6e 20 53 51  SQL parser in SQ
1d740 4c 69 74 65 3a 0a 3c 2f 70 3e 0a 0a 3c 62 6c 6f  Lite:.</p>..<blo
1d750 63 6b 71 75 6f 74 65 3e 0a 3c 74 61 62 6c 65 20  ckquote>.<table 
1d760 77 69 64 74 68 3d 22 31 30 30 25 22 3e 3c 74 72  width="100%"><tr
1d770 3e 0a 3c 74 64 20 61 6c 69 67 6e 3d 22 6c 65 66  >.<td align="lef
1d780 74 22 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20  t" valign="top" 
1d790 77 69 64 74 68 3d 22 32 30 25 22 3e 0a 3c 74 63  width="20%">.<tc
1d7a0 6c 3e 0a 73 65 74 20 6e 20 5b 6c 6c 65 6e 67 74  l>.set n [llengt
1d7b0 68 20 24 6b 65 79 77 6f 72 64 5f 6c 69 73 74 5d  h $keyword_list]
1d7c0 0a 73 65 74 20 6e 43 6f 6c 20 35 0a 73 65 74 20  .set nCol 5.set 
1d7d0 6e 52 6f 77 20 5b 65 78 70 72 20 7b 28 24 6e 2b  nRow [expr {($n+
1d7e0 24 6e 43 6f 6c 2d 31 29 2f 24 6e 43 6f 6c 7d 5d  $nCol-1)/$nCol}]
1d7f0 0a 73 65 74 20 69 20 30 0a 66 6f 72 65 61 63 68  .set i 0.foreach
1d800 20 77 6f 72 64 20 24 6b 65 79 77 6f 72 64 5f 6c   word $keyword_l
1d810 69 73 74 20 7b 0a 20 20 69 66 20 7b 24 69 3d 3d  ist {.  if {$i==
1d820 24 6e 52 6f 77 7d 20 7b 0a 20 20 20 20 68 64 5f  $nRow} {.    hd_
1d830 70 75 74 73 20 22 3c 2f 74 64 3e 3c 74 64 20 76  puts "</td><td v
1d840 61 6c 69 67 6e 3d 5c 22 74 6f 70 5c 22 20 61 6c  align=\"top\" al
1d850 69 67 6e 3d 5c 22 6c 65 66 74 5c 22 20 77 69 64  ign=\"left\" wid
1d860 74 68 3d 5c 22 32 30 25 5c 22 3e 22 0a 20 20 20  th=\"20%\">".   
1d870 20 73 65 74 20 69 20 31 0a 20 20 7d 20 65 6c 73   set i 1.  } els
1d880 65 20 7b 0a 20 20 20 20 69 6e 63 72 20 69 0a 20  e {.    incr i. 
1d890 20 7d 0a 20 20 68 64 5f 70 75 74 73 20 22 24 77   }.  hd_puts "$w
1d8a0 6f 72 64 3c 62 72 3e 5c 6e 22 0a 7d 0a 3c 2f 74  ord<br>\n".}.</t
1d8b0 63 6c 3e 0a 3c 2f 74 64 3e 3c 2f 74 72 3e 3c 2f  cl>.</td></tr></
1d8c0 74 61 62 6c 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f  table></blockquo
1d8d0 74 65 3e 29 5e 0a                                te>)^.