Documentation Source Text

Hex Artifact Content
Login

Artifact f8ff4a67bf87e5044b9fbb140f110c8b88003140:


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 65 78 65 63  ], [sqlite3_exec
0980: 28 29 5d 2c 20 61 6e 64 20 5b 73 71 6c 69 74 65  ()], and [sqlite
0990: 33 5f 67 65 74 5f 74 61 62 6c 65 28 29 5d 20 61  3_get_table()] a
09a0: 63 63 65 70 74 0a 61 6e 20 53 51 4c 20 73 74 61  ccept.an SQL sta
09b0: 74 65 6d 65 6e 74 20 6c 69 73 74 20 28 73 71 6c  tement list (sql
09c0: 2d 73 74 6d 74 2d 6c 69 73 74 29 20 77 68 69 63  -stmt-list) whic
09d0: 68 20 69 73 20 61 20 73 65 6d 69 63 6f 6c 6f 6e  h is a semicolon
09e0: 2d 73 65 70 61 72 61 74 65 64 0a 6c 69 73 74 20  -separated.list 
09f0: 6f 66 20 73 74 61 74 65 6d 65 6e 74 73 2e 3c 2f  of statements.</
0a00: 70 3e 0a 0a 3c 74 63 6c 3e 42 75 62 62 6c 65 44  p>..<tcl>BubbleD
0a10: 69 61 67 72 61 6d 20 73 71 6c 2d 73 74 6d 74 2d  iagram sql-stmt-
0a20: 6c 69 73 74 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 45  list</tcl>..<p>E
0a30: 61 63 68 20 53 51 4c 20 73 74 61 74 65 6d 65 6e  ach SQL statemen
0a40: 74 20 69 6e 20 74 68 65 20 73 74 61 74 65 6d 65  t in the stateme
0a50: 6e 74 20 6c 69 73 74 20 69 73 20 61 6e 20 69 6e  nt list is an in
0a60: 73 74 61 6e 63 65 20 6f 66 20 74 68 65 0a 66 6f  stance of the.fo
0a70: 6c 6c 6f 77 69 6e 67 3a 3c 2f 70 3e 0a 0a 3c 74  llowing:</p>..<t
0a80: 63 6c 3e 42 75 62 62 6c 65 44 69 61 67 72 61 6d  cl>BubbleDiagram
0a90: 20 73 71 6c 2d 73 74 6d 74 3c 2f 74 63 6c 3e 0a   sql-stmt</tcl>.
0aa0: 0a 3c 74 63 6c 3e 0a 70 72 6f 63 20 4f 70 65 72  .<tcl>.proc Oper
0ab0: 61 74 6f 72 20 7b 6e 61 6d 65 7d 20 7b 0a 20 20  ator {name} {.  
0ac0: 72 65 74 75 72 6e 20 22 3c 66 6f 6e 74 20 63 6f  return "<font co
0ad0: 6c 6f 72 3d 5c 22 23 32 63 32 63 66 30 5c 22 3e  lor=\"#2c2cf0\">
0ae0: 3c 62 69 67 3e 24 6e 61 6d 65 3c 2f 62 69 67 3e  <big>$name</big>
0af0: 3c 2f 66 6f 6e 74 3e 22 0a 7d 0a 70 72 6f 63 20  </font>".}.proc 
0b00: 4e 6f 6e 74 65 72 6d 69 6e 61 6c 20 7b 6e 61 6d  Nonterminal {nam
0b10: 65 7d 20 7b 0a 20 20 72 65 74 75 72 6e 20 22 3c  e} {.  return "<
0b20: 69 3e 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 5c 22  i><font color=\"
0b30: 23 66 66 33 34 33 34 5c 22 3e 24 6e 61 6d 65 3c  #ff3434\">$name<
0b40: 2f 66 6f 6e 74 3e 3c 2f 69 3e 22 0a 7d 0a 70 72  /font></i>".}.pr
0b50: 6f 63 20 4b 65 79 77 6f 72 64 20 7b 6e 61 6d 65  oc Keyword {name
0b60: 7d 20 7b 0a 20 20 72 65 74 75 72 6e 20 22 3c 66  } {.  return "<f
0b70: 6f 6e 74 20 63 6f 6c 6f 72 3d 5c 22 23 32 63 32  ont color=\"#2c2
0b80: 63 66 30 5c 22 3e 24 6e 61 6d 65 3c 2f 66 6f 6e  cf0\">$name</fon
0b90: 74 3e 22 0a 7d 0a 70 72 6f 63 20 45 78 61 6d 70  t>".}.proc Examp
0ba0: 6c 65 20 7b 74 65 78 74 7d 20 7b 0a 20 20 68 64  le {text} {.  hd
0bb0: 5f 70 75 74 73 20 22 3c 62 6c 6f 63 6b 71 75 6f  _puts "<blockquo
0bc0: 74 65 3e 3c 70 72 65 3e 24 74 65 78 74 3c 2f 70  te><pre>$text</p
0bd0: 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e  re></blockquote>
0be0: 22 0a 7d 0a 0a 70 72 6f 63 20 53 65 63 74 69 6f  ".}..proc Sectio
0bf0: 6e 20 7b 6e 61 6d 65 20 6c 61 62 65 6c 20 6b 65  n {name label ke
0c00: 79 77 6f 72 64 73 7d 20 7b 0a 20 20 67 6c 6f 62  ywords} {.  glob
0c10: 61 6c 20 44 4f 43 0a 20 20 68 64 5f 63 6c 6f 73  al DOC.  hd_clos
0c20: 65 5f 6d 61 69 6e 0a 20 20 68 64 5f 6f 70 65 6e  e_main.  hd_open
0c30: 5f 6d 61 69 6e 20 6c 61 6e 67 5f 24 6c 61 62 65  _main lang_$labe
0c40: 6c 2e 68 74 6d 6c 0a 20 20 68 64 5f 68 65 61 64  l.html.  hd_head
0c50: 65 72 20 22 53 51 4c 69 74 65 20 51 75 65 72 79  er "SQLite Query
0c60: 20 4c 61 6e 67 75 61 67 65 3a 20 24 6e 61 6d 65   Language: $name
0c70: 22 20 24 44 4f 43 2f 70 61 67 65 73 2f 6c 61 6e  " $DOC/pages/lan
0c80: 67 2e 69 6e 0a 20 20 65 76 61 6c 20 68 64 5f 6b  g.in.  eval hd_k
0c90: 65 79 77 6f 72 64 73 20 24 6b 65 79 77 6f 72 64  eywords $keyword
0ca0: 73 0a 20 20 69 66 20 7b 5b 6c 73 65 61 72 63 68  s.  if {[lsearch
0cb0: 20 24 6b 65 79 77 6f 72 64 73 20 24 6e 61 6d 65   $keywords $name
0cc0: 5d 20 3d 3d 20 2d 31 20 26 26 20 5b 6c 73 65 61  ] == -1 && [lsea
0cd0: 72 63 68 20 24 6b 65 79 77 6f 72 64 73 20 2a 24  rch $keywords *$
0ce0: 6e 61 6d 65 5d 20 3d 3d 20 2d 31 7d 20 7b 0a 20  name] == -1} {. 
0cf0: 20 20 20 65 76 61 6c 20 68 64 5f 6b 65 79 77 6f     eval hd_keywo
0d00: 72 64 73 20 7b 20 24 6e 61 6d 65 20 7d 0a 20 20  rds { $name }.  
0d10: 7d 0a 20 20 68 64 5f 70 75 74 73 20 7b 3c 68 31  }.  hd_puts {<h1
0d20: 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e   align="center">
0d30: 53 51 4c 20 41 73 20 55 6e 64 65 72 73 74 6f 6f  SQL As Understoo
0d40: 64 20 42 79 20 53 51 4c 69 74 65 3c 2f 68 31 3e  d By SQLite</h1>
0d50: 7d 0a 20 20 68 64 5f 70 75 74 73 20 7b 3c 70 3e  }.  hd_puts {<p>
0d60: 3c 61 20 68 72 65 66 3d 22 6c 61 6e 67 2e 68 74  <a href="lang.ht
0d70: 6d 6c 22 3e 5b 54 6f 70 5d 3c 2f 61 3e 3c 2f 70  ml">[Top]</a></p
0d80: 3e 7d 0a 20 20 68 64 5f 70 75 74 73 20 22 3c 68  >}.  hd_puts "<h
0d90: 32 3e 24 6e 61 6d 65 3c 2f 68 32 3e 22 0a 7d 0a  2>$name</h2>".}.
0da0: 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  .###############
0db0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
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: 0a 53 65 63 74 69 6f 6e 20 7b 41 4c 54 45 52 20  .Section {ALTER 
0e00: 54 41 42 4c 45 7d 20 61 6c 74 65 72 74 61 62 6c  TABLE} altertabl
0e10: 65 20 7b 7b 41 4c 54 45 52 20 54 41 42 4c 45 7d  e {{ALTER TABLE}
0e20: 20 7b 2a 41 4c 54 45 52 7d 7d 0a 0a 42 75 62 62   {*ALTER}}..Bubb
0e30: 6c 65 44 69 61 67 72 61 6d 20 61 6c 74 65 72 2d  leDiagram alter-
0e40: 74 61 62 6c 65 2d 73 74 6d 74 20 31 0a 3c 2f 74  table-stmt 1.</t
0e50: 63 6c 3e 0a 0a 3c 70 3e 53 51 4c 69 74 65 20 73  cl>..<p>SQLite s
0e60: 75 70 70 6f 72 74 73 20 61 20 6c 69 6d 69 74 65  upports a limite
0e70: 64 20 73 75 62 73 65 74 20 6f 66 20 41 4c 54 45  d subset of ALTE
0e80: 52 20 54 41 42 4c 45 2e 0a 54 68 65 20 41 4c 54  R TABLE..The ALT
0e90: 45 52 20 54 41 42 4c 45 20 63 6f 6d 6d 61 6e 64  ER TABLE command
0ea0: 20 69 6e 20 53 51 4c 69 74 65 20 61 6c 6c 6f 77   in SQLite allow
0eb0: 73 20 74 68 65 20 75 73 65 72 20 74 6f 20 72 65  s the user to re
0ec0: 6e 61 6d 65 20 61 20 74 61 62 6c 65 0a 6f 72 20  name a table.or 
0ed0: 74 6f 20 61 64 64 20 61 20 6e 65 77 20 63 6f 6c  to add a new col
0ee0: 75 6d 6e 20 74 6f 20 61 6e 20 65 78 69 73 74 69  umn to an existi
0ef0: 6e 67 20 74 61 62 6c 65 2e 20 49 74 20 69 73 20  ng table. It is 
0f00: 6e 6f 74 20 70 6f 73 73 69 62 6c 65 0a 74 6f 20  not possible.to 
0f10: 72 65 6e 61 6d 65 20 61 20 63 6f 6c 75 6d 6e 2c  rename a column,
0f20: 20 72 65 6d 6f 76 65 20 61 20 63 6f 6c 75 6d 6e   remove a column
0f30: 2c 20 6f 72 20 61 64 64 20 6f 72 20 72 65 6d 6f  , or add or remo
0f40: 76 65 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 66  ve constraints f
0f50: 72 6f 6d 20 61 20 74 61 62 6c 65 2e 0a 3c 2f 70  rom a table..</p
0f60: 3e 0a 0a 3c 70 3e 20 5e 28 54 68 65 20 52 45 4e  >..<p> ^(The REN
0f70: 41 4d 45 20 54 4f 20 73 79 6e 74 61 78 20 69 73  AME TO syntax is
0f80: 20 75 73 65 64 20 74 6f 20 72 65 6e 61 6d 65 20   used to rename 
0f90: 74 68 65 20 74 61 62 6c 65 20 69 64 65 6e 74 69  the table identi
0fa0: 66 69 65 64 20 62 79 20 0a 3c 69 3e 26 23 39 31  fied by .<i>&#91
0fb0: 3b 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 2e 26  ;database-name.&
0fc0: 23 39 33 3b 74 61 62 6c 65 2d 6e 61 6d 65 3c 2f  #93;table-name</
0fd0: 69 3e 20 74 6f 20 3c 69 3e 6e 65 77 2d 74 61 62  i> to <i>new-tab
0fe0: 6c 65 2d 6e 61 6d 65 3c 2f 69 3e 2e 29 5e 0a 54  le-name</i>.)^.T
0ff0: 68 69 73 20 63 6f 6d 6d 61 6e 64 20 0a 63 61 6e  his command .can
1000: 6e 6f 74 20 62 65 20 75 73 65 64 20 74 6f 20 6d  not be used to m
1010: 6f 76 65 20 61 20 74 61 62 6c 65 20 62 65 74 77  ove a table betw
1020: 65 65 6e 20 61 74 74 61 63 68 65 64 20 64 61 74  een attached dat
1030: 61 62 61 73 65 73 2c 20 6f 6e 6c 79 20 74 6f 20  abases, only to 
1040: 72 65 6e 61 6d 65 20 0a 61 20 74 61 62 6c 65 20  rename .a table 
1050: 77 69 74 68 69 6e 20 74 68 65 20 73 61 6d 65 20  within the same 
1060: 64 61 74 61 62 61 73 65 2e 3c 2f 70 3e 0a 0a 3c  database.</p>..<
1070: 70 3e 20 5e 49 66 20 74 68 65 20 74 61 62 6c 65  p> ^If the table
1080: 20 62 65 69 6e 67 20 72 65 6e 61 6d 65 64 20 68   being renamed h
1090: 61 73 20 74 72 69 67 67 65 72 73 20 6f 72 20 69  as triggers or i
10a0: 6e 64 69 63 65 73 2c 20 74 68 65 6e 20 74 68 65  ndices, then the
10b0: 73 65 20 72 65 6d 61 69 6e 0a 61 74 74 61 63 68  se remain.attach
10c0: 65 64 20 74 6f 20 74 68 65 20 74 61 62 6c 65 20  ed to the table 
10d0: 61 66 74 65 72 20 69 74 20 68 61 73 20 62 65 65  after it has bee
10e0: 6e 20 72 65 6e 61 6d 65 64 2e 20 20 5e 48 6f 77  n renamed.  ^How
10f0: 65 76 65 72 2c 20 69 66 20 74 68 65 72 65 20 61  ever, if there a
1100: 72 65 0a 61 6e 79 20 76 69 65 77 20 64 65 66 69  re.any view defi
1110: 6e 69 74 69 6f 6e 73 2c 20 6f 72 20 73 74 61 74  nitions, or stat
1120: 65 6d 65 6e 74 73 20 65 78 65 63 75 74 65 64 20  ements executed 
1130: 62 79 20 74 72 69 67 67 65 72 73 20 74 68 61 74  by triggers that
1140: 20 72 65 66 65 72 20 74 6f 0a 74 68 65 20 74 61   refer to.the ta
1150: 62 6c 65 20 62 65 69 6e 67 20 72 65 6e 61 6d 65  ble being rename
1160: 64 2c 20 74 68 65 73 65 20 61 72 65 20 6e 6f 74  d, these are not
1170: 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 6d   automatically m
1180: 6f 64 69 66 69 65 64 20 74 6f 20 75 73 65 20 74  odified to use t
1190: 68 65 20 6e 65 77 0a 74 61 62 6c 65 20 6e 61 6d  he new.table nam
11a0: 65 2e 20 49 66 20 74 68 69 73 20 69 73 20 72 65  e. If this is re
11b0: 71 75 69 72 65 64 2c 20 74 68 65 20 74 72 69 67  quired, the trig
11c0: 67 65 72 73 20 6f 72 20 76 69 65 77 20 64 65 66  gers or view def
11d0: 69 6e 69 74 69 6f 6e 73 20 6d 75 73 74 20 62 65  initions must be
11e0: 0a 64 72 6f 70 70 65 64 20 61 6e 64 20 72 65 63  .dropped and rec
11f0: 72 65 61 74 65 64 20 74 6f 20 75 73 65 20 74 68  reated to use th
1200: 65 20 6e 65 77 20 74 61 62 6c 65 20 6e 61 6d 65  e new table name
1210: 20 62 79 20 68 61 6e 64 2e 0a 3c 2f 70 3e 0a 0a   by hand..</p>..
1220: 3c 70 3e 5e 49 66 20 5b 66 6f 72 65 69 67 6e 20  <p>^If [foreign 
1230: 6b 65 79 20 63 6f 6e 73 74 72 61 69 6e 74 73 5d  key constraints]
1240: 20 61 72 65 20 0a 5b 66 6f 72 65 69 67 6e 5f 6b   are .[foreign_k
1250: 65 79 73 20 70 72 61 67 6d 61 20 7c 20 65 6e 61  eys pragma | ena
1260: 62 6c 65 64 5d 20 77 68 65 6e 20 61 20 74 61 62  bled] when a tab
1270: 6c 65 20 69 73 20 72 65 6e 61 6d 65 64 2c 20 74  le is renamed, t
1280: 68 65 6e 20 61 6e 79 0a 5b 66 6f 72 65 69 67 6e  hen any.[foreign
1290: 2d 6b 65 79 2d 63 6c 61 75 73 65 20 7c 20 52 45  -key-clause | RE
12a0: 46 45 52 45 4e 43 45 53 20 63 6c 61 75 73 65 73  FERENCES clauses
12b0: 5d 20 69 6e 20 61 6e 79 20 74 61 62 6c 65 20 28  ] in any table (
12c0: 65 69 74 68 65 72 20 74 68 65 0a 74 61 62 6c 65  either the.table
12d0: 20 62 65 69 6e 67 20 72 65 6e 61 6d 65 64 20 6f   being renamed o
12e0: 72 20 73 6f 6d 65 20 6f 74 68 65 72 20 74 61 62  r some other tab
12f0: 6c 65 29 0a 74 68 61 74 20 72 65 66 65 72 20 74  le).that refer t
1300: 6f 20 74 68 65 20 74 61 62 6c 65 20 62 65 69 6e  o the table bein
1310: 67 20 72 65 6e 61 6d 65 64 20 61 72 65 20 6d 6f  g renamed are mo
1320: 64 69 66 69 65 64 20 74 6f 20 72 65 66 65 72 20  dified to refer 
1330: 0a 74 6f 20 74 68 65 20 72 65 6e 61 6d 65 64 20  .to the renamed 
1340: 74 61 62 6c 65 20 62 79 20 69 74 73 20 6e 65 77  table by its new
1350: 20 6e 61 6d 65 2e 0a 0a 3c 70 3e 20 5e 54 68 65   name...<p> ^The
1360: 20 41 44 44 20 43 4f 4c 55 4d 4e 20 73 79 6e 74   ADD COLUMN synt
1370: 61 78 0a 69 73 20 75 73 65 64 20 74 6f 20 61 64  ax.is used to ad
1380: 64 20 61 20 6e 65 77 20 63 6f 6c 75 6d 6e 20 74  d a new column t
1390: 6f 20 61 6e 20 65 78 69 73 74 69 6e 67 20 74 61  o an existing ta
13a0: 62 6c 65 2e 0a 5e 54 68 65 20 6e 65 77 20 63 6f  ble..^The new co
13b0: 6c 75 6d 6e 20 69 73 20 61 6c 77 61 79 73 20 61  lumn is always a
13c0: 70 70 65 6e 64 65 64 20 74 6f 20 74 68 65 20 65  ppended to the e
13d0: 6e 64 20 6f 66 20 74 68 65 20 6c 69 73 74 20 6f  nd of the list o
13e0: 66 20 65 78 69 73 74 69 6e 67 20 63 6f 6c 75 6d  f existing colum
13f0: 6e 73 2e 0a 54 68 65 20 5b 63 6f 6c 75 6d 6e 2d  ns..The [column-
1400: 64 65 66 5d 20 72 75 6c 65 20 64 65 66 69 6e 65  def] rule define
1410: 73 20 74 68 65 20 63 68 61 72 61 63 74 65 72 69  s the characteri
1420: 73 74 69 63 73 20 6f 66 20 74 68 65 20 6e 65 77  stics of the new
1430: 20 63 6f 6c 75 6d 6e 2e 0a 5e 28 54 68 65 20 6e   column..^(The n
1440: 65 77 20 63 6f 6c 75 6d 6e 20 6d 61 79 20 74 61  ew column may ta
1450: 6b 65 20 61 6e 79 20 6f 66 20 74 68 65 20 66 6f  ke any of the fo
1460: 72 6d 73 20 70 65 72 6d 69 73 73 61 62 6c 65 20  rms permissable 
1470: 69 6e 20 61 20 5b 43 52 45 41 54 45 20 54 41 42  in a [CREATE TAB
1480: 4c 45 5d 0a 73 74 61 74 65 6d 65 6e 74 2c 20 77  LE].statement, w
1490: 69 74 68 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e  ith the followin
14a0: 67 20 72 65 73 74 72 69 63 74 69 6f 6e 73 3a 29  g restrictions:)
14b0: 5e 0a 3c 75 6c 3e 0a 3c 6c 69 3e 5e 54 68 65 20  ^.<ul>.<li>^The 
14c0: 63 6f 6c 75 6d 6e 20 6d 61 79 20 6e 6f 74 20 68  column may not h
14d0: 61 76 65 20 61 20 50 52 49 4d 41 52 59 20 4b 45  ave a PRIMARY KE
14e0: 59 20 6f 72 20 55 4e 49 51 55 45 20 63 6f 6e 73  Y or UNIQUE cons
14f0: 74 72 61 69 6e 74 2e 3c 2f 6c 69 3e 0a 3c 6c 69  traint.</li>.<li
1500: 3e 5e 54 68 65 20 63 6f 6c 75 6d 6e 20 6d 61 79  >^The column may
1510: 20 6e 6f 74 20 68 61 76 65 20 61 20 64 65 66 61   not have a defa
1520: 75 6c 74 20 76 61 6c 75 65 20 6f 66 20 43 55 52  ult value of CUR
1530: 52 45 4e 54 5f 54 49 4d 45 2c 20 43 55 52 52 45  RENT_TIME, CURRE
1540: 4e 54 5f 44 41 54 45 20 0a 20 20 20 20 6f 72 20  NT_DATE .    or 
1550: 43 55 52 52 45 4e 54 5f 54 49 4d 45 53 54 41 4d  CURRENT_TIMESTAM
1560: 50 2e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 5e 49 66 20  P.</li>.<li>^If 
1570: 61 20 4e 4f 54 20 4e 55 4c 4c 20 63 6f 6e 73 74  a NOT NULL const
1580: 72 61 69 6e 74 20 69 73 20 73 70 65 63 69 66 69  raint is specifi
1590: 65 64 2c 20 74 68 65 6e 20 74 68 65 20 63 6f 6c  ed, then the col
15a0: 75 6d 6e 20 6d 75 73 74 20 68 61 76 65 20 61 0a  umn must have a.
15b0: 20 20 20 20 64 65 66 61 75 6c 74 20 76 61 6c 75      default valu
15c0: 65 20 6f 74 68 65 72 20 74 68 61 6e 20 4e 55 4c  e other than NUL
15d0: 4c 2e 0a 3c 6c 69 3e 5e 49 66 20 5b 66 6f 72 65  L..<li>^If [fore
15e0: 69 67 6e 20 6b 65 79 20 63 6f 6e 73 74 72 61 69  ign key constrai
15f0: 6e 74 73 5d 20 61 72 65 20 5b 66 6f 72 65 69 67  nts] are [foreig
1600: 6e 5f 6b 65 79 73 20 70 72 61 67 6d 61 20 7c 20  n_keys pragma | 
1610: 65 6e 61 62 6c 65 64 5d 20 61 6e 64 0a 20 20 20  enabled] and.   
1620: 20 61 20 63 6f 6c 75 6d 6e 20 77 69 74 68 20 61   a column with a
1630: 20 5b 66 6f 72 65 69 67 6e 2d 6b 65 79 2d 63 6c   [foreign-key-cl
1640: 61 75 73 65 20 7c 20 52 45 46 45 52 45 4e 43 45  ause | REFERENCE
1650: 53 20 63 6c 61 75 73 65 5d 0a 20 20 20 20 69 73  S clause].    is
1660: 20 61 64 64 65 64 2c 20 74 68 65 20 63 6f 6c 75   added, the colu
1670: 6d 6e 20 6d 75 73 74 20 68 61 76 65 20 61 20 64  mn must have a d
1680: 65 66 61 75 6c 74 20 76 61 6c 75 65 20 6f 66 20  efault value of 
1690: 4e 55 4c 4c 2e 0a 3c 2f 75 6c 3e 0a 0a 3c 70 3e  NULL..</ul>..<p>
16a0: 5e 4e 6f 74 65 20 61 6c 73 6f 20 74 68 61 74 20  ^Note also that 
16b0: 77 68 65 6e 20 61 64 64 69 6e 67 20 61 20 43 48  when adding a CH
16c0: 45 43 4b 20 63 6f 6e 73 74 72 61 69 6e 74 2c 20  ECK constraint, 
16d0: 74 68 65 20 43 48 45 43 4b 20 63 6f 6e 73 74 72  the CHECK constr
16e0: 61 69 6e 74 0a 69 73 20 6e 6f 74 20 74 65 73 74  aint.is not test
16f0: 65 64 20 61 67 61 69 6e 73 74 20 70 72 65 65 78  ed against preex
1700: 69 73 74 69 6e 67 20 72 6f 77 73 20 6f 66 20 74  isting rows of t
1710: 68 65 20 74 61 62 6c 65 2e 0a 5e 54 68 69 73 20  he table..^This 
1720: 63 61 6e 20 72 65 73 75 6c 74 20 69 6e 20 61 20  can result in a 
1730: 74 61 62 6c 65 20 74 68 61 74 20 63 6f 6e 74 61  table that conta
1740: 69 6e 73 20 64 61 74 61 20 74 68 61 74 0a 69 73  ins data that.is
1750: 20 69 6e 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 66   in violation of
1760: 20 74 68 65 20 43 48 45 43 4b 20 63 6f 6e 73 74   the CHECK const
1770: 72 61 69 6e 74 2e 20 20 46 75 74 75 72 65 20 76  raint.  Future v
1780: 65 72 73 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74  ersions of SQLit
1790: 65 20 6d 69 67 68 74 0a 63 68 61 6e 67 65 20 74  e might.change t
17a0: 6f 20 76 61 6c 69 64 61 74 65 20 43 48 45 43 4b  o validate CHECK
17b0: 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 61 73 20   constraints as 
17c0: 74 68 65 79 20 61 72 65 20 61 64 64 65 64 2e 3c  they are added.<
17d0: 2f 70 3e 0a 0a 3c 70 3e 20 5e 54 68 65 20 65 78  /p>..<p> ^The ex
17e0: 65 63 75 74 69 6f 6e 20 74 69 6d 65 20 6f 66 20  ecution time of 
17f0: 74 68 65 20 41 4c 54 45 52 20 54 41 42 4c 45 20  the ALTER TABLE 
1800: 63 6f 6d 6d 61 6e 64 20 69 73 20 69 6e 64 65 70  command is indep
1810: 65 6e 64 65 6e 74 20 6f 66 0a 74 68 65 20 61 6d  endent of.the am
1820: 6f 75 6e 74 20 6f 66 20 64 61 74 61 20 69 6e 20  ount of data in 
1830: 74 68 65 20 74 61 62 6c 65 2e 20 20 54 68 65 20  the table.  The 
1840: 41 4c 54 45 52 20 54 41 42 4c 45 20 63 6f 6d 6d  ALTER TABLE comm
1850: 61 6e 64 20 72 75 6e 73 20 61 73 20 71 75 69 63  and runs as quic
1860: 6b 6c 79 0a 6f 6e 20 61 20 74 61 62 6c 65 20 77  kly.on a table w
1870: 69 74 68 20 31 30 20 6d 69 6c 6c 69 6f 6e 20 72  ith 10 million r
1880: 6f 77 73 20 61 73 20 69 74 20 64 6f 65 73 20 6f  ows as it does o
1890: 6e 20 61 20 74 61 62 6c 65 20 77 69 74 68 20 31  n a table with 1
18a0: 20 72 6f 77 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 41   row..</p>..<p>A
18b0: 66 74 65 72 20 41 44 44 20 43 4f 4c 55 4d 4e 20  fter ADD COLUMN 
18c0: 68 61 73 20 62 65 65 6e 20 72 75 6e 20 6f 6e 20  has been run on 
18d0: 61 20 64 61 74 61 62 61 73 65 2c 20 74 68 61 74  a database, that
18e0: 20 64 61 74 61 62 61 73 65 20 77 69 6c 6c 20 6e   database will n
18f0: 6f 74 0a 62 65 20 72 65 61 64 61 62 6c 65 20 62  ot.be readable b
1900: 79 20 53 51 4c 69 74 65 20 76 65 72 73 69 6f 6e  y SQLite version
1910: 20 33 2e 31 2e 33 20 61 6e 64 20 65 61 72 6c 69   3.1.3 and earli
1920: 65 72 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23  er.</p>..<tcl>.#
1930: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1940: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1950: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1960: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1970: 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 53 65  #############.Se
1980: 63 74 69 6f 6e 20 7b 41 4e 41 4c 59 5a 45 7d 20  ction {ANALYZE} 
1990: 61 6e 61 6c 79 7a 65 20 41 4e 41 4c 59 5a 45 0a  analyze ANALYZE.
19a0: 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 61  .BubbleDiagram a
19b0: 6e 61 6c 79 7a 65 2d 73 74 6d 74 20 31 0a 3c 2f  nalyze-stmt 1.</
19c0: 74 63 6c 3e 0a 0a 3c 70 3e 20 5e 54 68 65 20 41  tcl>..<p> ^The A
19d0: 4e 41 4c 59 5a 45 20 63 6f 6d 6d 61 6e 64 20 67  NALYZE command g
19e0: 61 74 68 65 72 73 20 73 74 61 74 69 73 74 69 63  athers statistic
19f0: 73 20 61 62 6f 75 74 20 69 6e 64 69 63 65 73 20  s about indices 
1a00: 61 6e 64 20 73 74 6f 72 65 73 20 74 68 65 6d 0a  and stores them.
1a10: 69 6e 20 61 20 73 70 65 63 69 61 6c 20 74 61 62  in a special tab
1a20: 6c 65 73 20 69 6e 20 74 68 65 20 64 61 74 61 62  les in the datab
1a30: 61 73 65 20 77 68 65 72 65 20 74 68 65 20 71 75  ase where the qu
1a40: 65 72 79 20 6f 70 74 69 6d 69 7a 65 72 20 63 61  ery optimizer ca
1a50: 6e 20 75 73 65 0a 74 68 65 6d 20 74 6f 20 68 65  n use.them to he
1a60: 6c 70 20 6d 61 6b 65 20 62 65 74 74 65 72 20 69  lp make better i
1a70: 6e 64 65 78 20 63 68 6f 69 63 65 73 2e 0a 5e 49  ndex choices..^I
1a80: 66 20 6e 6f 20 61 72 67 75 6d 65 6e 74 73 20 61  f no arguments a
1a90: 72 65 20 67 69 76 65 6e 2c 20 61 6c 6c 20 69 6e  re given, all in
1aa0: 64 69 63 65 73 20 69 6e 20 61 6c 6c 20 61 74 74  dices in all att
1ab0: 61 63 68 65 64 20 64 61 74 61 62 61 73 65 73 20  ached databases 
1ac0: 61 72 65 0a 61 6e 61 6c 79 7a 65 64 2e 20 20 5e  are.analyzed.  ^
1ad0: 49 66 20 61 20 64 61 74 61 62 61 73 65 20 6e 61  If a database na
1ae0: 6d 65 20 69 73 20 67 69 76 65 6e 20 61 73 20 74  me is given as t
1af0: 68 65 20 61 72 67 75 6d 65 6e 74 2c 20 61 6c 6c  he argument, all
1b00: 20 69 6e 64 69 63 65 73 0a 69 6e 20 74 68 61 74   indices.in that
1b10: 20 6f 6e 65 20 64 61 74 61 62 61 73 65 20 61 72   one database ar
1b20: 65 20 61 6e 61 6c 79 7a 65 64 2e 20 20 5e 49 66  e analyzed.  ^If
1b30: 20 74 68 65 20 61 72 67 75 6d 65 6e 74 20 69 73   the argument is
1b40: 20 61 20 74 61 62 6c 65 20 6e 61 6d 65 2c 0a 74   a table name,.t
1b50: 68 65 6e 20 6f 6e 6c 79 20 69 6e 64 69 63 65 73  hen only indices
1b60: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
1b70: 20 74 68 61 74 20 6f 6e 65 20 74 61 62 6c 65 20   that one table 
1b80: 61 72 65 20 61 6e 61 6c 79 7a 65 64 2e 3c 2f 70  are analyzed.</p
1b90: 3e 0a 0a 3c 70 3e 20 5e 54 68 65 20 64 65 66 61  >..<p> ^The defa
1ba0: 75 6c 74 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  ult implementati
1bb0: 6f 6e 20 73 74 6f 72 65 73 20 61 6c 6c 20 73 74  on stores all st
1bc0: 61 74 69 73 74 69 63 73 20 69 6e 20 61 20 73 69  atistics in a si
1bd0: 6e 67 6c 65 0a 74 61 62 6c 65 20 6e 61 6d 65 64  ngle.table named
1be0: 20 3c 62 3e 73 71 6c 69 74 65 5f 73 74 61 74 31   <b>sqlite_stat1
1bf0: 3c 2f 62 3e 2e 20 20 5e 49 66 20 53 51 4c 69 74  </b>.  ^If SQLit
1c00: 65 20 69 73 20 63 6f 6d 70 69 6c 65 64 20 77 69  e is compiled wi
1c10: 74 68 20 74 68 65 0a 5b 53 51 4c 49 54 45 5f 45  th the.[SQLITE_E
1c20: 4e 41 42 4c 45 5f 53 54 41 54 32 5d 20 6f 70 74  NABLE_STAT2] opt
1c30: 69 6f 6e 2c 20 74 68 65 6e 20 61 64 64 69 74 69  ion, then additi
1c40: 6f 6e 61 6c 20 68 69 73 74 6f 67 72 61 6d 20 64  onal histogram d
1c50: 61 74 61 20 69 73 0a 63 6f 6c 6c 65 63 74 65 64  ata is.collected
1c60: 20 61 6e 64 20 73 74 6f 72 65 64 20 69 6e 20 3c   and stored in <
1c70: 62 3e 73 71 6c 69 74 65 5f 73 74 61 74 32 3c 2f  b>sqlite_stat2</
1c80: 62 3e 2e 0a 46 75 74 75 72 65 20 65 6e 68 61 6e  b>..Future enhan
1c90: 63 65 6d 65 6e 74 73 20 6d 61 79 20 63 72 65 61  cements may crea
1ca0: 74 65 0a 61 64 64 69 74 69 6f 6e 61 6c 20 74 61  te.additional ta
1cb0: 62 6c 65 73 20 77 69 74 68 20 74 68 65 20 73 61  bles with the sa
1cc0: 6d 65 20 6e 61 6d 65 20 70 61 74 74 65 72 6e 20  me name pattern 
1cd0: 65 78 63 65 70 74 20 77 69 74 68 20 74 68 65 20  except with the 
1ce0: 22 31 22 0a 6f 72 20 22 32 22 20 63 68 61 6e 67  "1".or "2" chang
1cf0: 65 64 20 74 6f 20 61 20 64 69 66 66 65 72 65 6e  ed to a differen
1d00: 74 20 64 69 67 69 74 2e 3c 2f 70 3e 0a 0a 3c 70  t digit.</p>..<p
1d10: 3e 20 5e 54 68 65 20 5b 44 52 4f 50 20 54 41 42  > ^The [DROP TAB
1d20: 4c 45 5d 20 63 6f 6d 6d 61 6e 64 20 64 6f 65 73  LE] command does
1d30: 0a 6e 6f 74 20 77 6f 72 6b 20 6f 6e 20 74 68 65  .not work on the
1d40: 20 3c 62 3e 73 71 6c 69 74 65 5f 73 74 61 74 31   <b>sqlite_stat1
1d50: 3c 2f 62 3e 20 6f 72 20 3c 62 3e 73 71 6c 69 74  </b> or <b>sqlit
1d60: 65 5f 73 74 61 74 32 3c 2f 62 3e 20 74 61 62 6c  e_stat2</b> tabl
1d70: 65 73 2c 0a 62 75 74 20 61 6c 6c 20 74 68 65 20  es,.but all the 
1d80: 63 6f 6e 74 65 6e 74 20 6f 66 20 74 68 6f 73 65  content of those
1d90: 20 74 61 62 6c 65 73 20 63 61 6e 20 62 65 20 71   tables can be q
1da0: 75 65 72 69 65 64 20 75 73 69 6e 67 20 5b 53 45  ueried using [SE
1db0: 4c 45 43 54 5d 0a 61 6e 64 20 63 61 6e 20 62 65  LECT].and can be
1dc0: 20 64 65 6c 65 74 65 64 2c 20 61 75 67 6d 65 6e   deleted, augmen
1dd0: 74 65 64 2c 20 6f 72 20 6d 6f 64 69 66 69 65 64  ted, or modified
1de0: 20 75 73 69 6e 67 20 74 68 65 20 5b 44 45 4c 45   using the [DELE
1df0: 54 45 5d 2c 0a 5b 49 4e 53 45 52 54 5d 2c 20 61  TE],.[INSERT], a
1e00: 6e 64 20 5b 55 50 44 41 54 45 5d 20 63 6f 6d 6d  nd [UPDATE] comm
1e10: 61 6e 64 73 2e 0a 41 70 70 72 6f 70 72 69 61 74  ands..Appropriat
1e20: 65 20 63 61 72 65 20 73 68 6f 75 6c 64 20 62 65  e care should be
1e30: 20 75 73 65 64 20 77 68 65 6e 20 63 68 61 6e 67   used when chang
1e40: 69 6e 67 20 74 68 65 20 63 6f 6e 74 65 6e 74 20  ing the content 
1e50: 6f 66 20 74 68 65 20 73 74 61 74 69 73 74 69 63  of the statistic
1e60: 73 0a 74 61 62 6c 65 73 20 61 73 20 69 6e 76 61  s.tables as inva
1e70: 6c 69 64 20 63 6f 6e 74 65 6e 74 20 63 61 6e 20  lid content can 
1e80: 63 61 75 73 65 20 53 51 4c 69 74 65 20 74 6f 20  cause SQLite to 
1e90: 73 65 6c 65 63 74 20 69 6e 65 66 66 69 63 69 65  select inefficie
1ea0: 6e 74 0a 71 75 65 72 79 20 70 6c 61 6e 73 2e 20  nt.query plans. 
1eb0: 20 47 65 6e 65 72 61 6c 6c 79 20 73 70 65 61 6b   Generally speak
1ec0: 69 6e 67 2c 20 6f 6e 65 20 73 68 6f 75 6c 64 20  ing, one should 
1ed0: 6e 6f 74 20 6d 6f 64 69 66 79 20 74 68 65 20 63  not modify the c
1ee0: 6f 6e 74 65 6e 74 20 6f 66 0a 74 68 65 20 73 74  ontent of.the st
1ef0: 61 74 69 73 74 69 63 73 20 74 61 62 6c 65 73 20  atistics tables 
1f00: 62 79 20 61 6e 79 20 6d 65 63 68 61 6e 69 73 6d  by any mechanism
1f10: 20 6f 74 68 65 72 20 74 68 61 6e 20 69 6e 76 6f   other than invo
1f20: 6b 69 6e 67 20 74 68 65 0a 41 4e 41 4c 59 5a 45  king the.ANALYZE
1f30: 20 63 6f 6d 6d 61 6e 64 2e 3c 2f 70 3e 0a 0a 3c   command.</p>..<
1f40: 70 3e 20 5e 53 74 61 74 69 73 74 69 63 73 20 67  p> ^Statistics g
1f50: 61 74 68 65 72 65 64 20 62 79 20 41 4e 41 4c 59  athered by ANALY
1f60: 5a 45 20 61 72 65 20 3c 75 3e 6e 6f 74 3c 2f 75  ZE are <u>not</u
1f70: 3e 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20  > automatically 
1f80: 75 70 64 61 74 65 64 20 61 73 0a 74 68 65 20 63  updated as.the c
1f90: 6f 6e 74 65 6e 74 20 6f 66 20 74 68 65 20 64 61  ontent of the da
1fa0: 74 61 62 61 73 65 20 63 68 61 6e 67 65 73 2e 20  tabase changes. 
1fb0: 20 49 66 20 74 68 65 20 63 6f 6e 74 65 6e 74 20   If the content 
1fc0: 6f 66 20 74 68 65 20 64 61 74 61 62 61 73 65 0a  of the database.
1fd0: 63 68 61 6e 67 65 73 20 73 69 67 6e 69 66 69 63  changes signific
1fe0: 61 6e 74 6c 79 2c 20 6f 72 20 69 66 20 74 68 65  antly, or if the
1ff0: 20 64 61 74 61 62 61 73 65 20 73 63 68 65 6d 61   database schema
2000: 20 63 68 61 6e 67 65 73 2c 20 74 68 65 6e 20 6f   changes, then o
2010: 6e 65 20 73 68 6f 75 6c 64 0a 63 6f 6e 73 69 64  ne should.consid
2020: 65 72 20 72 65 72 75 6e 6e 69 6e 67 20 74 68 65  er rerunning the
2030: 20 41 4e 41 4c 59 5a 45 20 63 6f 6d 6d 61 6e 64   ANALYZE command
2040: 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 75 70 64   in order to upd
2050: 61 74 65 20 74 68 65 20 73 74 61 74 69 73 74 69  ate the statisti
2060: 63 73 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23  cs.</p>..<tcl>.#
2070: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2080: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2090: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
20a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
20b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 53 65  #############.Se
20c0: 63 74 69 6f 6e 20 7b 41 54 54 41 43 48 20 44 41  ction {ATTACH DA
20d0: 54 41 42 41 53 45 7d 20 61 74 74 61 63 68 20 2a  TABASE} attach *
20e0: 41 54 54 41 43 48 0a 0a 42 75 62 62 6c 65 44 69  ATTACH..BubbleDi
20f0: 61 67 72 61 6d 20 61 74 74 61 63 68 2d 73 74 6d  agram attach-stm
2100: 74 20 31 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 20  t 1.</tcl>..<p> 
2110: 5e 54 68 65 20 41 54 54 41 43 48 20 44 41 54 41  ^The ATTACH DATA
2120: 42 41 53 45 20 73 74 61 74 65 6d 65 6e 74 20 61  BASE statement a
2130: 64 64 73 20 61 6e 6f 74 68 65 72 20 64 61 74 61  dds another data
2140: 62 61 73 65 20 0a 66 69 6c 65 20 74 6f 20 74 68  base .file to th
2150: 65 20 63 75 72 72 65 6e 74 20 5b 64 61 74 61 62  e current [datab
2160: 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 2e  ase connection].
2170: 20 0a 5e 54 68 65 20 64 61 74 61 62 61 73 65 2d   .^The database-
2180: 6e 61 6d 65 73 20 27 6d 61 69 6e 27 20 61 6e 64  names 'main' and
2190: 20 0a 27 74 65 6d 70 27 20 72 65 66 65 72 20 74   .'temp' refer t
21a0: 6f 20 74 68 65 20 6d 61 69 6e 20 64 61 74 61 62  o the main datab
21b0: 61 73 65 20 61 6e 64 20 74 68 65 20 64 61 74 61  ase and the data
21c0: 62 61 73 65 20 75 73 65 64 20 66 6f 72 20 0a 74  base used for .t
21d0: 65 6d 70 6f 72 61 72 79 20 74 61 62 6c 65 73 2e  emporary tables.
21e0: 20 20 5e 54 68 65 20 6d 61 69 6e 20 61 6e 64 20    ^The main and 
21f0: 74 65 6d 70 20 64 61 74 61 62 61 73 65 73 20 63  temp databases c
2200: 61 6e 6e 6f 74 20 62 65 20 61 74 74 61 63 68 65  annot be attache
2210: 64 20 6f 72 0a 64 65 74 61 63 68 65 64 2e 3c 2f  d or.detached.</
2220: 70 3e 0a 0a 3c 70 3e 20 5e 59 6f 75 20 63 61 6e  p>..<p> ^You can
2230: 6e 6f 74 20 63 72 65 61 74 65 20 61 20 6e 65 77  not create a new
2240: 20 74 61 62 6c 65 20 77 69 74 68 20 74 68 65 20   table with the 
2250: 73 61 6d 65 20 6e 61 6d 65 20 61 73 20 61 20 74  same name as a t
2260: 61 62 6c 65 20 69 6e 20 0a 61 6e 20 61 74 74 61  able in .an atta
2270: 63 68 65 64 20 64 61 74 61 62 61 73 65 2c 20 62  ched database, b
2280: 75 74 20 79 6f 75 20 63 61 6e 20 61 74 74 61 63  ut you can attac
2290: 68 20 61 20 64 61 74 61 62 61 73 65 20 77 68 69  h a database whi
22a0: 63 68 20 63 6f 6e 74 61 69 6e 73 0a 74 61 62 6c  ch contains.tabl
22b0: 65 73 20 77 68 6f 73 65 20 6e 61 6d 65 73 20 61  es whose names a
22c0: 72 65 20 64 75 70 6c 69 63 61 74 65 73 20 6f 66  re duplicates of
22d0: 20 74 61 62 6c 65 73 20 69 6e 20 74 68 65 20 6d   tables in the m
22e0: 61 69 6e 20 64 61 74 61 62 61 73 65 2e 20 20 5e  ain database.  ^
22f0: 49 66 0a 74 68 65 20 73 79 73 74 65 6d 20 69 73  If.the system is
2300: 20 6e 6f 74 20 72 75 6e 6e 69 6e 67 20 69 6e 20   not running in 
2310: 5b 73 68 61 72 65 64 20 63 61 63 68 65 20 6d 6f  [shared cache mo
2320: 64 65 5d 2c 20 69 74 20 69 73 20 61 6c 73 6f 20  de], it is also 
2330: 70 65 72 6d 69 73 73 69 62 6c 65 20 0a 74 6f 20  permissible .to 
2340: 61 74 74 61 63 68 20 74 68 65 20 73 61 6d 65 20  attach the same 
2350: 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 6d 75  database file mu
2360: 6c 74 69 70 6c 65 20 74 69 6d 65 73 2e 3c 2f 70  ltiple times.</p
2370: 3e 0a 0a 3c 70 3e 20 5e 28 54 61 62 6c 65 73 20  >..<p> ^(Tables 
2380: 69 6e 20 61 6e 20 61 74 74 61 63 68 65 64 20 64  in an attached d
2390: 61 74 61 62 61 73 65 20 63 61 6e 20 62 65 20 72  atabase can be r
23a0: 65 66 65 72 72 65 64 20 74 6f 20 75 73 69 6e 67  eferred to using
23b0: 20 74 68 65 20 73 79 6e 74 61 78 20 0a 3c 69 3e   the syntax .<i>
23c0: 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 2e 74 61  database-name.ta
23d0: 62 6c 65 2d 6e 61 6d 65 3c 2f 69 3e 2e 29 5e 20  ble-name</i>.)^ 
23e0: 20 5e 49 66 20 74 68 65 20 6e 61 6d 65 20 6f 66   ^If the name of
23f0: 20 74 68 65 20 74 61 62 6c 65 20 69 73 20 75 6e   the table is un
2400: 69 71 75 65 0a 61 63 72 6f 73 73 20 61 6c 6c 20  ique.across all 
2410: 61 74 74 61 63 68 65 64 20 64 61 74 61 62 61 73  attached databas
2420: 65 73 20 61 6e 64 20 74 68 65 20 6d 61 69 6e 20  es and the main 
2430: 61 6e 64 20 74 65 6d 70 20 64 61 74 61 62 61 73  and temp databas
2440: 65 73 2c 20 74 68 65 6e 20 74 68 65 0a 3c 69 3e  es, then the.<i>
2450: 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3c 2f 69  database-name</i
2460: 3e 20 70 72 65 66 69 78 20 69 73 20 6e 6f 74 20  > prefix is not 
2470: 72 65 71 75 69 72 65 64 2e 20 20 5e 57 68 65 6e  required.  ^When
2480: 20 61 20 64 61 74 61 62 61 73 65 20 69 73 20 61   a database is a
2490: 74 74 61 63 68 65 64 2c 20 0a 61 6c 6c 20 74 61  ttached, .all ta
24a0: 62 6c 65 73 20 77 68 69 63 68 20 64 6f 6e 27 74  bles which don't
24b0: 20 68 61 76 65 20 64 75 70 6c 69 63 61 74 65 20   have duplicate 
24c0: 6e 61 6d 65 73 20 62 65 63 6f 6d 65 20 74 68 65  names become the
24d0: 20 64 65 66 61 75 6c 74 20 74 61 62 6c 65 0a 6f   default table.o
24e0: 66 20 74 68 61 74 20 6e 61 6d 65 2e 20 20 5e 41  f that name.  ^A
24f0: 6e 79 20 74 61 62 6c 65 73 20 6f 66 20 74 68 61  ny tables of tha
2500: 74 20 6e 61 6d 65 20 61 74 74 61 63 68 65 64 20  t name attached 
2510: 61 66 74 65 72 77 61 72 64 73 20 72 65 71 75 69  afterwards requi
2520: 72 65 20 74 68 65 0a 64 61 74 61 62 61 73 65 20  re the.database 
2530: 70 72 65 66 69 78 2e 20 5e 49 66 20 74 68 65 20  prefix. ^If the 
2540: 64 65 66 61 75 6c 74 20 74 61 62 6c 65 20 6f 66  default table of
2550: 20 61 20 67 69 76 65 6e 20 6e 61 6d 65 20 69 73   a given name is
2560: 20 64 65 74 61 63 68 65 64 2c 20 74 68 65 6e 0a   detached, then.
2570: 74 68 65 20 6c 61 73 74 20 74 61 62 6c 65 20 6f  the last table o
2580: 66 20 74 68 61 74 20 6e 61 6d 65 20 61 74 74 61  f that name atta
2590: 63 68 65 64 20 62 65 63 6f 6d 65 73 20 74 68 65  ched becomes the
25a0: 20 6e 65 77 20 64 65 66 61 75 6c 74 2e 3c 2f 70   new default.</p
25b0: 3e 0a 0a 3c 70 3e 0a 5e 54 72 61 6e 73 61 63 74  >..<p>.^Transact
25c0: 69 6f 6e 73 20 69 6e 76 6f 6c 76 69 6e 67 20 6d  ions involving m
25d0: 75 6c 74 69 70 6c 65 20 61 74 74 61 63 68 65 64  ultiple attached
25e0: 20 64 61 74 61 62 61 73 65 73 20 61 72 65 20 61   databases are a
25f0: 74 6f 6d 69 63 2c 0a 61 73 73 75 6d 69 6e 67 20  tomic,.assuming 
2600: 74 68 61 74 20 74 68 65 20 6d 61 69 6e 20 64 61  that the main da
2610: 74 61 62 61 73 65 20 69 73 20 6e 6f 74 20 22 5b  tabase is not "[
2620: 3a 6d 65 6d 6f 72 79 3a 5d 22 2e 20 20 5e 28 49  :memory:]".  ^(I
2630: 66 20 74 68 65 20 6d 61 69 6e 0a 64 61 74 61 62  f the main.datab
2640: 61 73 65 20 69 73 20 22 3a 6d 65 6d 6f 72 79 3a  ase is ":memory:
2650: 22 20 74 68 65 6e 20 0a 74 72 61 6e 73 61 63 74  " then .transact
2660: 69 6f 6e 73 20 63 6f 6e 74 69 6e 75 65 20 74 6f  ions continue to
2670: 20 62 65 20 61 74 6f 6d 69 63 20 77 69 74 68 69   be atomic withi
2680: 6e 20 65 61 63 68 20 69 6e 64 69 76 69 64 75 61  n each individua
2690: 6c 0a 64 61 74 61 62 61 73 65 20 66 69 6c 65 2e  l.database file.
26a0: 20 42 75 74 20 69 66 20 74 68 65 20 68 6f 73 74   But if the host
26b0: 20 63 6f 6d 70 75 74 65 72 20 63 72 61 73 68 65   computer crashe
26c0: 73 20 69 6e 20 74 68 65 20 6d 69 64 64 6c 65 0a  s in the middle.
26d0: 6f 66 20 61 20 5b 43 4f 4d 4d 49 54 5d 20 77 68  of a [COMMIT] wh
26e0: 65 72 65 20 74 77 6f 20 6f 72 20 6d 6f 72 65 20  ere two or more 
26f0: 64 61 74 61 62 61 73 65 20 66 69 6c 65 73 20 61  database files a
2700: 72 65 20 75 70 64 61 74 65 64 2c 0a 73 6f 6d 65  re updated,.some
2710: 20 6f 66 20 74 68 6f 73 65 20 66 69 6c 65 73 20   of those files 
2720: 6d 69 67 68 74 20 67 65 74 20 74 68 65 20 63 68  might get the ch
2730: 61 6e 67 65 73 20 77 68 65 72 65 20 6f 74 68 65  anges where othe
2740: 72 73 0a 6d 69 67 68 74 20 6e 6f 74 2e 29 5e 0a  rs.might not.)^.
2750: 3c 2f 70 3e 0a 0a 3c 70 3e 20 5e 54 68 65 72 65  </p>..<p> ^There
2760: 20 69 73 20 61 20 63 6f 6d 70 69 6c 65 2d 74 69   is a compile-ti
2770: 6d 65 20 6c 69 6d 69 74 20 6f 66 20 5b 53 51 4c  me limit of [SQL
2780: 49 54 45 5f 4d 41 58 5f 41 54 54 41 43 48 45 44  ITE_MAX_ATTACHED
2790: 5d 0a 61 74 74 61 63 68 65 64 20 64 61 74 61 62  ].attached datab
27a0: 61 73 65 20 66 69 6c 65 73 2e 3c 2f 70 3e 0a 0a  ase files.</p>..
27b0: 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23  <tcl>.##########
27c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
27d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
27e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
27f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2800: 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b 42  #####.Section {B
2810: 45 47 49 4e 20 54 52 41 4e 53 41 43 54 49 4f 4e  EGIN TRANSACTION
2820: 7d 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 7b 2a  } transaction {*
2830: 42 45 47 49 4e 20 43 4f 4d 4d 49 54 20 52 4f 4c  BEGIN COMMIT ROL
2840: 4c 42 41 43 4b 7d 0a 0a 42 75 62 62 6c 65 44 69  LBACK}..BubbleDi
2850: 61 67 72 61 6d 20 62 65 67 69 6e 2d 73 74 6d 74  agram begin-stmt
2860: 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 63  .BubbleDiagram c
2870: 6f 6d 6d 69 74 2d 73 74 6d 74 0a 42 75 62 62 6c  ommit-stmt.Bubbl
2880: 65 44 69 61 67 72 61 6d 20 72 6f 6c 6c 62 61 63  eDiagram rollbac
2890: 6b 2d 73 74 6d 74 0a 3c 2f 74 63 6c 3e 0a 0a 3c  k-stmt.</tcl>..<
28a0: 70 3e 0a 5e 4e 6f 20 63 68 61 6e 67 65 73 20 63  p>.^No changes c
28b0: 61 6e 20 62 65 20 6d 61 64 65 20 74 6f 20 74 68  an be made to th
28c0: 65 20 64 61 74 61 62 61 73 65 20 65 78 63 65 70  e database excep
28d0: 74 20 77 69 74 68 69 6e 20 61 20 74 72 61 6e 73  t within a trans
28e0: 61 63 74 69 6f 6e 2e 0a 5e 41 6e 79 20 63 6f 6d  action..^Any com
28f0: 6d 61 6e 64 20 74 68 61 74 20 63 68 61 6e 67 65  mand that change
2900: 73 20 74 68 65 20 64 61 74 61 62 61 73 65 20 28  s the database (
2910: 62 61 73 69 63 61 6c 6c 79 2c 20 61 6e 79 20 53  basically, any S
2920: 51 4c 20 63 6f 6d 6d 61 6e 64 0a 6f 74 68 65 72  QL command.other
2930: 20 74 68 61 6e 20 5b 53 45 4c 45 43 54 5d 29 20   than [SELECT]) 
2940: 77 69 6c 6c 20 61 75 74 6f 6d 61 74 69 63 61 6c  will automatical
2950: 6c 79 20 73 74 61 72 74 20 61 20 74 72 61 6e 73  ly start a trans
2960: 61 63 74 69 6f 6e 20 69 66 0a 6f 6e 65 20 69 73  action if.one is
2970: 20 6e 6f 74 20 61 6c 72 65 61 64 79 20 69 6e 20   not already in 
2980: 65 66 66 65 63 74 2e 20 20 5e 41 75 74 6f 6d 61  effect.  ^Automa
2990: 74 69 63 61 6c 6c 79 20 73 74 61 72 74 65 64 20  tically started 
29a0: 74 72 61 6e 73 61 63 74 69 6f 6e 73 0a 61 72 65  transactions.are
29b0: 20 63 6f 6d 6d 69 74 74 65 64 20 77 68 65 6e 20   committed when 
29c0: 74 68 65 20 6c 61 73 74 20 71 75 65 72 79 20 66  the last query f
29d0: 69 6e 69 73 68 65 73 2e 0a 3c 2f 70 3e 0a 0a 3c  inishes..</p>..<
29e0: 70 3e 0a 5e 54 72 61 6e 73 61 63 74 69 6f 6e 73  p>.^Transactions
29f0: 20 63 61 6e 20 62 65 20 73 74 61 72 74 65 64 20   can be started 
2a00: 6d 61 6e 75 61 6c 6c 79 20 75 73 69 6e 67 20 74  manually using t
2a10: 68 65 20 42 45 47 49 4e 0a 63 6f 6d 6d 61 6e 64  he BEGIN.command
2a20: 2e 20 20 5e 28 53 75 63 68 20 74 72 61 6e 73 61  .  ^(Such transa
2a30: 63 74 69 6f 6e 73 20 75 73 75 61 6c 6c 79 20 70  ctions usually p
2a40: 65 72 73 69 73 74 20 75 6e 74 69 6c 20 74 68 65  ersist until the
2a50: 20 6e 65 78 74 0a 43 4f 4d 4d 49 54 20 6f 72 20   next.COMMIT or 
2a60: 52 4f 4c 4c 42 41 43 4b 20 63 6f 6d 6d 61 6e 64  ROLLBACK command
2a70: 2e 20 20 42 75 74 20 61 20 74 72 61 6e 73 61 63  .  But a transac
2a80: 74 69 6f 6e 20 77 69 6c 6c 20 61 6c 73 6f 20 0a  tion will also .
2a90: 52 4f 4c 4c 42 41 43 4b 20 69 66 20 74 68 65 20  ROLLBACK if the 
2aa0: 64 61 74 61 62 61 73 65 20 69 73 20 63 6c 6f 73  database is clos
2ab0: 65 64 20 6f 72 20 69 66 20 61 6e 20 65 72 72 6f  ed or if an erro
2ac0: 72 20 6f 63 63 75 72 73 0a 61 6e 64 20 74 68 65  r occurs.and the
2ad0: 20 52 4f 4c 4c 42 41 43 4b 20 63 6f 6e 66 6c 69   ROLLBACK confli
2ae0: 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c  ct resolution al
2af0: 67 6f 72 69 74 68 6d 20 69 73 20 73 70 65 63 69  gorithm is speci
2b00: 66 69 65 64 2e 29 5e 0a 53 65 65 20 74 68 65 20  fied.)^.See the 
2b10: 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 6f 6e  documentation on
2b20: 20 74 68 65 20 5b 4f 4e 20 43 4f 4e 46 4c 49 43   the [ON CONFLIC
2b30: 54 5d 0a 63 6c 61 75 73 65 20 66 6f 72 20 61 64  T].clause for ad
2b40: 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61  ditional informa
2b50: 74 69 6f 6e 20 61 62 6f 75 74 20 74 68 65 20 52  tion about the R
2b60: 4f 4c 4c 42 41 43 4b 0a 63 6f 6e 66 6c 69 63 74  OLLBACK.conflict
2b70: 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f   resolution algo
2b80: 72 69 74 68 6d 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e  rithm..</p>..<p>
2b90: 0a 5e 45 4e 44 20 54 52 41 4e 53 41 43 54 49 4f  .^END TRANSACTIO
2ba0: 4e 20 69 73 20 61 6e 20 61 6c 69 61 73 20 66 6f  N is an alias fo
2bb0: 72 20 43 4f 4d 4d 49 54 2e 0a 3c 2f 70 3e 0a 0a  r COMMIT..</p>..
2bc0: 3c 70 3e 20 5e 28 54 72 61 6e 73 61 63 74 69 6f  <p> ^(Transactio
2bd0: 6e 73 20 63 72 65 61 74 65 64 20 75 73 69 6e 67  ns created using
2be0: 20 42 45 47 49 4e 2e 2e 2e 43 4f 4d 4d 49 54 20   BEGIN...COMMIT 
2bf0: 64 6f 20 6e 6f 74 20 6e 65 73 74 2e 29 5e 0a 5e  do not nest.)^.^
2c00: 46 6f 72 20 6e 65 73 74 65 64 20 74 72 61 6e 73  For nested trans
2c10: 61 63 74 69 6f 6e 73 2c 20 75 73 65 20 74 68 65  actions, use the
2c20: 20 5b 53 41 56 45 50 4f 49 4e 54 5d 20 61 6e 64   [SAVEPOINT] and
2c30: 20 5b 52 45 4c 45 41 53 45 5d 20 63 6f 6d 6d 61   [RELEASE] comma
2c40: 6e 64 73 2e 0a 54 68 65 20 22 54 4f 20 53 41 56  nds..The "TO SAV
2c50: 45 50 4f 49 4e 54 20 3c 69 3e 6e 61 6d 65 3c 2f  EPOINT <i>name</
2c60: 69 3e 22 20 63 6c 61 75 73 65 20 6f 66 20 74 68  i>" clause of th
2c70: 65 20 52 4f 4c 4c 42 41 43 4b 20 63 6f 6d 6d 61  e ROLLBACK comma
2c80: 6e 64 20 73 68 6f 77 6e 0a 69 6e 20 74 68 65 20  nd shown.in the 
2c90: 73 79 6e 74 61 78 20 64 69 61 67 72 61 6d 20 61  syntax diagram a
2ca0: 62 6f 76 65 20 69 73 20 6f 6e 6c 79 20 61 70 70  bove is only app
2cb0: 6c 69 63 61 62 6c 65 20 74 6f 20 5b 53 41 56 45  licable to [SAVE
2cc0: 50 4f 49 4e 54 5d 0a 74 72 61 6e 73 61 63 74 69  POINT].transacti
2cd0: 6f 6e 73 2e 20 20 5e 41 6e 20 61 74 74 65 6d 70  ons.  ^An attemp
2ce0: 74 20 74 6f 20 69 6e 76 6f 6b 65 20 74 68 65 20  t to invoke the 
2cf0: 42 45 47 49 4e 20 63 6f 6d 6d 61 6e 64 20 77 69  BEGIN command wi
2d00: 74 68 69 6e 0a 61 20 74 72 61 6e 73 61 63 74 69  thin.a transacti
2d10: 6f 6e 20 77 69 6c 6c 20 66 61 69 6c 20 77 69 74  on will fail wit
2d20: 68 20 61 6e 20 65 72 72 6f 72 2c 20 72 65 67 61  h an error, rega
2d30: 72 64 6c 65 73 73 20 6f 66 20 77 68 65 74 68 65  rdless of whethe
2d40: 72 0a 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f  r.the transactio
2d50: 6e 20 77 61 73 20 73 74 61 72 74 65 64 20 62 79  n was started by
2d60: 20 5b 53 41 56 45 50 4f 49 4e 54 5d 20 6f 72 20   [SAVEPOINT] or 
2d70: 61 20 70 72 69 6f 72 20 42 45 47 49 4e 2e 0a 5e  a prior BEGIN..^
2d80: 54 68 65 20 43 4f 4d 4d 49 54 20 63 6f 6d 6d 61  The COMMIT comma
2d90: 6e 64 20 61 6e 64 20 74 68 65 20 52 4f 4c 4c 42  nd and the ROLLB
2da0: 41 43 4b 20 63 6f 6d 6d 61 6e 64 20 77 69 74 68  ACK command with
2db0: 6f 75 74 20 74 68 65 20 54 4f 20 63 6c 61 75 73  out the TO claus
2dc0: 65 0a 77 6f 72 6b 20 74 68 65 20 73 61 6d 65 20  e.work the same 
2dd0: 6f 6e 20 5b 53 41 56 45 50 4f 49 4e 54 5d 20 74  on [SAVEPOINT] t
2de0: 72 61 6e 73 61 63 74 69 6f 6e 73 20 61 73 20 74  ransactions as t
2df0: 68 65 79 20 64 6f 20 77 69 74 68 20 74 72 61 6e  hey do with tran
2e00: 73 61 63 74 69 6f 6e 73 0a 73 74 61 72 74 65 64  sactions.started
2e10: 20 62 79 20 42 45 47 49 4e 2e 3c 2f 70 3e 0a 0a   by BEGIN.</p>..
2e20: 3c 70 3e 0a 5e 54 72 61 6e 73 61 63 74 69 6f 6e  <p>.^Transaction
2e30: 73 20 63 61 6e 20 62 65 20 64 65 66 65 72 72 65  s can be deferre
2e40: 64 2c 20 69 6d 6d 65 64 69 61 74 65 2c 20 6f 72  d, immediate, or
2e50: 20 65 78 63 6c 75 73 69 76 65 2e 20 20 0a 5e 54   exclusive.  .^T
2e60: 68 65 20 64 65 66 61 75 6c 74 20 74 72 61 6e 73  he default trans
2e70: 61 63 74 69 6f 6e 20 62 65 68 61 76 69 6f 72 20  action behavior 
2e80: 69 73 20 64 65 66 65 72 72 65 64 2e 0a 5e 44 65  is deferred..^De
2e90: 66 65 72 72 65 64 20 6d 65 61 6e 73 20 74 68 61  ferred means tha
2ea0: 74 20 6e 6f 20 6c 6f 63 6b 73 20 61 72 65 20 61  t no locks are a
2eb0: 63 71 75 69 72 65 64 0a 6f 6e 20 74 68 65 20 64  cquired.on the d
2ec0: 61 74 61 62 61 73 65 20 75 6e 74 69 6c 20 74 68  atabase until th
2ed0: 65 20 64 61 74 61 62 61 73 65 20 69 73 20 66 69  e database is fi
2ee0: 72 73 74 20 61 63 63 65 73 73 65 64 2e 20 20 5e  rst accessed.  ^
2ef0: 54 68 75 73 20 77 69 74 68 20 61 0a 64 65 66 65  Thus with a.defe
2f00: 72 72 65 64 20 74 72 61 6e 73 61 63 74 69 6f 6e  rred transaction
2f10: 2c 20 74 68 65 20 42 45 47 49 4e 20 73 74 61 74  , the BEGIN stat
2f20: 65 6d 65 6e 74 20 69 74 73 65 6c 66 20 64 6f 65  ement itself doe
2f30: 73 20 6e 6f 74 68 69 6e 67 20 74 6f 20 74 68 65  s nothing to the
2f40: 0a 66 69 6c 65 73 79 73 74 65 6d 2e 20 20 5e 4c  .filesystem.  ^L
2f50: 6f 63 6b 73 0a 61 72 65 20 6e 6f 74 20 61 63 71  ocks.are not acq
2f60: 75 69 72 65 64 20 75 6e 74 69 6c 20 74 68 65 20  uired until the 
2f70: 66 69 72 73 74 20 72 65 61 64 20 6f 72 20 77 72  first read or wr
2f80: 69 74 65 20 6f 70 65 72 61 74 69 6f 6e 2e 20 20  ite operation.  
2f90: 5e 54 68 65 20 66 69 72 73 74 20 72 65 61 64 0a  ^The first read.
2fa0: 6f 70 65 72 61 74 69 6f 6e 20 61 67 61 69 6e 73  operation agains
2fb0: 74 20 61 20 64 61 74 61 62 61 73 65 20 63 72 65  t a database cre
2fc0: 61 74 65 73 20 61 20 5b 53 48 41 52 45 44 5d 20  ates a [SHARED] 
2fd0: 6c 6f 63 6b 20 61 6e 64 20 74 68 65 20 66 69 72  lock and the fir
2fe0: 73 74 0a 77 72 69 74 65 20 6f 70 65 72 61 74 69  st.write operati
2ff0: 6f 6e 20 63 72 65 61 74 65 73 20 61 20 5b 52 45  on creates a [RE
3000: 53 45 52 56 45 44 5d 20 6c 6f 63 6b 2e 20 20 20  SERVED] lock.   
3010: 5e 42 65 63 61 75 73 65 20 74 68 65 20 61 63 71  ^Because the acq
3020: 75 69 73 69 74 69 6f 6e 20 6f 66 0a 6c 6f 63 6b  uisition of.lock
3030: 73 20 69 73 20 64 65 66 65 72 72 65 64 20 75 6e  s is deferred un
3040: 74 69 6c 20 74 68 65 79 20 61 72 65 20 6e 65 65  til they are nee
3050: 64 65 64 2c 20 69 74 20 69 73 20 70 6f 73 73 69  ded, it is possi
3060: 62 6c 65 20 74 68 61 74 20 61 6e 6f 74 68 65 72  ble that another
3070: 0a 74 68 72 65 61 64 20 6f 72 20 70 72 6f 63 65  .thread or proce
3080: 73 73 20 63 6f 75 6c 64 20 63 72 65 61 74 65 20  ss could create 
3090: 61 20 73 65 70 61 72 61 74 65 20 74 72 61 6e 73  a separate trans
30a0: 61 63 74 69 6f 6e 20 61 6e 64 20 77 72 69 74 65  action and write
30b0: 20 74 6f 0a 74 68 65 20 64 61 74 61 62 61 73 65   to.the database
30c0: 20 61 66 74 65 72 20 74 68 65 20 42 45 47 49 4e   after the BEGIN
30d0: 20 6f 6e 20 74 68 65 20 63 75 72 72 65 6e 74 20   on the current 
30e0: 74 68 72 65 61 64 20 68 61 73 20 65 78 65 63 75  thread has execu
30f0: 74 65 64 2e 0a 5e 49 66 20 74 68 65 20 74 72 61  ted..^If the tra
3100: 6e 73 61 63 74 69 6f 6e 20 69 73 20 69 6d 6d 65  nsaction is imme
3110: 64 69 61 74 65 2c 20 74 68 65 6e 20 5b 52 45 53  diate, then [RES
3120: 45 52 56 45 44 5d 20 6c 6f 63 6b 73 0a 61 72 65  ERVED] locks.are
3130: 20 61 63 71 75 69 72 65 64 20 6f 6e 20 61 6c 6c   acquired on all
3140: 20 64 61 74 61 62 61 73 65 73 20 61 73 20 73 6f   databases as so
3150: 6f 6e 20 61 73 20 74 68 65 20 42 45 47 49 4e 20  on as the BEGIN 
3160: 63 6f 6d 6d 61 6e 64 20 69 73 0a 65 78 65 63 75  command is.execu
3170: 74 65 64 2c 20 77 69 74 68 6f 75 74 20 77 61 69  ted, without wai
3180: 74 69 6e 67 20 66 6f 72 20 74 68 65 0a 64 61 74  ting for the.dat
3190: 61 62 61 73 65 20 74 6f 20 62 65 20 75 73 65 64  abase to be used
31a0: 2e 20 20 5e 41 66 74 65 72 20 61 20 42 45 47 49  .  ^After a BEGI
31b0: 4e 20 49 4d 4d 45 44 49 41 54 45 2c 20 0a 6e 6f  N IMMEDIATE, .no
31c0: 20 6f 74 68 65 72 20 5b 64 61 74 61 62 61 73 65   other [database
31d0: 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 77 69 6c   connection] wil
31e0: 6c 20 62 65 20 61 62 6c 65 20 74 6f 20 77 72 69  l be able to wri
31f0: 74 65 20 74 6f 20 74 68 65 20 64 61 74 61 62 61  te to the databa
3200: 73 65 20 6f 72 0a 64 6f 20 61 20 42 45 47 49 4e  se or.do a BEGIN
3210: 20 49 4d 4d 45 44 49 41 54 45 20 6f 72 20 42 45   IMMEDIATE or BE
3220: 47 49 4e 20 45 58 43 4c 55 53 49 56 45 2e 20 20  GIN EXCLUSIVE.  
3230: 5e 4f 74 68 65 72 20 70 72 6f 63 65 73 73 65 73  ^Other processes
3240: 20 63 61 6e 20 63 6f 6e 74 69 6e 75 65 0a 74 6f   can continue.to
3250: 20 72 65 61 64 20 66 72 6f 6d 20 74 68 65 20 64   read from the d
3260: 61 74 61 62 61 73 65 2c 20 68 6f 77 65 76 65 72  atabase, however
3270: 2e 20 20 5e 41 6e 20 65 78 63 6c 75 73 69 76 65  .  ^An exclusive
3280: 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 63 61 75   transaction cau
3290: 73 65 73 0a 5b 45 58 43 4c 55 53 49 56 45 5d 20  ses.[EXCLUSIVE] 
32a0: 6c 6f 63 6b 73 20 74 6f 20 62 65 20 61 63 71 75  locks to be acqu
32b0: 69 72 65 64 20 6f 6e 20 61 6c 6c 20 64 61 74 61  ired on all data
32c0: 62 61 73 65 73 2e 20 20 5e 41 66 74 65 72 20 61  bases.  ^After a
32d0: 20 42 45 47 49 4e 0a 45 58 43 4c 55 53 49 56 45   BEGIN.EXCLUSIVE
32e0: 2c 20 6e 6f 20 6f 74 68 65 72 20 5b 64 61 74 61  , no other [data
32f0: 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d  base connection]
3300: 20 65 78 63 65 70 74 20 66 6f 72 20 5b 72 65 61   except for [rea
3310: 64 5f 75 6e 63 6f 6d 6d 69 74 74 65 64 5d 0a 63  d_uncommitted].c
3320: 6f 6e 6e 65 63 74 69 6f 6e 73 20 77 69 6c 6c 20  onnections will 
3330: 62 65 20 61 62 6c 65 20 74 6f 20 72 65 61 64 20  be able to read 
3340: 74 68 65 20 64 61 74 61 62 61 73 65 20 61 6e 64  the database and
3350: 20 6e 6f 20 6f 74 68 65 72 20 63 6f 6e 6e 65 63   no other connec
3360: 74 69 6f 6e 20 77 69 74 68 6f 75 74 0a 65 78 63  tion without.exc
3370: 65 70 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20 61  eption will be a
3380: 62 6c 65 20 74 6f 20 77 72 69 74 65 20 74 68 65  ble to write the
3390: 20 64 61 74 61 62 61 73 65 20 75 6e 74 69 6c 20   database until 
33a0: 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  the transaction 
33b0: 69 73 0a 63 6f 6d 70 6c 65 74 65 2e 0a 3c 2f 70  is.complete..</p
33c0: 3e 0a 0a 3c 70 3e 0a 5e 28 41 6e 20 69 6d 70 6c  >..<p>.^(An impl
33d0: 69 63 69 74 20 74 72 61 6e 73 61 63 74 69 6f 6e  icit transaction
33e0: 20 28 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 20   (a transaction 
33f0: 74 68 61 74 20 69 73 20 73 74 61 72 74 65 64 20  that is started 
3400: 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2c 0a 6e  automatically,.n
3410: 6f 74 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e  ot a transaction
3420: 20 73 74 61 72 74 65 64 20 62 79 20 42 45 47 49   started by BEGI
3430: 4e 29 20 69 73 20 63 6f 6d 6d 69 74 74 65 64 20  N) is committed 
3440: 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 77 68  automatically wh
3450: 65 6e 0a 74 68 65 20 6c 61 73 74 20 61 63 74 69  en.the last acti
3460: 76 65 20 73 74 61 74 65 6d 65 6e 74 20 66 69 6e  ve statement fin
3470: 69 73 68 65 73 2e 20 20 41 20 73 74 61 74 65 6d  ishes.  A statem
3480: 65 6e 74 20 66 69 6e 69 73 68 65 73 20 77 68 65  ent finishes whe
3490: 6e 20 69 74 73 0a 70 72 65 70 61 72 65 64 20 73  n its.prepared s
34a0: 74 61 74 65 6d 65 6e 74 20 69 73 20 5b 73 71 6c  tatement is [sql
34b0: 69 74 65 33 5f 72 65 73 65 74 28 29 20 7c 20 72  ite3_reset() | r
34c0: 65 73 65 74 5d 20 6f 72 0a 5b 73 71 6c 69 74 65  eset] or.[sqlite
34d0: 33 5f 66 69 6e 61 6c 69 7a 65 28 29 20 7c 20 66  3_finalize() | f
34e0: 69 6e 61 6c 69 7a 65 64 5d 2e 20 20 41 6e 20 6f  inalized].  An o
34f0: 70 65 6e 20 5b 73 71 6c 69 74 65 33 5f 62 6c 6f  pen [sqlite3_blo
3500: 62 5d 20 75 73 65 64 20 66 6f 72 0a 69 6e 63 72  b] used for.incr
3510: 65 6d 65 6e 74 61 6c 20 42 4c 4f 42 20 49 2f 4f  emental BLOB I/O
3520: 20 63 6f 75 6e 74 73 20 61 73 20 61 6e 20 75 6e   counts as an un
3530: 66 69 6e 69 73 68 65 64 20 73 74 61 74 65 6d 65  finished stateme
3540: 6e 74 2e 20 20 54 68 65 20 5b 73 71 6c 69 74 65  nt.  The [sqlite
3550: 33 5f 62 6c 6f 62 5d 0a 66 69 6e 69 73 68 65 73  3_blob].finishes
3560: 20 77 68 65 6e 20 69 74 20 69 73 20 5b 73 71 6c   when it is [sql
3570: 69 74 65 33 5f 62 6c 6f 62 5f 63 6c 6f 73 65 28  ite3_blob_close(
3580: 29 20 7c 20 63 6c 6f 73 65 64 5d 2e 29 5e 0a 3c  ) | closed].)^.<
3590: 2f 70 3e 0a 0a 3c 70 3e 0a 5e 54 68 65 20 65 78  /p>..<p>.^The ex
35a0: 70 6c 69 63 69 74 20 43 4f 4d 4d 49 54 20 63 6f  plicit COMMIT co
35b0: 6d 6d 61 6e 64 20 72 75 6e 73 20 69 6d 6d 65 64  mmand runs immed
35c0: 69 61 74 65 6c 79 2c 20 65 76 65 6e 20 69 66 20  iately, even if 
35d0: 74 68 65 72 65 20 61 72 65 0a 70 65 6e 64 69 6e  there are.pendin
35e0: 67 20 5b 53 45 4c 45 43 54 5d 20 73 74 61 74 65  g [SELECT] state
35f0: 6d 65 6e 74 73 2e 20 20 5e 48 6f 77 65 76 65 72  ments.  ^However
3600: 2c 20 69 66 20 74 68 65 72 65 20 61 72 65 20 70  , if there are p
3610: 65 6e 64 69 6e 67 0a 77 72 69 74 65 20 6f 70 65  ending.write ope
3620: 72 61 74 69 6f 6e 73 2c 20 74 68 65 20 43 4f 4d  rations, the COM
3630: 4d 49 54 20 63 6f 6d 6d 61 6e 64 0a 77 69 6c 6c  MIT command.will
3640: 20 66 61 69 6c 20 77 69 74 68 20 61 20 65 72 72   fail with a err
3650: 6f 72 20 63 6f 64 65 20 5b 53 51 4c 49 54 45 5f  or code [SQLITE_
3660: 42 55 53 59 5d 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e  BUSY]..</p>..<p>
3670: 0a 5e 41 6e 20 61 74 74 65 6d 70 74 20 74 6f 20  .^An attempt to 
3680: 65 78 65 63 75 74 65 20 43 4f 4d 4d 49 54 20 6d  execute COMMIT m
3690: 69 67 68 74 20 61 6c 73 6f 20 72 65 73 75 6c 74  ight also result
36a0: 20 69 6e 20 61 6e 20 5b 53 51 4c 49 54 45 5f 42   in an [SQLITE_B
36b0: 55 53 59 5d 20 72 65 74 75 72 6e 20 63 6f 64 65  USY] return code
36c0: 0a 69 66 20 61 6e 20 61 6e 6f 74 68 65 72 20 74  .if an another t
36d0: 68 72 65 61 64 20 6f 72 20 70 72 6f 63 65 73 73  hread or process
36e0: 20 68 61 73 20 61 20 5b 73 68 61 72 65 64 20 6c   has a [shared l
36f0: 6f 63 6b 5d 20 6f 6e 20 74 68 65 20 64 61 74 61  ock] on the data
3700: 62 61 73 65 0a 74 68 61 74 20 70 72 65 76 65 6e  base.that preven
3710: 74 65 64 20 74 68 65 20 64 61 74 61 62 61 73 65  ted the database
3720: 20 66 72 6f 6d 20 62 65 69 6e 67 20 75 70 64 61   from being upda
3730: 74 65 64 2e 20 20 5e 57 68 65 6e 20 43 4f 4d 4d  ted.  ^When COMM
3740: 49 54 20 66 61 69 6c 73 20 69 6e 20 74 68 69 73  IT fails in this
3750: 0a 77 61 79 2c 20 74 68 65 20 74 72 61 6e 73 61  .way, the transa
3760: 63 74 69 6f 6e 20 72 65 6d 61 69 6e 73 20 61 63  ction remains ac
3770: 74 69 76 65 20 61 6e 64 20 74 68 65 20 43 4f 4d  tive and the COM
3780: 4d 49 54 20 63 61 6e 20 62 65 20 72 65 74 72 69  MIT can be retri
3790: 65 64 20 6c 61 74 65 72 0a 61 66 74 65 72 20 74  ed later.after t
37a0: 68 65 20 72 65 61 64 65 72 20 68 61 73 20 68 61  he reader has ha
37b0: 64 20 61 20 63 68 61 6e 63 65 20 74 6f 20 63 6c  d a chance to cl
37c0: 65 61 72 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 5e  ear..</p>..<p>.^
37d0: 54 68 65 20 52 4f 4c 4c 42 41 43 4b 20 77 69 6c  The ROLLBACK wil
37e0: 6c 20 66 61 69 6c 20 77 69 74 68 20 61 6e 20 65  l fail with an e
37f0: 72 72 6f 72 20 63 6f 64 65 20 5b 53 51 4c 49 54  rror code [SQLIT
3800: 45 5f 42 55 53 59 5d 20 69 66 20 74 68 65 72 65  E_BUSY] if there
3810: 0a 61 72 65 20 61 6e 79 20 70 65 6e 64 69 6e 67  .are any pending
3820: 20 71 75 65 72 69 65 73 2e 20 20 5e 42 6f 74 68   queries.  ^Both
3830: 20 72 65 61 64 2d 6f 6e 6c 79 20 61 6e 64 20 72   read-only and r
3840: 65 61 64 2f 77 72 69 74 65 20 71 75 65 72 69 65  ead/write querie
3850: 73 20 77 69 6c 6c 0a 63 61 75 73 65 20 61 20 52  s will.cause a R
3860: 4f 4c 4c 42 41 43 4b 20 74 6f 20 66 61 69 6c 2e  OLLBACK to fail.
3870: 20 20 41 20 52 4f 4c 4c 42 41 43 4b 20 6d 75 73    A ROLLBACK mus
3880: 74 20 66 61 69 6c 20 69 66 20 74 68 65 72 65 20  t fail if there 
3890: 61 72 65 20 70 65 6e 64 69 6e 67 0a 72 65 61 64  are pending.read
38a0: 20 6f 70 65 72 61 74 69 6f 6e 73 20 28 75 6e 6c   operations (unl
38b0: 69 6b 65 20 43 4f 4d 4d 49 54 20 77 68 69 63 68  ike COMMIT which
38c0: 20 63 61 6e 20 73 75 63 63 65 65 64 29 20 62 65   can succeed) be
38d0: 63 61 75 73 65 20 62 61 64 20 74 68 69 6e 67 73  cause bad things
38e0: 0a 77 69 6c 6c 20 68 61 70 70 65 6e 20 69 66 20  .will happen if 
38f0: 74 68 65 20 69 6e 2d 6d 65 6d 6f 72 79 20 69 6d  the in-memory im
3900: 61 67 65 20 6f 66 20 74 68 65 20 64 61 74 61 62  age of the datab
3910: 61 73 65 20 69 73 20 63 68 61 6e 67 65 64 20 6f  ase is changed o
3920: 75 74 20 66 72 6f 6d 20 75 6e 64 65 72 0a 61 6e  ut from under.an
3930: 20 61 63 74 69 76 65 20 71 75 65 72 79 2e 0a 3c   active query..<
3940: 2f 70 3e 0a 0a 3c 70 3e 0a 49 66 20 5b 50 52 41  /p>..<p>.If [PRA
3950: 47 4d 41 20 6a 6f 75 72 6e 61 6c 5f 6d 6f 64 65  GMA journal_mode
3960: 5d 20 69 73 20 73 65 74 20 74 6f 20 4f 46 46 20  ] is set to OFF 
3970: 28 74 68 75 73 20 64 69 73 61 62 6c 69 6e 67 20  (thus disabling 
3980: 74 68 65 20 72 6f 6c 6c 62 61 63 6b 20 6a 6f 75  the rollback jou
3990: 72 6e 61 6c 0a 66 69 6c 65 29 20 74 68 65 6e 20  rnal.file) then 
39a0: 74 68 65 20 62 65 68 61 76 69 6f 72 20 6f 66 20  the behavior of 
39b0: 74 68 65 20 52 4f 4c 4c 42 41 43 4b 20 63 6f 6d  the ROLLBACK com
39c0: 6d 61 6e 64 20 69 73 20 75 6e 64 65 66 69 6e 65  mand is undefine
39d0: 64 2e 0a 3c 2f 70 3e 0a 0a 3c 68 33 3e 52 65 73  d..</p>..<h3>Res
39e0: 70 6f 6e 73 65 20 54 6f 20 45 72 72 6f 72 73 20  ponse To Errors 
39f0: 57 69 74 68 69 6e 20 41 20 54 72 61 6e 73 61 63  Within A Transac
3a00: 74 69 6f 6e 3c 2f 68 33 3e 0a 0a 3c 70 3e 20 5e  tion</h3>..<p> ^
3a10: 28 49 66 20 63 65 72 74 61 69 6e 20 6b 69 6e 64  (If certain kind
3a20: 73 20 6f 66 20 65 72 72 6f 72 73 20 6f 63 63 75  s of errors occu
3a30: 72 20 77 69 74 68 69 6e 20 61 20 74 72 61 6e 73  r within a trans
3a40: 61 63 74 69 6f 6e 2c 20 74 68 65 0a 74 72 61 6e  action, the.tran
3a50: 73 61 63 74 69 6f 6e 20 6d 61 79 20 6f 72 20 6d  saction may or m
3a60: 61 79 20 6e 6f 74 20 62 65 20 72 6f 6c 6c 65 64  ay not be rolled
3a70: 20 62 61 63 6b 20 61 75 74 6f 6d 61 74 69 63 61   back automatica
3a80: 6c 6c 79 2e 20 20 54 68 65 0a 65 72 72 6f 72 73  lly.  The.errors
3a90: 20 74 68 61 74 20 63 61 75 73 65 20 74 68 65 20   that cause the 
3aa0: 62 65 68 61 76 69 6f 72 20 69 6e 63 6c 75 64 65  behavior include
3ab0: 3a 3c 2f 70 3e 0a 0a 3c 75 6c 3e 0a 3c 6c 69 3e  :</p>..<ul>.<li>
3ac0: 20 5b 53 51 4c 49 54 45 5f 46 55 4c 4c 5d 3a 20   [SQLITE_FULL]: 
3ad0: 64 61 74 61 62 61 73 65 20 6f 72 20 64 69 73 6b  database or disk
3ae0: 20 66 75 6c 6c 0a 3c 6c 69 3e 20 5b 53 51 4c 49   full.<li> [SQLI
3af0: 54 45 5f 49 4f 45 52 52 5d 3a 20 64 69 73 6b 20  TE_IOERR]: disk 
3b00: 49 2f 4f 20 65 72 72 6f 72 0a 3c 6c 69 3e 20 5b  I/O error.<li> [
3b10: 53 51 4c 49 54 45 5f 42 55 53 59 5d 3a 20 64 61  SQLITE_BUSY]: da
3b20: 74 61 62 61 73 65 20 69 6e 20 75 73 65 20 62 79  tabase in use by
3b30: 20 61 6e 6f 74 68 65 72 20 70 72 6f 63 65 73 73   another process
3b40: 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4e 4f  .<li> [SQLITE_NO
3b50: 4d 45 4d 5d 3a 20 6f 75 74 20 6f 72 20 6d 65 6d  MEM]: out or mem
3b60: 6f 72 79 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45  ory.<li> [SQLITE
3b70: 5f 49 4e 54 45 52 52 55 50 54 5d 3a 20 70 72 6f  _INTERRUPT]: pro
3b80: 63 65 73 73 69 6e 67 20 5b 73 71 6c 69 74 65 33  cessing [sqlite3
3b90: 5f 69 6e 74 65 72 72 75 70 74 7c 69 6e 74 65 72  _interrupt|inter
3ba0: 72 75 70 74 65 64 5d 0a 20 20 20 20 20 62 79 20  rupted].     by 
3bb0: 61 70 70 6c 69 63 61 74 69 6f 6e 20 72 65 71 75  application requ
3bc0: 65 73 74 0a 3c 2f 75 6c 3e 29 5e 0a 0a 3c 70 3e  est.</ul>)^..<p>
3bd0: 0a 5e 46 6f 72 20 61 6c 6c 20 6f 66 20 74 68 65  .^For all of the
3be0: 73 65 20 65 72 72 6f 72 73 2c 20 53 51 4c 69 74  se errors, SQLit
3bf0: 65 20 61 74 74 65 6d 70 74 73 20 74 6f 20 75 6e  e attempts to un
3c00: 64 6f 20 6a 75 73 74 20 74 68 65 20 6f 6e 65 20  do just the one 
3c10: 73 74 61 74 65 6d 65 6e 74 0a 69 74 20 77 61 73  statement.it was
3c20: 20 77 6f 72 6b 69 6e 67 20 6f 6e 20 61 6e 64 20   working on and 
3c30: 6c 65 61 76 65 20 63 68 61 6e 67 65 73 20 66 72  leave changes fr
3c40: 6f 6d 20 70 72 69 6f 72 20 73 74 61 74 65 6d 65  om prior stateme
3c50: 6e 74 73 20 77 69 74 68 69 6e 20 74 68 65 0a 73  nts within the.s
3c60: 61 6d 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  ame transaction 
3c70: 69 6e 74 61 63 74 20 61 6e 64 20 63 6f 6e 74 69  intact and conti
3c80: 6e 75 65 20 77 69 74 68 20 74 68 65 20 74 72 61  nue with the tra
3c90: 6e 73 61 63 74 69 6f 6e 2e 20 20 5e 48 6f 77 65  nsaction.  ^Howe
3ca0: 76 65 72 2c 20 0a 64 65 70 65 6e 64 69 6e 67 20  ver, .depending 
3cb0: 6f 6e 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74  on the statement
3cc0: 20 62 65 69 6e 67 20 65 76 61 6c 75 61 74 65 64   being evaluated
3cd0: 20 61 6e 64 20 74 68 65 20 70 6f 69 6e 74 20 61   and the point a
3ce0: 74 20 77 68 69 63 68 20 74 68 65 0a 65 72 72 6f  t which the.erro
3cf0: 72 20 6f 63 63 75 72 73 2c 20 69 74 20 6d 69 67  r occurs, it mig
3d00: 68 74 20 62 65 20 6e 65 63 65 73 73 61 72 79 20  ht be necessary 
3d10: 66 6f 72 20 53 51 4c 69 74 65 20 74 6f 20 72 6f  for SQLite to ro
3d20: 6c 6c 62 61 63 6b 20 61 6e 64 0a 63 61 6e 63 65  llback and.cance
3d30: 6c 20 74 68 65 20 65 6e 74 69 72 65 20 74 72 61  l the entire tra
3d40: 6e 73 61 63 74 69 6f 6e 2e 20 20 5e 41 6e 20 61  nsaction.  ^An a
3d50: 70 70 6c 69 63 61 74 69 6f 6e 20 63 61 6e 20 74  pplication can t
3d60: 65 6c 6c 20 77 68 69 63 68 0a 63 6f 75 72 73 65  ell which.course
3d70: 20 6f 66 20 61 63 74 69 6f 6e 20 53 51 4c 69 74   of action SQLit
3d80: 65 20 74 6f 6f 6b 20 62 79 20 75 73 69 6e 67 20  e took by using 
3d90: 74 68 65 0a 5b 73 71 6c 69 74 65 33 5f 67 65 74  the.[sqlite3_get
3da0: 5f 61 75 74 6f 63 6f 6d 6d 69 74 28 29 5d 20 43  _autocommit()] C
3db0: 2d 6c 61 6e 67 75 61 67 65 20 69 6e 74 65 72 66  -language interf
3dc0: 61 63 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 74 20  ace.</p>..<p>It 
3dd0: 69 73 20 72 65 63 6f 6d 6d 65 6e 64 65 64 20 74  is recommended t
3de0: 68 61 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 73  hat applications
3df0: 20 72 65 73 70 6f 6e 64 20 74 6f 20 74 68 65 20   respond to the 
3e00: 65 72 72 6f 72 73 0a 6c 69 73 74 65 64 20 61 62  errors.listed ab
3e10: 6f 76 65 20 62 79 20 65 78 70 6c 69 63 69 74 6c  ove by explicitl
3e20: 79 20 69 73 73 75 69 6e 67 20 61 20 52 4f 4c 4c  y issuing a ROLL
3e30: 42 41 43 4b 20 63 6f 6d 6d 61 6e 64 2e 20 20 5e  BACK command.  ^
3e40: 49 66 20 74 68 65 20 0a 74 72 61 6e 73 61 63 74  If the .transact
3e50: 69 6f 6e 20 68 61 73 20 61 6c 72 65 61 64 79 20  ion has already 
3e60: 62 65 65 6e 20 72 6f 6c 6c 65 64 20 62 61 63 6b  been rolled back
3e70: 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 0a 62   automatically.b
3e80: 79 20 74 68 65 20 65 72 72 6f 72 20 72 65 73 70  y the error resp
3e90: 6f 6e 73 65 2c 20 74 68 65 6e 20 74 68 65 20 52  onse, then the R
3ea0: 4f 4c 4c 42 41 43 4b 20 63 6f 6d 6d 61 6e 64 20  OLLBACK command 
3eb0: 77 69 6c 6c 20 66 61 69 6c 20 77 69 74 68 20 61  will fail with a
3ec0: 6e 0a 65 72 72 6f 72 2c 20 62 75 74 20 6e 6f 20  n.error, but no 
3ed0: 68 61 72 6d 20 69 73 20 63 61 75 73 65 64 20 62  harm is caused b
3ee0: 79 20 74 68 69 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e  y this.</p>..<p>
3ef0: 46 75 74 75 72 65 20 76 65 72 73 69 6f 6e 73 20  Future versions 
3f00: 6f 66 20 53 51 4c 69 74 65 20 6d 61 79 20 65 78  of SQLite may ex
3f10: 74 65 6e 64 20 74 68 65 20 6c 69 73 74 20 6f 66  tend the list of
3f20: 20 65 72 72 6f 72 73 20 77 68 69 63 68 0a 6d 69   errors which.mi
3f30: 67 68 74 20 63 61 75 73 65 20 61 75 74 6f 6d 61  ght cause automa
3f40: 74 69 63 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  tic transaction 
3f50: 72 6f 6c 6c 62 61 63 6b 2e 20 20 46 75 74 75 72  rollback.  Futur
3f60: 65 20 76 65 72 73 69 6f 6e 73 20 6f 66 0a 53 51  e versions of.SQ
3f70: 4c 69 74 65 20 6d 69 67 68 74 20 63 68 61 6e 67  Lite might chang
3f80: 65 20 74 68 65 20 65 72 72 6f 72 20 72 65 73 70  e the error resp
3f90: 6f 6e 73 65 2e 20 20 49 6e 20 70 61 72 74 69 63  onse.  In partic
3fa0: 75 6c 61 72 2c 20 77 65 20 6d 61 79 0a 63 68 6f  ular, we may.cho
3fb0: 6f 73 65 20 74 6f 20 73 69 6d 70 6c 69 66 79 20  ose to simplify 
3fc0: 74 68 65 20 69 6e 74 65 72 66 61 63 65 20 69 6e  the interface in
3fd0: 20 66 75 74 75 72 65 20 76 65 72 73 69 6f 6e 73   future versions
3fe0: 20 6f 66 20 53 51 4c 69 74 65 20 62 79 0a 63 61   of SQLite by.ca
3ff0: 75 73 69 6e 67 20 74 68 65 20 65 72 72 6f 72 73  using the errors
4000: 20 61 62 6f 76 65 20 74 6f 20 66 6f 72 63 65 20   above to force 
4010: 61 6e 20 75 6e 63 6f 6e 64 69 74 69 6f 6e 61 6c  an unconditional
4020: 20 72 6f 6c 6c 62 61 63 6b 2e 3c 2f 70 3e 0a 0a   rollback.</p>..
4030: 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23  <tcl>.##########
4040: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4050: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4060: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4070: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4080: 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b 53  #####.Section {S
4090: 41 56 45 50 4f 49 4e 54 7d 20 73 61 76 65 70 6f  AVEPOINT} savepo
40a0: 69 6e 74 20 7b 53 41 56 45 50 4f 49 4e 54 20 52  int {SAVEPOINT R
40b0: 45 4c 45 41 53 45 7d 0a 0a 42 75 62 62 6c 65 44  ELEASE}..BubbleD
40c0: 69 61 67 72 61 6d 20 73 61 76 65 70 6f 69 6e 74  iagram savepoint
40d0: 2d 73 74 6d 74 0a 42 75 62 62 6c 65 44 69 61 67  -stmt.BubbleDiag
40e0: 72 61 6d 20 72 65 6c 65 61 73 65 2d 73 74 6d 74  ram release-stmt
40f0: 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 72  .BubbleDiagram r
4100: 6f 6c 6c 62 61 63 6b 2d 73 74 6d 74 0a 3c 2f 74  ollback-stmt.</t
4110: 63 6c 3e 0a 0a 3c 70 3e 20 5e 53 41 56 45 50 4f  cl>..<p> ^SAVEPO
4120: 49 4e 54 73 20 61 72 65 20 61 20 6d 65 74 68 6f  INTs are a metho
4130: 64 20 6f 66 20 63 72 65 61 74 69 6e 67 20 74 72  d of creating tr
4140: 61 6e 73 61 63 74 69 6f 6e 73 2c 20 73 69 6d 69  ansactions, simi
4150: 6c 61 72 20 74 6f 0a 5b 42 45 47 49 4e 5d 20 61  lar to.[BEGIN] a
4160: 6e 64 20 5b 43 4f 4d 4d 49 54 5d 2c 20 65 78 63  nd [COMMIT], exc
4170: 65 70 74 20 74 68 61 74 20 74 68 65 20 53 41 56  ept that the SAV
4180: 45 50 4f 49 4e 54 20 61 6e 64 20 52 45 4c 45 41  EPOINT and RELEA
4190: 53 45 20 63 6f 6d 6d 61 6e 64 73 0a 61 72 65 20  SE commands.are 
41a0: 6e 61 6d 65 64 20 61 6e 64 20 6d 61 79 20 62 65  named and may be
41b0: 20 6e 65 73 74 65 64 2e 3c 2f 70 3e 0a 0a 3c 70   nested.</p>..<p
41c0: 3e 20 5e 54 68 65 20 53 41 56 45 50 4f 49 4e 54  > ^The SAVEPOINT
41d0: 20 63 6f 6d 6d 61 6e 64 20 73 74 61 72 74 73 20   command starts 
41e0: 61 20 6e 65 77 20 74 72 61 6e 73 61 63 74 69 6f  a new transactio
41f0: 6e 20 77 69 74 68 20 61 20 6e 61 6d 65 2e 0a 5e  n with a name..^
4200: 54 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  The transaction 
4210: 6e 61 6d 65 73 20 6e 65 65 64 20 6e 6f 74 20 62  names need not b
4220: 65 20 75 6e 69 71 75 65 2e 0a 5e 28 41 20 53 41  e unique..^(A SA
4230: 56 45 50 4f 49 4e 54 20 63 61 6e 20 62 65 20 73  VEPOINT can be s
4240: 74 61 72 74 65 64 20 65 69 74 68 65 72 20 77 69  tarted either wi
4250: 74 68 69 6e 20 6f 72 20 6f 75 74 73 69 64 65 20  thin or outside 
4260: 6f 66 0a 61 20 5b 42 45 47 49 4e 5d 2e 2e 2e 5b  of.a [BEGIN]...[
4270: 43 4f 4d 4d 49 54 5d 2e 29 5e 20 20 5e 28 57 68  COMMIT].)^  ^(Wh
4280: 65 6e 20 61 20 53 41 56 45 50 4f 49 4e 54 20 69  en a SAVEPOINT i
4290: 73 20 74 68 65 20 6f 75 74 65 72 2d 6d 6f 73 74  s the outer-most
42a0: 20 73 61 76 65 70 6f 69 6e 74 0a 61 6e 64 20 69   savepoint.and i
42b0: 74 20 69 73 20 6e 6f 74 20 77 69 74 68 69 6e 20  t is not within 
42c0: 61 20 5b 42 45 47 49 4e 5d 2e 2e 2e 5b 43 4f 4d  a [BEGIN]...[COM
42d0: 4d 49 54 5d 20 74 68 65 6e 20 74 68 65 20 62 65  MIT] then the be
42e0: 68 61 76 69 6f 72 20 69 73 20 74 68 65 0a 73 61  havior is the.sa
42f0: 6d 65 20 61 73 20 42 45 47 49 4e 20 44 45 46 45  me as BEGIN DEFE
4300: 52 52 45 44 20 54 52 41 4e 53 41 43 54 49 4f 4e  RRED TRANSACTION
4310: 2e 29 5e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65  .)^</p>..<p>^The
4320: 20 52 4f 4c 4c 42 41 43 4b 20 54 4f 20 63 6f 6d   ROLLBACK TO com
4330: 6d 61 6e 64 20 72 65 76 65 72 74 73 20 74 68 65  mand reverts the
4340: 20 73 74 61 74 65 20 6f 66 20 74 68 65 20 64 61   state of the da
4350: 74 61 62 61 73 65 20 62 61 63 6b 20 74 6f 20 77  tabase back to w
4360: 68 61 74 0a 69 74 20 77 61 73 20 6a 75 73 74 20  hat.it was just 
4370: 61 66 74 65 72 20 74 68 65 20 63 6f 72 72 65 73  after the corres
4380: 70 6f 6e 64 69 6e 67 20 53 41 56 45 50 4f 49 4e  ponding SAVEPOIN
4390: 54 2e 20 20 5e 4e 6f 74 65 20 74 68 61 74 20 75  T.  ^Note that u
43a0: 6e 6c 69 6b 65 20 74 68 61 74 0a 70 6c 61 69 6e  nlike that.plain
43b0: 20 5b 52 4f 4c 4c 42 41 43 4b 5d 20 63 6f 6d 6d   [ROLLBACK] comm
43c0: 61 6e 64 20 28 77 69 74 68 6f 75 74 20 74 68 65  and (without the
43d0: 20 54 4f 20 6b 65 79 77 6f 72 64 29 20 74 68 65   TO keyword) the
43e0: 20 52 4f 4c 4c 42 41 43 4b 20 54 4f 20 63 6f 6d   ROLLBACK TO com
43f0: 6d 61 6e 64 0a 64 6f 65 73 20 6e 6f 74 20 63 61  mand.does not ca
4400: 6e 63 65 6c 20 74 68 65 20 74 72 61 6e 73 61 63  ncel the transac
4410: 74 69 6f 6e 2e 20 20 5e 49 6e 73 74 65 61 64 20  tion.  ^Instead 
4420: 6f 66 20 63 61 6e 63 65 6c 6c 69 6e 67 20 74 68  of cancelling th
4430: 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 2c 0a 74  e transaction,.t
4440: 68 65 20 52 4f 4c 4c 42 41 43 4b 20 54 4f 20 63  he ROLLBACK TO c
4450: 6f 6d 6d 61 6e 64 20 72 65 73 74 61 72 74 73 20  ommand restarts 
4460: 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  the transaction 
4470: 61 67 61 69 6e 20 61 74 20 74 68 65 20 62 65 67  again at the beg
4480: 69 6e 6e 69 6e 67 2e 0a 5e 41 6c 6c 20 69 6e 74  inning..^All int
4490: 65 72 76 65 6e 69 6e 67 20 53 41 56 45 50 4f 49  ervening SAVEPOI
44a0: 4e 54 73 20 61 72 65 20 63 61 6e 63 65 6c 6c 65  NTs are cancelle
44b0: 64 2c 20 68 6f 77 65 76 65 72 2e 3c 2f 70 3e 0a  d, however.</p>.
44c0: 0a 3c 70 3e 5e 54 68 65 20 52 45 4c 45 41 53 45  .<p>^The RELEASE
44d0: 20 63 6f 6d 6d 61 6e 64 20 69 73 20 6c 69 6b 65   command is like
44e0: 20 61 20 5b 43 4f 4d 4d 49 54 5d 20 66 6f 72 20   a [COMMIT] for 
44f0: 61 20 53 41 56 45 50 4f 49 4e 54 2e 0a 5e 54 68  a SAVEPOINT..^Th
4500: 65 20 52 45 4c 45 41 53 45 20 63 6f 6d 6d 61 6e  e RELEASE comman
4510: 64 20 63 61 75 73 65 73 20 61 6c 6c 20 73 61 76  d causes all sav
4520: 65 70 6f 69 6e 74 73 20 62 61 63 6b 20 74 6f 20  epoints back to 
4530: 61 6e 64 20 69 6e 63 6c 75 64 69 6e 67 20 74 68  and including th
4540: 65 20 0a 6d 6f 73 74 20 72 65 63 65 6e 74 20 73  e .most recent s
4550: 61 76 65 70 6f 69 6e 74 20 77 69 74 68 20 61 20  avepoint with a 
4560: 6d 61 74 63 68 69 6e 67 20 6e 61 6d 65 20 74 6f  matching name to
4570: 20 62 65 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d   be removed from
4580: 20 74 68 65 20 0a 74 72 61 6e 73 61 63 74 69 6f   the .transactio
4590: 6e 20 73 74 61 63 6b 2e 20 20 5e 54 68 65 20 52  n stack.  ^The R
45a0: 45 4c 45 41 53 45 20 6f 66 20 61 6e 20 69 6e 6e  ELEASE of an inn
45b0: 65 72 20 74 72 61 6e 73 61 63 74 69 6f 6e 0a 64  er transaction.d
45c0: 6f 65 73 20 6e 6f 74 20 63 61 75 73 65 20 61 6e  oes not cause an
45d0: 79 20 63 68 61 6e 67 65 73 20 74 6f 20 62 65 20  y changes to be 
45e0: 77 72 69 74 74 65 6e 20 74 6f 20 74 68 65 20 64  written to the d
45f0: 61 74 61 62 61 73 65 20 66 69 6c 65 3b 20 69 74  atabase file; it
4600: 20 6d 65 72 65 6c 79 0a 72 65 6d 6f 76 65 73 20   merely.removes 
4610: 73 61 76 65 70 6f 69 6e 74 73 20 66 72 6f 6d 20  savepoints from 
4620: 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  the transaction 
4630: 73 74 61 63 6b 20 73 75 63 68 20 74 68 61 74 20  stack such that 
4640: 69 74 20 69 73 0a 6e 6f 20 6c 6f 6e 67 65 72 20  it is.no longer 
4650: 70 6f 73 73 69 62 6c 65 20 74 6f 20 52 4f 4c 4c  possible to ROLL
4660: 42 41 43 4b 20 54 4f 20 74 68 6f 73 65 20 73 61  BACK TO those sa
4670: 76 65 70 6f 69 6e 74 73 2e 0a 5e 49 66 20 61 20  vepoints..^If a 
4680: 52 45 4c 45 41 53 45 20 63 6f 6d 6d 61 6e 64 20  RELEASE command 
4690: 72 65 6c 65 61 73 65 73 20 74 68 65 20 6f 75 74  releases the out
46a0: 65 72 6d 6f 73 74 20 73 61 76 65 70 6f 69 6e 74  ermost savepoint
46b0: 2c 20 73 6f 0a 74 68 61 74 20 74 68 65 20 74 72  , so.that the tr
46c0: 61 6e 73 61 63 74 69 6f 6e 20 73 74 61 63 6b 20  ansaction stack 
46d0: 62 65 63 6f 6d 65 73 20 65 6d 70 74 79 2c 20 74  becomes empty, t
46e0: 68 65 6e 20 52 45 4c 45 41 53 45 20 69 73 20 74  hen RELEASE is t
46f0: 68 65 20 73 61 6d 65 0a 61 73 20 5b 43 4f 4d 4d  he same.as [COMM
4700: 49 54 5d 2e 0a 5e 54 68 65 20 5b 43 4f 4d 4d 49  IT]..^The [COMMI
4710: 54 5d 20 63 6f 6d 6d 61 6e 64 20 6d 61 79 20 62  T] command may b
4720: 65 20 75 73 65 64 20 74 6f 20 72 65 6c 65 61 73  e used to releas
4730: 65 20 61 6c 6c 20 73 61 76 65 70 6f 69 6e 74 73  e all savepoints
4740: 20 61 6e 64 0a 63 6f 6d 6d 69 74 20 74 68 65 20   and.commit the 
4750: 74 72 61 6e 73 61 63 74 69 6f 6e 20 65 76 65 6e  transaction even
4760: 20 69 66 20 74 68 65 20 74 72 61 6e 73 61 63 74   if the transact
4770: 69 6f 6e 20 77 61 73 20 6f 72 69 67 69 6e 61 6c  ion was original
4780: 6c 79 20 73 74 61 72 74 65 64 0a 62 79 20 61 20  ly started.by a 
4790: 53 41 56 45 50 4f 49 4e 54 20 63 6f 6d 6d 61 6e  SAVEPOINT comman
47a0: 64 20 69 6e 73 74 65 61 64 20 6f 66 20 61 20 5b  d instead of a [
47b0: 42 45 47 49 4e 5d 20 63 6f 6d 6d 61 6e 64 2e 3c  BEGIN] command.<
47c0: 2f 70 3e 0a 0a 3c 70 3e 5e 49 66 20 74 68 65 20  /p>..<p>^If the 
47d0: 73 61 76 65 70 6f 69 6e 74 2d 6e 61 6d 65 20 69  savepoint-name i
47e0: 6e 20 61 20 52 45 4c 45 41 53 45 20 63 6f 6d 6d  n a RELEASE comm
47f0: 61 6e 64 20 64 6f 65 73 20 6e 6f 74 20 6d 61 74  and does not mat
4800: 63 68 20 61 6e 79 0a 73 61 76 65 70 6f 69 6e 74  ch any.savepoint
4810: 20 63 75 72 72 65 6e 74 6c 79 20 69 6e 20 74 68   currently in th
4820: 65 20 74 72 61 6e 61 63 74 69 6f 6e 20 73 74 61  e tranaction sta
4830: 63 6b 2c 20 74 68 65 6e 20 6e 6f 20 73 61 76 65  ck, then no save
4840: 70 6f 69 6e 74 73 20 61 72 65 0a 72 65 6c 65 61  points are.relea
4850: 73 65 64 2c 20 74 68 65 20 64 61 74 61 62 61 73  sed, the databas
4860: 65 20 69 73 20 75 6e 63 68 61 6e 67 65 64 2c 20  e is unchanged, 
4870: 61 6e 64 20 74 68 65 20 52 45 4c 45 41 53 45 20  and the RELEASE 
4880: 63 6f 6d 6d 61 6e 64 20 72 65 74 75 72 6e 73 0a  command returns.
4890: 61 6e 20 65 72 72 6f 72 2e 3c 2f 70 3e 0a 0a 3c  an error.</p>..<
48a0: 70 3e 5e 4e 6f 74 65 20 74 68 61 74 20 61 6e 20  p>^Note that an 
48b0: 69 6e 6e 65 72 20 74 72 61 6e 73 61 63 74 69 6f  inner transactio
48c0: 6e 20 6d 69 67 68 74 20 63 6f 6d 6d 69 74 20 28  n might commit (
48d0: 75 73 69 6e 67 20 74 68 65 20 52 45 4c 45 41 53  using the RELEAS
48e0: 45 20 63 6f 6d 6d 61 6e 64 29 0a 62 75 74 20 74  E command).but t
48f0: 68 65 6e 20 6c 61 74 65 72 20 68 61 76 65 20 69  hen later have i
4900: 74 73 20 77 6f 72 6b 20 75 6e 64 6f 6e 65 20 62  ts work undone b
4910: 79 20 61 20 52 4f 4c 4c 42 41 43 4b 20 69 6e 20  y a ROLLBACK in 
4920: 61 6e 20 6f 75 74 65 72 20 74 72 61 6e 73 61 63  an outer transac
4930: 74 69 6f 6e 2e 0a 5e 41 20 70 6f 77 65 72 20 66  tion..^A power f
4940: 61 69 6c 75 72 65 20 6f 72 20 70 72 6f 67 72 61  ailure or progra
4950: 6d 20 63 72 61 73 68 20 6f 72 20 4f 53 20 63 72  m crash or OS cr
4960: 61 73 68 20 77 69 6c 6c 20 63 61 75 73 65 20 74  ash will cause t
4970: 68 65 20 6f 75 74 65 72 2d 6d 6f 73 74 0a 74 72  he outer-most.tr
4980: 61 6e 73 61 63 74 69 6f 6e 20 74 6f 20 72 6f 6c  ansaction to rol
4990: 6c 62 61 63 6b 2c 20 75 6e 64 6f 69 6e 67 20 61  lback, undoing a
49a0: 6c 6c 20 63 68 61 6e 67 65 73 20 74 68 61 74 20  ll changes that 
49b0: 68 61 76 65 20 6f 63 63 75 72 72 65 64 20 77 69  have occurred wi
49c0: 74 68 69 6e 0a 74 68 61 74 20 6f 75 74 65 72 20  thin.that outer 
49d0: 74 72 61 6e 73 61 63 74 69 6f 6e 2c 20 65 76 65  transaction, eve
49e0: 6e 20 63 68 61 6e 67 65 73 20 74 68 61 74 20 68  n changes that h
49f0: 61 76 65 20 73 75 70 70 6f 73 65 64 6c 79 20 62  ave supposedly b
4a00: 65 65 6e 20 22 63 6f 6d 6d 69 74 74 65 64 22 0a  een "committed".
4a10: 62 79 20 74 68 65 20 52 45 4c 45 41 53 45 20 63  by the RELEASE c
4a20: 6f 6d 6d 61 6e 64 2e 20 20 5e 43 6f 6e 74 65 6e  ommand.  ^Conten
4a30: 74 20 69 73 20 6e 6f 74 20 61 63 74 75 61 6c 6c  t is not actuall
4a40: 79 20 63 6f 6d 6d 69 74 74 65 64 20 6f 6e 20 74  y committed on t
4a50: 68 65 20 64 69 73 6b 20 0a 75 6e 74 69 6c 20 74  he disk .until t
4a60: 68 65 20 6f 75 74 65 72 6d 6f 73 74 20 74 72 61  he outermost tra
4a70: 6e 73 61 63 74 69 6f 6e 20 63 6f 6d 6d 69 74 73  nsaction commits
4a80: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 72 65 20  .</p>..<p>There 
4a90: 61 72 65 20 73 65 76 65 72 61 6c 20 77 61 79 73  are several ways
4aa0: 20 6f 66 20 74 68 69 6e 6b 69 6e 67 20 61 62 6f   of thinking abo
4ab0: 75 74 20 74 68 65 20 52 45 4c 45 41 53 45 20 63  ut the RELEASE c
4ac0: 6f 6d 6d 61 6e 64 3a 3c 2f 70 3e 0a 0a 3c 75 6c  ommand:</p>..<ul
4ad0: 3e 0a 3c 6c 69 3e 3c 70 3e 0a 53 6f 6d 65 20 70  >.<li><p>.Some p
4ae0: 65 6f 70 6c 65 20 76 69 65 77 20 52 45 4c 45 41  eople view RELEA
4af0: 53 45 20 61 73 20 74 68 65 20 65 71 75 69 76 61  SE as the equiva
4b00: 6c 65 6e 74 20 6f 66 20 43 4f 4d 4d 49 54 20 66  lent of COMMIT f
4b10: 6f 72 20 61 20 53 41 56 45 50 4f 49 4e 54 2e 0a  or a SAVEPOINT..
4b20: 54 68 69 73 20 69 73 20 61 6e 20 61 63 63 65 70  This is an accep
4b30: 74 61 62 6c 65 20 70 6f 69 6e 74 20 6f 66 20 76  table point of v
4b40: 69 65 77 20 61 73 20 6c 6f 6e 67 20 61 73 20 6f  iew as long as o
4b50: 6e 65 20 72 65 6d 65 6d 62 65 72 73 20 74 68 61  ne remembers tha
4b60: 74 20 74 68 65 0a 63 68 61 6e 67 65 73 20 63 6f  t the.changes co
4b70: 6d 6d 69 74 74 65 64 20 62 79 20 61 6e 20 69 6e  mmitted by an in
4b80: 6e 65 72 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  ner transaction 
4b90: 6d 69 67 68 74 20 6c 61 74 65 72 20 62 65 20 75  might later be u
4ba0: 6e 64 6f 6e 65 20 62 79 20 61 0a 72 6f 6c 6c 62  ndone by a.rollb
4bb0: 61 63 6b 20 69 6e 20 61 6e 20 6f 75 74 65 72 20  ack in an outer 
4bc0: 74 72 61 6e 73 61 63 74 69 6f 6e 2e 3c 2f 70 3e  transaction.</p>
4bd0: 3c 2f 6c 69 3e 0a 0a 3c 6c 69 3e 3c 70 3e 0a 41  </li>..<li><p>.A
4be0: 6e 6f 74 68 65 72 20 76 69 65 77 20 6f 66 20 52  nother view of R
4bf0: 45 4c 45 41 53 45 20 69 73 20 74 68 61 74 20 69  ELEASE is that i
4c00: 74 20 6d 65 72 67 65 73 20 61 20 6e 61 6d 65 64  t merges a named
4c10: 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 69 6e 74   transaction int
4c20: 6f 20 69 74 73 0a 70 61 72 65 6e 74 20 74 72 61  o its.parent tra
4c30: 6e 73 61 63 74 69 6f 6e 2c 20 73 6f 20 74 68 61  nsaction, so tha
4c40: 74 20 74 68 65 20 6e 61 6d 65 64 20 74 72 61 6e  t the named tran
4c50: 73 61 63 74 69 6f 6e 20 61 6e 64 20 69 74 73 20  saction and its 
4c60: 70 61 72 65 6e 74 20 62 65 63 6f 6d 65 0a 74 68  parent become.th
4c70: 65 20 73 61 6d 65 20 74 72 61 6e 73 61 63 74 69  e same transacti
4c80: 6f 6e 2e 20 20 41 66 74 65 72 20 52 45 4c 45 41  on.  After RELEA
4c90: 53 45 2c 20 74 68 65 20 6e 61 6d 65 64 20 74 72  SE, the named tr
4ca0: 61 6e 73 61 63 74 69 6f 6e 20 61 6e 64 20 69 74  ansaction and it
4cb0: 73 20 70 61 72 65 6e 74 0a 77 69 6c 6c 20 63 6f  s parent.will co
4cc0: 6d 6d 69 74 20 6f 72 20 72 6f 6c 6c 62 61 63 6b  mmit or rollback
4cd0: 20 74 6f 67 65 74 68 65 72 2c 20 77 68 61 74 65   together, whate
4ce0: 76 65 72 20 74 68 65 69 72 20 66 61 74 65 20 6d  ver their fate m
4cf0: 61 79 20 62 65 2e 0a 3c 2f 70 3e 3c 2f 6c 69 3e  ay be..</p></li>
4d00: 0a 0a 3c 6c 69 3e 3c 70 3e 0a 4f 6e 65 20 63 61  ..<li><p>.One ca
4d10: 6e 20 61 6c 73 6f 20 74 68 69 6e 6b 20 6f 66 20  n also think of 
4d20: 73 61 76 65 70 6f 69 6e 74 73 20 61 73 0a 22 6d  savepoints as."m
4d30: 61 72 6b 73 22 20 69 6e 20 74 68 65 20 74 72 61  arks" in the tra
4d40: 6e 73 61 63 74 69 6f 6e 20 74 69 6d 65 6c 69 6e  nsaction timelin
4d50: 65 2e 20 20 49 6e 20 74 68 69 73 20 76 69 65 77  e.  In this view
4d60: 2c 20 74 68 65 20 53 41 56 45 50 4f 49 4e 54 20  , the SAVEPOINT 
4d70: 63 6f 6d 6d 61 6e 64 0a 63 72 65 61 74 65 73 20  command.creates 
4d80: 61 20 6e 65 77 20 6d 61 72 6b 2c 20 74 68 65 20  a new mark, the 
4d90: 52 4f 4c 4c 42 41 43 4b 20 54 4f 20 63 6f 6d 6d  ROLLBACK TO comm
4da0: 61 6e 64 20 72 65 77 69 6e 64 73 20 74 68 65 20  and rewinds the 
4db0: 74 69 6d 65 6c 69 6e 65 20 62 61 63 6b 0a 74 6f  timeline back.to
4dc0: 20 61 20 70 6f 69 6e 74 20 6a 75 73 74 20 61 66   a point just af
4dd0: 74 65 72 20 74 68 65 20 6e 61 6d 65 64 20 6d 61  ter the named ma
4de0: 72 6b 2c 20 61 6e 64 20 74 68 65 20 52 45 4c 45  rk, and the RELE
4df0: 41 53 45 20 63 6f 6d 6d 61 6e 64 0a 65 72 61 73  ASE command.eras
4e00: 65 73 20 6d 61 72 6b 73 20 66 72 6f 6d 20 74 68  es marks from th
4e10: 65 20 74 69 6d 65 6c 69 6e 65 20 77 69 74 68 6f  e timeline witho
4e20: 75 74 20 61 63 74 75 61 6c 6c 79 20 6d 61 6b 69  ut actually maki
4e30: 6e 67 20 61 6e 79 0a 63 68 61 6e 67 65 73 20 74  ng any.changes t
4e40: 6f 20 74 68 65 20 64 61 74 61 62 61 73 65 2e 0a  o the database..
4e50: 3c 2f 70 3e 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e 0a  </p></li>.</ul>.
4e60: 0a 0a 0a 3c 68 33 3e 54 72 61 6e 73 61 63 74 69  ...<h3>Transacti
4e70: 6f 6e 20 4e 65 73 74 69 6e 67 20 52 75 6c 65 73  on Nesting Rules
4e80: 3c 2f 68 33 3e 0a 0a 3c 70 3e 5e 54 68 65 20 6c  </h3>..<p>^The l
4e90: 61 73 74 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  ast transaction 
4ea0: 73 74 61 72 74 65 64 20 77 69 6c 6c 20 62 65 20  started will be 
4eb0: 74 68 65 20 66 69 72 73 74 0a 74 72 61 6e 73 61  the first.transa
4ec0: 63 74 69 6f 6e 20 63 6f 6d 6d 69 74 74 65 64 20  ction committed 
4ed0: 6f 72 20 72 6f 6c 6c 65 64 20 62 61 63 6b 2e 3c  or rolled back.<
4ee0: 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20 5b 42 45  /p>..<p>^The [BE
4ef0: 47 49 4e 5d 20 63 6f 6d 6d 61 6e 64 20 6f 6e 6c  GIN] command onl
4f00: 79 20 77 6f 72 6b 73 20 69 66 20 74 68 65 20 74  y works if the t
4f10: 72 61 6e 73 61 63 74 69 6f 6e 20 73 74 61 63 6b  ransaction stack
4f20: 20 69 73 20 65 6d 70 74 79 2c 20 6f 72 0a 69 6e   is empty, or.in
4f30: 20 6f 74 68 65 72 20 77 6f 72 64 73 20 69 66 20   other words if 
4f40: 74 68 65 72 65 20 61 72 65 20 6e 6f 20 70 65 6e  there are no pen
4f50: 64 69 6e 67 20 74 72 61 6e 73 61 63 74 69 6f 6e  ding transaction
4f60: 73 2e 20 20 5e 49 66 20 74 68 65 20 74 72 61 6e  s.  ^If the tran
4f70: 73 61 63 74 69 6f 6e 0a 73 74 61 63 6b 20 69 73  saction.stack is
4f80: 20 6e 6f 74 20 65 6d 70 74 79 20 77 68 65 6e 20   not empty when 
4f90: 74 68 65 20 5b 42 45 47 49 4e 5d 20 63 6f 6d 6d  the [BEGIN] comm
4fa0: 61 6e 64 20 69 73 20 69 6e 76 6f 6b 65 64 2c 20  and is invoked, 
4fb0: 74 68 65 6e 20 74 68 65 20 63 6f 6d 6d 61 6e 64  then the command
4fc0: 0a 66 61 69 6c 73 20 77 69 74 68 20 61 6e 20 65  .fails with an e
4fd0: 72 72 6f 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54  rror.</p>..<p>^T
4fe0: 68 65 20 5b 43 4f 4d 4d 49 54 5d 20 63 6f 6d 6d  he [COMMIT] comm
4ff0: 61 6e 64 20 63 6f 6d 6d 69 74 73 20 61 6c 6c 20  and commits all 
5000: 6f 75 74 73 74 61 6e 64 69 6e 67 20 74 72 61 6e  outstanding tran
5010: 73 61 63 74 69 6f 6e 73 20 61 6e 64 20 6c 65 61  sactions and lea
5020: 76 65 73 0a 74 68 65 20 74 72 61 6e 73 61 63 74  ves.the transact
5030: 69 6f 6e 20 73 74 61 63 6b 20 65 6d 70 74 79 2e  ion stack empty.
5040: 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20 52 45  </p>..<p>^The RE
5050: 4c 45 41 53 45 20 63 6f 6d 6d 61 6e 64 20 73 74  LEASE command st
5060: 61 72 74 73 20 77 69 74 68 20 74 68 65 20 6d 6f  arts with the mo
5070: 73 74 20 72 65 63 65 6e 74 20 61 64 64 69 74 69  st recent additi
5080: 6f 6e 20 74 6f 20 74 68 65 0a 74 72 61 6e 73 61  on to the.transa
5090: 63 74 69 6f 6e 20 73 74 61 63 6b 20 61 6e 64 20  ction stack and 
50a0: 72 65 6c 65 61 73 65 73 20 73 61 76 65 70 6f 69  releases savepoi
50b0: 6e 74 73 20 62 61 63 6b 77 61 72 64 73 20 0a 69  nts backwards .i
50c0: 6e 20 74 69 6d 65 20 75 6e 74 69 6c 20 69 74 20  n time until it 
50d0: 72 65 6c 65 61 73 65 73 20 61 20 73 61 76 65 70  releases a savep
50e0: 6f 69 6e 74 20 77 69 74 68 20 61 20 6d 61 74 63  oint with a matc
50f0: 68 69 6e 67 20 73 61 76 65 70 6f 69 6e 74 2d 6e  hing savepoint-n
5100: 61 6d 65 2e 0a 5e 50 72 69 6f 72 20 73 61 76 65  ame..^Prior save
5110: 70 6f 69 6e 74 73 2c 20 65 76 65 6e 20 73 61 76  points, even sav
5120: 65 70 6f 69 6e 74 73 20 77 69 74 68 20 6d 61 74  epoints with mat
5130: 63 68 69 6e 67 20 73 61 76 65 70 6f 69 6e 74 2d  ching savepoint-
5140: 6e 61 6d 65 73 2c 20 61 72 65 0a 75 6e 63 68 61  names, are.uncha
5150: 6e 67 65 64 2e 0a 5e 49 66 20 74 68 65 20 52 45  nged..^If the RE
5160: 4c 45 41 53 45 20 63 6f 6d 6d 61 6e 64 20 63 61  LEASE command ca
5170: 75 73 65 73 20 74 68 65 0a 74 72 61 6e 73 61 63  uses the.transac
5180: 74 69 6f 6e 20 73 74 61 63 6b 20 74 6f 20 62 65  tion stack to be
5190: 63 6f 6d 65 20 65 6d 70 74 79 20 28 69 66 20 74  come empty (if t
51a0: 68 65 20 52 45 4c 45 41 53 45 20 63 6f 6d 6d 61  he RELEASE comma
51b0: 6e 64 20 72 65 6c 65 61 73 65 73 20 74 68 65 0a  nd releases the.
51c0: 6f 75 74 65 72 6d 6f 73 74 20 74 72 61 6e 73 61  outermost transa
51d0: 63 74 69 6f 6e 20 66 72 6f 6d 20 74 68 65 20 73  ction from the s
51e0: 74 61 63 6b 29 20 74 68 65 6e 20 74 68 65 20 74  tack) then the t
51f0: 72 61 6e 73 61 63 74 69 6f 6e 20 63 6f 6d 6d 69  ransaction commi
5200: 74 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65  ts.</p>..<p>^The
5210: 20 5b 52 4f 4c 4c 42 41 43 4b 5d 20 63 6f 6d 6d   [ROLLBACK] comm
5220: 61 6e 64 20 77 69 74 68 6f 75 74 20 61 20 54 4f  and without a TO
5230: 20 63 6c 61 75 73 65 20 72 6f 6c 6c 73 20 62 61   clause rolls ba
5240: 63 6b 73 20 61 6c 6c 20 74 72 61 6e 73 61 63 74  cks all transact
5250: 69 6f 6e 73 0a 61 6e 64 20 6c 65 61 76 65 73 20  ions.and leaves 
5260: 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  the transaction 
5270: 73 74 61 63 6b 20 65 6d 70 74 79 2e 3c 2f 70 3e  stack empty.</p>
5280: 0a 0a 3c 70 3e 5e 54 68 65 20 52 4f 4c 4c 42 41  ..<p>^The ROLLBA
5290: 43 4b 20 63 6f 6d 6d 61 6e 64 20 77 69 74 68 20  CK command with 
52a0: 61 20 54 4f 20 63 6c 61 75 73 65 20 72 6f 6c 6c  a TO clause roll
52b0: 73 20 62 61 63 6b 20 74 72 61 6e 73 61 63 74 69  s back transacti
52c0: 6f 6e 73 20 67 6f 69 6e 67 0a 62 61 63 6b 77 61  ons going.backwa
52d0: 72 64 73 20 69 6e 20 74 69 6d 65 20 62 61 63 6b  rds in time back
52e0: 20 74 6f 20 74 68 65 20 6d 6f 73 74 20 72 65 63   to the most rec
52f0: 65 6e 74 20 53 41 56 45 50 4f 49 4e 54 20 77 69  ent SAVEPOINT wi
5300: 74 68 20 61 20 6d 61 74 63 68 69 6e 67 20 6e 61  th a matching na
5310: 6d 65 2e 0a 5e 54 68 65 20 53 41 56 45 50 4f 49  me..^The SAVEPOI
5320: 4e 54 20 77 69 74 68 20 74 68 65 20 6d 61 74 63  NT with the matc
5330: 68 69 6e 67 20 6e 61 6d 65 20 72 65 6d 61 69 6e  hing name remain
5340: 73 20 6f 6e 20 74 68 65 20 74 72 61 6e 73 61 63  s on the transac
5350: 74 69 6f 6e 20 73 74 61 63 6b 2c 0a 62 75 74 20  tion stack,.but 
5360: 61 6c 6c 20 64 61 74 61 62 61 73 65 20 63 68 61  all database cha
5370: 6e 67 65 73 20 74 68 61 74 20 6f 63 63 75 72 72  nges that occurr
5380: 65 64 20 61 66 74 65 72 20 74 68 61 74 20 53 41  ed after that SA
5390: 56 45 50 4f 49 4e 54 20 77 61 73 20 63 72 65 61  VEPOINT was crea
53a0: 74 65 64 0a 61 72 65 20 72 6f 6c 6c 65 64 20 62  ted.are rolled b
53b0: 61 63 6b 2e 20 20 5e 49 66 20 74 68 65 20 73 61  ack.  ^If the sa
53c0: 76 65 70 6f 69 6e 74 2d 6e 61 6d 65 20 69 6e 20  vepoint-name in 
53d0: 61 20 52 4f 4c 4c 42 41 43 4b 20 54 4f 20 63 6f  a ROLLBACK TO co
53e0: 6d 6d 61 6e 64 20 64 6f 65 73 20 6e 6f 74 0a 6d  mmand does not.m
53f0: 61 74 63 68 20 61 6e 79 20 53 41 56 45 50 4f 49  atch any SAVEPOI
5400: 4e 54 20 6f 6e 20 74 68 65 20 73 74 61 63 6b 2c  NT on the stack,
5410: 20 74 68 65 6e 20 74 68 65 20 52 4f 4c 4c 42 41   then the ROLLBA
5420: 43 4b 20 63 6f 6d 6d 61 6e 64 20 66 61 69 6c 73  CK command fails
5430: 20 77 69 74 68 20 61 6e 0a 65 72 72 6f 72 20 61   with an.error a
5440: 6e 64 20 6c 65 61 76 65 73 20 74 68 65 20 73 74  nd leaves the st
5450: 61 74 65 20 6f 66 20 74 68 65 20 64 61 74 61 62  ate of the datab
5460: 61 73 65 20 75 6e 63 68 61 6e 67 65 64 2e 3c 2f  ase unchanged.</
5470: 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23  p>..<tcl>.######
5480: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5490: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
54a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
54b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
54c0: 23 23 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f  #########.Sectio
54d0: 6e 20 63 6f 6d 6d 65 6e 74 20 63 6f 6d 6d 65 6e  n comment commen
54e0: 74 20 7b 63 6f 6d 6d 65 6e 74 20 2a 63 6f 6d 6d  t {comment *comm
54f0: 65 6e 74 73 7d 0a 0a 42 75 62 62 6c 65 44 69 61  ents}..BubbleDia
5500: 67 72 61 6d 20 63 6f 6d 6d 65 6e 74 2d 73 79 6e  gram comment-syn
5510: 74 61 78 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 5e  tax.</tcl>..<p>^
5520: 43 6f 6d 6d 65 6e 74 73 20 61 72 65 20 6e 6f 74  Comments are not
5530: 20 53 51 4c 20 63 6f 6d 6d 61 6e 64 73 2c 20 62   SQL commands, b
5540: 75 74 20 63 61 6e 20 6f 63 63 75 72 20 77 69 74  ut can occur wit
5550: 68 69 6e 20 74 68 65 20 74 65 78 74 20 6f 66 0a  hin the text of.
5560: 53 51 4c 20 71 75 65 72 69 65 73 20 70 61 73 73  SQL queries pass
5570: 65 64 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 70  ed to [sqlite3_p
5580: 72 65 70 61 72 65 5f 76 32 28 29 5d 20 61 6e 64  repare_v2()] and
5590: 20 72 65 6c 61 74 65 64 20 69 6e 74 65 72 66 61   related interfa
55a0: 63 65 73 2e 0a 5e 43 6f 6d 6d 65 6e 74 73 20 61  ces..^Comments a
55b0: 72 65 20 74 72 65 61 74 65 64 20 61 73 20 77 68  re treated as wh
55c0: 69 74 65 73 70 61 63 65 20 62 79 20 74 68 65 20  itespace by the 
55d0: 70 61 72 73 65 72 2e 0a 5e 43 6f 6d 6d 65 6e 74  parser..^Comment
55e0: 73 20 63 61 6e 20 62 65 67 69 6e 20 61 6e 79 77  s can begin anyw
55f0: 68 65 72 65 20 77 68 69 74 65 73 70 61 63 65 20  here whitespace 
5600: 0a 63 61 6e 20 62 65 20 66 6f 75 6e 64 2c 20 69  .can be found, i
5610: 6e 63 6c 75 64 69 6e 67 20 69 6e 73 69 64 65 20  ncluding inside 
5620: 65 78 70 72 65 73 73 69 6f 6e 73 20 74 68 61 74  expressions that
5630: 20 73 70 61 6e 20 6d 75 6c 74 69 70 6c 65 20 6c   span multiple l
5640: 69 6e 65 73 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 5e  ines..</p>..<p>^
5650: 53 51 4c 20 63 6f 6d 6d 65 6e 74 73 20 62 65 67  SQL comments beg
5660: 69 6e 20 77 69 74 68 20 74 77 6f 20 63 6f 6e 73  in with two cons
5670: 65 63 75 74 69 76 65 20 22 2d 22 20 63 68 61 72  ecutive "-" char
5680: 61 63 74 65 72 73 20 28 41 53 43 49 49 20 30 78  acters (ASCII 0x
5690: 32 64 29 0a 61 6e 64 20 65 78 74 65 6e 64 20 75  2d).and extend u
56a0: 70 20 74 6f 20 61 6e 64 20 69 6e 63 6c 75 64 69  p to and includi
56b0: 6e 67 20 74 68 65 20 6e 65 78 74 20 6e 65 77 6c  ng the next newl
56c0: 69 6e 65 20 63 68 61 72 61 63 74 65 72 20 28 41  ine character (A
56d0: 53 43 49 49 20 30 78 30 61 29 0a 6f 72 20 75 6e  SCII 0x0a).or un
56e0: 74 69 6c 20 74 68 65 20 65 6e 64 20 6f 66 20 69  til the end of i
56f0: 6e 70 75 74 2c 20 77 68 69 63 68 65 76 65 72 20  nput, whichever 
5700: 63 6f 6d 65 73 20 66 69 72 73 74 2e 3c 2f 70 3e  comes first.</p>
5710: 0a 0a 3c 70 3e 5e 43 2d 73 74 79 6c 65 20 63 6f  ..<p>^C-style co
5720: 6d 6d 65 6e 74 73 20 62 65 67 69 6e 0a 77 69 74  mments begin.wit
5730: 68 20 22 2f 2a 22 20 61 6e 64 20 65 78 74 65 6e  h "/*" and exten
5740: 64 20 75 70 20 74 6f 20 61 6e 64 20 69 6e 63 6c  d up to and incl
5750: 75 64 69 6e 67 20 74 68 65 20 6e 65 78 74 20 22  uding the next "
5760: 2a 2f 22 20 63 68 61 72 61 63 74 65 72 20 70 61  */" character pa
5770: 69 72 0a 6f 72 20 75 6e 74 69 6c 20 74 68 65 20  ir.or until the 
5780: 65 6e 64 20 6f 66 20 69 6e 70 75 74 2c 20 77 68  end of input, wh
5790: 69 63 68 65 76 65 72 20 63 6f 6d 65 73 20 66 69  ichever comes fi
57a0: 72 73 74 2e 20 20 5e 43 2d 73 74 79 6c 65 20 63  rst.  ^C-style c
57b0: 6f 6d 6d 65 6e 74 73 0a 63 61 6e 20 73 70 61 6e  omments.can span
57c0: 20 6d 75 6c 74 69 70 6c 65 20 6c 69 6e 65 73 2e   multiple lines.
57d0: 20 3c 2f 70 3e 0a 0a 3c 70 3e 5e 43 6f 6d 6d 65   </p>..<p>^Comme
57e0: 6e 74 73 20 63 61 6e 20 61 70 70 65 61 72 20 61  nts can appear a
57f0: 6e 79 77 68 65 72 65 20 77 68 69 74 65 73 70 61  nywhere whitespa
5800: 63 65 20 63 61 6e 20 6f 63 63 75 72 2c 0a 69 6e  ce can occur,.in
5810: 63 6c 75 64 69 6e 67 20 69 6e 73 69 64 65 20 65  cluding inside e
5820: 78 70 72 65 73 73 69 6f 6e 73 20 61 6e 64 20 69  xpressions and i
5830: 6e 20 74 68 65 20 6d 69 64 64 6c 65 20 6f 66 20  n the middle of 
5840: 6f 74 68 65 72 20 53 51 4c 20 73 74 61 74 65 6d  other SQL statem
5850: 65 6e 74 73 2e 0a 5e 43 6f 6d 6d 65 6e 74 73 20  ents..^Comments 
5860: 64 6f 20 6e 6f 74 20 6e 65 73 74 2e 0a 3c 2f 70  do not nest..</p
5870: 3e 0a 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23  >...<tcl>.######
5880: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5890: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
58a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
58b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
58c0: 23 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e  ########.Section
58d0: 20 7b 43 52 45 41 54 45 20 49 4e 44 45 58 7d 20   {CREATE INDEX} 
58e0: 63 72 65 61 74 65 69 6e 64 65 78 20 7b 7b 43 52  createindex {{CR
58f0: 45 41 54 45 20 49 4e 44 45 58 7d 7d 0a 0a 42 75  EATE INDEX}}..Bu
5900: 62 62 6c 65 44 69 61 67 72 61 6d 20 63 72 65 61  bbleDiagram crea
5910: 74 65 2d 69 6e 64 65 78 2d 73 74 6d 74 20 31 0a  te-index-stmt 1.
5920: 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 69 6e  BubbleDiagram in
5930: 64 65 78 65 64 2d 63 6f 6c 75 6d 6e 0a 3c 2f 74  dexed-column.</t
5940: 63 6c 3e 0a 0a 3c 70 3e 5e 54 68 65 20 43 52 45  cl>..<p>^The CRE
5950: 41 54 45 20 49 4e 44 45 58 20 63 6f 6d 6d 61 6e  ATE INDEX comman
5960: 64 20 63 6f 6e 73 69 73 74 73 20 6f 66 20 74 68  d consists of th
5970: 65 20 6b 65 79 77 6f 72 64 73 20 22 43 52 45 41  e keywords "CREA
5980: 54 45 20 49 4e 44 45 58 22 20 66 6f 6c 6c 6f 77  TE INDEX" follow
5990: 65 64 0a 62 79 20 74 68 65 20 6e 61 6d 65 20 6f  ed.by the name o
59a0: 66 20 74 68 65 20 6e 65 77 20 69 6e 64 65 78 2c  f the new index,
59b0: 20 74 68 65 20 6b 65 79 77 6f 72 64 20 22 4f 4e   the keyword "ON
59c0: 22 2c 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 61  ", the name of a
59d0: 20 70 72 65 76 69 6f 75 73 6c 79 0a 63 72 65 61   previously.crea
59e0: 74 65 64 20 74 61 62 6c 65 20 74 68 61 74 20 69  ted table that i
59f0: 73 20 74 6f 20 62 65 20 69 6e 64 65 78 65 64 2c  s to be indexed,
5a00: 20 61 6e 64 20 61 20 70 61 72 65 6e 74 68 65 73   and a parenthes
5a10: 69 7a 65 64 20 6c 69 73 74 20 6f 66 20 6e 61 6d  ized list of nam
5a20: 65 73 20 6f 66 0a 63 6f 6c 75 6d 6e 73 20 69 6e  es of.columns in
5a30: 20 74 68 65 20 74 61 62 6c 65 20 74 68 61 74 20   the table that 
5a40: 61 72 65 20 75 73 65 64 20 66 6f 72 20 74 68 65  are used for the
5a50: 20 69 6e 64 65 78 20 6b 65 79 2e 3c 2f 70 3e 0a   index key.</p>.
5a60: 0a 3c 70 3e 5e 45 61 63 68 20 63 6f 6c 75 6d 6e  .<p>^Each column
5a70: 20 6e 61 6d 65 20 63 61 6e 20 62 65 20 66 6f 6c   name can be fol
5a80: 6c 6f 77 65 64 20 62 79 20 6f 6e 65 20 6f 66 20  lowed by one of 
5a90: 74 68 65 20 22 41 53 43 22 20 6f 72 20 22 44 45  the "ASC" or "DE
5aa0: 53 43 22 20 6b 65 79 77 6f 72 64 73 0a 74 6f 20  SC" keywords.to 
5ab0: 69 6e 64 69 63 61 74 65 20 73 6f 72 74 20 6f 72  indicate sort or
5ac0: 64 65 72 2e 20 20 5e 54 68 65 20 73 6f 72 74 20  der.  ^The sort 
5ad0: 6f 72 64 65 72 20 6d 61 79 20 6f 72 20 6d 61 79  order may or may
5ae0: 20 6e 6f 74 20 62 65 20 69 67 6e 6f 72 65 64 20   not be ignored 
5af0: 64 65 70 65 6e 64 69 6e 67 0a 6f 6e 20 74 68 65  depending.on the
5b00: 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 66   database file f
5b10: 6f 72 6d 61 74 2e 20 20 5e 54 68 65 20 22 6c 65  ormat.  ^The "le
5b20: 67 61 63 79 22 20 66 69 6c 65 20 66 6f 72 6d 61  gacy" file forma
5b30: 74 20 69 67 6e 6f 72 65 73 20 69 6e 64 65 78 0a  t ignores index.
5b40: 73 6f 72 74 20 6f 72 64 65 72 2e 20 20 5e 54 68  sort order.  ^Th
5b50: 65 20 64 65 73 63 65 6e 64 69 6e 67 20 69 6e 64  e descending ind
5b60: 65 78 20 66 69 6c 65 20 66 6f 72 6d 61 74 20 74  ex file format t
5b70: 61 6b 65 73 20 69 6e 64 65 78 20 73 6f 72 74 20  akes index sort 
5b80: 6f 72 64 65 72 0a 69 6e 74 6f 20 61 63 63 6f 75  order.into accou
5b90: 6e 74 2e 20 20 5e 28 4f 6e 6c 79 20 63 6f 70 69  nt.  ^(Only copi
5ba0: 65 73 20 6f 66 20 53 51 4c 69 74 65 20 6e 65 77  es of SQLite new
5bb0: 65 72 20 74 68 61 6e 20 5b 76 65 72 73 69 6f 6e  er than [version
5bc0: 20 33 2e 33 2e 30 5d 20 0a 28 72 65 6c 65 61 73   3.3.0] .(releas
5bd0: 65 64 20 6f 6e 20 32 30 30 36 2d 30 31 2d 31 30  ed on 2006-01-10
5be0: 29 20 61 72 65 20 61 62 6c 65 20 74 6f 20 75 6e  ) are able to un
5bf0: 64 65 72 73 74 61 6e 64 20 74 68 65 20 6e 65 77  derstand the new
5c00: 65 72 20 64 65 73 63 65 6e 64 69 6e 67 0a 69 6e  er descending.in
5c10: 64 65 78 20 66 69 6c 65 20 66 6f 72 6d 61 74 20  dex file format 
5c20: 61 6e 64 20 73 6f 20 66 6f 72 20 63 6f 6d 70 61  and so for compa
5c30: 74 69 62 69 6c 69 74 79 20 77 69 74 68 20 6f 6c  tibility with ol
5c40: 64 65 72 20 76 65 72 73 69 6f 6e 73 20 6f 66 0a  der versions of.
5c50: 53 51 4c 69 74 65 2c 20 74 68 65 20 6c 65 67 61  SQLite, the lega
5c60: 63 79 20 66 69 6c 65 20 66 6f 72 6d 61 74 20 69  cy file format i
5c70: 73 20 67 65 6e 65 72 61 74 65 64 20 62 79 20 64  s generated by d
5c80: 65 66 61 75 6c 74 2e 29 5e 20 20 5e 55 73 65 20  efault.)^  ^Use 
5c90: 74 68 65 0a 5b 6c 65 67 61 63 79 5f 66 69 6c 65  the.[legacy_file
5ca0: 5f 66 6f 72 6d 61 74 5d 20 70 72 61 67 6d 61 20  _format] pragma 
5cb0: 74 6f 20 6d 6f 64 69 66 79 20 74 68 69 73 20 62  to modify this b
5cc0: 65 68 61 76 69 6f 72 20 61 6e 64 20 67 65 6e 65  ehavior and gene
5cd0: 72 61 74 65 0a 64 61 74 61 62 61 73 65 73 20 74  rate.databases t
5ce0: 68 61 74 20 75 73 65 20 74 68 65 20 6e 65 77 65  hat use the newe
5cf0: 72 20 66 69 6c 65 20 66 6f 72 6d 61 74 2e 20 20  r file format.  
5d00: 46 75 74 75 72 65 20 76 65 72 73 69 6f 6e 73 20  Future versions 
5d10: 6f 66 20 53 51 4c 69 74 65 0a 6d 61 79 20 62 65  of SQLite.may be
5d20: 67 69 6e 20 74 6f 20 67 65 6e 65 72 61 74 65 20  gin to generate 
5d30: 74 68 65 20 6e 65 77 65 72 20 66 69 6c 65 20 66  the newer file f
5d40: 6f 72 6d 61 74 20 62 79 20 64 65 66 61 75 6c 74  ormat by default
5d50: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20 43  .</p>..<p>^The C
5d60: 4f 4c 4c 41 54 45 20 63 6c 61 75 73 65 20 6f 70  OLLATE clause op
5d70: 74 69 6f 6e 61 6c 6c 79 20 66 6f 6c 6c 6f 77 69  tionally followi
5d80: 6e 67 20 65 61 63 68 20 63 6f 6c 75 6d 6e 20 6e  ng each column n
5d90: 61 6d 65 20 64 65 66 69 6e 65 73 20 61 0a 63 6f  ame defines a.co
5da0: 6c 6c 61 74 69 6e 67 20 73 65 71 75 65 6e 63 65  llating sequence
5db0: 20 75 73 65 64 20 66 6f 72 20 74 65 78 74 20 65   used for text e
5dc0: 6e 74 72 69 65 73 20 69 6e 20 74 68 61 74 20 63  ntries in that c
5dd0: 6f 6c 75 6d 6e 2e 0a 5e 54 68 65 20 64 65 66 61  olumn..^The defa
5de0: 75 6c 74 20 63 6f 6c 6c 61 74 69 6e 67 0a 73 65  ult collating.se
5df0: 71 75 65 6e 63 65 20 69 73 20 74 68 65 20 63 6f  quence is the co
5e00: 6c 6c 61 74 69 6e 67 20 73 65 71 75 65 6e 63 65  llating sequence
5e10: 20 64 65 66 69 6e 65 64 20 66 6f 72 20 74 68 61   defined for tha
5e20: 74 20 63 6f 6c 75 6d 6e 20 69 6e 20 74 68 65 0a  t column in the.
5e30: 5b 43 52 45 41 54 45 20 54 41 42 4c 45 5d 20 73  [CREATE TABLE] s
5e40: 74 61 74 65 6d 65 6e 74 2e 20 20 5e 4f 72 20 69  tatement.  ^Or i
5e50: 66 20 6e 6f 20 63 6f 6c 6c 61 74 69 6e 67 20 73  f no collating s
5e60: 65 71 75 65 6e 63 65 20 69 73 20 6f 74 68 65 72  equence is other
5e70: 77 69 73 65 20 64 65 66 69 6e 65 64 2c 0a 74 68  wise defined,.th
5e80: 65 20 62 75 69 6c 74 2d 69 6e 20 42 49 4e 41 52  e built-in BINAR
5e90: 59 20 63 6f 6c 6c 61 74 69 6e 67 20 73 65 71 75  Y collating sequ
5ea0: 65 6e 63 65 20 69 73 20 75 73 65 64 2e 3c 2f 70  ence is used.</p
5eb0: 3e 0a 0a 3c 70 3e 54 68 65 72 65 20 61 72 65 20  >..<p>There are 
5ec0: 6e 6f 20 61 72 62 69 74 72 61 72 79 20 6c 69 6d  no arbitrary lim
5ed0: 69 74 73 20 6f 6e 20 74 68 65 20 6e 75 6d 62 65  its on the numbe
5ee0: 72 20 6f 66 20 69 6e 64 69 63 65 73 20 74 68 61  r of indices tha
5ef0: 74 20 63 61 6e 20 62 65 0a 61 74 74 61 63 68 65  t can be.attache
5f00: 64 20 74 6f 20 61 20 73 69 6e 67 6c 65 20 74 61  d to a single ta
5f10: 62 6c 65 2e 20 20 5e 28 54 68 65 20 6e 75 6d 62  ble.  ^(The numb
5f20: 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e  er of columns in
5f30: 20 61 6e 20 69 6e 64 65 78 20 69 73 20 0a 6c 69   an index is .li
5f40: 6d 69 74 65 64 20 74 6f 20 74 68 65 20 76 61 6c  mited to the val
5f50: 75 65 20 73 65 74 20 62 79 0a 5b 73 71 6c 69 74  ue set by.[sqlit
5f60: 65 33 5f 6c 69 6d 69 74 5d 28 5b 53 51 4c 49 54  e3_limit]([SQLIT
5f70: 45 5f 4c 49 4d 49 54 5f 43 4f 4c 55 4d 4e 5d 2c  E_LIMIT_COLUMN],
5f80: 2e 2e 2e 29 2e 29 5e 3c 2f 70 3e 0a 0a 3c 70 3e  ...).)^</p>..<p>
5f90: 5e 49 66 20 74 68 65 20 55 4e 49 51 55 45 20 6b  ^If the UNIQUE k
5fa0: 65 79 77 6f 72 64 20 61 70 70 65 61 72 73 20 62  eyword appears b
5fb0: 65 74 77 65 65 6e 20 43 52 45 41 54 45 20 61 6e  etween CREATE an
5fc0: 64 20 49 4e 44 45 58 20 74 68 65 6e 20 64 75 70  d INDEX then dup
5fd0: 6c 69 63 61 74 65 0a 69 6e 64 65 78 20 65 6e 74  licate.index ent
5fe0: 72 69 65 73 20 61 72 65 20 6e 6f 74 20 61 6c 6c  ries are not all
5ff0: 6f 77 65 64 2e 20 20 5e 41 6e 79 20 61 74 74 65  owed.  ^Any atte
6000: 6d 70 74 20 74 6f 20 69 6e 73 65 72 74 20 61 20  mpt to insert a 
6010: 64 75 70 6c 69 63 61 74 65 20 65 6e 74 72 79 0a  duplicate entry.
6020: 77 69 6c 6c 20 72 65 73 75 6c 74 20 69 6e 20 61  will result in a
6030: 6e 20 65 72 72 6f 72 2e 20 20 5e 46 6f 72 20 74  n error.  ^For t
6040: 68 65 20 70 75 72 70 6f 73 65 73 20 6f 66 20 75  he purposes of u
6050: 6e 69 71 75 65 20 69 6e 64 69 63 65 73 2c 20 61  nique indices, a
6060: 6c 6c 20 4e 55 4c 4c 20 76 61 6c 75 65 73 0a 61  ll NULL values.a
6070: 72 65 20 63 6f 6e 73 69 64 65 72 65 64 20 74 6f  re considered to
6080: 20 64 69 66 66 65 72 65 6e 74 20 66 72 6f 6d 20   different from 
6090: 61 6c 6c 20 6f 74 68 65 72 20 4e 55 4c 4c 20 76  all other NULL v
60a0: 61 6c 75 65 73 20 61 6e 64 20 61 72 65 20 74 68  alues and are th
60b0: 75 73 20 75 6e 69 71 75 65 2e 0a 54 68 69 73 20  us unique..This 
60c0: 69 73 20 6f 6e 65 20 6f 66 20 74 68 65 20 74 77  is one of the tw
60d0: 6f 20 70 6f 73 73 69 62 6c 65 20 69 6e 74 65 72  o possible inter
60e0: 70 72 65 74 61 74 69 6f 6e 73 20 6f 66 20 74 68  pretations of th
60f0: 65 20 53 51 4c 2d 39 32 20 73 74 61 6e 64 61 72  e SQL-92 standar
6100: 64 0a 28 74 68 65 20 6c 61 6e 67 75 61 67 65 20  d.(the language 
6110: 69 6e 20 74 68 65 20 73 74 61 6e 64 61 72 64 20  in the standard 
6120: 69 73 20 61 6d 62 69 67 75 69 6f 75 73 29 20 61  is ambiguious) a
6130: 6e 64 20 69 73 20 74 68 65 20 69 6e 74 65 72 70  nd is the interp
6140: 72 65 74 61 74 69 6f 6e 0a 66 6f 6c 6c 6f 77 65  retation.followe
6150: 64 20 62 79 20 50 6f 73 74 67 72 65 53 51 4c 2c  d by PostgreSQL,
6160: 20 4d 79 53 51 4c 2c 20 46 69 72 65 62 69 72 64   MySQL, Firebird
6170: 2c 20 61 6e 64 20 4f 72 61 63 6c 65 2e 20 20 49  , and Oracle.  I
6180: 6e 66 6f 72 6d 69 78 20 61 6e 64 0a 4d 69 63 72  nformix and.Micr
6190: 6f 73 6f 66 74 20 53 51 4c 20 53 65 72 76 65 72  osoft SQL Server
61a0: 20 66 6f 6c 6c 6f 77 20 74 68 65 20 6f 74 68 65   follow the othe
61b0: 72 20 69 6e 74 65 72 70 72 65 74 61 74 69 6f 6e  r interpretation
61c0: 20 6f 66 20 74 68 65 20 73 74 61 6e 64 61 72 64   of the standard
61d0: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 49 66 20 74 68  .</p>..<p>^If th
61e0: 65 20 6f 70 74 69 6f 6e 61 6c 20 49 46 20 4e 4f  e optional IF NO
61f0: 54 20 45 58 49 53 54 53 20 63 6c 61 75 73 65 20  T EXISTS clause 
6200: 69 73 20 70 72 65 73 65 6e 74 20 61 6e 64 20 61  is present and a
6210: 6e 6f 74 68 65 72 20 69 6e 64 65 78 0a 77 69 74  nother index.wit
6220: 68 20 74 68 65 20 73 61 6d 65 20 6e 61 6d 65 20  h the same name 
6230: 61 6c 65 61 64 79 20 65 78 69 73 74 73 2c 20 74  aleady exists, t
6240: 68 65 6e 20 74 68 69 73 20 63 6f 6d 6d 61 6e 64  hen this command
6250: 20 62 65 63 6f 6d 65 73 20 61 20 6e 6f 2d 6f 70   becomes a no-op
6260: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 49 6e 64 65 78  .</p>..<p>^Index
6270: 65 73 20 61 72 65 20 72 65 6d 6f 76 65 64 20 77  es are removed w
6280: 69 74 68 20 74 68 65 20 5b 44 52 4f 50 20 49 4e  ith the [DROP IN
6290: 44 45 58 5d 20 63 6f 6d 6d 61 6e 64 2e 3c 2f 70  DEX] command.</p
62a0: 3e 0a 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23  >...<tcl>.######
62b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
62c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
62d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
62e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
62f0: 23 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e  ########.Section
6300: 20 7b 43 52 45 41 54 45 20 54 41 42 4c 45 7d 20   {CREATE TABLE} 
6310: 7b 63 72 65 61 74 65 74 61 62 6c 65 7d 20 7b 7b  {createtable} {{
6320: 43 52 45 41 54 45 20 54 41 42 4c 45 7d 7d 0a 0a  CREATE TABLE}}..
6330: 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 63 72  BubbleDiagram cr
6340: 65 61 74 65 2d 74 61 62 6c 65 2d 73 74 6d 74 20  eate-table-stmt 
6350: 31 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20  1.BubbleDiagram 
6360: 63 6f 6c 75 6d 6e 2d 64 65 66 0a 42 75 62 62 6c  column-def.Bubbl
6370: 65 44 69 61 67 72 61 6d 20 74 79 70 65 2d 6e 61  eDiagram type-na
6380: 6d 65 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d  me.BubbleDiagram
6390: 20 63 6f 6c 75 6d 6e 2d 63 6f 6e 73 74 72 61 69   column-constrai
63a0: 6e 74 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d  nt.BubbleDiagram
63b0: 20 74 61 62 6c 65 2d 63 6f 6e 73 74 72 61 69 6e   table-constrain
63c0: 74 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20  t.BubbleDiagram 
63d0: 66 6f 72 65 69 67 6e 2d 6b 65 79 2d 63 6c 61 75  foreign-key-clau
63e0: 73 65 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 5e 41  se.</tcl>..<p>^A
63f0: 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 73 74   CREATE TABLE st
6400: 61 74 65 6d 65 6e 74 20 69 73 20 62 61 73 69 63  atement is basic
6410: 61 6c 6c 79 20 74 68 65 20 6b 65 79 77 6f 72 64  ally the keyword
6420: 73 20 22 43 52 45 41 54 45 20 54 41 42 4c 45 22  s "CREATE TABLE"
6430: 0a 66 6f 6c 6c 6f 77 65 64 20 62 79 20 74 68 65  .followed by the
6440: 20 6e 61 6d 65 20 6f 66 20 61 20 6e 65 77 20 74   name of a new t
6450: 61 62 6c 65 20 61 6e 64 20 61 20 70 61 72 65 6e  able and a paren
6460: 74 68 65 73 69 7a 65 64 20 6c 69 73 74 20 6f 66  thesized list of
6470: 20 63 6f 6c 75 6d 6e 0a 64 65 66 69 6e 69 74 69   column.definiti
6480: 6f 6e 73 20 61 6e 64 20 63 6f 6e 73 74 72 61 69  ons and constrai
6490: 6e 74 73 2e 20 20 0a 5e 54 61 62 6c 65 73 20 6e  nts.  .^Tables n
64a0: 61 6d 65 73 20 74 68 61 74 20 62 65 67 69 6e 20  ames that begin 
64b0: 77 69 74 68 20 22 3c 62 3e 73 71 6c 69 74 65 5f  with "<b>sqlite_
64c0: 3c 2f 62 3e 22 20 61 72 65 20 72 65 73 65 72 76  </b>" are reserv
64d0: 65 64 0a 66 6f 72 20 75 73 65 20 62 79 20 53 51  ed.for use by SQ
64e0: 4c 69 74 65 20 69 74 73 65 6c 66 20 61 6e 64 20  Lite itself and 
64f0: 63 61 6e 6e 6f 74 20 6e 6f 72 6d 61 6c 6c 79 0a  cannot normally.
6500: 61 70 70 65 61 72 20 69 6e 20 61 20 43 52 45 41  appear in a CREA
6510: 54 45 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65  TE TABLE stateme
6520: 6e 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 45 61 63  nt.</p>..<p>^Eac
6530: 68 20 63 6f 6c 75 6d 6e 20 64 65 66 69 6e 69 74  h column definit
6540: 69 6f 6e 20 69 73 20 74 68 65 20 6e 61 6d 65 20  ion is the name 
6550: 6f 66 20 74 68 65 20 63 6f 6c 75 6d 6e 20 6f 70  of the column op
6560: 74 69 6f 6e 61 6c 6c 79 20 66 6f 6c 6c 6f 77 65  tionally followe
6570: 64 20 62 79 20 74 68 65 0a 5b 64 61 74 61 74 79  d by the.[dataty
6580: 70 65 5d 20 66 6f 72 20 74 68 61 74 20 63 6f 6c  pe] for that col
6590: 75 6d 6e 2c 20 74 68 65 6e 20 6f 6e 65 20 6f 72  umn, then one or
65a0: 20 6d 6f 72 65 20 6f 70 74 69 6f 6e 61 6c 20 63   more optional c
65b0: 6f 6c 75 6d 6e 20 63 6f 6e 73 74 72 61 69 6e 74  olumn constraint
65c0: 73 2e 0a 5e 53 51 4c 69 74 65 20 75 73 65 73 20  s..^SQLite uses 
65d0: 5b 64 79 6e 61 6d 69 63 20 74 79 70 69 6e 67 5d  [dynamic typing]
65e0: 3b 20 0a 74 68 65 20 64 61 74 61 74 79 70 65 20  ; .the datatype 
65f0: 66 6f 72 20 74 68 65 20 63 6f 6c 75 6d 6e 20 64  for the column d
6600: 6f 65 73 20 6e 6f 74 20 72 65 73 74 72 69 63 74  oes not restrict
6610: 20 77 68 61 74 20 64 61 74 61 20 6d 61 79 20 62   what data may b
6620: 65 20 70 75 74 0a 69 6e 20 74 68 61 74 20 63 6f  e put.in that co
6630: 6c 75 6d 6e 2e 0a 5e 54 68 65 20 55 4e 49 51 55  lumn..^The UNIQU
6640: 45 20 63 6f 6e 73 74 72 61 69 6e 74 20 63 61 75  E constraint cau
6650: 73 65 73 20 61 6e 20 75 6e 69 71 75 65 20 69 6e  ses an unique in
6660: 64 65 78 20 74 6f 20 62 65 20 63 72 65 61 74 65  dex to be create
6670: 64 20 6f 6e 20 74 68 65 20 73 70 65 63 69 66 69  d on the specifi
6680: 65 64 0a 63 6f 6c 75 6d 6e 73 2e 20 20 5e 41 6c  ed.columns.  ^Al
6690: 6c 20 4e 55 4c 4c 20 76 61 6c 75 65 73 20 61 72  l NULL values ar
66a0: 65 20 63 6f 6e 73 69 64 65 72 65 64 20 64 69 66  e considered dif
66b0: 66 65 72 65 6e 74 20 66 72 6f 6d 20 65 61 63 68  ferent from each
66c0: 20 6f 74 68 65 72 20 61 6e 64 20 66 72 6f 6d 0a   other and from.
66d0: 61 6c 6c 20 6f 74 68 65 72 20 76 61 6c 75 65 73  all other values
66e0: 20 66 6f 72 20 74 68 65 20 70 75 72 70 6f 73 65   for the purpose
66f0: 20 6f 66 20 64 65 74 65 72 6d 69 6e 69 6e 67 20   of determining 
6700: 75 6e 69 71 75 65 6e 65 73 73 2c 20 68 65 6e 63  uniqueness, henc
6710: 65 20 61 20 55 4e 49 51 55 45 0a 63 6f 6c 75 6d  e a UNIQUE.colum
6720: 6e 20 6d 61 79 20 63 6f 6e 74 61 69 6e 20 6d 75  n may contain mu
6730: 6c 74 69 70 6c 65 20 65 6e 74 72 69 65 73 20 77  ltiple entries w
6740: 69 74 68 20 74 68 65 20 76 61 6c 75 65 20 6f 66  ith the value of
6750: 20 4e 55 4c 4c 2e 0a 5e 54 68 65 20 43 4f 4c 4c   NULL..^The COLL
6760: 41 54 45 20 63 6c 61 75 73 65 20 73 70 65 63 69  ATE clause speci
6770: 66 69 65 73 20 77 68 61 74 20 74 65 78 74 20 0a  fies what text .
6780: 5b 63 6f 6c 6c 61 74 69 6e 67 20 66 75 6e 63 74  [collating funct
6790: 69 6f 6e 5d 20 74 6f 20 75 73 65 20 77 68 65 6e  ion] to use when
67a0: 20 63 6f 6d 70 61 72 69 6e 67 20 74 65 78 74 20   comparing text 
67b0: 65 6e 74 72 69 65 73 20 66 6f 72 20 74 68 65 20  entries for the 
67c0: 63 6f 6c 75 6d 6e 2e 20 20 0a 5e 54 68 65 20 62  column.  .^The b
67d0: 75 69 6c 74 2d 69 6e 20 5b 42 49 4e 41 52 59 5d  uilt-in [BINARY]
67e0: 20 63 6f 6c 6c 61 74 69 6e 67 20 66 75 6e 63 74   collating funct
67f0: 69 6f 6e 20 69 73 20 75 73 65 64 20 62 79 20 64  ion is used by d
6800: 65 66 61 75 6c 74 2e 0a 3c 70 3e 0a 5e 54 68 65  efault..<p>.^The
6810: 20 44 45 46 41 55 4c 54 20 63 6f 6e 73 74 72 61   DEFAULT constra
6820: 69 6e 74 20 73 70 65 63 69 66 69 65 73 20 61 20  int specifies a 
6830: 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 74 6f  default value to
6840: 20 75 73 65 20 77 68 65 6e 20 64 6f 69 6e 67 20   use when doing 
6850: 61 6e 20 5b 49 4e 53 45 52 54 5d 2e 0a 5e 54 68  an [INSERT]..^Th
6860: 65 20 76 61 6c 75 65 20 6d 61 79 20 62 65 20 4e  e value may be N
6870: 55 4c 4c 2c 20 61 20 73 74 72 69 6e 67 20 63 6f  ULL, a string co
6880: 6e 73 74 61 6e 74 2c 20 61 20 6e 75 6d 62 65 72  nstant, a number
6890: 2c 20 6f 72 20 61 20 63 6f 6e 73 74 61 6e 74 20  , or a constant 
68a0: 65 78 70 72 65 73 73 69 6f 6e 0a 65 6e 63 6c 6f  expression.enclo
68b0: 73 65 64 20 69 6e 20 70 61 72 65 6e 74 68 65 73  sed in parenthes
68c0: 65 73 2e 0a 5e 54 68 65 20 64 65 66 61 75 6c 74  es..^The default
68d0: 20 76 61 6c 75 65 20 6d 61 79 20 61 6c 73 6f 20   value may also 
68e0: 62 65 20 6f 6e 65 20 6f 66 20 74 68 65 20 73 70  be one of the sp
68f0: 65 63 69 61 6c 20 63 61 73 65 2d 69 6e 64 65 70  ecial case-indep
6900: 65 6e 64 61 6e 74 0a 6b 65 79 77 6f 72 64 73 20  endant.keywords 
6910: 43 55 52 52 45 4e 54 5f 54 49 4d 45 2c 20 43 55  CURRENT_TIME, CU
6920: 52 52 45 4e 54 5f 44 41 54 45 20 6f 72 20 43 55  RRENT_DATE or CU
6930: 52 52 45 4e 54 5f 54 49 4d 45 53 54 41 4d 50 2e  RRENT_TIMESTAMP.
6940: 20 20 5e 49 66 20 74 68 65 20 76 61 6c 75 65 20    ^If the value 
6950: 69 73 0a 4e 55 4c 4c 2c 20 61 20 73 74 72 69 6e  is.NULL, a strin
6960: 67 20 63 6f 6e 73 74 61 6e 74 20 6f 72 20 6e 75  g constant or nu
6970: 6d 62 65 72 2c 20 69 74 20 69 73 20 69 6e 73 65  mber, it is inse
6980: 72 74 65 64 20 69 6e 74 6f 20 74 68 65 20 63 6f  rted into the co
6990: 6c 75 6d 6e 0a 77 68 65 6e 65 76 65 72 20 61 6e  lumn.whenever an
69a0: 20 49 4e 53 45 52 54 20 73 74 61 74 65 6d 65 6e   INSERT statemen
69b0: 74 20 74 68 61 74 20 64 6f 65 73 20 6e 6f 74 20  t that does not 
69c0: 73 70 65 63 69 66 79 20 61 20 76 61 6c 75 65 20  specify a value 
69d0: 66 6f 72 20 74 68 65 20 63 6f 6c 75 6d 6e 20 69  for the column i
69e0: 73 0a 65 78 65 63 75 74 65 64 2e 20 5e 49 66 20  s.executed. ^If 
69f0: 74 68 65 20 76 61 6c 75 65 20 69 73 20 43 55 52  the value is CUR
6a00: 52 45 4e 54 5f 54 49 4d 45 2c 20 43 55 52 52 45  RENT_TIME, CURRE
6a10: 4e 54 5f 44 41 54 45 20 6f 72 20 43 55 52 52 45  NT_DATE or CURRE
6a20: 4e 54 5f 54 49 4d 45 53 54 41 4d 50 2c 20 74 68  NT_TIMESTAMP, th
6a30: 65 6e 0a 74 68 65 20 63 75 72 72 65 6e 74 20 55  en.the current U
6a40: 54 43 20 64 61 74 65 20 61 6e 64 2f 6f 72 20 74  TC date and/or t
6a50: 69 6d 65 20 69 73 20 69 6e 73 65 72 74 65 64 20  ime is inserted 
6a60: 69 6e 74 6f 20 74 68 65 20 63 6f 6c 75 6d 6e 73  into the columns
6a70: 2e 20 5e 46 6f 72 0a 43 55 52 52 45 4e 54 5f 54  . ^For.CURRENT_T
6a80: 49 4d 45 2c 20 74 68 65 20 66 6f 72 6d 61 74 20  IME, the format 
6a90: 69 73 20 48 48 3a 4d 4d 3a 53 53 2e 20 5e 46 6f  is HH:MM:SS. ^Fo
6aa0: 72 20 43 55 52 52 45 4e 54 5f 44 41 54 45 2c 20  r CURRENT_DATE, 
6ab0: 59 59 59 59 2d 4d 4d 2d 44 44 2e 0a 5e 54 68 65  YYYY-MM-DD..^The
6ac0: 20 66 6f 72 6d 61 74 20 66 6f 72 20 43 55 52 52   format for CURR
6ad0: 45 4e 54 5f 54 49 4d 45 53 54 41 4d 50 20 69 73  ENT_TIMESTAMP is
6ae0: 20 22 59 59 59 59 2d 4d 4d 2d 44 44 20 48 48 3a   "YYYY-MM-DD HH:
6af0: 4d 4d 3a 53 53 22 2e 0a 3c 2f 70 3e 0a 0a 3c 70  MM:SS"..</p>..<p
6b00: 3e 5e 28 54 68 65 20 50 52 49 4d 41 52 59 20 4b  >^(The PRIMARY K
6b10: 45 59 20 61 74 74 72 69 62 75 74 65 20 6e 6f 72  EY attribute nor
6b20: 6d 61 6c 6c 79 20 63 72 65 61 74 65 73 20 61 20  mally creates a 
6b30: 55 4e 49 51 55 45 20 69 6e 64 65 78 20 6f 6e 0a  UNIQUE index on.
6b40: 74 68 65 20 63 6f 6c 75 6d 6e 20 6f 72 20 63 6f  the column or co
6b50: 6c 75 6d 6e 73 20 74 68 61 74 20 61 72 65 20 73  lumns that are s
6b60: 70 65 63 69 66 69 65 64 20 61 73 20 74 68 65 20  pecified as the 
6b70: 50 52 49 4d 41 52 59 20 4b 45 59 2e 20 20 54 68  PRIMARY KEY.  Th
6b80: 65 20 6f 6e 6c 79 0a 65 78 63 65 70 74 69 6f 6e  e only.exception
6b90: 20 74 6f 20 74 68 69 73 20 62 65 68 61 76 69 6f   to this behavio
6ba0: 72 20 69 73 20 73 70 65 63 69 61 6c 20 5b 49 4e  r is special [IN
6bb0: 54 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45  TEGER PRIMARY KE
6bc0: 59 5d 20 63 6f 6c 75 6d 6e 2c 0a 64 65 73 63 72  Y] column,.descr
6bd0: 69 62 65 64 20 62 65 6c 6f 77 2e 29 5e 0a 5e 28  ibed below.)^.^(
6be0: 41 63 63 6f 72 64 69 6e 67 20 74 6f 20 74 68 65  According to the
6bf0: 20 53 51 4c 20 73 74 61 6e 64 61 72 64 2c 20 50   SQL standard, P
6c00: 52 49 4d 41 52 59 20 4b 45 59 20 73 68 6f 75 6c  RIMARY KEY shoul
6c10: 64 20 69 6d 70 6c 79 20 4e 4f 54 20 4e 55 4c 4c  d imply NOT NULL
6c20: 2e 0a 55 6e 66 6f 72 74 75 6e 61 74 65 6c 79 2c  ..Unfortunately,
6c30: 20 64 75 65 20 74 6f 20 61 20 6c 6f 6e 67 2d 73   due to a long-s
6c40: 74 61 6e 64 69 6e 67 20 63 6f 64 69 6e 67 20 6f  tanding coding o
6c50: 76 65 72 73 69 67 68 74 2c 20 74 68 69 73 20 69  versight, this i
6c60: 73 20 6e 6f 74 20 0a 74 68 65 20 63 61 73 65 20  s not .the case 
6c70: 69 6e 20 53 51 4c 69 74 65 2e 20 20 53 51 4c 69  in SQLite.  SQLi
6c80: 74 65 20 61 6c 6c 6f 77 73 20 4e 55 4c 4c 20 76  te allows NULL v
6c90: 61 6c 75 65 73 0a 69 6e 20 61 20 50 52 49 4d 41  alues.in a PRIMA
6ca0: 52 59 20 4b 45 59 20 63 6f 6c 75 6d 6e 2e 29 5e  RY KEY column.)^
6cb0: 20 20 57 65 20 63 6f 75 6c 64 20 63 68 61 6e 67    We could chang
6cc0: 65 20 53 51 4c 69 74 65 20 74 6f 20 63 6f 6e 66  e SQLite to conf
6cd0: 6f 72 6d 20 74 6f 20 74 68 65 0a 73 74 61 6e 64  orm to the.stand
6ce0: 61 72 64 20 28 61 6e 64 20 77 65 20 6d 69 67 68  ard (and we migh
6cf0: 74 20 64 6f 20 73 6f 20 69 6e 20 74 68 65 20 66  t do so in the f
6d00: 75 74 75 72 65 29 2c 20 62 75 74 20 62 79 20 74  uture), but by t
6d10: 68 65 20 74 69 6d 65 20 74 68 65 0a 6f 76 65 72  he time the.over
6d20: 73 69 67 68 74 20 77 61 73 20 64 69 73 63 6f 76  sight was discov
6d30: 65 72 65 64 2c 20 53 51 4c 69 74 65 20 77 61 73  ered, SQLite was
6d40: 20 69 6e 20 73 75 63 68 20 77 69 64 65 20 75 73   in such wide us
6d50: 65 20 74 68 61 74 20 77 65 20 66 65 61 72 65 64  e that we feared
6d60: 0a 62 72 65 61 6b 69 6e 67 20 6c 65 67 61 63 79  .breaking legacy
6d70: 20 63 6f 64 65 20 69 66 20 77 65 20 66 69 78 65   code if we fixe
6d80: 64 20 74 68 65 20 70 72 6f 62 6c 65 6d 2e 20 20  d the problem.  
6d90: 53 6f 20 66 6f 72 20 6e 6f 77 20 77 65 20 68 61  So for now we ha
6da0: 76 65 0a 63 68 6f 73 65 6e 20 74 6f 20 63 6f 6e  ve.chosen to con
6db0: 74 69 6e 75 65 20 61 6c 6c 6f 77 69 6e 67 20 4e  tinue allowing N
6dc0: 55 4c 4c 73 20 69 6e 20 50 52 49 4d 41 52 59 20  ULLs in PRIMARY 
6dd0: 4b 45 59 20 63 6f 6c 75 6d 6e 73 2e 0a 44 65 76  KEY columns..Dev
6de0: 65 6c 6f 70 65 72 73 20 73 68 6f 75 6c 64 20 62  elopers should b
6df0: 65 20 61 77 61 72 65 2c 20 68 6f 77 65 76 65 72  e aware, however
6e00: 2c 20 74 68 61 74 20 77 65 20 6d 61 79 20 63 68  , that we may ch
6e10: 61 6e 67 65 20 53 51 4c 69 74 65 20 74 6f 0a 63  ange SQLite to.c
6e20: 6f 6e 66 6f 72 6d 20 74 6f 20 74 68 65 20 53 51  onform to the SQ
6e30: 4c 20 73 74 61 6e 64 61 72 64 20 69 6e 20 66 75  L standard in fu
6e40: 74 75 72 65 20 61 6e 64 20 73 68 6f 75 6c 64 20  ture and should 
6e50: 64 65 73 69 67 6e 20 6e 65 77 20 70 72 6f 67 72  design new progr
6e60: 61 6d 73 0a 61 63 63 6f 72 64 69 6e 67 6c 79 2e  ams.accordingly.
6e70: 3c 2f 70 3e 0a 0a 3c 70 3e 5e 53 51 4c 69 74 65  </p>..<p>^SQLite
6e80: 20 75 73 65 73 20 5b 64 79 6e 61 6d 69 63 20 74   uses [dynamic t
6e90: 79 70 69 6e 67 5d 20 69 6e 73 74 65 61 64 20 6f  yping] instead o
6ea0: 66 20 73 74 61 74 69 63 20 74 79 70 69 6e 67 2e  f static typing.
6eb0: 20 20 5e 45 78 63 65 70 74 20 66 6f 72 20 74 68    ^Except for th
6ec0: 65 0a 73 70 65 63 69 61 6c 20 63 61 73 65 20 6f  e.special case o
6ed0: 66 20 5b 49 4e 54 45 47 45 52 20 50 52 49 4d 41  f [INTEGER PRIMA
6ee0: 52 59 20 4b 45 59 5d 2c 20 53 51 4c 69 74 65 20  RY KEY], SQLite 
6ef0: 77 69 6c 6c 20 61 6c 6c 6f 77 20 76 61 6c 75 65  will allow value
6f00: 73 20 6f 66 20 61 6e 79 0a 74 79 70 65 20 74 6f  s of any.type to
6f10: 20 62 65 20 73 74 6f 72 65 64 20 69 6e 20 61 6e   be stored in an
6f20: 79 20 63 6f 6c 75 6d 6e 20 72 65 67 61 72 64 6c  y column regardl
6f30: 65 73 73 20 6f 66 20 74 68 65 20 64 65 63 6c 61  ess of the decla
6f40: 72 65 64 20 64 61 74 61 74 79 70 65 20 6f 66 0a  red datatype of.
6f50: 74 68 61 74 20 63 6f 6c 75 6d 6e 2e 20 20 5e 54  that column.  ^T
6f60: 68 65 20 64 65 63 6c 61 72 65 64 20 64 61 74 61  he declared data
6f70: 74 79 70 65 20 69 73 20 61 20 5b 61 66 66 69 6e  type is a [affin
6f80: 69 74 79 20 7c 20 74 79 70 65 20 61 66 66 69 6e  ity | type affin
6f90: 69 74 79 5d 20 74 68 61 74 0a 53 51 4c 69 74 65  ity] that.SQLite
6fa0: 20 61 74 74 65 6d 70 74 73 20 74 6f 20 63 6f 6d   attempts to com
6fb0: 70 6c 79 20 77 69 74 68 2c 20 62 75 74 20 74 68  ply with, but th
6fc0: 65 20 6f 70 65 72 61 74 69 6f 6e 20 77 69 6c 6c  e operation will
6fd0: 20 70 72 6f 63 65 65 64 20 65 76 65 6e 20 69 66   proceed even if
6fe0: 0a 63 6f 6d 70 6c 69 61 6e 63 65 20 69 73 20 6e  .compliance is n
6ff0: 6f 74 20 70 6f 73 73 69 62 6c 65 2e 3c 2f 70 3e  ot possible.</p>
7000: 0a 0a 3c 70 3e 5e 49 66 20 74 68 65 20 22 54 45  ..<p>^If the "TE
7010: 4d 50 22 20 6f 72 20 22 54 45 4d 50 4f 52 41 52  MP" or "TEMPORAR
7020: 59 22 20 6b 65 79 77 6f 72 64 20 6f 63 63 75 72  Y" keyword occur
7030: 73 20 69 6e 20 62 65 74 77 65 65 6e 20 22 43 52  s in between "CR
7040: 45 41 54 45 22 0a 61 6e 64 20 22 54 41 42 4c 45  EATE".and "TABLE
7050: 22 20 74 68 65 6e 20 74 68 65 20 74 61 62 6c 65  " then the table
7060: 20 74 68 61 74 20 69 73 20 63 72 65 61 74 65 64   that is created
7070: 20 69 73 20 6f 6e 6c 79 20 76 69 73 69 62 6c 65   is only visible
7080: 0a 77 69 74 68 69 6e 20 74 68 61 74 20 73 61 6d  .within that sam
7090: 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  e database conne
70a0: 63 74 69 6f 6e 0a 61 6e 64 20 69 73 20 61 75 74  ction.and is aut
70b0: 6f 6d 61 74 69 63 61 6c 6c 79 20 64 65 6c 65 74  omatically delet
70c0: 65 64 20 77 68 65 6e 0a 74 68 65 20 64 61 74 61  ed when.the data
70d0: 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  base connection 
70e0: 69 73 20 63 6c 6f 73 65 64 2e 20 20 5e 41 6e 79  is closed.  ^Any
70f0: 20 69 6e 64 69 63 65 73 20 63 72 65 61 74 65 64   indices created
7100: 20 6f 6e 20 61 20 74 65 6d 70 6f 72 61 72 79 20   on a temporary 
7110: 74 61 62 6c 65 0a 61 72 65 20 61 6c 73 6f 20 74  table.are also t
7120: 65 6d 70 6f 72 61 72 79 2e 20 20 5e 54 65 6d 70  emporary.  ^Temp
7130: 6f 72 61 72 79 20 74 61 62 6c 65 73 20 61 6e 64  orary tables and
7140: 20 69 6e 64 69 63 65 73 20 61 72 65 20 73 74 6f   indices are sto
7150: 72 65 64 20 69 6e 20 61 0a 73 65 70 61 72 61 74  red in a.separat
7160: 65 20 66 69 6c 65 20 64 69 73 74 69 6e 63 74 20  e file distinct 
7170: 66 72 6f 6d 20 74 68 65 20 6d 61 69 6e 20 64 61  from the main da
7180: 74 61 62 61 73 65 20 66 69 6c 65 2e 3c 2f 70 3e  tabase file.</p>
7190: 0a 0a 3c 70 3e 20 5e 49 66 20 61 20 26 6c 74 3b  ..<p> ^If a &lt;
71a0: 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 26 67 74  database-name&gt
71b0: 3b 20 69 73 20 73 70 65 63 69 66 69 65 64 2c 20  ; is specified, 
71c0: 74 68 65 6e 20 74 68 65 20 74 61 62 6c 65 20 69  then the table i
71d0: 73 20 63 72 65 61 74 65 64 20 69 6e 20 0a 74 68  s created in .th
71e0: 65 20 6e 61 6d 65 64 20 64 61 74 61 62 61 73 65  e named database
71f0: 2e 20 5e 49 74 20 69 73 20 61 6e 20 65 72 72 6f  . ^It is an erro
7200: 72 20 74 6f 20 73 70 65 63 69 66 79 20 62 6f 74  r to specify bot
7210: 68 20 61 20 26 6c 74 3b 64 61 74 61 62 61 73 65  h a &lt;database
7220: 2d 6e 61 6d 65 26 67 74 3b 0a 61 6e 64 20 74 68  -name&gt;.and th
7230: 65 20 54 45 4d 50 20 6b 65 79 77 6f 72 64 2c 20  e TEMP keyword, 
7240: 75 6e 6c 65 73 73 20 74 68 65 20 26 6c 74 3b 64  unless the &lt;d
7250: 61 74 61 62 61 73 65 2d 6e 61 6d 65 26 67 74 3b  atabase-name&gt;
7260: 20 69 73 20 22 74 65 6d 70 22 2e 20 5e 49 66 20   is "temp". ^If 
7270: 6e 6f 0a 64 61 74 61 62 61 73 65 20 6e 61 6d 65  no.database name
7280: 20 69 73 20 73 70 65 63 69 66 69 65 64 20 61 6e   is specified an
7290: 64 20 74 68 65 20 54 45 4d 50 20 6b 65 79 77 6f  d the TEMP keywo
72a0: 72 64 20 69 73 20 6e 6f 74 20 70 72 65 73 65 6e  rd is not presen
72b0: 74 20 74 68 65 6e 0a 74 68 65 20 74 61 62 6c 65  t then.the table
72c0: 20 69 73 20 63 72 65 61 74 65 64 20 69 6e 20 74   is created in t
72d0: 68 65 20 6d 61 69 6e 20 64 61 74 61 62 61 73 65  he main database
72e0: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20 6f  .</p>..<p>^The o
72f0: 70 74 69 6f 6e 61 6c 20 5b 63 6f 6e 66 6c 69 63  ptional [conflic
7300: 74 20 63 6c 61 75 73 65 5d 20 66 6f 6c 6c 6f 77  t clause] follow
7310: 69 6e 67 20 65 61 63 68 20 63 6f 6e 73 74 72 61  ing each constra
7320: 69 6e 74 0a 61 6c 6c 6f 77 73 20 74 68 65 20 73  int.allows the s
7330: 70 65 63 69 66 69 63 61 74 69 6f 6e 20 6f 66 20  pecification of 
7340: 61 6e 20 61 6c 74 65 72 6e 61 74 69 76 65 20 64  an alternative d
7350: 65 66 61 75 6c 74 0a 63 6f 6e 73 74 72 61 69 6e  efault.constrain
7360: 74 20 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c  t conflict resol
7370: 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 20  ution algorithm 
7380: 66 6f 72 20 74 68 61 74 20 63 6f 6e 73 74 72 61  for that constra
7390: 69 6e 74 2e 0a 5e 49 66 20 6e 6f 20 63 6f 6e 66  int..^If no conf
73a0: 6c 69 63 74 20 63 6c 61 75 73 65 20 69 73 20 73  lict clause is s
73b0: 70 65 63 69 66 69 65 64 2c 20 74 68 65 20 41 42  pecified, the AB
73c0: 4f 52 54 20 61 6c 67 6f 72 69 74 68 6d 20 69 73  ORT algorithm is
73d0: 20 75 73 65 64 2e 0a 5e 44 69 66 66 65 72 65 6e   used..^Differen
73e0: 74 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 77 69  t constraints wi
73f0: 74 68 69 6e 20 74 68 65 20 73 61 6d 65 0a 74 61  thin the same.ta
7400: 62 6c 65 20 6d 61 79 20 68 61 76 65 20 64 69 66  ble may have dif
7410: 66 65 72 65 6e 74 20 63 6f 6e 66 6c 69 63 74 20  ferent conflict 
7420: 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72  resolution algor
7430: 69 74 68 6d 73 2e 0a 5e 49 66 20 61 6e 20 5b 49  ithms..^If an [I
7440: 4e 53 45 52 54 5d 20 6f 72 20 5b 55 50 44 41 54  NSERT] or [UPDAT
7450: 45 5d 20 73 74 61 74 65 6d 65 6e 74 20 73 70 65  E] statement spe
7460: 63 69 66 69 65 73 20 61 20 63 6f 6e 66 6c 69 63  cifies a conflic
7470: 74 0a 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67  t.resolution alg
7480: 6f 72 69 74 68 6d 2c 20 74 68 65 6e 20 74 68 65  orithm, then the
7490: 20 61 6c 67 6f 72 69 74 68 6d 20 73 70 65 63 69   algorithm speci
74a0: 66 69 65 64 20 6f 6e 20 74 68 65 20 49 4e 53 45  fied on the INSE
74b0: 52 54 20 6f 72 0a 55 50 44 41 54 45 20 73 74 61  RT or.UPDATE sta
74c0: 74 65 6d 65 6e 74 20 6f 76 65 72 72 69 64 65 73  tement overrides
74d0: 20 74 68 65 20 61 6c 67 6f 72 69 74 68 6d 20 73   the algorithm s
74e0: 70 65 63 69 66 69 65 64 20 69 6e 20 74 68 65 20  pecified in the 
74f0: 0a 43 52 45 41 54 45 20 54 41 42 4c 45 20 73 74  .CREATE TABLE st
7500: 61 74 65 6d 65 6e 74 2e 0a 53 65 65 20 74 68 65  atement..See the
7510: 20 73 65 63 74 69 6f 6e 20 74 69 74 6c 65 64 0a   section titled.
7520: 5b 4f 4e 20 43 4f 4e 46 4c 49 43 54 5d 20 66 6f  [ON CONFLICT] fo
7530: 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66  r additional inf
7540: 6f 72 6d 61 74 69 6f 6e 2e 3c 2f 70 3e 0a 0a 3c  ormation.</p>..<
7550: 70 3e 43 48 45 43 4b 20 63 6f 6e 73 74 72 61 69  p>CHECK constrai
7560: 6e 74 73 20 61 72 65 20 73 75 70 70 6f 72 74 65  nts are supporte
7570: 64 20 61 73 20 6f 66 20 5b 76 65 72 73 69 6f 6e  d as of [version
7580: 20 33 2e 33 2e 30 5d 2e 20 20 50 72 69 6f 72 0a   3.3.0].  Prior.
7590: 74 6f 20 76 65 72 73 69 6f 6e 20 33 2e 33 2e 30  to version 3.3.0
75a0: 2c 20 43 48 45 43 4b 20 63 6f 6e 73 74 72 61 69  , CHECK constrai
75b0: 6e 74 73 20 77 65 72 65 20 70 61 72 73 65 64 20  nts were parsed 
75c0: 62 75 74 20 6e 6f 74 20 65 6e 66 6f 72 63 65 64  but not enforced
75d0: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20 6e  .</p>..<p>^The n
75e0: 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73  umber of columns
75f0: 20 69 6e 20 61 20 74 61 62 6c 65 20 69 73 20 6c   in a table is l
7600: 69 6d 69 74 65 64 20 62 79 20 74 68 65 0a 5b 53  imited by the.[S
7610: 51 4c 49 54 45 5f 4d 41 58 5f 43 4f 4c 55 4d 4e  QLITE_MAX_COLUMN
7620: 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 70  ] compile-time p
7630: 61 72 61 6d 65 74 65 72 2e 0a 5e 41 20 73 69 6e  arameter..^A sin
7640: 67 6c 65 20 72 6f 77 20 6f 66 20 61 20 74 61 62  gle row of a tab
7650: 6c 65 20 63 61 6e 6e 6f 74 20 73 74 6f 72 65 20  le cannot store 
7660: 6d 6f 72 65 20 74 68 61 6e 0a 5b 53 51 4c 49 54  more than.[SQLIT
7670: 45 5f 4d 41 58 5f 4c 45 4e 47 54 48 5d 20 62 79  E_MAX_LENGTH] by
7680: 74 65 73 20 6f 66 20 64 61 74 61 2e 0a 5e 42 6f  tes of data..^Bo
7690: 74 68 20 6f 66 20 74 68 65 73 65 20 6c 69 6d 69  th of these limi
76a0: 74 73 20 63 61 6e 20 62 65 20 6c 6f 77 65 72 65  ts can be lowere
76b0: 64 20 61 74 20 72 75 6e 74 69 6d 65 20 75 73 69  d at runtime usi
76c0: 6e 67 20 74 68 65 0a 5b 73 71 6c 69 74 65 33 5f  ng the.[sqlite3_
76d0: 6c 69 6d 69 74 28 29 5d 20 43 2f 43 2b 2b 20 69  limit()] C/C++ i
76e0: 6e 74 65 72 66 61 63 65 2e 3c 2f 70 3e 0a 0a 0a  nterface.</p>...
76f0: 3c 70 3e 5e 54 68 65 20 43 52 45 41 54 45 20 54  <p>^The CREATE T
7700: 41 42 4c 45 20 41 53 20 66 6f 72 6d 20 64 65 66  ABLE AS form def
7710: 69 6e 65 73 20 74 68 65 20 74 61 62 6c 65 20 74  ines the table t
7720: 6f 20 62 65 0a 74 68 65 20 72 65 73 75 6c 74 20  o be.the result 
7730: 73 65 74 20 6f 66 20 61 20 71 75 65 72 79 2e 20  set of a query. 
7740: 20 5e 54 68 65 20 6e 61 6d 65 73 20 6f 66 20 74   ^The names of t
7750: 68 65 20 74 61 62 6c 65 20 63 6f 6c 75 6d 6e 73  he table columns
7760: 20 61 72 65 0a 74 68 65 20 6e 61 6d 65 73 20 6f   are.the names o
7770: 66 20 74 68 65 20 63 6f 6c 75 6d 6e 73 20 69 6e  f the columns in
7780: 20 74 68 65 20 72 65 73 75 6c 74 2e 3c 2f 70 3e   the result.</p>
7790: 0a 0a 3c 70 3e 5e 49 66 20 74 68 65 20 6f 70 74  ..<p>^If the opt
77a0: 69 6f 6e 61 6c 20 49 46 20 4e 4f 54 20 45 58 49  ional IF NOT EXI
77b0: 53 54 53 20 63 6c 61 75 73 65 20 69 73 20 70 72  STS clause is pr
77c0: 65 73 65 6e 74 20 61 6e 64 20 61 6e 6f 74 68 65  esent and anothe
77d0: 72 20 74 61 62 6c 65 0a 77 69 74 68 20 74 68 65  r table.with the
77e0: 20 73 61 6d 65 20 6e 61 6d 65 20 61 6c 65 61 64   same name alead
77f0: 79 20 65 78 69 73 74 73 2c 20 74 68 65 6e 20 74  y exists, then t
7800: 68 69 73 20 63 6f 6d 6d 61 6e 64 20 62 65 63 6f  his command beco
7810: 6d 65 73 20 61 20 6e 6f 2d 6f 70 2e 3c 2f 70 3e  mes a no-op.</p>
7820: 0a 0a 3c 70 3e 5e 54 61 62 6c 65 73 20 61 72 65  ..<p>^Tables are
7830: 20 72 65 6d 6f 76 65 64 20 75 73 69 6e 67 20 74   removed using t
7840: 68 65 20 5b 44 52 4f 50 20 54 41 42 4c 45 5d 20  he [DROP TABLE] 
7850: 73 74 61 74 65 6d 65 6e 74 2e 20 20 3c 2f 70 3e  statement.  </p>
7860: 0a 0a 3c 74 63 6c 3e 68 64 5f 66 72 61 67 6d 65  ..<tcl>hd_fragme
7870: 6e 74 20 72 6f 77 69 64 20 7b 49 4e 54 45 47 45  nt rowid {INTEGE
7880: 52 20 50 52 49 4d 41 52 59 20 4b 45 59 7d 20 52  R PRIMARY KEY} R
7890: 4f 57 49 44 20 72 6f 77 69 64 3c 2f 74 63 6c 3e  OWID rowid</tcl>
78a0: 0a 3c 68 33 3e 52 4f 57 49 44 73 20 61 6e 64 20  .<h3>ROWIDs and 
78b0: 74 68 65 20 49 4e 54 45 47 45 52 20 50 52 49 4d  the INTEGER PRIM
78c0: 41 52 59 20 4b 45 59 3c 2f 68 33 3e 0a 0a 3c 70  ARY KEY</h3>..<p
78d0: 3e 5e 45 76 65 72 79 20 72 6f 77 20 6f 66 20 65  >^Every row of e
78e0: 76 65 72 79 20 53 51 4c 69 74 65 20 74 61 62 6c  very SQLite tabl
78f0: 65 20 68 61 73 20 61 20 36 34 2d 62 69 74 20 73  e has a 64-bit s
7900: 69 67 6e 65 64 20 69 6e 74 65 67 65 72 20 6b 65  igned integer ke
7910: 79 20 0a 74 68 61 74 20 69 73 20 75 6e 69 71 75  y .that is uniqu
7920: 65 20 77 69 74 68 69 6e 20 74 68 65 20 73 61 6d  e within the sam
7930: 65 20 74 61 62 6c 65 2e 0a 54 68 69 73 20 69 6e  e table..This in
7940: 74 65 67 65 72 20 69 73 20 75 73 75 61 6c 6c 79  teger is usually
7950: 20 63 61 6c 6c 65 64 20 74 68 65 20 22 72 6f 77   called the "row
7960: 69 64 22 2e 20 20 5e 54 68 65 20 72 6f 77 69 64  id".  ^The rowid
7970: 20 69 73 20 74 68 65 20 61 63 74 75 61 6c 20 6b   is the actual k
7980: 65 79 20 75 73 65 64 0a 69 6e 20 74 68 65 20 42  ey used.in the B
7990: 2d 54 72 65 65 20 74 68 61 74 20 69 6d 70 6c 65  -Tree that imple
79a0: 6d 65 6e 74 73 20 61 6e 20 53 51 4c 69 74 65 20  ments an SQLite 
79b0: 74 61 62 6c 65 2e 20 20 5e 52 6f 77 73 20 61 72  table.  ^Rows ar
79c0: 65 20 73 74 6f 72 65 64 20 69 6e 0a 72 6f 77 69  e stored in.rowi
79d0: 64 20 6f 72 64 65 72 2e 20 5e 54 68 65 0a 72 6f  d order. ^The.ro
79e0: 77 69 64 20 76 61 6c 75 65 20 63 61 6e 20 62 65  wid value can be
79f0: 20 61 63 63 65 73 73 65 64 20 75 73 69 6e 67 20   accessed using 
7a00: 6f 6e 65 20 6f 66 20 74 68 65 20 73 70 65 63 69  one of the speci
7a10: 61 6c 20 6e 61 6d 65 73 0a 22 3c 62 3e 52 4f 57  al names."<b>ROW
7a20: 49 44 3c 2f 62 3e 22 2c 20 22 3c 62 3e 4f 49 44  ID</b>", "<b>OID
7a30: 3c 2f 62 3e 22 2c 20 6f 72 20 22 3c 62 3e 5f 52  </b>", or "<b>_R
7a40: 4f 57 49 44 5f 3c 2f 62 3e 22 20 61 73 73 75 6d  OWID_</b>" assum
7a50: 69 6e 67 20 74 68 6f 73 65 20 6e 61 6d 65 73 0a  ing those names.
7a60: 61 72 65 20 6e 6f 20 75 73 65 64 20 62 79 20 6f  are no used by o
7a70: 74 68 65 72 20 63 6f 6e 76 65 6e 74 69 6f 6e 61  ther conventiona
7a80: 6c 20 74 61 62 6c 65 20 63 6f 6c 75 6d 6e 73 2e  l table columns.
7a90: 3c 2f 70 3e 0a 0a 3c 70 3e 0a 5e 49 66 20 61 20  </p>..<p>.^If a 
7aa0: 63 6f 6c 75 6d 6e 20 69 73 20 64 65 63 6c 61 72  column is declar
7ab0: 65 64 20 74 6f 20 62 65 20 61 6e 20 49 4e 54 45  ed to be an INTE
7ac0: 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 2c  GER PRIMARY KEY,
7ad0: 20 74 68 65 6e 20 74 68 61 74 20 63 6f 6c 75 6d   then that colum
7ae0: 6e 20 69 73 20 6e 6f 74 0a 61 20 22 72 65 61 6c  n is not.a "real
7af0: 22 20 64 61 74 61 62 61 73 65 20 63 6f 6c 75 6d  " database colum
7b00: 6e 20 62 75 74 20 69 6e 73 74 65 61 64 20 62 65  n but instead be
7b10: 63 6f 6d 65 73 0a 61 6e 20 61 6c 69 61 73 20 66  comes.an alias f
7b20: 6f 72 20 74 68 65 20 72 6f 77 69 64 2e 20 20 5e  or the rowid.  ^
7b30: 55 6e 6c 69 6b 65 20 6e 6f 72 6d 61 6c 20 53 51  Unlike normal SQ
7b40: 4c 69 74 65 20 63 6f 6c 75 6d 6e 73 2c 20 74 68  Lite columns, th
7b50: 65 20 72 6f 77 69 64 0a 6d 75 73 74 20 62 65 20  e rowid.must be 
7b60: 61 20 6e 6f 6e 2d 4e 55 4c 4c 20 69 6e 74 65 67  a non-NULL integ
7b70: 65 72 20 76 61 6c 75 65 2e 20 20 5e 54 68 65 20  er value.  ^The 
7b80: 72 6f 77 69 64 20 69 73 20 6e 6f 74 20 61 62 6c  rowid is not abl
7b90: 65 20 74 6f 20 68 6f 6c 64 0a 66 6c 6f 61 74 69  e to hold.floati
7ba0: 6e 67 20 70 6f 69 6e 74 20 76 61 6c 75 65 73 2c  ng point values,
7bb0: 20 73 74 72 69 6e 67 73 2c 20 42 4c 4f 42 73 2c   strings, BLOBs,
7bc0: 20 6f 72 20 4e 55 4c 4c 73 2e 3c 2f 70 3e 0a 0a   or NULLs.</p>..
7bd0: 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 69 3e 0a  <blockquote><i>.
7be0: 5e 41 6e 20 49 4e 54 45 47 45 52 20 50 52 49 4d  ^An INTEGER PRIM
7bf0: 41 52 59 20 4b 45 59 20 63 6f 6c 75 6d 6e 20 69  ARY KEY column i
7c00: 73 20 61 6e 20 61 6c 69 61 73 20 66 6f 72 20 74  s an alias for t
7c10: 68 65 20 36 34 2d 62 69 74 20 73 69 67 6e 65 64  he 64-bit signed
7c20: 20 69 6e 74 65 67 65 72 20 72 6f 77 69 64 2e 0a   integer rowid..
7c30: 3c 2f 69 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65  </i></blockquote
7c40: 3e 0a 0a 3c 70 3e 5e 41 6e 20 49 4e 54 45 47 45  >..<p>^An INTEGE
7c50: 52 20 50 52 49 4d 41 52 59 20 4b 45 59 20 63 6f  R PRIMARY KEY co
7c60: 6c 75 6d 6e 20 63 61 6e 20 61 6c 73 6f 20 69 6e  lumn can also in
7c70: 63 6c 75 64 65 20 74 68 65 0a 6b 65 79 77 6f 72  clude the.keywor
7c80: 64 20 5b 41 55 54 4f 49 4e 43 52 45 4d 45 4e 54  d [AUTOINCREMENT
7c90: 5d 2e 20 20 5e 54 68 65 20 5b 41 55 54 4f 49 4e  ].  ^The [AUTOIN
7ca0: 43 52 45 4d 45 4e 54 5d 20 6b 65 79 77 6f 72 64  CREMENT] keyword
7cb0: 20 6d 6f 64 69 66 69 65 64 20 74 68 65 20 77 61   modified the wa
7cc0: 79 0a 74 68 61 74 20 42 2d 54 72 65 65 20 6b 65  y.that B-Tree ke
7cd0: 79 73 20 61 72 65 20 61 75 74 6f 6d 61 74 69 63  ys are automatic
7ce0: 61 6c 6c 79 20 67 65 6e 65 72 61 74 65 64 2e 20  ally generated. 
7cf0: 20 41 64 64 69 74 69 6f 6e 61 6c 20 64 65 74 61   Additional deta
7d00: 69 6c 0a 6f 6e 20 61 75 74 6f 6d 61 74 69 63 20  il.on automatic 
7d10: 42 2d 54 72 65 65 20 6b 65 79 20 67 65 6e 65 72  B-Tree key gener
7d20: 61 74 69 6f 6e 20 69 73 20 61 76 61 69 6c 61 62  ation is availab
7d30: 6c 65 0a 3c 61 20 68 72 65 66 3d 22 61 75 74 6f  le.<a href="auto
7d40: 69 6e 63 2e 68 74 6d 6c 22 3e 73 65 70 61 72 61  inc.html">separa
7d50: 74 65 6c 79 3c 2f 61 3e 2e 3c 2f 70 3e 0a 0a 3c  tely</a>.</p>..<
7d60: 70 3e 5e 54 68 65 20 73 70 65 63 69 61 6c 20 62  p>^The special b
7d70: 65 68 61 76 69 6f 72 20 6f 66 20 49 4e 54 45 47  ehavior of INTEG
7d80: 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 0a 69  ER PRIMARY KEY.i
7d90: 73 20 6f 6e 6c 79 20 61 76 61 69 6c 61 62 6c 65  s only available
7da0: 20 69 66 20 74 68 65 20 74 79 70 65 20 6e 61 6d   if the type nam
7db0: 65 20 69 73 20 65 78 61 63 74 6c 79 20 22 49 4e  e is exactly "IN
7dc0: 54 45 47 45 52 22 20 69 6e 20 61 6e 79 20 6d 69  TEGER" in any mi
7dd0: 78 74 75 72 65 0a 6f 66 20 75 70 70 65 72 20 61  xture.of upper a
7de0: 6e 64 20 6c 6f 77 65 72 20 63 61 73 65 2e 20 20  nd lower case.  
7df0: 5e 4f 74 68 65 72 20 69 6e 74 65 67 65 72 20 74  ^Other integer t
7e00: 79 70 65 20 6e 61 6d 65 73 0a 6c 69 6b 65 20 22  ype names.like "
7e10: 49 4e 54 22 20 6f 72 20 22 42 49 47 49 4e 54 22  INT" or "BIGINT"
7e20: 20 6f 72 20 22 53 48 4f 52 54 20 49 4e 54 45 47   or "SHORT INTEG
7e30: 45 52 22 20 6f 72 20 22 55 4e 53 49 47 4e 45 44  ER" or "UNSIGNED
7e40: 20 49 4e 54 45 47 45 52 22 0a 63 61 75 73 65 73   INTEGER".causes
7e50: 20 74 68 65 20 70 72 69 6d 61 72 79 20 6b 65 79   the primary key
7e60: 20 63 6f 6c 75 6d 6e 20 74 6f 20 62 65 68 61 76   column to behav
7e70: 65 20 61 73 20 61 6e 20 6f 72 64 69 6e 61 72 79  e as an ordinary
7e80: 20 74 61 62 6c 65 20 63 6f 6c 75 6d 6e 20 77 69   table column wi
7e90: 74 68 0a 69 6e 74 65 67 65 72 20 5b 61 66 66 69  th.integer [affi
7ea0: 6e 69 74 79 5d 20 61 6e 64 20 61 20 75 6e 69 71  nity] and a uniq
7eb0: 75 65 20 69 6e 64 65 78 2c 20 6e 6f 74 20 61 73  ue index, not as
7ec0: 20 61 6e 20 61 6c 69 61 73 20 66 6f 72 20 74 68   an alias for th
7ed0: 65 20 72 6f 77 69 64 2e 0a 5e 28 54 68 65 20 73  e rowid..^(The s
7ee0: 70 65 63 69 61 6c 20 62 65 68 61 76 69 6f 72 20  pecial behavior 
7ef0: 6f 66 20 49 4e 54 45 47 45 52 20 50 52 49 4d 41  of INTEGER PRIMA
7f00: 52 59 20 4b 45 59 20 69 73 20 6f 6e 6c 79 20 61  RY KEY is only a
7f10: 76 61 69 6c 61 62 6c 65 20 69 66 20 74 68 65 0a  vailable if the.
7f20: 70 72 69 6d 61 72 79 20 6b 65 79 20 69 73 20 61  primary key is a
7f30: 20 73 69 6e 67 6c 65 20 63 6f 6c 75 6d 6e 2e 20   single column. 
7f40: 20 4d 75 6c 74 69 2d 63 6f 6c 75 6d 6e 20 70 72   Multi-column pr
7f50: 69 6d 61 72 79 20 6b 65 79 73 20 64 6f 20 6e 6f  imary keys do no
7f60: 74 20 62 65 63 6f 6d 65 0a 61 6c 69 61 73 65 73  t become.aliases
7f70: 20 66 6f 72 20 74 68 65 20 72 6f 77 69 64 2e 29   for the rowid.)
7f80: 5e 0a 5e 54 68 65 20 41 55 54 4f 49 4e 43 52 45  ^.^The AUTOINCRE
7f90: 4d 45 4e 54 20 6b 65 79 77 6f 72 64 20 6f 6e 6c  MENT keyword onl
7fa0: 79 20 77 6f 72 6b 73 20 6f 6e 20 61 20 63 6f 6c  y works on a col
7fb0: 75 6d 6e 20 74 68 61 74 20 69 73 20 61 6e 20 61  umn that is an a
7fc0: 6c 69 61 73 0a 66 6f 72 20 74 68 65 20 72 6f 77  lias.for the row
7fd0: 69 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 4e 6f 74 65  id.</p>..<p>Note
7fe0: 20 74 68 61 74 20 73 65 61 72 63 68 65 73 20 61   that searches a
7ff0: 67 61 69 6e 73 74 20 61 20 72 6f 77 69 64 20 61  gainst a rowid a
8000: 72 65 20 67 65 6e 65 72 61 6c 6c 79 20 61 62 6f  re generally abo
8010: 75 74 20 74 77 69 63 65 20 61 73 0a 66 61 73 74  ut twice as.fast
8020: 20 61 73 20 73 65 61 72 63 68 65 73 20 61 67 61   as searches aga
8030: 69 6e 73 74 20 61 6e 79 20 6f 74 68 65 72 20 50  inst any other P
8040: 52 49 4d 41 52 59 20 4b 45 59 20 6f 72 20 69 6e  RIMARY KEY or in
8050: 64 65 78 65 64 20 76 61 6c 75 65 2e 0a 3c 2f 70  dexed value..</p
8060: 3e 0a 0a 3c 70 3e 3c 62 3e 47 6f 6f 66 79 20 62  >..<p><b>Goofy b
8070: 65 68 61 76 69 6f 72 20 61 6c 65 72 74 3a 3c 2f  ehavior alert:</
8080: 62 3e 20 20 5e 28 54 68 65 20 66 6f 6c 6c 6f 77  b>  ^(The follow
8090: 69 6e 67 20 74 68 72 65 65 20 64 65 63 6c 61 72  ing three declar
80a0: 61 74 69 6f 6e 73 20 61 6c 6c 20 63 61 75 73 65  ations all cause
80b0: 0a 74 68 65 20 63 6f 6c 75 6d 6e 20 22 78 22 20  .the column "x" 
80c0: 62 65 20 61 6e 20 61 6c 69 61 73 20 66 6f 72 20  be an alias for 
80d0: 74 68 65 20 72 6f 77 69 64 3a 3c 2f 70 3e 0a 0a  the rowid:</p>..
80e0: 3c 75 6c 3e 0a 3c 6c 69 3e 3c 74 74 3e 43 52 45  <ul>.<li><tt>CRE
80f0: 41 54 45 20 54 41 42 4c 45 20 74 28 78 20 49 4e  ATE TABLE t(x IN
8100: 54 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45  TEGER PRIMARY KE
8110: 59 20 41 53 43 2c 20 79 2c 20 7a 29 3b 3c 2f 74  Y ASC, y, z);</t
8120: 74 3e 0a 3c 6c 69 3e 3c 74 74 3e 43 52 45 41 54  t>.<li><tt>CREAT
8130: 45 20 54 41 42 4c 45 20 74 28 78 20 49 4e 54 45  E TABLE t(x INTE
8140: 47 45 52 2c 20 79 2c 20 7a 2c 20 50 52 49 4d 41  GER, y, z, PRIMA
8150: 52 59 20 4b 45 59 28 78 20 41 53 43 29 29 3b 3c  RY KEY(x ASC));<
8160: 2f 74 74 3e 0a 3c 6c 69 3e 3c 74 74 3e 43 52 45  /tt>.<li><tt>CRE
8170: 41 54 45 20 54 41 42 4c 45 20 74 28 78 20 49 4e  ATE TABLE t(x IN
8180: 54 45 47 45 52 2c 20 79 2c 20 7a 2c 20 50 52 49  TEGER, y, z, PRI
8190: 4d 41 52 59 20 4b 45 59 28 78 20 44 45 53 43 29  MARY KEY(x DESC)
81a0: 29 3b 3c 2f 74 74 3e 0a 3c 2f 75 6c 3e 29 5e 0a  );</tt>.</ul>)^.
81b0: 0a 3c 70 3e 42 75 74 2c 20 69 6e 20 63 6f 6e 74  .<p>But, in cont
81c0: 72 61 73 74 2c 20 5e 28 74 68 65 20 66 6f 6c 6c  rast, ^(the foll
81d0: 6f 77 69 6e 67 20 64 65 63 6c 61 72 61 74 69 6f  owing declaratio
81e0: 6e 20 64 6f 65 73 20 3c 75 3e 6e 6f 74 3c 2f 75  n does <u>not</u
81f0: 3e 20 72 65 73 75 6c 74 20 69 6e 0a 22 78 22 20  > result in."x" 
8200: 62 65 69 6e 67 20 61 6e 20 61 6c 69 61 73 20 66  being an alias f
8210: 6f 72 20 74 68 65 20 72 6f 77 69 64 3a 3c 2f 70  or the rowid:</p
8220: 3e 0a 0a 3c 75 6c 3e 0a 3c 6c 69 3e 3c 74 74 3e  >..<ul>.<li><tt>
8230: 43 52 45 41 54 45 20 54 41 42 4c 45 20 74 28 78  CREATE TABLE t(x
8240: 20 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59   INTEGER PRIMARY
8250: 20 4b 45 59 20 44 45 53 43 2c 20 79 2c 20 7a 29   KEY DESC, y, z)
8260: 3b 3c 2f 74 74 3e 0a 3c 2f 75 6c 3e 29 5e 0a 0a  ;</tt>.</ul>)^..
8270: 3c 70 3e 54 68 69 73 20 61 73 79 6d 6d 65 74 72  <p>This asymmetr
8280: 69 63 61 6c 20 62 65 68 61 76 69 6f 72 20 69 73  ical behavior is
8290: 20 75 6e 66 6f 72 74 75 6e 61 74 65 20 61 6e 64   unfortunate and
82a0: 20 69 73 20 72 65 61 6c 6c 79 20 64 75 65 20 74   is really due t
82b0: 6f 20 61 20 62 75 67 0a 69 6e 20 74 68 65 20 70  o a bug.in the p
82c0: 61 72 73 65 72 20 69 6e 20 65 61 72 6c 79 20 76  arser in early v
82d0: 65 72 73 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74  ersions of SQLit
82e0: 65 2e 20 20 42 75 74 20 66 69 78 69 6e 67 20 74  e.  But fixing t
82f0: 68 65 20 62 75 67 20 77 6f 75 6c 64 0a 72 65 73  he bug would.res
8300: 75 6c 74 20 69 6e 20 76 65 72 79 20 73 65 72 69  ult in very seri
8310: 6f 75 73 20 62 61 63 6b 77 61 72 64 73 20 69 6e  ous backwards in
8320: 63 6f 6d 70 61 74 69 62 69 6c 69 74 69 65 73 2e  compatibilities.
8330: 20 20 54 68 65 20 53 51 4c 69 74 65 20 64 65 76    The SQLite dev
8340: 65 6c 6f 70 65 72 73 0a 66 65 65 6c 20 74 68 61  elopers.feel tha
8350: 74 20 67 6f 6f 66 79 20 62 65 68 61 76 69 6f 72  t goofy behavior
8360: 20 69 6e 20 61 6e 20 63 6f 72 6e 65 72 20 63 61   in an corner ca
8370: 73 65 20 69 73 20 66 61 72 20 62 65 74 74 65 72  se is far better
8380: 20 74 68 61 6e 0a 61 20 63 6f 6d 70 61 74 69 62   than.a compatib
8390: 69 6c 69 74 79 20 62 72 65 61 6b 2c 20 73 6f 20  ility break, so 
83a0: 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 62 65 68  the original beh
83b0: 61 76 69 6f 72 20 69 73 20 72 65 74 61 69 6e 65  avior is retaine
83c0: 64 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23  d.</p>..<tcl>.##
83d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
83e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
83f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8400: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8410: 23 23 23 23 23 23 23 23 23 23 23 23 0a 53 65 63  ############.Sec
8420: 74 69 6f 6e 20 7b 43 52 45 41 54 45 20 54 52 49  tion {CREATE TRI
8430: 47 47 45 52 7d 20 63 72 65 61 74 65 74 72 69 67  GGER} createtrig
8440: 67 65 72 20 7b 7b 43 52 45 41 54 45 20 54 52 49  ger {{CREATE TRI
8450: 47 47 45 52 7d 7d 0a 0a 42 75 62 62 6c 65 44 69  GGER}}..BubbleDi
8460: 61 67 72 61 6d 20 63 72 65 61 74 65 2d 74 72 69  agram create-tri
8470: 67 67 65 72 2d 73 74 6d 74 20 31 0a 3c 2f 74 63  gger-stmt 1.</tc
8480: 6c 3e 0a 0a 3c 70 3e 5e 54 68 65 20 43 52 45 41  l>..<p>^The CREA
8490: 54 45 20 54 52 49 47 47 45 52 20 73 74 61 74 65  TE TRIGGER state
84a0: 6d 65 6e 74 20 69 73 20 75 73 65 64 20 74 6f 20  ment is used to 
84b0: 61 64 64 20 74 72 69 67 67 65 72 73 20 74 6f 20  add triggers to 
84c0: 74 68 65 20 0a 64 61 74 61 62 61 73 65 20 73 63  the .database sc
84d0: 68 65 6d 61 2e 20 5e 54 72 69 67 67 65 72 73 20  hema. ^Triggers 
84e0: 61 72 65 20 64 61 74 61 62 61 73 65 20 6f 70 65  are database ope
84f0: 72 61 74 69 6f 6e 73 20 0a 74 68 61 74 20 61 72  rations .that ar
8500: 65 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20  e automatically 
8510: 70 65 72 66 6f 72 6d 65 64 20 77 68 65 6e 20 61  performed when a
8520: 20 73 70 65 63 69 66 69 65 64 20 64 61 74 61 62   specified datab
8530: 61 73 65 20 65 76 65 6e 74 0a 6f 63 63 75 72 73  ase event.occurs
8540: 2e 20 20 3c 2f 70 3e 0a 0a 3c 70 3e 5e 41 20 74  .  </p>..<p>^A t
8550: 72 69 67 67 65 72 20 6d 61 79 20 62 65 20 73 70  rigger may be sp
8560: 65 63 69 66 69 65 64 20 74 6f 20 66 69 72 65 20  ecified to fire 
8570: 77 68 65 6e 65 76 65 72 20 61 20 5b 44 45 4c 45  whenever a [DELE
8580: 54 45 5d 2c 20 5b 49 4e 53 45 52 54 5d 2c 0a 6f  TE], [INSERT],.o
8590: 72 20 5b 55 50 44 41 54 45 5d 20 6f 66 20 61 0a  r [UPDATE] of a.
85a0: 70 61 72 74 69 63 75 6c 61 72 20 64 61 74 61 62  particular datab
85b0: 61 73 65 20 74 61 62 6c 65 20 6f 63 63 75 72 73  ase table occurs
85c0: 2c 20 6f 72 20 77 68 65 6e 65 76 65 72 20 61 6e  , or whenever an
85d0: 20 5b 55 50 44 41 54 45 5d 20 6f 63 63 75 72 73   [UPDATE] occurs
85e0: 20 6f 6e 0a 6f 6e 20 6f 6e 65 20 6f 72 20 6d 6f   on.on one or mo
85f0: 72 65 20 73 70 65 63 69 66 69 65 64 20 63 6f 6c  re specified col
8600: 75 6d 6e 73 20 6f 66 20 61 20 74 61 62 6c 65 2e  umns of a table.
8610: 3c 2f 70 3e 0a 0a 3c 70 3e 5e 41 74 20 74 68 69  </p>..<p>^At thi
8620: 73 20 74 69 6d 65 20 53 51 4c 69 74 65 20 73 75  s time SQLite su
8630: 70 70 6f 72 74 73 20 6f 6e 6c 79 20 46 4f 52 20  pports only FOR 
8640: 45 41 43 48 20 52 4f 57 20 74 72 69 67 67 65 72  EACH ROW trigger
8650: 73 2c 20 6e 6f 74 20 46 4f 52 20 45 41 43 48 0a  s, not FOR EACH.
8660: 53 54 41 54 45 4d 45 4e 54 20 74 72 69 67 67 65  STATEMENT trigge
8670: 72 73 2e 20 5e 48 65 6e 63 65 20 65 78 70 6c 69  rs. ^Hence expli
8680: 63 69 74 6c 79 20 73 70 65 63 69 66 79 69 6e 67  citly specifying
8690: 20 46 4f 52 20 45 41 43 48 20 52 4f 57 20 69 73   FOR EACH ROW is
86a0: 20 6f 70 74 69 6f 6e 61 6c 2e 0a 5e 46 4f 52 20   optional..^FOR 
86b0: 45 41 43 48 20 52 4f 57 20 69 6d 70 6c 69 65 73  EACH ROW implies
86c0: 20 74 68 61 74 20 74 68 65 20 53 51 4c 20 73 74   that the SQL st
86d0: 61 74 65 6d 65 6e 74 73 20 73 70 65 63 69 66 69  atements specifi
86e0: 65 64 20 69 6e 20 74 68 65 20 74 72 69 67 67 65  ed in the trigge
86f0: 72 0a 6d 61 79 20 62 65 20 65 78 65 63 75 74 65  r.may be execute
8700: 64 20 28 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20  d (depending on 
8710: 74 68 65 20 57 48 45 4e 20 63 6c 61 75 73 65 29  the WHEN clause)
8720: 20 66 6f 72 20 65 61 63 68 20 64 61 74 61 62 61   for each databa
8730: 73 65 20 72 6f 77 20 62 65 69 6e 67 0a 69 6e 73  se row being.ins
8740: 65 72 74 65 64 2c 20 75 70 64 61 74 65 64 20 6f  erted, updated o
8750: 72 20 64 65 6c 65 74 65 64 20 62 79 20 74 68 65  r deleted by the
8760: 20 73 74 61 74 65 6d 65 6e 74 20 63 61 75 73 69   statement causi
8770: 6e 67 20 74 68 65 20 74 72 69 67 67 65 72 20 74  ng the trigger t
8780: 6f 20 66 69 72 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e  o fire.</p>..<p>
8790: 5e 28 42 6f 74 68 20 74 68 65 20 57 48 45 4e 20  ^(Both the WHEN 
87a0: 63 6c 61 75 73 65 20 61 6e 64 20 74 68 65 20 74  clause and the t
87b0: 72 69 67 67 65 72 20 61 63 74 69 6f 6e 73 20 6d  rigger actions m
87c0: 61 79 20 61 63 63 65 73 73 20 65 6c 65 6d 65 6e  ay access elemen
87d0: 74 73 20 6f 66 20 0a 74 68 65 20 72 6f 77 20 62  ts of .the row b
87e0: 65 69 6e 67 20 69 6e 73 65 72 74 65 64 2c 20 64  eing inserted, d
87f0: 65 6c 65 74 65 64 20 6f 72 20 75 70 64 61 74 65  eleted or update
8800: 64 20 75 73 69 6e 67 20 72 65 66 65 72 65 6e 63  d using referenc
8810: 65 73 20 6f 66 20 74 68 65 20 66 6f 72 6d 20 0a  es of the form .
8820: 22 4e 45 57 2e 3c 69 3e 63 6f 6c 75 6d 6e 2d 6e  "NEW.<i>column-n
8830: 61 6d 65 3c 2f 69 3e 22 20 61 6e 64 20 22 4f 4c  ame</i>" and "OL
8840: 44 2e 3c 69 3e 63 6f 6c 75 6d 6e 2d 6e 61 6d 65  D.<i>column-name
8850: 3c 2f 69 3e 22 2c 20 77 68 65 72 65 0a 3c 69 3e  </i>", where.<i>
8860: 63 6f 6c 75 6d 6e 2d 6e 61 6d 65 3c 2f 69 3e 20  column-name</i> 
8870: 69 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 61  is the name of a
8880: 20 63 6f 6c 75 6d 6e 20 66 72 6f 6d 20 74 68 65   column from the
8890: 20 74 61 62 6c 65 20 74 68 61 74 20 74 68 65 20   table that the 
88a0: 74 72 69 67 67 65 72 0a 69 73 20 61 73 73 6f 63  trigger.is assoc
88b0: 69 61 74 65 64 20 77 69 74 68 2e 29 5e 20 5e 28  iated with.)^ ^(
88c0: 4f 4c 44 20 61 6e 64 20 4e 45 57 20 72 65 66 65  OLD and NEW refe
88d0: 72 65 6e 63 65 73 20 6d 61 79 20 6f 6e 6c 79 20  rences may only 
88e0: 62 65 20 75 73 65 64 20 69 6e 20 74 72 69 67 67  be used in trigg
88f0: 65 72 73 20 6f 6e 0a 65 76 65 6e 74 73 20 66 6f  ers on.events fo
8900: 72 20 77 68 69 63 68 20 74 68 65 79 20 61 72 65  r which they are
8910: 20 72 65 6c 65 76 61 6e 74 2c 20 61 73 20 66 6f   relevant, as fo
8920: 6c 6c 6f 77 73 3a 3c 2f 70 3e 0a 0a 3c 74 61 62  llows:</p>..<tab
8930: 6c 65 20 62 6f 72 64 65 72 3d 30 20 63 65 6c 6c  le border=0 cell
8940: 70 61 64 64 69 6e 67 3d 31 30 3e 0a 3c 74 72 3e  padding=10>.<tr>
8950: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
8960: 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 20  " align="right" 
8970: 77 69 64 74 68 3d 31 32 30 3e 3c 69 3e 49 4e 53  width=120><i>INS
8980: 45 52 54 3c 2f 69 3e 3c 2f 74 64 3e 0a 3c 74 64  ERT</i></td>.<td
8990: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 4e 45   valign="top">NE
89a0: 57 20 72 65 66 65 72 65 6e 63 65 73 20 61 72 65  W references are
89b0: 20 76 61 6c 69 64 3c 2f 74 64 3e 0a 3c 2f 74 72   valid</td>.</tr
89c0: 3e 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67  >.<tr>.<td valig
89d0: 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72  n="top" align="r
89e0: 69 67 68 74 22 20 77 69 64 74 68 3d 31 32 30 3e  ight" width=120>
89f0: 3c 69 3e 55 50 44 41 54 45 3c 2f 69 3e 3c 2f 74  <i>UPDATE</i></t
8a00: 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  d>.<td valign="t
8a10: 6f 70 22 3e 4e 45 57 20 61 6e 64 20 4f 4c 44 20  op">NEW and OLD 
8a20: 72 65 66 65 72 65 6e 63 65 73 20 61 72 65 20 76  references are v
8a30: 61 6c 69 64 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a  alid</td>.</tr>.
8a40: 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  <tr>.<td valign=
8a50: 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67  "top" align="rig
8a60: 68 74 22 20 77 69 64 74 68 3d 31 32 30 3e 3c 69  ht" width=120><i
8a70: 3e 44 45 4c 45 54 45 3c 2f 69 3e 3c 2f 74 64 3e  >DELETE</i></td>
8a80: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
8a90: 22 3e 4f 4c 44 20 72 65 66 65 72 65 6e 63 65 73  ">OLD references
8aa0: 20 61 72 65 20 76 61 6c 69 64 3c 2f 74 64 3e 0a   are valid</td>.
8ab0: 3c 2f 74 72 3e 0a 3c 2f 74 61 62 6c 65 3e 0a 3c  </tr>.</table>.<
8ac0: 2f 70 3e 29 5e 0a 0a 3c 70 3e 5e 49 66 20 61 20  /p>)^..<p>^If a 
8ad0: 57 48 45 4e 20 63 6c 61 75 73 65 20 69 73 20 73  WHEN clause is s
8ae0: 75 70 70 6c 69 65 64 2c 20 74 68 65 20 53 51 4c  upplied, the SQL
8af0: 20 73 74 61 74 65 6d 65 6e 74 73 20 73 70 65 63   statements spec
8b00: 69 66 69 65 64 0a 61 72 65 20 6f 6e 6c 79 20 65  ified.are only e
8b10: 78 65 63 75 74 65 64 20 66 6f 72 20 72 6f 77 73  xecuted for rows
8b20: 20 66 6f 72 20 77 68 69 63 68 20 74 68 65 20 57   for which the W
8b30: 48 45 4e 0a 63 6c 61 75 73 65 20 69 73 20 74 72  HEN.clause is tr
8b40: 75 65 2e 20 5e 49 66 20 6e 6f 20 57 48 45 4e 20  ue. ^If no WHEN 
8b50: 63 6c 61 75 73 65 20 69 73 20 73 75 70 70 6c 69  clause is suppli
8b60: 65 64 2c 20 74 68 65 20 53 51 4c 20 73 74 61 74  ed, the SQL stat
8b70: 65 6d 65 6e 74 73 0a 61 72 65 20 65 78 65 63 75  ements.are execu
8b80: 74 65 64 20 66 6f 72 20 61 6c 6c 20 72 6f 77 73  ted for all rows
8b90: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20 42  .</p>..<p>^The B
8ba0: 45 46 4f 52 45 20 6f 72 20 41 46 54 45 52 20 6b  EFORE or AFTER k
8bb0: 65 79 77 6f 72 64 20 64 65 74 65 72 6d 69 6e 65  eyword determine
8bc0: 73 20 77 68 65 6e 20 74 68 65 20 74 72 69 67 67  s when the trigg
8bd0: 65 72 20 61 63 74 69 6f 6e 73 0a 77 69 6c 6c 20  er actions.will 
8be0: 62 65 20 65 78 65 63 75 74 65 64 20 72 65 6c 61  be executed rela
8bf0: 74 69 76 65 20 74 6f 20 74 68 65 20 69 6e 73 65  tive to the inse
8c00: 72 74 69 6f 6e 2c 20 6d 6f 64 69 66 69 63 61 74  rtion, modificat
8c10: 69 6f 6e 20 6f 72 20 72 65 6d 6f 76 61 6c 20 6f  ion or removal o
8c20: 66 20 74 68 65 0a 61 73 73 6f 63 69 61 74 65 64  f the.associated
8c30: 20 72 6f 77 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 41   row.</p>..<p>^A
8c40: 6e 20 5b 4f 4e 20 43 4f 4e 46 4c 49 43 54 5d 20  n [ON CONFLICT] 
8c50: 63 6c 61 75 73 65 20 6d 61 79 20 62 65 20 73 70  clause may be sp
8c60: 65 63 69 66 69 65 64 20 61 73 20 70 61 72 74 20  ecified as part 
8c70: 6f 66 20 61 6e 20 5b 55 50 44 41 54 45 5d 20 6f  of an [UPDATE] o
8c80: 72 20 5b 49 4e 53 45 52 54 5d 0a 61 63 74 69 6f  r [INSERT].actio
8c90: 6e 20 77 69 74 68 69 6e 20 74 68 65 20 62 6f 64  n within the bod
8ca0: 79 20 6f 66 20 74 68 65 20 74 72 69 67 67 65 72  y of the trigger
8cb0: 2e 0a 5e 48 6f 77 65 76 65 72 20 69 66 20 61 6e  ..^However if an
8cc0: 20 5b 4f 4e 20 43 4f 4e 46 4c 49 43 54 5d 20 63   [ON CONFLICT] c
8cd0: 6c 61 75 73 65 20 69 73 20 73 70 65 63 69 66 69  lause is specifi
8ce0: 65 64 20 61 73 20 70 61 72 74 20 6f 66 20 0a 74  ed as part of .t
8cf0: 68 65 20 73 74 61 74 65 6d 65 6e 74 20 63 61 75  he statement cau
8d00: 73 69 6e 67 20 74 68 65 20 74 72 69 67 67 65 72  sing the trigger
8d10: 20 74 6f 20 66 69 72 65 2c 20 74 68 65 6e 20 63   to fire, then c
8d20: 6f 6e 66 6c 69 63 74 20 68 61 6e 64 6c 69 6e 67  onflict handling
8d30: 0a 70 6f 6c 69 63 79 20 6f 66 20 74 68 65 20 6f  .policy of the o
8d40: 75 74 65 72 20 73 74 61 74 65 6d 65 6e 74 20 69  uter statement i
8d50: 73 20 75 73 65 64 20 69 6e 73 74 65 61 64 2e 3c  s used instead.<
8d60: 2f 70 3e 0a 0a 3c 70 3e 5e 54 72 69 67 67 65 72  /p>..<p>^Trigger
8d70: 73 20 61 72 65 20 61 75 74 6f 6d 61 74 69 63 61  s are automatica
8d80: 6c 6c 79 20 5b 44 52 4f 50 20 54 52 49 47 47 45  lly [DROP TRIGGE
8d90: 52 20 7c 20 64 72 6f 70 70 65 64 5d 0a 77 68 65  R | dropped].whe
8da0: 6e 20 74 68 65 20 74 61 62 6c 65 20 74 68 61 74  n the table that
8db0: 20 74 68 65 79 20 61 72 65 20 0a 61 73 73 6f 63   they are .assoc
8dc0: 69 61 74 65 64 20 77 69 74 68 20 28 74 68 65 20  iated with (the 
8dd0: 3c 69 3e 74 61 62 6c 65 2d 6e 61 6d 65 3c 2f 69  <i>table-name</i
8de0: 3e 20 74 61 62 6c 65 29 20 69 73 20 0a 5b 44 52  > table) is .[DR
8df0: 4f 50 20 54 41 42 4c 45 20 7c 20 64 72 6f 70 70  OP TABLE | dropp
8e00: 65 64 5d 2e 20 20 5e 48 6f 77 65 76 65 72 20 69  ed].  ^However i
8e10: 66 20 74 68 65 20 74 68 65 20 74 72 69 67 67 65  f the the trigge
8e20: 72 20 61 63 74 69 6f 6e 73 20 72 65 66 65 72 65  r actions refere
8e30: 6e 63 65 0a 6f 74 68 65 72 20 74 61 62 6c 65 73  nce.other tables
8e40: 2c 20 74 68 65 20 74 72 69 67 67 65 72 20 69 73  , the trigger is
8e50: 20 6e 6f 74 20 64 72 6f 70 70 65 64 20 6f 72 20   not dropped or 
8e60: 6d 6f 64 69 66 69 65 64 20 69 66 20 74 68 6f 73  modified if thos
8e70: 65 20 6f 74 68 65 72 0a 74 61 62 6c 65 73 20 61  e other.tables a
8e80: 72 65 20 5b 44 52 4f 50 20 54 41 42 4c 45 20 7c  re [DROP TABLE |
8e90: 20 64 72 6f 70 70 65 64 5d 20 6f 72 20 5b 41 4c   dropped] or [AL
8ea0: 54 45 52 20 54 41 42 4c 45 20 7c 20 6d 6f 64 69  TER TABLE | modi
8eb0: 66 69 65 64 5d 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e  fied].</p>..<p>^
8ec0: 54 72 69 67 67 65 72 73 20 61 72 65 20 72 65 6d  Triggers are rem
8ed0: 6f 76 65 64 20 75 73 69 6e 67 20 74 68 65 20 5b  oved using the [
8ee0: 44 52 4f 50 20 54 52 49 47 47 45 52 5d 20 73 74  DROP TRIGGER] st
8ef0: 61 74 65 6d 65 6e 74 2e 3c 2f 70 3e 0a 0a 3c 68  atement.</p>..<h
8f00: 33 3e 53 79 6e 74 61 78 20 52 65 73 74 72 69 63  3>Syntax Restric
8f10: 74 69 6f 6e 73 20 4f 6e 20 55 50 44 41 54 45 2c  tions On UPDATE,
8f20: 20 44 45 4c 45 54 45 2c 20 61 6e 64 20 49 4e 53   DELETE, and INS
8f30: 45 52 54 20 53 74 61 74 65 6d 65 6e 74 73 20 57  ERT Statements W
8f40: 69 74 68 69 6e 0a 20 20 20 20 54 72 69 67 67 65  ithin.    Trigge
8f50: 72 73 3c 2f 68 33 3e 0a 0a 3c 70 3e 5e 54 68 65  rs</h3>..<p>^The
8f60: 20 5b 55 50 44 41 54 45 5d 2c 20 5b 44 45 4c 45   [UPDATE], [DELE
8f70: 54 45 5d 2c 20 61 6e 64 20 5b 49 4e 53 45 52 54  TE], and [INSERT
8f80: 5d 0a 73 74 61 74 65 6d 65 6e 74 73 20 77 69 74  ].statements wit
8f90: 68 69 6e 20 74 72 69 67 67 65 72 73 20 64 6f 20  hin triggers do 
8fa0: 6e 6f 74 20 73 75 70 70 6f 72 74 0a 74 68 65 20  not support.the 
8fb0: 66 75 6c 6c 20 73 79 6e 74 61 78 20 66 6f 72 20  full syntax for 
8fc0: 5b 55 50 44 41 54 45 5d 2c 20 5b 44 45 4c 45 54  [UPDATE], [DELET
8fd0: 45 5d 2c 20 61 6e 64 20 5b 49 4e 53 45 52 54 5d  E], and [INSERT]
8fe0: 20 73 74 61 74 65 6d 65 6e 74 73 2e 20 20 54 68   statements.  Th
8ff0: 65 20 66 6f 6c 6c 6f 77 69 6e 67 0a 72 65 73 74  e following.rest
9000: 72 69 63 74 69 6f 6e 73 20 61 70 70 6c 79 3a 3c  rictions apply:<
9010: 2f 70 3e 0a 0a 3c 75 6c 3e 0a 3c 6c 69 3e 3c 70  /p>..<ul>.<li><p
9020: 3e 0a 20 20 5e 28 54 68 65 20 6e 61 6d 65 20 6f  >.  ^(The name o
9030: 66 20 74 68 65 20 74 61 62 6c 65 20 74 6f 20 62  f the table to b
9040: 65 20 6d 6f 64 69 66 69 65 64 20 69 6e 20 61 6e  e modified in an
9050: 20 5b 55 50 44 41 54 45 5d 2c 20 5b 44 45 4c 45   [UPDATE], [DELE
9060: 54 45 5d 2c 20 6f 72 20 5b 49 4e 53 45 52 54 5d  TE], or [INSERT]
9070: 0a 20 20 73 74 61 74 65 6d 65 6e 74 20 6d 75 73  .  statement mus
9080: 74 20 62 65 20 61 6e 20 75 6e 71 75 61 6c 69 66  t be an unqualif
9090: 69 65 64 20 74 61 62 6c 65 20 6e 61 6d 65 2e 20  ied table name. 
90a0: 20 49 6e 20 6f 74 68 65 72 20 77 6f 72 64 73 2c   In other words,
90b0: 20 6f 6e 65 20 6d 75 73 74 0a 20 20 75 73 65 20   one must.  use 
90c0: 6a 75 73 74 20 22 3c 69 3e 74 61 62 6c 65 6e 61  just "<i>tablena
90d0: 6d 65 3c 2f 69 3e 22 20 6e 6f 74 20 22 3c 69 3e  me</i>" not "<i>
90e0: 64 61 74 61 62 61 73 65 3c 2f 69 3e 3c 62 3e 2e  database</i><b>.
90f0: 3c 2f 62 3e 3c 69 3e 74 61 62 6c 65 6e 61 6d 65  </b><i>tablename
9100: 3c 2f 69 3e 22 0a 20 20 77 68 65 6e 20 73 70 65  </i>".  when spe
9110: 63 69 66 79 69 6e 67 20 74 68 65 20 74 61 62 6c  cifying the tabl
9120: 65 2e 29 5e 20 20 5e 54 68 65 20 74 61 62 6c 65  e.)^  ^The table
9130: 20 74 6f 20 62 65 20 6d 6f 64 69 66 69 65 64 20   to be modified 
9140: 6d 75 73 74 20 65 78 69 73 74 20 69 6e 20 74 68  must exist in th
9150: 65 0a 20 20 73 61 6d 65 20 64 61 74 61 62 61 73  e.  same databas
9160: 65 20 61 73 20 74 68 65 20 74 61 62 6c 65 20 6f  e as the table o
9170: 72 20 76 69 65 77 20 74 6f 20 77 68 69 63 68 20  r view to which 
9180: 74 68 65 20 74 72 69 67 67 65 72 20 69 73 20 61  the trigger is a
9190: 74 74 61 63 68 65 64 2e 0a 20 20 3c 2f 70 3e 3c  ttached..  </p><
91a0: 2f 6c 69 3e 0a 0a 3c 6c 69 3e 3c 70 3e 0a 20 20  /li>..<li><p>.  
91b0: 5e 54 68 65 20 22 49 4e 53 45 52 54 20 49 4e 54  ^The "INSERT INT
91c0: 4f 20 3c 69 3e 74 61 62 6c 65 3c 2f 69 3e 20 44  O <i>table</i> D
91d0: 45 46 41 55 4c 54 20 56 41 4c 55 45 53 22 20 66  EFAULT VALUES" f
91e0: 6f 72 6d 20 6f 66 20 74 68 65 20 5b 49 4e 53 45  orm of the [INSE
91f0: 52 54 5d 20 73 74 61 74 65 6d 65 6e 74 0a 20 20  RT] statement.  
9200: 69 73 20 6e 6f 74 20 73 75 70 70 6f 72 74 65 64  is not supported
9210: 2e 0a 20 20 3c 2f 70 3e 3c 2f 6c 69 3e 0a 0a 3c  ..  </p></li>..<
9220: 6c 69 3e 3c 70 3e 0a 20 20 5e 54 68 65 20 49 4e  li><p>.  ^The IN
9230: 44 45 58 45 44 20 42 59 20 61 6e 64 20 4e 4f 54  DEXED BY and NOT
9240: 20 49 4e 44 45 58 45 44 20 63 6c 61 75 73 65 73   INDEXED clauses
9250: 20 61 72 65 20 6e 6f 74 20 73 75 70 70 6f 72 74   are not support
9260: 65 64 20 66 6f 72 20 5b 55 50 44 41 54 45 5d 20  ed for [UPDATE] 
9270: 61 6e 64 0a 20 20 5b 44 45 4c 45 54 45 5d 20 73  and.  [DELETE] s
9280: 74 61 74 65 6d 65 6e 74 73 2e 0a 20 20 3c 2f 70  tatements..  </p
9290: 3e 3c 2f 6c 69 3e 0a 0a 3c 6c 69 3e 3c 70 3e 0a  ></li>..<li><p>.
92a0: 20 20 5e 28 54 68 65 20 4f 52 44 45 52 20 42 59    ^(The ORDER BY
92b0: 20 61 6e 64 20 4c 49 4d 49 54 20 63 6c 61 75 73   and LIMIT claus
92c0: 65 73 20 6f 6e 20 5b 55 50 44 41 54 45 5d 20 61  es on [UPDATE] a
92d0: 6e 64 20 5b 44 45 4c 45 54 45 5d 20 73 74 61 74  nd [DELETE] stat
92e0: 65 6d 65 6e 74 73 20 61 72 65 20 6e 6f 74 0a 20  ements are not. 
92f0: 20 73 75 70 70 6f 72 74 65 64 2e 20 20 4f 52 44   supported.  ORD
9300: 45 52 20 42 59 20 61 6e 64 20 4c 49 4d 49 54 20  ER BY and LIMIT 
9310: 61 72 65 20 6e 6f 74 20 6e 6f 72 6d 61 6c 6c 79  are not normally
9320: 20 73 75 70 70 6f 72 74 65 64 20 66 6f 72 20 5b   supported for [
9330: 55 50 44 41 54 45 5d 20 6f 72 0a 20 20 5b 44 45  UPDATE] or.  [DE
9340: 4c 45 54 45 5d 20 69 6e 20 61 6e 79 20 63 6f 6e  LETE] in any con
9350: 74 65 78 74 20 62 75 74 20 63 61 6e 20 62 65 20  text but can be 
9360: 65 6e 61 62 6c 65 64 20 66 6f 72 20 74 6f 70 2d  enabled for top-
9370: 6c 65 76 65 6c 20 73 74 61 74 65 6d 65 6e 74 73  level statements
9380: 0a 20 20 75 73 69 6e 67 20 74 68 65 20 5b 53 51  .  using the [SQ
9390: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 55 50 44 41  LITE_ENABLE_UPDA
93a0: 54 45 5f 44 45 4c 45 54 45 5f 4c 49 4d 49 54 5d  TE_DELETE_LIMIT]
93b0: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70   compile-time op
93c0: 74 69 6f 6e 2e 20 20 48 6f 77 65 76 65 72 2c 0a  tion.  However,.
93d0: 20 20 74 68 61 74 20 63 6f 6d 70 69 6c 65 2d 74    that compile-t
93e0: 69 6d 65 20 6f 70 74 69 6f 6e 20 6f 6e 6c 79 20  ime option only 
93f0: 61 70 70 6c 69 65 73 20 74 6f 20 74 6f 70 2d 6c  applies to top-l
9400: 65 76 65 6c 20 5b 55 50 44 41 54 45 5d 20 61 6e  evel [UPDATE] an
9410: 64 20 5b 44 45 4c 45 54 45 5d 0a 20 20 73 74 61  d [DELETE].  sta
9420: 74 65 6d 65 6e 74 73 2c 20 6e 6f 74 20 5b 55 50  tements, not [UP
9430: 44 41 54 45 5d 20 61 6e 64 20 5b 44 45 4c 45 54  DATE] and [DELET
9440: 45 5d 20 73 74 61 74 65 6d 65 6e 74 73 20 77 69  E] statements wi
9450: 74 68 69 6e 20 74 72 69 67 67 65 72 73 2e 29 5e  thin triggers.)^
9460: 0a 20 20 3c 2f 70 3e 3c 2f 6c 69 3e 0a 3c 2f 75  .  </p></li>.</u
9470: 6c 3e 0a 0a 3c 74 63 6c 3e 68 64 5f 66 72 61 67  l>..<tcl>hd_frag
9480: 6d 65 6e 74 20 69 6e 73 74 65 61 64 5f 6f 66 5f  ment instead_of_
9490: 74 72 69 67 67 65 72 20 7b 49 4e 53 54 45 41 44  trigger {INSTEAD
94a0: 20 4f 46 7d 20 7b 49 4e 53 54 45 41 44 20 4f 46   OF} {INSTEAD OF
94b0: 20 74 72 69 67 67 65 72 7d 3c 2f 74 63 6c 3e 0a   trigger}</tcl>.
94c0: 3c 68 33 3e 49 4e 53 54 45 41 44 20 4f 46 20 74  <h3>INSTEAD OF t
94d0: 72 69 67 67 65 72 3c 2f 68 33 3e 0a 0a 3c 70 3e  rigger</h3>..<p>
94e0: 5e 54 72 69 67 67 65 72 73 20 6d 61 79 20 62 65  ^Triggers may be
94f0: 20 63 72 65 61 74 65 64 20 6f 6e 20 5b 76 69 65   created on [vie
9500: 77 73 5d 2c 20 61 73 20 77 65 6c 6c 20 61 73 20  ws], as well as 
9510: 6f 72 64 69 6e 61 72 79 20 74 61 62 6c 65 73 2c  ordinary tables,
9520: 20 62 79 0a 73 70 65 63 69 66 79 69 6e 67 20 49   by.specifying I
9530: 4e 53 54 45 41 44 20 4f 46 20 69 6e 20 74 68 65  NSTEAD OF in the
9540: 20 43 52 45 41 54 45 20 54 52 49 47 47 45 52 20   CREATE TRIGGER 
9550: 73 74 61 74 65 6d 65 6e 74 2e 20 0a 5e 49 66 20  statement. .^If 
9560: 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 4f 4e 20 49  one or more ON I
9570: 4e 53 45 52 54 2c 20 4f 4e 20 44 45 4c 45 54 45  NSERT, ON DELETE
9580: 0a 6f 72 20 4f 4e 20 55 50 44 41 54 45 20 74 72  .or ON UPDATE tr
9590: 69 67 67 65 72 73 20 61 72 65 20 64 65 66 69 6e  iggers are defin
95a0: 65 64 20 6f 6e 20 61 20 76 69 65 77 2c 20 74 68  ed on a view, th
95b0: 65 6e 20 69 74 20 69 73 20 6e 6f 74 20 61 6e 0a  en it is not an.
95c0: 65 72 72 6f 72 20 74 6f 20 65 78 65 63 75 74 65  error to execute
95d0: 20 61 6e 20 49 4e 53 45 52 54 2c 20 44 45 4c 45   an INSERT, DELE
95e0: 54 45 20 6f 72 20 55 50 44 41 54 45 20 73 74 61  TE or UPDATE sta
95f0: 74 65 6d 65 6e 74 20 6f 6e 20 74 68 65 20 76 69  tement on the vi
9600: 65 77 2c 20 0a 72 65 73 70 65 63 74 69 76 65 6c  ew, .respectivel
9610: 79 2e 20 20 5e 49 6e 73 74 65 61 64 2c 0a 65 78  y.  ^Instead,.ex
9620: 65 63 75 74 69 6e 67 20 61 6e 20 49 4e 53 45 52  ecuting an INSER
9630: 54 2c 20 44 45 4c 45 54 45 20 6f 72 20 55 50 44  T, DELETE or UPD
9640: 41 54 45 20 6f 6e 20 74 68 65 20 76 69 65 77 20  ATE on the view 
9650: 63 61 75 73 65 73 20 74 68 65 20 61 73 73 6f 63  causes the assoc
9660: 69 61 74 65 64 0a 74 72 69 67 67 65 72 73 20 74  iated.triggers t
9670: 6f 20 66 69 72 65 2e 20 5e 54 68 65 20 72 65 61  o fire. ^The rea
9680: 6c 20 74 61 62 6c 65 73 20 75 6e 64 65 72 6c 79  l tables underly
9690: 69 6e 67 20 74 68 65 20 76 69 65 77 20 61 72 65  ing the view are
96a0: 20 6e 6f 74 20 6d 6f 64 69 66 69 65 64 0a 28 65   not modified.(e
96b0: 78 63 65 70 74 20 70 6f 73 73 69 62 6c 79 20 65  xcept possibly e
96c0: 78 70 6c 69 63 69 74 6c 79 2c 20 62 79 20 61 20  xplicitly, by a 
96d0: 74 72 69 67 67 65 72 20 70 72 6f 67 72 61 6d 29  trigger program)
96e0: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 4e 6f 74 65 20  .</p>..<p>^Note 
96f0: 74 68 61 74 20 74 68 65 20 5b 73 71 6c 69 74 65  that the [sqlite
9700: 33 5f 63 68 61 6e 67 65 73 28 29 5d 20 61 6e 64  3_changes()] and
9710: 20 5b 73 71 6c 69 74 65 33 5f 74 6f 74 61 6c 5f   [sqlite3_total_
9720: 63 68 61 6e 67 65 73 28 29 5d 20 69 6e 74 65 72  changes()] inter
9730: 66 61 63 65 73 0a 64 6f 20 6e 6f 74 20 63 6f 75  faces.do not cou
9740: 6e 74 20 49 4e 53 54 45 41 44 20 4f 46 20 74 72  nt INSTEAD OF tr
9750: 69 67 67 65 72 20 66 69 72 69 6e 67 73 2c 20 62  igger firings, b
9760: 75 74 20 74 68 65 0a 5b 63 6f 75 6e 74 5f 63 68  ut the.[count_ch
9770: 61 6e 67 65 73 20 70 72 61 67 6d 61 5d 20 64 6f  anges pragma] do
9780: 65 73 20 63 6f 75 6e 74 20 49 4e 53 54 45 41 44  es count INSTEAD
9790: 20 4f 46 20 74 72 69 67 67 65 72 20 66 69 72 69   OF trigger firi
97a0: 6e 67 2e 3c 2f 70 3e 0a 0a 3c 68 33 3e 45 78 61  ng.</p>..<h3>Exa
97b0: 6d 70 6c 65 73 3c 2f 68 33 3e 0a 0a 3c 70 3e 5e  mples</h3>..<p>^
97c0: 28 41 73 73 75 6d 69 6e 67 20 74 68 61 74 20 63  (Assuming that c
97d0: 75 73 74 6f 6d 65 72 20 72 65 63 6f 72 64 73 20  ustomer records 
97e0: 61 72 65 20 73 74 6f 72 65 64 20 69 6e 20 74 68  are stored in th
97f0: 65 20 22 63 75 73 74 6f 6d 65 72 73 22 20 74 61  e "customers" ta
9800: 62 6c 65 2c 20 61 6e 64 0a 74 68 61 74 20 6f 72  ble, and.that or
9810: 64 65 72 20 72 65 63 6f 72 64 73 20 61 72 65 20  der records are 
9820: 73 74 6f 72 65 64 20 69 6e 20 74 68 65 20 22 6f  stored in the "o
9830: 72 64 65 72 73 22 20 74 61 62 6c 65 2c 20 74 68  rders" table, th
9840: 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 72 69 67  e following trig
9850: 67 65 72 0a 65 6e 73 75 72 65 73 20 74 68 61 74  ger.ensures that
9860: 20 61 6c 6c 20 61 73 73 6f 63 69 61 74 65 64 20   all associated 
9870: 6f 72 64 65 72 73 20 61 72 65 20 72 65 64 69 72  orders are redir
9880: 65 63 74 65 64 20 77 68 65 6e 20 61 20 63 75 73  ected when a cus
9890: 74 6f 6d 65 72 20 63 68 61 6e 67 65 73 0a 68 69  tomer changes.hi
98a0: 73 20 6f 72 20 68 65 72 20 61 64 64 72 65 73 73  s or her address
98b0: 3a 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 45 78 61 6d  :</p>..<tcl>Exam
98c0: 70 6c 65 20 7b 0a 43 52 45 41 54 45 20 54 52 49  ple {.CREATE TRI
98d0: 47 47 45 52 20 75 70 64 61 74 65 5f 63 75 73 74  GGER update_cust
98e0: 6f 6d 65 72 5f 61 64 64 72 65 73 73 20 55 50 44  omer_address UPD
98f0: 41 54 45 20 4f 46 20 61 64 64 72 65 73 73 20 4f  ATE OF address O
9900: 4e 20 63 75 73 74 6f 6d 65 72 73 20 0a 20 20 42  N customers .  B
9910: 45 47 49 4e 0a 20 20 20 20 55 50 44 41 54 45 20  EGIN.    UPDATE 
9920: 6f 72 64 65 72 73 20 53 45 54 20 61 64 64 72 65  orders SET addre
9930: 73 73 20 3d 20 6e 65 77 2e 61 64 64 72 65 73 73  ss = new.address
9940: 20 57 48 45 52 45 20 63 75 73 74 6f 6d 65 72 5f   WHERE customer_
9950: 6e 61 6d 65 20 3d 20 6f 6c 64 2e 6e 61 6d 65 3b  name = old.name;
9960: 0a 20 20 45 4e 44 3b 0a 7d 3c 2f 74 63 6c 3e 0a  .  END;.}</tcl>.
9970: 0a 3c 70 3e 57 69 74 68 20 74 68 69 73 20 74 72  .<p>With this tr
9980: 69 67 67 65 72 20 69 6e 73 74 61 6c 6c 65 64 2c  igger installed,
9990: 20 65 78 65 63 75 74 69 6e 67 20 74 68 65 20 73   executing the s
99a0: 74 61 74 65 6d 65 6e 74 3a 3c 2f 70 3e 0a 0a 3c  tatement:</p>..<
99b0: 74 63 6c 3e 45 78 61 6d 70 6c 65 20 7b 0a 55 50  tcl>Example {.UP
99c0: 44 41 54 45 20 63 75 73 74 6f 6d 65 72 73 20 53  DATE customers S
99d0: 45 54 20 61 64 64 72 65 73 73 20 3d 20 27 31 20  ET address = '1 
99e0: 4d 61 69 6e 20 53 74 2e 27 20 57 48 45 52 45 20  Main St.' WHERE 
99f0: 6e 61 6d 65 20 3d 20 27 4a 61 63 6b 20 4a 6f 6e  name = 'Jack Jon
9a00: 65 73 27 3b 0a 7d 3c 2f 74 63 6c 3e 0a 0a 3c 70  es';.}</tcl>..<p
9a10: 3e 63 61 75 73 65 73 20 74 68 65 20 66 6f 6c 6c  >causes the foll
9a20: 6f 77 69 6e 67 20 74 6f 20 62 65 20 61 75 74 6f  owing to be auto
9a30: 6d 61 74 69 63 61 6c 6c 79 20 65 78 65 63 75 74  matically execut
9a40: 65 64 3a 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 45 78  ed:</p>..<tcl>Ex
9a50: 61 6d 70 6c 65 20 7b 0a 55 50 44 41 54 45 20 6f  ample {.UPDATE o
9a60: 72 64 65 72 73 20 53 45 54 20 61 64 64 72 65 73  rders SET addres
9a70: 73 20 3d 20 27 31 20 4d 61 69 6e 20 53 74 2e 27  s = '1 Main St.'
9a80: 20 57 48 45 52 45 20 63 75 73 74 6f 6d 65 72 5f   WHERE customer_
9a90: 6e 61 6d 65 20 3d 20 27 4a 61 63 6b 20 4a 6f 6e  name = 'Jack Jon
9aa0: 65 73 27 3b 0a 7d 3c 2f 74 63 6c 3e 29 5e 0a 0a  es';.}</tcl>)^..
9ab0: 3c 74 63 6c 3e 68 64 5f 66 72 61 67 6d 65 6e 74  <tcl>hd_fragment
9ac0: 20 75 6e 64 65 66 5f 62 65 66 6f 72 65 20 7b 75   undef_before {u
9ad0: 6e 64 65 66 69 6e 65 64 20 42 45 46 4f 52 45 20  ndefined BEFORE 
9ae0: 74 72 69 67 67 65 72 20 62 65 68 61 76 69 6f 72  trigger behavior
9af0: 7d 3c 2f 74 63 6c 3e 0a 3c 68 33 3e 43 61 75 74  }</tcl>.<h3>Caut
9b00: 69 6f 6e 73 20 4f 6e 20 54 68 65 20 55 73 65 20  ions On The Use 
9b10: 4f 66 20 42 45 46 4f 52 45 20 74 72 69 67 67 65  Of BEFORE trigge
9b20: 72 73 3c 2f 68 33 3e 0a 0a 3c 70 3e 49 66 20 61  rs</h3>..<p>If a
9b30: 20 42 45 46 4f 52 45 20 55 50 44 41 54 45 20 6f   BEFORE UPDATE o
9b40: 72 20 42 45 46 4f 52 45 20 44 45 4c 45 54 45 20  r BEFORE DELETE 
9b50: 74 72 69 67 67 65 72 20 6d 6f 64 69 66 69 65 73  trigger modifies
9b60: 20 6f 72 20 64 65 6c 65 74 65 73 20 61 20 72 6f   or deletes a ro
9b70: 77 0a 74 68 61 74 20 77 61 73 20 74 6f 20 68 61  w.that was to ha
9b80: 76 65 20 62 65 65 6e 20 75 70 64 61 74 65 64 20  ve been updated 
9b90: 6f 72 20 64 65 6c 65 74 65 64 2c 20 74 68 65 6e  or deleted, then
9ba0: 20 74 68 65 20 72 65 73 75 6c 74 20 6f 66 20 74   the result of t
9bb0: 68 65 20 73 75 62 73 65 71 75 65 6e 74 0a 75 70  he subsequent.up
9bc0: 64 61 74 65 20 6f 72 20 64 65 6c 65 74 65 20 6f  date or delete o
9bd0: 70 65 72 61 74 69 6f 6e 20 69 73 20 75 6e 64 65  peration is unde
9be0: 66 69 6e 65 64 2e 20 20 46 75 72 74 68 65 72 6d  fined.  Furtherm
9bf0: 6f 72 65 2c 20 69 66 20 61 20 42 45 46 4f 52 45  ore, if a BEFORE
9c00: 20 74 72 69 67 67 65 72 0a 6d 6f 64 69 66 69 65   trigger.modifie
9c10: 73 20 6f 72 20 64 65 6c 65 74 65 73 20 61 20 72  s or deletes a r
9c20: 6f 77 2c 20 74 68 65 6e 20 69 74 20 69 73 20 75  ow, then it is u
9c30: 6e 64 65 66 69 6e 65 64 20 77 68 65 74 68 65 72  ndefined whether
9c40: 20 6f 72 20 6e 6f 74 20 41 46 54 45 52 20 74 72   or not AFTER tr
9c50: 69 67 67 65 72 73 0a 74 68 61 74 20 77 6f 75 6c  iggers.that woul
9c60: 64 20 68 61 76 65 20 6f 74 68 65 72 77 69 73 65  d have otherwise
9c70: 20 72 75 6e 20 6f 6e 20 74 68 6f 73 65 20 72 6f   run on those ro
9c80: 77 73 20 77 69 6c 6c 20 69 6e 20 66 61 63 74 20  ws will in fact 
9c90: 72 75 6e 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 54 68  run..</p>..<p>Th
9ca0: 65 20 76 61 6c 75 65 20 6f 66 20 4e 45 57 2e 72  e value of NEW.r
9cb0: 6f 77 69 64 20 69 73 20 75 6e 64 65 66 69 6e 65  owid is undefine
9cc0: 64 20 69 6e 20 61 20 42 45 46 4f 52 45 20 49 4e  d in a BEFORE IN
9cd0: 53 45 52 54 20 74 72 69 67 67 65 72 20 69 6e 20  SERT trigger in 
9ce0: 77 68 69 63 68 0a 74 68 65 20 72 6f 77 69 64 20  which.the rowid 
9cf0: 69 73 20 6e 6f 74 20 65 78 70 6c 69 63 69 74 6c  is not explicitl
9d00: 79 20 73 65 74 20 74 6f 20 61 6e 20 69 6e 74 65  y set to an inte
9d10: 67 65 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 42 65 63  ger.</p>..<p>Bec
9d20: 61 75 73 65 20 6f 66 20 74 68 65 20 62 65 68 61  ause of the beha
9d30: 76 69 6f 72 73 20 64 65 73 63 72 69 62 65 64 20  viors described 
9d40: 61 62 6f 76 65 2c 20 70 72 6f 67 72 61 6d 6d 65  above, programme
9d50: 72 73 20 61 72 65 20 65 6e 63 6f 75 72 61 67 65  rs are encourage
9d60: 64 20 74 6f 0a 70 72 65 66 65 72 20 41 46 54 45  d to.prefer AFTE
9d70: 52 20 74 72 69 67 67 65 72 73 20 6f 76 65 72 20  R triggers over 
9d80: 42 45 46 4f 52 45 20 74 72 69 67 67 65 72 73 2e  BEFORE triggers.
9d90: 3c 2f 70 3e 0a 0a 3c 68 33 3e 54 68 65 20 52 41  </p>..<h3>The RA
9da0: 49 53 45 28 29 20 66 75 6e 63 74 69 6f 6e 3c 2f  ISE() function</
9db0: 68 33 3e 0a 0a 3c 70 3e 5e 28 41 20 73 70 65 63  h3>..<p>^(A spec
9dc0: 69 61 6c 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e  ial SQL function
9dd0: 20 52 41 49 53 45 28 29 20 6d 61 79 20 62 65 20   RAISE() may be 
9de0: 75 73 65 64 20 77 69 74 68 69 6e 20 61 20 74 72  used within a tr
9df0: 69 67 67 65 72 2d 70 72 6f 67 72 61 6d 2c 29 5e  igger-program,)^
9e00: 0a 77 69 74 68 20 74 68 65 20 66 6f 6c 6c 6f 77  .with the follow
9e10: 69 6e 67 20 73 79 6e 74 61 78 3c 2f 70 3e 20 0a  ing syntax</p> .
9e20: 0a 3c 74 63 6c 3e 42 75 62 62 6c 65 44 69 61 67  .<tcl>BubbleDiag
9e30: 72 61 6d 20 72 61 69 73 65 2d 66 75 6e 63 74 69  ram raise-functi
9e40: 6f 6e 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 5e 57 68  on</tcl>..<p>^Wh
9e50: 65 6e 20 6f 6e 65 20 6f 66 20 74 68 65 20 66 69  en one of the fi
9e60: 72 73 74 20 74 68 72 65 65 20 66 6f 72 6d 73 20  rst three forms 
9e70: 69 73 20 63 61 6c 6c 65 64 20 64 75 72 69 6e 67  is called during
9e80: 20 74 72 69 67 67 65 72 2d 70 72 6f 67 72 61 6d   trigger-program
9e90: 0a 65 78 65 63 75 74 69 6f 6e 2c 20 74 68 65 20  .execution, the 
9ea0: 73 70 65 63 69 66 69 65 64 20 5b 4f 4e 20 43 4f  specified [ON CO
9eb0: 4e 46 4c 49 43 54 5d 20 70 72 6f 63 65 73 73 69  NFLICT] processi
9ec0: 6e 67 20 69 73 20 70 65 72 66 6f 72 6d 65 64 0a  ng is performed.
9ed0: 28 65 69 74 68 65 72 20 41 42 4f 52 54 2c 20 46  (either ABORT, F
9ee0: 41 49 4c 20 6f 72 20 52 4f 4c 4c 42 41 43 4b 29  AIL or ROLLBACK)
9ef0: 20 61 6e 64 20 74 68 65 20 63 75 72 72 65 6e 74   and the current
9f00: 20 71 75 65 72 79 20 74 65 72 6d 69 6e 61 74 65   query terminate
9f10: 73 2e 0a 41 6e 20 65 72 72 6f 72 20 63 6f 64 65  s..An error code
9f20: 20 6f 66 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 53   of [SQLITE_CONS
9f30: 54 52 41 49 4e 54 5d 20 69 73 20 72 65 74 75 72  TRAINT] is retur
9f40: 6e 65 64 20 74 6f 20 74 68 65 20 61 70 70 6c 69  ned to the appli
9f50: 63 61 74 69 6f 6e 2c 0a 61 6c 6f 6e 67 20 77 69  cation,.along wi
9f60: 74 68 20 74 68 65 20 73 70 65 63 69 66 69 65 64  th the specified
9f70: 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 2e 3c   error message.<
9f80: 2f 70 3e 0a 0a 3c 70 3e 5e 57 68 65 6e 20 52 41  /p>..<p>^When RA
9f90: 49 53 45 28 49 47 4e 4f 52 45 29 20 69 73 20 63  ISE(IGNORE) is c
9fa0: 61 6c 6c 65 64 2c 20 74 68 65 20 72 65 6d 61 69  alled, the remai
9fb0: 6e 64 65 72 20 6f 66 20 74 68 65 20 63 75 72 72  nder of the curr
9fc0: 65 6e 74 20 74 72 69 67 67 65 72 20 70 72 6f 67  ent trigger prog
9fd0: 72 61 6d 2c 0a 74 68 65 20 73 74 61 74 65 6d 65  ram,.the stateme
9fe0: 6e 74 20 74 68 61 74 20 63 61 75 73 65 64 20 74  nt that caused t
9ff0: 68 65 20 74 72 69 67 67 65 72 20 70 72 6f 67 72  he trigger progr
a000: 61 6d 20 74 6f 20 65 78 65 63 75 74 65 20 61 6e  am to execute an
a010: 64 20 61 6e 79 20 73 75 62 73 65 71 75 65 6e 74  d any subsequent
a020: 0a 74 72 69 67 67 65 72 20 70 72 6f 67 72 61 6d  .trigger program
a030: 73 20 74 68 61 74 20 77 6f 75 6c 64 20 6f 66 20  s that would of 
a040: 62 65 65 6e 20 65 78 65 63 75 74 65 64 20 61 72  been executed ar
a050: 65 20 61 62 61 6e 64 6f 6e 65 64 2e 20 5e 4e 6f  e abandoned. ^No
a060: 20 64 61 74 61 62 61 73 65 0a 63 68 61 6e 67 65   database.change
a070: 73 20 61 72 65 20 72 6f 6c 6c 65 64 20 62 61 63  s are rolled bac
a080: 6b 2e 20 20 5e 49 66 20 74 68 65 20 73 74 61 74  k.  ^If the stat
a090: 65 6d 65 6e 74 20 74 68 61 74 20 63 61 75 73 65  ement that cause
a0a0: 64 20 74 68 65 20 74 72 69 67 67 65 72 20 70 72  d the trigger pr
a0b0: 6f 67 72 61 6d 0a 74 6f 20 65 78 65 63 75 74 65  ogram.to execute
a0c0: 20 69 73 20 69 74 73 65 6c 66 20 70 61 72 74 20   is itself part 
a0d0: 6f 66 20 61 20 74 72 69 67 67 65 72 20 70 72 6f  of a trigger pro
a0e0: 67 72 61 6d 2c 20 74 68 65 6e 20 74 68 61 74 20  gram, then that 
a0f0: 74 72 69 67 67 65 72 20 70 72 6f 67 72 61 6d 0a  trigger program.
a100: 72 65 73 75 6d 65 73 20 65 78 65 63 75 74 69 6f  resumes executio
a110: 6e 20 61 74 20 74 68 65 20 62 65 67 69 6e 6e 69  n at the beginni
a120: 6e 67 20 6f 66 20 74 68 65 20 6e 65 78 74 20 73  ng of the next s
a130: 74 65 70 2e 0a 3c 2f 70 3e 0a 0a 0a 3c 74 63 6c  tep..</p>...<tcl
a140: 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23  >.##############
a150: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a160: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a170: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a180: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a190: 23 0a 53 65 63 74 69 6f 6e 20 7b 43 52 45 41 54  #.Section {CREAT
a1a0: 45 20 56 49 45 57 7d 20 7b 63 72 65 61 74 65 76  E VIEW} {createv
a1b0: 69 65 77 7d 20 7b 7b 43 52 45 41 54 45 20 56 49  iew} {{CREATE VI
a1c0: 45 57 7d 20 76 69 65 77 20 2a 76 69 65 77 73 7d  EW} view *views}
a1d0: 0a 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20  ..BubbleDiagram 
a1e0: 63 72 65 61 74 65 2d 76 69 65 77 2d 73 74 6d 74  create-view-stmt
a1f0: 20 31 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 5e 54   1.</tcl>..<p>^T
a200: 68 65 20 43 52 45 41 54 45 20 56 49 45 57 20 63  he CREATE VIEW c
a210: 6f 6d 6d 61 6e 64 20 61 73 73 69 67 6e 73 20 61  ommand assigns a
a220: 20 6e 61 6d 65 20 74 6f 20 61 20 70 72 65 2d 70   name to a pre-p
a230: 61 63 6b 61 67 65 64 20 0a 5b 53 45 4c 45 43 54  ackaged .[SELECT
a240: 5d 20 73 74 61 74 65 6d 65 6e 74 2e 20 0a 5e 4f  ] statement. .^O
a250: 6e 63 65 20 74 68 65 20 76 69 65 77 20 69 73 20  nce the view is 
a260: 63 72 65 61 74 65 64 2c 20 69 74 20 63 61 6e 20  created, it can 
a270: 62 65 20 75 73 65 64 20 69 6e 20 74 68 65 20 46  be used in the F
a280: 52 4f 4d 20 63 6c 61 75 73 65 0a 6f 66 20 61 6e  ROM clause.of an
a290: 6f 74 68 65 72 20 5b 53 45 4c 45 43 54 5d 20 69  other [SELECT] i
a2a0: 6e 20 70 6c 61 63 65 20 6f 66 20 61 20 74 61 62  n place of a tab
a2b0: 6c 65 20 6e 61 6d 65 2e 0a 3c 2f 70 3e 0a 0a 3c  le name..</p>..<
a2c0: 70 3e 5e 49 66 20 74 68 65 20 22 54 45 4d 50 22  p>^If the "TEMP"
a2d0: 20 6f 72 20 22 54 45 4d 50 4f 52 41 52 59 22 20   or "TEMPORARY" 
a2e0: 6b 65 79 77 6f 72 64 20 6f 63 63 75 72 73 20 69  keyword occurs i
a2f0: 6e 20 62 65 74 77 65 65 6e 20 22 43 52 45 41 54  n between "CREAT
a300: 45 22 0a 61 6e 64 20 22 56 49 45 57 22 20 74 68  E".and "VIEW" th
a310: 65 6e 20 74 68 65 20 76 69 65 77 20 74 68 61 74  en the view that
a320: 20 69 73 20 63 72 65 61 74 65 64 20 69 73 20 6f   is created is o
a330: 6e 6c 79 20 76 69 73 69 62 6c 65 20 74 6f 20 74  nly visible to t
a340: 68 65 0a 70 72 6f 63 65 73 73 20 74 68 61 74 20  he.process that 
a350: 6f 70 65 6e 65 64 20 74 68 65 20 64 61 74 61 62  opened the datab
a360: 61 73 65 20 61 6e 64 20 69 73 20 61 75 74 6f 6d  ase and is autom
a370: 61 74 69 63 61 6c 6c 79 20 64 65 6c 65 74 65 64  atically deleted
a380: 20 77 68 65 6e 0a 74 68 65 20 64 61 74 61 62 61   when.the databa
a390: 73 65 20 69 73 20 63 6c 6f 73 65 64 2e 3c 2f 70  se is closed.</p
a3a0: 3e 0a 0a 3c 70 3e 20 5e 49 66 20 61 20 26 6c 74  >..<p> ^If a &lt
a3b0: 3b 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 26 67  ;database-name&g
a3c0: 74 3b 20 69 73 20 73 70 65 63 69 66 69 65 64 2c  t; is specified,
a3d0: 20 74 68 65 6e 20 74 68 65 20 76 69 65 77 20 69   then the view i
a3e0: 73 20 63 72 65 61 74 65 64 20 69 6e 20 0a 74 68  s created in .th
a3f0: 65 20 6e 61 6d 65 64 20 64 61 74 61 62 61 73 65  e named database
a400: 2e 20 5e 49 74 20 69 73 20 61 6e 20 65 72 72 6f  . ^It is an erro
a410: 72 20 74 6f 20 73 70 65 63 69 66 79 20 62 6f 74  r to specify bot
a420: 68 20 61 20 26 6c 74 3b 64 61 74 61 62 61 73 65  h a &lt;database
a430: 2d 6e 61 6d 65 26 67 74 3b 0a 61 6e 64 20 74 68  -name&gt;.and th
a440: 65 20 54 45 4d 50 20 6b 65 79 77 6f 72 64 20 6f  e TEMP keyword o
a450: 6e 20 61 20 56 49 45 57 2c 20 75 6e 6c 65 73 73  n a VIEW, unless
a460: 20 74 68 65 20 26 6c 74 3b 64 61 74 61 62 61 73   the &lt;databas
a470: 65 2d 6e 61 6d 65 26 67 74 3b 20 69 73 20 22 74  e-name&gt; is "t
a480: 65 6d 70 22 2e 0a 5e 49 66 20 6e 6f 20 64 61 74  emp"..^If no dat
a490: 61 62 61 73 65 20 6e 61 6d 65 20 69 73 20 73 70  abase name is sp
a4a0: 65 63 69 66 69 65 64 2c 20 61 6e 64 20 74 68 65  ecified, and the
a4b0: 20 54 45 4d 50 20 6b 65 79 77 6f 72 64 20 69 73   TEMP keyword is
a4c0: 20 6e 6f 74 20 70 72 65 73 65 6e 74 2c 0a 74 68   not present,.th
a4d0: 65 20 56 49 45 57 20 69 73 20 63 72 65 61 74 65  e VIEW is create
a4e0: 64 20 69 6e 20 74 68 65 20 6d 61 69 6e 20 64 61  d in the main da
a4f0: 74 61 62 61 73 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e  tabase.</p>..<p>
a500: 5e 59 6f 75 20 63 61 6e 6e 6f 74 20 5b 44 45 4c  ^You cannot [DEL
a510: 45 54 45 5d 2c 20 5b 49 4e 53 45 52 54 5d 2c 20  ETE], [INSERT], 
a520: 6f 72 20 5b 55 50 44 41 54 45 5d 20 61 20 76 69  or [UPDATE] a vi
a530: 65 77 2e 20 20 5e 56 69 65 77 73 20 61 72 65 20  ew.  ^Views are 
a540: 72 65 61 64 2d 6f 6e 6c 79 20 0a 69 6e 20 53 51  read-only .in SQ
a550: 4c 69 74 65 2e 20 20 5e 48 6f 77 65 76 65 72 2c  Lite.  ^However,
a560: 20 69 6e 20 6d 61 6e 79 20 63 61 73 65 73 20 79   in many cases y
a570: 6f 75 20 63 61 6e 20 75 73 65 20 61 6e 0a 5b 49  ou can use an.[I
a580: 4e 53 54 45 41 44 20 4f 46 20 74 72 69 67 67 65  NSTEAD OF trigge
a590: 72 5d 20 6f 6e 20 74 68 65 20 76 69 65 77 20 74  r] on the view t
a5a0: 6f 20 61 63 63 6f 6d 70 6c 69 73 68 20 0a 74 68  o accomplish .th
a5b0: 65 20 73 61 6d 65 20 74 68 69 6e 67 2e 20 20 5e  e same thing.  ^
a5c0: 56 69 65 77 73 20 61 72 65 20 72 65 6d 6f 76 65  Views are remove
a5d0: 64 20 0a 77 69 74 68 20 74 68 65 20 5b 44 52 4f  d .with the [DRO
a5e0: 50 20 56 49 45 57 5d 20 63 6f 6d 6d 61 6e 64 2e  P VIEW] command.
a5f0: 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23  </p>..<tcl>.####
a600: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a610: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a620: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a630: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a640: 23 23 23 23 23 23 23 23 23 23 0a 53 65 63 74 69  ##########.Secti
a650: 6f 6e 20 7b 43 52 45 41 54 45 20 56 49 52 54 55  on {CREATE VIRTU
a660: 41 4c 20 54 41 42 4c 45 7d 20 7b 63 72 65 61 74  AL TABLE} {creat
a670: 65 76 74 61 62 7d 20 7b 7b 43 52 45 41 54 45 20  evtab} {{CREATE 
a680: 56 49 52 54 55 41 4c 20 54 41 42 4c 45 7d 7d 0a  VIRTUAL TABLE}}.
a690: 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 63  .BubbleDiagram c
a6a0: 72 65 61 74 65 2d 76 69 72 74 75 61 6c 2d 74 61  reate-virtual-ta
a6b0: 62 6c 65 2d 73 74 6d 74 20 31 0a 3c 2f 74 63 6c  ble-stmt 1.</tcl
a6c0: 3e 0a 0a 3c 70 3e 41 20 5b 76 69 72 74 75 61 6c  >..<p>A [virtual
a6d0: 20 74 61 62 6c 65 5d 20 69 73 20 61 6e 20 69 6e   table] is an in
a6e0: 74 65 72 66 61 63 65 20 74 6f 20 61 6e 20 65 78  terface to an ex
a6f0: 74 65 72 6e 61 6c 20 73 74 6f 72 61 67 65 20 6f  ternal storage o
a700: 72 20 63 6f 6d 70 75 74 61 74 69 6f 6e 0a 65 6e  r computation.en
a710: 67 69 6e 65 20 74 68 61 74 20 61 70 70 65 61 72  gine that appear
a720: 73 20 74 6f 20 62 65 20 61 20 74 61 62 6c 65 20  s to be a table 
a730: 62 75 74 20 64 6f 65 73 20 6e 6f 74 20 61 63 74  but does not act
a740: 75 61 6c 6c 79 20 73 74 6f 72 65 20 69 6e 66 6f  ually store info
a750: 72 6d 61 74 69 6f 6e 0a 69 6e 20 74 68 65 20 64  rmation.in the d
a760: 61 74 61 62 61 73 65 20 66 69 6c 65 2e 3c 2f 70  atabase file.</p
a770: 3e 0a 0a 3c 70 3e 49 6e 20 67 65 6e 65 72 61 6c  >..<p>In general
a780: 2c 20 79 6f 75 20 63 61 6e 20 64 6f 20 61 6e 79  , you can do any
a790: 74 68 69 6e 67 20 77 69 74 68 20 61 20 5b 76 69  thing with a [vi
a7a0: 72 74 75 61 6c 20 74 61 62 6c 65 5d 20 74 68 61  rtual table] tha
a7b0: 74 20 63 61 6e 20 62 65 20 64 6f 6e 65 0a 77 69  t can be done.wi
a7c0: 74 68 20 61 6e 20 6f 72 64 69 6e 61 72 79 20 74  th an ordinary t
a7d0: 61 62 6c 65 2c 20 65 78 63 65 70 74 20 74 68 61  able, except tha
a7e0: 74 20 5e 79 6f 75 20 63 61 6e 6e 6f 74 20 63 72  t ^you cannot cr
a7f0: 65 61 74 65 20 69 6e 64 69 63 65 73 20 6f 72 20  eate indices or 
a800: 74 72 69 67 67 65 72 73 20 6f 6e 20 61 0a 76 69  triggers on a.vi
a810: 72 74 75 61 6c 20 74 61 62 6c 65 2e 20 20 5e 53  rtual table.  ^S
a820: 6f 6d 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c  ome virtual tabl
a830: 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  e implementation
a840: 73 20 6d 69 67 68 74 20 69 6d 70 6f 73 65 20 61  s might impose a
a850: 64 64 69 74 69 6f 6e 61 6c 0a 72 65 73 74 72 69  dditional.restri
a860: 63 74 69 6f 6e 73 2e 20 20 46 6f 72 20 65 78 61  ctions.  For exa
a870: 6d 70 6c 65 2c 20 6d 61 6e 79 20 76 69 72 74 75  mple, many virtu
a880: 61 6c 20 74 61 62 6c 65 73 20 61 72 65 20 72 65  al tables are re
a890: 61 64 2d 6f 6e 6c 79 2e 3c 2f 70 3e 0a 0a 3c 70  ad-only.</p>..<p
a8a0: 3e 54 68 65 20 26 6c 74 3b 6d 6f 64 75 6c 65 2d  >The &lt;module-
a8b0: 6e 61 6d 65 26 67 74 3b 20 69 73 20 74 68 65 20  name&gt; is the 
a8c0: 6e 61 6d 65 20 6f 66 20 61 6e 20 6f 62 6a 65 63  name of an objec
a8d0: 74 20 74 68 61 74 20 69 6d 70 6c 65 6d 65 6e 74  t that implement
a8e0: 73 0a 74 68 65 20 76 69 72 74 75 61 6c 20 74 61  s.the virtual ta
a8f0: 62 6c 65 2e 20 20 5e 54 68 65 20 26 6c 74 3b 6d  ble.  ^The &lt;m
a900: 6f 64 75 6c 65 2d 6e 61 6d 65 26 67 74 3b 20 6d  odule-name&gt; m
a910: 75 73 74 20 62 65 20 72 65 67 69 73 74 65 72 65  ust be registere
a920: 64 20 77 69 74 68 0a 74 68 65 20 53 51 4c 69 74  d with.the SQLit
a930: 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  e database conne
a940: 63 74 69 6f 6e 20 75 73 69 6e 67 0a 5b 73 71 6c  ction using.[sql
a950: 69 74 65 33 5f 63 72 65 61 74 65 5f 6d 6f 64 75  ite3_create_modu
a960: 6c 65 28 29 5d 20 6f 72 20 5b 73 71 6c 69 74 65  le()] or [sqlite
a970: 33 5f 63 72 65 61 74 65 5f 6d 6f 64 75 6c 65 5f  3_create_module_
a980: 76 32 28 29 5d 0a 70 72 69 6f 72 20 74 6f 20 69  v2()].prior to i
a990: 73 73 75 69 6e 67 20 74 68 65 20 43 52 45 41 54  ssuing the CREAT
a9a0: 45 20 56 49 52 54 55 41 4c 20 54 41 42 4c 45 20  E VIRTUAL TABLE 
a9b0: 73 74 61 74 65 6d 65 6e 74 2e 0a 5e 54 68 65 20  statement..^The 
a9c0: 6d 6f 64 75 6c 65 20 74 61 6b 65 73 20 7a 65 72  module takes zer
a9d0: 6f 20 6f 72 20 6d 6f 72 65 20 63 6f 6d 6d 61 2d  o or more comma-
a9e0: 73 65 70 61 72 61 74 65 64 20 61 72 67 75 6d 65  separated argume
a9f0: 6e 74 73 2e 0a 5e 54 68 65 20 61 72 67 75 6d 65  nts..^The argume
aa00: 6e 74 73 20 63 61 6e 20 62 65 20 6a 75 73 74 20  nts can be just 
aa10: 61 62 6f 75 74 20 61 6e 79 20 74 65 78 74 20 61  about any text a
aa20: 73 20 6c 6f 6e 67 20 61 73 20 69 74 20 68 61 73  s long as it has
aa30: 20 62 61 6c 61 6e 63 65 64 0a 70 61 72 65 6e 74   balanced.parent
aa40: 68 65 73 65 73 2e 20 20 54 68 65 20 61 72 67 75  heses.  The argu
aa50: 6d 65 6e 74 20 73 79 6e 74 61 78 20 69 73 20 73  ment syntax is s
aa60: 75 66 66 69 63 69 65 6e 74 6c 79 20 67 65 6e 65  ufficiently gene
aa70: 72 61 6c 20 74 68 61 74 20 74 68 65 0a 61 72 67  ral that the.arg
aa80: 75 6d 65 6e 74 73 20 63 61 6e 20 62 65 20 6d 61  uments can be ma
aa90: 64 65 20 74 6f 20 61 70 70 65 61 72 20 61 73 20  de to appear as 
aaa0: 63 6f 6c 75 6d 6e 20 64 65 66 69 6e 69 74 69 6f  column definitio
aab0: 6e 73 20 69 6e 20 61 20 74 72 61 64 69 74 69 6f  ns in a traditio
aac0: 6e 61 6c 0a 5b 43 52 45 41 54 45 20 54 41 42 4c  nal.[CREATE TABL
aad0: 45 5d 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 0a  E] statement.  .
aae0: 5e 53 51 4c 69 74 65 20 70 61 73 73 65 73 20 74  ^SQLite passes t
aaf0: 68 65 20 6d 6f 64 75 6c 65 20 61 72 67 75 6d 65  he module argume
ab00: 6e 74 73 20 64 69 72 65 63 74 6c 79 0a 74 6f 20  nts directly.to 
ab10: 74 68 65 20 5b 78 43 72 65 61 74 65 5d 20 61 6e  the [xCreate] an
ab20: 64 20 5b 78 43 6f 6e 6e 65 63 74 5d 20 6d 65 74  d [xConnect] met
ab30: 68 6f 64 73 20 6f 66 20 74 68 65 20 6d 6f 64 75  hods of the modu
ab40: 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  le implementatio
ab50: 6e 0a 77 69 74 68 6f 75 74 20 61 6e 79 20 69 6e  n.without any in
ab60: 74 65 72 70 72 65 74 61 74 69 6f 6e 2e 20 20 49  terpretation.  I
ab70: 74 20 69 73 20 74 68 65 20 72 65 73 70 6f 6e 73  t is the respons
ab80: 69 62 69 6c 69 74 79 0a 6f 66 20 74 68 65 20 6d  ibility.of the m
ab90: 6f 64 75 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61  odule implementa
aba0: 74 69 6f 6e 20 74 6f 20 70 61 72 73 65 20 61 6e  tion to parse an
abb0: 64 20 69 6e 74 65 72 70 72 65 74 20 69 74 73 20  d interpret its 
abc0: 6f 77 6e 20 61 72 67 75 6d 65 6e 74 73 2e 3c 2f  own arguments.</
abd0: 70 3e 0a 0a 3c 70 3e 5e 41 20 76 69 72 74 75 61  p>..<p>^A virtua
abe0: 6c 20 74 61 62 6c 65 20 69 73 20 64 65 73 74 72  l table is destr
abf0: 6f 79 65 64 20 75 73 69 6e 67 20 74 68 65 20 6f  oyed using the o
ac00: 72 64 69 6e 61 72 79 0a 5b 44 52 4f 50 20 54 41  rdinary.[DROP TA
ac10: 42 4c 45 5d 20 73 74 61 74 65 6d 65 6e 74 2e 20  BLE] statement. 
ac20: 20 54 68 65 72 65 20 69 73 20 6e 6f 0a 44 52 4f   There is no.DRO
ac30: 50 20 56 49 52 54 55 41 4c 20 54 41 42 4c 45 20  P VIRTUAL TABLE 
ac40: 73 74 61 74 65 6d 65 6e 74 2e 3c 2f 70 3e 0a 0a  statement.</p>..
ac50: 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23  <tcl>.##########
ac60: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
ac70: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
ac80: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
ac90: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
aca0: 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 44 45 4c  ####.Section DEL
acb0: 45 54 45 20 64 65 6c 65 74 65 20 7b 44 45 4c 45  ETE delete {DELE
acc0: 54 45 20 2a 44 45 4c 45 54 45 73 7d 0a 0a 42 75  TE *DELETEs}..Bu
acd0: 62 62 6c 65 44 69 61 67 72 61 6d 20 64 65 6c 65  bbleDiagram dele
ace0: 74 65 2d 73 74 6d 74 20 31 0a 42 75 62 62 6c 65  te-stmt 1.Bubble
acf0: 44 69 61 67 72 61 6d 20 71 75 61 6c 69 66 69 65  Diagram qualifie
ad00: 64 2d 74 61 62 6c 65 2d 6e 61 6d 65 0a 3c 2f 74  d-table-name.</t
ad10: 63 6c 3e 0a 0a 3c 70 3e 5e 54 68 65 20 44 45 4c  cl>..<p>^The DEL
ad20: 45 54 45 20 63 6f 6d 6d 61 6e 64 20 69 73 20 75  ETE command is u
ad30: 73 65 64 20 74 6f 20 72 65 6d 6f 76 65 20 72 65  sed to remove re
ad40: 63 6f 72 64 73 20 66 72 6f 6d 20 61 20 74 61 62  cords from a tab
ad50: 6c 65 2e 0a 5e 54 68 65 20 63 6f 6d 6d 61 6e 64  le..^The command
ad60: 20 63 6f 6e 73 69 73 74 73 20 6f 66 20 74 68 65   consists of the
ad70: 20 22 44 45 4c 45 54 45 20 46 52 4f 4d 22 20 6b   "DELETE FROM" k
ad80: 65 79 77 6f 72 64 73 20 66 6f 6c 6c 6f 77 65 64  eywords followed
ad90: 20 62 79 0a 74 68 65 20 6e 61 6d 65 20 6f 66 20   by.the name of 
ada0: 74 68 65 20 74 61 62 6c 65 20 66 72 6f 6d 20 77  the table from w
adb0: 68 69 63 68 20 72 65 63 6f 72 64 73 20 61 72 65  hich records are
adc0: 20 74 6f 20 62 65 20 72 65 6d 6f 76 65 64 2e 0a   to be removed..
add0: 3c 2f 70 3e 0a 0a 3c 70 3e 5e 57 69 74 68 6f 75  </p>..<p>^Withou
ade0: 74 20 61 20 57 48 45 52 45 20 63 6c 61 75 73 65  t a WHERE clause
adf0: 2c 20 61 6c 6c 20 72 6f 77 73 20 6f 66 20 74 68  , all rows of th
ae00: 65 20 74 61 62 6c 65 20 61 72 65 20 72 65 6d 6f  e table are remo
ae10: 76 65 64 2e 0a 5e 49 66 20 61 20 57 48 45 52 45  ved..^If a WHERE
ae20: 20 63 6c 61 75 73 65 20 69 73 20 73 75 70 70 6c   clause is suppl
ae30: 69 65 64 2c 20 74 68 65 6e 20 6f 6e 6c 79 20 74  ied, then only t
ae40: 68 6f 73 65 20 72 6f 77 73 20 74 68 61 74 20 6d  hose rows that m
ae50: 61 74 63 68 0a 74 68 65 20 65 78 70 72 65 73 73  atch.the express
ae60: 69 6f 6e 20 61 72 65 20 72 65 6d 6f 76 65 64 2e  ion are removed.
ae70: 3c 2f 70 3e 0a 0a 3c 68 33 3e 52 65 73 74 72 69  </p>..<h3>Restri
ae80: 63 74 69 6f 6e 73 20 6f 6e 20 44 45 4c 45 54 45  ctions on DELETE
ae90: 20 53 74 61 74 65 6d 65 6e 74 73 20 57 69 74 68   Statements With
aea0: 69 6e 20 43 52 45 41 54 45 20 54 52 49 47 47 45  in CREATE TRIGGE
aeb0: 52 3c 2f 68 33 3e 0a 0a 3c 70 3e 5e 54 68 65 72  R</h3>..<p>^Ther
aec0: 65 20 61 72 65 20 61 64 64 69 74 69 6f 6e 61 6c  e are additional
aed0: 20 73 79 6e 74 61 78 20 72 65 73 74 72 69 63 74   syntax restrict
aee0: 69 6f 6e 73 20 6f 6e 20 44 45 4c 45 54 45 20 73  ions on DELETE s
aef0: 74 61 74 65 6d 65 6e 74 73 20 74 68 61 74 0a 6f  tatements that.o
af00: 63 63 75 72 20 77 69 74 68 69 6e 20 74 68 65 20  ccur within the 
af10: 62 6f 64 79 20 6f 66 20 61 20 5b 43 52 45 41 54  body of a [CREAT
af20: 45 20 54 52 49 47 47 45 52 5d 20 73 74 61 74 65  E TRIGGER] state
af30: 6d 65 6e 74 2e 20 20 5e 54 68 65 20 3c 69 3e 74  ment.  ^The <i>t
af40: 61 62 6c 65 2d 6e 61 6d 65 3c 2f 69 3e 0a 6d 75  able-name</i>.mu
af50: 73 74 20 62 65 20 75 6e 71 75 61 6c 69 66 69 65  st be unqualifie
af60: 64 2e 20 0a 5e 28 49 6e 20 6f 74 68 65 72 20 77  d. .^(In other w
af70: 6f 72 64 73 2c 20 74 68 65 20 3c 69 3e 64 61 74  ords, the <i>dat
af80: 61 62 61 73 65 2d 6e 61 6d 65 3c 2f 69 3e 3c 62  abase-name</i><b
af90: 3e 2e 3c 2f 62 3e 20 70 72 65 66 69 78 0a 6f 6e  >.</b> prefix.on
afa0: 20 74 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 20   the table name 
afb0: 69 73 20 6e 6f 74 20 61 6c 6c 6f 77 65 64 20 77  is not allowed w
afc0: 69 74 68 69 6e 20 74 72 69 67 67 65 72 73 2e 20  ithin triggers. 
afd0: 29 5e 0a 5e 54 68 65 20 74 61 62 6c 65 20 66 72  )^.^The table fr
afe0: 6f 6d 20 77 68 69 63 68 20 74 6f 20 64 65 6c 65  om which to dele
aff0: 74 65 20 6d 75 73 74 20 62 65 20 69 6e 20 74 68  te must be in th
b000: 65 20 73 61 6d 65 0a 64 61 74 61 62 61 73 65 20  e same.database 
b010: 61 73 20 74 68 65 20 74 61 62 6c 65 20 74 6f 20  as the table to 
b020: 77 68 69 63 68 20 74 68 65 20 74 72 69 67 67 65  which the trigge
b030: 72 20 69 73 20 61 74 74 61 63 68 65 64 2e 3c 2f  r is attached.</
b040: 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20 49 4e 44 45  p>..<p>^The INDE
b050: 58 45 44 20 42 59 20 61 6e 64 20 4e 4f 54 20 49  XED BY and NOT I
b060: 4e 44 45 58 45 44 20 63 6c 61 75 73 65 73 20 61  NDEXED clauses a
b070: 72 65 20 6e 6f 74 20 61 6c 6c 6f 77 65 64 20 6f  re not allowed o
b080: 6e 20 44 45 4c 45 54 45 0a 73 74 61 74 65 6d 65  n DELETE.stateme
b090: 6e 74 73 20 77 69 74 68 69 6e 20 74 72 69 67 67  nts within trigg
b0a0: 65 72 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68  ers.</p>..<p>^Th
b0b0: 65 20 4c 49 4d 49 54 20 63 6c 61 75 73 65 20 28  e LIMIT clause (
b0c0: 64 65 73 63 72 69 62 65 64 20 62 65 6c 6f 77 29  described below)
b0d0: 20 69 73 20 75 6e 73 75 70 70 6f 72 74 65 64 20   is unsupported 
b0e0: 77 69 74 68 69 6e 20 74 72 69 67 67 65 72 73 2e  within triggers.
b0f0: 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 68 64 5f 66 72  </p>..<tcl>hd_fr
b100: 61 67 6d 65 6e 74 20 74 72 75 63 61 74 65 6f 70  agment trucateop
b110: 74 20 7b 74 72 75 6e 63 61 74 65 20 6f 70 74 69  t {truncate opti
b120: 6d 69 7a 61 74 69 6f 6e 7d 3c 2f 74 63 6c 3e 0a  mization}</tcl>.
b130: 3c 68 33 3e 54 68 65 20 54 72 75 6e 63 61 74 65  <h3>The Truncate
b140: 20 4f 70 74 69 6d 69 7a 61 74 69 6f 6e 3c 2f 68   Optimization</h
b150: 33 3e 0a 0a 3c 70 3e 5e 57 68 65 6e 20 74 68 65  3>..<p>^When the
b160: 20 57 48 45 52 45 20 69 73 20 6f 6d 69 74 74 65   WHERE is omitte
b170: 64 20 66 72 6f 6d 20 61 20 44 45 4c 45 54 45 20  d from a DELETE 
b180: 73 74 61 74 65 6d 65 6e 74 20 61 6e 64 20 74 68  statement and th
b190: 65 20 74 61 62 6c 65 0a 62 65 69 6e 67 20 64 65  e table.being de
b1a0: 6c 65 74 65 64 20 68 61 73 20 6e 6f 20 74 72 69  leted has no tri
b1b0: 67 67 65 72 73 2c 0a 53 51 4c 69 74 65 20 75 73  ggers,.SQLite us
b1c0: 65 73 20 61 6e 20 6f 70 74 69 6d 69 7a 61 74 69  es an optimizati
b1d0: 6f 6e 20 74 6f 20 65 72 61 73 65 20 74 68 65 20  on to erase the 
b1e0: 65 6e 74 69 72 65 20 74 61 62 6c 65 20 63 6f 6e  entire table con
b1f0: 74 65 6e 74 0a 77 69 74 68 6f 75 74 20 68 61 76  tent.without hav
b200: 69 6e 67 20 74 6f 20 76 69 73 69 74 20 65 61 63  ing to visit eac
b210: 68 20 72 6f 77 20 6f 66 20 74 68 65 20 74 61 62  h row of the tab
b220: 6c 65 20 69 6e 64 69 76 69 64 75 61 6c 6c 79 2e  le individually.
b230: 0a 54 68 69 73 20 22 74 72 75 6e 63 61 74 65 22  .This "truncate"
b240: 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20 6d 61   optimization ma
b250: 6b 65 73 20 74 68 65 20 64 65 6c 65 74 65 20 72  kes the delete r
b260: 75 6e 20 6d 75 63 68 20 66 61 73 74 65 72 2e 0a  un much faster..
b270: 50 72 69 6f 72 20 74 6f 20 53 51 4c 69 74 65 20  Prior to SQLite 
b280: 5b 76 65 72 73 69 6f 6e 20 33 2e 36 2e 35 5d 2c  [version 3.6.5],
b290: 20 74 68 65 20 74 72 75 6e 63 61 74 65 20 6f 70   the truncate op
b2a0: 74 69 6d 69 7a 61 74 69 6f 6e 0a 61 6c 73 6f 20  timization.also 
b2b0: 6d 65 61 6e 74 20 74 68 61 74 20 74 68 65 20 5b  meant that the [
b2c0: 73 71 6c 69 74 65 33 5f 63 68 61 6e 67 65 73 28  sqlite3_changes(
b2d0: 29 5d 20 61 6e 64 0a 5b 73 71 6c 69 74 65 33 5f  )] and.[sqlite3_
b2e0: 74 6f 74 61 6c 5f 63 68 61 6e 67 65 73 28 29 5d  total_changes()]
b2f0: 20 69 6e 74 65 72 66 61 63 65 73 0a 61 6e 64 20   interfaces.and 
b300: 74 68 65 20 5b 63 6f 75 6e 74 5f 63 68 61 6e 67  the [count_chang
b310: 65 73 20 70 72 61 67 6d 61 5d 0a 77 69 6c 6c 20  es pragma].will 
b320: 6e 6f 74 20 61 63 74 75 61 6c 6c 79 20 72 65 74  not actually ret
b330: 75 72 6e 20 74 68 65 20 6e 75 6d 62 65 72 20 6f  urn the number o
b340: 66 20 64 65 6c 65 74 65 64 20 72 6f 77 73 2e 20  f deleted rows. 
b350: 20 0a 54 68 61 74 20 70 72 6f 62 6c 65 6d 20 68   .That problem h
b360: 61 73 20 62 65 65 6e 20 66 69 78 65 64 20 61 73  as been fixed as
b370: 20 6f 66 20 5b 76 65 72 73 69 6f 6e 20 33 2e 36   of [version 3.6
b380: 2e 35 5d 2e 0a 0a 3c 70 3e 5e 54 68 65 20 74 72  .5]...<p>^The tr
b390: 75 6e 63 61 74 65 20 6f 70 74 69 6d 69 7a 61 74  uncate optimizat
b3a0: 69 6f 6e 20 63 61 6e 20 62 65 20 70 65 72 6d 61  ion can be perma
b3b0: 6e 65 6e 74 6c 79 20 64 69 73 61 62 6c 65 64 20  nently disabled 
b3c0: 66 6f 72 20 61 6c 6c 20 71 75 65 72 69 65 73 0a  for all queries.
b3d0: 62 79 20 72 65 63 6f 6d 70 69 6c 69 6e 67 0a 53  by recompiling.S
b3e0: 51 4c 69 74 65 20 77 69 74 68 20 74 68 65 20 5b  QLite with the [
b3f0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 54 52 55 4e  SQLITE_OMIT_TRUN
b400: 43 41 54 45 5f 4f 50 54 49 4d 49 5a 41 54 49 4f  CATE_OPTIMIZATIO
b410: 4e 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  N] compile-time 
b420: 73 77 69 74 63 68 2e 3c 2f 70 3e 0a 0a 3c 70 3e  switch.</p>..<p>
b430: 54 68 65 20 74 72 75 6e 63 61 74 65 20 6f 70 74  The truncate opt
b440: 69 6d 69 7a 61 74 69 6f 6e 20 63 61 6e 20 61 6c  imization can al
b450: 73 6f 20 62 65 20 64 69 73 61 62 6c 65 64 20 61  so be disabled a
b460: 74 20 72 75 6e 74 69 6d 65 20 75 73 69 6e 67 0a  t runtime using.
b470: 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 73 65 74  the [sqlite3_set
b480: 5f 61 75 74 68 6f 72 69 7a 65 72 28 29 5d 20 69  _authorizer()] i
b490: 6e 74 65 72 66 61 63 65 2e 20 20 5e 49 66 20 61  nterface.  ^If a
b4a0: 6e 20 61 75 74 68 6f 72 69 7a 65 72 20 63 61 6c  n authorizer cal
b4b0: 6c 62 61 63 6b 0a 72 65 74 75 72 6e 73 20 5b 53  lback.returns [S
b4c0: 51 4c 49 54 45 5f 49 47 4e 4f 52 45 5d 20 66 6f  QLITE_IGNORE] fo
b4d0: 72 20 61 6e 20 5b 53 51 4c 49 54 45 5f 44 45 4c  r an [SQLITE_DEL
b4e0: 45 54 45 5d 20 61 63 74 69 6f 6e 20 63 6f 64 65  ETE] action code
b4f0: 2c 20 74 68 65 6e 0a 74 68 65 20 44 45 4c 45 54  , then.the DELET
b500: 45 20 6f 70 65 72 61 74 69 6f 6e 20 77 69 6c 6c  E operation will
b510: 20 70 72 6f 63 65 65 64 20 62 75 74 20 74 68 65   proceed but the
b520: 20 74 72 75 6e 63 61 74 65 20 6f 70 74 69 6d 69   truncate optimi
b530: 7a 61 74 69 6f 6e 20 77 69 6c 6c 0a 62 65 20 62  zation will.be b
b540: 79 70 61 73 73 65 64 20 61 6e 64 20 72 6f 77 73  ypassed and rows
b550: 20 77 69 6c 6c 20 62 65 20 64 65 6c 65 74 65 64   will be deleted
b560: 20 6f 6e 65 20 62 79 20 6f 6e 65 2e 3c 2f 70 3e   one by one.</p>
b570: 0a 0a 3c 68 33 3e 55 73 65 20 4f 66 20 4c 49 4d  ..<h3>Use Of LIM
b580: 49 54 3c 2f 68 33 3e 0a 0a 3c 70 3e 5e 28 49 66  IT</h3>..<p>^(If
b590: 20 53 51 4c 69 74 65 20 69 73 20 63 6f 6d 70 69   SQLite is compi
b5a0: 6c 65 64 20 77 69 74 68 20 74 68 65 20 5b 53 51  led with the [SQ
b5b0: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 55 50 44 41  LITE_ENABLE_UPDA
b5c0: 54 45 5f 44 45 4c 45 54 45 5f 4c 49 4d 49 54 5d  TE_DELETE_LIMIT]
b5d0: 0a 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70  .compile-time op
b5e0: 74 69 6f 6e 2c 20 74 68 65 6e 20 74 68 65 20 73  tion, then the s
b5f0: 79 6e 74 61 78 20 6f 66 20 74 68 65 20 44 45 4c  yntax of the DEL
b600: 45 54 45 20 73 74 61 74 65 6d 65 6e 74 20 69 73  ETE statement is
b610: 0a 65 78 74 65 6e 64 65 64 20 62 79 20 74 68 65  .extended by the
b620: 20 61 64 64 69 74 69 6f 6e 20 6f 66 20 6f 70 74   addition of opt
b630: 69 6f 6e 61 6c 20 4f 52 44 45 52 20 42 59 20 61  ional ORDER BY a
b640: 6e 64 20 4c 49 4d 49 54 20 63 6c 61 75 73 65 73  nd LIMIT clauses
b650: 3a 29 5e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 42 75  :)^</p>..<tcl>Bu
b660: 62 62 6c 65 44 69 61 67 72 61 6d 20 64 65 6c 65  bbleDiagram dele
b670: 74 65 2d 73 74 6d 74 2d 6c 69 6d 69 74 65 64 3c  te-stmt-limited<
b680: 2f 74 63 6c 3e 0a 0a 3c 70 3e 5e 54 68 65 20 6f  /tcl>..<p>^The o
b690: 70 74 69 6f 6e 61 6c 20 4c 49 4d 49 54 20 63 6c  ptional LIMIT cl
b6a0: 61 75 73 65 20 63 61 6e 20 62 65 20 75 73 65 64  ause can be used
b6b0: 20 74 6f 20 6c 69 6d 69 74 20 74 68 65 20 6e 75   to limit the nu
b6c0: 6d 62 65 72 20 6f 66 0a 72 6f 77 73 20 64 65 6c  mber of.rows del
b6d0: 65 74 65 64 2c 20 61 6e 64 20 74 68 65 72 65 62  eted, and thereb
b6e0: 79 20 6c 69 6d 69 74 20 74 68 65 20 73 69 7a 65  y limit the size
b6f0: 20 6f 66 20 74 68 65 20 74 72 61 6e 73 61 63 74   of the transact
b700: 69 6f 6e 2e 0a 5e 54 68 65 20 4f 52 44 45 52 20  ion..^The ORDER 
b710: 42 59 20 63 6c 61 75 73 65 20 6f 6e 20 61 20 44  BY clause on a D
b720: 45 4c 45 54 45 20 73 74 61 74 65 6d 65 6e 74 0a  ELETE statement.
b730: 69 73 20 75 73 65 64 20 6f 6e 6c 79 20 74 6f 20  is used only to 
b740: 64 65 74 65 72 6d 69 6e 65 20 77 68 69 63 68 20  determine which 
b750: 72 6f 77 73 20 66 61 6c 6c 0a 77 69 74 68 69 6e  rows fall.within
b760: 20 74 68 65 20 4c 49 4d 49 54 2e 20 20 5e 54 68   the LIMIT.  ^Th
b770: 65 20 6f 72 64 65 72 20 69 6e 20 77 68 69 63 68  e order in which
b780: 20 72 6f 77 73 20 61 72 65 20 64 65 6c 65 74 65   rows are delete
b790: 64 20 69 73 20 61 72 62 69 74 72 61 72 79 0a 61  d is arbitrary.a
b7a0: 6e 64 20 69 73 20 6e 6f 74 20 64 65 74 65 72 6d  nd is not determ
b7b0: 69 6e 65 64 20 62 79 20 74 68 65 20 4f 52 44 45  ined by the ORDE
b7c0: 52 20 42 59 20 63 6c 61 75 73 65 2e 3c 2f 70 3e  R BY clause.</p>
b7d0: 0a 0a 3c 70 3e 5e 54 68 65 20 70 72 65 73 65 6e  ..<p>^The presen
b7e0: 63 65 20 6f 66 20 61 20 4c 49 4d 49 54 20 63 6c  ce of a LIMIT cl
b7f0: 61 75 73 65 20 64 65 66 65 61 74 73 20 74 68 65  ause defeats the
b800: 20 74 72 75 6e 63 61 74 65 20 6f 70 74 69 6d 69   truncate optimi
b810: 7a 61 74 69 6f 6e 0a 63 61 75 73 69 6e 67 20 61  zation.causing a
b820: 6c 6c 20 72 6f 77 73 20 62 65 69 6e 67 20 64 65  ll rows being de
b830: 6c 65 74 65 64 20 74 6f 20 62 65 20 76 69 73 69  leted to be visi
b840: 74 65 64 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a  ted.</p>..<tcl>.
b850: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
b860: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
b870: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
b880: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
b890: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a  ###############.
b8a0: 53 65 63 74 69 6f 6e 20 7b 44 45 54 41 43 48 20  Section {DETACH 
b8b0: 44 41 54 41 42 41 53 45 7d 20 64 65 74 61 63 68  DATABASE} detach
b8c0: 20 2a 44 45 54 41 43 48 0a 0a 42 75 62 62 6c 65   *DETACH..Bubble
b8d0: 44 69 61 67 72 61 6d 20 64 65 74 61 63 68 2d 73  Diagram detach-s
b8e0: 74 6d 74 20 31 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70  tmt 1.</tcl>..<p
b8f0: 3e 5e 54 68 69 73 20 73 74 61 74 65 6d 65 6e 74  >^This statement
b900: 20 64 65 74 61 63 68 65 73 20 61 6e 20 61 64 64   detaches an add
b910: 69 74 69 6f 6e 61 6c 20 64 61 74 61 62 61 73 65  itional database
b920: 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 70 72 65 76   connection prev
b930: 69 6f 75 73 6c 79 20 0a 61 74 74 61 63 68 65 64  iously .attached
b940: 20 75 73 69 6e 67 20 74 68 65 20 5b 41 54 54 41   using the [ATTA
b950: 43 48 5d 20 73 74 61 74 65 6d 65 6e 74 2e 20 20  CH] statement.  
b960: 0a 5e 49 74 20 69 73 20 70 6f 73 73 69 62 6c 65  .^It is possible
b970: 20 74 6f 20 68 61 76 65 20 74 68 65 20 73 61 6d   to have the sam
b980: 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20  e database file 
b990: 61 74 74 61 63 68 65 64 20 6d 75 6c 74 69 70 6c  attached multipl
b9a0: 65 20 74 69 6d 65 73 20 75 73 69 6e 67 20 0a 64  e times using .d
b9b0: 69 66 66 65 72 65 6e 74 20 6e 61 6d 65 73 2c 20  ifferent names, 
b9c0: 61 6e 64 20 64 65 74 61 63 68 69 6e 67 20 6f 6e  and detaching on
b9d0: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 6f 20  e connection to 
b9e0: 61 20 66 69 6c 65 20 77 69 6c 6c 20 6c 65 61 76  a file will leav
b9f0: 65 20 74 68 65 20 0a 6f 74 68 65 72 73 20 69 6e  e the .others in
ba00: 74 61 63 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54  tact.</p>..<p>^T
ba10: 68 69 73 20 73 74 61 74 65 6d 65 6e 74 20 77 69  his statement wi
ba20: 6c 6c 20 66 61 69 6c 20 69 66 20 53 51 4c 69 74  ll fail if SQLit
ba30: 65 20 69 73 20 69 6e 20 74 68 65 20 6d 69 64 64  e is in the midd
ba40: 6c 65 20 6f 66 20 61 20 74 72 61 6e 73 61 63 74  le of a transact
ba50: 69 6f 6e 2e 3c 2f 70 3e 0a 0a 0a 3c 74 63 6c 3e  ion.</p>...<tcl>
ba60: 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  .###############
ba70: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
ba80: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
ba90: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
baa0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a  ###############.
bab0: 53 65 63 74 69 6f 6e 20 7b 44 52 4f 50 20 49 4e  Section {DROP IN
bac0: 44 45 58 7d 20 64 72 6f 70 69 6e 64 65 78 20 7b  DEX} dropindex {
bad0: 7b 44 52 4f 50 20 49 4e 44 45 58 7d 7d 0a 0a 42  {DROP INDEX}}..B
bae0: 75 62 62 6c 65 44 69 61 67 72 61 6d 20 64 72 6f  ubbleDiagram dro
baf0: 70 2d 69 6e 64 65 78 2d 73 74 6d 74 20 31 0a 3c  p-index-stmt 1.<
bb00: 2f 74 63 6c 3e 0a 0a 3c 70 3e 5e 54 68 65 20 44  /tcl>..<p>^The D
bb10: 52 4f 50 20 49 4e 44 45 58 20 73 74 61 74 65 6d  ROP INDEX statem
bb20: 65 6e 74 20 72 65 6d 6f 76 65 73 20 61 6e 20 69  ent removes an i
bb30: 6e 64 65 78 20 61 64 64 65 64 0a 77 69 74 68 20  ndex added.with 
bb40: 74 68 65 20 5b 43 52 45 41 54 45 20 49 4e 44 45  the [CREATE INDE
bb50: 58 5d 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 54  X] statement.  T
bb60: 68 65 20 69 6e 64 65 78 20 69 73 20 63 6f 6d 70  he index is comp
bb70: 6c 65 74 65 6c 79 20 72 65 6d 6f 76 65 64 20 66  letely removed f
bb80: 72 6f 6d 0a 74 68 65 20 64 69 73 6b 2e 20 20 54  rom.the disk.  T
bb90: 68 65 20 6f 6e 6c 79 20 77 61 79 20 74 6f 20 72  he only way to r
bba0: 65 63 6f 76 65 72 20 74 68 65 20 69 6e 64 65 78  ecover the index
bbb0: 20 69 73 20 74 6f 20 72 65 65 6e 74 65 72 20 74   is to reenter t
bbc0: 68 65 0a 61 70 70 72 6f 70 72 69 61 74 65 20 5b  he.appropriate [
bbd0: 43 52 45 41 54 45 20 49 4e 44 45 58 5d 20 63 6f  CREATE INDEX] co
bbe0: 6d 6d 61 6e 64 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c  mmand.</p>..<tcl
bbf0: 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23  >.##############
bc00: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
bc10: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
bc20: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
bc30: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
bc40: 0a 53 65 63 74 69 6f 6e 20 7b 44 52 4f 50 20 54  .Section {DROP T
bc50: 41 42 4c 45 7d 20 64 72 6f 70 74 61 62 6c 65 20  ABLE} droptable 
bc60: 7b 7b 44 52 4f 50 20 54 41 42 4c 45 7d 7d 0a 0a  {{DROP TABLE}}..
bc70: 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 64 72  BubbleDiagram dr
bc80: 6f 70 2d 74 61 62 6c 65 2d 73 74 6d 74 20 31 0a  op-table-stmt 1.
bc90: 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 5e 54 68 65 20  </tcl>..<p>^The 
bca0: 44 52 4f 50 20 54 41 42 4c 45 20 73 74 61 74 65  DROP TABLE state
bcb0: 6d 65 6e 74 20 72 65 6d 6f 76 65 73 20 61 20 74  ment removes a t
bcc0: 61 62 6c 65 20 61 64 64 65 64 20 77 69 74 68 20  able added with 
bcd0: 74 68 65 0a 5b 43 52 45 41 54 45 20 54 41 42 4c  the.[CREATE TABL
bce0: 45 5d 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 54  E] statement.  T
bcf0: 68 65 20 6e 61 6d 65 20 73 70 65 63 69 66 69 65  he name specifie
bd00: 64 20 69 73 20 74 68 65 0a 74 61 62 6c 65 20 6e  d is the.table n
bd10: 61 6d 65 2e 20 20 5e 54 68 65 20 64 72 6f 70 70  ame.  ^The dropp
bd20: 65 64 20 74 61 62 6c 65 20 69 73 20 63 6f 6d 70  ed table is comp
bd30: 6c 65 74 65 6c 79 20 72 65 6d 6f 76 65 64 20 66  letely removed f
bd40: 72 6f 6d 20 74 68 65 20 64 61 74 61 62 61 73 65  rom the database
bd50: 20 0a 73 63 68 65 6d 61 20 61 6e 64 20 74 68 65   .schema and the
bd60: 20 64 69 73 6b 20 66 69 6c 65 2e 20 20 54 68 65   disk file.  The
bd70: 20 74 61 62 6c 65 20 63 61 6e 20 6e 6f 74 20 62   table can not b
bd80: 65 20 72 65 63 6f 76 65 72 65 64 2e 20 20 0a 5e  e recovered.  .^
bd90: 41 6c 6c 20 69 6e 64 69 63 65 73 20 61 6e 64 20  All indices and 
bda0: 74 72 69 67 67 65 72 73 0a 61 73 73 6f 63 69 61  triggers.associa
bdb0: 74 65 64 20 77 69 74 68 20 74 68 65 20 74 61 62  ted with the tab
bdc0: 6c 65 20 61 72 65 20 61 6c 73 6f 20 64 65 6c 65  le are also dele
bdd0: 74 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68  ted.</p>..<p>^Th
bde0: 65 20 6f 70 74 69 6f 6e 61 6c 20 49 46 20 45 58  e optional IF EX
bdf0: 49 53 54 53 20 63 6c 61 75 73 65 20 73 75 70 70  ISTS clause supp
be00: 72 65 73 73 65 73 20 74 68 65 20 65 72 72 6f 72  resses the error
be10: 20 74 68 61 74 20 77 6f 75 6c 64 20 6e 6f 72 6d   that would norm
be20: 61 6c 6c 79 0a 72 65 73 75 6c 74 20 69 66 20 74  ally.result if t
be30: 68 65 20 74 61 62 6c 65 20 64 6f 65 73 20 6e 6f  he table does no
be40: 74 20 65 78 69 73 74 2e 3c 2f 70 3e 0a 0a 3c 70  t exist.</p>..<p
be50: 3e 5e 49 66 20 5b 66 6f 72 65 69 67 6e 20 6b 65  >^If [foreign ke
be60: 79 20 63 6f 6e 73 74 72 61 69 6e 74 73 5d 20 61  y constraints] a
be70: 72 65 20 65 6e 61 62 6c 65 64 2c 20 61 20 44 52  re enabled, a DR
be80: 4f 50 20 54 41 42 4c 45 20 63 6f 6d 6d 61 6e 64  OP TABLE command
be90: 20 70 65 72 66 6f 72 6d 73 20 61 6e 0a 69 6d 70   performs an.imp
bea0: 6c 69 63 69 74 20 5b 44 45 4c 45 54 45 20 7c 20  licit [DELETE | 
beb0: 44 45 4c 45 54 45 20 46 52 4f 4d 20 26 6c 74 3b  DELETE FROM &lt;
bec0: 74 62 6c 26 67 74 3b 5d 20 63 6f 6d 6d 61 6e 64  tbl&gt;] command
bed0: 20 62 65 66 6f 72 65 20 72 65 6d 6f 76 69 6e 67   before removing
bee0: 20 74 68 65 0a 74 61 62 6c 65 20 66 72 6f 6d 20   the.table from 
bef0: 74 68 65 20 64 61 74 61 62 61 73 65 20 73 63 68  the database sch
bf00: 65 6d 61 2e 20 5e 41 6e 79 20 74 72 69 67 67 65  ema. ^Any trigge
bf10: 72 73 20 61 74 74 61 63 68 65 64 20 74 6f 20 74  rs attached to t
bf20: 68 65 20 74 61 62 6c 65 20 61 72 65 0a 64 72 6f  he table are.dro
bf30: 70 70 65 64 20 66 72 6f 6d 20 74 68 65 20 64 61  pped from the da
bf40: 74 61 62 61 73 65 20 73 63 68 65 6d 61 20 62 65  tabase schema be
bf50: 66 6f 72 65 20 74 68 65 20 69 6d 70 6c 69 63 69  fore the implici
bf60: 74 20 44 45 4c 45 54 45 20 46 52 4f 4d 20 26 6c  t DELETE FROM &l
bf70: 74 3b 74 62 6c 26 67 74 3b 20 0a 69 73 20 65 78  t;tbl&gt; .is ex
bf80: 65 63 75 74 65 64 2c 20 73 6f 20 74 68 69 73 20  ecuted, so this 
bf90: 63 61 6e 6e 6f 74 20 63 61 75 73 65 20 61 6e 79  cannot cause any
bfa0: 20 74 72 69 67 67 65 72 73 20 74 6f 20 66 69 72   triggers to fir
bfb0: 65 2e 20 42 79 20 63 6f 6e 74 72 61 73 74 2c 20  e. By contrast, 
bfc0: 5e 61 6e 0a 69 6d 70 6c 69 63 69 74 20 44 45 4c  ^an.implicit DEL
bfd0: 45 54 45 20 46 52 4f 4d 20 26 6c 74 3b 74 62 6c  ETE FROM &lt;tbl
bfe0: 26 67 74 3b 20 64 6f 65 73 20 63 61 75 73 65 20  &gt; does cause 
bff0: 61 6e 79 20 63 6f 6e 66 69 67 75 72 65 64 0a 5b  any configured.[
c000: 66 6f 72 65 69 67 6e 20 6b 65 79 20 61 63 74 69  foreign key acti
c010: 6f 6e 73 5d 20 74 6f 20 74 61 6b 65 20 70 6c 61  ons] to take pla
c020: 63 65 2e 20 0a 5e 49 66 20 74 68 65 20 69 6d 70  ce. .^If the imp
c030: 6c 69 63 69 74 20 44 45 4c 45 54 45 20 46 52 4f  licit DELETE FRO
c040: 4d 20 26 6c 74 3b 74 62 6c 26 67 74 3b 20 65 78  M &lt;tbl&gt; ex
c050: 65 63 75 74 65 64 0a 61 73 20 70 61 72 74 20 6f  ecuted.as part o
c060: 66 20 61 20 44 52 4f 50 20 54 41 42 4c 45 20 63  f a DROP TABLE c
c070: 6f 6d 6d 61 6e 64 20 76 69 6f 6c 61 74 65 73 20  ommand violates 
c080: 61 6e 79 20 69 6d 6d 65 64 69 61 74 65 20 66 6f  any immediate fo
c090: 72 65 69 67 6e 20 6b 65 79 20 63 6f 6e 73 74 72  reign key constr
c0a0: 61 69 6e 74 73 2c 0a 61 6e 20 65 72 72 6f 72 20  aints,.an error 
c0b0: 69 73 20 72 65 74 75 72 6e 65 64 20 61 6e 64 20  is returned and 
c0c0: 74 68 65 20 74 61 62 6c 65 20 69 73 20 6e 6f 74  the table is not
c0d0: 20 64 72 6f 70 70 65 64 2e 20 5e 49 66 20 0a 74   dropped. ^If .t
c0e0: 68 65 20 69 6d 70 6c 69 63 69 74 20 44 45 4c 45  he implicit DELE
c0f0: 54 45 20 46 52 4f 4d 20 26 6c 74 3b 74 62 6c 26  TE FROM &lt;tbl&
c100: 67 74 3b 20 63 61 75 73 65 73 20 61 6e 79 20 0a  gt; causes any .
c110: 64 65 66 65 72 72 65 64 20 66 6f 72 65 69 67 6e  deferred foreign
c120: 20 6b 65 79 20 63 6f 6e 73 74 72 61 69 6e 74 73   key constraints
c130: 20 74 6f 20 62 65 20 76 69 6f 6c 61 74 65 64 2c   to be violated,
c140: 20 61 6e 64 20 74 68 65 20 76 69 6f 6c 61 74 69   and the violati
c150: 6f 6e 73 20 73 74 69 6c 6c 0a 65 78 69 73 74 20  ons still.exist 
c160: 77 68 65 6e 20 74 68 65 20 74 72 61 6e 73 61 63  when the transac
c170: 74 69 6f 6e 20 69 73 20 63 6f 6d 6d 69 74 74 65  tion is committe
c180: 64 2c 20 61 6e 20 65 72 72 6f 72 20 69 73 20 72  d, an error is r
c190: 65 74 75 72 6e 65 64 20 61 74 20 74 68 65 20 74  eturned at the t
c1a0: 69 6d 65 0a 6f 66 20 63 6f 6d 6d 69 74 2e 0a 0a  ime.of commit...
c1b0: 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23  <tcl>.##########
c1c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c1d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c1e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c1f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c200: 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b 44 52  ####.Section {DR
c210: 4f 50 20 54 52 49 47 47 45 52 7d 20 64 72 6f 70  OP TRIGGER} drop
c220: 74 72 69 67 67 65 72 20 7b 7b 44 52 4f 50 20 54  trigger {{DROP T
c230: 52 49 47 47 45 52 7d 7d 0a 0a 42 75 62 62 6c 65  RIGGER}}..Bubble
c240: 44 69 61 67 72 61 6d 20 64 72 6f 70 2d 74 72 69  Diagram drop-tri
c250: 67 67 65 72 2d 73 74 6d 74 20 31 0a 3c 2f 74 63  gger-stmt 1.</tc
c260: 6c 3e 0a 0a 3c 70 3e 5e 54 68 65 20 44 52 4f 50  l>..<p>^The DROP
c270: 20 54 52 49 47 47 45 52 20 73 74 61 74 65 6d 65   TRIGGER stateme
c280: 6e 74 20 72 65 6d 6f 76 65 73 20 61 20 74 72 69  nt removes a tri
c290: 67 67 65 72 20 63 72 65 61 74 65 64 20 62 79 20  gger created by 
c2a0: 74 68 65 20 0a 5b 43 52 45 41 54 45 20 54 52 49  the .[CREATE TRI
c2b0: 47 47 45 52 5d 20 73 74 61 74 65 6d 65 6e 74 2e  GGER] statement.
c2c0: 20 20 5e 54 68 65 20 74 72 69 67 67 65 72 20 69    ^The trigger i
c2d0: 73 20 0a 64 65 6c 65 74 65 64 20 66 72 6f 6d 20  s .deleted from 
c2e0: 74 68 65 20 64 61 74 61 62 61 73 65 20 73 63 68  the database sch
c2f0: 65 6d 61 2e 20 5e 4e 6f 74 65 20 74 68 61 74 20  ema. ^Note that 
c300: 74 72 69 67 67 65 72 73 20 61 72 65 20 61 75 74  triggers are aut
c310: 6f 6d 61 74 69 63 61 6c 6c 79 20 0a 64 72 6f 70  omatically .drop
c320: 70 65 64 20 77 68 65 6e 20 74 68 65 20 61 73 73  ped when the ass
c330: 6f 63 69 61 74 65 64 20 74 61 62 6c 65 20 69 73  ociated table is
c340: 20 64 72 6f 70 70 65 64 2e 3c 2f 70 3e 0a 0a 3c   dropped.</p>..<
c350: 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23  tcl>.###########
c360: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c370: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c380: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c390: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c3a0: 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b 44 52 4f  ###.Section {DRO
c3b0: 50 20 56 49 45 57 7d 20 64 72 6f 70 76 69 65 77  P VIEW} dropview
c3c0: 20 7b 7b 44 52 4f 50 20 56 49 45 57 7d 7d 0a 0a   {{DROP VIEW}}..
c3d0: 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 64 72  BubbleDiagram dr
c3e0: 6f 70 2d 76 69 65 77 2d 73 74 6d 74 20 31 0a 3c  op-view-stmt 1.<
c3f0: 2f 74 63 6c 3e 0a 0a 3c 70 3e 5e 54 68 65 20 44  /tcl>..<p>^The D
c400: 52 4f 50 20 56 49 45 57 20 73 74 61 74 65 6d 65  ROP VIEW stateme
c410: 6e 74 20 72 65 6d 6f 76 65 73 20 61 20 76 69 65  nt removes a vie
c420: 77 20 63 72 65 61 74 65 64 20 62 79 20 74 68 65  w created by the
c430: 0a 5b 43 52 45 41 54 45 20 56 49 45 57 5d 20 73  .[CREATE VIEW] s
c440: 74 61 74 65 6d 65 6e 74 2e 20 20 5e 54 68 65 20  tatement.  ^The 
c450: 6e 61 6d 65 20 73 70 65 63 69 66 69 65 64 20 69  name specified i
c460: 73 20 74 68 65 20 0a 76 69 65 77 20 6e 61 6d 65  s the .view name
c470: 2e 20 20 5e 49 74 20 69 73 20 72 65 6d 6f 76 65  .  ^It is remove
c480: 64 20 66 72 6f 6d 20 74 68 65 20 64 61 74 61 62  d from the datab
c490: 61 73 65 20 73 63 68 65 6d 61 2c 20 62 75 74 20  ase schema, but 
c4a0: 6e 6f 20 61 63 74 75 61 6c 20 64 61 74 61 20 0a  no actual data .
c4b0: 69 6e 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e  in the underlyin
c4c0: 67 20 62 61 73 65 20 74 61 62 6c 65 73 20 69 73  g base tables is
c4d0: 20 6d 6f 64 69 66 69 65 64 2e 3c 2f 70 3e 0a 0a   modified.</p>..
c4e0: 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23  <tcl>.##########
c4f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c500: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c510: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c520: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c530: 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 45 58 50  ####.Section EXP
c540: 4c 41 49 4e 20 65 78 70 6c 61 69 6e 20 45 58 50  LAIN explain EXP
c550: 4c 41 49 4e 0a 0a 42 75 62 62 6c 65 44 69 61 67  LAIN..BubbleDiag
c560: 72 61 6d 20 73 71 6c 2d 73 74 6d 74 0a 3c 2f 74  ram sql-stmt.</t
c570: 63 6c 3e 0a 0a 3c 70 3e 5e 41 6e 20 53 51 4c 20  cl>..<p>^An SQL 
c580: 73 74 61 74 65 6d 65 6e 74 20 63 61 6e 20 62 65  statement can be
c590: 20 70 72 65 63 65 64 65 64 20 62 79 20 74 68 65   preceded by the
c5a0: 20 6b 65 79 77 6f 72 64 20 22 45 58 50 4c 41 49   keyword "EXPLAI
c5b0: 4e 22 20 6f 72 0a 62 79 20 74 68 65 20 70 68 72  N" or.by the phr
c5c0: 61 73 65 20 22 45 58 50 4c 41 49 4e 20 51 55 45  ase "EXPLAIN QUE
c5d0: 52 59 20 50 4c 41 4e 22 2e 20 20 5e 45 69 74 68  RY PLAN".  ^Eith
c5e0: 65 72 20 6d 6f 64 69 66 69 63 61 74 69 6f 6e 20  er modification 
c5f0: 63 61 75 73 65 73 20 74 68 65 0a 53 51 4c 20 73  causes the.SQL s
c600: 74 61 74 65 6d 65 6e 74 20 74 6f 20 62 65 68 61  tatement to beha
c610: 76 65 20 61 73 20 61 20 71 75 65 72 79 20 61 6e  ve as a query an
c620: 64 20 74 6f 20 72 65 74 75 72 6e 20 69 6e 66 6f  d to return info
c630: 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 0a 68 6f  rmation about.ho
c640: 77 20 74 68 65 20 53 51 4c 20 73 74 61 74 65 6d  w the SQL statem
c650: 65 6e 74 20 77 6f 75 6c 64 20 68 61 76 65 20 6f  ent would have o
c660: 70 65 72 61 74 65 64 20 69 66 20 74 68 65 20 45  perated if the E
c670: 58 50 4c 41 49 4e 20 6b 65 79 77 6f 72 64 20 6f  XPLAIN keyword o
c680: 72 0a 70 68 72 61 73 65 20 68 61 64 20 62 65 65  r.phrase had bee
c690: 6e 20 6f 6d 69 74 74 65 64 2e 3c 2f 70 3e 0a 0a  n omitted.</p>..
c6a0: 3c 70 3e 5e 57 68 65 6e 20 74 68 65 20 45 58 50  <p>^When the EXP
c6b0: 4c 41 49 4e 20 6b 65 79 77 6f 72 64 20 61 70 70  LAIN keyword app
c6c0: 65 61 72 73 20 62 79 20 69 74 73 65 6c 66 20 69  ears by itself i
c6d0: 74 20 63 61 75 73 65 73 20 74 68 65 20 73 74 61  t causes the sta
c6e0: 74 65 6d 65 6e 74 0a 74 6f 20 62 65 68 61 76 65  tement.to behave
c6f0: 20 61 73 20 61 20 71 75 65 72 79 20 74 68 61 74   as a query that
c700: 20 72 65 74 75 72 6e 73 20 74 68 65 20 73 65 71   returns the seq
c710: 75 65 6e 63 65 20 6f 66 20 0a 5b 76 69 72 74 75  uence of .[virtu
c720: 61 6c 20 6d 61 63 68 69 6e 65 20 69 6e 73 74 72  al machine instr
c730: 75 63 74 69 6f 6e 73 5d 20 69 74 20 77 6f 75 6c  uctions] it woul
c740: 64 20 68 61 76 65 0a 75 73 65 64 20 74 6f 20 65  d have.used to e
c750: 78 65 63 75 74 65 20 74 68 65 20 63 6f 6d 6d 61  xecute the comma
c760: 6e 64 20 68 61 64 20 74 68 65 20 45 58 50 4c 41  nd had the EXPLA
c770: 49 4e 20 6b 65 79 77 6f 72 64 20 6e 6f 74 20 62  IN keyword not b
c780: 65 65 6e 20 70 72 65 73 65 6e 74 2e 0a 5e 57 68  een present..^Wh
c790: 65 6e 20 74 68 65 20 45 58 50 4c 41 49 4e 20 51  en the EXPLAIN Q
c7a0: 55 45 52 59 20 50 4c 41 4e 20 70 68 72 61 73 65  UERY PLAN phrase
c7b0: 20 61 70 70 65 61 72 73 2c 20 74 68 65 20 73 74   appears, the st
c7c0: 61 74 65 6d 65 6e 74 20 72 65 74 75 72 6e 73 0a  atement returns.
c7d0: 68 69 67 68 2d 6c 65 76 65 6c 20 69 6e 66 6f 72  high-level infor
c7e0: 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 77 68 61  mation about wha
c7f0: 74 20 69 6e 64 69 63 65 73 20 77 6f 75 6c 64 20  t indices would 
c800: 68 61 76 65 20 62 65 65 6e 20 75 73 65 64 2e 3c  have been used.<
c810: 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 6f 75 74 70  /p>..<p>The outp
c820: 75 74 20 66 72 6f 6d 20 45 58 50 4c 41 49 4e 20  ut from EXPLAIN 
c830: 61 6e 64 20 45 58 50 4c 41 49 4e 20 51 55 45 52  and EXPLAIN QUER
c840: 59 20 50 4c 41 4e 20 69 73 20 69 6e 74 65 6e 64  Y PLAN is intend
c850: 65 64 20 66 6f 72 0a 69 6e 74 65 72 61 63 74 69  ed for.interacti
c860: 76 65 20 61 6e 61 6c 79 73 69 73 20 61 6e 64 20  ve analysis and 
c870: 74 72 6f 75 62 6c 65 73 68 6f 6f 74 69 6e 67 20  troubleshooting 
c880: 6f 6e 6c 79 2e 20 20 54 68 65 20 64 65 74 61 69  only.  The detai
c890: 6c 73 20 6f 66 20 74 68 65 20 0a 6f 75 74 70 75  ls of the .outpu
c8a0: 74 20 66 6f 72 6d 61 74 20 61 72 65 20 73 75 62  t format are sub
c8b0: 6a 65 63 74 20 74 6f 20 63 68 61 6e 67 65 20 66  ject to change f
c8c0: 72 6f 6d 20 6f 6e 65 20 72 65 6c 65 61 73 65 20  rom one release 
c8d0: 6f 66 20 53 51 4c 69 74 65 20 74 6f 20 74 68 65  of SQLite to the
c8e0: 20 6e 65 78 74 2e 0a 41 70 70 6c 69 63 61 74 69   next..Applicati
c8f0: 6f 6e 73 20 73 68 6f 75 6c 64 20 6e 6f 74 20 75  ons should not u
c900: 73 65 20 45 58 50 4c 41 49 4e 20 6f 72 20 45 58  se EXPLAIN or EX
c910: 50 4c 41 49 4e 20 51 55 45 52 59 20 50 4c 41 4e  PLAIN QUERY PLAN
c920: 20 73 69 6e 63 65 0a 74 68 65 69 72 20 65 78 61   since.their exa
c930: 63 74 20 62 65 68 61 76 69 6f 72 20 69 73 20 75  ct behavior is u
c940: 6e 64 6f 63 75 6d 65 6e 74 65 64 2c 20 75 6e 73  ndocumented, uns
c950: 70 65 63 69 66 69 65 64 2c 20 61 6e 64 20 76 61  pecified, and va
c960: 72 69 61 62 6c 65 2e 3c 2f 70 3e 0a 0a 3c 74 63  riable.</p>..<tc
c970: 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23 23  l>.#############
c980: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c990: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c9a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c9b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c9c0: 23 0a 53 65 63 74 69 6f 6e 20 65 78 70 72 65 73  #.Section expres
c9d0: 73 69 6f 6e 20 65 78 70 72 20 7b 2a 65 78 70 72  sion expr {*expr
c9e0: 65 73 73 69 6f 6e 20 7b 65 78 70 72 65 73 73 69  ession {expressi
c9f0: 6f 6e 20 73 79 6e 74 61 78 7d 7d 0a 0a 42 75 62  on syntax}}..Bub
ca00: 62 6c 65 44 69 61 67 72 61 6d 20 65 78 70 72 20  bleDiagram expr 
ca10: 31 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20  1.BubbleDiagram 
ca20: 6c 69 74 65 72 61 6c 2d 76 61 6c 75 65 0a 42 75  literal-value.Bu
ca30: 62 62 6c 65 44 69 61 67 72 61 6d 20 73 69 67 6e  bbleDiagram sign
ca40: 65 64 2d 6e 75 6d 62 65 72 0a 42 75 62 62 6c 65  ed-number.Bubble
ca50: 44 69 61 67 72 61 6d 20 72 61 69 73 65 2d 66 75  Diagram raise-fu
ca60: 6e 63 74 69 6f 6e 0a 3c 2f 74 63 6c 3e 0a 0a 3c  nction.</tcl>..<
ca70: 70 3e 54 68 69 73 20 73 65 63 74 69 6f 6e 20 69  p>This section i
ca80: 73 20 64 69 66 66 65 72 65 6e 74 20 66 72 6f 6d  s different from
ca90: 20 74 68 65 20 6f 74 68 65 72 73 2e 20 20 4d 6f   the others.  Mo
caa0: 73 74 20 6f 74 68 65 72 20 73 65 63 74 69 6f 6e  st other section
cab0: 73 20 6f 66 0a 74 68 69 73 20 64 6f 63 75 6d 65  s of.this docume
cac0: 6e 74 20 74 61 6c 6b 73 20 61 62 6f 75 74 20 61  nt talks about a
cad0: 20 70 61 72 74 69 63 75 6c 61 72 20 53 51 4c 20   particular SQL 
cae0: 63 6f 6d 6d 61 6e 64 2e 20 20 54 68 69 73 20 73  command.  This s
caf0: 65 63 74 69 6f 6e 20 64 6f 65 73 0a 6e 6f 74 20  ection does.not 
cb00: 74 61 6c 6b 20 61 62 6f 75 74 20 61 20 73 74 61  talk about a sta
cb10: 6e 64 61 6c 6f 6e 65 20 63 6f 6d 6d 61 6e 64 20  ndalone command 
cb20: 62 75 74 20 61 62 6f 75 74 20 22 65 78 70 72 65  but about "expre
cb30: 73 73 69 6f 6e 73 22 20 77 68 69 63 68 20 61 72  ssions" which ar
cb40: 65 20 0a 73 75 62 63 6f 6d 70 6f 6e 65 6e 74 73  e .subcomponents
cb50: 20 6f 66 20 6d 6f 73 74 20 6f 74 68 65 72 20 63   of most other c
cb60: 6f 6d 6d 61 6e 64 73 2e 3c 2f 70 3e 0a 0a 3c 74  ommands.</p>..<t
cb70: 63 6c 3e 68 64 5f 66 72 61 67 6d 65 6e 74 20 62  cl>hd_fragment b
cb80: 69 6e 61 72 79 6f 70 73 20 7b 62 69 6e 61 72 79  inaryops {binary
cb90: 20 6f 70 65 72 61 74 6f 72 73 7d 3c 2f 74 63 6c   operators}</tcl
cba0: 3e 0a 3c 68 33 3e 4f 70 65 72 61 74 6f 72 73 3c  >.<h3>Operators<
cbb0: 2f 68 33 3e 0a 3c 70 3e 5e 28 53 51 4c 69 74 65  /h3>.<p>^(SQLite
cbc0: 20 75 6e 64 65 72 73 74 61 6e 64 73 20 74 68 65   understands the
cbd0: 20 66 6f 6c 6c 6f 77 69 6e 67 20 62 69 6e 61 72   following binar
cbe0: 79 20 6f 70 65 72 61 74 6f 72 73 2c 20 69 6e 20  y operators, in 
cbf0: 6f 72 64 65 72 20 66 72 6f 6d 0a 68 69 67 68 65  order from.highe
cc00: 73 74 20 74 6f 20 6c 6f 77 65 73 74 20 70 72 65  st to lowest pre
cc10: 63 65 64 65 6e 63 65 3a 3c 2f 70 3e 0a 0a 3c 62  cedence:</p>..<b
cc20: 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70 72 65 3e 0a  lockquote><pre>.
cc30: 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 22 23 32 63  <font color="#2c
cc40: 32 63 66 30 22 3e 3c 62 69 67 3e 7c 7c 0a 2a 20  2cf0"><big>||.* 
cc50: 20 20 20 2f 20 20 20 20 25 0a 2b 20 20 20 20 2d     /    %.+    -
cc60: 0a 26 6c 74 3b 26 6c 74 3b 20 20 20 26 67 74 3b  .&lt;&lt;   &gt;
cc70: 26 67 74 3b 20 20 20 26 61 6d 70 3b 20 20 20 20  &gt;   &amp;    
cc80: 7c 0a 26 6c 74 3b 20 20 20 20 26 6c 74 3b 3d 20  |.&lt;    &lt;= 
cc90: 20 20 26 67 74 3b 20 20 20 20 26 67 74 3b 3d 0a    &gt;    &gt;=.
cca0: 3d 20 20 20 20 3d 3d 20 20 20 21 3d 20 20 20 26  =    ==   !=   &
ccb0: 6c 74 3b 26 67 74 3b 20 20 20 3c 2f 62 69 67 3e  lt;&gt;   </big>
ccc0: 49 53 20 20 49 4e 20 20 4c 49 4b 45 20 20 47 4c  IS  IN  LIKE  GL
ccd0: 4f 42 20 20 4d 41 54 43 48 20 20 52 45 47 45 58  OB  MATCH  REGEX
cce0: 50 0a 41 4e 44 20 20 20 0a 4f 52 3c 2f 66 6f 6e  P.AND   .OR</fon
ccf0: 74 3e 0a 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b  t>.</pre></block
cd00: 71 75 6f 74 65 3e 29 5e 0a 0a 3c 70 3e 5e 28 53  quote>)^..<p>^(S
cd10: 75 70 70 6f 72 74 65 64 20 75 6e 61 72 79 20 70  upported unary p
cd20: 72 65 66 69 78 20 6f 70 65 72 61 74 6f 72 73 20  refix operators 
cd30: 61 72 65 20 74 68 65 73 65 3a 3c 2f 70 3e 0a 0a  are these:</p>..
cd40: 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70 72 65  <blockquote><pre
cd50: 3e 0a 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 22 23  >.<font color="#
cd60: 32 63 32 63 66 30 22 3e 3c 62 69 67 3e 2d 20 20  2c2cf0"><big>-  
cd70: 20 20 2b 20 20 20 20 7e 20 20 20 20 4e 4f 54 3c    +    ~    NOT<
cd80: 2f 62 69 67 3e 3c 2f 66 6f 6e 74 3e 0a 3c 2f 70  /big></font>.</p
cd90: 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e  re></blockquote>
cda0: 29 5e 0a 0a 3c 74 63 6c 3e 68 64 5f 66 72 61 67  )^..<tcl>hd_frag
cdb0: 6d 65 6e 74 20 63 6f 6c 6c 61 74 65 6f 70 20 7b  ment collateop {
cdc0: 43 4f 4c 4c 41 54 45 20 6f 70 65 72 61 74 6f 72  COLLATE operator
cdd0: 7d 3c 2f 74 63 6c 3e 0a 3c 70 3e 5e 54 68 65 20  }</tcl>.<p>^The 
cde0: 43 4f 4c 4c 41 54 45 20 6f 70 65 72 61 74 6f 72  COLLATE operator
cdf0: 20 63 61 6e 20 62 65 20 74 68 6f 75 67 68 74 20   can be thought 
ce00: 6f 66 20 61 73 20 61 20 75 6e 61 72 79 20 70 6f  of as a unary po
ce10: 73 74 66 69 78 0a 6f 70 65 72 61 74 6f 72 2e 20  stfix.operator. 
ce20: 20 5e 54 68 65 20 43 4f 4c 4c 41 54 45 20 6f 70   ^The COLLATE op
ce30: 65 72 61 74 6f 72 20 68 61 73 20 74 68 65 20 68  erator has the h
ce40: 69 67 68 65 73 74 20 70 72 65 63 65 64 65 6e 63  ighest precedenc
ce50: 65 2e 0a 5e 49 74 20 61 6c 77 61 79 73 20 62 69  e..^It always bi
ce60: 6e 64 73 20 6d 6f 72 65 20 74 69 67 68 74 6c 79  nds more tightly
ce70: 20 74 68 61 6e 20 61 6e 79 20 70 72 65 66 69 78   than any prefix
ce80: 20 75 6e 61 72 79 20 6f 70 65 72 61 74 6f 72 20   unary operator 
ce90: 6f 72 0a 61 6e 79 20 62 69 6e 61 72 79 20 6f 70  or.any binary op
cea0: 65 72 61 74 6f 72 2e 3c 2f 70 3e 0a 0a 3c 74 63  erator.</p>..<tc
ceb0: 6c 3e 68 64 5f 70 75 74 73 20 22 0a 3c 70 3e 5e  l>hd_puts ".<p>^
cec0: 54 68 65 20 75 6e 61 72 79 20 6f 70 65 72 61 74  The unary operat
ced0: 6f 72 20 5b 4f 70 65 72 61 74 6f 72 20 2b 5d 20  or [Operator +] 
cee0: 69 73 20 61 20 6e 6f 2d 6f 70 2e 20 20 5e 49 74  is a no-op.  ^It
cef0: 20 63 61 6e 20 62 65 20 61 70 70 6c 69 65 64 0a   can be applied.
cf00: 74 6f 20 73 74 72 69 6e 67 73 2c 20 6e 75 6d 62  to strings, numb
cf10: 65 72 73 2c 20 6f 72 20 62 6c 6f 62 73 20 61 6e  ers, or blobs an
cf20: 64 20 69 74 20 61 6c 77 61 79 73 20 67 69 76 65  d it always give
cf30: 73 20 61 73 20 69 74 73 20 72 65 73 75 6c 74 20  s as its result 
cf40: 74 68 65 0a 76 61 6c 75 65 20 6f 66 20 74 68 65  the.value of the
cf50: 20 6f 70 65 72 61 6e 64 2e 3c 2f 70 3e 22 3c 2f   operand.</p>"</
cf60: 74 63 6c 3e 0a 0a 3c 70 3e 4e 6f 74 65 20 74 68  tcl>..<p>Note th
cf70: 61 74 20 74 68 65 72 65 20 61 72 65 20 74 77 6f  at there are two
cf80: 20 76 61 72 69 61 74 69 6f 6e 73 20 6f 66 20 74   variations of t
cf90: 68 65 20 65 71 75 61 6c 73 20 61 6e 64 20 6e 6f  he equals and no
cfa0: 74 20 65 71 75 61 6c 73 0a 6f 70 65 72 61 74 6f  t equals.operato
cfb0: 72 73 2e 20 20 5e 45 71 75 61 6c 73 20 63 61 6e  rs.  ^Equals can
cfc0: 20 62 65 20 65 69 74 68 65 72 0a 0a 3c 74 63 6c   be either..<tcl
cfd0: 3e 0a 68 64 5f 70 75 74 73 20 22 5b 4f 70 65 72  >.hd_puts "[Oper
cfe0: 61 74 6f 72 20 3d 5d 20 6f 72 20 5b 4f 70 65 72  ator =] or [Oper
cff0: 61 74 6f 72 20 3d 3d 5d 2e 0a 5e 54 68 65 20 6e  ator ==]..^The n
d000: 6f 6e 2d 65 71 75 61 6c 73 20 6f 70 65 72 61 74  on-equals operat
d010: 6f 72 20 63 61 6e 20 62 65 20 65 69 74 68 65 72  or can be either
d020: 0a 5b 4f 70 65 72 61 74 6f 72 20 21 3d 5d 20 6f  .[Operator !=] o
d030: 72 20 5b 4f 70 65 72 61 74 6f 72 20 7b 26 6c 74  r [Operator {&lt
d040: 3b 26 67 74 3b 7d 5d 2e 0a 5e 54 68 65 20 5b 4f  ;&gt;}]..^The [O
d050: 70 65 72 61 74 6f 72 20 7c 7c 5d 20 6f 70 65 72  perator ||] oper
d060: 61 74 6f 72 20 69 73 20 5c 22 63 6f 6e 63 61 74  ator is \"concat
d070: 65 6e 61 74 65 5c 22 20 2d 20 69 74 20 6a 6f 69  enate\" - it joi
d080: 6e 73 20 74 6f 67 65 74 68 65 72 0a 74 68 65 20  ns together.the 
d090: 74 77 6f 20 73 74 72 69 6e 67 73 20 6f 66 20 69  two strings of i
d0a0: 74 73 20 6f 70 65 72 61 6e 64 73 2e 0a 5e 54 68  ts operands..^Th
d0b0: 65 20 6f 70 65 72 61 74 6f 72 20 5b 4f 70 65 72  e operator [Oper
d0c0: 61 74 6f 72 20 25 5d 20 6f 75 74 70 75 74 73 20  ator %] outputs 
d0d0: 74 68 65 20 72 65 6d 61 69 6e 64 65 72 20 6f 66  the remainder of
d0e0: 20 69 74 73 20 6c 65 66 74 20 0a 6f 70 65 72 61   its left .opera
d0f0: 6e 64 20 6d 6f 64 75 6c 6f 20 69 74 73 20 72 69  nd modulo its ri
d100: 67 68 74 20 6f 70 65 72 61 6e 64 2e 3c 2f 70 3e  ght operand.</p>
d110: 0a 0a 3c 70 3e 5e 54 68 65 20 72 65 73 75 6c 74  ..<p>^The result
d120: 20 6f 66 20 61 6e 79 20 62 69 6e 61 72 79 20 6f   of any binary o
d130: 70 65 72 61 74 6f 72 20 69 73 20 61 20 6e 75 6d  perator is a num
d140: 65 72 69 63 20 76 61 6c 75 65 2c 20 65 78 63 65  eric value, exce
d150: 70 74 0a 66 6f 72 20 74 68 65 20 5b 4f 70 65 72  pt.for the [Oper
d160: 61 74 6f 72 20 7c 7c 5d 20 63 6f 6e 63 61 74 65  ator ||] concate
d170: 6e 61 74 69 6f 6e 20 6f 70 65 72 61 74 6f 72 20  nation operator 
d180: 77 68 69 63 68 20 67 69 76 65 73 20 61 20 73 74  which gives a st
d190: 72 69 6e 67 0a 72 65 73 75 6c 74 2e 3c 2f 70 3e  ring.result.</p>
d1a0: 22 0a 0a 68 64 5f 66 72 61 67 6d 65 6e 74 20 7b  "..hd_fragment {
d1b0: 69 73 69 73 6e 6f 74 7d 20 7b 49 53 20 6f 70 65  isisnot} {IS ope
d1c0: 72 61 74 6f 72 7d 20 7b 49 53 20 4e 4f 54 20 6f  rator} {IS NOT o
d1d0: 70 65 72 61 74 6f 72 7d 0a 0a 68 64 5f 70 75 74  perator}..hd_put
d1e0: 73 20 22 3c 70 3e 5e 54 68 65 20 5b 4f 70 65 72  s "<p>^The [Oper
d1f0: 61 74 6f 72 20 49 53 5d 20 61 6e 64 20 5b 4f 70  ator IS] and [Op
d200: 65 72 61 74 6f 72 20 7b 49 53 20 4e 4f 54 7d 5d  erator {IS NOT}]
d210: 20 6f 70 65 72 61 74 6f 72 73 20 77 6f 72 6b 0a   operators work.
d220: 6c 69 6b 65 20 5b 4f 70 65 72 61 74 6f 72 20 3d  like [Operator =
d230: 5d 20 61 6e 64 20 5b 4f 70 65 72 61 74 6f 72 20  ] and [Operator 
d240: 21 3d 5d 20 65 78 63 65 70 74 20 74 68 61 74 20  !=] except that 
d250: 4e 55 4c 4c 20 76 61 6c 75 65 73 20 63 6f 6d 70  NULL values comp
d260: 61 72 65 0a 65 71 75 61 6c 20 74 6f 20 6f 6e 65  are.equal to one
d270: 20 61 6e 6f 74 68 65 72 2e 20 20 5e 5b 4f 70 65   another.  ^[Ope
d280: 72 61 74 6f 72 20 49 53 5d 20 61 6e 64 20 5b 4f  rator IS] and [O
d290: 70 65 72 61 74 6f 72 20 7b 49 53 20 4e 4f 54 7d  perator {IS NOT}
d2a0: 5d 0a 68 61 76 65 20 74 68 65 20 73 61 6d 65 20  ].have the same 
d2b0: 70 72 65 63 65 64 65 6e 63 65 20 61 73 20 5b 4f  precedence as [O
d2c0: 70 65 72 61 74 6f 72 20 3d 5d 2e 22 0a 0a 3c 74  perator =]."..<t
d2d0: 63 6c 3e 68 64 5f 66 72 61 67 6d 65 6e 74 20 6c  cl>hd_fragment l
d2e0: 69 74 76 61 6c 75 65 20 7b 6c 69 74 65 72 61 6c  itvalue {literal
d2f0: 20 76 61 6c 75 65 7d 3c 2f 74 63 6c 3e 0a 3c 68   value}</tcl>.<h
d300: 33 3e 4c 69 74 65 72 61 6c 20 56 61 6c 75 65 73  3>Literal Values
d310: 3c 2f 68 33 3e 0a 3c 70 3e 0a 5e 41 20 6c 69 74  </h3>.<p>.^A lit
d320: 65 72 61 6c 20 76 61 6c 75 65 20 69 73 20 61 20  eral value is a 
d330: 63 6f 6e 73 74 61 6e 74 20 6f 66 20 73 6f 6d 65  constant of some
d340: 20 6b 69 6e 64 2e 0a 5e 4c 69 74 65 72 61 6c 20   kind..^Literal 
d350: 76 61 6c 75 65 73 20 6d 61 79 20 62 65 20 69 6e  values may be in
d360: 74 65 67 65 72 73 2c 20 66 6c 6f 61 74 69 6e 67  tegers, floating
d370: 20 70 6f 69 6e 74 20 6e 75 6d 62 65 72 73 2c 20   point numbers, 
d380: 73 74 72 69 6e 67 73 2c 0a 42 4c 4f 42 73 2c 20  strings,.BLOBs, 
d390: 6f 72 20 4e 55 4c 4c 73 2e 0a 5e 53 63 69 65 6e  or NULLs..^Scien
d3a0: 74 69 66 69 63 20 6e 6f 74 61 74 69 6f 6e 20 69  tific notation i
d3b0: 73 20 73 75 70 70 6f 72 74 65 64 20 66 6f 72 20  s supported for 
d3c0: 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20 6c  floating point l
d3d0: 69 74 65 72 61 6c 20 76 61 6c 75 65 73 2e 0a 5e  iteral values..^
d3e0: 28 54 68 65 20 22 2e 22 20 63 68 61 72 61 63 74  (The "." charact
d3f0: 65 72 20 69 73 20 61 6c 77 61 79 73 20 75 73 65  er is always use
d400: 64 20 0a 61 73 20 74 68 65 20 64 65 63 69 6d 61  d .as the decima
d410: 6c 20 70 6f 69 6e 74 20 65 76 65 6e 20 69 66 20  l point even if 
d420: 74 68 65 20 6c 6f 63 61 6c 65 20 73 65 74 74 69  the locale setti
d430: 6e 67 20 73 70 65 63 69 66 69 65 73 20 22 2c 22  ng specifies ","
d440: 20 66 6f 72 0a 74 68 69 73 20 72 6f 6c 65 20 2d   for.this role -
d450: 20 74 68 65 20 75 73 65 20 6f 66 20 22 2c 22 20   the use of "," 
d460: 66 6f 72 20 74 68 65 20 64 65 63 69 6d 61 6c 20  for the decimal 
d470: 70 6f 69 6e 74 20 77 6f 75 6c 64 20 72 65 73 75  point would resu
d480: 6c 74 20 69 6e 0a 73 79 6e 74 61 63 74 69 63 20  lt in.syntactic 
d490: 61 6d 62 69 67 75 69 74 79 2e 29 5e 20 20 5e 41  ambiguity.)^  ^A
d4a0: 20 73 74 72 69 6e 67 20 63 6f 6e 73 74 61 6e 74   string constant
d4b0: 20 69 73 20 66 6f 72 6d 65 64 20 62 79 20 65 6e   is formed by en
d4c0: 63 6c 6f 73 69 6e 67 20 74 68 65 0a 73 74 72 69  closing the.stri
d4d0: 6e 67 20 69 6e 20 73 69 6e 67 6c 65 20 71 75 6f  ng in single quo
d4e0: 74 65 73 20 28 27 29 2e 20 20 5e 41 20 73 69 6e  tes (').  ^A sin
d4f0: 67 6c 65 20 71 75 6f 74 65 20 77 69 74 68 69 6e  gle quote within
d500: 20 74 68 65 20 73 74 72 69 6e 67 20 63 61 6e 0a   the string can.
d510: 62 65 20 65 6e 63 6f 64 65 64 20 62 79 20 70 75  be encoded by pu
d520: 74 74 69 6e 67 20 74 77 6f 20 73 69 6e 67 6c 65  tting two single
d530: 20 71 75 6f 74 65 73 20 69 6e 20 61 20 72 6f 77   quotes in a row
d540: 20 2d 20 61 73 20 69 6e 20 50 61 73 63 61 6c 2e   - as in Pascal.
d550: 0a 43 2d 73 74 79 6c 65 20 65 73 63 61 70 65 73  .C-style escapes
d560: 20 75 73 69 6e 67 20 74 68 65 20 62 61 63 6b 73   using the backs
d570: 6c 61 73 68 20 63 68 61 72 61 63 74 65 72 20 61  lash character a
d580: 72 65 20 6e 6f 74 20 73 75 70 70 6f 72 74 65 64  re not supported
d590: 20 62 65 63 61 75 73 65 0a 74 68 65 79 20 61 72   because.they ar
d5a0: 65 20 6e 6f 74 20 73 74 61 6e 64 61 72 64 20 53  e not standard S
d5b0: 51 4c 2e 0a 5e 42 4c 4f 42 20 6c 69 74 65 72 61  QL..^BLOB litera
d5c0: 6c 73 20 61 72 65 20 73 74 72 69 6e 67 20 6c 69  ls are string li
d5d0: 74 65 72 61 6c 73 20 63 6f 6e 74 61 69 6e 69 6e  terals containin
d5e0: 67 20 68 65 78 61 64 65 63 69 6d 61 6c 20 64 61  g hexadecimal da
d5f0: 74 61 20 61 6e 64 0a 70 72 65 63 65 64 65 64 20  ta and.preceded 
d600: 62 79 20 61 20 73 69 6e 67 6c 65 20 22 78 22 20  by a single "x" 
d610: 6f 72 20 22 58 22 20 63 68 61 72 61 63 74 65 72  or "X" character
d620: 2e 20 20 5e 28 46 6f 72 20 65 78 61 6d 70 6c 65  .  ^(For example
d630: 3a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f  :</p>..<blockquo
d640: 74 65 3e 3c 70 72 65 3e 0a 58 27 35 33 35 31 34  te><pre>.X'53514
d650: 43 36 39 37 34 36 35 27 0a 3c 2f 70 72 65 3e 3c  C697465'.</pre><
d660: 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 29 5e 0a 0a  /blockquote>)^..
d670: 3c 70 3e 0a 5e 41 20 6c 69 74 65 72 61 6c 20 76  <p>.^A literal v
d680: 61 6c 75 65 20 63 61 6e 20 61 6c 73 6f 20 62 65  alue can also be
d690: 20 74 68 65 20 74 6f 6b 65 6e 20 22 4e 55 4c 4c   the token "NULL
d6a0: 22 2e 0a 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 68 64  "..</p>..<tcl>hd
d6b0: 5f 66 72 61 67 6d 65 6e 74 20 76 61 72 70 61 72  _fragment varpar
d6c0: 61 6d 20 70 61 72 61 6d 65 74 65 72 20 70 61 72  am parameter par
d6d0: 61 6d 65 74 65 72 73 20 7b 62 6f 75 6e 64 20 70  ameters {bound p
d6e0: 61 72 61 6d 65 74 65 72 7d 20 7b 62 6f 75 6e 64  arameter} {bound
d6f0: 20 70 61 72 61 6d 65 74 65 72 73 7d 3c 2f 74 63   parameters}</tc
d700: 6c 3e 0a 3c 68 33 3e 50 61 72 61 6d 65 74 65 72  l>.<h3>Parameter
d710: 73 3c 2f 68 33 3e 0a 3c 70 3e 0a 41 20 22 76 61  s</h3>.<p>.A "va
d720: 72 69 61 62 6c 65 22 20 6f 72 20 22 70 61 72 61  riable" or "para
d730: 6d 65 74 65 72 22 20 74 6f 6b 65 6e 0a 73 70 65  meter" token.spe
d740: 63 69 66 69 65 73 20 61 20 70 6c 61 63 65 68 6f  cifies a placeho
d750: 6c 64 65 72 20 69 6e 20 74 68 65 20 65 78 70 72  lder in the expr
d760: 65 73 73 69 6f 6e 20 66 6f 72 20 61 20 6c 69 74  ession for a lit
d770: 65 72 61 6c 0a 76 61 6c 75 65 20 74 68 61 74 20  eral.value that 
d780: 69 73 20 66 69 6c 6c 65 64 20 69 6e 20 61 74 20  is filled in at 
d790: 72 75 6e 74 69 6d 65 20 75 73 69 6e 67 20 74 68  runtime using th
d7a0: 65 0a 5b 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  e.[sqlite3_bind_
d7b0: 62 6c 6f 62 28 29 20 7c 20 73 71 6c 69 74 65 33  blob() | sqlite3
d7c0: 5f 62 69 6e 64 28 29 5d 20 66 61 6d 69 6c 79 20  _bind()] family 
d7d0: 6f 66 20 43 2f 43 2b 2b 20 69 6e 74 65 72 66 61  of C/C++ interfa
d7e0: 63 65 73 2e 0a 5e 28 50 61 72 61 6d 65 74 65 72  ces..^(Parameter
d7f0: 73 20 63 61 6e 20 74 61 6b 65 20 73 65 76 65 72  s can take sever
d800: 61 6c 20 66 6f 72 6d 73 3a 0a 3c 2f 70 3e 0a 0a  al forms:.</p>..
d810: 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 3c 74 61  <blockquote>.<ta
d820: 62 6c 65 3e 0a 3c 74 72 3e 0a 3c 74 64 20 61 6c  ble>.<tr>.<td al
d830: 69 67 6e 3d 22 72 69 67 68 74 22 20 76 61 6c 69  ign="right" vali
d840: 67 6e 3d 22 74 6f 70 22 3e 3c 62 3e 3f 3c 2f 62  gn="top"><b>?</b
d850: 3e 3c 69 3e 4e 4e 4e 3c 2f 69 3e 3c 2f 74 64 3e  ><i>NNN</i></td>
d860: 3c 74 64 20 77 69 64 74 68 3d 22 32 30 22 3e 3c  <td width="20"><
d870: 2f 74 64 3e 0a 3c 74 64 3e 41 20 71 75 65 73 74  /td>.<td>A quest
d880: 69 6f 6e 20 6d 61 72 6b 20 66 6f 6c 6c 6f 77 65  ion mark followe
d890: 64 20 62 79 20 61 20 6e 75 6d 62 65 72 20 3c 69  d by a number <i
d8a0: 3e 4e 4e 4e 3c 2f 69 3e 20 68 6f 6c 64 73 20 61  >NNN</i> holds a
d8b0: 20 73 70 6f 74 20 66 6f 72 20 74 68 65 0a 4e 4e   spot for the.NN
d8c0: 4e 2d 74 68 20 70 61 72 61 6d 65 74 65 72 2e 20  N-th parameter. 
d8d0: 20 4e 4e 4e 20 6d 75 73 74 20 62 65 20 62 65 74   NNN must be bet
d8e0: 77 65 65 6e 20 31 20 61 6e 64 20 5b 53 51 4c 49  ween 1 and [SQLI
d8f0: 54 45 5f 4d 41 58 5f 56 41 52 49 41 42 4c 45 5f  TE_MAX_VARIABLE_
d900: 4e 55 4d 42 45 52 5d 2e 3c 2f 74 64 3e 0a 3c 2f  NUMBER].</td>.</
d910: 74 72 3e 0a 3c 74 72 3e 0a 3c 74 64 20 61 6c 69  tr>.<tr>.<td ali
d920: 67 6e 3d 22 72 69 67 68 74 22 20 76 61 6c 69 67  gn="right" valig
d930: 6e 3d 22 74 6f 70 22 3e 3c 62 3e 3f 3c 2f 62 3e  n="top"><b>?</b>
d940: 3c 2f 74 64 3e 3c 74 64 20 77 69 64 74 68 3d 22  </td><td width="
d950: 32 30 22 3e 3c 2f 74 64 3e 0a 3c 74 64 3e 41 20  20"></td>.<td>A 
d960: 71 75 65 73 74 69 6f 6e 20 6d 61 72 6b 20 74 68  question mark th
d970: 61 74 20 69 73 20 6e 6f 74 20 66 6f 6c 6c 6f 77  at is not follow
d980: 65 64 20 62 79 20 61 20 6e 75 6d 62 65 72 20 68  ed by a number h
d990: 6f 6c 64 73 20 61 20 73 70 6f 74 20 66 6f 72 0a  olds a spot for.
d9a0: 74 68 65 20 6e 65 78 74 20 75 6e 75 73 65 64 20  the next unused 
d9b0: 70 61 72 61 6d 65 74 65 72 2e 3c 2f 74 64 3e 0a  parameter.</td>.
d9c0: 3c 2f 74 72 3e 0a 3c 74 72 3e 0a 3c 74 64 20 61  </tr>.<tr>.<td a
d9d0: 6c 69 67 6e 3d 22 72 69 67 68 74 22 20 76 61 6c  lign="right" val
d9e0: 69 67 6e 3d 22 74 6f 70 22 3e 3c 62 3e 3a 3c 2f  ign="top"><b>:</
d9f0: 62 3e 3c 69 3e 41 41 41 41 3c 2f 69 3e 3c 2f 74  b><i>AAAA</i></t
da00: 64 3e 3c 74 64 20 77 69 64 74 68 3d 22 32 30 22  d><td width="20"
da10: 3e 3c 2f 74 64 3e 0a 3c 74 64 3e 41 20 63 6f 6c  ></td>.<td>A col
da20: 6f 6e 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 61  on followed by a
da30: 6e 20 69 64 65 6e 74 69 66 69 65 72 20 6e 61 6d  n identifier nam
da40: 65 20 68 6f 6c 64 73 20 61 20 73 70 6f 74 20 66  e holds a spot f
da50: 6f 72 20 61 20 6e 61 6d 65 64 0a 70 61 72 61 6d  or a named.param
da60: 65 74 65 72 20 77 69 74 68 20 74 68 65 20 6e 61  eter with the na
da70: 6d 65 20 41 41 41 41 2e 20 20 4e 61 6d 65 64 20  me AAAA.  Named 
da80: 70 61 72 61 6d 65 74 65 72 73 20 61 72 65 20 61  parameters are a
da90: 6c 73 6f 20 6e 75 6d 62 65 72 65 64 2e 0a 54 68  lso numbered..Th
daa0: 65 20 6e 75 6d 62 65 72 20 61 73 73 69 67 6e 65  e number assigne
dab0: 64 20 69 73 20 74 68 65 20 6e 65 78 74 20 75 6e  d is the next un
dac0: 75 73 65 64 20 6e 75 6d 62 65 72 2e 20 20 54 6f  used number.  To
dad0: 20 61 76 6f 69 64 20 63 6f 6e 66 75 73 69 6f 6e   avoid confusion
dae0: 2c 0a 69 74 20 69 73 20 62 65 73 74 20 74 6f 20  ,.it is best to 
daf0: 61 76 6f 69 64 20 6d 69 78 69 6e 67 20 6e 61 6d  avoid mixing nam
db00: 65 64 20 61 6e 64 20 6e 75 6d 62 65 72 65 64 20  ed and numbered 
db10: 70 61 72 61 6d 65 74 65 72 73 2e 3c 2f 74 64 3e  parameters.</td>
db20: 0a 3c 2f 74 72 3e 0a 3c 74 72 3e 0a 3c 74 64 20  .</tr>.<tr>.<td 
db30: 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 20 76 61  align="right" va
db40: 6c 69 67 6e 3d 22 74 6f 70 22 3e 3c 62 3e 40 3c  lign="top"><b>@<
db50: 2f 62 3e 3c 69 3e 41 41 41 41 3c 2f 69 3e 3c 2f  /b><i>AAAA</i></
db60: 74 64 3e 3c 74 64 20 77 69 64 74 68 3d 22 32 30  td><td width="20
db70: 22 3e 3c 2f 74 64 3e 0a 3c 74 64 3e 41 6e 20 22  "></td>.<td>An "
db80: 61 74 22 20 73 69 67 6e 20 77 6f 72 6b 73 20 65  at" sign works e
db90: 78 61 63 74 6c 79 20 6c 69 6b 65 20 61 20 63 6f  xactly like a co
dba0: 6c 6f 6e 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a  lon.</td>.</tr>.
dbb0: 3c 74 72 3e 0a 3c 74 64 20 61 6c 69 67 6e 3d 22  <tr>.<td align="
dbc0: 72 69 67 68 74 22 20 76 61 6c 69 67 6e 3d 22 74  right" valign="t
dbd0: 6f 70 22 3e 3c 62 3e 24 3c 2f 62 3e 3c 69 3e 41  op"><b>$</b><i>A
dbe0: 41 41 41 3c 2f 69 3e 3c 2f 74 64 3e 3c 74 64 20  AAA</i></td><td 
dbf0: 77 69 64 74 68 3d 22 32 30 22 3e 3c 2f 74 64 3e  width="20"></td>
dc00: 0a 3c 74 64 3e 41 20 64 6f 6c 6c 61 72 2d 73 69  .<td>A dollar-si
dc10: 67 6e 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 61  gn followed by a
dc20: 6e 20 69 64 65 6e 74 69 66 69 65 72 20 6e 61 6d  n identifier nam
dc30: 65 20 61 6c 73 6f 20 68 6f 6c 64 73 20 61 20 73  e also holds a s
dc40: 70 6f 74 20 66 6f 72 20 61 20 6e 61 6d 65 64 0a  pot for a named.
dc50: 70 61 72 61 6d 65 74 65 72 20 77 69 74 68 20 74  parameter with t
dc60: 68 65 20 6e 61 6d 65 20 41 41 41 41 2e 20 20 54  he name AAAA.  T
dc70: 68 65 20 69 64 65 6e 74 69 66 69 65 72 20 6e 61  he identifier na
dc80: 6d 65 20 69 6e 20 74 68 69 73 20 63 61 73 65 20  me in this case 
dc90: 63 61 6e 20 69 6e 63 6c 75 64 65 0a 6f 6e 65 20  can include.one 
dca0: 6f 72 20 6d 6f 72 65 20 6f 63 63 75 72 61 6e 63  or more occuranc
dcb0: 65 73 20 6f 66 20 22 3a 3a 22 20 61 6e 64 20 61  es of "::" and a
dcc0: 20 73 75 66 66 69 78 20 65 6e 63 6c 6f 73 65 64   suffix enclosed
dcd0: 20 69 6e 20 22 28 2e 2e 2e 29 22 20 63 6f 6e 74   in "(...)" cont
dce0: 61 69 6e 69 6e 67 0a 61 6e 79 20 74 65 78 74 20  aining.any text 
dcf0: 61 74 20 61 6c 6c 2e 20 20 54 68 69 73 20 73 79  at all.  This sy
dd00: 6e 74 61 78 20 69 73 20 74 68 65 20 66 6f 72 6d  ntax is the form
dd10: 20 6f 66 20 61 20 76 61 72 69 61 62 6c 65 20 6e   of a variable n
dd20: 61 6d 65 20 69 6e 20 74 68 65 0a 5b 68 74 74 70  ame in the.[http
dd30: 3a 2f 2f 77 77 77 2e 74 63 6c 2e 74 6b 2f 20 7c  ://www.tcl.tk/ |
dd40: 20 54 63 6c 20 70 72 6f 67 72 61 6d 6d 69 6e 67   Tcl programming
dd50: 20 6c 61 6e 67 75 61 67 65 5d 2e 20 20 54 68 65   language].  The
dd60: 20 70 72 65 73 65 6e 63 65 0a 6f 66 20 74 68 69   presence.of thi
dd70: 73 20 73 79 6e 74 61 78 20 72 65 73 75 6c 74 73  s syntax results
dd80: 20 66 72 6f 6d 20 74 68 65 20 66 61 63 74 20 74   from the fact t
dd90: 68 61 74 20 53 51 4c 69 74 65 20 69 73 20 72 65  hat SQLite is re
dda0: 61 6c 6c 79 20 61 20 0a 5b 54 63 6c 20 65 78 74  ally a .[Tcl ext
ddb0: 65 6e 73 69 6f 6e 5d 20 74 68 61 74 20 68 61 73  ension] that has
ddc0: 20 65 73 63 61 70 65 64 20 69 6e 74 6f 20 74 68   escaped into th
ddd0: 65 20 77 69 6c 64 2e 3c 2f 74 64 3e 0a 3c 2f 74  e wild.</td>.</t
dde0: 72 3e 0a 3c 2f 74 61 62 6c 65 3e 0a 3c 2f 62 6c  r>.</table>.</bl
ddf0: 6f 63 6b 71 75 6f 74 65 3e 29 5e 0a 0a 3c 70 3e  ockquote>)^..<p>
de00: 5e 50 61 72 61 6d 65 74 65 72 73 20 74 68 61 74  ^Parameters that
de10: 20 61 72 65 20 6e 6f 74 20 61 73 73 69 67 6e 65   are not assigne
de20: 64 20 76 61 6c 75 65 73 20 75 73 69 6e 67 0a 5b  d values using.[
de30: 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 62 6c 6f  sqlite3_bind_blo
de40: 62 28 29 20 7c 20 73 71 6c 69 74 65 33 5f 62 69  b() | sqlite3_bi
de50: 6e 64 28 29 5d 20 61 72 65 20 74 72 65 61 74 65  nd()] are treate
de60: 64 0a 61 73 20 4e 55 4c 4c 2e 3c 2f 70 3e 0a 0a  d.as NULL.</p>..
de70: 3c 74 63 6c 3e 68 64 5f 66 72 61 67 6d 65 6e 74  <tcl>hd_fragment
de80: 20 6c 69 6b 65 20 4c 49 4b 45 20 45 53 43 41 50   like LIKE ESCAP
de90: 45 3c 2f 74 63 6c 3e 0a 3c 68 33 3e 54 68 65 20  E</tcl>.<h3>The 
dea0: 4c 49 4b 45 20 61 6e 64 20 47 4c 4f 42 20 6f 70  LIKE and GLOB op
deb0: 65 72 61 74 6f 72 73 3c 2f 68 33 3e 0a 3c 70 3e  erators</h3>.<p>
dec0: 5e 54 68 65 20 4c 49 4b 45 20 6f 70 65 72 61 74  ^The LIKE operat
ded0: 6f 72 20 64 6f 65 73 20 61 20 70 61 74 74 65 72  or does a patter
dee0: 6e 20 6d 61 74 63 68 69 6e 67 20 63 6f 6d 70 61  n matching compa
def0: 72 69 73 6f 6e 2e 20 5e 54 68 65 20 6f 70 65 72  rison. ^The oper
df00: 61 6e 64 0a 74 6f 20 74 68 65 20 72 69 67 68 74  and.to the right
df10: 20 6f 66 20 74 68 65 20 4c 49 4b 45 20 6f 70 65   of the LIKE ope
df20: 72 61 74 6f 72 20 63 6f 6e 74 61 69 6e 73 20 74  rator contains t
df30: 68 65 20 70 61 74 74 65 72 6e 20 61 6e 64 20 74  he pattern and t
df40: 68 65 20 6c 65 66 74 20 68 61 6e 64 0a 6f 70 65  he left hand.ope
df50: 72 61 6e 64 20 63 6f 6e 74 61 69 6e 73 20 74 68  rand contains th
df60: 65 20 73 74 72 69 6e 67 20 74 6f 20 6d 61 74 63  e string to matc
df70: 68 20 61 67 61 69 6e 73 74 20 74 68 65 20 70 61  h against the pa
df80: 74 74 65 72 6e 2e 0a 0a 3c 74 63 6c 3e 68 64 5f  ttern...<tcl>hd_
df90: 70 75 74 73 20 22 5e 41 20 70 65 72 63 65 6e 74  puts "^A percent
dfa0: 20 73 79 6d 62 6f 6c 20 28 5c 22 25 5c 22 29 20   symbol (\"%\") 
dfb0: 69 6e 20 74 68 65 20 4c 49 4b 45 20 70 61 74 74  in the LIKE patt
dfc0: 65 72 6e 20 6d 61 74 63 68 65 73 20 61 6e 79 0a  ern matches any.
dfd0: 73 65 71 75 65 6e 63 65 20 6f 66 20 7a 65 72 6f  sequence of zero
dfe0: 20 6f 72 20 6d 6f 72 65 20 63 68 61 72 61 63 74   or more charact
dff0: 65 72 73 20 69 6e 20 74 68 65 20 73 74 72 69 6e  ers in the strin
e000: 67 2e 20 20 5e 41 6e 20 75 6e 64 65 72 73 63 6f  g.  ^An undersco
e010: 72 65 0a 28 5c 22 5f 5c 22 29 20 69 6e 20 74 68  re.(\"_\") in th
e020: 65 20 4c 49 4b 45 20 70 61 74 74 65 72 6e 20 6d  e LIKE pattern m
e030: 61 74 63 68 65 73 20 61 6e 79 20 73 69 6e 67 6c  atches any singl
e040: 65 20 63 68 61 72 61 63 74 65 72 20 69 6e 20 74  e character in t
e050: 68 65 0a 73 74 72 69 6e 67 2e 20 20 5e 28 41 6e  he.string.  ^(An
e060: 79 20 6f 74 68 65 72 20 63 68 61 72 61 63 74 65  y other characte
e070: 72 20 6d 61 74 63 68 65 73 20 69 74 73 65 6c 66  r matches itself
e080: 20 6f 72 20 69 74 73 20 6c 6f 77 65 72 2f 75 70   or its lower/up
e090: 70 65 72 20 63 61 73 65 0a 65 71 75 69 76 61 6c  per case.equival
e0a0: 65 6e 74 20 28 69 2e 65 2e 20 63 61 73 65 2d 69  ent (i.e. case-i
e0b0: 6e 73 65 6e 73 69 74 69 76 65 20 6d 61 74 63 68  nsensitive match
e0c0: 69 6e 67 29 2e 29 5e 20 20 28 41 20 62 75 67 3a  ing).)^  (A bug:
e0d0: 20 5e 53 51 4c 69 74 65 20 6f 6e 6c 79 0a 75 6e   ^SQLite only.un
e0e0: 64 65 72 73 74 61 6e 64 73 20 75 70 70 65 72 2f  derstands upper/
e0f0: 6c 6f 77 65 72 20 63 61 73 65 20 66 6f 72 20 41  lower case for A
e100: 53 43 49 49 20 63 68 61 72 61 63 74 65 72 73 20  SCII characters 
e110: 62 79 20 64 65 66 61 75 6c 74 2e 20 20 5e 54 68  by default.  ^Th
e120: 65 0a 4c 49 4b 45 20 6f 70 65 72 61 74 6f 72 20  e.LIKE operator 
e130: 69 73 20 63 61 73 65 20 73 65 6e 73 69 74 69 76  is case sensitiv
e140: 65 20 62 79 20 64 65 66 61 75 6c 74 20 66 6f 72  e by default for
e150: 20 75 6e 69 63 6f 64 65 20 63 68 61 72 61 63 74   unicode charact
e160: 65 72 73 20 74 68 61 74 20 61 72 65 0a 62 65 79  ers that are.bey
e170: 6f 6e 64 20 74 68 65 20 41 53 43 49 49 20 72 61  ond the ASCII ra
e180: 6e 67 65 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c  nge.  For exampl
e190: 65 2c 0a 5e 74 68 65 20 65 78 70 72 65 73 73 69  e,.^the expressi
e1a0: 6f 6e 20 3c 62 3e 27 61 27 26 6e 62 73 70 3b 4c  on <b>'a'&nbsp;L
e1b0: 49 4b 45 26 6e 62 73 70 3b 27 41 27 3c 2f 62 3e  IKE&nbsp;'A'</b>
e1c0: 0a 69 73 20 54 52 55 45 20 62 75 74 20 3c 62 3e  .is TRUE but <b>
e1d0: 27 26 61 65 6c 69 67 3b 27 26 6e 62 73 70 3b 4c  '&aelig;'&nbsp;L
e1e0: 49 4b 45 26 6e 62 73 70 3b 27 26 41 45 6c 69 67  IKE&nbsp;'&AElig
e1f0: 3b 27 3c 2f 62 3e 20 69 73 20 46 41 4c 53 45 2e  ;'</b> is FALSE.
e200: 29 3c 70 3e 22 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e  )<p>"</tcl>..<p>
e210: 5e 49 66 20 74 68 65 20 6f 70 74 69 6f 6e 61 6c  ^If the optional
e220: 20 45 53 43 41 50 45 20 63 6c 61 75 73 65 20 69   ESCAPE clause i
e230: 73 20 70 72 65 73 65 6e 74 2c 20 74 68 65 6e 20  s present, then 
e240: 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 0a 66  the expression.f
e250: 6f 6c 6c 6f 77 69 6e 67 20 74 68 65 20 45 53 43  ollowing the ESC
e260: 41 50 45 20 6b 65 79 77 6f 72 64 20 6d 75 73 74  APE keyword must
e270: 20 65 76 61 6c 75 61 74 65 20 74 6f 20 61 20 73   evaluate to a s
e280: 74 72 69 6e 67 20 63 6f 6e 73 69 73 74 69 6e 67  tring consisting
e290: 20 6f 66 0a 61 20 73 69 6e 67 6c 65 20 63 68 61   of.a single cha
e2a0: 72 61 63 74 65 72 2e 20 5e 54 68 69 73 20 63 68  racter. ^This ch
e2b0: 61 72 61 63 74 65 72 20 6d 61 79 20 62 65 20 75  aracter may be u
e2c0: 73 65 64 20 69 6e 20 74 68 65 20 4c 49 4b 45 20  sed in the LIKE 
e2d0: 70 61 74 74 65 72 6e 0a 74 6f 20 69 6e 63 6c 75  pattern.to inclu
e2e0: 64 65 20 6c 69 74 65 72 61 6c 20 70 65 72 63 65  de literal perce
e2f0: 6e 74 20 6f 72 20 75 6e 64 65 72 73 63 6f 72 65  nt or underscore
e300: 20 63 68 61 72 61 63 74 65 72 73 2e 20 5e 54 68   characters. ^Th
e310: 65 20 65 73 63 61 70 65 0a 63 68 61 72 61 63 74  e escape.charact
e320: 65 72 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 61  er followed by a
e330: 20 70 65 72 63 65 6e 74 20 73 79 6d 62 6f 6c 20   percent symbol 
e340: 28 25 29 2c 20 75 6e 64 65 72 73 63 6f 72 65 20  (%), underscore 
e350: 28 5f 29 2c 20 6f 72 20 61 20 73 65 63 6f 6e 64  (_), or a second
e360: 0a 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 65  .instance of the
e370: 20 65 73 63 61 70 65 20 63 68 61 72 61 63 74 65   escape characte
e380: 72 20 69 74 73 65 6c 66 20 6d 61 74 63 68 65 73  r itself matches
e390: 20 61 0a 6c 69 74 65 72 61 6c 20 70 65 72 63 65   a.literal perce
e3a0: 6e 74 20 73 79 6d 62 6f 6c 2c 20 75 6e 64 65 72  nt symbol, under
e3b0: 73 63 6f 72 65 2c 20 6f 72 20 61 20 73 69 6e 67  score, or a sing
e3c0: 6c 65 20 65 73 63 61 70 65 20 63 68 61 72 61 63  le escape charac
e3d0: 74 65 72 2c 0a 72 65 73 70 65 63 74 69 76 65 6c  ter,.respectivel
e3e0: 79 2e 0a 0a 3c 70 3e 5e 54 68 65 20 69 6e 66 69  y...<p>^The infi
e3f0: 78 20 4c 49 4b 45 20 6f 70 65 72 61 74 6f 72 20  x LIKE operator 
e400: 69 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 62  is implemented b
e410: 79 20 63 61 6c 6c 69 6e 67 20 74 68 65 0a 61 70  y calling the.ap
e420: 70 6c 69 63 61 74 69 6f 6e 2d 64 65 66 69 6e 65  plication-define
e430: 64 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 73 20  d SQL functions 
e440: 5b 6c 69 6b 65 28 3c 69 3e 59 3c 2f 69 3e 2c 3c  [like(<i>Y</i>,<
e450: 69 3e 58 3c 2f 69 3e 29 5d 20 6f 72 0a 5b 6c 69  i>X</i>)] or.[li
e460: 6b 65 28 3c 69 3e 59 3c 2f 69 3e 2c 3c 69 3e 58  ke(<i>Y</i>,<i>X
e470: 3c 2f 69 3e 2c 3c 69 3e 5a 3c 2f 69 3e 29 5d 3c  </i>,<i>Z</i>)]<
e480: 2f 61 3e 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68  /a>.</p>..<p>^Th
e490: 65 20 4c 49 4b 45 20 6f 70 65 72 61 74 6f 72 20  e LIKE operator 
e4a0: 63 61 6e 20 62 65 20 6d 61 64 65 20 63 61 73 65  can be made case
e4b0: 20 73 65 6e 73 69 74 69 76 65 20 75 73 69 6e 67   sensitive using
e4c0: 20 74 68 65 0a 5b 63 61 73 65 5f 73 65 6e 73 69   the.[case_sensi
e4d0: 74 69 76 65 5f 6c 69 6b 65 20 70 72 61 67 6d 61  tive_like pragma
e4e0: 5d 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 68 64 5f  ].</p>..<tcl>hd_
e4f0: 66 72 61 67 6d 65 6e 74 20 67 6c 6f 62 20 47 4c  fragment glob GL
e500: 4f 42 3c 2f 74 63 6c 3e 0a 3c 70 3e 5e 54 68 65  OB</tcl>.<p>^The
e510: 20 47 4c 4f 42 20 6f 70 65 72 61 74 6f 72 20 69   GLOB operator i
e520: 73 20 73 69 6d 69 6c 61 72 20 74 6f 20 4c 49 4b  s similar to LIK
e530: 45 20 62 75 74 20 75 73 65 73 20 74 68 65 20 55  E but uses the U
e540: 6e 69 78 0a 66 69 6c 65 20 67 6c 6f 62 62 69 6e  nix.file globbin
e550: 67 20 73 79 6e 74 61 78 20 66 6f 72 20 69 74 73  g syntax for its
e560: 20 77 69 6c 64 63 61 72 64 73 2e 20 20 5e 41 6c   wildcards.  ^Al
e570: 73 6f 2c 20 47 4c 4f 42 20 69 73 20 63 61 73 65  so, GLOB is case
e580: 0a 73 65 6e 73 69 74 69 76 65 2c 20 75 6e 6c 69  .sensitive, unli
e590: 6b 65 20 4c 49 4b 45 2e 20 20 5e 42 6f 74 68 20  ke LIKE.  ^Both 
e5a0: 47 4c 4f 42 20 61 6e 64 20 4c 49 4b 45 20 6d 61  GLOB and LIKE ma
e5b0: 79 20 62 65 20 70 72 65 63 65 64 65 64 20 62 79  y be preceded by
e5c0: 0a 74 68 65 20 4e 4f 54 20 6b 65 79 77 6f 72 64  .the NOT keyword
e5d0: 20 74 6f 20 69 6e 76 65 72 74 20 74 68 65 20 73   to invert the s
e5e0: 65 6e 73 65 20 6f 66 20 74 68 65 20 74 65 73 74  ense of the test
e5f0: 2e 20 20 5e 54 68 65 20 69 6e 66 69 78 20 47 4c  .  ^The infix GL
e600: 4f 42 20 0a 6f 70 65 72 61 74 6f 72 20 69 73 20  OB .operator is 
e610: 69 6d 70 6c 65 6d 65 6e 74 65 64 20 62 79 20 63  implemented by c
e620: 61 6c 6c 69 6e 67 20 74 68 65 20 66 75 6e 63 74  alling the funct
e630: 69 6f 6e 0a 5b 67 6c 6f 62 28 3c 69 3e 59 3c 2f  ion.[glob(<i>Y</
e640: 69 3e 2c 3c 69 3e 58 3c 2f 69 3e 29 5d 20 61 6e  i>,<i>X</i>)] an
e650: 64 20 63 61 6e 20 62 65 20 6d 6f 64 69 66 69 65  d can be modifie
e660: 64 20 62 79 20 6f 76 65 72 72 69 64 69 6e 67 0a  d by overriding.
e670: 74 68 61 74 20 66 75 6e 63 74 69 6f 6e 2e 3c 2f  that function.</
e680: 70 3e 0a 0a 3c 74 63 6c 3e 68 64 5f 66 72 61 67  p>..<tcl>hd_frag
e690: 6d 65 6e 74 20 72 65 67 65 78 70 20 52 45 47 45  ment regexp REGE
e6a0: 58 50 3c 2f 74 63 6c 3e 0a 3c 70 3e 5e 54 68 65  XP</tcl>.<p>^The
e6b0: 20 52 45 47 45 58 50 20 6f 70 65 72 61 74 6f 72   REGEXP operator
e6c0: 20 69 73 20 61 20 73 70 65 63 69 61 6c 20 73 79   is a special sy
e6d0: 6e 74 61 78 20 66 6f 72 20 74 68 65 20 72 65 67  ntax for the reg
e6e0: 65 78 70 28 29 0a 75 73 65 72 20 66 75 6e 63 74  exp().user funct
e6f0: 69 6f 6e 2e 20 20 5e 4e 6f 20 72 65 67 65 78 70  ion.  ^No regexp
e700: 28 29 20 75 73 65 72 20 66 75 6e 63 74 69 6f 6e  () user function
e710: 20 69 73 20 64 65 66 69 6e 65 64 20 62 79 20 64   is defined by d
e720: 65 66 61 75 6c 74 0a 61 6e 64 20 73 6f 20 75 73  efault.and so us
e730: 65 20 6f 66 20 74 68 65 20 52 45 47 45 58 50 20  e of the REGEXP 
e740: 6f 70 65 72 61 74 6f 72 20 77 69 6c 6c 20 6e 6f  operator will no
e750: 72 6d 61 6c 6c 79 20 72 65 73 75 6c 74 20 69 6e  rmally result in
e760: 20 61 6e 0a 65 72 72 6f 72 20 6d 65 73 73 61 67   an.error messag
e770: 65 2e 20 20 5e 49 66 20 61 20 5b 61 70 70 6c 69  e.  ^If a [appli
e780: 63 61 74 69 6f 6e 2d 64 65 66 69 6e 65 64 20 53  cation-defined S
e790: 51 4c 20 66 75 6e 63 74 69 6f 6e 5d 20 6e 61 6d  QL function] nam
e7a0: 65 64 20 22 72 65 67 65 78 70 22 0a 69 73 20 61  ed "regexp".is a
e7b0: 64 64 65 64 20 61 74 20 72 75 6e 2d 74 69 6d 65  dded at run-time
e7c0: 2c 20 74 68 61 74 20 66 75 6e 63 74 69 6f 6e 20  , that function 
e7d0: 77 69 6c 6c 20 62 65 20 63 61 6c 6c 65 64 20 69  will be called i
e7e0: 6e 20 6f 72 64 65 72 0a 74 6f 20 69 6d 70 6c 65  n order.to imple
e7f0: 6d 65 6e 74 20 74 68 65 20 52 45 47 45 58 50 20  ment the REGEXP 
e800: 6f 70 65 72 61 74 6f 72 2e 3c 2f 70 3e 0a 0a 3c  operator.</p>..<
e810: 74 63 6c 3e 68 64 5f 66 72 61 67 6d 65 6e 74 20  tcl>hd_fragment 
e820: 6d 61 74 63 68 20 4d 41 54 43 48 3c 2f 74 63 6c  match MATCH</tcl
e830: 3e 0a 3c 70 3e 5e 54 68 65 20 4d 41 54 43 48 20  >.<p>^The MATCH 
e840: 6f 70 65 72 61 74 6f 72 20 69 73 20 61 20 73 70  operator is a sp
e850: 65 63 69 61 6c 20 73 79 6e 74 61 78 20 66 6f 72  ecial syntax for
e860: 20 74 68 65 20 6d 61 74 63 68 28 29 0a 61 70 70   the match().app
e870: 6c 69 63 61 74 69 6f 6e 2d 64 65 66 69 6e 65 64  lication-defined
e880: 20 66 75 6e 63 74 69 6f 6e 2e 20 20 5e 54 68 65   function.  ^The
e890: 20 64 65 66 61 75 6c 74 20 6d 61 74 63 68 28 29   default match()
e8a0: 20 66 75 6e 63 74 69 6f 6e 20 69 6d 70 6c 65 6d   function implem
e8b0: 65 6e 74 61 74 69 6f 6e 0a 72 61 69 73 65 73 20  entation.raises 
e8c0: 61 6e 20 65 78 63 65 70 74 69 6f 6e 20 61 6e 64  an exception and
e8d0: 20 69 73 20 6e 6f 74 20 72 65 61 6c 6c 79 20 75   is not really u
e8e0: 73 65 66 75 6c 20 66 6f 72 20 61 6e 79 74 68 69  seful for anythi
e8f0: 6e 67 2e 0a 5e 42 75 74 20 65 78 74 65 6e 73 69  ng..^But extensi
e900: 6f 6e 73 20 63 61 6e 20 6f 76 65 72 72 69 64 65  ons can override
e910: 20 74 68 65 20 6d 61 74 63 68 28 29 20 66 75 6e   the match() fun
e920: 63 74 69 6f 6e 20 77 69 74 68 20 6d 6f 72 65 0a  ction with more.
e930: 68 65 6c 70 66 75 6c 20 6c 6f 67 69 63 2e 3c 2f  helpful logic.</
e940: 70 3e 0a 0a 3c 74 63 6c 3e 68 64 5f 66 72 61 67  p>..<tcl>hd_frag
e950: 6d 65 6e 74 20 62 65 74 77 65 65 6e 20 42 45 54  ment between BET
e960: 57 45 45 4e 3c 2f 74 63 6c 3e 0a 3c 68 33 3e 54  WEEN</tcl>.<h3>T
e970: 68 65 20 42 45 54 57 45 45 4e 20 6f 70 65 72 61  he BETWEEN opera
e980: 74 6f 72 3c 2f 68 33 3e 0a 3c 70 3e 5e 28 54 68  tor</h3>.<p>^(Th
e990: 65 20 42 45 54 57 45 45 4e 20 6f 70 65 72 61 74  e BETWEEN operat
e9a0: 6f 72 20 69 73 20 6c 6f 67 69 63 61 6c 6c 79 20  or is logically 
e9b0: 65 71 75 69 76 61 6c 65 6e 74 20 74 6f 20 61 20  equivalent to a 
e9c0: 70 61 69 72 20 6f 66 20 63 6f 6d 70 61 72 69 73  pair of comparis
e9d0: 6f 6e 73 2e 0a 22 3c 69 3e 78 3c 2f 69 3e 20 3c  ons.."<i>x</i> <
e9e0: 62 3e 42 45 54 57 45 45 4e 3c 2f 62 3e 20 3c 69  b>BETWEEN</b> <i
e9f0: 3e 79 3c 2f 69 3e 20 3c 62 3e 41 4e 44 3c 2f 62  >y</i> <b>AND</b
ea00: 3e 20 3c 69 3e 7a 3c 2f 69 3e 22 20 69 73 20 0a  > <i>z</i>" is .
ea10: 65 71 75 69 76 61 6c 65 6e 74 20 74 6f 20 0a 22  equivalent to ."
ea20: 3c 69 3e 78 3c 2f 69 3e 3c 62 3e 26 67 74 3b 3d  <i>x</i><b>&gt;=
ea30: 3c 2f 62 3e 3c 69 3e 79 3c 2f 69 3e 20 3c 62 3e  </b><i>y</i> <b>
ea40: 41 4e 44 3c 2f 62 3e 20 3c 69 3e 78 3c 2f 69 3e  AND</b> <i>x</i>
ea50: 3c 62 3e 26 6c 74 3b 3d 3c 2f 62 3e 3c 69 3e 7a  <b>&lt;=</b><i>z
ea60: 3c 2f 69 3e 22 20 65 78 63 65 70 74 0a 74 68 61  </i>" except.tha
ea70: 74 20 77 69 74 68 20 42 45 54 57 45 45 4e 2c 20  t with BETWEEN, 
ea80: 74 68 65 20 3c 69 3e 78 3c 2f 69 3e 20 65 78 70  the <i>x</i> exp
ea90: 72 65 73 73 69 6f 6e 20 69 73 20 6f 6e 6c 79 20  ression is only 
eaa0: 65 76 61 6c 75 61 74 65 64 20 6f 6e 63 65 2e 29  evaluated once.)
eab0: 5e 0a 5e 54 68 65 20 70 72 65 63 65 64 65 6e 63  ^.^The precedenc
eac0: 65 20 6f 66 20 74 68 65 20 42 45 54 57 45 45 4e  e of the BETWEEN
ead0: 20 6f 70 65 72 61 74 6f 72 20 69 73 20 74 68 65   operator is the
eae0: 20 73 61 6d 65 20 61 73 20 74 68 65 20 70 72 65   same as the pre
eaf0: 63 65 64 65 6e 63 65 0a 61 73 20 6f 70 65 72 61  cedence.as opera
eb00: 74 6f 72 73 20 3c 62 3e 3d 3d 3c 2f 62 3e 20 61  tors <b>==</b> a
eb10: 6e 64 20 3c 62 3e 21 3d 3c 2f 62 3e 20 61 6e 64  nd <b>!=</b> and
eb20: 20 3c 62 3e 4c 49 4b 45 3c 2f 62 3e 20 61 6e 64   <b>LIKE</b> and
eb30: 20 67 72 6f 75 70 73 20 6c 65 66 74 20 74 6f 20   groups left to 
eb40: 72 69 67 68 74 2e 0a 0a 3c 74 63 6c 3e 68 64 5f  right...<tcl>hd_
eb50: 66 72 61 67 6d 65 6e 74 20 63 61 73 65 20 7b 43  fragment case {C
eb60: 41 53 45 20 65 78 70 72 65 73 73 69 6f 6e 7d 3c  ASE expression}<
eb70: 2f 74 63 6c 3e 0a 3c 68 33 3e 54 68 65 20 43 41  /tcl>.<h3>The CA
eb80: 53 45 20 65 78 70 72 65 73 73 69 6f 6e 3c 2f 68  SE expression</h
eb90: 33 3e 0a 3c 70 3e 41 20 43 41 53 45 20 65 78 70  3>.<p>A CASE exp
eba0: 72 65 73 73 69 6f 6e 20 73 65 72 76 65 73 20 61  ression serves a
ebb0: 20 72 6f 6c 65 20 73 69 6d 69 6c 61 72 20 74 6f   role similar to
ebc0: 20 49 46 2d 54 48 45 4e 2d 45 4c 53 45 20 69 6e   IF-THEN-ELSE in
ebd0: 20 6f 74 68 65 72 0a 70 72 6f 67 72 61 6d 6d 69   other.programmi
ebe0: 6e 67 20 6c 61 6e 67 75 61 67 65 73 2e 20 20 5e  ng languages.  ^
ebf0: 57 48 45 4e 20 65 78 70 72 65 73 73 69 6f 6e 73  WHEN expressions
ec00: 20 61 72 65 20 65 76 61 6c 75 61 74 65 64 20 66   are evaluated f
ec10: 72 6f 6d 20 6c 65 66 74 20 74 6f 0a 72 69 67 68  rom left to.righ
ec20: 74 20 75 6e 74 69 6c 20 6f 6e 65 20 69 73 20 66  t until one is f
ec30: 6f 75 6e 64 20 74 68 61 74 20 69 73 20 74 72 75  ound that is tru
ec40: 65 2c 20 61 74 20 77 68 69 63 68 20 70 6f 69 6e  e, at which poin
ec50: 74 20 74 68 65 20 63 6f 72 72 65 73 70 6f 6e 64  t the correspond
ec60: 69 6e 67 0a 54 48 45 4e 20 74 65 72 6d 20 62 65  ing.THEN term be
ec70: 63 6f 6d 65 73 20 74 68 65 20 72 65 73 75 6c 74  comes the result
ec80: 2e 20 20 5e 49 66 20 6e 6f 20 57 48 45 4e 20 65  .  ^If no WHEN e
ec90: 78 70 72 65 73 73 69 6f 6e 20 69 73 20 74 72 75  xpression is tru
eca0: 65 20 74 68 65 6e 20 74 68 65 20 45 4c 53 45 20  e then the ELSE 
ecb0: 0a 63 6c 61 75 73 65 20 64 65 74 65 72 6d 69 6e  .clause determin
ecc0: 65 73 20 74 68 65 20 72 65 73 75 6c 74 20 6f 72  es the result or
ecd0: 20 74 68 65 20 72 65 73 75 6c 74 20 69 73 20 4e   the result is N
ece0: 55 4c 4c 20 69 66 20 74 68 65 72 65 20 69 73 20  ULL if there is 
ecf0: 6e 6f 20 45 4c 53 45 20 63 6c 61 73 65 2e 0a 3c  no ELSE clase..<
ed00: 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 6f 70 74 69  /p>..<p>The opti
ed10: 6f 6e 61 6c 20 65 78 70 72 65 73 73 69 6f 6e 20  onal expression 
ed20: 74 68 61 74 20 6f 63 63 75 72 73 20 69 6e 20 62  that occurs in b
ed30: 65 74 77 65 65 6e 20 74 68 65 20 43 41 53 45 20  etween the CASE 
ed40: 6b 65 79 77 6f 72 64 20 61 6e 64 20 74 68 65 0a  keyword and the.
ed50: 66 69 72 73 74 20 57 48 45 4e 20 6b 65 79 77 6f  first WHEN keywo
ed60: 72 64 20 69 73 20 74 68 65 20 22 62 61 73 65 22  rd is the "base"
ed70: 20 65 78 70 72 65 73 73 69 6f 6e 2e 20 20 5e 54   expression.  ^T
ed80: 68 65 72 65 20 61 72 65 20 74 77 6f 20 62 61 73  here are two bas
ed90: 69 63 20 66 6f 72 6d 73 0a 6f 66 20 61 20 43 41  ic forms.of a CA
eda0: 53 45 20 65 78 70 72 65 73 73 69 6f 6e 3a 20 74  SE expression: t
edb0: 68 6f 73 65 20 77 69 74 68 20 61 6e 64 20 77 69  hose with and wi
edc0: 74 68 6f 75 74 20 61 20 62 61 73 65 20 65 78 70  thout a base exp
edd0: 72 65 73 73 69 6f 6e 2e 0a 5e 49 6e 20 61 20 43  ression..^In a C
ede0: 41 53 45 20 77 69 74 68 6f 75 74 20 61 20 62 61  ASE without a ba
edf0: 73 65 20 65 78 70 72 65 73 73 69 6f 6e 2c 20 65  se expression, e
ee00: 61 63 68 20 57 48 45 4e 20 65 78 70 72 65 73 73  ach WHEN express
ee10: 69 6f 6e 20 69 73 20 65 76 61 6c 75 74 65 64 0a  ion is evaluted.
ee20: 61 73 20 61 20 62 6f 6f 6c 65 61 6e 20 61 6e 64  as a boolean and
ee30: 20 74 68 65 20 6f 76 65 72 61 6c 6c 20 72 65 73   the overall res
ee40: 75 6c 74 20 69 73 20 64 65 74 65 72 6d 69 6e 65  ult is determine
ee50: 64 20 62 79 20 66 69 72 73 74 20 57 48 45 4e 20  d by first WHEN 
ee60: 65 78 70 72 65 73 73 69 6f 6e 0a 74 68 61 74 20  expression.that 
ee70: 69 73 20 74 72 75 65 2e 0a 5e 49 6e 20 61 20 43  is true..^In a C
ee80: 41 53 45 20 77 69 74 68 20 61 20 62 61 73 65 20  ASE with a base 
ee90: 65 78 70 72 65 73 73 69 6f 6e 2c 20 74 68 65 20  expression, the 
eea0: 62 61 73 65 20 65 78 70 72 65 73 73 69 6f 6e 20  base expression 
eeb0: 69 73 20 65 76 61 6c 75 74 65 64 20 6a 75 73 74  is evaluted just
eec0: 0a 6f 6e 63 65 20 61 6e 64 20 74 68 65 20 72 65  .once and the re
eed0: 73 75 6c 74 20 69 73 20 63 6f 6d 70 61 72 65 64  sult is compared
eee0: 20 61 67 61 69 6e 73 74 20 65 61 63 68 20 57 48   against each WH
eef0: 45 4e 20 65 78 70 72 65 73 73 69 6f 6e 20 75 6e  EN expression un
ef00: 74 69 6c 20 61 20 0a 6d 61 74 63 68 20 69 73 20  til a .match is 
ef10: 66 6f 75 6e 64 2e 0a 5e 57 68 65 6e 20 63 6f 6d  found..^When com
ef20: 70 61 72 69 6e 67 20 61 20 62 61 73 65 20 65 78  paring a base ex
ef30: 70 72 65 73 73 69 6f 6e 20 61 67 61 69 6e 73 74  pression against
ef40: 20 61 20 57 48 45 4e 20 65 78 70 72 65 73 73 69   a WHEN expressi
ef50: 6f 6e 2c 20 74 68 65 20 73 61 6d 65 0a 63 6f 6c  on, the same.col
ef60: 6c 61 74 69 6e 67 20 73 65 71 75 65 6e 63 65 2c  lating sequence,
ef70: 20 61 66 66 69 6e 69 74 79 2c 20 61 6e 64 20 4e   affinity, and N
ef80: 55 4c 4c 2d 68 61 6e 64 6c 69 6e 67 20 72 75 6c  ULL-handling rul
ef90: 65 73 20 61 70 70 6c 79 20 61 73 20 69 66 20 74  es apply as if t
efa0: 68 65 0a 62 61 73 65 20 65 78 70 72 65 73 73 69  he.base expressi
efb0: 6f 6e 20 61 6e 64 20 57 48 45 4e 20 65 78 70 72  on and WHEN expr
efc0: 65 73 73 69 6f 6e 20 61 72 65 20 72 65 73 70 65  ession are respe
efd0: 63 74 69 76 65 6c 79 20 74 68 65 20 6c 65 66 74  ctively the left
efe0: 2d 20 61 6e 64 0a 72 69 67 68 74 2d 68 61 6e 64  - and.right-hand
eff0: 20 6f 70 65 72 61 6e 64 73 20 6f 66 20 61 6e 20   operands of an 
f000: 3c 62 69 67 3e 3c 62 3e 3d 3c 2f 62 3e 3c 2f 62  <big><b>=</b></b
f010: 69 67 3e 20 6f 70 65 72 61 74 6f 72 2e 3c 2f 70  ig> operator.</p
f020: 3e 0a 0a 3c 70 3e 5e 28 41 73 73 75 6d 69 6e 67  >..<p>^(Assuming
f030: 20 74 68 65 20 73 75 62 65 78 70 72 65 73 73 69   the subexpressi
f040: 6f 6e 73 20 68 61 76 65 20 6e 6f 20 73 69 64 65  ons have no side
f050: 2d 65 66 66 65 63 74 73 2c 20 74 68 65 20 66 6f  -effects, the fo
f060: 6c 6c 6f 77 69 6e 67 0a 74 77 6f 20 65 78 70 72  llowing.two expr
f070: 65 73 73 69 6f 6e 73 20 61 72 65 20 65 71 75 69  essions are equi
f080: 76 61 6c 65 6e 74 3a 3c 2f 70 3e 0a 0a 3c 75 6c  valent:</p>..<ul
f090: 3e 0a 3c 6c 69 3e 43 41 53 45 20 78 20 57 48 45  >.<li>CASE x WHE
f0a0: 4e 20 77 31 20 54 48 45 4e 20 72 31 20 57 48 45  N w1 THEN r1 WHE
f0b0: 4e 20 77 32 20 54 48 45 4e 20 72 32 20 45 4c 53  N w2 THEN r2 ELS
f0c0: 45 20 72 33 20 45 4e 44 0a 3c 6c 69 3e 43 41 53  E r3 END.<li>CAS
f0d0: 45 20 57 48 45 4e 20 78 3d 77 31 20 54 48 45 4e  E WHEN x=w1 THEN
f0e0: 20 72 31 20 57 48 45 4e 20 78 3d 77 32 20 54 48   r1 WHEN x=w2 TH
f0f0: 45 4e 20 72 32 20 45 4c 53 45 20 72 33 20 45 4e  EN r2 ELSE r3 EN
f100: 44 0a 3c 2f 75 6c 3e 29 5e 0a 0a 3c 70 3e 5e 54  D.</ul>)^..<p>^T
f110: 68 65 20 6f 6e 6c 79 20 64 69 66 66 65 72 65 6e  he only differen
f120: 63 65 20 62 65 74 77 65 65 6e 20 74 68 65 20 74  ce between the t
f130: 77 6f 20 43 41 53 45 20 65 78 70 72 65 73 73 69  wo CASE expressi
f140: 6f 6e 73 20 73 68 6f 77 6e 20 61 62 6f 76 65 0a  ons shown above.
f150: 69 73 20 74 68 61 74 20 74 68 65 20 3c 69 3e 78  is that the <i>x
f160: 3c 2f 69 3e 20 65 78 70 72 65 73 73 69 6f 6e 20  </i> expression 
f170: 69 73 20 65 76 61 6c 75 61 74 65 64 0a 65 78 61  is evaluated.exa
f180: 63 74 6c 79 20 6f 6e 63 65 20 69 6e 20 74 68 65  ctly once in the
f190: 20 66 69 72 73 74 20 65 78 61 6d 70 6c 65 20 62   first example b
f1a0: 75 74 20 6d 69 67 68 74 20 62 65 20 65 76 61 6c  ut might be eval
f1b0: 75 61 74 65 64 20 6d 75 6c 74 69 70 6c 65 20 74  uated multiple t
f1c0: 69 6d 65 73 0a 69 6e 20 74 68 65 20 73 65 63 6f  imes.in the seco
f1d0: 6e 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 41 20 4e  nd.</p>..<p>^A N
f1e0: 55 4c 4c 20 72 65 73 75 6c 74 20 69 73 20 63 6f  ULL result is co
f1f0: 6e 73 69 64 65 72 65 64 20 66 61 6c 73 65 20 77  nsidered false w
f200: 68 65 6e 20 65 76 61 6c 75 61 74 69 6e 67 20 57  hen evaluating W
f210: 48 45 4e 20 74 65 72 6d 73 2e 0a 5e 49 66 20 74  HEN terms..^If t
f220: 68 65 20 62 61 73 65 20 65 78 70 72 65 73 73 69  he base expressi
f230: 6f 6e 20 69 73 20 4e 55 4c 4c 20 74 68 65 6e 20  on is NULL then 
f240: 74 68 65 20 72 65 73 75 6c 74 20 6f 66 20 74 68  the result of th
f250: 65 20 43 41 53 45 20 69 73 20 74 68 65 0a 72 65  e CASE is the.re
f260: 73 75 6c 74 20 6f 66 20 74 68 65 20 45 4c 53 45  sult of the ELSE
f270: 20 65 78 70 72 65 73 73 69 6f 6e 20 69 66 20 69   expression if i
f280: 74 20 65 78 69 73 74 73 2c 20 6f 72 20 4e 55 4c  t exists, or NUL
f290: 4c 20 69 66 20 74 68 65 20 45 4c 53 45 20 63 6c  L if the ELSE cl
f2a0: 61 75 73 65 0a 69 73 20 6f 6d 69 74 74 65 64 2e  ause.is omitted.
f2b0: 3c 2f 70 3e 0a 0a 0a 3c 68 33 3e 54 61 62 6c 65  </p>...<h3>Table
f2c0: 20 43 6f 6c 75 6d 6e 20 4e 61 6d 65 73 3c 2f 68   Column Names</h
f2d0: 33 3e 0a 3c 70 3e 5e 41 20 63 6f 6c 75 6d 6e 20  3>.<p>^A column 
f2e0: 6e 61 6d 65 20 63 61 6e 20 62 65 20 61 6e 79 20  name can be any 
f2f0: 6f 66 20 74 68 65 20 6e 61 6d 65 73 20 64 65 66  of the names def
f300: 69 6e 65 64 20 69 6e 20 74 68 65 20 5b 43 52 45  ined in the [CRE
f310: 41 54 45 20 54 41 42 4c 45 5d 0a 73 74 61 74 65  ATE TABLE].state
f320: 6d 65 6e 74 20 6f 72 20 6f 6e 65 20 6f 66 20 74  ment or one of t
f330: 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 73 70 65  he following spe
f340: 63 69 61 6c 20 69 64 65 6e 74 69 66 69 65 72 73  cial identifiers
f350: 3a 20 22 3c 62 3e 52 4f 57 49 44 3c 2f 62 3e 22  : "<b>ROWID</b>"
f360: 2c 0a 22 3c 62 3e 4f 49 44 3c 2f 62 3e 22 2c 20  ,."<b>OID</b>", 
f370: 6f 72 20 22 3c 62 3e 5f 52 4f 57 49 44 5f 3c 2f  or "<b>_ROWID_</
f380: 62 3e 22 2e 0a 5e 54 68 65 73 65 20 73 70 65 63  b>"..^These spec
f390: 69 61 6c 20 69 64 65 6e 74 69 66 69 65 72 73 20  ial identifiers 
f3a0: 61 6c 6c 20 64 65 73 63 72 69 62 65 20 74 68 65  all describe the
f3b0: 0a 75 6e 69 71 75 65 20 69 6e 74 65 67 65 72 20  .unique integer 
f3c0: 6b 65 79 20 28 74 68 65 20 5b 72 6f 77 69 64 5d  key (the [rowid]
f3d0: 29 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  ) associated wit
f3e0: 68 20 65 76 65 72 79 20 0a 72 6f 77 20 6f 66 20  h every .row of 
f3f0: 65 76 65 72 79 20 74 61 62 6c 65 2e 0a 5e 54 68  every table..^Th
f400: 65 20 73 70 65 63 69 61 6c 20 69 64 65 6e 74 69  e special identi
f410: 66 69 65 72 73 20 6f 6e 6c 79 20 72 65 66 65 72  fiers only refer
f420: 20 74 6f 20 74 68 65 20 72 6f 77 20 6b 65 79 20   to the row key 
f430: 69 66 20 74 68 65 20 5b 43 52 45 41 54 45 20 54  if the [CREATE T
f440: 41 42 4c 45 5d 0a 73 74 61 74 65 6d 65 6e 74 20  ABLE].statement 
f450: 64 6f 65 73 20 6e 6f 74 20 64 65 66 69 6e 65 20  does not define 
f460: 61 20 72 65 61 6c 20 63 6f 6c 75 6d 6e 20 77 69  a real column wi
f470: 74 68 20 74 68 65 20 73 61 6d 65 20 6e 61 6d 65  th the same name
f480: 2e 0a 5e 54 68 65 20 72 6f 77 69 64 20 63 61 6e  ..^The rowid can
f490: 20 62 65 20 75 73 65 64 20 61 6e 79 77 68 65 72   be used anywher
f4a0: 65 20 61 20 72 65 67 75 6c 61 72 0a 63 6f 6c 75  e a regular.colu
f4b0: 6d 6e 20 63 61 6e 20 62 65 20 75 73 65 64 2e 3c  mn can be used.<
f4c0: 2f 70 3e 0a 0a 3c 68 33 3e 53 75 62 71 75 65 72  /p>..<h3>Subquer
f4d0: 69 65 73 3c 2f 68 33 3e 0a 3c 70 3e 5e 5b 53 45  ies</h3>.<p>^[SE
f4e0: 4c 45 43 54 5d 20 73 74 61 74 65 6d 65 6e 74 73  LECT] statements
f4f0: 20 63 61 6e 20 61 70 70 65 61 72 20 69 6e 20 65   can appear in e
f500: 78 70 72 65 73 73 69 6f 6e 73 20 61 73 20 65 69  xpressions as ei
f510: 74 68 65 72 20 74 68 65 0a 72 69 67 68 74 2d 68  ther the.right-h
f520: 61 6e 64 20 6f 70 65 72 61 6e 64 20 6f 66 20 74  and operand of t
f530: 68 65 20 49 4e 20 6f 70 65 72 61 74 6f 72 2c 20  he IN operator, 
f540: 61 73 20 61 20 73 63 61 6c 61 72 20 71 75 61 6e  as a scalar quan
f550: 74 69 74 79 2c 20 6f 72 0a 61 73 20 74 68 65 20  tity, or.as the 
f560: 6f 70 65 72 61 6e 64 20 6f 66 20 61 6e 20 45 58  operand of an EX
f570: 49 53 54 53 20 6f 70 65 72 61 74 6f 72 2e 0a 5e  ISTS operator..^
f580: 41 73 20 61 20 73 63 61 6c 61 72 20 71 75 61 6e  As a scalar quan
f590: 74 69 74 79 20 6f 72 20 74 68 65 20 6f 70 65 72  tity or the oper
f5a0: 61 6e 64 20 6f 66 20 61 6e 20 49 4e 20 6f 70 65  and of an IN ope
f5b0: 72 61 74 6f 72 2c 0a 74 68 65 20 53 45 4c 45 43  rator,.the SELEC
f5c0: 54 20 73 68 6f 75 6c 64 20 68 61 76 65 20 6f 6e  T should have on
f5d0: 6c 79 20 61 20 73 69 6e 67 6c 65 20 63 6f 6c 75  ly a single colu
f5e0: 6d 6e 20 69 6e 20 69 74 73 0a 72 65 73 75 6c 74  mn in its.result
f5f0: 2e 20 20 5e 43 6f 6d 70 6f 75 6e 64 20 53 45 4c  .  ^Compound SEL
f600: 45 43 54 73 20 28 63 6f 6e 6e 65 63 74 65 64 20  ECTs (connected 
f610: 77 69 74 68 20 6b 65 79 77 6f 72 64 73 20 6c 69  with keywords li
f620: 6b 65 20 55 4e 49 4f 4e 20 6f 72 0a 45 58 43 45  ke UNION or.EXCE
f630: 50 54 29 20 61 72 65 20 61 6c 6c 6f 77 65 64 2e  PT) are allowed.
f640: 0a 5e 57 69 74 68 20 74 68 65 20 45 58 49 53 54  .^With the EXIST
f650: 53 20 6f 70 65 72 61 74 6f 72 2c 20 74 68 65 20  S operator, the 
f660: 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65 20 72  columns in the r
f670: 65 73 75 6c 74 20 73 65 74 20 6f 66 20 74 68 65  esult set of the
f680: 20 5b 53 45 4c 45 43 54 5d 20 61 72 65 0a 69 67   [SELECT] are.ig
f690: 6e 6f 72 65 64 20 61 6e 64 20 74 68 65 20 65 78  nored and the ex
f6a0: 70 72 65 73 73 69 6f 6e 20 72 65 74 75 72 6e 73  pression returns
f6b0: 20 54 52 55 45 20 69 66 20 6f 6e 65 20 6f 72 20   TRUE if one or 
f6c0: 6d 6f 72 65 20 72 6f 77 73 20 65 78 69 73 74 0a  more rows exist.
f6d0: 61 6e 64 20 46 41 4c 53 45 20 69 66 20 74 68 65  and FALSE if the
f6e0: 20 72 65 73 75 6c 74 20 73 65 74 20 69 73 20 65   result set is e
f6f0: 6d 70 74 79 2e 0a 5e 49 66 20 6e 6f 20 74 65 72  mpty..^If no ter
f700: 6d 73 20 69 6e 20 74 68 65 20 5b 53 45 4c 45 43  ms in the [SELEC
f710: 54 5d 20 65 78 70 72 65 73 73 69 6f 6e 20 72 65  T] expression re
f720: 66 65 72 20 74 6f 20 76 61 6c 75 65 73 20 69 6e  fer to values in
f730: 20 74 68 65 20 63 6f 6e 74 61 69 6e 69 6e 67 0a   the containing.
f740: 71 75 65 72 79 2c 20 74 68 65 6e 20 74 68 65 20  query, then the 
f750: 65 78 70 72 65 73 73 69 6f 6e 20 69 73 20 65 76  expression is ev
f760: 61 6c 75 61 74 65 64 20 6f 6e 63 65 20 70 72 69  aluated once pri
f770: 6f 72 20 74 6f 20 61 6e 79 20 6f 74 68 65 72 0a  or to any other.
f780: 70 72 6f 63 65 73 73 69 6e 67 20 61 6e 64 20 74  processing and t
f790: 68 65 20 72 65 73 75 6c 74 20 69 73 20 72 65 75  he result is reu
f7a0: 73 65 64 20 61 73 20 6e 65 63 65 73 73 61 72 79  sed as necessary
f7b0: 2e 20 20 5e 49 66 20 74 68 65 20 5b 53 45 4c 45  .  ^If the [SELE
f7c0: 43 54 5d 20 65 78 70 72 65 73 73 69 6f 6e 0a 64  CT] expression.d
f7d0: 6f 65 73 20 63 6f 6e 74 61 69 6e 20 76 61 72 69  oes contain vari
f7e0: 61 62 6c 65 73 20 66 72 6f 6d 20 74 68 65 20 6f  ables from the o
f7f0: 75 74 65 72 20 71 75 65 72 79 2c 20 74 68 65 6e  uter query, then
f800: 20 74 68 65 20 5b 53 45 4c 45 43 54 5d 20 69 73   the [SELECT] is
f810: 20 72 65 65 76 61 6c 75 61 74 65 64 0a 65 76 65   reevaluated.eve
f820: 72 79 20 74 69 6d 65 20 69 74 20 69 73 20 6e 65  ry time it is ne
f830: 65 64 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 57  eded.</p>..<p>^W
f840: 68 65 6e 20 61 20 53 45 4c 45 43 54 20 69 73 20  hen a SELECT is 
f850: 74 68 65 20 72 69 67 68 74 20 6f 70 65 72 61 6e  the right operan
f860: 64 20 6f 66 20 74 68 65 20 49 4e 20 6f 70 65 72  d of the IN oper
f870: 61 74 6f 72 2c 20 74 68 65 20 49 4e 0a 6f 70 65  ator, the IN.ope
f880: 72 61 74 6f 72 20 72 65 74 75 72 6e 73 20 54 52  rator returns TR
f890: 55 45 20 69 66 20 74 68 65 20 53 45 4c 45 43 54  UE if the SELECT
f8a0: 20 72 65 73 75 6c 74 20 63 6f 6e 74 61 69 6e 73   result contains
f8b0: 20 6e 6f 20 4e 55 4c 4c 73 20 61 6e 64 20 69 66   no NULLs and if
f8c0: 0a 74 68 65 20 6c 65 66 74 20 6f 70 65 72 61 6e  .the left operan
f8d0: 64 20 6d 61 74 63 68 65 73 20 61 6e 79 20 6f 66  d matches any of
f8e0: 20 74 68 65 20 76 61 6c 75 65 73 20 69 6e 20 74   the values in t
f8f0: 68 65 20 53 45 4c 45 43 54 20 72 65 73 75 6c 74  he SELECT result
f900: 2e 0a 5e 54 68 65 20 49 4e 20 6f 70 65 72 61 74  ..^The IN operat
f910: 6f 72 20 6d 61 79 20 62 65 20 70 72 65 63 65 64  or may be preced
f920: 65 64 0a 62 79 20 74 68 65 20 4e 4f 54 20 6b 65  ed.by the NOT ke
f930: 79 77 6f 72 64 20 74 6f 20 69 6e 76 65 72 74 20  yword to invert 
f940: 74 68 65 20 73 65 6e 73 65 20 6f 66 20 74 68 65  the sense of the
f950: 20 74 65 73 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e   test.</p>..<p>^
f960: 57 68 65 6e 20 61 20 53 45 4c 45 43 54 20 61 70  When a SELECT ap
f970: 70 65 61 72 73 20 77 69 74 68 69 6e 20 61 6e 20  pears within an 
f980: 65 78 70 72 65 73 73 69 6f 6e 20 62 75 74 20 69  expression but i
f990: 73 20 6e 6f 74 20 74 68 65 20 72 69 67 68 74 0a  s not the right.
f9a0: 6f 70 65 72 61 6e 64 20 6f 66 20 61 6e 20 49 4e  operand of an IN
f9b0: 20 6f 70 65 72 61 74 6f 72 2c 20 74 68 65 6e 20   operator, then 
f9c0: 74 68 65 20 66 69 72 73 74 20 72 6f 77 20 6f 66  the first row of
f9d0: 20 74 68 65 20 72 65 73 75 6c 74 20 6f 66 20 74   the result of t
f9e0: 68 65 0a 53 45 4c 45 43 54 20 62 65 63 6f 6d 65  he.SELECT become
f9f0: 73 20 74 68 65 20 76 61 6c 75 65 20 75 73 65 64  s the value used
fa00: 20 69 6e 20 74 68 65 20 65 78 70 72 65 73 73 69   in the expressi
fa10: 6f 6e 2e 20 20 5e 49 66 20 74 68 65 20 53 45 4c  on.  ^If the SEL
fa20: 45 43 54 20 79 69 65 6c 64 73 0a 6d 6f 72 65 20  ECT yields.more 
fa30: 74 68 61 6e 20 6f 6e 65 20 72 65 73 75 6c 74 20  than one result 
fa40: 72 6f 77 2c 20 61 6c 6c 20 72 6f 77 73 20 61 66  row, all rows af
fa50: 74 65 72 20 74 68 65 20 66 69 72 73 74 20 61 72  ter the first ar
fa60: 65 20 69 67 6e 6f 72 65 64 2e 20 20 5e 49 66 0a  e ignored.  ^If.
fa70: 74 68 65 20 53 45 4c 45 43 54 20 79 69 65 6c 64  the SELECT yield
fa80: 73 20 6e 6f 20 72 6f 77 73 2c 20 74 68 65 6e 20  s no rows, then 
fa90: 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65  the value of the
faa0: 20 53 45 4c 45 43 54 20 69 73 20 4e 55 4c 4c 2e   SELECT is NULL.
fab0: 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 68 64 5f 66 72  </p>..<tcl>hd_fr
fac0: 61 67 6d 65 6e 74 20 63 61 73 74 65 78 70 72 20  agment castexpr 
fad0: 7b 43 41 53 54 20 65 78 70 72 65 73 73 69 6f 6e  {CAST expression
fae0: 7d 3c 2f 74 63 6c 3e 0a 3c 68 33 3e 43 41 53 54  }</tcl>.<h3>CAST
faf0: 20 65 78 70 72 65 73 73 69 6f 6e 73 3c 2f 68 33   expressions</h3
fb00: 3e 0a 0a 3c 70 3e 5e 41 20 43 41 53 54 20 65 78  >..<p>^A CAST ex
fb10: 70 72 65 73 73 69 6f 6e 20 63 68 61 6e 67 65 73  pression changes
fb20: 20 74 68 65 20 5b 64 61 74 61 74 79 70 65 5d 20   the [datatype] 
fb30: 6f 66 20 74 68 65 20 3c 65 78 70 72 3e 20 69 6e  of the <expr> in
fb40: 74 6f 20 74 68 65 0a 74 79 70 65 20 73 70 65 63  to the.type spec
fb50: 69 66 69 65 64 20 62 79 20 26 6c 74 3b 74 79 70  ified by &lt;typ
fb60: 65 26 67 74 3b 2e 20 0a 5e 28 26 6c 74 3b 74 79  e&gt;. .^(&lt;ty
fb70: 70 65 26 67 74 3b 20 63 61 6e 20 62 65 20 61 6e  pe&gt; can be an
fb80: 79 20 6e 6f 6e 2d 65 6d 70 74 79 20 74 79 70 65  y non-empty type
fb90: 20 6e 61 6d 65 20 74 68 61 74 20 69 73 20 76 61   name that is va
fba0: 6c 69 64 0a 66 6f 72 20 74 68 65 20 74 79 70 65  lid.for the type
fbb0: 20 69 6e 20 61 20 63 6f 6c 75 6d 6e 20 64 65 66   in a column def
fbc0: 69 6e 69 74 69 6f 6e 20 6f 66 20 61 20 5b 43 52  inition of a [CR
fbd0: 45 41 54 45 20 54 41 42 4c 45 5d 20 73 74 61 74  EATE TABLE] stat
fbe0: 65 6d 65 6e 74 2e 29 5e 0a 5e 54 68 65 20 26 6c  ement.)^.^The &l
fbf0: 74 3b 74 79 70 65 26 67 74 3b 20 6e 61 6d 65 20  t;type&gt; name 
fc00: 69 73 20 69 6e 74 65 72 70 72 65 74 65 64 20 61  is interpreted a
fc10: 63 63 6f 72 64 69 6e 67 20 74 6f 20 74 68 65 20  ccording to the 
fc20: 0a 5b 72 75 6c 65 73 20 66 6f 72 20 64 65 74 65  .[rules for dete
fc30: 72 6d 69 6e 69 6e 67 20 63 6f 6c 75 6d 6e 20 61  rmining column a
fc40: 66 66 69 6e 69 74 79 5d 2e 0a 0a 3c 70 3e 5e 41  ffinity]...<p>^A
fc50: 6e 20 65 78 70 6c 69 63 69 74 20 63 61 73 74 20  n explicit cast 
fc60: 69 73 20 73 74 72 6f 6e 67 20 74 68 61 6e 20 61  is strong than a
fc70: 66 66 69 6e 69 74 79 3b 20 77 69 74 68 20 74 68  ffinity; with th
fc80: 65 20 43 41 53 54 20 65 78 70 72 65 73 73 69 6f  e CAST expressio
fc90: 6e 0a 74 68 65 20 64 61 74 61 74 79 70 65 20 63  n.the datatype c
fca0: 6f 6e 76 65 72 73 69 6f 6e 20 69 73 20 66 6f 72  onversion is for
fcb0: 63 65 64 20 65 76 65 6e 20 69 66 20 69 74 20 69  ced even if it i
fcc0: 73 20 6c 6f 73 73 79 20 61 6e 64 20 69 72 72 72  s lossy and irrr
fcd0: 65 76 65 72 73 69 62 6c 65 2e 0a 3c 75 6c 3e 0a  eversible..<ul>.
fce0: 3c 6c 69 3e 3c 70 3e 0a 20 20 5e 41 20 63 61 73  <li><p>.  ^A cas
fcf0: 74 20 6f 66 20 61 20 52 45 41 4c 20 76 61 6c 75  t of a REAL valu
fd00: 65 20 69 6e 74 6f 20 61 6e 20 49 4e 54 45 47 45  e into an INTEGE
fd10: 52 20 77 69 6c 6c 20 74 72 75 6e 63 61 74 65 20  R will truncate 
fd20: 74 68 65 0a 20 20 66 72 61 63 74 69 6f 6e 61 6c  the.  fractional
fd30: 20 70 61 72 74 20 6f 66 20 74 68 65 20 52 45 41   part of the REA
fd40: 4c 2e 20 20 5e 49 66 20 61 6e 20 52 45 41 4c 20  L.  ^If an REAL 
fd50: 69 73 20 74 6f 6f 20 6c 61 72 67 65 20 74 6f 20  is too large to 
fd60: 62 65 0a 20 20 72 65 70 72 65 73 65 6e 74 65 64  be.  represented
fd70: 20 61 73 20 61 6e 20 49 4e 54 45 47 45 52 20 74   as an INTEGER t
fd80: 68 65 6e 20 74 68 65 20 72 65 73 75 6c 74 20 6f  hen the result o
fd90: 66 20 74 68 65 20 63 61 73 74 20 69 73 0a 20 20  f the cast is.  
fda0: 74 68 65 20 6c 61 72 67 65 73 74 20 6e 65 67 61  the largest nega
fdb0: 74 69 76 65 20 69 6e 74 65 67 65 72 3a 20 2d 39  tive integer: -9
fdc0: 32 32 33 33 37 32 30 33 36 38 35 34 37 37 35 38  2233720368547758
fdd0: 30 38 2e 0a 0a 3c 6c 69 3e 3c 70 3e 0a 20 5e 41  08...<li><p>. ^A
fde0: 20 63 61 73 74 20 6f 66 20 61 20 54 45 58 54 20   cast of a TEXT 
fdf0: 76 61 6c 75 65 20 69 6e 74 6f 20 61 6e 20 49 4e  value into an IN
fe00: 54 45 47 45 52 20 6f 72 20 52 45 41 4c 20 77 69  TEGER or REAL wi
fe10: 6c 6c 20 72 65 61 64 20 61 20 70 72 65 66 69 78  ll read a prefix
fe20: 0a 20 6f 66 20 74 68 65 20 54 45 58 54 20 76 61  . of the TEXT va
fe30: 6c 75 65 20 74 68 61 74 20 6c 6f 6f 6b 73 20 6c  lue that looks l
fe40: 69 6b 65 20 61 6e 20 69 6e 74 65 67 65 72 20 6f  ike an integer o
fe50: 72 20 72 65 61 6c 20 76 61 6c 75 65 2c 20 72 65  r real value, re
fe60: 73 70 65 63 74 69 76 65 6c 79 2c 0a 20 61 6e 64  spectively,. and
fe70: 20 69 67 6e 6f 72 65 20 74 68 65 20 72 65 73 74   ignore the rest
fe80: 2e 20 20 5e 57 68 65 6e 20 63 61 73 74 69 6e 67  .  ^When casting
fe90: 20 66 72 6f 6d 20 54 45 58 54 20 69 6e 74 6f 20   from TEXT into 
fea0: 49 4e 54 45 47 45 52 20 6f 72 20 52 45 41 4c 2c  INTEGER or REAL,
feb0: 0a 20 6c 65 61 64 69 6e 67 20 73 70 61 63 65 73  . leading spaces
fec0: 20 69 6e 20 74 68 65 20 54 45 58 54 20 76 61 6c   in the TEXT val
fed0: 75 65 20 61 72 65 20 69 67 6e 6f 72 65 64 2e 20  ue are ignored. 
fee0: 20 5e 28 41 20 63 61 73 74 20 6f 66 20 61 20 54   ^(A cast of a T
fef0: 45 58 54 20 76 61 6c 75 65 0a 20 74 68 61 74 20  EXT value. that 
ff00: 6c 6f 6f 6b 73 20 6e 6f 74 68 69 6e 67 20 6c 69  looks nothing li
ff10: 6b 65 20 61 20 6e 75 6d 62 65 72 20 69 6e 74 6f  ke a number into
ff20: 20 49 4e 54 45 47 45 52 20 6f 72 20 52 45 41 4c   INTEGER or REAL
ff30: 20 72 65 73 75 6c 74 73 20 69 6e 20 30 20 6f 72   results in 0 or
ff40: 20 30 2e 30 2c 0a 20 72 65 73 70 65 63 74 69 76   0.0,. respectiv
ff50: 65 6c 79 2e 29 5e 0a 0a 3c 6c 69 3e 3c 70 3e 0a  ely.)^..<li><p>.
ff60: 20 5e 43 61 73 74 69 6e 67 20 61 20 76 61 6c 75   ^Casting a valu
ff70: 65 20 69 6e 74 6f 20 4e 55 4d 45 52 49 43 20 66  e into NUMERIC f
ff80: 69 72 73 74 20 64 6f 65 73 20 61 20 66 6f 72 63  irst does a forc
ff90: 65 64 20 63 6f 6e 76 65 72 73 69 6f 6e 20 69 6e  ed conversion in
ffa0: 74 6f 20 52 45 41 4c 0a 20 20 62 75 74 20 77 69  to REAL.  but wi
ffb0: 6c 6c 20 74 68 65 6e 20 66 75 72 74 68 65 72 20  ll then further 
ffc0: 63 6f 6e 76 65 72 74 73 20 74 68 65 20 72 65 73  converts the res
ffd0: 75 6c 74 20 69 6e 74 6f 20 49 4e 54 45 47 45 52  ult into INTEGER
ffe0: 20 69 66 20 61 6e 64 20 6f 6e 6c 79 20 69 66 0a   if and only if.
fff0: 20 20 74 68 65 20 63 6f 6e 76 65 72 73 69 6f 6e    the conversion
10000 20 66 72 6f 6d 20 52 45 41 4c 20 74 6f 20 49 4e   from REAL to IN
10010 54 45 47 45 52 20 69 73 20 6c 6f 73 73 6c 65 73  TEGER is lossles
10020 73 20 61 6e 64 20 72 65 76 65 72 73 69 62 6c 65  s and reversible
10030 2e 0a 20 20 54 68 69 73 20 69 73 20 74 68 65 20  ..  This is the 
10040 6f 6e 6c 79 20 63 6f 6e 74 65 78 74 20 69 6e 20  only context in 
10050 53 51 4c 69 74 65 20 77 68 65 72 65 20 74 68 65  SQLite where the
10060 20 4e 55 4d 45 52 49 43 20 61 6e 64 20 49 4e 54   NUMERIC and INT
10070 45 47 45 52 0a 20 20 5b 61 66 66 69 6e 69 74 69  EGER.  [affiniti
10080 65 73 5d 20 62 65 68 61 76 65 20 64 69 66 66 65  es] behave diffe
10090 72 65 6e 74 6c 79 2e 0a 0a 3c 6c 69 3e 3c 70 3e  rently...<li><p>
100a0 0a 20 5e 43 61 73 74 69 6e 67 20 61 20 76 61 6c  . ^Casting a val
100b0 75 65 20 69 6e 74 6f 20 54 45 58 54 20 72 65 6e  ue into TEXT ren
100c0 64 65 72 73 20 74 68 65 20 76 61 6c 75 65 20 61  ders the value a
100d0 73 20 69 66 20 76 69 61 20 5b 73 71 6c 69 74 65  s if via [sqlite
100e0 33 5f 73 6e 70 72 69 6e 74 66 28 29 5d 0a 20 20  3_snprintf()].  
100f0 65 78 63 65 70 74 20 74 68 61 74 20 74 68 65 20  except that the 
10100 72 65 73 75 6c 74 69 6e 67 20 54 45 58 54 20 75  resulting TEXT u
10110 73 65 73 20 74 68 65 20 5b 65 6e 63 6f 64 69 6e  ses the [encodin
10120 67 5d 20 6f 66 20 74 68 65 20 64 61 74 61 62 61  g] of the databa
10130 73 65 0a 20 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e  se.  connection.
10140 0a 0a 3c 6c 69 3e 3c 70 3e 0a 20 5e 43 61 73 74  ..<li><p>. ^Cast
10150 69 6e 67 20 61 20 76 61 6c 75 65 20 74 6f 20 61  ing a value to a
10160 20 26 6c 74 3b 74 79 70 65 26 67 74 3b 20 77 69   &lt;type&gt; wi
10170 74 68 20 6e 6f 20 61 66 66 69 6e 69 74 79 20 63  th no affinity c
10180 61 75 73 65 73 20 74 68 65 20 76 61 6c 75 65 20  auses the value 
10190 74 6f 0a 20 20 62 65 20 63 6f 6e 76 65 72 74 65  to.  be converte
101a0 64 20 69 6e 74 6f 20 61 20 42 4c 4f 42 2e 20 20  d into a BLOB.  
101b0 5e 43 61 73 74 69 6e 67 20 74 6f 20 61 20 42 4c  ^Casting to a BL
101c0 4f 42 20 63 6f 6e 73 69 73 74 73 20 6f 66 20 66  OB consists of f
101d0 69 72 73 74 20 63 61 73 74 69 6e 67 0a 20 20 74  irst casting.  t
101e0 68 65 20 76 61 6c 75 65 20 74 6f 20 54 45 58 54  he value to TEXT
101f0 20 69 6e 20 74 68 65 20 5b 65 6e 63 6f 64 69 6e   in the [encodin
10200 67 5d 20 6f 66 20 74 68 65 20 64 61 74 61 62 61  g] of the databa
10210 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c 20 74  se connection, t
10220 68 65 6e 0a 20 20 69 6e 74 65 72 70 72 65 74 69  hen.  interpreti
10230 6e 67 20 74 68 65 20 72 65 73 75 6c 74 69 6e 67  ng the resulting
10240 20 62 79 74 65 20 73 65 71 75 65 6e 63 65 20 61   byte sequence a
10250 73 20 61 20 42 4c 4f 42 20 69 6e 73 74 65 61 64  s a BLOB instead
10260 20 6f 66 20 61 73 20 54 45 58 54 2e 0a 0a 3c 6c   of as TEXT...<l
10270 69 3e 3c 70 3e 0a 20 5e 43 61 73 74 69 6e 67 20  i><p>. ^Casting 
10280 61 20 42 4c 4f 42 20 76 61 6c 75 65 20 69 6e 74  a BLOB value int
10290 6f 20 61 6e 79 20 74 79 70 65 20 6f 74 68 65 72  o any type other
102a0 20 74 68 61 6e 20 61 20 42 4c 4f 42 20 63 6f 6e   than a BLOB con
102b0 73 69 73 74 73 20 6f 66 20 66 69 72 73 74 0a 20  sists of first. 
102c0 20 69 6e 74 65 72 70 72 65 74 69 6e 67 20 74 68   interpreting th
102d0 65 20 62 79 74 65 20 73 65 71 75 65 6e 63 65 20  e byte sequence 
102e0 6f 66 20 74 68 65 20 42 4c 4f 42 20 61 73 20 61  of the BLOB as a
102f0 20 54 45 58 54 20 73 74 72 69 6e 67 20 69 6e 20   TEXT string in 
10300 74 68 65 0a 20 20 64 61 74 61 62 61 73 65 20 65  the.  database e
10310 6e 63 6f 64 69 6e 67 20 74 68 65 6e 20 63 6f 6e  ncoding then con
10320 74 69 6e 75 69 6e 67 20 61 73 20 69 66 20 74 68  tinuing as if th
10330 65 20 76 61 6c 75 65 20 77 68 65 72 65 20 6f 72  e value where or
10340 69 67 69 6e 61 6c 6c 79 20 6f 66 0a 20 20 74 79  iginally of.  ty
10350 70 65 20 54 45 58 54 2e 0a 0a 3c 6c 69 3e 3c 70  pe TEXT...<li><p
10360 3e 0a 20 5e 41 6e 79 20 63 61 73 74 20 6f 66 20  >. ^Any cast of 
10370 61 20 4e 55 4c 4c 20 76 61 6c 75 65 20 79 69 65  a NULL value yie
10380 6c 64 73 20 61 20 4e 55 4c 4c 20 72 65 73 75 6c  lds a NULL resul
10390 74 2e 0a 3c 2f 75 6c 3e 0a 0a 3c 70 3e 5e 4e 6f  t..</ul>..<p>^No
103a0 74 65 20 74 68 61 74 20 74 68 65 20 72 65 73 75  te that the resu
103b0 6c 74 20 66 72 6f 6d 20 63 61 73 74 69 6e 67 20  lt from casting 
103c0 61 6e 79 20 6e 6f 6e 2d 42 4c 4f 42 20 76 61 6c  any non-BLOB val
103d0 75 65 20 69 6e 74 6f 20 61 20 0a 42 4c 4f 42 20  ue into a .BLOB 
103e0 61 6e 64 20 74 68 65 20 72 65 73 75 6c 74 20 66  and the result f
103f0 72 6f 6d 20 63 61 73 74 69 6e 67 20 61 6e 79 20  rom casting any 
10400 42 4c 4f 42 20 76 61 6c 75 65 20 69 6e 74 6f 20  BLOB value into 
10410 61 20 6e 6f 6e 2d 42 4c 4f 42 20 76 61 6c 75 65  a non-BLOB value
10420 0a 77 69 6c 6c 20 62 65 20 64 69 66 66 65 72 65  .will be differe
10430 6e 74 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20  nt depending on 
10440 77 68 65 74 68 65 72 20 74 68 65 20 64 61 74 61  whether the data
10450 62 61 73 65 20 5b 65 6e 63 6f 64 69 6e 67 5d 20  base [encoding] 
10460 69 73 20 55 54 46 2d 38 2c 0a 55 54 46 2d 31 36  is UTF-8,.UTF-16
10470 62 65 2c 20 6f 72 20 55 54 46 2d 31 36 6c 65 2e  be, or UTF-16le.
10480 0a 0a 3c 68 33 3e 46 75 6e 63 74 69 6f 6e 73 3c  ..<h3>Functions<
10490 2f 68 33 3e 0a 3c 70 3e 5e 42 6f 74 68 20 5b 63  /h3>.<p>^Both [c
104a0 6f 72 65 66 75 6e 63 7c 73 69 6d 70 6c 65 5d 20  orefunc|simple] 
104b0 61 6e 64 20 5b 61 67 67 66 75 6e 63 7c 61 67 67  and [aggfunc|agg
104c0 72 65 67 61 74 65 5d 20 66 75 6e 63 74 69 6f 6e  regate] function
104d0 73 20 61 72 65 20 73 75 70 70 6f 72 74 65 64 2e  s are supported.
104e0 0a 28 46 6f 72 20 70 72 65 73 65 6e 74 61 74 69  .(For presentati
104f0 6f 6e 20 70 75 72 70 6f 73 65 73 2c 20 73 69 6d  on purposes, sim
10500 70 6c 65 20 66 75 6e 63 74 69 6f 6e 73 20 61 72  ple functions ar
10510 65 20 66 75 72 74 68 65 72 20 73 75 62 64 69 76  e further subdiv
10520 69 64 65 64 20 69 6e 74 6f 0a 5b 63 6f 72 65 66  ided into.[coref
10530 75 6e 63 20 7c 20 63 6f 72 65 20 66 75 6e 63 74  unc | core funct
10540 69 6f 6e 73 5d 20 61 6e 64 20 5b 64 61 74 65 66  ions] and [datef
10550 75 6e 63 20 7c 20 64 61 74 65 2d 74 69 6d 65 20  unc | date-time 
10560 66 75 6e 63 74 69 6f 6e 73 5d 2e 29 0a 5e 41 20  functions].).^A 
10570 73 69 6d 70 6c 65 20 66 75 6e 63 74 69 6f 6e 20  simple function 
10580 63 61 6e 20 62 65 20 75 73 65 64 20 69 6e 20 61  can be used in a
10590 6e 79 20 65 78 70 72 65 73 73 69 6f 6e 2e 20 20  ny expression.  
105a0 5e 53 69 6d 70 6c 65 20 66 75 6e 63 74 69 6f 6e  ^Simple function
105b0 73 20 72 65 74 75 72 6e 0a 61 20 72 65 73 75 6c  s return.a resul
105c0 74 20 69 6d 6d 65 64 69 61 74 65 6c 79 20 62 61  t immediately ba
105d0 73 65 64 20 6f 6e 20 74 68 65 69 72 20 69 6e 70  sed on their inp
105e0 75 74 73 2e 20 20 5e 41 67 67 72 65 67 61 74 65  uts.  ^Aggregate
105f0 20 66 75 6e 63 74 69 6f 6e 73 0a 6d 61 79 20 6f   functions.may o
10600 6e 6c 79 20 62 65 20 75 73 65 64 20 69 6e 20 61  nly be used in a
10610 20 53 45 4c 45 43 54 20 73 74 61 74 65 6d 65 6e   SELECT statemen
10620 74 2e 20 20 5e 41 67 67 72 65 67 61 74 65 20 66  t.  ^Aggregate f
10630 75 6e 63 74 69 6f 6e 73 20 63 6f 6d 70 75 74 65  unctions compute
10640 0a 74 68 65 69 72 20 72 65 73 75 6c 74 20 61 63  .their result ac
10650 72 6f 73 73 20 61 6c 6c 20 72 6f 77 73 20 6f 66  ross all rows of
10660 20 74 68 65 20 72 65 73 75 6c 74 20 73 65 74 2e   the result set.
10670 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23  </p>..<tcl>.####
10680 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10690 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
106a0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
106b0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
106c0 23 23 23 23 23 23 23 23 23 23 0a 53 65 63 74 69  ##########.Secti
106d0 6f 6e 20 7b 43 6f 72 65 20 46 75 6e 63 74 69 6f  on {Core Functio
106e0 6e 73 7d 20 63 6f 72 65 66 75 6e 63 20 7b 2a 63  ns} corefunc {*c
106f0 6f 72 65 66 75 6e 63 7d 0a 70 72 6f 63 20 66 75  orefunc}.proc fu
10700 6e 63 64 65 66 20 7b 73 79 6e 74 61 78 20 6b 65  ncdef {syntax ke
10710 79 77 6f 72 64 73 20 64 65 73 63 7d 20 7b 0a 20  ywords desc} {. 
10720 20 68 64 5f 70 75 74 73 20 7b 3c 74 72 3e 7d 0a   hd_puts {<tr>}.
10730 20 20 72 65 67 73 75 62 20 2d 61 6c 6c 20 7b 5c    regsub -all {\
10740 73 2b 7d 20 5b 73 74 72 69 6e 67 20 74 72 69 6d  s+} [string trim
10750 20 24 73 79 6e 74 61 78 5d 20 7b 3c 62 72 3e 3c   $syntax] {<br><
10760 2f 62 72 3e 7d 20 73 79 6e 74 61 78 0a 20 20 72  /br>} syntax.  r
10770 65 67 73 75 62 20 2d 61 6c 6c 20 7b 5c 28 28 5b  egsub -all {\(([
10780 5e 2a 29 5d 2b 29 5c 29 7d 20 24 73 79 6e 74 61  ^*)]+)\)} $synta
10790 78 20 7b 28 3c 69 3e 5c 31 3c 2f 69 3e 29 7d 20  x {(<i>\1</i>)} 
107a0 73 79 6e 74 61 78 0a 20 20 72 65 67 73 75 62 20  syntax.  regsub 
107b0 2d 61 6c 6c 20 7b 2c 7d 20 24 73 79 6e 74 61 78  -all {,} $syntax
107c0 20 7b 3c 2f 69 3e 2c 3c 69 3e 7d 20 73 79 6e 74   {</i>,<i>} synt
107d0 61 78 0a 20 20 72 65 67 73 75 62 20 2d 61 6c 6c  ax.  regsub -all
107e0 20 7b 3c 69 3e 5c 2e 5c 2e 5c 2e 3c 2f 69 3e 7d   {<i>\.\.\.</i>}
107f0 20 24 73 79 6e 74 61 78 20 7b 2e 2e 2e 7d 20 73   $syntax {...} s
10800 79 6e 74 61 78 0a 20 20 68 64 5f 70 75 74 73 20  yntax.  hd_puts 
10810 22 3c 74 64 20 76 61 6c 69 67 6e 3d 5c 22 74 6f  "<td valign=\"to
10820 70 5c 22 20 61 6c 69 67 6e 3d 5c 22 72 69 67 68  p\" align=\"righ
10830 74 5c 22 20 77 69 64 74 68 3d 5c 22 31 32 30 5c  t\" width=\"120\
10840 22 3e 22 0a 20 20 69 66 20 7b 5b 6c 6c 65 6e 67  ">".  if {[lleng
10850 74 68 20 24 6b 65 79 77 6f 72 64 73 5d 3d 3d 30  th $keywords]==0
10860 7d 20 7b 0a 20 20 20 20 72 65 67 65 78 70 20 7b  } {.    regexp {
10870 5b 61 2d 7a 5f 5d 2b 7d 20 24 73 79 6e 74 61 78  [a-z_]+} $syntax
10880 20 6e 61 6d 65 0a 20 20 20 20 68 64 5f 66 72 61   name.    hd_fra
10890 67 6d 65 6e 74 20 24 6e 61 6d 65 20 2a 24 6e 61  gment $name *$na
108a0 6d 65 20 22 24 7b 6e 61 6d 65 7d 28 29 20 53 51  me "${name}() SQ
108b0 4c 20 66 75 6e 63 74 69 6f 6e 22 0a 20 20 7d 20  L function".  } 
108c0 65 6c 73 65 20 7b 0a 20 20 20 20 73 65 74 20 66  else {.    set f
108d0 72 61 67 6e 61 6d 65 20 5b 6c 69 6e 64 65 78 20  ragname [lindex 
108e0 24 6b 65 79 77 6f 72 64 73 20 30 5d 0a 20 20 20  $keywords 0].   
108f0 20 72 65 67 73 75 62 20 2d 61 6c 6c 20 7b 5b 5e   regsub -all {[^
10900 61 2d 7a 5d 7d 20 24 66 72 61 67 6e 61 6d 65 20  a-z]} $fragname 
10910 7b 7d 20 66 72 61 67 6e 61 6d 65 0a 20 20 20 20  {} fragname.    
10920 68 64 5f 66 72 61 67 6d 65 6e 74 20 24 66 72 61  hd_fragment $fra
10930 67 6e 61 6d 65 0a 20 20 20 20 65 76 61 6c 20 68  gname.    eval h
10940 64 5f 6b 65 79 77 6f 72 64 73 20 5b 73 74 72 69  d_keywords [stri
10950 6e 67 20 6d 61 70 20 7b 5c 6e 20 7b 20 7d 7d 20  ng map {\n { }} 
10960 24 6b 65 79 77 6f 72 64 73 5d 0a 20 20 7d 0a 20  $keywords].  }. 
10970 20 68 64 5f 70 75 74 73 20 22 24 73 79 6e 74 61   hd_puts "$synta
10980 78 3c 2f 74 64 3e 22 0a 20 20 68 64 5f 70 75 74  x</td>".  hd_put
10990 73 20 7b 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  s {<td valign="t
109a0 6f 70 22 3e 7d 0a 20 20 68 64 5f 72 65 73 6f 6c  op">}.  hd_resol
109b0 76 65 20 24 64 65 73 63 0a 20 20 68 64 5f 70 75  ve $desc.  hd_pu
109c0 74 73 20 7b 3c 2f 74 64 3e 3c 2f 74 72 3e 7d 0a  ts {</td></tr>}.
109d0 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 65  }.</tcl>..<p>The
109e0 20 63 6f 72 65 20 66 75 6e 63 74 69 6f 6e 73 20   core functions 
109f0 73 68 6f 77 6e 20 62 65 6c 6f 77 20 61 72 65 20  shown below are 
10a00 61 76 61 69 6c 61 62 6c 65 20 62 79 20 64 65 66  available by def
10a10 61 75 6c 74 2e 20 0a 5b 64 61 74 65 66 75 6e 63  ault. .[datefunc
10a20 20 7c 20 44 61 74 65 20 26 61 6d 70 3b 20 54 69   | Date &amp; Ti
10a30 6d 65 20 66 75 6e 63 74 69 6f 6e 73 5d 20 61 6e  me functions] an
10a40 64 0a 5b 61 67 67 66 75 6e 63 20 7c 20 61 67 67  d.[aggfunc | agg
10a50 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 73  regate functions
10a60 5d 20 61 72 65 20 64 6f 63 75 6d 65 6e 74 65 64  ] are documented
10a70 20 73 65 70 61 72 61 74 65 6c 79 2e 20 20 41 6e   separately.  An
10a80 0a 61 70 70 6c 69 63 61 74 69 6f 6e 20 6d 61 79  .application may
10a90 20 64 65 66 69 6e 65 20 61 64 64 69 74 69 6f 6e   define addition
10aa0 61 6c 0a 66 75 6e 63 74 69 6f 6e 73 20 77 72 69  al.functions wri
10ab0 74 74 65 6e 20 69 6e 20 43 20 61 6e 64 20 61 64  tten in C and ad
10ac0 64 65 64 20 74 6f 20 74 68 65 20 64 61 74 61 62  ded to the datab
10ad0 61 73 65 20 65 6e 67 69 6e 65 20 75 73 69 6e 67  ase engine using
10ae0 0a 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 63 72  .the [sqlite3_cr
10af0 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 28 29 5d  eate_function()]
10b00 20 41 50 49 2e 3c 2f 70 3e 0a 0a 3c 74 61 62 6c   API.</p>..<tabl
10b10 65 20 62 6f 72 64 65 72 3d 30 20 63 65 6c 6c 70  e border=0 cellp
10b20 61 64 64 69 6e 67 3d 31 30 3e 0a 3c 74 63 6c 3e  adding=10>.<tcl>
10b30 0a 66 75 6e 63 64 65 66 20 7b 61 62 73 28 58 29  .funcdef {abs(X)
10b40 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20 61 62  } {} {.  ^The ab
10b50 73 28 58 29 20 66 75 6e 63 74 69 6f 6e 20 72 65  s(X) function re
10b60 74 75 72 6e 73 20 74 68 65 20 61 62 73 6f 6c 75  turns the absolu
10b70 74 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20  te value of the 
10b80 6e 75 6d 65 72 69 63 0a 20 20 61 72 67 75 6d 65  numeric.  argume
10b90 6e 74 20 58 2e 20 20 5e 41 62 73 28 58 29 20 72  nt X.  ^Abs(X) r
10ba0 65 74 75 72 6e 73 20 4e 55 4c 4c 20 69 66 20 58  eturns NULL if X
10bb0 20 69 73 20 4e 55 4c 4c 2e 20 0a 20 20 5e 28 41   is NULL. .  ^(A
10bc0 62 73 28 58 29 20 72 65 74 75 72 6e 20 30 2e 30  bs(X) return 0.0
10bd0 20 69 66 20 58 20 69 73 20 61 20 73 74 72 69 6e   if X is a strin
10be0 67 20 6f 72 20 62 6c 6f 62 0a 20 20 74 68 61 74  g or blob.  that
10bf0 20 63 61 6e 6e 6f 74 20 62 65 20 63 6f 6e 76 65   cannot be conve
10c00 72 74 65 64 20 74 6f 20 61 20 6e 75 6d 65 72 69  rted to a numeri
10c10 63 20 76 61 6c 75 65 2e 29 5e 20 20 5e 49 66 20  c value.)^  ^If 
10c20 58 20 69 73 20 74 68 65 20 0a 20 20 69 6e 74 65  X is the .  inte
10c30 67 65 72 20 2d 39 32 32 33 33 37 32 30 33 36 38  ger -92233720368
10c40 35 34 37 37 35 38 30 37 20 74 68 65 6e 20 61 62  54775807 then ab
10c50 73 28 58 29 20 74 68 72 6f 77 73 20 61 6e 20 69  s(X) throws an i
10c60 6e 74 65 67 65 72 20 6f 76 65 72 66 6c 6f 77 0a  nteger overflow.
10c70 20 20 65 72 72 6f 72 20 73 69 6e 63 65 20 74 68    error since th
10c80 65 72 65 20 69 73 20 6e 6f 20 65 71 75 69 76 61  ere is no equiva
10c90 6c 65 6e 74 20 70 6f 73 69 74 69 76 65 20 36 34  lent positive 64
10ca0 2d 62 69 74 20 74 77 6f 20 63 6f 6d 70 6c 65 6d  -bit two complem
10cb0 65 6e 74 20 76 61 6c 75 65 2e 0a 7d 0a 0a 66 75  ent value..}..fu
10cc0 6e 63 64 65 66 20 7b 63 68 61 6e 67 65 73 28 29  ncdef {changes()
10cd0 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20 63 68  } {} {.  ^The ch
10ce0 61 6e 67 65 73 28 29 20 66 75 6e 63 74 69 6f 6e  anges() function
10cf0 20 72 65 74 75 72 6e 73 20 74 68 65 20 6e 75 6d   returns the num
10d00 62 65 72 20 6f 66 20 64 61 74 61 62 61 73 65 20  ber of database 
10d10 72 6f 77 73 20 74 68 61 74 20 77 65 72 65 20 63  rows that were c
10d20 68 61 6e 67 65 64 0a 20 20 6f 72 20 69 6e 73 65  hanged.  or inse
10d30 72 74 65 64 20 6f 72 20 64 65 6c 65 74 65 64 20  rted or deleted 
10d40 62 79 20 74 68 65 20 6d 6f 73 74 20 72 65 63 65  by the most rece
10d50 6e 74 6c 79 20 63 6f 6d 70 6c 65 74 65 64 20 49  ntly completed I
10d60 4e 53 45 52 54 2c 20 44 45 4c 45 54 45 2c 0a 20  NSERT, DELETE,. 
10d70 20 6f 72 20 55 50 44 41 54 45 20 73 74 61 74 65   or UPDATE state
10d80 6d 65 6e 74 2c 20 65 78 63 6c 75 73 69 76 65 20  ment, exclusive 
10d90 6f 66 20 73 74 61 74 65 6d 65 6e 74 73 20 69 6e  of statements in
10da0 20 6c 6f 77 65 72 2d 6c 65 76 65 6c 20 74 72 69   lower-level tri
10db0 67 67 65 72 73 2e 0a 20 20 5e 54 68 65 20 63 68  ggers..  ^The ch
10dc0 61 6e 67 65 73 28 29 20 53 51 4c 20 66 75 6e 63  anges() SQL func
10dd0 74 69 6f 6e 20 69 73 20 61 20 77 72 61 70 70 65  tion is a wrappe
10de0 72 20 61 72 6f 75 6e 64 20 74 68 65 20 5b 73 71  r around the [sq
10df0 6c 69 74 65 33 5f 63 68 61 6e 67 65 73 28 29 5d  lite3_changes()]
10e00 0a 20 20 43 2f 43 2b 2b 20 66 75 6e 63 74 69 6f  .  C/C++ functio
10e10 6e 20 61 6e 64 20 68 65 6e 63 65 20 66 6f 6c 6c  n and hence foll
10e20 6f 77 73 20 74 68 65 20 73 61 6d 65 20 72 75 6c  ows the same rul
10e30 65 73 20 66 6f 72 20 63 6f 75 6e 74 69 6e 67 20  es for counting 
10e40 63 68 61 6e 67 65 73 2e 0a 7d 0a 0a 66 75 6e 63  changes..}..func
10e50 64 65 66 20 7b 63 6f 61 6c 65 73 63 65 28 58 2c  def {coalesce(X,
10e60 59 2c 2e 2e 2e 29 7d 20 7b 7d 20 7b 0a 20 20 5e  Y,...)} {} {.  ^
10e70 54 68 65 20 63 6f 61 6c 65 73 63 65 28 29 20 66  The coalesce() f
10e80 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20  unction returns 
10e90 61 20 63 6f 70 79 20 6f 66 20 69 74 73 20 66 69  a copy of its fi
10ea0 72 73 74 20 6e 6f 6e 2d 4e 55 4c 4c 20 61 72 67  rst non-NULL arg
10eb0 75 6d 65 6e 74 2c 20 6f 72 0a 20 20 4e 55 4c 4c  ument, or.  NULL
10ec0 20 69 66 20 61 6c 6c 20 61 72 67 75 6d 65 6e 74   if all argument
10ed0 73 20 61 72 65 20 4e 55 4c 4c 2e 20 20 5e 43 6f  s are NULL.  ^Co
10ee0 61 6c 65 73 63 65 28 29 20 6d 75 73 74 20 62 65  alesce() must be
10ef0 20 61 74 20 6c 65 61 73 74 20 0a 20 20 32 20 61   at least .  2 a
10f00 72 67 75 6d 65 6e 74 73 2e 0a 7d 0a 0a 66 75 6e  rguments..}..fun
10f10 63 64 65 66 20 7b 67 6c 6f 62 28 58 2c 59 29 7d  cdef {glob(X,Y)}
10f20 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20 67 6c 6f   {} {.  ^The glo
10f30 62 28 58 2c 59 29 20 66 75 6e 63 74 69 6f 6e 20  b(X,Y) function 
10f40 69 73 20 65 71 75 69 76 61 6c 65 6e 74 20 74 6f  is equivalent to
10f50 20 74 68 65 0a 20 20 65 78 70 72 65 73 73 69 6f   the.  expressio
10f60 6e 20 22 3c 62 3e 59 20 47 4c 4f 42 20 58 3c 2f  n "<b>Y GLOB X</
10f70 62 3e 22 2e 0a 20 20 4e 6f 74 65 20 74 68 61 74  b>"..  Note that
10f80 20 74 68 65 20 58 20 61 6e 64 20 59 20 61 72 67   the X and Y arg
10f90 75 6d 65 6e 74 73 20 61 72 65 20 72 65 76 65 72  uments are rever
10fa0 73 65 64 20 69 6e 20 74 68 65 20 67 6c 6f 62 28  sed in the glob(
10fb0 29 20 66 75 6e 63 74 69 6f 6e 0a 20 20 72 65 6c  ) function.  rel
10fc0 61 74 69 76 65 20 74 6f 20 74 68 65 20 69 6e 66  ative to the inf
10fd0 69 78 20 5b 47 4c 4f 42 5d 20 6f 70 65 72 61 74  ix [GLOB] operat
10fe0 6f 72 2e 0a 20 20 5e 49 66 20 74 68 65 20 5b 73  or..  ^If the [s
10ff0 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 66 75  qlite3_create_fu
11000 6e 63 74 69 6f 6e 28 29 5d 20 69 6e 74 65 72 66  nction()] interf
11010 61 63 65 20 69 73 20 75 73 65 64 20 74 6f 0a 20  ace is used to. 
11020 20 6f 76 65 72 72 69 64 65 20 74 68 65 20 67 6c   override the gl
11030 6f 62 28 58 2c 59 29 20 66 75 6e 63 74 69 6f 6e  ob(X,Y) function
11040 20 77 69 74 68 20 61 6e 20 61 6c 74 65 72 6e 61   with an alterna
11050 74 69 76 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74  tive implementat
11060 69 6f 6e 20 74 68 65 6e 0a 20 20 74 68 65 20 5b  ion then.  the [
11070 47 4c 4f 42 5d 20 6f 70 65 72 61 74 6f 72 20 77  GLOB] operator w
11080 69 6c 6c 20 69 6e 76 6f 6b 65 20 74 68 65 20 61  ill invoke the a
11090 6c 74 65 72 6e 61 74 69 76 65 20 69 6d 70 6c 65  lternative imple
110a0 6d 65 6e 74 61 74 69 6f 6e 2e 0a 7d 0a 0a 66 75  mentation..}..fu
110b0 6e 63 64 65 66 20 7b 69 66 6e 75 6c 6c 28 58 2c  ncdef {ifnull(X,
110c0 59 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20  Y)} {} {.  ^The 
110d0 69 66 6e 75 6c 6c 28 29 20 66 75 6e 63 74 69 6f  ifnull() functio
110e0 6e 20 72 65 74 75 72 6e 73 20 61 20 63 6f 70 79  n returns a copy
110f0 20 6f 66 20 69 74 73 20 66 69 72 73 74 20 6e 6f   of its first no
11100 6e 2d 4e 55 4c 4c 20 61 72 67 75 6d 65 6e 74 2c  n-NULL argument,
11110 20 6f 72 0a 20 20 4e 55 4c 4c 20 69 66 20 62 6f   or.  NULL if bo
11120 74 68 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65  th arguments are
11130 20 4e 55 4c 4c 2e 20 20 5e 49 66 6e 75 6c 6c 28   NULL.  ^Ifnull(
11140 29 20 6d 75 73 74 20 68 61 76 65 20 65 78 61 63  ) must have exac
11150 74 6c 79 20 32 20 61 72 67 75 6d 65 6e 74 73 2e  tly 2 arguments.
11160 0a 20 20 5e 54 68 65 20 69 66 6e 75 6c 6c 28 29  .  ^The ifnull()
11170 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 65 71 75   function is equ
11180 69 76 61 6c 65 6e 74 20 74 6f 20 5b 63 6f 61 6c  ivalent to [coal
11190 65 73 63 65 28 29 5d 20 77 69 74 68 20 74 77 6f  esce()] with two
111a0 20 61 72 67 75 6d 65 6e 74 73 2e 0a 7d 0a 0a 66   arguments..}..f
111b0 75 6e 63 64 65 66 20 7b 68 65 78 28 58 29 7d 20  uncdef {hex(X)} 
111c0 7b 7d 20 7b 0a 20 20 5e 54 68 65 20 68 65 78 28  {} {.  ^The hex(
111d0 29 20 66 75 6e 63 74 69 6f 6e 20 69 6e 74 65 72  ) function inter
111e0 70 72 65 74 73 20 69 74 73 20 61 72 67 75 6d 65  prets its argume
111f0 6e 74 20 61 73 20 61 20 42 4c 4f 42 20 61 6e 64  nt as a BLOB and
11200 20 72 65 74 75 72 6e 73 0a 20 20 61 20 73 74 72   returns.  a str
11210 69 6e 67 20 77 68 69 63 68 20 69 73 20 74 68 65  ing which is the
11220 20 75 70 70 65 72 2d 63 61 73 65 20 68 65 78 61   upper-case hexa
11230 64 65 63 69 6d 61 6c 20 72 65 6e 64 65 72 69 6e  decimal renderin
11240 67 20 6f 66 20 74 68 65 20 63 6f 6e 74 65 6e 74  g of the content
11250 20 6f 66 0a 20 20 74 68 61 74 20 62 6c 6f 62 2e   of.  that blob.
11260 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 6c 61 73  .}..funcdef {las
11270 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 28 29  t_insert_rowid()
11280 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20 6c 61  } {} {.  ^The la
11290 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 28  st_insert_rowid(
112a0 29 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72  ) function retur
112b0 6e 73 20 74 68 65 20 5b 52 4f 57 49 44 5d 0a 20  ns the [ROWID]. 
112c0 20 6f 66 20 74 68 65 20 6c 61 73 74 20 72 6f 77   of the last row
112d0 20 69 6e 73 65 72 74 20 66 72 6f 6d 20 74 68 65   insert from the
112e0 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
112f0 74 69 6f 6e 20 77 68 69 63 68 20 69 6e 76 6f 6b  tion which invok
11300 65 64 20 74 68 65 0a 20 20 66 75 6e 63 74 69 6f  ed the.  functio
11310 6e 2e 0a 20 20 5e 54 68 65 20 6c 61 73 74 5f 69  n..  ^The last_i
11320 6e 73 65 72 74 5f 72 6f 77 69 64 28 29 20 53 51  nsert_rowid() SQ
11330 4c 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 61 20  L function is a 
11340 77 72 61 70 70 65 72 20 61 72 6f 75 6e 64 20 74  wrapper around t
11350 68 65 0a 20 20 5b 73 71 6c 69 74 65 33 5f 6c 61  he.  [sqlite3_la
11360 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 28  st_insert_rowid(
11370 29 5d 20 43 2f 43 2b 2b 20 69 6e 74 65 72 66 61  )] C/C++ interfa
11380 63 65 20 66 75 6e 63 74 69 6f 6e 2e 0a 7d 0a 0a  ce function..}..
11390 66 75 6e 63 64 65 66 20 7b 6c 65 6e 67 74 68 28  funcdef {length(
113a0 58 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20  X)} {} {.  ^The 
113b0 6c 65 6e 67 74 68 28 58 29 20 66 75 6e 63 74 69  length(X) functi
113c0 6f 6e 20 72 65 74 75 72 6e 73 20 74 68 65 20 6c  on returns the l
113d0 65 6e 67 74 68 20 6f 66 20 58 20 69 6e 20 0a 20  ength of X in . 
113e0 20 63 68 61 72 61 63 74 65 72 73 20 69 66 20 58   characters if X
113f0 20 69 73 20 61 20 73 74 72 69 6e 67 2c 20 6f 72   is a string, or
11400 20 69 6e 20 62 79 74 65 73 20 69 66 20 58 20 69   in bytes if X i
11410 73 20 61 20 62 6c 6f 62 2e 0a 20 20 5e 49 66 20  s a blob..  ^If 
11420 58 20 69 73 20 4e 55 4c 4c 20 74 68 65 6e 20 6c  X is NULL then l
11430 65 6e 67 74 68 28 58 29 20 69 73 20 4e 55 4c 4c  ength(X) is NULL
11440 2e 0a 20 20 5e 49 66 20 58 20 69 73 20 6e 75 6d  ..  ^If X is num
11450 65 72 69 63 20 74 68 65 6e 20 6c 65 6e 67 74 68  eric then length
11460 28 58 29 20 72 65 74 75 72 6e 73 20 74 68 65 20  (X) returns the 
11470 6c 65 6e 67 74 68 20 6f 66 20 61 20 73 74 72 69  length of a stri
11480 6e 67 0a 20 20 72 65 70 72 65 73 65 6e 74 61 74  ng.  representat
11490 69 6f 6e 20 6f 66 20 58 2e 0a 7d 0a 0a 66 75 6e  ion of X..}..fun
114a0 63 64 65 66 20 7b 6c 69 6b 65 28 58 2c 59 29 20  cdef {like(X,Y) 
114b0 6c 69 6b 65 28 58 2c 59 2c 5a 29 7d 20 7b 7d 20  like(X,Y,Z)} {} 
114c0 7b 0a 20 20 5e 54 68 65 20 6c 69 6b 65 28 29 20  {.  ^The like() 
114d0 66 75 6e 63 74 69 6f 6e 20 69 73 20 75 73 65 64  function is used
114e0 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 74 68   to implement th
114f0 65 0a 20 20 22 3c 62 3e 59 20 4c 49 4b 45 20 58  e.  "<b>Y LIKE X
11500 20 26 23 39 31 3b 45 53 43 41 50 45 20 5a 26 23   &#91;ESCAPE Z&#
11510 39 33 3b 3c 2f 62 3e 22 20 65 78 70 72 65 73 73  93;</b>" express
11520 69 6f 6e 2e 20 0a 20 20 5e 49 66 20 74 68 65 20  ion. .  ^If the 
11530 6f 70 74 69 6f 6e 61 6c 20 45 53 43 41 50 45 20  optional ESCAPE 
11540 63 6c 61 75 73 65 20 69 73 20 70 72 65 73 65 6e  clause is presen
11550 74 2c 20 74 68 65 6e 20 74 68 65 0a 20 20 6c 69  t, then the.  li
11560 6b 65 28 29 20 66 75 6e 63 74 69 6f 6e 20 69 73  ke() function is
11570 20 69 6e 76 6f 6b 65 64 20 77 69 74 68 20 74 68   invoked with th
11580 72 65 65 20 61 72 67 75 6d 65 6e 74 73 2e 20 20  ree arguments.  
11590 5e 4f 74 68 65 72 77 69 73 65 2c 20 69 74 20 69  ^Otherwise, it i
115a0 73 0a 20 20 69 6e 76 6f 6b 65 64 20 77 69 74 68  s.  invoked with
115b0 20 74 77 6f 20 61 72 67 75 6d 65 6e 74 73 20 6f   two arguments o
115c0 6e 6c 79 2e 20 4e 6f 74 65 20 74 68 61 74 20 74  nly. Note that t
115d0 68 65 20 58 20 61 6e 64 20 59 20 70 61 72 61 6d  he X and Y param
115e0 65 74 65 72 73 20 61 72 65 0a 20 20 72 65 76 65  eters are.  reve
115f0 72 73 65 64 20 69 6e 20 74 68 65 20 6c 69 6b 65  rsed in the like
11600 28 29 20 66 75 6e 63 74 69 6f 6e 20 72 65 6c 61  () function rela
11610 74 69 76 65 20 74 6f 20 74 68 65 20 69 6e 66 69  tive to the infi
11620 78 20 5b 4c 49 4b 45 5d 20 6f 70 65 72 61 74 6f  x [LIKE] operato
11630 72 2e 0a 20 20 5e 54 68 65 20 5b 73 71 6c 69 74  r..  ^The [sqlit
11640 65 33 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69  e3_create_functi
11650 6f 6e 28 29 5d 20 69 6e 74 65 72 66 61 63 65 20  on()] interface 
11660 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 6f  can be used to o
11670 76 65 72 72 69 64 65 20 74 68 65 0a 20 20 6c 69  verride the.  li
11680 6b 65 28 29 20 66 75 6e 63 74 69 6f 6e 20 61 6e  ke() function an
11690 64 20 74 68 65 72 65 62 79 20 63 68 61 6e 67 65  d thereby change
116a0 20 74 68 65 20 6f 70 65 72 61 74 69 6f 6e 20 6f   the operation o
116b0 66 20 74 68 65 0a 20 20 5b 4c 49 4b 45 5d 20 6f  f the.  [LIKE] o
116c0 70 65 72 61 74 6f 72 2e 20 20 57 68 65 6e 20 6f  perator.  When o
116d0 76 65 72 72 69 64 69 6e 67 20 74 68 65 20 6c 69  verriding the li
116e0 6b 65 28 29 20 66 75 6e 63 74 69 6f 6e 2c 20 69  ke() function, i
116f0 74 20 6d 61 79 20 62 65 20 69 6d 70 6f 72 74 61  t may be importa
11700 6e 74 0a 20 20 74 6f 20 6f 76 65 72 72 69 64 65  nt.  to override
11710 20 62 6f 74 68 20 74 68 65 20 74 77 6f 20 61 6e   both the two an
11720 64 20 74 68 72 65 65 20 61 72 67 75 6d 65 6e 74  d three argument
11730 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 74 68 65   versions of the
11740 20 6c 69 6b 65 28 29 20 0a 20 20 66 75 6e 63 74   like() .  funct
11750 69 6f 6e 2e 20 4f 74 68 65 72 77 69 73 65 2c 20  ion. Otherwise, 
11760 64 69 66 66 65 72 65 6e 74 20 63 6f 64 65 20 6d  different code m
11770 61 79 20 62 65 20 63 61 6c 6c 65 64 20 74 6f 20  ay be called to 
11780 69 6d 70 6c 65 6d 65 6e 74 20 74 68 65 0a 20 20  implement the.  
11790 5b 4c 49 4b 45 5d 20 6f 70 65 72 61 74 6f 72 20  [LIKE] operator 
117a0 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 77 68 65  depending on whe
117b0 74 68 65 72 20 6f 72 20 6e 6f 74 20 61 6e 20 45  ther or not an E
117c0 53 43 41 50 45 20 63 6c 61 75 73 65 20 77 61 73  SCAPE clause was
117d0 20 0a 20 20 73 70 65 63 69 66 69 65 64 2e 0a 7d   .  specified..}
117e0 0a 0a 66 75 6e 63 64 65 66 20 7b 6c 6f 61 64 5f  ..funcdef {load_
117f0 65 78 74 65 6e 73 69 6f 6e 28 58 29 20 6c 6f 61  extension(X) loa
11800 64 5f 65 78 74 65 6e 73 69 6f 6e 28 58 2c 59 29  d_extension(X,Y)
11810 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20 6c 6f  } {} {.  ^The lo
11820 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28 58 2c 59  ad_extension(X,Y
11830 29 20 66 75 6e 63 74 69 6f 6e 20 6c 6f 61 64 73  ) function loads
11840 20 53 51 4c 69 74 65 20 65 78 74 65 6e 73 69 6f   SQLite extensio
11850 6e 73 20 6f 75 74 20 6f 66 20 74 68 65 20 73 68  ns out of the sh
11860 61 72 65 64 0a 20 20 6c 69 62 72 61 72 79 20 66  ared.  library f
11870 69 6c 65 20 6e 61 6d 65 64 20 58 20 75 73 69 6e  ile named X usin
11880 67 20 74 68 65 20 65 6e 74 72 79 20 70 6f 69 6e  g the entry poin
11890 74 20 59 2e 20 20 5e 54 68 65 20 72 65 73 75 6c  t Y.  ^The resul
118a0 74 20 6f 66 20 6c 6f 61 64 5f 65 78 74 65 6e 73  t of load_extens
118b0 69 6f 6e 28 29 0a 20 20 69 73 20 61 6c 77 61 79  ion().  is alway
118c0 73 20 61 20 4e 55 4c 4c 2e 20 20 5e 49 66 20 59  s a NULL.  ^If Y
118d0 20 69 73 20 6f 6d 69 74 74 65 64 20 74 68 65 6e   is omitted then
118e0 20 74 68 65 20 64 65 66 61 75 6c 74 20 65 6e 74   the default ent
118f0 72 79 20 70 6f 69 6e 74 0a 20 20 6f 66 20 3c 62  ry point.  of <b
11900 3e 73 71 6c 69 74 65 33 5f 65 78 74 65 6e 73 69  >sqlite3_extensi
11910 6f 6e 5f 69 6e 69 74 3c 2f 62 3e 20 69 73 20 75  on_init</b> is u
11920 73 65 64 2e 20 20 5e 54 68 65 20 6c 6f 61 64 5f  sed.  ^The load_
11930 65 78 74 65 6e 73 69 6f 6e 28 29 20 66 75 6e 63  extension() func
11940 74 69 6f 6e 0a 20 20 72 61 69 73 65 73 20 61 6e  tion.  raises an
11950 20 65 78 63 65 70 74 69 6f 6e 20 69 66 20 74 68   exception if th
11960 65 20 65 78 74 65 6e 73 69 6f 6e 20 66 61 69 6c  e extension fail
11970 73 20 74 6f 20 6c 6f 61 64 20 6f 72 20 69 6e 69  s to load or ini
11980 74 69 61 6c 69 7a 65 20 63 6f 72 72 65 63 74 6c  tialize correctl
11990 79 2e 0a 0a 20 20 3c 70 3e 5e 54 68 65 20 6c 6f  y...  <p>^The lo
119a0 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28 29 20 66  ad_extension() f
119b0 75 6e 63 74 69 6f 6e 20 77 69 6c 6c 20 66 61 69  unction will fai
119c0 6c 20 69 66 20 74 68 65 20 65 78 74 65 6e 73 69  l if the extensi
119d0 6f 6e 20 61 74 74 65 6d 70 74 73 20 74 6f 20 0a  on attempts to .
119e0 20 20 6d 6f 64 69 66 79 20 6f 72 20 64 65 6c 65    modify or dele
119f0 74 65 20 61 20 53 51 4c 20 66 75 6e 63 74 69 6f  te a SQL functio
11a00 6e 20 6f 72 20 63 6f 6c 6c 61 74 69 6e 67 20 73  n or collating s
11a10 65 71 75 65 6e 63 65 2e 20 20 5e 54 68 65 0a 20  equence.  ^The. 
11a20 20 65 78 74 65 6e 73 69 6f 6e 20 63 61 6e 20 61   extension can a
11a30 64 64 20 6e 65 77 20 66 75 6e 63 74 69 6f 6e 73  dd new functions
11a40 20 6f 72 20 63 6f 6c 6c 61 74 69 6e 67 20 73 65   or collating se
11a50 71 75 65 6e 63 65 73 2c 20 62 75 74 20 63 61 6e  quences, but can
11a60 6e 6f 74 0a 20 20 6d 6f 64 69 66 79 20 6f 72 20  not.  modify or 
11a70 64 65 6c 65 74 65 20 65 78 69 73 74 69 6e 67 20  delete existing 
11a80 66 75 6e 63 74 69 6f 6e 73 20 6f 72 20 63 6f 6c  functions or col
11a90 6c 61 74 69 6e 67 20 73 65 71 75 65 6e 63 65 73  lating sequences
11aa0 20 62 65 63 61 75 73 65 0a 20 20 74 68 6f 73 65   because.  those
11ab0 20 66 75 6e 63 74 69 6f 6e 73 20 61 6e 64 2f 6f   functions and/o
11ac0 72 20 63 6f 6c 6c 61 74 69 6e 67 20 73 65 71 75  r collating sequ
11ad0 65 6e 63 65 73 20 6d 69 67 68 74 20 62 65 20 75  ences might be u
11ae0 73 65 64 20 65 6c 73 65 77 68 65 72 65 0a 20 20  sed elsewhere.  
11af0 69 6e 20 74 68 65 20 63 75 72 72 65 6e 74 6c 79  in the currently
11b00 20 72 75 6e 6e 69 6e 67 20 53 51 4c 20 73 74 61   running SQL sta
11b10 74 65 6d 65 6e 74 2e 20 20 54 6f 20 6c 6f 61 64  tement.  To load
11b20 20 61 6e 20 65 78 74 65 6e 73 69 6f 6e 20 74 68   an extension th
11b30 61 74 0a 20 20 63 68 61 6e 67 65 73 20 6f 72 20  at.  changes or 
11b40 64 65 6c 65 74 65 73 20 66 75 6e 63 74 69 6f 6e  deletes function
11b50 73 20 6f 72 20 63 6f 6c 6c 61 74 69 6e 67 20 73  s or collating s
11b60 65 71 75 65 6e 63 65 73 2c 20 75 73 65 20 74 68  equences, use th
11b70 65 0a 20 20 5b 73 71 6c 69 74 65 33 5f 6c 6f 61  e.  [sqlite3_loa
11b80 64 5f 65 78 74 65 6e 73 69 6f 6e 28 29 5d 20 43  d_extension()] C
11b90 2d 6c 61 6e 67 75 61 67 65 20 41 50 49 2e 3c 2f  -language API.</
11ba0 70 3e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 6c  p>.}..funcdef {l
11bb0 6f 77 65 72 28 58 29 7d 20 7b 7d 20 7b 0a 20 20  ower(X)} {} {.  
11bc0 5e 54 68 65 20 6c 6f 77 65 72 28 58 29 20 66 75  ^The lower(X) fu
11bd0 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 61  nction returns a
11be0 20 63 6f 70 79 20 6f 66 20 73 74 72 69 6e 67 20   copy of string 
11bf0 58 20 77 69 74 68 20 61 6c 6c 20 41 53 43 49 49  X with all ASCII
11c00 20 63 68 61 72 61 63 74 65 72 73 0a 20 20 63 6f   characters.  co
11c10 6e 76 65 72 74 65 64 20 74 6f 20 6c 6f 77 65 72  nverted to lower
11c20 20 63 61 73 65 2e 20 20 5e 54 68 65 20 64 65 66   case.  ^The def
11c30 61 75 6c 74 20 62 75 69 6c 74 2d 69 6e 20 6c 6f  ault built-in lo
11c40 77 65 72 28 29 20 66 75 6e 63 74 69 6f 6e 20 77  wer() function w
11c50 6f 72 6b 73 0a 20 20 66 6f 72 20 41 53 43 49 49  orks.  for ASCII
11c60 20 63 68 61 72 61 63 74 65 72 73 20 6f 6e 6c 79   characters only
11c70 2e 20 20 54 6f 20 64 6f 20 63 61 73 65 20 63 6f  .  To do case co
11c80 6e 76 65 72 73 69 6f 6e 73 20 6f 6e 20 6e 6f 6e  nversions on non
11c90 2d 41 53 43 49 49 0a 20 20 63 68 61 72 61 63 74  -ASCII.  charact
11ca0 65 72 73 2c 20 6c 6f 61 64 20 74 68 65 20 49 43  ers, load the IC
11cb0 55 20 65 78 74 65 6e 73 69 6f 6e 2e 0a 7d 0a 0a  U extension..}..
11cc0 66 75 6e 63 64 65 66 20 7b 6c 74 72 69 6d 28 58  funcdef {ltrim(X
11cd0 29 20 6c 74 72 69 6d 28 58 2c 59 29 7d 20 7b 7d  ) ltrim(X,Y)} {}
11ce0 20 7b 0a 20 20 5e 54 68 65 20 6c 74 72 69 6d 28   {.  ^The ltrim(
11cf0 58 2c 59 29 20 66 75 6e 63 74 69 6f 6e 20 72 65  X,Y) function re
11d00 74 75 72 6e 73 20 61 20 73 74 72 69 6e 67 20 66  turns a string f
11d10 6f 72 6d 65 64 20 62 79 20 72 65 6d 6f 76 69 6e  ormed by removin
11d20 67 20 61 6e 79 20 61 6e 64 20 61 6c 6c 0a 20 20  g any and all.  
11d30 63 68 61 72 61 63 74 65 72 73 20 74 68 61 74 20  characters that 
11d40 61 70 70 65 61 72 20 69 6e 20 59 20 66 72 6f 6d  appear in Y from
11d50 20 74 68 65 20 6c 65 66 74 20 73 69 64 65 20 6f   the left side o
11d60 66 20 58 2e 0a 20 20 5e 49 66 20 74 68 65 20 59  f X..  ^If the Y
11d70 20 61 72 67 75 6d 65 6e 74 20 69 73 20 6f 6d 69   argument is omi
11d80 74 74 65 64 2c 20 6c 74 72 69 6d 28 58 29 20 72  tted, ltrim(X) r
11d90 65 6d 6f 76 65 73 20 73 70 61 63 65 73 20 66 72  emoves spaces fr
11da0 6f 6d 20 74 68 65 20 6c 65 66 74 20 73 69 64 65  om the left side
11db0 0a 20 20 6f 66 20 58 2e 0a 7d 0a 0a 66 75 6e 63  .  of X..}..func
11dc0 64 65 66 20 7b 6d 61 78 28 58 2c 59 2c 2e 2e 2e  def {max(X,Y,...
11dd0 29 7d 20 7b 2a 6d 61 78 43 6f 72 65 46 75 6e 63  )} {*maxCoreFunc
11de0 20 2a 6d 61 78 20 7b 6d 61 78 28 29 20 53 51 4c   *max {max() SQL
11df0 20 66 75 6e 63 74 69 6f 6e 7d 7d 20 7b 0a 20 20   function}} {.  
11e00 5e 54 68 65 20 6d 75 6c 74 69 2d 61 72 67 75 6d  ^The multi-argum
11e10 65 6e 74 20 6d 61 78 28 29 20 66 75 6e 63 74 69  ent max() functi
11e20 6f 6e 20 72 65 74 75 72 6e 73 20 74 68 65 20 61  on returns the a
11e30 72 67 75 6d 65 6e 74 20 77 69 74 68 20 74 68 65  rgument with the
11e40 20 0a 20 20 6d 61 78 69 6d 75 6d 20 76 61 6c 75   .  maximum valu
11e50 65 2c 20 6f 72 20 72 65 74 75 72 6e 20 4e 55 4c  e, or return NUL
11e60 4c 20 69 66 20 61 6e 79 20 61 72 67 75 6d 65 6e  L if any argumen
11e70 74 20 69 73 20 4e 55 4c 4c 2e 20 0a 20 20 5e 54  t is NULL. .  ^T
11e80 68 65 20 6d 75 6c 74 69 2d 61 72 67 75 6d 65 6e  he multi-argumen
11e90 74 20 6d 61 78 28 29 20 66 75 6e 63 74 69 6f 6e  t max() function
11ea0 20 73 65 61 72 63 68 65 73 20 69 74 73 20 61 72   searches its ar
11eb0 67 75 6d 65 6e 74 73 20 66 72 6f 6d 20 6c 65 66  guments from lef
11ec0 74 20 74 6f 20 72 69 67 68 74 0a 20 20 66 6f 72  t to right.  for
11ed0 20 61 6e 20 61 72 67 75 6d 65 6e 74 20 74 68 61   an argument tha
11ee0 74 20 64 65 66 69 6e 65 73 20 61 20 63 6f 6c 6c  t defines a coll
11ef0 61 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e 20 61  ating function a
11f00 6e 64 20 75 73 65 73 20 74 68 61 74 20 63 6f 6c  nd uses that col
11f10 6c 61 74 69 6e 67 0a 20 20 66 75 6e 63 74 69 6f  lating.  functio
11f20 6e 20 66 6f 72 20 61 6c 6c 20 73 74 72 69 6e 67  n for all string
11f30 20 63 6f 6d 70 61 72 69 73 6f 6e 73 2e 20 20 5e   comparisons.  ^
11f40 49 66 20 6e 6f 6e 65 20 6f 66 20 74 68 65 20 61  If none of the a
11f50 72 67 75 6d 65 6e 74 73 20 74 6f 20 6d 61 78 28  rguments to max(
11f60 29 0a 20 20 64 65 66 69 6e 65 20 61 20 63 6f 6c  ).  define a col
11f70 6c 61 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e 2c  lating function,
11f80 20 74 68 65 6e 20 74 68 65 20 42 49 4e 41 52 59   then the BINARY
11f90 20 63 6f 6c 6c 61 74 69 6e 67 20 66 75 6e 63 74   collating funct
11fa0 69 6f 6e 20 69 73 20 75 73 65 64 2e 0a 20 20 4e  ion is used..  N
11fb0 6f 74 65 20 74 68 61 74 20 3c 62 3e 6d 61 78 28  ote that <b>max(
11fc0 29 3c 2f 62 3e 20 69 73 20 61 20 73 69 6d 70 6c  )</b> is a simpl
11fd0 65 20 66 75 6e 63 74 69 6f 6e 20 77 68 65 6e 0a  e function when.
11fe0 20 20 69 74 20 68 61 73 20 32 20 6f 72 20 6d 6f    it has 2 or mo
11ff0 72 65 20 61 72 67 75 6d 65 6e 74 73 20 62 75 74  re arguments but
12000 20 6f 70 65 72 61 74 65 73 20 61 73 20 61 6e 0a   operates as an.
12010 20 20 5b 6d 69 6e 41 67 67 46 75 6e 63 20 7c 20    [minAggFunc | 
12020 61 67 67 72 65 67 61 74 65 20 66 75 6e 63 74 69  aggregate functi
12030 6f 6e 5d 20 69 66 20 67 69 76 65 6e 20 6f 6e 6c  on] if given onl
12040 79 20 61 20 73 69 6e 67 6c 65 20 61 72 67 75 6d  y a single argum
12050 65 6e 74 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20  ent..}..funcdef 
12060 7b 6d 69 6e 28 58 2c 59 2c 2e 2e 2e 29 7d 20 7b  {min(X,Y,...)} {
12070 2a 6d 69 6e 43 6f 72 65 46 75 6e 63 20 2a 6d 69  *minCoreFunc *mi
12080 6e 20 7b 6d 69 6e 28 29 20 53 51 4c 20 66 75 6e  n {min() SQL fun
12090 63 74 69 6f 6e 7d 7d 20 7b 0a 20 20 5e 54 68 65  ction}} {.  ^The
120a0 20 6d 75 6c 74 69 2d 61 72 67 75 6d 65 6e 74 20   multi-argument 
120b0 6d 69 6e 28 29 20 66 75 6e 63 74 69 6f 6e 20 72  min() function r
120c0 65 74 75 72 6e 73 20 74 68 65 20 61 72 67 75 6d  eturns the argum
120d0 65 6e 74 20 77 69 74 68 20 74 68 65 0a 20 20 6d  ent with the.  m
120e0 69 6e 69 6d 75 6d 20 76 61 6c 75 65 2e 0a 20 20  inimum value..  
120f0 5e 54 68 65 20 6d 75 6c 74 69 2d 61 72 67 75 6d  ^The multi-argum
12100 65 6e 74 20 6d 69 6e 28 29 20 66 75 6e 63 74 69  ent min() functi
12110 6f 6e 20 73 65 61 72 63 68 65 73 20 69 74 73 20  on searches its 
12120 61 72 67 75 6d 65 6e 74 73 20 66 72 6f 6d 20 6c  arguments from l
12130 65 66 74 20 74 6f 20 72 69 67 68 74 0a 20 20 66  eft to right.  f
12140 6f 72 20 61 6e 20 61 72 67 75 6d 65 6e 74 20 74  or an argument t
12150 68 61 74 20 64 65 66 69 6e 65 73 20 61 20 63 6f  hat defines a co
12160 6c 6c 61 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e  llating function
12170 20 61 6e 64 20 75 73 65 73 20 74 68 61 74 20 63   and uses that c
12180 6f 6c 6c 61 74 69 6e 67 0a 20 20 66 75 6e 63 74  ollating.  funct
12190 69 6f 6e 20 66 6f 72 20 61 6c 6c 20 73 74 72 69  ion for all stri
121a0 6e 67 20 63 6f 6d 70 61 72 69 73 6f 6e 73 2e 20  ng comparisons. 
121b0 20 5e 49 66 20 6e 6f 6e 65 20 6f 66 20 74 68 65   ^If none of the
121c0 20 61 72 67 75 6d 65 6e 74 73 20 74 6f 20 6d 69   arguments to mi
121d0 6e 28 29 0a 20 20 64 65 66 69 6e 65 20 61 20 63  n().  define a c
121e0 6f 6c 6c 61 74 69 6e 67 20 66 75 6e 63 74 69 6f  ollating functio
121f0 6e 2c 20 74 68 65 6e 20 74 68 65 20 42 49 4e 41  n, then the BINA
12200 52 59 20 63 6f 6c 6c 61 74 69 6e 67 20 66 75 6e  RY collating fun
12210 63 74 69 6f 6e 20 69 73 20 75 73 65 64 2e 0a 20  ction is used.. 
12220 20 4e 6f 74 65 20 74 68 61 74 20 3c 62 3e 6d 69   Note that <b>mi
12230 6e 28 29 3c 2f 62 3e 20 69 73 20 61 20 73 69 6d  n()</b> is a sim
12240 70 6c 65 20 66 75 6e 63 74 69 6f 6e 20 77 68 65  ple function whe
12250 6e 0a 20 20 69 74 20 68 61 73 20 32 20 6f 72 20  n.  it has 2 or 
12260 6d 6f 72 65 20 61 72 67 75 6d 65 6e 74 73 20 62  more arguments b
12270 75 74 20 6f 70 65 72 61 74 65 73 20 61 73 20 61  ut operates as a
12280 6e 20 0a 20 20 5b 6d 61 78 41 67 67 46 75 6e 63  n .  [maxAggFunc
12290 20 7c 20 61 67 67 72 65 67 61 74 65 20 66 75 6e   | aggregate fun
122a0 63 74 69 6f 6e 5d 20 69 66 20 67 69 76 65 6e 0a  ction] if given.
122b0 20 20 6f 6e 6c 79 20 61 20 73 69 6e 67 6c 65 20    only a single 
122c0 61 72 67 75 6d 65 6e 74 2e 0a 7d 0a 0a 66 75 6e  argument..}..fun
122d0 63 64 65 66 20 7b 6e 75 6c 6c 69 66 28 58 2c 59  cdef {nullif(X,Y
122e0 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20 6e  )} {} {.  ^The n
122f0 75 6c 6c 69 66 28 58 2c 59 29 20 66 75 6e 63 74  ullif(X,Y) funct
12300 69 6f 6e 20 72 65 74 75 72 6e 73 20 69 74 73 20  ion returns its 
12310 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74 20 69  first argument i
12320 66 20 74 68 65 20 61 72 67 75 6d 65 6e 74 73 20  f the arguments 
12330 61 72 65 0a 20 20 64 69 66 66 65 72 65 6e 74 20  are.  different 
12340 61 6e 64 20 4e 55 4c 4c 20 69 66 20 74 68 65 20  and NULL if the 
12350 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20 74 68  arguments are th
12360 65 20 73 61 6d 65 2e 20 20 5e 54 68 65 20 6e 75  e same.  ^The nu
12370 6c 6c 69 66 28 58 2c 59 29 20 66 75 6e 63 74 69  llif(X,Y) functi
12380 6f 6e 0a 20 20 73 65 61 72 63 68 65 73 20 69 74  on.  searches it
12390 73 20 61 72 67 75 6d 65 6e 74 73 20 66 72 6f 6d  s arguments from
123a0 20 6c 65 66 74 20 74 6f 20 72 69 67 68 74 20 66   left to right f
123b0 6f 72 20 61 6e 20 61 72 67 75 6d 65 6e 74 20 74  or an argument t
123c0 68 61 74 20 64 65 66 69 6e 65 73 20 61 0a 20 20  hat defines a.  
123d0 63 6f 6c 6c 61 74 69 6e 67 20 66 75 6e 63 74 69  collating functi
123e0 6f 6e 20 61 6e 64 20 75 73 65 73 20 74 68 61 74  on and uses that
123f0 20 63 6f 6c 6c 61 74 69 6e 67 20 66 75 6e 63 74   collating funct
12400 69 6f 6e 20 66 6f 72 20 61 6c 6c 20 73 74 72 69  ion for all stri
12410 6e 67 0a 20 20 63 6f 6d 70 61 72 69 73 6f 6e 73  ng.  comparisons
12420 2e 20 20 5e 49 66 20 6e 65 69 74 68 65 72 20 61  .  ^If neither a
12430 72 67 75 6d 65 6e 74 20 74 6f 20 6e 75 6c 6c 69  rgument to nulli
12440 66 28 29 20 64 65 66 69 6e 65 73 20 61 20 63 6f  f() defines a co
12450 6c 6c 61 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e  llating function
12460 0a 20 20 74 68 65 6e 20 74 68 65 20 42 49 4e 41  .  then the BINA
12470 52 59 20 69 73 20 75 73 65 64 2e 0a 7d 0a 0a 66  RY is used..}..f
12480 75 6e 63 64 65 66 20 7b 71 75 6f 74 65 28 58 29  uncdef {quote(X)
12490 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20 71 75  } {} {.  ^The qu
124a0 6f 74 65 28 58 29 20 66 75 6e 63 74 69 6f 6e 20  ote(X) function 
124b0 72 65 74 75 72 6e 73 20 61 20 73 74 72 69 6e 67  returns a string
124c0 20 77 68 69 63 68 20 69 73 20 74 68 65 20 76 61   which is the va
124d0 6c 75 65 20 6f 66 0a 20 20 69 74 73 20 61 72 67  lue of.  its arg
124e0 75 6d 65 6e 74 20 73 75 69 74 61 62 6c 65 20 66  ument suitable f
124f0 6f 72 20 69 6e 63 6c 75 73 69 6f 6e 20 69 6e 74  or inclusion int
12500 6f 20 61 6e 6f 74 68 65 72 20 53 51 4c 20 73 74  o another SQL st
12510 61 74 65 6d 65 6e 74 2e 0a 20 20 5e 53 74 72 69  atement..  ^Stri
12520 6e 67 73 20 61 72 65 20 73 75 72 72 6f 75 6e 64  ngs are surround
12530 65 64 20 62 79 20 73 69 6e 67 6c 65 2d 71 75 6f  ed by single-quo
12540 74 65 73 20 77 69 74 68 20 65 73 63 61 70 65 73  tes with escapes
12550 20 6f 6e 20 69 6e 74 65 72 69 6f 72 20 71 75 6f   on interior quo
12560 74 65 73 0a 20 20 61 73 20 6e 65 65 64 65 64 2e  tes.  as needed.
12570 20 20 5e 42 4c 4f 42 73 20 61 72 65 20 65 6e 63    ^BLOBs are enc
12580 6f 64 65 64 20 61 73 20 68 65 78 61 64 65 63 69  oded as hexadeci
12590 6d 61 6c 20 6c 69 74 65 72 61 6c 73 2e 0a 7d 0a  mal literals..}.
125a0 0a 66 75 6e 63 64 65 66 20 7b 72 61 6e 64 6f 6d  .funcdef {random
125b0 28 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20  ()} {} {.  ^The 
125c0 72 61 6e 64 6f 6d 28 29 20 66 75 6e 63 74 69 6f  random() functio
125d0 6e 20 72 65 74 75 72 6e 73 20 61 20 70 73 65 75  n returns a pseu
125e0 64 6f 2d 72 61 6e 64 6f 6d 20 69 6e 74 65 67 65  do-random intege
125f0 72 0a 20 20 62 65 74 77 65 65 6e 20 2d 39 32 32  r.  between -922
12600 33 33 37 32 30 33 36 38 35 34 37 37 35 38 30 38  3372036854775808
12610 20 61 6e 64 20 2b 39 32 32 33 33 37 32 30 33 36   and +9223372036
12620 38 35 34 37 37 35 38 30 37 2e 0a 7d 0a 0a 66 75  854775807..}..fu
12630 6e 63 64 65 66 20 7b 72 61 6e 64 6f 6d 62 6c 6f  ncdef {randomblo
12640 62 28 4e 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68  b(N)} {} {.  ^Th
12650 65 20 72 61 6e 64 6f 6d 62 6c 6f 62 28 4e 29 20  e randomblob(N) 
12660 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 20  function return 
12670 61 6e 20 4e 2d 62 79 74 65 20 62 6c 6f 62 20 63  an N-byte blob c
12680 6f 6e 74 61 69 6e 69 6e 67 20 70 73 65 75 64 6f  ontaining pseudo
12690 2d 72 61 6e 64 6f 6d 0a 20 20 62 79 74 65 73 2e  -random.  bytes.
126a0 20 5e 49 66 20 4e 20 69 73 20 6c 65 73 73 20 74   ^If N is less t
126b0 68 61 6e 20 31 20 74 68 65 6e 20 61 20 31 2d 62  han 1 then a 1-b
126c0 79 74 65 20 72 61 6e 64 6f 6d 20 62 6c 6f 62 20  yte random blob 
126d0 69 73 20 72 65 74 75 72 6e 65 64 2e 0a 0a 20 20  is returned...  
126e0 3c 70 3e 48 69 6e 74 3a 20 20 61 70 70 6c 69 63  <p>Hint:  applic
126f0 61 74 69 6f 6e 73 20 63 61 6e 20 67 65 6e 65 72  ations can gener
12700 61 74 65 20 67 6c 6f 62 61 6c 6c 79 20 75 6e 69  ate globally uni
12710 71 75 65 20 69 64 65 6e 74 69 66 69 65 72 73 0a  que identifiers.
12720 20 20 75 73 69 6e 67 20 74 68 69 73 20 66 75 6e    using this fun
12730 63 74 69 6f 6e 20 74 6f 67 65 74 68 65 72 20 77  ction together w
12740 69 74 68 20 5b 68 65 78 28 29 5d 20 61 6e 64 2f  ith [hex()] and/
12750 6f 72 0a 20 20 5b 6c 6f 77 65 72 28 29 5d 20 6c  or.  [lower()] l
12760 69 6b 65 20 74 68 69 73 3a 3c 2f 70 3e 0a 0a 20  ike this:</p>.. 
12770 20 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 20 20   <blockquote>.  
12780 68 65 78 28 72 61 6e 64 6f 6d 62 6c 6f 62 28 31  hex(randomblob(1
12790 36 29 29 3c 62 72 3e 3c 2f 62 72 3e 0a 20 20 6c  6))<br></br>.  l
127a0 6f 77 65 72 28 68 65 78 28 72 61 6e 64 6f 6d 62  ower(hex(randomb
127b0 6c 6f 62 28 31 36 29 29 29 0a 20 20 3c 2f 62 6c  lob(16))).  </bl
127c0 6f 63 6b 71 75 6f 74 65 3e 0a 7d 0a 0a 66 75 6e  ockquote>.}..fun
127d0 63 64 65 66 20 7b 72 65 70 6c 61 63 65 28 58 2c  cdef {replace(X,
127e0 59 2c 5a 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68  Y,Z)} {} {.  ^Th
127f0 65 20 72 65 70 6c 61 63 65 28 58 2c 59 2c 5a 29  e replace(X,Y,Z)
12800 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e   function return
12810 73 20 61 20 73 74 72 69 6e 67 20 66 6f 72 6d 65  s a string forme
12820 64 20 62 79 20 73 75 62 73 74 69 74 75 74 69 6e  d by substitutin
12830 67 0a 20 20 73 74 72 69 6e 67 20 5a 20 66 6f 72  g.  string Z for
12840 20 65 76 65 72 79 20 6f 63 63 75 72 72 61 6e 63   every occurranc
12850 65 20 6f 66 20 73 74 72 69 6e 67 20 59 20 69 6e  e of string Y in
12860 20 73 74 72 69 6e 67 20 58 2e 20 20 5e 54 68 65   string X.  ^The
12870 20 5b 42 49 4e 41 52 59 5d 0a 20 20 63 6f 6c 6c   [BINARY].  coll
12880 61 74 69 6e 67 20 73 65 71 75 65 6e 63 65 20 69  ating sequence i
12890 73 20 75 73 65 64 20 66 6f 72 20 63 6f 6d 70 61  s used for compa
128a0 72 69 73 6f 6e 73 2e 20 20 5e 49 66 20 59 20 69  risons.  ^If Y i
128b0 73 20 61 6e 20 65 6d 70 74 79 0a 20 20 73 74 72  s an empty.  str
128c0 69 6e 67 20 74 68 65 6e 20 72 65 74 75 72 6e 20  ing then return 
128d0 58 20 75 6e 63 68 61 6e 67 65 64 2e 20 20 5e 49  X unchanged.  ^I
128e0 66 20 5a 20 69 73 20 6e 6f 74 20 69 6e 69 74 69  f Z is not initi
128f0 61 6c 6c 79 0a 20 20 61 20 73 74 72 69 6e 67 2c  ally.  a string,
12900 20 69 74 20 69 73 20 63 61 73 74 20 74 6f 20 61   it is cast to a
12910 20 55 54 46 2d 38 20 73 74 72 69 6e 67 20 70 72   UTF-8 string pr
12920 69 6f 72 20 74 6f 20 70 72 6f 63 65 73 73 69 6e  ior to processin
12930 67 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 72  g..}..funcdef {r
12940 6f 75 6e 64 28 58 29 20 72 6f 75 6e 64 28 58 2c  ound(X) round(X,
12950 59 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20  Y)} {} {.  ^The 
12960 72 6f 75 6e 64 28 58 2c 59 29 20 66 75 6e 63 74  round(X,Y) funct
12970 69 6f 6e 20 72 65 74 75 72 6e 73 20 61 20 73 74  ion returns a st
12980 72 69 6e 67 20 72 65 70 72 65 73 65 6e 74 61 74  ring representat
12990 69 6f 6e 20 6f 66 20 74 68 65 20 66 6c 6f 61 74  ion of the float
129a0 69 6e 67 2d 70 6f 69 6e 74 0a 20 20 76 61 6c 75  ing-point.  valu
129b0 65 20 58 20 72 6f 75 6e 64 65 64 20 74 6f 20 59  e X rounded to Y
129c0 20 64 69 67 69 74 73 20 74 6f 20 74 68 65 20 72   digits to the r
129d0 69 67 68 74 20 6f 66 20 74 68 65 20 64 65 63 69  ight of the deci
129e0 6d 61 6c 20 70 6f 69 6e 74 2e 0a 20 20 5e 49 66  mal point..  ^If
129f0 20 74 68 65 20 59 20 61 72 67 75 6d 65 6e 74 20   the Y argument 
12a00 69 73 20 6f 6d 69 74 74 65 64 2c 20 74 68 65 20  is omitted, the 
12a10 58 20 76 61 6c 75 65 20 69 73 20 74 72 75 6e 63  X value is trunc
12a20 61 74 65 64 20 74 6f 20 61 6e 20 69 6e 74 65 67  ated to an integ
12a30 65 72 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b  er..}..funcdef {
12a40 72 74 72 69 6d 28 58 29 20 72 74 72 69 6d 28 58  rtrim(X) rtrim(X
12a50 2c 59 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68 65  ,Y)} {} {.  ^The
12a60 20 72 74 72 69 6d 28 58 2c 59 29 20 66 75 6e 63   rtrim(X,Y) func
12a70 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 61 20 73  tion returns a s
12a80 74 72 69 6e 67 20 66 6f 72 6d 65 64 20 62 79 20  tring formed by 
12a90 72 65 6d 6f 76 69 6e 67 20 61 6e 79 20 61 6e 64  removing any and
12aa0 20 61 6c 6c 0a 20 20 63 68 61 72 61 63 74 65 72   all.  character
12ab0 73 20 74 68 61 74 20 61 70 70 65 61 72 20 69 6e  s that appear in
12ac0 20 59 20 66 72 6f 6d 20 74 68 65 20 72 69 67 68   Y from the righ
12ad0 74 20 73 69 64 65 20 6f 66 20 58 2e 0a 20 20 5e  t side of X..  ^
12ae0 49 66 20 74 68 65 20 59 20 61 72 67 75 6d 65 6e  If the Y argumen
12af0 74 20 69 73 20 6f 6d 69 74 74 65 64 2c 20 72 74  t is omitted, rt
12b00 72 69 6d 28 58 29 20 72 65 6d 6f 76 65 73 20 73  rim(X) removes s
12b10 70 61 63 65 73 20 66 72 6f 6d 20 74 68 65 20 72  paces from the r
12b20 69 67 68 74 0a 20 20 73 69 64 65 20 6f 66 20 58  ight.  side of X
12b30 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 73 6f  ..}..funcdef {so
12b40 75 6e 64 65 78 28 58 29 7d 20 7b 7d 20 7b 0a 20  undex(X)} {} {. 
12b50 20 5e 54 68 65 20 73 6f 75 6e 64 65 78 28 58 29   ^The soundex(X)
12b60 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e   function return
12b70 73 20 61 20 73 74 72 69 6e 67 20 74 68 61 74 20  s a string that 
12b80 69 73 20 74 68 65 20 73 6f 75 6e 64 65 78 20 65  is the soundex e
12b90 6e 63 6f 64 69 6e 67 20 0a 20 20 6f 66 20 74 68  ncoding .  of th
12ba0 65 20 73 74 72 69 6e 67 20 58 2e 0a 20 20 5e 54  e string X..  ^T
12bb0 68 65 20 73 74 72 69 6e 67 20 22 3f 30 30 30 22  he string "?000"
12bc0 20 69 73 20 72 65 74 75 72 6e 65 64 20 69 66 20   is returned if 
12bd0 74 68 65 20 61 72 67 75 6d 65 6e 74 20 69 73 20  the argument is 
12be0 4e 55 4c 4c 20 6f 72 20 63 6f 6e 74 61 69 6e 73  NULL or contains
12bf0 0a 20 20 6e 6f 20 41 53 43 49 49 20 61 6c 70 68  .  no ASCII alph
12c00 61 62 65 74 69 63 20 63 68 61 72 61 63 74 65 72  abetic character
12c10 73 2e 0a 20 20 5e 28 54 68 69 73 20 66 75 6e 63  s..  ^(This func
12c20 74 69 6f 6e 20 69 73 20 6f 6d 69 74 74 65 64 20  tion is omitted 
12c30 66 72 6f 6d 20 53 51 4c 69 74 65 20 62 79 20 64  from SQLite by d
12c40 65 66 61 75 6c 74 2e 0a 20 20 49 74 20 69 73 20  efault..  It is 
12c50 6f 6e 6c 79 20 61 76 61 69 6c 61 62 6c 65 20 69  only available i
12c60 66 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 53 4f  f the [SQLITE_SO
12c70 55 4e 44 45 58 5d 20 63 6f 6d 70 69 6c 65 2d 74  UNDEX] compile-t
12c80 69 6d 65 20 6f 70 74 69 6f 6e 0a 20 20 69 73 20  ime option.  is 
12c90 75 73 65 64 20 77 68 65 6e 20 53 51 4c 69 74 65  used when SQLite
12ca0 20 69 73 20 62 75 69 6c 74 2e 29 5e 0a 7d 0a 0a   is built.)^.}..
12cb0 66 75 6e 63 64 65 66 20 7b 73 71 6c 69 74 65 5f  funcdef {sqlite_
12cc0 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 67 65  compileoption_ge
12cd0 74 28 4e 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68  t(N)} {} {.  ^Th
12ce0 65 20 73 71 6c 69 74 65 5f 63 6f 6d 70 69 6c 65  e sqlite_compile
12cf0 6f 70 74 69 6f 6e 5f 67 65 74 28 29 20 53 51 4c  option_get() SQL
12d00 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 61 20 77   function is a w
12d10 72 61 70 70 65 72 20 61 72 6f 75 6e 64 20 74 68  rapper around th
12d20 65 0a 20 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6d  e.  [sqlite3_com
12d30 70 69 6c 65 6f 70 74 69 6f 6e 5f 67 65 74 28 29  pileoption_get()
12d40 5d 20 43 2f 43 2b 2b 20 66 75 6e 63 74 69 6f 6e  ] C/C++ function
12d50 2e 0a 20 20 5e 54 68 69 73 20 72 6f 75 74 69 6e  ..  ^This routin
12d60 65 20 72 65 74 75 72 6e 73 20 74 68 65 20 4e 2d  e returns the N-
12d70 74 68 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  th compile-time 
12d80 6f 70 74 69 6f 6e 20 75 73 65 64 20 74 6f 20 62  option used to b
12d90 75 69 6c 64 20 53 51 4c 69 74 65 0a 20 20 6f 72  uild SQLite.  or
12da0 20 4e 55 4c 4c 20 69 66 20 4e 20 69 73 20 6f 75   NULL if N is ou
12db0 74 20 6f 66 20 72 61 6e 67 65 2e 20 20 53 65 65  t of range.  See
12dc0 20 61 6c 73 6f 20 74 68 65 20 5b 63 6f 6d 70 69   also the [compi
12dd0 6c 65 5f 6f 70 74 69 6f 6e 73 20 70 72 61 67 6d  le_options pragm
12de0 61 5d 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b  a]..}..funcdef {
12df0 73 71 6c 69 74 65 5f 63 6f 6d 70 69 6c 65 6f 70  sqlite_compileop
12e00 74 69 6f 6e 5f 75 73 65 64 28 58 29 7d 20 7b 7d  tion_used(X)} {}
12e10 20 7b 0a 20 20 5e 54 68 65 20 73 71 6c 69 74 65   {.  ^The sqlite
12e20 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 75  _compileoption_u
12e30 73 65 64 28 29 20 53 51 4c 20 66 75 6e 63 74 69  sed() SQL functi
12e40 6f 6e 20 69 73 20 61 20 77 72 61 70 70 65 72 20  on is a wrapper 
12e50 61 72 6f 75 6e 64 20 74 68 65 0a 20 20 5b 73 71  around the.  [sq
12e60 6c 69 74 65 33 5f 63 6f 6d 70 69 6c 65 6f 70 74  lite3_compileopt
12e70 69 6f 6e 5f 75 73 65 64 28 29 5d 20 43 2f 43 2b  ion_used()] C/C+
12e80 2b 20 66 75 6e 63 74 69 6f 6e 2e 0a 20 20 5e 57  + function..  ^W
12e90 68 65 6e 20 74 68 65 20 61 72 67 75 6d 65 6e 74  hen the argument
12ea0 20 58 20 74 6f 20 73 71 6c 69 74 65 5f 63 6f 6d   X to sqlite_com
12eb0 70 69 6c 65 6f 70 74 69 6f 6e 5f 75 73 65 64 28  pileoption_used(
12ec0 58 29 20 69 73 20 61 20 73 74 72 69 6e 67 20 77  X) is a string w
12ed0 68 69 63 68 0a 20 20 69 73 20 74 68 65 20 6e 61  hich.  is the na
12ee0 6d 65 20 6f 66 20 61 20 63 6f 6d 70 69 6c 65 2d  me of a compile-
12ef0 74 69 6d 65 20 6f 70 74 69 6f 6e 2c 20 74 68 69  time option, thi
12f00 73 20 72 6f 75 74 69 6e 65 20 72 65 74 75 72 6e  s routine return
12f10 73 20 74 72 75 65 20 28 31 29 20 6f 72 0a 20 20  s true (1) or.  
12f20 66 61 6c 73 65 20 28 30 29 20 64 65 70 65 6e 64  false (0) depend
12f30 69 6e 67 20 6f 6e 20 77 68 65 74 68 65 72 20 6f  ing on whether o
12f40 72 20 6e 6f 74 20 74 68 61 74 20 6f 70 74 69 6f  r not that optio
12f50 6e 20 77 61 73 20 75 73 65 64 20 64 75 72 69 6e  n was used durin
12f60 67 20 74 68 65 0a 20 20 62 75 69 6c 64 2e 0a 7d  g the.  build..}
12f70 0a 0a 66 75 6e 63 64 65 66 20 7b 73 71 6c 69 74  ..funcdef {sqlit
12f80 65 5f 73 6f 75 72 63 65 5f 69 64 28 29 7d 20 7b  e_source_id()} {
12f90 7d 20 7b 0a 20 20 5e 54 68 65 20 73 71 6c 69 74  } {.  ^The sqlit
12fa0 65 5f 73 6f 75 72 63 65 5f 69 64 28 29 20 66 75  e_source_id() fu
12fb0 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 61  nction returns a
12fc0 20 73 74 72 69 6e 67 20 74 68 61 74 20 69 64 65   string that ide
12fd0 6e 74 69 66 69 65 73 20 74 68 65 0a 20 20 73 70  ntifies the.  sp
12fe0 65 63 69 66 69 63 20 76 65 72 73 69 6f 6e 20 6f  ecific version o
12ff0 66 20 74 68 65 20 73 6f 75 72 63 65 20 63 6f 64  f the source cod
13000 65 20 74 68 61 74 20 77 61 73 20 75 73 65 64 20  e that was used 
13010 74 6f 20 62 75 69 6c 64 20 74 68 65 20 53 51 4c  to build the SQL
13020 69 74 65 0a 20 20 6c 69 62 72 61 72 79 2e 20 20  ite.  library.  
13030 5e 54 68 65 20 73 74 72 69 6e 67 20 72 65 74 75  ^The string retu
13040 72 6e 65 64 20 62 79 20 73 71 6c 69 74 65 5f 73  rned by sqlite_s
13050 6f 75 72 63 65 5f 69 64 28 29 20 62 65 67 69 6e  ource_id() begin
13060 73 20 77 69 74 68 0a 20 20 74 68 65 20 64 61 74  s with.  the dat
13070 65 20 61 6e 64 20 74 69 6d 65 20 74 68 61 74 20  e and time that 
13080 74 68 65 20 73 6f 75 72 63 65 20 63 6f 64 65 20  the source code 
13090 77 61 73 20 63 68 65 63 6b 65 64 20 69 6e 20 61  was checked in a
130a0 6e 64 20 69 73 20 66 6f 6c 6c 6f 77 73 20 62 79  nd is follows by
130b0 0a 20 20 61 6e 20 53 48 41 31 20 68 61 73 68 20  .  an SHA1 hash 
130c0 74 68 61 74 20 75 6e 69 71 75 65 6c 79 20 69 64  that uniquely id
130d0 65 6e 74 69 66 69 65 73 20 74 68 65 20 73 6f 75  entifies the sou
130e0 72 63 65 20 74 72 65 65 2e 20 20 5e 54 68 69 73  rce tree.  ^This
130f0 20 66 75 6e 63 74 69 6f 6e 20 69 73 0a 20 20 61   function is.  a
13100 6e 20 53 51 4c 20 77 72 61 70 70 65 72 20 61 72  n SQL wrapper ar
13110 6f 75 6e 64 20 74 68 65 20 5b 73 71 6c 69 74 65  ound the [sqlite
13120 33 5f 73 6f 75 72 63 65 69 64 28 29 5d 20 43 20  3_sourceid()] C 
13130 69 6e 74 65 72 66 61 63 65 2e 0a 7d 0a 0a 66 75  interface..}..fu
13140 6e 63 64 65 66 20 7b 73 71 6c 69 74 65 5f 76 65  ncdef {sqlite_ve
13150 72 73 69 6f 6e 28 29 7d 20 7b 7d 20 7b 0a 20 20  rsion()} {} {.  
13160 5e 54 68 65 20 73 71 6c 69 74 65 5f 76 65 72 73  ^The sqlite_vers
13170 69 6f 6e 28 29 20 66 75 6e 63 74 69 6f 6e 20 72  ion() function r
13180 65 74 75 72 6e 73 20 74 68 65 20 76 65 72 73 69  eturns the versi
13190 6f 6e 20 73 74 72 69 6e 67 20 66 6f 72 20 74 68  on string for th
131a0 65 20 53 51 4c 69 74 65 0a 20 20 6c 69 62 72 61  e SQLite.  libra
131b0 72 79 20 74 68 61 74 20 69 73 20 72 75 6e 6e 69  ry that is runni
131c0 6e 67 2e 20 20 5e 54 68 69 73 20 66 75 6e 63 74  ng.  ^This funct
131d0 69 6f 6e 20 69 73 20 61 6e 20 53 51 4c 0a 20 20  ion is an SQL.  
131e0 77 72 61 70 70 65 72 20 61 72 6f 75 6e 64 20 74  wrapper around t
131f0 68 65 20 5b 73 71 6c 69 74 65 33 5f 6c 69 62 76  he [sqlite3_libv
13200 65 72 73 69 6f 6e 28 29 5d 20 43 2d 69 6e 74 65  ersion()] C-inte
13210 72 66 61 63 65 2e 0a 7d 0a 0a 66 75 6e 63 64 65  rface..}..funcde
13220 66 20 7b 73 75 62 73 74 72 28 58 2c 59 2c 5a 29  f {substr(X,Y,Z)
13230 20 73 75 62 73 74 72 28 58 2c 59 29 7d 20 7b 7d   substr(X,Y)} {}
13240 20 7b 0a 20 20 5e 54 68 65 20 73 75 62 73 74 72   {.  ^The substr
13250 28 58 2c 59 2c 5a 29 20 66 75 6e 63 74 69 6f 6e  (X,Y,Z) function
13260 20 72 65 74 75 72 6e 73 20 61 20 73 75 62 73 74   returns a subst
13270 72 69 6e 67 20 6f 66 20 69 6e 70 75 74 20 73 74  ring of input st
13280 72 69 6e 67 20 58 20 74 68 61 74 20 62 65 67 69  ring X that begi
13290 6e 73 0a 20 20 77 69 74 68 20 74 68 65 20 59 2d  ns.  with the Y-
132a0 74 68 20 63 68 61 72 61 63 74 65 72 20 61 6e 64  th character and
132b0 20 77 68 69 63 68 20 69 73 20 5a 20 63 68 61 72   which is Z char
132c0 61 63 74 65 72 73 20 6c 6f 6e 67 2e 0a 20 20 5e  acters long..  ^
132d0 49 66 20 5a 20 69 73 20 6f 6d 69 74 74 65 64 20  If Z is omitted 
132e0 74 68 65 6e 20 73 75 62 73 74 72 28 58 2c 59 29  then substr(X,Y)
132f0 20 72 65 74 75 72 6e 73 20 61 6c 6c 20 63 68 61   returns all cha
13300 72 61 63 74 65 72 73 20 74 68 72 6f 75 67 68 20  racters through 
13310 74 68 65 20 65 6e 64 0a 20 20 6f 66 20 74 68 65  the end.  of the
13320 20 73 74 72 69 6e 67 20 58 20 62 65 67 69 6e 6e   string X beginn
13330 69 6e 67 20 77 69 74 68 20 74 68 65 20 59 2d 74  ing with the Y-t
13340 68 2e 0a 20 20 5e 54 68 65 20 6c 65 66 74 2d 6d  h..  ^The left-m
13350 6f 73 74 20 63 68 61 72 61 63 74 65 72 20 6f 66  ost character of
13360 20 58 20 69 73 20 6e 75 6d 62 65 72 20 31 2e 20   X is number 1. 
13370 20 5e 49 66 20 59 20 69 73 20 6e 65 67 61 74 69   ^If Y is negati
13380 76 65 0a 20 20 74 68 65 6e 20 74 68 65 20 66 69  ve.  then the fi
13390 72 73 74 20 63 68 61 72 61 63 74 65 72 20 6f 66  rst character of
133a0 20 74 68 65 20 73 75 62 73 74 72 69 6e 67 20 69   the substring i
133b0 73 20 66 6f 75 6e 64 20 62 79 20 63 6f 75 6e 74  s found by count
133c0 69 6e 67 20 66 72 6f 6d 20 74 68 65 0a 20 20 72  ing from the.  r
133d0 69 67 68 74 20 72 61 74 68 65 72 20 74 68 61 6e  ight rather than
133e0 20 74 68 65 20 6c 65 66 74 2e 20 20 5e 49 66 20   the left.  ^If 
133f0 5a 20 69 73 20 6e 65 67 61 74 69 76 65 20 74 68  Z is negative th
13400 65 6e 0a 20 20 74 68 65 20 61 62 73 28 5a 29 20  en.  the abs(Z) 
13410 63 68 61 72 61 63 74 65 72 73 20 70 72 65 63 65  characters prece
13420 65 64 69 6e 67 20 74 68 65 20 59 2d 74 68 20 63  eding the Y-th c
13430 68 61 72 61 63 74 65 72 20 61 72 65 20 72 65 74  haracter are ret
13440 75 72 6e 65 64 2e 0a 20 20 5e 49 66 20 58 20 69  urned..  ^If X i
13450 73 20 61 20 73 74 72 69 6e 67 20 74 68 65 6e 20  s a string then 
13460 63 68 61 72 61 63 74 65 72 73 20 69 6e 64 69 63  characters indic
13470 65 73 20 72 65 66 65 72 20 74 6f 20 61 63 74 75  es refer to actu
13480 61 6c 20 55 54 46 2d 38 20 0a 20 20 63 68 61 72  al UTF-8 .  char
13490 61 63 74 65 72 73 2e 20 20 5e 49 66 20 58 20 69  acters.  ^If X i
134a0 73 20 61 20 42 4c 4f 42 20 74 68 65 6e 20 74 68  s a BLOB then th
134b0 65 20 69 6e 64 69 63 65 73 20 72 65 66 65 72 20  e indices refer 
134c0 74 6f 20 62 79 74 65 73 2e 0a 7d 0a 0a 66 75 6e  to bytes..}..fun
134d0 63 64 65 66 20 7b 74 6f 74 61 6c 5f 63 68 61 6e  cdef {total_chan
134e0 67 65 73 28 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54  ges()} {} {.  ^T
134f0 68 65 20 74 6f 74 61 6c 5f 63 68 61 6e 67 65 73  he total_changes
13500 28 29 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75  () function retu
13510 72 6e 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f  rns the number o
13520 66 20 72 6f 77 20 63 68 61 6e 67 65 73 0a 20 20  f row changes.  
13530 63 61 75 73 65 64 20 62 79 20 49 4e 53 45 52 54  caused by INSERT
13540 2c 20 55 50 44 41 54 45 20 6f 72 20 44 45 4c 45  , UPDATE or DELE
13550 54 45 0a 20 20 73 74 61 74 65 6d 65 6e 74 73 20  TE.  statements 
13560 73 69 6e 63 65 20 74 68 65 20 63 75 72 72 65 6e  since the curren
13570 74 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  t database conne
13580 63 74 69 6f 6e 20 77 61 73 20 6f 70 65 6e 65 64  ction was opened
13590 2e 0a 20 20 5e 54 68 69 73 20 66 75 6e 63 74 69  ..  ^This functi
135a0 6f 6e 20 69 73 20 61 20 77 72 61 70 70 65 72 20  on is a wrapper 
135b0 61 72 6f 75 6e 64 20 74 68 65 20 5b 73 71 6c 69  around the [sqli
135c0 74 65 33 5f 74 6f 74 61 6c 5f 63 68 61 6e 67 65  te3_total_change
135d0 73 28 29 5d 0a 20 20 43 2f 43 2b 2b 20 69 6e 74  s()].  C/C++ int
135e0 65 72 66 61 63 65 2e 0a 7d 0a 0a 66 75 6e 63 64  erface..}..funcd
135f0 65 66 20 7b 74 72 69 6d 28 58 29 20 74 72 69 6d  ef {trim(X) trim
13600 28 58 2c 59 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54  (X,Y)} {} {.  ^T
13610 68 65 20 74 72 69 6d 28 58 2c 59 29 20 66 75 6e  he trim(X,Y) fun
13620 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 61 20  ction returns a 
13630 73 74 72 69 6e 67 20 66 6f 72 6d 65 64 20 62 79  string formed by
13640 20 72 65 6d 6f 76 69 6e 67 20 61 6e 79 20 61 6e   removing any an
13650 64 20 61 6c 6c 0a 20 20 63 68 61 72 61 63 74 65  d all.  characte
13660 72 73 20 74 68 61 74 20 61 70 70 65 61 72 20 69  rs that appear i
13670 6e 20 59 20 66 72 6f 6d 20 62 6f 74 68 20 65 6e  n Y from both en
13680 64 73 20 6f 66 20 58 2e 0a 20 20 5e 49 66 20 74  ds of X..  ^If t
13690 68 65 20 59 20 61 72 67 75 6d 65 6e 74 20 69 73  he Y argument is
136a0 20 6f 6d 69 74 74 65 64 2c 20 74 72 69 6d 28 58   omitted, trim(X
136b0 29 20 72 65 6d 6f 76 65 73 20 73 70 61 63 65 73  ) removes spaces
136c0 20 66 72 6f 6d 20 62 6f 74 68 20 65 6e 64 73 20   from both ends 
136d0 6f 66 20 58 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66  of X..}..funcdef
136e0 20 7b 74 79 70 65 6f 66 28 58 29 7d 20 7b 7d 20   {typeof(X)} {} 
136f0 7b 0a 20 20 5e 54 68 65 20 74 79 70 65 6f 66 28  {.  ^The typeof(
13700 58 29 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75  X) function retu
13710 72 6e 73 20 61 20 73 74 72 69 6e 67 20 74 68 61  rns a string tha
13720 74 20 69 6e 64 69 63 61 74 65 73 20 74 68 65 20  t indicates the 
13730 5b 64 61 74 61 74 79 70 65 5d 20 6f 66 0a 20 20  [datatype] of.  
13740 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20 58  the expression X
13750 3a 20 22 6e 75 6c 6c 22 2c 20 22 69 6e 74 65 67  : "null", "integ
13760 65 72 22 2c 20 22 72 65 61 6c 22 2c 20 22 74 65  er", "real", "te
13770 78 74 22 2c 20 6f 72 20 22 62 6c 6f 62 22 2e 0a  xt", or "blob"..
13780 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 75 70 70 65  }..funcdef {uppe
13790 72 28 58 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68  r(X)} {} {.  ^Th
137a0 65 20 75 70 70 65 72 28 58 29 20 66 75 6e 63 74  e upper(X) funct
137b0 69 6f 6e 20 72 65 74 75 72 6e 73 20 61 20 63 6f  ion returns a co
137c0 70 79 20 6f 66 20 69 6e 70 75 74 20 73 74 72 69  py of input stri
137d0 6e 67 20 58 20 69 6e 20 77 68 69 63 68 20 61 6c  ng X in which al
137e0 6c 20 0a 20 20 6c 6f 77 65 72 2d 63 61 73 65 20  l .  lower-case 
137f0 41 53 43 49 49 20 63 68 61 72 61 63 74 65 72 73  ASCII characters
13800 20 61 72 65 20 63 6f 6e 76 65 72 74 65 64 20 74   are converted t
13810 6f 20 74 68 65 69 72 20 75 70 70 65 72 2d 63 61  o their upper-ca
13820 73 65 20 65 71 75 69 76 61 6c 65 6e 74 2e 0a 7d  se equivalent..}
13830 0a 0a 66 75 6e 63 64 65 66 20 7b 7a 65 72 6f 62  ..funcdef {zerob
13840 6c 6f 62 28 4e 29 7d 20 7b 7d 20 7b 0a 20 20 5e  lob(N)} {} {.  ^
13850 54 68 65 20 7a 65 72 6f 62 6c 6f 62 28 4e 29 20  The zeroblob(N) 
13860 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73  function returns
13870 20 61 20 42 4c 4f 42 20 63 6f 6e 73 69 73 74 69   a BLOB consisti
13880 6e 67 20 6f 66 20 4e 20 62 79 74 65 73 20 6f 66  ng of N bytes of
13890 20 30 78 30 30 2e 0a 20 20 53 51 4c 69 74 65 20   0x00..  SQLite 
138a0 6d 61 6e 61 67 65 73 20 74 68 65 73 65 20 7a 65  manages these ze
138b0 72 6f 62 6c 6f 62 73 20 76 65 72 79 20 65 66 66  roblobs very eff
138c0 69 63 69 65 6e 74 6c 79 2e 20 20 5a 65 72 6f 62  iciently.  Zerob
138d0 6c 6f 62 73 20 63 61 6e 20 62 65 20 75 73 65 64  lobs can be used
138e0 20 74 6f 0a 20 20 72 65 73 65 72 76 65 20 73 70   to.  reserve sp
138f0 61 63 65 20 66 6f 72 20 61 20 42 4c 4f 42 20 74  ace for a BLOB t
13900 68 61 74 20 69 73 20 6c 61 74 65 72 20 77 72 69  hat is later wri
13910 74 74 65 6e 20 75 73 69 6e 67 20 0a 20 20 5b 73  tten using .  [s
13920 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 6f 70 65 6e  qlite3_blob_open
13930 28 29 20 7c 20 69 6e 63 72 65 6d 65 6e 74 61 6c  () | incremental
13940 20 42 4c 4f 42 20 49 2f 4f 5d 2e 0a 20 20 5e 54   BLOB I/O]..  ^T
13950 68 69 73 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e  his SQL function
13960 20 69 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20   is implemented 
13970 75 73 69 6e 67 20 74 68 65 20 5b 73 71 6c 69 74  using the [sqlit
13980 65 33 5f 72 65 73 75 6c 74 5f 7a 65 72 6f 62 6c  e3_result_zerobl
13990 6f 62 28 29 5d 0a 20 20 72 6f 75 74 69 6e 65 20  ob()].  routine 
139a0 66 72 6f 6d 20 74 68 65 20 43 2f 43 2b 2b 20 69  from the C/C++ i
139b0 6e 74 65 72 66 61 63 65 2e 0a 7d 0a 3c 2f 74 63  nterface..}.</tc
139c0 6c 3e 0a 3c 2f 74 61 62 6c 65 3e 0a 0a 3c 74 63  l>.</table>..<tc
139d0 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23 23  l>.#############
139e0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
139f0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
13a00 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
13a10 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
13a20 23 0a 53 65 63 74 69 6f 6e 20 7b 44 61 74 65 20  #.Section {Date 
13a30 41 6e 64 20 54 69 6d 65 20 46 75 6e 63 74 69 6f  And Time Functio
13a40 6e 73 7d 20 64 61 74 65 66 75 6e 63 20 7b 2a 64  ns} datefunc {*d
13a50 61 74 65 66 75 6e 63 7d 0a 68 64 5f 6b 65 79 77  atefunc}.hd_keyw
13a60 6f 72 64 73 20 7b 64 61 74 65 28 29 20 53 51 4c  ords {date() SQL
13a70 20 66 75 6e 63 74 69 6f 6e 7d 20 7b 74 69 6d 65   function} {time
13a80 28 29 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 7d  () SQL function}
13a90 0a 68 64 5f 6b 65 79 77 6f 72 64 73 20 7b 64 61  .hd_keywords {da
13aa0 74 65 74 69 6d 65 28 29 20 53 51 4c 20 66 75 6e  tetime() SQL fun
13ab0 63 74 69 6f 6e 7d 20 7b 6a 75 6c 69 61 6e 64 61  ction} {julianda
13ac0 79 28 29 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e  y() SQL function
13ad0 7d 0a 68 64 5f 6b 65 79 77 6f 72 64 73 20 7b 73  }.hd_keywords {s
13ae0 74 72 66 74 69 6d 65 28 29 20 53 51 4c 20 66 75  trftime() SQL fu
13af0 6e 63 74 69 6f 6e 7d 0a 3c 2f 74 63 6c 3e 0a 0a  nction}.</tcl>..
13b00 3c 70 3e 0a 53 51 4c 69 74 65 20 73 75 70 70 6f  <p>.SQLite suppo
13b10 72 74 73 20 66 69 76 65 20 64 61 74 65 20 61 6e  rts five date an
13b20 64 20 74 69 6d 65 20 66 75 6e 63 74 69 6f 6e 73  d time functions
13b30 20 61 73 20 66 6f 6c 6c 6f 77 73 3a 0a 3c 2f 70   as follows:.</p
13b40 3e 0a 0a 3c 70 3e 0a 3c 6f 6c 3e 0a 3c 6c 69 3e  >..<p>.<ol>.<li>
13b50 20 5e 28 3c 62 3e 64 61 74 65 28 3c 2f 62 3e 3c   ^(<b>date(</b><
13b60 69 3e 74 69 6d 65 73 74 72 69 6e 67 2c 20 6d 6f  i>timestring, mo
13b70 64 69 66 69 65 72 2c 20 6d 6f 64 69 66 69 65 72  difier, modifier
13b80 2c 20 2e 2e 2e 3c 2f 69 3e 3c 62 3e 29 3c 2f 62  , ...</i><b>)</b
13b90 3e 29 5e 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5e  >)^ </li>.<li> ^
13ba0 28 3c 62 3e 74 69 6d 65 28 3c 2f 62 3e 3c 69 3e  (<b>time(</b><i>
13bb0 74 69 6d 65 73 74 72 69 6e 67 2c 20 6d 6f 64 69  timestring, modi
13bc0 66 69 65 72 2c 20 6d 6f 64 69 66 69 65 72 2c 20  fier, modifier, 
13bd0 2e 2e 2e 3c 2f 69 3e 3c 62 3e 29 3c 2f 62 3e 29  ...</i><b>)</b>)
13be0 5e 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5e 28 3c  ^ </li>.<li> ^(<
13bf0 62 3e 64 61 74 65 74 69 6d 65 28 3c 2f 62 3e 3c  b>datetime(</b><
13c00 69 3e 74 69 6d 65 73 74 72 69 6e 67 2c 20 6d 6f  i>timestring, mo
13c10 64 69 66 69 65 72 2c 20 6d 6f 64 69 66 69 65 72  difier, modifier
13c20 2c 20 2e 2e 2e 3c 2f 69 3e 3c 62 3e 29 3c 2f 62  , ...</i><b>)</b
13c30 3e 29 5e 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5e  >)^ </li>.<li> ^
13c40 28 3c 62 3e 6a 75 6c 69 61 6e 64 61 79 28 3c 2f  (<b>julianday(</
13c50 62 3e 3c 69 3e 74 69 6d 65 73 74 72 69 6e 67 2c  b><i>timestring,
13c60 20 6d 6f 64 69 66 69 65 72 2c 20 6d 6f 64 69 66   modifier, modif
13c70 69 65 72 2c 20 2e 2e 2e 3c 2f 69 3e 3c 62 3e 29  ier, ...</i><b>)
13c80 3c 2f 62 3e 29 5e 20 3c 2f 6c 69 3e 0a 3c 6c 69  </b>)^ </li>.<li
13c90 3e 20 5e 28 3c 62 3e 73 74 72 66 74 69 6d 65 28  > ^(<b>strftime(
13ca0 3c 2f 62 3e 3c 69 3e 66 6f 72 6d 61 74 2c 20 74  </b><i>format, t
13cb0 69 6d 65 73 74 72 69 6e 67 2c 20 6d 6f 64 69 66  imestring, modif
13cc0 69 65 72 2c 20 6d 6f 64 69 66 69 65 72 2c 20 2e  ier, modifier, .
13cd0 2e 2e 3c 2f 69 3e 3c 62 3e 29 3c 2f 62 3e 29 5e  ..</i><b>)</b>)^
13ce0 20 3c 2f 6c 69 3e 0a 3c 2f 6f 6c 3e 0a 0a 3c 70   </li>.</ol>..<p
13cf0 3e 0a 5e 41 6c 6c 20 66 69 76 65 20 64 61 74 65  >.^All five date
13d00 20 61 6e 64 20 74 69 6d 65 20 66 75 6e 63 74 69   and time functi
13d10 6f 6e 73 20 74 61 6b 65 20 61 20 74 69 6d 65 20  ons take a time 
13d20 73 74 72 69 6e 67 20 61 73 20 61 6e 20 61 72 67  string as an arg
13d30 75 6d 65 6e 74 2e 20 0a 5e 54 68 65 20 74 69 6d  ument. .^The tim
13d40 65 20 73 74 72 69 6e 67 20 69 73 20 66 6f 6c 6c  e string is foll
13d50 6f 77 65 64 20 62 79 20 7a 65 72 6f 20 6f 72 20  owed by zero or 
13d60 6d 6f 72 65 20 6d 6f 64 69 66 69 65 72 73 2e 20  more modifiers. 
13d70 0a 5e 54 68 65 20 73 74 72 66 74 69 6d 65 28 29  .^The strftime()
13d80 20 66 75 6e 63 74 69 6f 6e 20 61 6c 73 6f 20 74   function also t
13d90 61 6b 65 73 20 61 20 66 6f 72 6d 61 74 20 73 74  akes a format st
13da0 72 69 6e 67 20 61 73 20 69 74 73 20 66 69 72 73  ring as its firs
13db0 74 20 61 72 67 75 6d 65 6e 74 2e 0a 3c 2f 70 3e  t argument..</p>
13dc0 0a 0a 3c 70 3e 0a 54 68 65 20 64 61 74 65 20 61  ..<p>.The date a
13dd0 6e 64 20 74 69 6d 65 20 66 75 6e 63 74 69 6f 6e  nd time function
13de0 73 20 75 73 65 20 61 20 73 75 62 73 65 74 20 6f  s use a subset o
13df0 66 0a 5b 68 74 74 70 3a 2f 2f 65 6e 2e 77 69 6b  f.[http://en.wik
13e00 69 70 65 64 69 61 2e 6f 72 67 2f 77 69 6b 69 2f  ipedia.org/wiki/
13e10 49 53 4f 5f 38 36 30 31 20 7c 20 49 53 30 2d 38  ISO_8601 | IS0-8
13e20 36 30 31 5d 20 64 61 74 65 20 61 6e 64 20 74 69  601] date and ti
13e30 6d 65 0a 66 6f 72 6d 61 74 73 2e 0a 5e 54 68 65  me.formats..^The
13e40 20 64 61 74 65 28 29 20 66 75 6e 63 74 69 6f 6e   date() function
13e50 20 72 65 74 75 72 6e 73 20 74 68 65 20 64 61 74   returns the dat
13e60 65 20 69 6e 20 74 68 69 73 20 66 6f 72 6d 61 74  e in this format
13e70 3a 20 59 59 59 59 2d 4d 4d 2d 44 44 2e 20 0a 5e  : YYYY-MM-DD. .^
13e80 54 68 65 20 74 69 6d 65 28 29 20 66 75 6e 63 74  The time() funct
13e90 69 6f 6e 20 72 65 74 75 72 6e 73 20 74 68 65 20  ion returns the 
13ea0 74 69 6d 65 20 61 73 20 48 48 3a 4d 4d 3a 53 53  time as HH:MM:SS
13eb0 2e 20 0a 5e 54 68 65 20 64 61 74 65 74 69 6d 65  . .^The datetime
13ec0 28 29 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75  () function retu
13ed0 72 6e 73 20 22 59 59 59 59 2d 4d 4d 2d 44 44 20  rns "YYYY-MM-DD 
13ee0 48 48 3a 4d 4d 3a 53 53 22 2e 20 0a 5e 28 54 68  HH:MM:SS". .^(Th
13ef0 65 20 6a 75 6c 69 61 6e 64 61 79 28 29 20 66 75  e julianday() fu
13f00 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 74  nction returns t
13f10 68 65 20 0a 5b 68 74 74 70 3a 2f 2f 65 6e 2e 77  he .[http://en.w
13f20 69 6b 69 70 65 64 69 61 2e 6f 72 67 2f 77 69 6b  ikipedia.org/wik
13f30 69 2f 4a 75 6c 69 61 6e 5f 64 61 79 20 7c 20 4a  i/Julian_day | J
13f40 75 6c 69 61 6e 20 64 61 79 5d 20 2d 20 74 68 65  ulian day] - the
13f50 0a 6e 75 6d 62 65 72 20 6f 66 20 64 61 79 73 20  .number of days 
13f60 73 69 6e 63 65 20 6e 6f 6f 6e 20 69 6e 20 47 72  since noon in Gr
13f70 65 65 6e 77 69 63 68 20 6f 6e 20 4e 6f 76 65 6d  eenwich on Novem
13f80 62 65 72 20 32 34 2c 20 34 37 31 34 20 42 2e 43  ber 24, 4714 B.C
13f90 2e 20 0a 28 5b 68 74 74 70 3a 2f 2f 65 6e 2e 77  . .([http://en.w
13fa0 69 6b 69 70 65 64 69 61 2e 6f 72 67 2f 77 69 6b  ikipedia.org/wik
13fb0 69 2f 50 72 6f 6c 65 70 74 69 63 5f 47 72 65 67  i/Proleptic_Greg
13fc0 6f 72 69 61 6e 5f 63 61 6c 65 6e 64 61 72 20 7c  orian_calendar |
13fd0 20 50 72 6f 6c 65 70 74 69 63 20 47 72 65 67 6f   Proleptic Grego
13fe0 72 69 61 6e 20 63 61 6c 65 6e 64 61 72 5d 29 2e  rian calendar]).
13ff0 29 5e 0a 5e 54 68 65 20 73 74 72 66 74 69 6d 65  )^.^The strftime
14000 28 29 20 72 6f 75 74 69 6e 65 20 72 65 74 75 72  () routine retur
14010 6e 73 20 74 68 65 20 64 61 74 65 20 66 6f 72 6d  ns the date form
14020 61 74 74 65 64 20 61 63 63 6f 72 64 69 6e 67 20  atted according 
14030 74 6f 20 0a 74 68 65 20 66 6f 72 6d 61 74 20 73  to .the format s
14040 74 72 69 6e 67 20 73 70 65 63 69 66 69 65 64 20  tring specified 
14050 61 73 20 74 68 65 20 66 69 72 73 74 20 61 72 67  as the first arg
14060 75 6d 65 6e 74 2e 0a 5e 54 68 65 20 66 6f 72 6d  ument..^The form
14070 61 74 20 73 74 72 69 6e 67 20 73 75 70 70 6f 72  at string suppor
14080 74 73 20 74 68 65 20 6d 6f 73 74 20 63 6f 6d 6d  ts the most comm
14090 6f 6e 20 73 75 62 73 74 69 74 75 74 69 6f 6e 73  on substitutions
140a0 20 66 6f 75 6e 64 20 69 6e 20 74 68 65 20 0a 5b   found in the .[
140b0 68 74 74 70 3a 2f 2f 6f 70 65 6e 67 72 6f 75 70  http://opengroup
140c0 2e 6f 72 67 2f 6f 6e 6c 69 6e 65 70 75 62 73 2f  .org/onlinepubs/
140d0 30 30 37 39 30 38 37 39 39 2f 78 73 68 2f 73 74  007908799/xsh/st
140e0 72 66 74 69 6d 65 2e 68 74 6d 6c 20 7c 20 73 74  rftime.html | st
140f0 72 66 74 69 6d 65 28 29 20 66 75 6e 63 74 69 6f  rftime() functio
14100 6e 5d 0a 66 72 6f 6d 20 74 68 65 20 73 74 61 6e  n].from the stan
14110 64 61 72 64 20 43 20 6c 69 62 72 61 72 79 20 70  dard C library p
14120 6c 75 73 20 74 77 6f 20 6e 65 77 20 73 75 62 73  lus two new subs
14130 74 69 74 75 74 69 6f 6e 73 2c 20 25 66 20 61 6e  titutions, %f an
14140 64 20 25 4a 2e 0a 5e 28 54 68 65 20 66 6f 6c 6c  d %J..^(The foll
14150 6f 77 69 6e 67 20 69 73 20 61 20 63 6f 6d 70 6c  owing is a compl
14160 65 74 65 20 6c 69 73 74 20 6f 66 20 76 61 6c 69  ete list of vali
14170 64 20 73 74 72 66 74 69 6d 65 28 29 20 73 75 62  d strftime() sub
14180 73 74 69 74 75 74 69 6f 6e 73 3a 0a 3c 2f 70 3e  stitutions:.</p>
14190 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 3c  ..<blockquote>.<
141a0 74 61 62 6c 65 20 62 6f 72 64 65 72 3d 22 30 22  table border="0"
141b0 20 63 65 6c 6c 70 61 64 64 69 6e 67 3d 22 30 22   cellpadding="0"
141c0 20 63 65 6c 6c 73 70 61 63 69 6e 67 3d 22 30 22   cellspacing="0"
141d0 3e 0a 3c 74 72 3e 3c 74 64 3e 3c 74 64 20 77 69  >.<tr><td><td wi
141e0 64 74 68 3d 22 31 30 22 3e 3c 74 64 3e 3c 2f 74  dth="10"><td></t
141f0 72 3e 0a 0a 3c 74 72 3e 3c 74 64 3e 20 25 64 20  r>..<tr><td> %d 
14200 3c 74 64 3e 3c 74 64 3e 20 64 61 79 20 6f 66 20  <td><td> day of 
14210 6d 6f 6e 74 68 3a 20 30 30 0a 3c 74 72 3e 3c 74  month: 00.<tr><t
14220 64 3e 20 25 66 20 3c 74 64 3e 3c 74 64 3e 20 66  d> %f <td><td> f
14230 72 61 63 74 69 6f 6e 61 6c 20 73 65 63 6f 6e 64  ractional second
14240 73 3a 20 53 53 2e 53 53 53 0a 3c 74 72 3e 3c 74  s: SS.SSS.<tr><t
14250 64 3e 20 25 48 20 3c 74 64 3e 3c 74 64 3e 20 68  d> %H <td><td> h
14260 6f 75 72 3a 20 30 30 2d 32 34 20 0a 3c 74 72 3e  our: 00-24 .<tr>
14270 3c 74 64 3e 20 25 6a 20 3c 74 64 3e 3c 74 64 3e  <td> %j <td><td>
14280 20 64 61 79 20 6f 66 20 79 65 61 72 3a 20 30 30   day of year: 00
14290 31 2d 33 36 36 0a 3c 74 72 3e 3c 74 64 3e 20 25  1-366.<tr><td> %
142a0 4a 20 3c 74 64 3e 3c 74 64 3e 20 4a 75 6c 69 61  J <td><td> Julia
142b0 6e 20 64 61 79 20 6e 75 6d 62 65 72 0a 3c 74 72  n day number.<tr
142c0 3e 3c 74 64 3e 20 25 6d 20 3c 74 64 3e 3c 74 64  ><td> %m <td><td
142d0 3e 20 6d 6f 6e 74 68 3a 20 30 31 2d 31 32 0a 3c  > month: 01-12.<
142e0 74 72 3e 3c 74 64 3e 20 25 4d 20 3c 74 64 3e 3c  tr><td> %M <td><
142f0 74 64 3e 20 6d 69 6e 75 74 65 3a 20 30 30 2d 35  td> minute: 00-5
14300 39 0a 3c 74 72 3e 3c 74 64 3e 20 25 73 20 3c 74  9.<tr><td> %s <t
14310 64 3e 3c 74 64 3e 20 73 65 63 6f 6e 64 73 20 73  d><td> seconds s
14320 69 6e 63 65 20 31 39 37 30 2d 30 31 2d 30 31 0a  ince 1970-01-01.
14330 3c 74 72 3e 3c 74 64 3e 20 25 53 20 3c 74 64 3e  <tr><td> %S <td>
14340 3c 74 64 3e 20 73 65 63 6f 6e 64 73 3a 20 30 30  <td> seconds: 00
14350 2d 35 39 0a 3c 74 72 3e 3c 74 64 3e 20 25 77 20  -59.<tr><td> %w 
14360 3c 74 64 3e 3c 74 64 3e 20 64 61 79 20 6f 66 20  <td><td> day of 
14370 77 65 65 6b 20 30 2d 36 20 77 69 74 68 20 73 75  week 0-6 with su
14380 6e 64 61 79 3d 3d 30 0a 3c 74 72 3e 3c 74 64 3e  nday==0.<tr><td>
14390 20 25 57 20 3c 74 64 3e 3c 74 64 3e 20 77 65 65   %W <td><td> wee
143a0 6b 20 6f 66 20 79 65 61 72 3a 20 30 30 2d 35 33  k of year: 00-53
143b0 0a 3c 74 72 3e 3c 74 64 3e 20 25 59 20 3c 74 64  .<tr><td> %Y <td
143c0 3e 3c 74 64 3e 20 79 65 61 72 3a 20 30 30 30 30  ><td> year: 0000
143d0 2d 39 39 39 39 0a 3c 74 72 3e 3c 74 64 3e 20 25  -9999.<tr><td> %
143e0 25 20 3c 74 64 3e 3c 74 64 3e 20 25 0a 3c 2f 74  % <td><td> %.</t
143f0 61 62 6c 65 3e 0a 3c 2f 62 6c 6f 63 6b 71 75 6f  able>.</blockquo
14400 74 65 3e 29 5e 0a 0a 3c 70 3e 0a 5e 28 4e 6f 74  te>)^..<p>.^(Not
14410 69 63 65 20 74 68 61 74 20 61 6c 6c 20 6f 74 68  ice that all oth
14420 65 72 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65  er date and time
14430 20 66 75 6e 63 74 69 6f 6e 73 20 63 61 6e 20 62   functions can b
14440 65 20 65 78 70 72 65 73 73 65 64 0a 69 6e 20 74  e expressed.in t
14450 65 72 6d 73 20 6f 66 20 73 74 72 66 74 69 6d 65  erms of strftime
14460 28 29 3a 0a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b  ():.</p>..<block
14470 71 75 6f 74 65 3e 0a 3c 74 61 62 6c 65 20 62 6f  quote>.<table bo
14480 72 64 65 72 3d 22 30 22 20 63 65 6c 6c 70 61 64  rder="0" cellpad
14490 64 69 6e 67 3d 22 30 22 20 63 65 6c 6c 73 70 61  ding="0" cellspa
144a0 63 69 6e 67 3d 22 30 22 3e 0a 3c 74 72 3e 3c 74  cing="0">.<tr><t
144b0 64 3e 3c 62 3e 46 75 6e 63 74 69 6f 6e 3c 2f 62  d><b>Function</b
144c0 3e 3c 74 64 20 77 69 64 74 68 3d 22 33 30 22 3e  ><td width="30">
144d0 3c 74 64 3e 3c 62 3e 45 71 75 69 76 61 6c 65 6e  <td><b>Equivalen
144e0 74 20 73 74 72 66 74 69 6d 65 28 29 3c 2f 62 3e  t strftime()</b>
144f0 0a 3c 74 72 3e 3c 74 64 3e 20 20 20 64 61 74 65  .<tr><td>   date
14500 28 2e 2e 2e 29 20 20 20 20 20 20 3c 74 64 3e 3c  (...)      <td><
14510 74 64 3e 20 20 73 74 72 66 74 69 6d 65 28 27 25  td>  strftime('%
14520 59 2d 25 6d 2d 25 64 27 2c 20 2e 2e 2e 29 0a 3c  Y-%m-%d', ...).<
14530 74 72 3e 3c 74 64 3e 20 20 20 74 69 6d 65 28 2e  tr><td>   time(.
14540 2e 2e 29 20 20 20 20 20 20 3c 74 64 3e 3c 74 64  ..)      <td><td
14550 3e 20 20 73 74 72 66 74 69 6d 65 28 27 25 48 3a  >  strftime('%H:
14560 25 4d 3a 25 53 27 2c 20 2e 2e 2e 29 0a 3c 74 72  %M:%S', ...).<tr
14570 3e 3c 74 64 3e 20 20 20 64 61 74 65 74 69 6d 65  ><td>   datetime
14580 28 2e 2e 2e 29 20 20 3c 74 64 3e 3c 74 64 3e 20  (...)  <td><td> 
14590 20 73 74 72 66 74 69 6d 65 28 27 25 59 2d 25 6d   strftime('%Y-%m
145a0 2d 25 64 20 25 48 3a 25 4d 3a 25 53 27 2c 20 2e  -%d %H:%M:%S', .
145b0 2e 2e 29 0a 3c 74 72 3e 3c 74 64 3e 20 20 20 6a  ..).<tr><td>   j
145c0 75 6c 69 61 6e 64 61 79 28 2e 2e 2e 29 20 3c 74  ulianday(...) <t
145d0 64 3e 3c 74 64 3e 20 20 73 74 72 66 74 69 6d 65  d><td>  strftime
145e0 28 27 25 4a 27 2c 20 2e 2e 2e 29 0a 3c 2f 74 61  ('%J', ...).</ta
145f0 62 6c 65 3e 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74  ble>.</blockquot
14600 65 3e 29 5e 0a 0a 3c 70 3e 0a 54 68 65 20 6f 6e  e>)^..<p>.The on
14610 6c 79 20 72 65 61 73 6f 6e 73 20 66 6f 72 20 70  ly reasons for p
14620 72 6f 76 69 64 69 6e 67 20 66 75 6e 63 74 69 6f  roviding functio
14630 6e 73 20 6f 74 68 65 72 20 74 68 61 6e 20 73 74  ns other than st
14640 72 66 74 69 6d 65 28 29 20 69 73 0a 66 6f 72 20  rftime() is.for 
14650 63 6f 6e 76 65 6e 69 65 6e 63 65 20 61 6e 64 20  convenience and 
14660 66 6f 72 20 65 66 66 69 63 69 65 6e 63 79 2e 0a  for efficiency..
14670 3c 2f 70 3e 0a 0a 3c 68 33 3e 54 69 6d 65 20 53  </p>..<h3>Time S
14680 74 72 69 6e 67 73 3c 2f 68 33 3e 0a 0a 3c 70 3e  trings</h3>..<p>
14690 5e 28 41 20 74 69 6d 65 20 73 74 72 69 6e 67 20  ^(A time string 
146a0 63 61 6e 20 62 65 20 69 6e 20 61 6e 79 20 6f 66  can be in any of
146b0 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 66   the following f
146c0 6f 72 6d 61 74 73 3a 3c 2f 70 3e 0a 0a 3c 6f 6c  ormats:</p>..<ol
146d0 3e 0a 3c 6c 69 3e 20 3c 69 3e 59 59 59 59 2d 4d  >.<li> <i>YYYY-M
146e0 4d 2d 44 44 3c 2f 69 3e 0a 3c 6c 69 3e 20 3c 69  M-DD</i>.<li> <i
146f0 3e 59 59 59 59 2d 4d 4d 2d 44 44 20 48 48 3a 4d  >YYYY-MM-DD HH:M
14700 4d 3c 2f 69 3e 0a 3c 6c 69 3e 20 3c 69 3e 59 59  M</i>.<li> <i>YY
14710 59 59 2d 4d 4d 2d 44 44 20 48 48 3a 4d 4d 3a 53  YY-MM-DD HH:MM:S
14720 53 3c 2f 69 3e 0a 3c 6c 69 3e 20 3c 69 3e 59 59  S</i>.<li> <i>YY
14730 59 59 2d 4d 4d 2d 44 44 20 48 48 3a 4d 4d 3a 53  YY-MM-DD HH:MM:S
14740 53 2e 53 53 53 3c 2f 69 3e 0a 3c 6c 69 3e 20 3c  S.SSS</i>.<li> <
14750 69 3e 59 59 59 59 2d 4d 4d 2d 44 44 3c 2f 69 3e  i>YYYY-MM-DD</i>
14760 3c 62 3e 54 3c 2f 62 3e 3c 69 3e 48 48 3a 4d 4d  <b>T</b><i>HH:MM
14770 3c 2f 69 3e 0a 3c 6c 69 3e 20 3c 69 3e 59 59 59  </i>.<li> <i>YYY
14780 59 2d 4d 4d 2d 44 44 3c 2f 69 3e 3c 62 3e 54 3c  Y-MM-DD</i><b>T<
14790 2f 62 3e 3c 69 3e 48 48 3a 4d 4d 3a 53 53 3c 2f  /b><i>HH:MM:SS</
147a0 69 3e 0a 3c 6c 69 3e 20 3c 69 3e 59 59 59 59 2d  i>.<li> <i>YYYY-
147b0 4d 4d 2d 44 44 3c 2f 69 3e 3c 62 3e 54 3c 2f 62  MM-DD</i><b>T</b
147c0 3e 3c 69 3e 48 48 3a 4d 4d 3a 53 53 2e 53 53 53  ><i>HH:MM:SS.SSS
147d0 3c 2f 69 3e 0a 3c 6c 69 3e 20 3c 69 3e 48 48 3a  </i>.<li> <i>HH:
147e0 4d 4d 3c 2f 69 3e 0a 3c 6c 69 3e 20 3c 69 3e 48  MM</i>.<li> <i>H
147f0 48 3a 4d 4d 3a 53 53 3c 2f 69 3e 0a 3c 6c 69 3e  H:MM:SS</i>.<li>
14800 20 3c 69 3e 48 48 3a 4d 4d 3a 53 53 2e 53 53 53   <i>HH:MM:SS.SSS
14810 3c 2f 69 3e 0a 3c 6c 69 3e 20 3c 62 3e 6e 6f 77  </i>.<li> <b>now
14820 3c 2f 62 3e 0a 3c 6c 69 3e 20 3c 69 3e 44 44 44  </b>.<li> <i>DDD
14830 44 44 44 44 44 44 44 3c 2f 69 3e 0a 3c 2f 6f 6c  DDDDDDD</i>.</ol
14840 3e 29 5e 0a 0a 3c 70 3e 0a 5e 49 6e 20 66 6f 72  >)^..<p>.^In for
14850 6d 61 74 73 20 35 20 74 68 72 6f 75 67 68 20 37  mats 5 through 7
14860 2c 20 74 68 65 20 22 54 22 20 69 73 20 61 20 6c  , the "T" is a l
14870 69 74 65 72 61 6c 20 63 68 61 72 61 63 74 65 72  iteral character
14880 20 73 65 70 61 72 61 74 69 6e 67 20 0a 74 68 65   separating .the
14890 20 64 61 74 65 20 61 6e 64 20 74 68 65 20 74 69   date and the ti
148a0 6d 65 2c 20 61 73 20 72 65 71 75 69 72 65 64 20  me, as required 
148b0 62 79 20 0a 5b 68 74 74 70 3a 2f 2f 77 77 77 2e  by .[http://www.
148c0 77 33 63 2e 6f 72 67 2f 54 52 2f 4e 4f 54 45 2d  w3c.org/TR/NOTE-
148d0 64 61 74 65 74 69 6d 65 20 7c 20 49 53 4f 2d 38  datetime | ISO-8
148e0 36 30 31 5d 2e 20 0a 5e 46 6f 72 6d 61 74 73 20  601]. .^Formats 
148f0 38 20 74 68 72 6f 75 67 68 20 31 30 20 74 68 61  8 through 10 tha
14900 74 20 73 70 65 63 69 66 79 20 6f 6e 6c 79 20 61  t specify only a
14910 20 74 69 6d 65 20 61 73 73 75 6d 65 20 61 20 64   time assume a d
14920 61 74 65 20 6f 66 20 0a 32 30 30 30 2d 30 31 2d  ate of .2000-01-
14930 30 31 2e 20 46 6f 72 6d 61 74 20 31 31 2c 20 74  01. Format 11, t
14940 68 65 20 73 74 72 69 6e 67 20 27 6e 6f 77 27 2c  he string 'now',
14950 20 69 73 20 63 6f 6e 76 65 72 74 65 64 20 69 6e   is converted in
14960 74 6f 20 74 68 65 20 0a 63 75 72 72 65 6e 74 20  to the .current 
14970 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20 61 73  date and time as
14980 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 74   obtained from t
14990 68 65 20 78 43 75 72 72 65 6e 74 54 69 6d 65 20  he xCurrentTime 
149a0 6d 65 74 68 6f 64 0a 6f 66 20 74 68 65 20 5b 73  method.of the [s
149b0 71 6c 69 74 65 33 5f 76 66 73 5d 20 6f 62 6a 65  qlite3_vfs] obje
149c0 63 74 20 69 6e 20 75 73 65 2e 0a 5e 5b 68 74 74  ct in use..^[htt
149d0 70 3a 2f 2f 65 6e 2e 77 69 6b 69 70 65 64 69 61  p://en.wikipedia
149e0 2e 6f 72 67 2f 77 69 6b 69 2f 43 6f 6f 72 64 69  .org/wiki/Coordi
149f0 6e 61 74 65 64 5f 55 6e 69 76 65 72 73 61 6c 5f  nated_Universal_
14a00 54 69 6d 65 20 7c 20 55 6e 69 76 65 72 73 61 6c  Time | Universal
14a10 20 43 6f 6f 72 64 69 6e 61 74 65 64 20 54 69 6d   Coordinated Tim
14a20 65 20 28 55 54 43 29 5d 20 69 73 20 75 73 65 64  e (UTC)] is used
14a30 2e 20 0a 5e 46 6f 72 6d 61 74 20 31 32 20 69 73  . .^Format 12 is
14a40 20 74 68 65 20 0a 5b 68 74 74 70 3a 2f 2f 65 6e   the .[http://en
14a50 2e 77 69 6b 69 70 65 64 69 61 2e 6f 72 67 2f 77  .wikipedia.org/w
14a60 69 6b 69 2f 4a 75 6c 69 61 6e 5f 64 61 79 20 7c  iki/Julian_day |
14a70 20 4a 75 6c 69 61 6e 20 64 61 79 20 6e 75 6d 62   Julian day numb
14a80 65 72 5d 0a 65 78 70 72 65 73 73 65 64 20 61 73  er].expressed as
14a90 20 61 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e   a floating poin
14aa0 74 20 76 61 6c 75 65 2e 0a 3c 2f 70 3e 0a 0a 3c  t value..</p>..<
14ab0 68 33 3e 4d 6f 64 69 66 69 65 72 73 3c 2f 68 33  h3>Modifiers</h3
14ac0 3e 0a 0a 3c 70 3e 5e 54 68 65 20 74 69 6d 65 20  >..<p>^The time 
14ad0 73 74 72 69 6e 67 20 63 61 6e 20 62 65 20 66 6f  string can be fo
14ae0 6c 6c 6f 77 65 64 20 62 79 20 7a 65 72 6f 20 6f  llowed by zero o
14af0 72 20 6d 6f 72 65 20 6d 6f 64 69 66 69 65 72 73  r more modifiers
14b00 20 74 68 61 74 20 0a 61 6c 74 65 72 20 74 68 65   that .alter the
14b10 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20 73   date and time s
14b20 74 72 69 6e 67 2e 20 5e 45 61 63 68 20 6d 6f 64  tring. ^Each mod
14b30 69 66 69 65 72 0a 69 73 20 61 20 74 72 61 6e 73  ifier.is a trans
14b40 66 6f 72 6d 61 74 69 6f 6e 20 74 68 61 74 20 69  formation that i
14b50 73 20 61 70 70 6c 69 65 64 20 74 6f 20 74 68 65  s applied to the
14b60 20 74 69 6d 65 20 76 61 6c 75 65 20 74 6f 20 69   time value to i
14b70 74 73 20 6c 65 66 74 2e 0a 5e 4d 6f 64 69 66 69  ts left..^Modifi
14b80 65 72 73 20 61 72 65 20 61 70 70 6c 69 65 64 20  ers are applied 
14b90 66 72 6f 6d 20 6c 65 66 74 20 74 6f 20 72 69 67  from left to rig
14ba0 68 74 3b 20 6f 72 64 65 72 20 69 73 20 69 6d 70  ht; order is imp
14bb0 6f 72 74 61 6e 74 2e 0a 5e 28 54 68 65 20 61 76  ortant..^(The av
14bc0 61 69 6c 61 62 6c 65 20 6d 6f 64 69 66 69 65 72  ailable modifier
14bd0 73 20 61 72 65 20 61 73 20 66 6f 6c 6c 6f 77 73  s are as follows
14be0 2e 3c 2f 70 3e 0a 0a 3c 6f 6c 3e 0a 3c 6c 69 3e  .</p>..<ol>.<li>
14bf0 20 4e 4e 4e 20 64 61 79 73 0a 3c 6c 69 3e 20 4e   NNN days.<li> N
14c00 4e 4e 20 68 6f 75 72 73 0a 3c 6c 69 3e 20 4e 4e  NN hours.<li> NN
14c10 4e 20 6d 69 6e 75 74 65 73 0a 3c 6c 69 3e 20 4e  N minutes.<li> N
14c20 4e 4e 2e 4e 4e 4e 4e 20 73 65 63 6f 6e 64 73 0a  NN.NNNN seconds.
14c30 3c 6c 69 3e 20 4e 4e 4e 20 6d 6f 6e 74 68 73 0a  <li> NNN months.
14c40 3c 6c 69 3e 20 4e 4e 4e 20 79 65 61 72 73 0a 3c  <li> NNN years.<
14c50 6c 69 3e 20 73 74 61 72 74 20 6f 66 20 6d 6f 6e  li> start of mon
14c60 74 68 0a 3c 6c 69 3e 20 73 74 61 72 74 20 6f 66  th.<li> start of
14c70 20 79 65 61 72 0a 3c 6c 69 3e 20 73 74 61 72 74   year.<li> start
14c80 20 6f 66 20 64 61 79 0a 3c 6c 69 3e 20 77 65 65   of day.<li> wee
14c90 6b 64 61 79 20 4e 0a 3c 6c 69 3e 20 75 6e 69 78  kday N.<li> unix
14ca0 65 70 6f 63 68 0a 3c 6c 69 3e 20 6c 6f 63 61 6c  epoch.<li> local
14cb0 74 69 6d 65 0a 3c 6c 69 3e 20 75 74 63 20 0a 3c  time.<li> utc .<
14cc0 2f 6f 6c 3e 29 5e 0a 0a 3c 70 3e 5e 54 68 65 20  /ol>)^..<p>^The 
14cd0 66 69 72 73 74 20 73 69 78 20 6d 6f 64 69 66 69  first six modifi
14ce0 65 72 73 20 28 31 20 74 68 72 6f 75 67 68 20 36  ers (1 through 6
14cf0 29 20 0a 73 69 6d 70 6c 79 20 61 64 64 20 74 68  ) .simply add th
14d00 65 20 73 70 65 63 69 66 69 65 64 20 61 6d 6f 75  e specified amou
14d10 6e 74 20 6f 66 20 74 69 6d 65 20 74 6f 20 74 68  nt of time to th
14d20 65 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20  e date and time 
14d30 0a 73 70 65 63 69 66 69 65 64 20 62 79 20 74 68  .specified by th
14d40 65 20 70 72 65 63 65 64 69 6e 67 20 74 69 6d 65  e preceding time
14d50 73 74 72 69 6e 67 20 61 6e 64 20 6d 6f 64 69 66  string and modif
14d60 69 65 72 73 2e 0a 5e 4e 6f 74 65 20 74 68 61 74  iers..^Note that
14d70 20 22 26 70 6c 75 73 6d 6e 3b 4e 4e 4e 20 6d 6f   "&plusmn;NNN mo
14d80 6e 74 68 73 22 20 77 6f 72 6b 73 20 62 79 20 72  nths" works by r
14d90 65 6e 64 65 72 69 6e 67 20 74 68 65 20 6f 72 69  endering the ori
14da0 67 69 6e 61 6c 20 64 61 74 65 20 69 6e 74 6f 0a  ginal date into.
14db0 74 68 65 20 59 59 59 59 2d 4d 4d 2d 44 44 20 66  the YYYY-MM-DD f
14dc0 6f 72 6d 61 74 2c 20 61 64 64 69 6e 67 20 74 68  ormat, adding th
14dd0 65 20 26 70 6c 75 73 6d 6e 3b 4e 4e 4e 20 74 6f  e &plusmn;NNN to
14de0 20 74 68 65 20 4d 4d 20 6d 6f 6e 74 68 20 76 61   the MM month va
14df0 6c 75 65 2c 20 74 68 65 6e 0a 6e 6f 72 6d 61 6c  lue, then.normal
14e00 69 7a 69 6e 67 20 74 68 65 20 72 65 73 75 6c 74  izing the result
14e10 2e 20 20 5e 54 68 75 73 2c 20 66 6f 72 20 65 78  .  ^Thus, for ex
14e20 61 6d 70 6c 65 2c 20 74 68 65 20 64 61 74 61 20  ample, the data 
14e30 32 30 30 31 2d 30 33 2d 33 31 20 6d 6f 64 69 66  2001-03-31 modif
14e40 69 65 64 0a 62 79 20 27 2b 31 20 6d 6f 6e 74 68  ied.by '+1 month
14e50 27 20 69 6e 69 74 69 61 6c 6c 79 20 79 69 65 6c  ' initially yiel
14e60 64 73 20 32 30 30 31 2d 30 34 2d 33 31 2c 20 62  ds 2001-04-31, b
14e70 75 74 20 41 70 72 69 6c 20 6f 6e 6c 79 20 68 61  ut April only ha
14e80 73 20 33 30 20 64 61 79 73 0a 73 6f 20 74 68 65  s 30 days.so the
14e90 20 64 61 74 65 20 69 73 20 6e 6f 72 6d 61 6c 69   date is normali
14ea0 7a 65 64 20 74 6f 20 32 30 30 31 2d 30 35 2d 30  zed to 2001-05-0
14eb0 31 2e 20 20 5e 41 20 73 69 6d 69 6c 61 72 20 65  1.  ^A similar e
14ec0 66 66 65 63 74 20 6f 63 63 75 72 73 20 77 68 65  ffect occurs whe
14ed0 6e 0a 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 64  n.the original d
14ee0 61 74 65 20 69 73 20 46 65 62 72 75 61 72 79 20  ate is February 
14ef0 32 39 20 6f 66 20 61 20 6c 65 61 70 79 65 61 72  29 of a leapyear
14f00 20 61 6e 64 20 74 68 65 20 6d 6f 64 69 66 69 65   and the modifie
14f10 72 20 69 73 0a 26 70 6c 75 73 6d 6e 3b 4e 20 79  r is.&plusmn;N y
14f20 65 61 72 73 20 77 68 65 72 65 20 4e 20 69 73 20  ears where N is 
14f30 6e 6f 74 20 61 20 6d 75 6c 74 69 70 6c 65 20 6f  not a multiple o
14f40 66 20 66 6f 75 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e  f four.</p>..<p>
14f50 5e 54 68 65 20 22 73 74 61 72 74 20 6f 66 22 20  ^The "start of" 
14f60 6d 6f 64 69 66 69 65 72 73 20 28 37 20 74 68 72  modifiers (7 thr
14f70 6f 75 67 68 20 39 29 20 73 68 69 66 74 20 74 68  ough 9) shift th
14f80 65 20 64 61 74 65 20 62 61 63 6b 77 61 72 64 73  e date backwards
14f90 20 0a 74 6f 20 74 68 65 20 62 65 67 69 6e 6e 69   .to the beginni
14fa0 6e 67 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e  ng of the curren
14fb0 74 20 6d 6f 6e 74 68 2c 20 79 65 61 72 20 6f 72  t month, year or
14fc0 20 64 61 79 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54   day.</p>..<p>^T
14fd0 68 65 20 22 77 65 65 6b 64 61 79 22 20 6d 6f 64  he "weekday" mod
14fe0 69 66 69 65 72 20 61 64 76 61 6e 63 65 73 20 74  ifier advances t
14ff0 68 65 20 64 61 74 65 20 66 6f 72 77 61 72 64 20  he date forward 
15000 74 6f 20 74 68 65 20 6e 65 78 74 20 64 61 74 65  to the next date
15010 20 0a 77 68 65 72 65 20 74 68 65 20 77 65 65 6b   .where the week
15020 64 61 79 20 6e 75 6d 62 65 72 20 69 73 20 4e 2e  day number is N.
15030 20 53 75 6e 64 61 79 20 69 73 20 30 2c 20 4d 6f   Sunday is 0, Mo
15040 6e 64 61 79 20 69 73 20 31 2c 20 61 6e 64 20 73  nday is 1, and s
15050 6f 20 66 6f 72 74 68 2e 3c 2f 70 3e 0a 0a 3c 70  o forth.</p>..<p
15060 3e 5e 54 68 65 20 22 75 6e 69 78 65 70 6f 63 68  >^The "unixepoch
15070 22 20 6d 6f 64 69 66 69 65 72 20 28 31 31 29 20  " modifier (11) 
15080 6f 6e 6c 79 20 77 6f 72 6b 73 20 69 66 20 69 74  only works if it
15090 20 69 6d 6d 65 64 69 61 74 65 6c 79 20 66 6f 6c   immediately fol
150a0 6c 6f 77 73 20 0a 61 20 74 69 6d 65 73 74 72 69  lows .a timestri
150b0 6e 67 20 69 6e 20 74 68 65 20 44 44 44 44 44 44  ng in the DDDDDD
150c0 44 44 44 44 20 66 6f 72 6d 61 74 2e 20 0a 5e 54  DDDD format. .^T
150d0 68 69 73 20 6d 6f 64 69 66 69 65 72 20 63 61 75  his modifier cau
150e0 73 65 73 20 74 68 65 20 44 44 44 44 44 44 44 44  ses the DDDDDDDD
150f0 44 44 20 74 6f 20 62 65 20 69 6e 74 65 72 70 72  DD to be interpr
15100 65 74 65 64 20 6e 6f 74 20 0a 61 73 20 61 20 4a  eted not .as a J
15110 75 6c 69 61 6e 20 64 61 79 20 6e 75 6d 62 65 72  ulian day number
15120 20 61 73 20 69 74 20 6e 6f 72 6d 61 6c 6c 79 20   as it normally 
15130 77 6f 75 6c 64 20 62 65 2c 20 62 75 74 20 61 73  would be, but as
15140 0a 5b 68 74 74 70 3a 2f 2f 65 6e 2e 77 69 6b 69  .[http://en.wiki
15150 70 65 64 69 61 2e 6f 72 67 2f 77 69 6b 69 2f 55  pedia.org/wiki/U
15160 6e 69 78 5f 74 69 6d 65 20 7c 20 55 6e 69 78 20  nix_time | Unix 
15170 54 69 6d 65 5d 20 2d 20 74 68 65 20 0a 6e 75 6d  Time] - the .num
15180 62 65 72 20 6f 66 20 73 65 63 6f 6e 64 73 20 73  ber of seconds s
15190 69 6e 63 65 20 31 39 37 30 2e 20 20 49 66 20 74  ince 1970.  If t
151a0 68 65 20 22 75 6e 69 78 65 70 6f 63 68 22 20 6d  he "unixepoch" m
151b0 6f 64 69 66 69 65 72 20 64 6f 65 73 20 6e 6f 74  odifier does not
151c0 0a 66 6f 6c 6c 6f 77 20 61 20 74 69 6d 65 73 74  .follow a timest
151d0 72 69 6e 67 20 6f 66 20 74 68 65 20 66 6f 72 6d  ring of the form
151e0 20 44 44 44 44 44 44 44 44 44 44 20 77 68 69 63   DDDDDDDDDD whic
151f0 68 20 65 78 70 72 65 73 73 65 73 20 74 68 65 20  h expresses the 
15200 6e 75 6d 62 65 72 0a 6f 66 20 73 65 63 6f 6e 64  number.of second
15210 73 20 73 69 6e 63 65 20 31 39 37 30 20 6f 72 20  s since 1970 or 
15220 69 66 20 6f 74 68 65 72 20 6d 6f 64 69 66 69 65  if other modifie
15230 72 73 0a 73 65 70 61 72 61 74 65 20 74 68 65 20  rs.separate the 
15240 22 75 6e 69 78 65 70 6f 63 68 22 20 6d 6f 64 69  "unixepoch" modi
15250 66 69 65 72 20 66 72 6f 6d 20 70 72 69 6f 72 20  fier from prior 
15260 44 44 44 44 44 44 44 44 44 44 20 74 68 65 6e 20  DDDDDDDDDD then 
15270 74 68 65 0a 62 65 68 61 76 69 6f 72 20 69 73 20  the.behavior is 
15280 75 6e 64 65 66 69 6e 65 64 2e 0a 44 75 65 20 74  undefined..Due t
15290 6f 20 70 72 65 63 69 73 69 6f 6e 20 6c 69 6d 69  o precision limi
152a0 74 61 74 69 6f 6e 73 20 69 6d 70 6f 73 65 64 20  tations imposed 
152b0 62 79 20 74 68 65 20 69 6d 70 6c 65 6d 65 6e 74  by the implement
152c0 61 74 69 6f 6e 73 20 75 73 65 0a 6f 66 20 36 34  ations use.of 64
152d0 2d 62 69 74 20 69 6e 74 65 67 65 72 73 2c 20 74  -bit integers, t
152e0 68 65 20 22 75 6e 69 78 65 70 6f 63 68 22 20 6d  he "unixepoch" m
152f0 6f 64 69 66 69 65 72 20 6f 6e 6c 79 20 77 6f 72  odifier only wor
15300 6b 73 20 66 6f 72 0a 64 61 74 65 73 20 62 65 74  ks for.dates bet
15310 77 65 65 6e 20 30 30 30 30 2d 30 31 2d 30 31 20  ween 0000-01-01 
15320 30 30 3a 30 30 3a 30 30 20 61 6e 64 20 35 33 35  00:00:00 and 535
15330 32 2d 31 31 2d 30 31 20 31 30 3a 35 32 3a 34 37  2-11-01 10:52:47
15340 20 28 75 6e 69 78 20 74 69 6d 65 73 0a 6f 66 20   (unix times.of 
15350 2d 36 32 31 36 37 32 31 39 32 30 30 20 74 68 72  -62167219200 thr
15360 6f 75 67 68 20 31 30 36 37 35 31 39 39 31 36 37  ough 10675199167
15370 29 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20  ).</p>..<p>^The 
15380 22 6c 6f 63 61 6c 74 69 6d 65 22 20 6d 6f 64 69  "localtime" modi
15390 66 69 65 72 20 28 31 32 29 20 61 73 73 75 6d 65  fier (12) assume
153a0 73 20 74 68 65 20 74 69 6d 65 20 73 74 72 69 6e  s the time strin
153b0 67 20 74 6f 20 69 74 73 20 6c 65 66 74 20 69 73  g to its left is
153c0 20 69 6e 0a 55 6e 69 76 65 72 73 61 6c 20 43 6f   in.Universal Co
153d0 6f 72 64 69 6e 61 74 65 64 20 54 69 6d 65 20 28  ordinated Time (
153e0 55 54 43 29 20 61 6e 64 20 61 64 6a 75 73 74 73  UTC) and adjusts
153f0 20 74 68 65 20 74 69 6d 65 0a 73 74 72 69 6e 67   the time.string
15400 20 73 6f 20 74 68 61 74 20 69 74 20 64 69 73 70   so that it disp
15410 6c 61 79 73 20 6c 6f 63 61 6c 74 69 6d 65 2e 20  lays localtime. 
15420 20 49 66 20 22 6c 6f 63 61 6c 74 69 6d 65 22 0a   If "localtime".
15430 66 6f 6c 6c 6f 77 73 20 61 20 74 69 6d 65 20 74  follows a time t
15440 68 61 74 20 69 73 20 6e 6f 74 20 55 54 43 2c 20  hat is not UTC, 
15450 74 68 65 6e 20 74 68 65 20 62 65 68 61 76 69 6f  then the behavio
15460 72 20 69 73 20 75 6e 64 65 66 69 6e 65 64 2e 0a  r is undefined..
15470 5e 28 54 68 65 20 22 75 74 63 22 20 69 73 20 74  ^(The "utc" is t
15480 68 65 20 6f 70 70 6f 73 69 74 65 20 6f 66 20 22  he opposite of "
15490 6c 6f 63 61 6c 74 69 6d 65 22 2e 20 20 22 75 74  localtime".  "ut
154a0 63 22 20 61 73 73 75 6d 65 73 20 74 68 61 74 20  c" assumes that 
154b0 74 68 65 20 73 74 72 69 6e 67 0a 74 6f 20 69 74  the string.to it
154c0 73 20 6c 65 66 74 20 69 73 20 69 6e 20 74 68 65  s left is in the
154d0 20 6c 6f 63 61 6c 20 74 69 6d 65 7a 6f 6e 65 20   local timezone 
154e0 61 6e 64 20 61 64 6a 75 73 74 73 20 74 68 61 74  and adjusts that
154f0 20 73 74 72 69 6e 67 20 74 6f 20 62 65 20 69 6e   string to be in
15500 20 55 54 43 2e 29 5e 0a 49 66 20 74 68 65 20 70   UTC.)^.If the p
15510 72 69 6f 72 20 73 74 72 69 6e 67 20 69 73 20 6e  rior string is n
15520 6f 74 20 69 6e 20 6c 6f 63 61 6c 74 69 6d 65 2c  ot in localtime,
15530 20 74 68 65 6e 20 74 68 65 20 72 65 73 75 6c 74   then the result
15540 20 6f 66 20 22 75 74 63 22 20 69 73 0a 75 6e 64   of "utc" is.und
15550 65 66 69 6e 65 64 2e 3c 2f 70 3e 0a 0a 3c 68 33  efined.</p>..<h3
15560 3e 45 78 61 6d 70 6c 65 73 3c 2f 68 33 3e 0a 0a  >Examples</h3>..
15570 5e 28 3c 70 3e 43 6f 6d 70 75 74 65 20 74 68 65  ^(<p>Compute the
15580 20 63 75 72 72 65 6e 74 20 64 61 74 65 2e 3c 70   current date.<p
15590 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 53  >..<blockquote>S
155a0 45 4c 45 43 54 20 64 61 74 65 28 27 6e 6f 77 27  ELECT date('now'
155b0 29 3b 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 29  );</blockquote>)
155c0 5e 0a 0a 5e 28 3c 70 3e 43 6f 6d 70 75 74 65 20  ^..^(<p>Compute 
155d0 74 68 65 20 6c 61 73 74 20 64 61 79 20 6f 66 20  the last day of 
155e0 74 68 65 20 63 75 72 72 65 6e 74 20 6d 6f 6e 74  the current mont
155f0 68 2e 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75  h.</p>..<blockqu
15600 6f 74 65 3e 53 45 4c 45 43 54 20 64 61 74 65 28  ote>SELECT date(
15610 27 6e 6f 77 27 2c 27 73 74 61 72 74 20 6f 66 20  'now','start of 
15620 6d 6f 6e 74 68 27 2c 27 2b 31 20 6d 6f 6e 74 68  month','+1 month
15630 27 2c 27 2d 31 20 64 61 79 27 29 3b 0a 3c 2f 62  ','-1 day');.</b
15640 6c 6f 63 6b 71 75 6f 74 65 3e 29 5e 0a 0a 5e 28  lockquote>)^..^(
15650 3c 70 3e 43 6f 6d 70 75 74 65 20 74 68 65 20 64  <p>Compute the d
15660 61 74 65 20 61 6e 64 20 74 69 6d 65 20 67 69 76  ate and time giv
15670 65 6e 20 61 20 75 6e 69 78 20 74 69 6d 65 73 74  en a unix timest
15680 61 6d 70 20 31 30 39 32 39 34 31 34 36 36 2e 3c  amp 1092941466.<
15690 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65  /p>..<blockquote
156a0 3e 0a 20 20 20 20 53 45 4c 45 43 54 20 64 61 74  >.    SELECT dat
156b0 65 74 69 6d 65 28 31 30 39 32 39 34 31 34 36 36  etime(1092941466
156c0 2c 20 27 75 6e 69 78 65 70 6f 63 68 27 29 3b 0a  , 'unixepoch');.
156d0 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 29 5e 0a  </blockquote>)^.
156e0 0a 5e 28 3c 70 3e 43 6f 6d 70 75 74 65 20 74 68  .^(<p>Compute th
156f0 65 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20  e date and time 
15700 67 69 76 65 6e 20 61 20 75 6e 69 78 20 74 69 6d  given a unix tim
15710 65 73 74 61 6d 70 20 31 30 39 32 39 34 31 34 36  estamp 109294146
15720 36 2c 20 61 6e 64 20 0a 63 6f 6d 70 65 6e 73 61  6, and .compensa
15730 74 65 20 66 6f 72 20 79 6f 75 72 20 6c 6f 63 61  te for your loca
15740 6c 20 74 69 6d 65 7a 6f 6e 65 2e 3c 2f 70 3e 0a  l timezone.</p>.
15750 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 20 20  .<blockquote>.  
15760 53 45 4c 45 43 54 20 64 61 74 65 74 69 6d 65 28  SELECT datetime(
15770 31 30 39 32 39 34 31 34 36 36 2c 20 27 75 6e 69  1092941466, 'uni
15780 78 65 70 6f 63 68 27 2c 20 27 6c 6f 63 61 6c 74  xepoch', 'localt
15790 69 6d 65 27 29 3b 0a 3c 2f 62 6c 6f 63 6b 71 75  ime');.</blockqu
157a0 6f 74 65 3e 29 5e 0a 0a 5e 28 3c 70 3e 43 6f 6d  ote>)^..^(<p>Com
157b0 70 75 74 65 20 74 68 65 20 63 75 72 72 65 6e 74  pute the current
157c0 20 75 6e 69 78 20 74 69 6d 65 73 74 61 6d 70 2e   unix timestamp.
157d0 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74  </p>..<blockquot
157e0 65 3e 0a 20 20 53 45 4c 45 43 54 20 73 74 72 66  e>.  SELECT strf
157f0 74 69 6d 65 28 27 25 73 27 2c 27 6e 6f 77 27 29  time('%s','now')
15800 3b 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 29  ;.</blockquote>)
15810 5e 0a 0a 5e 28 3c 70 3e 43 6f 6d 70 75 74 65 20  ^..^(<p>Compute 
15820 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 64 61  the number of da
15830 79 73 20 73 69 6e 63 65 20 74 68 65 20 73 69 67  ys since the sig
15840 6e 69 6e 67 20 6f 66 20 74 68 65 20 55 53 20 44  ning of the US D
15850 65 63 6c 61 72 61 74 69 6f 6e 0a 6f 66 20 49 6e  eclaration.of In
15860 64 65 70 65 6e 64 65 6e 63 65 2e 3c 2f 70 3e 0a  dependence.</p>.
15870 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 20 20  .<blockquote>.  
15880 53 45 4c 45 43 54 20 6a 75 6c 69 61 6e 64 61 79  SELECT julianday
15890 28 27 6e 6f 77 27 29 20 2d 20 6a 75 6c 69 61 6e  ('now') - julian
158a0 64 61 79 28 27 31 37 37 36 2d 30 37 2d 30 34 27  day('1776-07-04'
158b0 29 3b 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e  );.</blockquote>
158c0 29 5e 0a 0a 5e 28 3c 70 3e 43 6f 6d 70 75 74 65  )^..^(<p>Compute
158d0 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 73   the number of s
158e0 65 63 6f 6e 64 73 20 73 69 6e 63 65 20 61 20 70  econds since a p
158f0 61 72 74 69 63 75 6c 61 72 20 6d 6f 6d 65 6e 74  articular moment
15900 20 69 6e 20 32 30 30 34 3a 3c 2f 70 3e 0a 0a 3c   in 2004:</p>..<
15910 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 20 20 53 45  blockquote>.  SE
15920 4c 45 43 54 20 73 74 72 66 74 69 6d 65 28 27 25  LECT strftime('%
15930 73 27 2c 27 6e 6f 77 27 29 20 2d 20 73 74 72 66  s','now') - strf
15940 74 69 6d 65 28 27 25 73 27 2c 27 32 30 30 34 2d  time('%s','2004-
15950 30 31 2d 30 31 20 30 32 3a 33 34 3a 35 36 27 29  01-01 02:34:56')
15960 3b 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 29  ;.</blockquote>)
15970 5e 0a 0a 5e 28 3c 70 3e 0a 43 6f 6d 70 75 74 65  ^..^(<p>.Compute
15980 20 74 68 65 20 64 61 74 65 20 6f 66 20 74 68 65   the date of the
15990 20 66 69 72 73 74 20 54 75 65 73 64 61 79 20 69   first Tuesday i
159a0 6e 20 4f 63 74 6f 62 65 72 0a 66 6f 72 20 74 68  n October.for th
159b0 65 20 63 75 72 72 65 6e 74 20 79 65 61 72 2e 0a  e current year..
159c0 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74  </p>..<blockquot
159d0 65 3e 0a 20 20 53 45 4c 45 43 54 20 64 61 74 65  e>.  SELECT date
159e0 28 27 6e 6f 77 27 2c 27 73 74 61 72 74 20 6f 66  ('now','start of
159f0 20 79 65 61 72 27 2c 27 2b 39 20 6d 6f 6e 74 68   year','+9 month
15a00 73 27 2c 27 77 65 65 6b 64 61 79 20 32 27 29 3b  s','weekday 2');
15a10 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 29 5e  .</blockquote>)^
15a20 0a 0a 5e 28 3c 70 3e 43 6f 6d 70 75 74 65 20 74  ..^(<p>Compute t
15a30 68 65 20 74 69 6d 65 20 73 69 6e 63 65 20 74 68  he time since th
15a40 65 20 75 6e 69 78 20 65 70 6f 63 68 20 69 6e 20  e unix epoch in 
15a50 73 65 63 6f 6e 64 73 20 0a 28 6c 69 6b 65 20 73  seconds .(like s
15a60 74 72 66 74 69 6d 65 28 27 25 73 27 2c 27 6e 6f  trftime('%s','no
15a70 77 27 29 20 65 78 63 65 70 74 20 69 6e 63 6c 75  w') except inclu
15a80 64 65 73 20 66 72 61 63 74 69 6f 6e 61 6c 20 70  des fractional p
15a90 61 72 74 29 3a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63  art):</p>..<bloc
15aa0 6b 71 75 6f 74 65 3e 0a 20 20 53 45 4c 45 43 54  kquote>.  SELECT
15ab0 20 28 6a 75 6c 69 61 6e 64 61 79 28 27 6e 6f 77   (julianday('now
15ac0 27 29 20 2d 20 32 34 34 30 35 38 37 2e 35 29 2a  ') - 2440587.5)*
15ad0 38 36 34 30 30 2e 30 3b 0a 3c 2f 62 6c 6f 63 6b  86400.0;.</block
15ae0 71 75 6f 74 65 3e 29 5e 0a 0a 3c 68 33 3e 43 61  quote>)^..<h3>Ca
15af0 76 65 61 74 73 20 41 6e 64 20 42 75 67 73 3c 2f  veats And Bugs</
15b00 68 33 3e 0a 0a 3c 70 3e 54 68 65 20 63 6f 6d 70  h3>..<p>The comp
15b10 75 74 61 74 69 6f 6e 20 6f 66 20 6c 6f 63 61 6c  utation of local
15b20 20 74 69 6d 65 20 64 65 70 65 6e 64 73 20 68 65   time depends he
15b30 61 76 69 6c 79 20 6f 6e 20 74 68 65 20 77 68 69  avily on the whi
15b40 6d 20 0a 6f 66 20 70 6f 6c 69 74 69 63 69 61 6e  m .of politician
15b50 73 20 61 6e 64 20 69 73 20 74 68 75 73 20 64 69  s and is thus di
15b60 66 66 69 63 75 6c 74 20 74 6f 20 67 65 74 20 63  fficult to get c
15b70 6f 72 72 65 63 74 20 66 6f 72 20 0a 61 6c 6c 20  orrect for .all 
15b80 6c 6f 63 61 6c 65 73 2e 20 5e 49 6e 20 74 68 69  locales. ^In thi
15b90 73 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  s implementation
15ba0 2c 20 74 68 65 20 73 74 61 6e 64 61 72 64 20 43  , the standard C
15bb0 20 6c 69 62 72 61 72 79 20 0a 66 75 6e 63 74 69   library .functi
15bc0 6f 6e 20 6c 6f 63 61 6c 74 69 6d 65 5f 72 28 29  on localtime_r()
15bd0 20 69 73 20 75 73 65 64 20 74 6f 20 61 73 73 69   is used to assi
15be0 73 74 20 69 6e 20 74 68 65 20 63 61 6c 63 75 6c  st in the calcul
15bf0 61 74 69 6f 6e 20 6f 66 20 0a 6c 6f 63 61 6c 20  ation of .local 
15c00 74 69 6d 65 2e 20 20 5e 28 54 68 65 20 0a 6c 6f  time.  ^(The .lo
15c10 63 61 6c 74 69 6d 65 5f 72 28 29 20 43 20 66 75  caltime_r() C fu
15c20 6e 63 74 69 6f 6e 20 6e 6f 72 6d 61 6c 6c 79 20  nction normally 
15c30 6f 6e 6c 79 20 77 6f 72 6b 73 20 66 6f 72 20 79  only works for y
15c40 65 61 72 73 0a 62 65 74 77 65 65 6e 20 31 39 37  ears.between 197
15c50 30 20 61 6e 64 20 32 30 33 37 2e 20 46 6f 72 20  0 and 2037. For 
15c60 64 61 74 65 73 20 6f 75 74 73 69 64 65 20 74 68  dates outside th
15c70 69 73 20 72 61 6e 67 65 2c 20 53 51 4c 69 74 65  is range, SQLite
15c80 20 0a 61 74 74 65 6d 70 74 73 20 74 6f 20 6d 61   .attempts to ma
15c90 70 20 74 68 65 20 79 65 61 72 20 69 6e 74 6f 20  p the year into 
15ca0 61 6e 20 65 71 75 69 76 61 6c 65 6e 74 20 79 65  an equivalent ye
15cb0 61 72 20 77 69 74 68 69 6e 20 0a 74 68 69 73 20  ar within .this 
15cc0 72 61 6e 67 65 2c 20 64 6f 20 74 68 65 20 63 61  range, do the ca
15cd0 6c 63 75 6c 61 74 69 6f 6e 2c 20 74 68 65 6e 20  lculation, then 
15ce0 6d 61 70 20 74 68 65 20 79 65 61 72 20 62 61 63  map the year bac
15cf0 6b 2e 29 5e 3c 2f 70 3e 0a 0a 0a 3c 70 3e 5e 28  k.)^</p>...<p>^(
15d00 54 68 65 73 65 20 66 75 6e 63 74 69 6f 6e 73 20  These functions 
15d10 6f 6e 6c 79 20 77 6f 72 6b 20 66 6f 72 20 64 61  only work for da
15d20 74 65 73 20 62 65 74 77 65 65 6e 20 30 30 30 30  tes between 0000
15d30 2d 30 31 2d 30 31 20 30 30 3a 30 30 3a 30 30 0a  -01-01 00:00:00.
15d40 61 6e 64 20 39 39 39 39 2d 31 32 2d 33 31 20 32  and 9999-12-31 2
15d50 33 3a 35 39 3a 35 39 20 28 6a 75 6c 69 64 61 6e  3:59:59 (julidan
15d60 20 64 61 79 20 6e 75 6d 62 65 72 73 20 31 37 32   day numbers 172
15d70 31 30 35 39 2e 35 20 74 68 72 6f 75 67 68 20 35  1059.5 through 5
15d80 33 37 33 34 38 34 2e 35 29 2e 29 5e 0a 46 6f 72  373484.5).)^.For
15d90 20 64 61 74 65 73 20 6f 75 74 73 69 64 65 20 74   dates outside t
15da0 68 61 74 20 72 61 6e 67 65 2c 20 74 68 65 20 72  hat range, the r
15db0 65 73 75 6c 74 73 20 6f 66 20 74 68 65 73 65 0a  esults of these.
15dc0 66 75 6e 63 74 69 6f 6e 73 20 61 72 65 20 75 6e  functions are un
15dd0 64 65 66 69 6e 65 64 2e 3c 2f 70 3e 0a 0a 3c 70  defined.</p>..<p
15de0 3e 4e 6f 6e 2d 56 69 73 74 61 20 57 69 6e 64 6f  >Non-Vista Windo
15df0 77 73 20 70 6c 61 74 66 6f 72 6d 73 20 6f 6e 6c  ws platforms onl
15e00 79 20 73 75 70 70 6f 72 74 20 6f 6e 65 20 73 65  y support one se
15e10 74 20 6f 66 20 44 53 54 20 72 75 6c 65 73 2e 20  t of DST rules. 
15e20 0a 56 69 73 74 61 20 6f 6e 6c 79 20 73 75 70 70  .Vista only supp
15e30 6f 72 74 73 20 74 77 6f 2e 20 54 68 65 72 65 66  orts two. Theref
15e40 6f 72 65 2c 20 6f 6e 20 74 68 65 73 65 20 70 6c  ore, on these pl
15e50 61 74 66 6f 72 6d 73 2c 20 0a 68 69 73 74 6f 72  atforms, .histor
15e60 69 63 61 6c 20 44 53 54 20 63 61 6c 63 75 6c 61  ical DST calcula
15e70 74 69 6f 6e 73 20 77 69 6c 6c 20 62 65 20 69 6e  tions will be in
15e80 63 6f 72 72 65 63 74 2e 20 0a 46 6f 72 20 65 78  correct. .For ex
15e90 61 6d 70 6c 65 2c 20 69 6e 20 74 68 65 20 55 53  ample, in the US
15ea0 2c 20 69 6e 20 32 30 30 37 20 74 68 65 20 44 53  , in 2007 the DS
15eb0 54 20 72 75 6c 65 73 20 63 68 61 6e 67 65 64 2e  T rules changed.
15ec0 20 0a 4e 6f 6e 2d 56 69 73 74 61 20 57 69 6e 64   .Non-Vista Wind
15ed0 6f 77 73 20 70 6c 61 74 66 6f 72 6d 73 20 61 70  ows platforms ap
15ee0 70 6c 79 20 74 68 65 20 6e 65 77 20 32 30 30 37  ply the new 2007
15ef0 20 44 53 54 20 72 75 6c 65 73 20 0a 74 6f 20 61   DST rules .to a
15f00 6c 6c 20 70 72 65 76 69 6f 75 73 20 79 65 61 72  ll previous year
15f10 73 20 61 73 20 77 65 6c 6c 2e 20 56 69 73 74 61  s as well. Vista
15f20 20 64 6f 65 73 20 73 6f 6d 65 77 68 61 74 20 62   does somewhat b
15f30 65 74 74 65 72 0a 67 65 74 74 69 6e 67 20 72 65  etter.getting re
15f40 73 75 6c 74 73 20 63 6f 72 72 65 63 74 20 62 61  sults correct ba
15f50 63 6b 20 74 6f 20 31 39 38 36 2c 20 77 68 65 6e  ck to 1986, when
15f60 20 74 68 65 20 72 75 6c 65 73 20 77 65 72 65 20   the rules were 
15f70 61 6c 73 6f 20 63 68 61 6e 67 65 64 2e 3c 2f 70  also changed.</p
15f80 3e 0a 0a 3c 70 3e 41 6c 6c 20 69 6e 74 65 72 6e  >..<p>All intern
15f90 61 6c 20 63 6f 6d 70 75 74 61 74 69 6f 6e 73 20  al computations 
15fa0 61 73 73 75 6d 65 20 74 68 65 20 0a 5b 68 74 74  assume the .[htt
15fb0 70 3a 2f 2f 65 6e 2e 77 69 6b 69 70 65 64 69 61  p://en.wikipedia
15fc0 2e 6f 72 67 2f 77 69 6b 69 2f 47 72 65 67 6f 72  .org/wiki/Gregor
15fd0 69 61 6e 5f 63 61 6c 65 6e 64 61 72 20 7c 20 47  ian_calendar | G
15fe0 72 65 67 6f 72 69 61 6e 20 63 61 6c 65 6e 64 61  regorian calenda
15ff0 72 5d 0a 73 79 73 74 65 6d 2e 20 20 49 74 20 69  r].system.  It i
16000 73 20 61 6c 73 6f 20 61 73 73 75 6d 65 64 20 74  s also assumed t
16010 68 61 74 20 65 76 65 72 79 0a 64 61 79 20 69 73  hat every.day is
16020 20 65 78 61 63 74 6c 79 20 38 36 34 30 30 20 73   exactly 86400 s
16030 65 63 6f 6e 64 73 20 69 6e 20 64 75 72 61 74 69  econds in durati
16040 6f 6e 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23  on.</p>..<tcl>.#
16050 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
16060 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
16070 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
16080 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
16090 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 53 65  #############.Se
160a0 63 74 69 6f 6e 20 7b 41 67 67 72 65 67 61 74 65  ction {Aggregate
160b0 20 46 75 6e 63 74 69 6f 6e 73 7d 20 61 67 67 66   Functions} aggf
160c0 75 6e 63 20 7b 2a 61 67 67 66 75 6e 63 7d 0a 3c  unc {*aggfunc}.<
160d0 2f 74 63 6c 3e 0a 0a 3c 70 3e 0a 54 68 65 20 61  /tcl>..<p>.The a
160e0 67 67 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f  ggregate functio
160f0 6e 73 20 73 68 6f 77 6e 20 62 65 6c 6f 77 20 61  ns shown below a
16100 72 65 20 61 76 61 69 6c 61 62 6c 65 20 62 79 20  re available by 
16110 64 65 66 61 75 6c 74 2e 20 20 41 64 64 69 74 69  default.  Additi
16120 6f 6e 61 6c 0a 61 67 67 72 65 67 61 74 65 20 66  onal.aggregate f
16130 75 6e 63 74 69 6f 6e 73 20 77 72 69 74 74 65 6e  unctions written
16140 20 69 6e 20 43 20 6d 61 79 20 62 65 20 61 64 64   in C may be add
16150 65 64 20 75 73 69 6e 67 20 74 68 65 20 0a 5b 73  ed using the .[s
16160 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 66 75  qlite3_create_fu
16170 6e 63 74 69 6f 6e 28 29 5d 3c 2f 61 3e 0a 41 50  nction()]</a>.AP
16180 49 2e 3c 2f 70 3e 0a 0a 3c 70 3e 0a 5e 49 6e 20  I.</p>..<p>.^In 
16190 61 6e 79 20 61 67 67 72 65 67 61 74 65 20 66 75  any aggregate fu
161a0 6e 63 74 69 6f 6e 20 74 68 61 74 20 74 61 6b 65  nction that take
161b0 73 20 61 20 73 69 6e 67 6c 65 20 61 72 67 75 6d  s a single argum
161c0 65 6e 74 2c 20 74 68 61 74 20 61 72 67 75 6d 65  ent, that argume
161d0 6e 74 0a 63 61 6e 20 62 65 20 70 72 65 63 65 64  nt.can be preced
161e0 65 64 20 62 79 20 74 68 65 20 6b 65 79 77 6f 72  ed by the keywor
161f0 64 20 44 49 53 54 49 4e 43 54 2e 20 20 5e 49 6e  d DISTINCT.  ^In
16200 20 73 75 63 68 20 63 61 73 65 73 2c 20 64 75 70   such cases, dup
16210 6c 69 63 61 74 65 0a 65 6c 65 6d 65 6e 74 73 20  licate.elements 
16220 61 72 65 20 66 69 6c 74 65 72 65 64 20 62 65 66  are filtered bef
16230 6f 72 65 20 62 65 69 6e 67 20 70 61 73 73 65 64  ore being passed
16240 20 69 6e 74 6f 20 74 68 65 20 61 67 67 72 65 67   into the aggreg
16250 61 74 65 20 66 75 6e 63 74 69 6f 6e 2e 0a 5e 46  ate function..^F
16260 6f 72 20 65 78 61 6d 70 6c 65 2c 20 74 68 65 20  or example, the 
16270 66 75 6e 63 74 69 6f 6e 20 22 63 6f 75 6e 74 28  function "count(
16280 64 69 73 74 69 6e 63 74 20 58 29 22 20 77 69 6c  distinct X)" wil
16290 6c 20 72 65 74 75 72 6e 20 74 68 65 20 6e 75 6d  l return the num
162a0 62 65 72 0a 6f 66 20 64 69 73 74 69 6e 63 74 20  ber.of distinct 
162b0 76 61 6c 75 65 73 20 6f 66 20 63 6f 6c 75 6d 6e  values of column
162c0 20 58 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68   X instead of th
162d0 65 20 74 6f 74 61 6c 20 6e 75 6d 62 65 72 20 6f  e total number o
162e0 66 20 6e 6f 6e 2d 6e 75 6c 6c 0a 76 61 6c 75 65  f non-null.value
162f0 73 20 69 6e 20 63 6f 6c 75 6d 6e 20 58 2e 0a 3c  s in column X..<
16300 2f 70 3e 0a 0a 3c 74 61 62 6c 65 20 62 6f 72 64  /p>..<table bord
16310 65 72 3d 30 20 63 65 6c 6c 70 61 64 64 69 6e 67  er=0 cellpadding
16320 3d 31 30 3e 0a 3c 74 63 6c 3e 0a 66 75 6e 63 64  =10>.<tcl>.funcd
16330 65 66 20 7b 61 76 67 28 58 29 7d 20 7b 2a 61 76  ef {avg(X)} {*av
16340 67 20 7b 61 76 67 28 29 20 61 67 67 72 65 67 61  g {avg() aggrega
16350 74 65 20 66 75 6e 63 74 69 6f 6e 7d 7d 20 7b 0a  te function}} {.
16360 20 20 5e 54 68 65 20 61 76 67 28 29 20 66 75 6e    ^The avg() fun
16370 63 74 69 6f 6e 0a 20 20 72 65 74 75 72 6e 73 20  ction.  returns 
16380 74 68 65 20 61 76 65 72 61 67 65 20 76 61 6c 75  the average valu
16390 65 20 6f 66 20 61 6c 6c 20 6e 6f 6e 2d 4e 55 4c  e of all non-NUL
163a0 4c 20 3c 69 3e 58 3c 2f 69 3e 20 77 69 74 68 69  L <i>X</i> withi
163b0 6e 20 61 0a 20 20 67 72 6f 75 70 2e 20 20 5e 53  n a.  group.  ^S
163c0 74 72 69 6e 67 20 61 6e 64 20 42 4c 4f 42 20 76  tring and BLOB v
163d0 61 6c 75 65 73 20 74 68 61 74 20 64 6f 20 6e 6f  alues that do no
163e0 74 20 6c 6f 6f 6b 20 6c 69 6b 65 20 6e 75 6d 62  t look like numb
163f0 65 72 73 20 61 72 65 0a 20 20 69 6e 74 65 72 70  ers are.  interp
16400 72 65 74 65 64 20 61 73 20 30 2e 0a 20 20 5e 54  reted as 0..  ^T
16410 68 65 20 72 65 73 75 6c 74 20 6f 66 20 61 76 67  he result of avg
16420 28 29 20 69 73 20 61 6c 77 61 79 73 20 61 20 66  () is always a f
16430 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20 76 61  loating point va
16440 6c 75 65 20 61 73 20 6c 6f 6e 67 20 61 73 0a 20  lue as long as. 
16450 20 61 74 20 74 68 65 72 65 20 69 73 20 61 74 20   at there is at 
16460 6c 65 61 73 74 20 6f 6e 65 20 6e 6f 6e 2d 4e 55  least one non-NU
16470 4c 4c 20 69 6e 70 75 74 20 65 76 65 6e 20 69 66  LL input even if
16480 20 61 6c 6c 0a 20 20 69 6e 70 75 74 73 20 61 72   all.  inputs ar
16490 65 20 69 6e 74 65 67 65 72 73 2e 20 20 5e 54 68  e integers.  ^Th
164a0 65 20 72 65 73 75 6c 74 20 6f 66 20 61 76 67 28  e result of avg(
164b0 29 20 69 73 20 4e 55 4c 4c 20 69 66 20 61 6e 64  ) is NULL if and
164c0 20 6f 6e 6c 79 20 69 66 0a 20 20 74 68 65 72 65   only if.  there
164d0 20 61 72 65 20 6e 6f 20 6e 6f 6e 2d 4e 55 4c 4c   are no non-NULL
164e0 20 69 6e 70 75 74 73 2e 20 20 0a 7d 0a 0a 66 75   inputs.  .}..fu
164f0 6e 63 64 65 66 20 7b 63 6f 75 6e 74 28 58 29 20  ncdef {count(X) 
16500 63 6f 75 6e 74 28 2a 29 7d 20 7b 2a 63 6f 75 6e  count(*)} {*coun
16510 74 20 7b 63 6f 75 6e 74 28 29 20 61 67 67 72 65  t {count() aggre
16520 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 7d 7d 20  gate function}} 
16530 7b 0a 20 20 5e 54 68 65 20 63 6f 75 6e 74 28 58  {.  ^The count(X
16540 29 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72  ) function retur
16550 6e 73 0a 20 20 61 20 63 6f 75 6e 74 20 6f 66 20  ns.  a count of 
16560 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 74 69  the number of ti
16570 6d 65 73 0a 20 20 74 68 61 74 20 3c 69 3e 58 3c  mes.  that <i>X<
16580 2f 69 3e 20 69 73 20 6e 6f 74 20 4e 55 4c 4c 20  /i> is not NULL 
16590 69 6e 20 61 20 67 72 6f 75 70 2e 20 20 5e 54 68  in a group.  ^Th
165a0 65 20 63 6f 75 6e 74 28 2a 29 20 66 75 6e 63 74  e count(*) funct
165b0 69 6f 6e 0a 20 20 28 77 69 74 68 20 6e 6f 20 61  ion.  (with no a
165c0 72 67 75 6d 65 6e 74 73 29 20 72 65 74 75 72 6e  rguments) return
165d0 73 20 74 68 65 20 74 6f 74 61 6c 20 6e 75 6d 62  s the total numb
165e0 65 72 20 6f 66 20 72 6f 77 73 20 69 6e 20 74 68  er of rows in th
165f0 65 20 67 72 6f 75 70 2e 0a 7d 0a 0a 66 75 6e 63  e group..}..func
16600 64 65 66 20 7b 67 72 6f 75 70 5f 63 6f 6e 63 61  def {group_conca
16610 74 28 58 29 20 67 72 6f 75 70 5f 63 6f 6e 63 61  t(X) group_conca
16620 74 28 58 2c 59 29 7d 20 7b 0a 20 20 2a 67 72 6f  t(X,Y)} {.  *gro
16630 75 70 5f 63 6f 6e 63 61 74 20 7b 67 72 6f 75 70  up_concat {group
16640 5f 63 6f 6e 63 61 74 28 29 20 61 67 67 72 65 67  _concat() aggreg
16650 61 74 65 20 66 75 6e 63 74 69 6f 6e 7d 0a 7d 20  ate function}.} 
16660 7b 0a 20 20 5e 54 68 65 20 67 72 6f 75 70 5f 63  {.  ^The group_c
16670 6f 6e 63 61 74 28 29 20 66 75 6e 63 74 69 6f 6e  oncat() function
16680 20 72 65 74 75 72 6e 73 0a 20 20 61 20 73 74 72   returns.  a str
16690 69 6e 67 20 77 68 69 63 68 20 69 73 20 74 68 65  ing which is the
166a0 20 63 6f 6e 63 61 74 65 6e 61 74 69 6f 6e 20 6f   concatenation o
166b0 66 0a 20 20 61 6c 6c 20 6e 6f 6e 2d 4e 55 4c 4c  f.  all non-NULL
166c0 20 76 61 6c 75 65 73 20 6f 66 20 3c 69 3e 58 3c   values of <i>X<
166d0 2f 69 3e 2e 20 20 5e 49 66 20 70 61 72 61 6d 65  /i>.  ^If parame
166e0 74 65 72 20 3c 69 3e 59 3c 2f 69 3e 20 69 73 20  ter <i>Y</i> is 
166f0 70 72 65 73 65 6e 74 20 74 68 65 6e 0a 20 20 69  present then.  i
16700 73 20 69 73 20 75 73 65 64 20 61 73 20 74 68 65  s is used as the
16710 20 73 65 70 61 72 61 74 6f 72 0a 20 20 62 65 74   separator.  bet
16720 77 65 65 6e 20 69 6e 73 74 61 6e 63 65 73 20 6f  ween instances o
16730 66 20 3c 69 3e 58 3c 2f 69 3e 2e 20 20 5e 41 20  f <i>X</i>.  ^A 
16740 63 6f 6d 6d 61 20 28 22 2c 22 29 20 69 73 20 75  comma (",") is u
16750 73 65 64 20 61 73 20 74 68 65 20 73 65 70 61 72  sed as the separ
16760 61 74 6f 72 0a 20 20 69 66 20 3c 69 3e 59 3c 2f  ator.  if <i>Y</
16770 69 3e 20 69 73 20 6f 6d 69 74 74 65 64 2e 20 20  i> is omitted.  
16780 54 68 65 20 6f 72 64 65 72 20 6f 66 20 74 68 65  The order of the
16790 20 63 6f 6e 63 61 74 65 6e 61 74 65 64 20 65 6c   concatenated el
167a0 65 6d 65 6e 74 73 20 69 73 0a 20 20 61 72 62 69  ements is.  arbi
167b0 74 72 61 72 79 2e 0a 7d 0a 0a 66 75 6e 63 64 65  trary..}..funcde
167c0 66 20 7b 6d 61 78 28 58 29 7d 20 7b 2a 6d 61 78  f {max(X)} {*max
167d0 41 67 67 46 75 6e 63 20 2a 61 67 67 5f 6d 61 78  AggFunc *agg_max
167e0 20 7b 6d 61 78 28 29 20 61 67 67 72 65 67 61 74   {max() aggregat
167f0 65 20 66 75 6e 63 74 69 6f 6e 7d 7d 20 7b 0a 20  e function}} {. 
16800 20 5e 54 68 65 20 6d 61 78 28 29 20 61 67 67 72   ^The max() aggr
16810 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 0a 20  egate function. 
16820 20 72 65 74 75 72 6e 73 20 74 68 65 20 6d 61 78   returns the max
16830 69 6d 75 6d 20 76 61 6c 75 65 20 6f 66 20 61 6c  imum value of al
16840 6c 20 76 61 6c 75 65 73 20 69 6e 20 74 68 65 20  l values in the 
16850 67 72 6f 75 70 2e 0a 20 20 5e 54 68 65 20 6d 61  group..  ^The ma
16860 78 69 6d 75 6d 20 76 61 6c 75 65 20 69 73 20 74  ximum value is t
16870 68 65 20 76 61 6c 75 65 20 74 68 61 74 20 77 6f  he value that wo
16880 75 6c 64 20 62 65 20 72 65 74 75 72 6e 65 64 20  uld be returned 
16890 6c 61 73 74 20 69 6e 20 61 6e 0a 20 20 4f 52 44  last in an.  ORD
168a0 45 52 20 42 59 20 6f 6e 20 74 68 65 20 73 61 6d  ER BY on the sam
168b0 65 20 63 6f 6c 75 6d 6e 2e 20 20 5e 41 67 67 72  e column.  ^Aggr
168c0 65 67 61 74 65 20 6d 61 78 28 29 20 72 65 74 75  egate max() retu
168d0 72 6e 73 20 4e 55 4c 4c 20 0a 20 20 69 66 20 61  rns NULL .  if a
168e0 6e 64 20 6f 6e 6c 79 20 69 66 20 74 68 65 72 65  nd only if there
168f0 20 61 72 65 20 6e 6f 20 6e 6f 6e 2d 4e 55 4c 4c   are no non-NULL
16900 20 76 61 6c 75 65 73 20 69 6e 20 74 68 65 20 67   values in the g
16910 72 6f 75 70 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66  roup..}..funcdef
16920 20 7b 6d 69 6e 28 58 29 7d 20 7b 2a 6d 69 6e 41   {min(X)} {*minA
16930 67 67 46 75 6e 63 20 2a 61 67 67 5f 6d 69 6e 20  ggFunc *agg_min 
16940 7b 6d 69 6e 28 29 20 61 67 67 72 65 67 61 74 65  {min() aggregate
16950 20 66 75 6e 63 74 69 6f 6e 7d 7d 20 7b 0a 20 20   function}} {.  
16960 5e 54 68 65 20 6d 69 6e 28 29 20 61 67 67 72 65  ^The min() aggre
16970 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 0a 20 20  gate function.  
16980 72 65 74 75 72 6e 73 20 74 68 65 20 6d 69 6e 69  returns the mini
16990 6d 75 6d 20 6e 6f 6e 2d 4e 55 4c 4c 20 76 61 6c  mum non-NULL val
169a0 75 65 20 6f 66 20 61 6c 6c 20 76 61 6c 75 65 73  ue of all values
169b0 20 69 6e 20 74 68 65 20 67 72 6f 75 70 2e 0a 20   in the group.. 
169c0 20 5e 54 68 65 20 6d 69 6e 69 6d 75 6d 20 76 61   ^The minimum va
169d0 6c 75 65 20 69 73 20 74 68 65 20 66 69 72 73 74  lue is the first
169e0 20 6e 6f 6e 2d 4e 55 4c 4c 20 76 61 6c 75 65 20   non-NULL value 
169f0 74 68 61 74 20 77 6f 75 6c 64 20 61 70 70 65 61  that would appea
16a00 72 0a 20 20 69 6e 20 61 6e 20 4f 52 44 45 52 20  r.  in an ORDER 
16a10 42 59 20 6f 66 20 74 68 65 20 63 6f 6c 75 6d 6e  BY of the column
16a20 2e 0a 20 20 5e 41 67 67 72 65 67 61 74 65 20 6d  ..  ^Aggregate m
16a30 69 6e 28 29 20 72 65 74 75 72 6e 73 20 4e 55 4c  in() returns NUL
16a40 4c 20 69 66 20 61 6e 64 20 6f 6e 6c 79 20 69 66  L if and only if
16a50 20 74 68 65 72 65 20 61 72 65 20 6e 6f 20 6e 6f   there are no no
16a60 6e 2d 4e 55 4c 4c 0a 20 20 76 61 6c 75 65 73 20  n-NULL.  values 
16a70 69 6e 20 74 68 65 20 67 72 6f 75 70 2e 0a 7d 0a  in the group..}.
16a80 0a 66 75 6e 63 64 65 66 20 7b 73 75 6d 28 58 29  .funcdef {sum(X)
16a90 20 74 6f 74 61 6c 28 58 29 7d 20 7b 0a 20 20 2a   total(X)} {.  *
16aa0 73 75 6d 46 75 6e 63 20 2a 73 75 6d 20 2a 74 6f  sumFunc *sum *to
16ab0 74 61 6c 0a 20 20 7b 73 75 6d 28 29 20 61 67 67  tal.  {sum() agg
16ac0 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 7d  regate function}
16ad0 0a 20 20 7b 74 6f 74 61 6c 28 29 20 61 67 67 72  .  {total() aggr
16ae0 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 7d 0a  egate function}.
16af0 7d 20 7b 0a 20 20 5e 54 68 65 20 73 75 6d 28 29  } {.  ^The sum()
16b00 20 61 6e 64 20 74 6f 74 61 6c 28 29 20 61 67 67   and total() agg
16b10 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 73  regate functions
16b20 0a 20 20 72 65 74 75 72 6e 20 73 75 6d 20 6f 66  .  return sum of
16b30 20 61 6c 6c 20 6e 6f 6e 2d 4e 55 4c 4c 20 76 61   all non-NULL va
16b40 6c 75 65 73 20 69 6e 20 74 68 65 20 67 72 6f 75  lues in the grou
16b50 70 2e 0a 20 20 5e 49 66 20 74 68 65 72 65 20 61  p..  ^If there a
16b60 72 65 20 6e 6f 20 6e 6f 6e 2d 4e 55 4c 4c 20 69  re no non-NULL i
16b70 6e 70 75 74 20 72 6f 77 73 20 74 68 65 6e 20 73  nput rows then s
16b80 75 6d 28 29 20 72 65 74 75 72 6e 73 0a 20 20 4e  um() returns.  N
16b90 55 4c 4c 20 62 75 74 20 74 6f 74 61 6c 28 29 20  ULL but total() 
16ba0 72 65 74 75 72 6e 73 20 30 2e 30 2e 0a 20 20 4e  returns 0.0..  N
16bb0 55 4c 4c 20 69 73 20 6e 6f 74 20 6e 6f 72 6d 61  ULL is not norma
16bc0 6c 6c 79 20 61 20 68 65 6c 70 66 75 6c 20 72 65  lly a helpful re
16bd0 73 75 6c 74 20 66 6f 72 20 74 68 65 20 73 75 6d  sult for the sum
16be0 20 6f 66 20 6e 6f 20 72 6f 77 73 0a 20 20 62 75   of no rows.  bu
16bf0 74 20 74 68 65 20 53 51 4c 20 73 74 61 6e 64 61  t the SQL standa
16c00 72 64 20 72 65 71 75 69 72 65 73 20 69 74 20 61  rd requires it a
16c10 6e 64 20 6d 6f 73 74 20 6f 74 68 65 72 0a 20 20  nd most other.  
16c20 53 51 4c 20 64 61 74 61 62 61 73 65 20 65 6e 67  SQL database eng
16c30 69 6e 65 73 20 69 6d 70 6c 65 6d 65 6e 74 20 73  ines implement s
16c40 75 6d 28 29 20 74 68 61 74 20 77 61 79 20 73 6f  um() that way so
16c50 20 53 51 4c 69 74 65 20 64 6f 65 73 20 69 74 20   SQLite does it 
16c60 69 6e 20 74 68 65 0a 20 20 73 61 6d 65 20 77 61  in the.  same wa
16c70 79 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 62 65  y in order to be
16c80 20 63 6f 6d 70 61 74 69 62 6c 65 2e 20 20 20 54   compatible.   T
16c90 68 65 20 6e 6f 6e 2d 73 74 61 6e 64 61 72 64 20  he non-standard 
16ca0 74 6f 74 61 6c 28 29 20 66 75 6e 63 74 69 6f 6e  total() function
16cb0 0a 20 20 69 73 20 70 72 6f 76 69 64 65 64 20 61  .  is provided a
16cc0 73 20 61 20 63 6f 6e 76 65 6e 69 65 6e 74 20 77  s a convenient w
16cd0 61 79 20 74 6f 20 77 6f 72 6b 20 61 72 6f 75 6e  ay to work aroun
16ce0 64 20 74 68 69 73 20 64 65 73 69 67 6e 20 70 72  d this design pr
16cf0 6f 62 6c 65 6d 0a 20 20 69 6e 20 74 68 65 20 53  oblem.  in the S
16d00 51 4c 20 6c 61 6e 67 75 61 67 65 2e 3c 2f 70 3e  QL language.</p>
16d10 0a 0a 20 20 3c 70 3e 5e 54 68 65 20 72 65 73 75  ..  <p>^The resu
16d20 6c 74 20 6f 66 20 74 6f 74 61 6c 28 29 20 69 73  lt of total() is
16d30 20 61 6c 77 61 79 73 20 61 20 66 6c 6f 61 74 69   always a floati
16d40 6e 67 20 70 6f 69 6e 74 20 76 61 6c 75 65 2e 0a  ng point value..
16d50 20 20 5e 54 68 65 20 72 65 73 75 6c 74 20 6f 66    ^The result of
16d60 20 73 75 6d 28 29 20 69 73 20 61 6e 20 69 6e 74   sum() is an int
16d70 65 67 65 72 20 76 61 6c 75 65 20 69 66 20 61 6c  eger value if al
16d80 6c 20 6e 6f 6e 2d 4e 55 4c 4c 20 69 6e 70 75 74  l non-NULL input
16d90 73 20 61 72 65 20 69 6e 74 65 67 65 72 73 2e 0a  s are integers..
16da0 20 20 5e 49 66 20 61 6e 79 20 69 6e 70 75 74 20    ^If any input 
16db0 74 6f 20 73 75 6d 28 29 20 69 73 20 6e 65 69 74  to sum() is neit
16dc0 68 65 72 20 61 6e 20 69 6e 74 65 67 65 72 20 6f  her an integer o
16dd0 72 20 61 20 4e 55 4c 4c 0a 20 20 74 68 65 6e 20  r a NULL.  then 
16de0 73 75 6d 28 29 20 72 65 74 75 72 6e 73 20 61 20  sum() returns a 
16df0 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20 76  floating point v
16e00 61 6c 75 65 0a 20 20 77 68 69 63 68 20 6d 69 67  alue.  which mig
16e10 68 74 20 62 65 20 61 6e 20 61 70 70 72 6f 78 69  ht be an approxi
16e20 6d 61 74 69 6f 6e 20 74 6f 20 74 68 65 20 74 72  mation to the tr
16e30 75 65 20 73 75 6d 2e 3c 2f 70 3e 0a 0a 20 20 3c  ue sum.</p>..  <
16e40 70 3e 5e 53 75 6d 28 29 20 77 69 6c 6c 20 74 68  p>^Sum() will th
16e50 72 6f 77 20 61 6e 20 22 69 6e 74 65 67 65 72 20  row an "integer 
16e60 6f 76 65 72 66 6c 6f 77 22 20 65 78 63 65 70 74  overflow" except
16e70 69 6f 6e 20 69 66 20 61 6c 6c 20 69 6e 70 75 74  ion if all input
16e80 73 0a 20 20 61 72 65 20 69 6e 74 65 67 65 72 73  s.  are integers
16e90 20 6f 72 20 4e 55 4c 4c 0a 20 20 61 6e 64 20 61   or NULL.  and a
16ea0 6e 20 69 6e 74 65 67 65 72 20 6f 76 65 72 66 6c  n integer overfl
16eb0 6f 77 20 6f 63 63 75 72 73 20 61 74 20 61 6e 79  ow occurs at any
16ec0 20 70 6f 69 6e 74 20 64 75 72 69 6e 67 20 74 68   point during th
16ed0 65 20 63 6f 6d 70 75 74 61 74 69 6f 6e 2e 0a 20  e computation.. 
16ee0 20 5e 54 6f 74 61 6c 28 29 20 6e 65 76 65 72 20   ^Total() never 
16ef0 74 68 72 6f 77 73 20 61 6e 20 69 6e 74 65 67 65  throws an intege
16f00 72 20 6f 76 65 72 66 6c 6f 77 2e 0a 7d 0a 3c 2f  r overflow..}.</
16f10 74 63 6c 3e 0a 3c 2f 74 61 62 6c 65 3e 0a 0a 3c  tcl>.</table>..<
16f20 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23  tcl>.###########
16f30 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
16f40 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
16f50 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
16f60 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
16f70 23 23 23 0a 53 65 63 74 69 6f 6e 20 49 4e 53 45  ###.Section INSE
16f80 52 54 20 69 6e 73 65 72 74 20 7b 49 4e 53 45 52  RT insert {INSER
16f90 54 20 2a 49 4e 53 45 52 54 73 7d 0a 0a 42 75 62  T *INSERTs}..Bub
16fa0 62 6c 65 44 69 61 67 72 61 6d 20 69 6e 73 65 72  bleDiagram inser
16fb0 74 2d 73 74 6d 74 20 31 0a 3c 2f 74 63 6c 3e 0a  t-stmt 1.</tcl>.
16fc0 0a 3c 70 3e 54 68 65 20 49 4e 53 45 52 54 20 73  .<p>The INSERT s
16fd0 74 61 74 65 6d 65 6e 74 20 63 6f 6d 65 73 20 69  tatement comes i
16fe0 6e 20 74 68 72 65 65 20 62 61 73 69 63 20 66 6f  n three basic fo
16ff0 72 6d 73 2e 20 20 5e 54 68 65 20 66 69 72 73 74  rms.  ^The first
17000 20 66 6f 72 6d 0a 28 77 69 74 68 20 74 68 65 20   form.(with the 
17010 22 56 41 4c 55 45 53 22 20 6b 65 79 77 6f 72 64  "VALUES" keyword
17020 29 20 63 72 65 61 74 65 73 20 61 20 73 69 6e 67  ) creates a sing
17030 6c 65 20 6e 65 77 20 72 6f 77 20 69 6e 20 61 6e  le new row in an
17040 20 65 78 69 73 74 69 6e 67 20 74 61 62 6c 65 2e   existing table.
17050 0a 5e 49 66 20 6e 6f 20 63 6f 6c 75 6d 6e 2d 6c  .^If no column-l
17060 69 73 74 20 69 73 20 73 70 65 63 69 66 69 65 64  ist is specified
17070 20 74 68 65 6e 20 74 68 65 20 6e 75 6d 62 65 72   then the number
17080 20 6f 66 20 76 61 6c 75 65 73 20 6d 75 73 74 0a   of values must.
17090 62 65 20 74 68 65 20 73 61 6d 65 20 61 73 20 74  be the same as t
170a0 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c  he number of col
170b0 75 6d 6e 73 20 69 6e 20 74 68 65 20 74 61 62 6c  umns in the tabl
170c0 65 2e 20 20 5e 49 66 20 61 20 63 6f 6c 75 6d 6e  e.  ^If a column
170d0 2d 6c 69 73 74 0a 69 73 20 73 70 65 63 69 66 69  -list.is specifi
170e0 65 64 2c 20 74 68 65 6e 20 74 68 65 20 6e 75 6d  ed, then the num
170f0 62 65 72 20 6f 66 20 76 61 6c 75 65 73 20 6d 75  ber of values mu
17100 73 74 20 6d 61 74 63 68 20 74 68 65 20 6e 75 6d  st match the num
17110 62 65 72 20 6f 66 0a 73 70 65 63 69 66 69 65 64  ber of.specified
17120 20 63 6f 6c 75 6d 6e 73 2e 20 20 5e 43 6f 6c 75   columns.  ^Colu
17130 6d 6e 73 20 6f 66 20 74 68 65 20 74 61 62 6c 65  mns of the table
17140 20 74 68 61 74 20 64 6f 20 6e 6f 74 20 61 70 70   that do not app
17150 65 61 72 20 69 6e 20 74 68 65 0a 63 6f 6c 75 6d  ear in the.colum
17160 6e 20 6c 69 73 74 20 61 72 65 20 66 69 6c 6c 65  n list are fille
17170 64 20 77 69 74 68 20 74 68 65 20 64 65 66 61 75  d with the defau
17180 6c 74 20 76 61 6c 75 65 2c 20 6f 72 20 77 69 74  lt value, or wit
17190 68 20 4e 55 4c 4c 20 69 66 20 6e 6f 0a 64 65 66  h NULL if no.def
171a0 61 75 6c 74 20 76 61 6c 75 65 20 69 73 20 73 70  ault value is sp
171b0 65 63 69 66 69 65 64 2e 0a 3c 2f 70 3e 0a 0a 3c  ecified..</p>..<
171c0 70 3e 5e 54 68 65 20 73 65 63 6f 6e 64 20 66 6f  p>^The second fo
171d0 72 6d 20 6f 66 20 74 68 65 20 49 4e 53 45 52 54  rm of the INSERT
171e0 20 73 74 61 74 65 6d 65 6e 74 20 74 61 6b 65 73   statement takes
171f0 20 69 74 73 20 64 61 74 61 20 66 72 6f 6d 20 61   its data from a
17200 0a 53 45 4c 45 43 54 20 73 74 61 74 65 6d 65 6e  .SELECT statemen
17210 74 2e 20 20 5e 54 68 65 20 6e 75 6d 62 65 72 20  t.  ^The number 
17220 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68  of columns in th
17230 65 20 72 65 73 75 6c 74 20 6f 66 20 74 68 65 0a  e result of the.
17240 53 45 4c 45 43 54 20 6d 75 73 74 20 65 78 61 63  SELECT must exac
17250 74 6c 79 20 6d 61 74 63 68 20 74 68 65 20 6e 75  tly match the nu
17260 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20  mber of columns 
17270 69 6e 20 74 68 65 20 74 61 62 6c 65 20 69 66 0a  in the table if.
17280 6e 6f 20 63 6f 6c 75 6d 6e 20 6c 69 73 74 20 69  no column list i
17290 73 20 73 70 65 63 69 66 69 65 64 2c 20 6f 72 20  s specified, or 
172a0 69 74 20 6d 75 73 74 20 6d 61 74 63 68 20 74 68  it must match th
172b0 65 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75  e number of colu
172c0 6d 6e 73 0a 6e 61 6d 65 64 20 69 6e 20 74 68 65  mns.named in the
172d0 20 63 6f 6c 75 6d 6e 20 6c 69 73 74 2e 20 20 5e   column list.  ^
172e0 41 20 6e 65 77 20 65 6e 74 72 79 20 69 73 20 6d  A new entry is m
172f0 61 64 65 20 69 6e 20 74 68 65 20 74 61 62 6c 65  ade in the table
17300 0a 66 6f 72 20 65 76 65 72 79 20 72 6f 77 20 6f  .for every row o
17310 66 20 74 68 65 20 53 45 4c 45 43 54 20 72 65 73  f the SELECT res
17320 75 6c 74 2e 20 20 5e 54 68 65 20 53 45 4c 45 43  ult.  ^The SELEC
17330 54 20 6d 61 79 20 62 65 20 73 69 6d 70 6c 65 0a  T may be simple.
17340 6f 72 20 63 6f 6d 70 6f 75 6e 64 2e 3c 2f 70 3e  or compound.</p>
17350 0a 0a 3c 70 3e 5e 54 68 65 20 74 68 69 72 64 20  ..<p>^The third 
17360 66 6f 72 6d 20 6f 66 20 61 6e 20 49 4e 53 45 52  form of an INSER
17370 54 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 77  T statement is w
17380 69 74 68 20 44 45 46 41 55 4c 54 20 56 41 4c 55  ith DEFAULT VALU
17390 45 53 2e 0a 5e 28 54 68 65 20 49 4e 53 45 52 54  ES..^(The INSERT
173a0 20 2e 2e 2e 20 44 45 46 41 55 4c 54 20 56 41 4c   ... DEFAULT VAL
173b0 55 45 53 20 73 74 61 74 65 6d 65 6e 74 20 73 69  UES statement si
173c0 6d 70 6c 79 20 63 72 65 61 74 65 73 20 61 20 73  mply creates a s
173d0 69 6e 67 6c 65 20 6e 65 77 0a 72 6f 77 20 69 6e  ingle new.row in
173e0 20 74 68 65 20 74 61 62 6c 65 20 69 6e 20 77 68   the table in wh
173f0 69 63 68 20 65 61 63 68 20 63 6f 6c 75 6d 6e 20  ich each column 
17400 69 73 20 66 69 6c 6c 65 64 20 77 69 74 68 20 69  is filled with i
17410 74 73 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65  ts default value
17420 2e 29 5e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65  .)^</p>..<p>^The
17430 20 6f 70 74 69 6f 6e 61 6c 20 63 6f 6e 66 6c 69   optional confli
17440 63 74 2d 63 6c 61 75 73 65 20 61 6c 6c 6f 77 73  ct-clause allows
17450 20 74 68 65 20 73 70 65 63 69 66 69 63 61 74 69   the specificati
17460 6f 6e 20 6f 66 20 61 6e 20 61 6c 74 65 72 6e 61  on of an alterna
17470 74 69 76 65 0a 63 6f 6e 73 74 72 61 69 6e 74 20  tive.constraint 
17480 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75 74  conflict resolut
17490 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 20 74 6f  ion algorithm to
174a0 20 75 73 65 20 64 75 72 69 6e 67 20 74 68 69 73   use during this
174b0 20 6f 6e 65 20 49 4e 53 45 52 54 20 63 6f 6d 6d   one INSERT comm
174c0 61 6e 64 2e 0a 53 65 65 20 74 68 65 20 73 65 63  and..See the sec
174d0 74 69 6f 6e 20 74 69 74 6c 65 64 0a 5b 4f 4e 20  tion titled.[ON 
174e0 43 4f 4e 46 4c 49 43 54 5d 20 66 6f 72 20 61 64  CONFLICT] for ad
174f0 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61  ditional informa
17500 74 69 6f 6e 2e 0a 5e 46 6f 72 20 63 6f 6d 70 61  tion..^For compa
17510 74 69 62 69 6c 69 74 79 20 77 69 74 68 20 4d 79  tibility with My
17520 53 51 4c 2c 20 74 68 65 20 70 61 72 73 65 72 20  SQL, the parser 
17530 61 6c 6c 6f 77 73 20 74 68 65 20 75 73 65 20 6f  allows the use o
17540 66 20 74 68 65 0a 73 69 6e 67 6c 65 20 6b 65 79  f the.single key
17550 77 6f 72 64 20 3c 61 20 68 72 65 66 3d 22 6c 61  word <a href="la
17560 6e 67 5f 72 65 70 6c 61 63 65 2e 68 74 6d 6c 22  ng_replace.html"
17570 3e 52 45 50 4c 41 43 45 3c 2f 61 3e 20 61 73 20  >REPLACE</a> as 
17580 61 6e 20 0a 61 6c 69 61 73 20 66 6f 72 20 22 49  an .alias for "I
17590 4e 53 45 52 54 20 4f 52 20 52 45 50 4c 41 43 45  NSERT OR REPLACE
175a0 22 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 5e 28 54 68  "..</p>..<p>^(Th
175b0 65 20 6f 70 74 69 6f 6e 61 6c 20 22 3c 69 3e 64  e optional "<i>d
175c0 61 74 61 62 61 73 65 2d 6e 61 6d 65 3c 2f 69 3e  atabase-name</i>
175d0 3c 62 3e 2e 3c 2f 62 3e 22 20 70 72 65 66 69 78  <b>.</b>" prefix
175e0 20 6f 6e 20 74 68 65 20 3c 69 3e 74 61 62 6c 65   on the <i>table
175f0 2d 6e 61 6d 65 3c 2f 69 3e 0a 69 73 20 73 75 70  -name</i>.is sup
17600 70 6f 72 74 20 66 6f 72 20 74 6f 70 2d 6c 65 76  port for top-lev
17610 65 6c 20 49 4e 53 45 52 54 20 73 74 61 74 65 6d  el INSERT statem
17620 65 6e 74 73 20 6f 6e 6c 79 2e 29 5e 20 20 5e 54  ents only.)^  ^T
17630 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 20 6d 75  he table name mu
17640 73 74 20 62 65 0a 75 6e 71 75 61 6c 69 66 69 65  st be.unqualifie
17650 64 20 66 6f 72 20 49 4e 53 45 52 54 20 73 74 61  d for INSERT sta
17660 74 65 6d 65 6e 74 73 20 74 68 61 74 20 6f 63 63  tements that occ
17670 75 72 20 77 69 74 68 69 6e 20 5b 43 52 45 41 54  ur within [CREAT
17680 45 20 54 52 49 47 47 45 52 5d 20 73 74 61 74 65  E TRIGGER] state
17690 6d 65 6e 74 73 2e 0a 5e 53 69 6d 69 6c 61 72 6c  ments..^Similarl
176a0 79 2c 20 74 68 65 20 22 44 45 46 41 55 4c 54 20  y, the "DEFAULT 
176b0 56 41 4c 55 45 53 22 20 66 6f 72 6d 20 6f 66 20  VALUES" form of 
176c0 74 68 65 20 49 4e 53 45 52 54 20 73 74 61 74 65  the INSERT state
176d0 6d 65 6e 74 20 69 73 20 73 75 70 70 6f 72 74 65  ment is supporte
176e0 64 20 66 6f 72 0a 74 6f 70 2d 6c 65 76 65 6c 20  d for.top-level 
176f0 49 4e 53 45 52 54 20 73 74 61 74 65 6d 65 6e 74  INSERT statement
17700 73 20 6f 6e 6c 79 20 61 6e 64 20 6e 6f 74 20 66  s only and not f
17710 6f 72 20 49 4e 53 45 52 54 20 73 74 61 74 65 6d  or INSERT statem
17720 65 6e 74 73 20 77 69 74 68 69 6e 0a 74 72 69 67  ents within.trig
17730 67 65 72 73 2e 0a 3c 70 3e 0a 0a 3c 74 63 6c 3e  gers..<p>..<tcl>
17740 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  .###############
17750 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17760 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17770 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17780 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a  ###############.
17790 53 65 63 74 69 6f 6e 20 7b 4f 4e 20 43 4f 4e 46  Section {ON CONF
177a0 4c 49 43 54 20 63 6c 61 75 73 65 7d 20 63 6f 6e  LICT clause} con
177b0 66 6c 69 63 74 20 7b 7b 63 6f 6e 66 6c 69 63 74  flict {{conflict
177c0 20 63 6c 61 75 73 65 7d 20 7b 4f 4e 20 43 4f 4e   clause} {ON CON
177d0 46 4c 49 43 54 7d 7d 0a 0a 42 75 62 62 6c 65 44  FLICT}}..BubbleD
177e0 69 61 67 72 61 6d 20 63 6f 6e 66 6c 69 63 74 2d  iagram conflict-
177f0 63 6c 61 75 73 65 0a 3c 2f 74 63 6c 3e 0a 0a 3c  clause.</tcl>..<
17800 70 3e 54 68 65 20 4f 4e 20 43 4f 4e 46 4c 49 43  p>The ON CONFLIC
17810 54 20 63 6c 61 75 73 65 20 69 73 20 6e 6f 74 20  T clause is not 
17820 61 20 73 65 70 61 72 61 74 65 20 53 51 4c 20 63  a separate SQL c
17830 6f 6d 6d 61 6e 64 2e 20 20 49 74 20 69 73 20 61  ommand.  It is a
17840 0a 6e 6f 6e 2d 73 74 61 6e 64 61 72 64 20 63 6c  .non-standard cl
17850 61 75 73 65 20 74 68 61 74 20 63 61 6e 20 61 70  ause that can ap
17860 70 65 61 72 20 69 6e 20 6d 61 6e 79 20 6f 74 68  pear in many oth
17870 65 72 20 53 51 4c 20 63 6f 6d 6d 61 6e 64 73 2e  er SQL commands.
17880 0a 49 74 20 69 73 20 67 69 76 65 6e 20 69 74 73  .It is given its
17890 20 6f 77 6e 20 73 65 63 74 69 6f 6e 20 69 6e 20   own section in 
178a0 74 68 69 73 20 64 6f 63 75 6d 65 6e 74 20 62 65  this document be
178b0 63 61 75 73 65 20 69 74 20 69 73 20 6e 6f 74 0a  cause it is not.
178c0 70 61 72 74 20 6f 66 20 73 74 61 6e 64 61 72 64  part of standard
178d0 20 53 51 4c 20 61 6e 64 20 74 68 65 72 65 66 6f   SQL and therefo
178e0 72 65 20 6d 69 67 68 74 20 6e 6f 74 20 62 65 20  re might not be 
178f0 66 61 6d 69 6c 69 61 72 2e 3c 2f 70 3e 0a 0a 3c  familiar.</p>..<
17900 70 3e 5e 54 68 65 20 73 79 6e 74 61 78 20 66 6f  p>^The syntax fo
17910 72 20 74 68 65 20 4f 4e 20 43 4f 4e 46 4c 49 43  r the ON CONFLIC
17920 54 20 63 6c 61 75 73 65 20 69 73 20 61 73 20 73  T clause is as s
17930 68 6f 77 6e 20 61 62 6f 76 65 20 66 6f 72 0a 74  hown above for.t
17940 68 65 20 43 52 45 41 54 45 20 54 41 42 4c 45 20  he CREATE TABLE 
17950 63 6f 6d 6d 61 6e 64 2e 20 20 5e 46 6f 72 20 74  command.  ^For t
17960 68 65 20 49 4e 53 45 52 54 20 61 6e 64 0a 55 50  he INSERT and.UP
17970 44 41 54 45 20 63 6f 6d 6d 61 6e 64 73 2c 20 74  DATE commands, t
17980 68 65 20 6b 65 79 77 6f 72 64 73 20 22 4f 4e 20  he keywords "ON 
17990 43 4f 4e 46 4c 49 43 54 22 20 61 72 65 20 72 65  CONFLICT" are re
179a0 70 6c 61 63 65 64 20 62 79 20 22 4f 52 22 2c 20  placed by "OR", 
179b0 74 6f 20 6d 61 6b 65 0a 74 68 65 20 73 79 6e 74  to make.the synt
179c0 61 78 20 73 65 65 6d 20 6d 6f 72 65 20 6e 61 74  ax seem more nat
179d0 75 72 61 6c 2e 20 20 5e 46 6f 72 20 65 78 61 6d  ural.  ^For exam
179e0 70 6c 65 2c 20 69 6e 73 74 65 61 64 20 6f 66 0a  ple, instead of.
179f0 22 49 4e 53 45 52 54 20 4f 4e 20 43 4f 4e 46 4c  "INSERT ON CONFL
17a00 49 43 54 20 49 47 4e 4f 52 45 22 20 77 65 20 68  ICT IGNORE" we h
17a10 61 76 65 20 22 49 4e 53 45 52 54 20 4f 52 20 49  ave "INSERT OR I
17a20 47 4e 4f 52 45 22 2e 0a 54 68 65 20 6b 65 79 77  GNORE"..The keyw
17a30 6f 72 64 73 20 63 68 61 6e 67 65 20 62 75 74 20  ords change but 
17a40 74 68 65 20 6d 65 61 6e 69 6e 67 20 6f 66 20 74  the meaning of t
17a50 68 65 20 63 6c 61 75 73 65 20 69 73 20 74 68 65  he clause is the
17a60 20 73 61 6d 65 0a 65 69 74 68 65 72 20 77 61 79   same.either way
17a70 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20 4f  .</p>..<p>^The O
17a80 4e 20 43 4f 4e 46 4c 49 43 54 20 63 6c 61 75 73  N CONFLICT claus
17a90 65 20 73 70 65 63 69 66 69 65 73 20 61 6e 20 61  e specifies an a
17aa0 6c 67 6f 72 69 74 68 6d 20 75 73 65 64 20 74 6f  lgorithm used to
17ab0 20 72 65 73 6f 6c 76 65 0a 63 6f 6e 73 74 72 61   resolve.constra
17ac0 69 6e 74 20 63 6f 6e 66 6c 69 63 74 73 2e 20 20  int conflicts.  
17ad0 5e 54 68 65 72 65 20 61 72 65 20 66 69 76 65 20  ^There are five 
17ae0 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75 74  conflict resolut
17af0 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 20 63 68  ion algorithm ch
17b00 6f 69 63 65 73 3a 0a 52 4f 4c 4c 42 41 43 4b 2c  oices:.ROLLBACK,
17b10 20 41 42 4f 52 54 2c 20 46 41 49 4c 2c 20 49 47   ABORT, FAIL, IG
17b20 4e 4f 52 45 2c 20 61 6e 64 20 52 45 50 4c 41 43  NORE, and REPLAC
17b30 45 2e 0a 5e 54 68 65 20 64 65 66 61 75 6c 74 20  E..^The default 
17b40 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75 74  conflict resolut
17b50 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 20 69 73  ion algorithm is
17b60 20 41 42 4f 52 54 2e 20 20 54 68 69 73 0a 69 73   ABORT.  This.is
17b70 20 77 68 61 74 20 74 68 65 79 20 6d 65 61 6e 3a   what they mean:
17b80 3c 2f 70 3e 0a 0a 3c 64 6c 3e 0a 3c 64 74 3e 3c  </p>..<dl>.<dt><
17b90 62 3e 52 4f 4c 4c 42 41 43 4b 3c 2f 62 3e 3c 2f  b>ROLLBACK</b></
17ba0 64 74 3e 0a 3c 64 64 3e 3c 70 3e 5e 57 68 65 6e  dt>.<dd><p>^When
17bb0 20 61 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69   a constraint vi
17bc0 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72 73 2c 20  olation occurs, 
17bd0 61 6e 20 69 6d 6d 65 64 69 61 74 65 20 52 4f 4c  an immediate ROL
17be0 4c 42 41 43 4b 0a 6f 63 63 75 72 73 2c 20 74 68  LBACK.occurs, th
17bf0 75 73 20 65 6e 64 69 6e 67 20 74 68 65 20 63 75  us ending the cu
17c00 72 72 65 6e 74 20 74 72 61 6e 73 61 63 74 69 6f  rrent transactio
17c10 6e 2c 20 61 6e 64 20 74 68 65 20 63 6f 6d 6d 61  n, and the comma
17c20 6e 64 20 61 62 6f 72 74 73 0a 77 69 74 68 20 61  nd aborts.with a
17c30 20 72 65 74 75 72 6e 20 63 6f 64 65 20 6f 66 20   return code of 
17c40 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e  SQLITE_CONSTRAIN
17c50 54 2e 20 20 5e 49 66 20 6e 6f 20 74 72 61 6e 73  T.  ^If no trans
17c60 61 63 74 69 6f 6e 20 69 73 0a 61 63 74 69 76 65  action is.active
17c70 20 28 6f 74 68 65 72 20 74 68 61 6e 20 74 68 65   (other than the
17c80 20 69 6d 70 6c 69 65 64 20 74 72 61 6e 73 61 63   implied transac
17c90 74 69 6f 6e 20 74 68 61 74 20 69 73 20 63 72 65  tion that is cre
17ca0 61 74 65 64 20 6f 6e 20 65 76 65 72 79 0a 63 6f  ated on every.co
17cb0 6d 6d 61 6e 64 29 20 74 68 65 6e 20 74 68 69 73  mmand) then this
17cc0 20 61 6c 67 6f 72 69 74 68 6d 20 77 6f 72 6b 73   algorithm works
17cd0 20 74 68 65 20 73 61 6d 65 20 61 73 20 41 42 4f   the same as ABO
17ce0 52 54 2e 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a 3c 64  RT.</p></dd>..<d
17cf0 74 3e 3c 62 3e 41 42 4f 52 54 3c 2f 62 3e 3c 2f  t><b>ABORT</b></
17d00 64 74 3e 0a 3c 64 64 3e 3c 70 3e 5e 57 68 65 6e  dt>.<dd><p>^When
17d10 20 61 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69   a constraint vi
17d20 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72 73 2c 20  olation occurs, 
17d30 74 68 65 20 63 6f 6d 6d 61 6e 64 20 62 61 63 6b  the command back
17d40 73 20 6f 75 74 0a 61 6e 79 20 70 72 69 6f 72 20  s out.any prior 
17d50 63 68 61 6e 67 65 73 20 69 74 20 6d 69 67 68 74  changes it might
17d60 20 68 61 76 65 20 6d 61 64 65 20 61 6e 64 20 61   have made and a
17d70 62 6f 72 74 73 20 77 69 74 68 20 61 20 72 65 74  borts with a ret
17d80 75 72 6e 20 63 6f 64 65 0a 6f 66 20 53 51 4c 49  urn code.of SQLI
17d90 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 2e 20 20  TE_CONSTRAINT.  
17da0 5e 42 75 74 20 6e 6f 20 52 4f 4c 4c 42 41 43 4b  ^But no ROLLBACK
17db0 20 69 73 20 65 78 65 63 75 74 65 64 20 73 6f 20   is executed so 
17dc0 63 68 61 6e 67 65 73 0a 66 72 6f 6d 20 70 72 69  changes.from pri
17dd0 6f 72 20 63 6f 6d 6d 61 6e 64 73 20 77 69 74 68  or commands with
17de0 69 6e 20 74 68 65 20 73 61 6d 65 20 74 72 61 6e  in the same tran
17df0 73 61 63 74 69 6f 6e 0a 61 72 65 20 70 72 65 73  saction.are pres
17e00 65 72 76 65 64 2e 20 20 54 68 69 73 20 69 73 20  erved.  This is 
17e10 74 68 65 20 64 65 66 61 75 6c 74 20 62 65 68 61  the default beha
17e20 76 69 6f 72 2e 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a  vior.</p></dd>..
17e30 3c 64 74 3e 3c 62 3e 46 41 49 4c 3c 2f 62 3e 3c  <dt><b>FAIL</b><
17e40 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 5e 57 68 65  /dt>.<dd><p>^Whe
17e50 6e 20 61 20 63 6f 6e 73 74 72 61 69 6e 74 20 76  n a constraint v
17e60 69 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72 73 2c  iolation occurs,
17e70 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20 61 62 6f   the command abo
17e80 72 74 73 20 77 69 74 68 20 61 0a 72 65 74 75 72  rts with a.retur
17e90 6e 20 63 6f 64 65 20 53 51 4c 49 54 45 5f 43 4f  n code SQLITE_CO
17ea0 4e 53 54 52 41 49 4e 54 2e 20 20 5e 42 75 74 20  NSTRAINT.  ^But 
17eb0 61 6e 79 20 63 68 61 6e 67 65 73 20 74 6f 20 74  any changes to t
17ec0 68 65 20 64 61 74 61 62 61 73 65 20 74 68 61 74  he database that
17ed0 0a 74 68 65 20 63 6f 6d 6d 61 6e 64 20 6d 61 64  .the command mad
17ee0 65 20 70 72 69 6f 72 20 74 6f 20 65 6e 63 6f 75  e prior to encou
17ef0 6e 74 65 72 69 6e 67 20 74 68 65 20 63 6f 6e 73  ntering the cons
17f00 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e  traint violation
17f10 0a 61 72 65 20 70 72 65 73 65 72 76 65 64 20 61  .are preserved a
17f20 6e 64 20 61 72 65 20 6e 6f 74 20 62 61 63 6b 65  nd are not backe
17f30 64 20 6f 75 74 2e 20 20 5e 46 6f 72 20 65 78 61  d out.  ^For exa
17f40 6d 70 6c 65 2c 20 69 66 20 61 6e 20 55 50 44 41  mple, if an UPDA
17f50 54 45 0a 73 74 61 74 65 6d 65 6e 74 20 65 6e 63  TE.statement enc
17f60 6f 75 6e 74 65 72 65 64 20 61 20 63 6f 6e 73 74  ountered a const
17f70 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20  raint violation 
17f80 6f 6e 20 74 68 65 20 31 30 30 74 68 20 72 6f 77  on the 100th row
17f90 20 74 68 61 74 0a 69 74 20 61 74 74 65 6d 70 74   that.it attempt
17fa0 73 20 74 6f 20 75 70 64 61 74 65 2c 20 74 68 65  s to update, the
17fb0 6e 20 74 68 65 20 66 69 72 73 74 20 39 39 20 72  n the first 99 r
17fc0 6f 77 20 63 68 61 6e 67 65 73 20 61 72 65 20 70  ow changes are p
17fd0 72 65 73 65 72 76 65 64 0a 62 75 74 20 63 68 61  reserved.but cha
17fe0 6e 67 65 73 20 74 6f 20 72 6f 77 73 20 31 30 30  nges to rows 100
17ff0 20 61 6e 64 20 62 65 79 6f 6e 64 20 6e 65 76 65   and beyond neve
18000 72 20 6f 63 63 75 72 2e 3c 2f 70 3e 3c 2f 64 64  r occur.</p></dd
18010 3e 0a 0a 3c 64 74 3e 3c 62 3e 49 47 4e 4f 52 45  >..<dt><b>IGNORE
18020 3c 2f 62 3e 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70  </b></dt>.<dd><p
18030 3e 5e 57 68 65 6e 20 61 20 63 6f 6e 73 74 72 61  >^When a constra
18040 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 63  int violation oc
18050 63 75 72 73 2c 20 74 68 65 20 6f 6e 65 20 72 6f  curs, the one ro
18060 77 20 74 68 61 74 20 63 6f 6e 74 61 69 6e 73 0a  w that contains.
18070 74 68 65 20 63 6f 6e 73 74 72 61 69 6e 74 20 76  the constraint v
18080 69 6f 6c 61 74 69 6f 6e 20 69 73 20 6e 6f 74 20  iolation is not 
18090 69 6e 73 65 72 74 65 64 20 6f 72 20 63 68 61 6e  inserted or chan
180a0 67 65 64 2e 20 20 5e 42 75 74 20 74 68 65 20 63  ged.  ^But the c
180b0 6f 6d 6d 61 6e 64 0a 63 6f 6e 74 69 6e 75 65 73  ommand.continues
180c0 20 65 78 65 63 75 74 69 6e 67 20 6e 6f 72 6d 61   executing norma
180d0 6c 6c 79 2e 20 20 5e 4f 74 68 65 72 20 72 6f 77  lly.  ^Other row
180e0 73 20 62 65 66 6f 72 65 20 61 6e 64 20 61 66 74  s before and aft
180f0 65 72 20 74 68 65 20 72 6f 77 20 74 68 61 74 0a  er the row that.
18100 63 6f 6e 74 61 69 6e 65 64 20 74 68 65 20 63 6f  contained the co
18110 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69  nstraint violati
18120 6f 6e 20 63 6f 6e 74 69 6e 75 65 20 74 6f 20 62  on continue to b
18130 65 20 69 6e 73 65 72 74 65 64 20 6f 72 20 75 70  e inserted or up
18140 64 61 74 65 64 0a 6e 6f 72 6d 61 6c 6c 79 2e 20  dated.normally. 
18150 20 5e 4e 6f 20 65 72 72 6f 72 20 69 73 20 72 65   ^No error is re
18160 74 75 72 6e 65 64 20 77 68 65 6e 20 74 68 65 20  turned when the 
18170 49 47 4e 4f 52 45 20 63 6f 6e 66 6c 69 63 74 20  IGNORE conflict 
18180 72 65 73 6f 6c 75 74 69 6f 6e 0a 61 6c 67 6f 72  resolution.algor
18190 69 74 68 6d 20 69 73 20 75 73 65 64 2e 3c 2f 70  ithm is used.</p
181a0 3e 3c 2f 64 64 3e 0a 0a 3c 64 74 3e 3c 62 3e 52  ></dd>..<dt><b>R
181b0 45 50 4c 41 43 45 3c 2f 62 3e 3c 2f 64 74 3e 0a  EPLACE</b></dt>.
181c0 3c 64 64 3e 3c 70 3e 5e 57 68 65 6e 20 61 20 55  <dd><p>^When a U
181d0 4e 49 51 55 45 20 63 6f 6e 73 74 72 61 69 6e 74  NIQUE constraint
181e0 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72   violation occur
181f0 73 2c 20 74 68 65 20 70 72 65 2d 65 78 69 73 74  s, the pre-exist
18200 69 6e 67 20 72 6f 77 73 0a 74 68 61 74 20 61 72  ing rows.that ar
18210 65 20 63 61 75 73 69 6e 67 20 74 68 65 20 63 6f  e causing the co
18220 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69  nstraint violati
18230 6f 6e 20 61 72 65 20 72 65 6d 6f 76 65 64 20 70  on are removed p
18240 72 69 6f 72 20 74 6f 20 69 6e 73 65 72 74 69 6e  rior to insertin
18250 67 0a 6f 72 20 75 70 64 61 74 69 6e 67 20 74 68  g.or updating th
18260 65 20 63 75 72 72 65 6e 74 20 72 6f 77 2e 20 20  e current row.  
18270 5e 54 68 75 73 20 74 68 65 20 69 6e 73 65 72 74  ^Thus the insert
18280 20 6f 72 20 75 70 64 61 74 65 20 61 6c 77 61 79   or update alway
18290 73 20 6f 63 63 75 72 73 2e 0a 5e 54 68 65 20 63  s occurs..^The c
182a0 6f 6d 6d 61 6e 64 20 63 6f 6e 74 69 6e 75 65 73  ommand continues
182b0 20 65 78 65 63 75 74 69 6e 67 20 6e 6f 72 6d 61   executing norma
182c0 6c 6c 79 20 66 6f 6c 6c 6f 77 69 6e 67 20 52 45  lly following RE
182d0 50 4c 41 43 45 2e 20 20 0a 5e 4e 6f 20 65 72 72  PLACE.  .^No err
182e0 6f 72 20 69 73 20 72 65 74 75 72 6e 65 64 20 62  or is returned b
182f0 79 20 74 68 65 20 52 45 50 4c 41 43 45 20 63 6f  y the REPLACE co
18300 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f  nflict resolutio
18310 6e 2e 0a 5e 49 66 20 61 20 4e 4f 54 20 4e 55 4c  n..^If a NOT NUL
18320 4c 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f  L constraint vio
18330 6c 61 74 69 6f 6e 20 6f 63 63 75 72 73 2c 20 74  lation occurs, t
18340 68 65 20 4e 55 4c 4c 20 76 61 6c 75 65 20 69 73  he NULL value is
18350 20 72 65 70 6c 61 63 65 64 0a 62 79 20 74 68 65   replaced.by the
18360 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 66   default value f
18370 6f 72 20 74 68 61 74 20 63 6f 6c 75 6d 6e 2e 20  or that column. 
18380 20 5e 49 66 20 74 68 65 20 63 6f 6c 75 6d 6e 20   ^If the column 
18390 68 61 73 20 6e 6f 20 64 65 66 61 75 6c 74 0a 76  has no default.v
183a0 61 6c 75 65 2c 20 74 68 65 6e 20 74 68 65 20 41  alue, then the A
183b0 42 4f 52 54 20 61 6c 67 6f 72 69 74 68 6d 20 69  BORT algorithm i
183c0 73 20 75 73 65 64 2e 20 20 5e 49 66 20 61 20 43  s used.  ^If a C
183d0 48 45 43 4b 20 63 6f 6e 73 74 72 61 69 6e 74 20  HECK constraint 
183e0 76 69 6f 6c 61 74 69 6f 6e 0a 6f 63 63 75 72 73  violation.occurs
183f0 20 74 68 65 6e 20 74 68 65 20 49 47 4e 4f 52 45   then the IGNORE
18400 20 61 6c 67 6f 72 69 74 68 6d 20 69 73 20 75 73   algorithm is us
18410 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 57 68 65  ed.</p>..<p>^Whe
18420 6e 20 74 68 69 73 20 63 6f 6e 66 6c 69 63 74 20  n this conflict 
18430 72 65 73 6f 6c 75 74 69 6f 6e 20 73 74 72 61 74  resolution strat
18440 65 67 79 20 64 65 6c 65 74 65 73 20 72 6f 77 73  egy deletes rows
18450 20 69 6e 20 6f 72 64 65 72 20 74 6f 0a 73 61 74   in order to.sat
18460 69 73 66 79 20 61 20 63 6f 6e 73 74 72 61 69 6e  isfy a constrain
18470 74 2c 20 5b 43 52 45 41 54 45 20 54 52 49 47 47  t, [CREATE TRIGG
18480 45 52 20 7c 20 64 65 6c 65 74 65 20 74 72 69 67  ER | delete trig
18490 67 65 72 73 5d 20 6f 6e 6c 79 20 66 69 72 65 20  gers] only fire 
184a0 69 66 0a 5b 72 65 63 75 72 73 69 76 65 5f 74 72  if.[recursive_tr
184b0 69 67 67 65 72 73 20 70 72 61 67 6d 61 20 7c 20  iggers pragma | 
184c0 72 65 63 75 72 73 69 76 65 20 74 72 69 67 67 65  recursive trigge
184d0 72 73 5d 20 61 72 65 20 65 6e 61 62 6c 65 64 2e  rs] are enabled.
184e0 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20 5b 73  </p>..<p>^The [s
184f0 71 6c 69 74 65 33 5f 75 70 64 61 74 65 5f 68 6f  qlite3_update_ho
18500 6f 6b 20 7c 20 75 70 64 61 74 65 20 68 6f 6f 6b  ok | update hook
18510 5d 20 69 73 20 6e 6f 74 20 69 6e 76 6f 6b 65 64  ] is not invoked
18520 20 66 6f 72 20 72 6f 77 73 20 74 68 61 74 0a 61   for rows that.a
18530 72 65 20 64 65 6c 65 74 65 64 20 62 79 20 61 6e  re deleted by an
18540 20 4f 52 20 52 45 50 4c 41 43 45 20 72 65 73 6f   OR REPLACE reso
18550 6c 75 74 69 6f 6e 2e 20 20 5e 4e 6f 72 20 69 73  lution.  ^Nor is
18560 20 74 68 65 20 0a 5b 73 71 6c 69 74 65 33 5f 63   the .[sqlite3_c
18570 68 61 6e 67 65 73 20 7c 20 63 68 61 6e 67 65 20  hanges | change 
18580 63 6f 75 6e 74 65 72 5d 20 69 6e 63 72 65 6d 65  counter] increme
18590 6e 74 65 64 2e 0a 54 68 65 20 65 78 63 65 70 74  nted..The except
185a0 69 6f 6e 61 6c 20 62 65 68 61 76 69 6f 72 73 20  ional behaviors 
185b0 64 65 66 69 6e 65 64 20 69 6e 20 74 68 69 73 20  defined in this 
185c0 70 61 72 61 67 72 61 70 68 20 6d 69 67 68 74 20  paragraph might 
185d0 63 68 61 6e 67 65 20 0a 69 6e 20 61 20 66 75 74  change .in a fut
185e0 75 72 65 20 72 65 6c 65 61 73 65 2e 3c 2f 70 3e  ure release.</p>
185f0 0a 3c 2f 64 6c 3e 0a 0a 3c 70 3e 5e 54 68 65 20  .</dl>..<p>^The 
18600 61 6c 67 6f 72 69 74 68 6d 20 73 70 65 63 69 66  algorithm specif
18610 69 65 64 20 69 6e 20 74 68 65 20 4f 52 20 63 6c  ied in the OR cl
18620 61 75 73 65 20 6f 66 20 61 20 49 4e 53 45 52 54  ause of a INSERT
18630 20 6f 72 20 55 50 44 41 54 45 0a 6f 76 65 72 72   or UPDATE.overr
18640 69 64 65 73 20 61 6e 79 20 61 6c 67 6f 72 69 74  ides any algorit
18650 68 6d 20 73 70 65 63 69 66 69 65 64 20 69 6e 20  hm specified in 
18660 61 20 43 52 45 41 54 45 20 54 41 42 4c 45 2e 0a  a CREATE TABLE..
18670 5e 49 66 20 6e 6f 20 61 6c 67 6f 72 69 74 68 6d  ^If no algorithm
18680 20 69 73 20 73 70 65 63 69 66 69 65 64 20 61 6e   is specified an
18690 79 77 68 65 72 65 2c 20 74 68 65 20 41 42 4f 52  ywhere, the ABOR
186a0 54 20 61 6c 67 6f 72 69 74 68 6d 20 69 73 20 75  T algorithm is u
186b0 73 65 64 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a  sed.</p>..<tcl>.
186c0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
186d0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
186e0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
186f0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18700 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 53  ##############.S
18710 65 63 74 69 6f 6e 20 52 45 49 4e 44 45 58 20 72  ection REINDEX r
18720 65 69 6e 64 65 78 20 52 45 49 4e 44 45 58 0a 0a  eindex REINDEX..
18730 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 72 65  BubbleDiagram re
18740 69 6e 64 65 78 2d 73 74 6d 74 20 31 0a 3c 2f 74  index-stmt 1.</t
18750 63 6c 3e 0a 0a 3c 70 3e 5e 54 68 65 20 52 45 49  cl>..<p>^The REI
18760 4e 44 45 58 20 63 6f 6d 6d 61 6e 64 20 69 73 20  NDEX command is 
18770 75 73 65 64 20 74 6f 20 64 65 6c 65 74 65 20 61  used to delete a
18780 6e 64 20 72 65 63 72 65 61 74 65 20 69 6e 64 69  nd recreate indi
18790 63 65 73 20 66 72 6f 6d 20 73 63 72 61 74 63 68  ces from scratch
187a0 2e 0a 54 68 69 73 20 69 73 20 75 73 65 66 75 6c  ..This is useful
187b0 20 77 68 65 6e 20 74 68 65 20 64 65 66 69 6e 69   when the defini
187c0 74 69 6f 6e 20 6f 66 20 61 20 63 6f 6c 6c 61 74  tion of a collat
187d0 69 6f 6e 20 73 65 71 75 65 6e 63 65 20 68 61 73  ion sequence has
187e0 20 63 68 61 6e 67 65 64 2e 0a 3c 2f 70 3e 0a 0a   changed..</p>..
187f0 3c 70 3e 5e 49 6e 20 74 68 65 20 66 69 72 73 74  <p>^In the first
18800 20 66 6f 72 6d 2c 20 61 6c 6c 20 69 6e 64 69 63   form, all indic
18810 65 73 20 69 6e 20 61 6c 6c 20 61 74 74 61 63 68  es in all attach
18820 65 64 20 64 61 74 61 62 61 73 65 73 20 74 68 61  ed databases tha
18830 74 20 75 73 65 20 74 68 65 0a 6e 61 6d 65 64 20  t use the.named 
18840 63 6f 6c 6c 61 74 69 6f 6e 20 73 65 71 75 65 6e  collation sequen
18850 63 65 20 61 72 65 20 72 65 63 72 65 61 74 65 64  ce are recreated
18860 2e 20 5e 28 49 6e 20 74 68 65 20 73 65 63 6f 6e  . ^(In the secon
18870 64 20 66 6f 72 6d 2c 20 69 66 20 0a 3c 69 3e 26  d form, if .<i>&
18880 23 39 31 3b 64 61 74 61 62 61 73 65 2d 6e 61 6d  #91;database-nam
18890 65 2e 26 23 39 33 3b 74 61 62 6c 65 2f 69 6e 64  e.&#93;table/ind
188a0 65 78 2d 6e 61 6d 65 3c 2f 69 3e 20 69 64 65 6e  ex-name</i> iden
188b0 74 69 66 69 65 73 20 61 20 74 61 62 6c 65 2c 0a  tifies a table,.
188c0 74 68 65 6e 20 61 6c 6c 20 69 6e 64 69 63 65 73  then all indices
188d0 0a 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68  .associated with
188e0 20 74 68 65 20 74 61 62 6c 65 20 61 72 65 20 72   the table are r
188f0 65 62 75 69 6c 74 2e 29 5e 20 5e 49 66 20 61 6e  ebuilt.)^ ^If an
18900 20 69 6e 64 65 78 20 69 73 20 69 64 65 6e 74 69   index is identi
18910 66 69 65 64 2c 20 74 68 65 6e 20 6f 6e 6c 79 0a  fied, then only.
18920 74 68 69 73 20 73 70 65 63 69 66 69 63 20 69 6e  this specific in
18930 64 65 78 20 69 73 20 64 65 6c 65 74 65 64 20 61  dex is deleted a
18940 6e 64 20 72 65 63 72 65 61 74 65 64 2e 0a 3c 2f  nd recreated..</
18950 70 3e 0a 0a 3c 70 3e 5e 49 66 20 6e 6f 20 3c 69  p>..<p>^If no <i
18960 3e 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3c 2f  >database-name</
18970 69 3e 20 69 73 20 73 70 65 63 69 66 69 65 64 20  i> is specified 
18980 61 6e 64 20 74 68 65 72 65 20 65 78 69 73 74 73  and there exists
18990 20 62 6f 74 68 20 61 20 74 61 62 6c 65 20 6f 72   both a table or
189a0 0a 69 6e 64 65 78 20 61 6e 64 20 61 20 63 6f 6c  .index and a col
189b0 6c 61 74 69 6f 6e 20 73 65 71 75 65 6e 63 65 20  lation sequence 
189c0 6f 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64  of the specified
189d0 20 6e 61 6d 65 2c 20 74 68 65 6e 20 69 6e 64 69   name, then indi
189e0 63 65 73 20 61 73 73 6f 63 69 61 74 65 64 0a 77  ces associated.w
189f0 69 74 68 20 74 68 65 20 63 6f 6c 6c 61 74 69 6f  ith the collatio
18a00 6e 20 73 65 71 75 65 6e 63 65 20 6f 6e 6c 79 20  n sequence only 
18a10 61 72 65 20 72 65 63 6f 6e 73 74 72 75 63 74 65  are reconstructe
18a20 64 2e 20 54 68 69 73 20 61 6d 62 69 67 75 69 74  d. This ambiguit
18a30 79 20 6d 61 79 20 62 65 0a 64 69 73 70 65 6c 6c  y may be.dispell
18a40 65 64 20 62 79 20 61 6c 77 61 79 73 20 73 70 65  ed by always spe
18a50 63 69 66 79 69 6e 67 20 61 20 3c 69 3e 64 61 74  cifying a <i>dat
18a60 61 62 61 73 65 2d 6e 61 6d 65 3c 2f 69 3e 20 77  abase-name</i> w
18a70 68 65 6e 20 72 65 69 6e 64 65 78 69 6e 67 20 61  hen reindexing a
18a80 0a 73 70 65 63 69 66 69 63 20 74 61 62 6c 65 20  .specific table 
18a90 6f 72 20 69 6e 64 65 78 2e 0a 0a 3c 74 63 6c 3e  or index...<tcl>
18aa0 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  .###############
18ab0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18ac0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18ad0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18ae0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18af0 0a 53 65 63 74 69 6f 6e 20 52 45 50 4c 41 43 45  .Section REPLACE
18b00 20 72 65 70 6c 61 63 65 20 52 45 50 4c 41 43 45   replace REPLACE
18b10 0a 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 5e 54 68  ..</tcl>..<p>^Th
18b20 65 20 52 45 50 4c 41 43 45 20 63 6f 6d 6d 61 6e  e REPLACE comman
18b30 64 20 69 73 20 61 6e 20 61 6c 69 61 73 20 66 6f  d is an alias fo
18b40 72 20 74 68 65 20 22 5b 4f 4e 20 43 4f 4e 46 4c  r the "[ON CONFL
18b50 49 43 54 20 7c 20 49 4e 53 45 52 54 20 4f 52 20  ICT | INSERT OR 
18b60 52 45 50 4c 41 43 45 5d 22 0a 76 61 72 69 61 6e  REPLACE]".varian
18b70 74 20 6f 66 20 74 68 65 20 5b 49 4e 53 45 52 54  t of the [INSERT
18b80 5d 20 63 6f 6d 6d 61 6e 64 2e 20 20 0a 54 68 69  ] command.  .Thi
18b90 73 20 61 6c 69 61 73 20 69 73 20 70 72 6f 76 69  s alias is provi
18ba0 64 65 64 20 66 6f 72 20 63 6f 6d 70 61 74 69 62  ded for compatib
18bb0 69 6c 69 74 79 20 6f 74 68 65 72 20 53 51 4c 20  ility other SQL 
18bc0 64 61 74 61 62 61 73 65 20 65 6e 67 69 6e 65 73  database engines
18bd0 2e 20 20 53 65 65 20 74 68 65 20 0a 5b 49 4e 53  .  See the .[INS
18be0 45 52 54 5d 20 63 6f 6d 6d 61 6e 64 20 64 6f 63  ERT] command doc
18bf0 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 61  umentation for a
18c00 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d  dditional inform
18c10 61 74 69 6f 6e 2e 3c 2f 70 3e 20 20 0a 0a 3c 74  ation.</p>  ..<t
18c20 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23  cl>.############
18c30 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18c40 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18c50 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18c60 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18c70 23 23 23 0a 53 65 63 74 69 6f 6e 20 53 45 4c 45  ###.Section SELE
18c80 43 54 20 73 65 6c 65 63 74 20 7b 53 45 4c 45 43  CT select {SELEC
18c90 54 20 71 75 65 72 79 7d 0a 0a 42 75 62 62 6c 65  T query}..Bubble
18ca0 44 69 61 67 72 61 6d 20 73 65 6c 65 63 74 2d 73  Diagram select-s
18cb0 74 6d 74 20 31 0a 42 75 62 62 6c 65 44 69 61 67  tmt 1.BubbleDiag
18cc0 72 61 6d 20 73 65 6c 65 63 74 2d 63 6f 72 65 0a  ram select-core.
18cd0 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 72 65  BubbleDiagram re
18ce0 73 75 6c 74 2d 63 6f 6c 75 6d 6e 0a 42 75 62 62  sult-column.Bubb
18cf0 6c 65 44 69 61 67 72 61 6d 20 6a 6f 69 6e 2d 73  leDiagram join-s
18d00 6f 75 72 63 65 0a 42 75 62 62 6c 65 44 69 61 67  ource.BubbleDiag
18d10 72 61 6d 20 73 69 6e 67 6c 65 2d 73 6f 75 72 63  ram single-sourc
18d20 65 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20  e.BubbleDiagram 
18d30 6a 6f 69 6e 2d 6f 70 0a 42 75 62 62 6c 65 44 69  join-op.BubbleDi
18d40 61 67 72 61 6d 20 6a 6f 69 6e 2d 63 6f 6e 73 74  agram join-const
18d50 72 61 69 6e 74 0a 42 75 62 62 6c 65 44 69 61 67  raint.BubbleDiag
18d60 72 61 6d 20 6f 72 64 65 72 69 6e 67 2d 74 65 72  ram ordering-ter
18d70 6d 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20  m.BubbleDiagram 
18d80 63 6f 6d 70 6f 75 6e 64 2d 6f 70 65 72 61 74 6f  compound-operato
18d90 72 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 65  r.</tcl>..<p>The
18da0 20 53 45 4c 45 43 54 20 73 74 61 74 65 6d 65 6e   SELECT statemen
18db0 74 20 69 73 20 75 73 65 64 20 74 6f 20 71 75 65  t is used to que
18dc0 72 79 20 74 68 65 20 64 61 74 61 62 61 73 65 2e  ry the database.
18dd0 20 20 5e 54 68 65 0a 72 65 73 75 6c 74 20 6f 66    ^The.result of
18de0 20 61 20 53 45 4c 45 43 54 20 69 73 20 7a 65 72   a SELECT is zer
18df0 6f 20 6f 72 20 6d 6f 72 65 20 72 6f 77 73 20 6f  o or more rows o
18e00 66 20 64 61 74 61 20 77 68 65 72 65 20 65 61 63  f data where eac
18e10 68 20 72 6f 77 0a 68 61 73 20 61 20 66 69 78 65  h row.has a fixe
18e20 64 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75  d number of colu
18e30 6d 6e 73 2e 20 20 5e 54 68 65 20 6e 75 6d 62 65  mns.  ^The numbe
18e40 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20  r of columns in 
18e50 74 68 65 0a 72 65 73 75 6c 74 20 69 73 20 73 70  the.result is sp
18e60 65 63 69 66 69 65 64 20 62 79 20 74 68 65 20 65  ecified by the e
18e70 78 70 72 65 73 73 69 6f 6e 20 6c 69 73 74 20 69  xpression list i
18e80 6e 20 62 65 74 77 65 65 6e 20 74 68 65 0a 53 45  n between the.SE
18e90 4c 45 43 54 20 61 6e 64 20 46 52 4f 4d 20 6b 65  LECT and FROM ke
18ea0 79 77 6f 72 64 73 2e 20 20 5e 41 6e 79 20 61 72  ywords.  ^Any ar
18eb0 62 69 74 72 61 72 79 20 65 78 70 72 65 73 73 69  bitrary expressi
18ec0 6f 6e 20 63 61 6e 20 62 65 20 75 73 65 64 0a 61  on can be used.a
18ed0 73 20 61 20 72 65 73 75 6c 74 2e 20 20 5e 49 66  s a result.  ^If
18ee0 20 61 20 72 65 73 75 6c 74 20 65 78 70 72 65 73   a result expres
18ef0 73 69 6f 6e 20 69 73 20 7d 0a 68 64 5f 70 75 74  sion is }.hd_put
18f00 73 20 22 5b 4f 70 65 72 61 74 6f 72 20 2a 5d 20  s "[Operator *] 
18f10 74 68 65 6e 20 61 6c 6c 20 63 6f 6c 75 6d 6e 73  then all columns
18f20 20 6f 66 20 61 6c 6c 20 74 61 62 6c 65 73 20 61   of all tables a
18f30 72 65 20 73 75 62 73 74 69 74 75 74 65 64 5c 6e  re substituted\n
18f40 22 0a 68 64 5f 70 75 74 73 20 22 66 6f 72 20 74  ".hd_puts "for t
18f50 68 61 74 20 6f 6e 65 20 65 78 70 72 65 73 73 69  hat one expressi
18f60 6f 6e 2e 20 20 5e 28 49 66 20 74 68 65 20 65 78  on.  ^(If the ex
18f70 70 72 65 73 73 69 6f 6e 20 69 73 20 74 68 65 20  pression is the 
18f80 6e 61 6d 65 20 6f 66 5c 6e 22 0a 68 64 5f 70 75  name of\n".hd_pu
18f90 74 73 20 22 61 20 74 61 62 6c 65 20 66 6f 6c 6c  ts "a table foll
18fa0 6f 77 65 64 20 62 79 20 5b 4f 70 65 72 61 74 6f  owed by [Operato
18fb0 72 20 2e 2a 5d 20 74 68 65 6e 20 74 68 65 20 72  r .*] then the r
18fc0 65 73 75 6c 74 20 69 73 20 61 6c 6c 20 63 6f 6c  esult is all col
18fd0 75 6d 6e 73 5c 6e 22 0a 68 64 5f 70 75 74 73 20  umns\n".hd_puts 
18fe0 7b 69 6e 20 74 68 61 74 20 6f 6e 65 20 74 61 62  {in that one tab
18ff0 6c 65 2e 3c 2f 70 3e 29 5e 0a 0a 3c 70 3e 5e 54  le.</p>)^..<p>^T
19000 68 65 20 44 49 53 54 49 4e 43 54 20 6b 65 79 77  he DISTINCT keyw
19010 6f 72 64 20 63 61 75 73 65 73 20 61 20 73 75 62  ord causes a sub
19020 73 65 74 20 6f 66 20 72 65 73 75 6c 74 20 72 6f  set of result ro
19030 77 73 20 74 6f 20 62 65 20 72 65 74 75 72 6e 65  ws to be returne
19040 64 2c 20 0a 69 6e 20 77 68 69 63 68 20 65 61 63  d, .in which eac
19050 68 20 72 65 73 75 6c 74 20 72 6f 77 20 69 73 20  h result row is 
19060 64 69 66 66 65 72 65 6e 74 2e 20 20 5e 4e 55 4c  different.  ^NUL
19070 4c 20 76 61 6c 75 65 73 20 61 72 65 20 6e 6f 74  L values are not
19080 20 74 72 65 61 74 65 64 20 61 73 20 0a 64 69 73   treated as .dis
19090 74 69 6e 63 74 20 66 72 6f 6d 20 65 61 63 68 20  tinct from each 
190a0 6f 74 68 65 72 2e 20 20 5e 54 68 65 20 64 65 66  other.  ^The def
190b0 61 75 6c 74 20 62 65 68 61 76 69 6f 72 20 69 73  ault behavior is
190c0 20 74 68 61 74 20 61 6c 6c 20 72 65 73 75 6c 74   that all result
190d0 20 72 6f 77 73 20 0a 62 65 20 72 65 74 75 72 6e   rows .be return
190e0 65 64 2c 20 77 68 69 63 68 20 63 61 6e 20 62 65  ed, which can be
190f0 20 6d 61 64 65 20 65 78 70 6c 69 63 69 74 20 77   made explicit w
19100 69 74 68 20 74 68 65 20 6b 65 79 77 6f 72 64 20  ith the keyword 
19110 41 4c 4c 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68  ALL.</p>..<p>^Th
19120 65 20 71 75 65 72 79 20 69 73 20 65 78 65 63 75  e query is execu
19130 74 65 64 20 61 67 61 69 6e 73 74 20 6f 6e 65 20  ted against one 
19140 6f 72 20 6d 6f 72 65 20 74 61 62 6c 65 73 20 73  or more tables s
19150 70 65 63 69 66 69 65 64 20 61 66 74 65 72 0a 74  pecified after.t
19160 68 65 20 46 52 4f 4d 20 6b 65 79 77 6f 72 64 2e  he FROM keyword.
19170 20 20 5e 49 66 20 6d 75 6c 74 69 70 6c 65 20 74    ^If multiple t
19180 61 62 6c 65 73 20 6e 61 6d 65 73 20 61 72 65 20  ables names are 
19190 73 65 70 61 72 61 74 65 64 20 62 79 20 63 6f 6d  separated by com
191a0 6d 61 73 2c 0a 74 68 65 6e 20 74 68 65 20 71 75  mas,.then the qu
191b0 65 72 79 20 69 73 20 61 67 61 69 6e 73 74 20 74  ery is against t
191c0 68 65 20 63 72 6f 73 73 20 6a 6f 69 6e 20 6f 66  he cross join of
191d0 20 74 68 65 20 76 61 72 69 6f 75 73 20 74 61 62   the various tab
191e0 6c 65 73 2e 0a 5e 54 68 65 20 66 75 6c 6c 20 53  les..^The full S
191f0 51 4c 2d 39 32 20 6a 6f 69 6e 20 73 79 6e 74 61  QL-92 join synta
19200 78 20 63 61 6e 20 61 6c 73 6f 20 62 65 20 75 73  x can also be us
19210 65 64 20 74 6f 20 73 70 65 63 69 66 79 20 6a 6f  ed to specify jo
19220 69 6e 73 2e 0a 5e 41 20 73 75 62 2d 71 75 65 72  ins..^A sub-quer
19230 79 0a 69 6e 20 70 61 72 65 6e 74 68 65 73 65 73  y.in parentheses
19240 20 6d 61 79 20 62 65 20 73 75 62 73 74 69 74 75   may be substitu
19250 74 65 64 20 66 6f 72 20 61 6e 79 20 74 61 62 6c  ted for any tabl
19260 65 20 6e 61 6d 65 20 69 6e 20 74 68 65 20 46 52  e name in the FR
19270 4f 4d 20 63 6c 61 75 73 65 2e 0a 5e 54 68 65 20  OM clause..^The 
19280 65 6e 74 69 72 65 20 46 52 4f 4d 20 63 6c 61 75  entire FROM clau
19290 73 65 20 6d 61 79 20 62 65 20 6f 6d 69 74 74 65  se may be omitte
192a0 64 2c 20 69 6e 20 77 68 69 63 68 20 63 61 73 65  d, in which case
192b0 20 74 68 65 20 72 65 73 75 6c 74 20 69 73 20 61   the result is a
192c0 0a 73 69 6e 67 6c 65 20 72 6f 77 20 63 6f 6e 73  .single row cons
192d0 69 73 74 69 6e 67 20 6f 66 20 74 68 65 20 76 61  isting of the va
192e0 6c 75 65 73 20 6f 66 20 74 68 65 20 65 78 70 72  lues of the expr
192f0 65 73 73 69 6f 6e 20 6c 69 73 74 2e 0a 3c 2f 70  ession list..</p
19300 3e 0a 0a 3c 70 3e 5e 54 68 65 20 57 48 45 52 45  >..<p>^The WHERE
19310 20 63 6c 61 75 73 65 20 63 61 6e 20 62 65 20 75   clause can be u
19320 73 65 64 20 74 6f 20 6c 69 6d 69 74 20 74 68 65  sed to limit the
19330 20 6e 75 6d 62 65 72 20 6f 66 20 72 6f 77 73 20   number of rows 
19340 6f 76 65 72 0a 77 68 69 63 68 20 74 68 65 20 71  over.which the q
19350 75 65 72 79 20 6f 70 65 72 61 74 65 73 2e 3c 2f  uery operates.</
19360 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20 47 52 4f 55  p>..<p>^The GROU
19370 50 20 42 59 20 63 6c 61 75 73 65 20 63 61 75 73  P BY clause caus
19380 65 73 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 72  es one or more r
19390 6f 77 73 20 6f 66 20 74 68 65 20 72 65 73 75 6c  ows of the resul
193a0 74 20 74 6f 0a 62 65 20 63 6f 6d 62 69 6e 65 64  t to.be combined
193b0 20 69 6e 74 6f 20 61 20 73 69 6e 67 6c 65 20 72   into a single r
193c0 6f 77 20 6f 66 20 6f 75 74 70 75 74 2e 20 20 54  ow of output.  T
193d0 68 69 73 20 69 73 20 65 73 70 65 63 69 61 6c 6c  his is especiall
193e0 79 20 75 73 65 66 75 6c 0a 77 68 65 6e 20 74 68  y useful.when th
193f0 65 20 72 65 73 75 6c 74 20 63 6f 6e 74 61 69 6e  e result contain
19400 73 20 61 67 67 72 65 67 61 74 65 20 66 75 6e 63  s aggregate func
19410 74 69 6f 6e 73 2e 20 20 5e 54 68 65 20 65 78 70  tions.  ^The exp
19420 72 65 73 73 69 6f 6e 73 20 69 6e 0a 74 68 65 20  ressions in.the 
19430 47 52 4f 55 50 20 42 59 20 63 6c 61 75 73 65 20  GROUP BY clause 
19440 64 6f 20 3c 65 6d 3e 6e 6f 74 3c 2f 65 6d 3e 20  do <em>not</em> 
19450 68 61 76 65 20 74 6f 20 62 65 20 65 78 70 72 65  have to be expre
19460 73 73 69 6f 6e 73 20 74 68 61 74 0a 61 70 70 65  ssions that.appe
19470 61 72 20 69 6e 20 74 68 65 20 72 65 73 75 6c 74  ar in the result
19480 2e 20 20 5e 54 68 65 20 48 41 56 49 4e 47 20 63  .  ^The HAVING c
19490 6c 61 75 73 65 20 69 73 20 73 69 6d 69 6c 61 72  lause is similar
194a0 20 74 6f 20 57 48 45 52 45 20 65 78 63 65 70 74   to WHERE except
194b0 0a 74 68 61 74 20 48 41 56 49 4e 47 20 61 70 70  .that HAVING app
194c0 6c 69 65 73 20 61 66 74 65 72 20 67 72 6f 75 70  lies after group
194d0 69 6e 67 20 68 61 73 20 6f 63 63 75 72 72 65 64  ing has occurred
194e0 2e 20 20 5e 54 68 65 20 48 41 56 49 4e 47 20 65  .  ^The HAVING e
194f0 78 70 72 65 73 73 69 6f 6e 0a 6d 61 79 20 72 65  xpression.may re
19500 66 65 72 20 74 6f 20 76 61 6c 75 65 73 2c 20 65  fer to values, e
19510 76 65 6e 20 61 67 67 72 65 67 61 74 65 20 66 75  ven aggregate fu
19520 6e 63 74 69 6f 6e 73 2c 20 74 68 61 74 20 61 72  nctions, that ar
19530 65 20 6e 6f 74 20 69 6e 20 74 68 65 20 72 65 73  e not in the res
19540 75 6c 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68  ult.</p>..<p>^Th
19550 65 20 4f 52 44 45 52 20 42 59 20 63 6c 61 75 73  e ORDER BY claus
19560 65 20 63 61 75 73 65 73 20 74 68 65 20 6f 75 74  e causes the out
19570 70 75 74 20 72 6f 77 73 20 74 6f 20 62 65 20 73  put rows to be s
19580 6f 72 74 65 64 2e 20 20 0a 5e 54 68 65 20 61 72  orted.  .^The ar
19590 67 75 6d 65 6e 74 20 74 6f 20 4f 52 44 45 52 20  gument to ORDER 
195a0 42 59 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20  BY is a list of 
195b0 65 78 70 72 65 73 73 69 6f 6e 73 20 74 68 61 74  expressions that
195c0 20 61 72 65 20 75 73 65 64 20 61 73 20 74 68 65   are used as the
195d0 0a 6b 65 79 20 66 6f 72 20 74 68 65 20 73 6f 72  .key for the sor
195e0 74 2e 20 20 5e 54 68 65 20 65 78 70 72 65 73 73  t.  ^The express
195f0 69 6f 6e 73 20 64 6f 20 6e 6f 74 20 68 61 76 65  ions do not have
19600 20 74 6f 20 62 65 20 70 61 72 74 20 6f 66 20 74   to be part of t
19610 68 65 0a 72 65 73 75 6c 74 20 66 6f 72 20 61 20  he.result for a 
19620 73 69 6d 70 6c 65 20 53 45 4c 45 43 54 2c 20 62  simple SELECT, b
19630 75 74 20 69 6e 20 61 20 63 6f 6d 70 6f 75 6e 64  ut in a compound
19640 20 53 45 4c 45 43 54 20 65 61 63 68 20 73 6f 72   SELECT each sor
19650 74 0a 65 78 70 72 65 73 73 69 6f 6e 20 6d 75 73  t.expression mus
19660 74 20 65 78 61 63 74 6c 79 20 6d 61 74 63 68 20  t exactly match 
19670 6f 6e 65 20 6f 66 20 74 68 65 20 72 65 73 75 6c  one of the resul
19680 74 20 63 6f 6c 75 6d 6e 73 2e 20 20 5e 45 61 63  t columns.  ^Eac
19690 68 0a 73 6f 72 74 20 65 78 70 72 65 73 73 69 6f  h.sort expressio
196a0 6e 20 6d 61 79 20 62 65 20 6f 70 74 69 6f 6e 61  n may be optiona
196b0 6c 6c 79 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20  lly followed by 
196c0 61 20 43 4f 4c 4c 41 54 45 20 6b 65 79 77 6f 72  a COLLATE keywor
196d0 64 20 61 6e 64 0a 74 68 65 20 6e 61 6d 65 20 6f  d and.the name o
196e0 66 20 61 20 63 6f 6c 6c 61 74 69 6e 67 20 66 75  f a collating fu
196f0 6e 63 74 69 6f 6e 20 75 73 65 64 20 66 6f 72 20  nction used for 
19700 6f 72 64 65 72 69 6e 67 20 74 65 78 74 20 61 6e  ordering text an
19710 64 2f 6f 72 0a 6b 65 79 77 6f 72 64 73 20 41 53  d/or.keywords AS
19720 43 20 6f 72 20 44 45 53 43 20 74 6f 20 73 70 65  C or DESC to spe
19730 63 69 66 79 20 74 68 65 20 73 6f 72 74 20 6f 72  cify the sort or
19740 64 65 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 45 61 63  der.</p>..<p>Eac
19750 68 20 74 65 72 6d 20 6f 66 20 61 6e 20 4f 52 44  h term of an ORD
19760 45 52 20 42 59 20 65 78 70 72 65 73 73 69 6f 6e  ER BY expression
19770 20 69 73 20 70 72 6f 63 65 73 73 65 64 20 61 73   is processed as
19780 20 66 6f 6c 6c 6f 77 73 3a 3c 2f 70 3e 0a 0a 3c   follows:</p>..<
19790 6f 6c 3e 0a 3c 6c 69 3e 3c 70 3e 5e 49 66 20 74  ol>.<li><p>^If t
197a0 68 65 20 4f 52 44 45 52 20 42 59 20 65 78 70 72  he ORDER BY expr
197b0 65 73 73 69 6f 6e 20 69 73 20 61 20 63 6f 6e 73  ession is a cons
197c0 74 61 6e 74 20 69 6e 74 65 67 65 72 20 4b 20 74  tant integer K t
197d0 68 65 6e 20 74 68 65 0a 6f 75 74 70 75 74 20 69  hen the.output i
197e0 73 20 6f 72 64 65 72 65 64 20 62 79 20 74 68 65  s ordered by the
197f0 20 4b 2d 74 68 20 63 6f 6c 75 6d 6e 20 6f 66 20   K-th column of 
19800 74 68 65 20 72 65 73 75 6c 74 20 73 65 74 2e 3c  the result set.<
19810 2f 70 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c 70 3e  /p></li>.<li><p>
19820 5e 49 66 20 74 68 65 20 4f 52 44 45 52 20 42 59  ^If the ORDER BY
19830 20 65 78 70 72 65 73 73 69 6f 6e 20 69 73 20 61   expression is a
19840 6e 20 69 64 65 6e 74 69 66 69 65 72 20 61 6e 64  n identifier and
19850 20 6f 6e 65 20 6f 66 20 74 68 65 0a 6f 75 74 70   one of the.outp
19860 75 74 20 63 6f 6c 75 6d 6e 73 20 68 61 73 20 61  ut columns has a
19870 6e 20 61 6c 69 61 73 20 62 79 20 74 68 65 20 73  n alias by the s
19880 61 6d 65 20 6e 61 6d 65 2c 20 74 68 65 6e 20 74  ame name, then t
19890 68 65 20 6f 75 74 70 75 74 20 69 73 0a 6f 72 64  he output is.ord
198a0 65 72 65 64 20 62 79 20 74 68 65 20 69 64 65 6e  ered by the iden
198b0 74 69 66 69 65 64 20 63 6f 6c 75 6d 6e 2e 3c 2f  tified column.</
198c0 70 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c 70 3e 5e  p></li>.<li><p>^
198d0 4f 74 68 65 72 77 69 73 65 2c 20 74 68 65 20 4f  Otherwise, the O
198e0 52 44 45 52 20 42 59 20 65 78 70 72 65 73 73 69  RDER BY expressi
198f0 6f 6e 20 69 73 20 65 76 61 6c 75 61 74 65 64 20  on is evaluated 
19900 61 6e 64 20 74 68 65 20 6f 75 74 70 75 74 20 0a  and the output .
19910 69 73 20 6f 72 64 65 72 65 64 20 62 79 20 74 68  is ordered by th
19920 65 20 76 61 6c 75 65 20 6f 66 20 74 68 61 74 20  e value of that 
19930 65 78 70 72 65 73 73 69 6f 6e 2e 3c 2f 70 3e 3c  expression.</p><
19940 2f 6c 69 3e 0a 3c 2f 6f 6c 3e 0a 0a 3c 70 3e 5e  /li>.</ol>..<p>^
19950 49 6e 20 61 20 63 6f 6d 70 6f 75 6e 64 20 53 45  In a compound SE
19960 4c 45 43 54 20 73 74 61 74 65 6d 65 6e 74 2c 20  LECT statement, 
19970 74 68 65 20 74 68 69 72 64 20 4f 52 44 45 52 20  the third ORDER 
19980 42 59 20 6d 61 74 63 68 69 6e 67 20 72 75 6c 65  BY matching rule
19990 0a 72 65 71 75 69 72 65 73 20 74 68 61 74 20 74  .requires that t
199a0 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20 62 65  he expression be
199b0 20 69 64 65 6e 74 69 63 61 6c 20 74 6f 20 6f 6e   identical to on
199c0 65 20 6f 66 20 74 68 65 20 63 6f 6c 75 6d 6e 73  e of the columns
199d0 20 69 6e 0a 74 68 65 20 72 65 73 75 6c 74 20 73   in.the result s
199e0 65 74 2e 20 20 5e 28 54 68 65 20 74 68 72 65 65  et.  ^(The three
199f0 20 72 75 6c 65 73 20 61 72 65 20 66 69 72 73 74   rules are first
19a00 20 61 70 70 6c 69 65 64 20 74 6f 20 74 68 65 20   applied to the 
19a10 6c 65 66 74 2d 6d 6f 73 74 0a 53 45 4c 45 43 54  left-most.SELECT
19a20 20 69 6e 20 74 68 65 20 63 6f 6d 70 6f 75 6e 64   in the compound
19a30 2e 20 20 49 66 20 61 20 6d 61 74 63 68 20 69 73  .  If a match is
19a40 20 66 6f 75 6e 64 2c 20 74 68 65 20 73 65 61 72   found, the sear
19a50 63 68 20 73 74 6f 70 73 2e 20 20 4f 74 68 65 72  ch stops.  Other
19a60 77 69 73 65 2c 0a 74 68 65 20 6e 65 78 74 20 53  wise,.the next S
19a70 45 4c 45 43 54 20 74 6f 20 74 68 65 20 72 69 67  ELECT to the rig
19a80 68 74 20 69 73 20 74 72 69 65 64 2e 20 20 54 68  ht is tried.  Th
19a90 69 73 20 63 6f 6e 74 69 6e 75 65 73 20 75 6e 74  is continues unt
19aa0 69 6c 20 61 20 6d 61 74 63 68 0a 69 73 20 66 6f  il a match.is fo
19ab0 75 6e 64 2e 29 5e 20 20 5e 45 61 63 68 20 74 65  und.)^  ^Each te
19ac0 72 6d 20 6f 66 20 74 68 65 20 4f 52 44 45 52 20  rm of the ORDER 
19ad0 42 59 20 63 6c 61 75 73 65 20 69 73 20 70 72 6f  BY clause is pro
19ae0 63 65 73 73 65 64 20 73 65 70 61 72 61 74 65 6c  cessed separatel
19af0 79 20 0a 61 6e 64 20 6d 61 79 20 63 6f 6d 65 20  y .and may come 
19b00 66 72 6f 6d 20 64 69 66 66 65 72 65 6e 74 20 53  from different S
19b10 45 4c 45 43 54 20 73 74 61 74 65 6d 65 6e 74 73  ELECT statements
19b20 20 69 6e 20 74 68 65 20 63 6f 6d 70 6f 75 6e 64   in the compound
19b30 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20 4c  .</p>..<p>^The L
19b40 49 4d 49 54 20 63 6c 61 75 73 65 20 70 6c 61 63  IMIT clause plac
19b50 65 73 20 61 6e 20 75 70 70 65 72 20 62 6f 75 6e  es an upper boun
19b60 64 20 6f 6e 20 74 68 65 20 6e 75 6d 62 65 72 20  d on the number 
19b70 6f 66 20 72 6f 77 73 0a 72 65 74 75 72 6e 65 64  of rows.returned
19b80 20 69 6e 20 74 68 65 20 72 65 73 75 6c 74 2e 20   in the result. 
19b90 20 5e 41 20 6e 65 67 61 74 69 76 65 20 4c 49 4d   ^A negative LIM
19ba0 49 54 20 69 6e 64 69 63 61 74 65 73 20 6e 6f 20  IT indicates no 
19bb0 75 70 70 65 72 20 62 6f 75 6e 64 2e 0a 5e 54 68  upper bound..^Th
19bc0 65 20 6f 70 74 69 6f 6e 61 6c 20 4f 46 46 53 45  e optional OFFSE
19bd0 54 20 66 6f 6c 6c 6f 77 69 6e 67 20 4c 49 4d 49  T following LIMI
19be0 54 20 73 70 65 63 69 66 69 65 73 20 68 6f 77 20  T specifies how 
19bf0 6d 61 6e 79 0a 72 6f 77 73 20 74 6f 20 73 6b 69  many.rows to ski
19c00 70 20 61 74 20 74 68 65 20 62 65 67 69 6e 6e 69  p at the beginni
19c10 6e 67 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74  ng of the result
19c20 20 73 65 74 2e 0a 5e 49 6e 20 61 20 63 6f 6d 70   set..^In a comp
19c30 6f 75 6e 64 20 71 75 65 72 79 2c 20 74 68 65 20  ound query, the 
19c40 4c 49 4d 49 54 20 63 6c 61 75 73 65 20 6d 61 79  LIMIT clause may
19c50 20 6f 6e 6c 79 20 61 70 70 65 61 72 20 6f 6e 20   only appear on 
19c60 74 68 65 0a 66 69 6e 61 6c 20 53 45 4c 45 43 54  the.final SELECT
19c70 20 73 74 61 74 65 6d 65 6e 74 2e 0a 5e 54 68 65   statement..^The
19c80 20 6c 69 6d 69 74 20 69 73 20 61 70 70 6c 69 65   limit is applie
19c90 64 20 74 6f 20 74 68 65 20 65 6e 74 69 72 65 20  d to the entire 
19ca0 71 75 65 72 79 20 6e 6f 74 0a 74 6f 20 74 68 65  query not.to the
19cb0 20 69 6e 64 69 76 69 64 75 61 6c 20 53 45 4c 45   individual SELE
19cc0 43 54 20 73 74 61 74 65 6d 65 6e 74 20 74 6f 20  CT statement to 
19cd0 77 68 69 63 68 20 69 74 20 69 73 20 61 74 74 61  which it is atta
19ce0 63 68 65 64 2e 0a 5e 4e 6f 74 65 20 74 68 61 74  ched..^Note that
19cf0 20 69 66 20 74 68 65 20 4f 46 46 53 45 54 20 6b   if the OFFSET k
19d00 65 79 77 6f 72 64 20 69 73 20 75 73 65 64 20 69  eyword is used i
19d10 6e 20 74 68 65 20 4c 49 4d 49 54 20 63 6c 61 75  n the LIMIT clau
19d20 73 65 2c 20 74 68 65 6e 20 74 68 65 0a 6c 69 6d  se, then the.lim
19d30 69 74 20 69 73 20 74 68 65 20 66 69 72 73 74 20  it is the first 
19d40 6e 75 6d 62 65 72 20 61 6e 64 20 74 68 65 20 6f  number and the o
19d50 66 66 73 65 74 20 69 73 20 74 68 65 20 73 65 63  ffset is the sec
19d60 6f 6e 64 20 6e 75 6d 62 65 72 2e 20 20 5e 49 66  ond number.  ^If
19d70 20 61 0a 63 6f 6d 6d 61 20 69 73 20 75 73 65 64   a.comma is used
19d80 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20   instead of the 
19d90 4f 46 46 53 45 54 20 6b 65 79 77 6f 72 64 2c 20  OFFSET keyword, 
19da0 74 68 65 6e 20 74 68 65 20 6f 66 66 73 65 74 20  then the offset 
19db0 69 73 20 74 68 65 0a 66 69 72 73 74 20 6e 75 6d  is the.first num
19dc0 62 65 72 20 61 6e 64 20 74 68 65 20 6c 69 6d 69  ber and the limi
19dd0 74 20 69 73 20 74 68 65 20 73 65 63 6f 6e 64 20  t is the second 
19de0 6e 75 6d 62 65 72 2e 20 20 54 68 69 73 20 73 65  number.  This se
19df0 65 6d 69 6e 67 0a 63 6f 6e 74 72 61 64 69 74 69  eming.contraditi
19e00 6f 6e 20 69 73 20 69 6e 74 65 6e 74 69 6f 6e 61  on is intentiona
19e10 6c 20 2d 20 69 74 20 6d 61 78 69 6d 69 7a 65 73  l - it maximizes
19e20 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 77   compatibility w
19e30 69 74 68 20 6c 65 67 61 63 79 0a 53 51 4c 20 64  ith legacy.SQL d
19e40 61 74 61 62 61 73 65 20 73 79 73 74 65 6d 73 2e  atabase systems.
19e50 0a 3c 2f 70 3e 0a 0a 3c 70 3e 5e 41 20 63 6f 6d  .</p>..<p>^A com
19e60 70 6f 75 6e 64 20 53 45 4c 45 43 54 20 69 73 20  pound SELECT is 
19e70 66 6f 72 6d 65 64 20 66 72 6f 6d 20 74 77 6f 20  formed from two 
19e80 6f 72 20 6d 6f 72 65 20 73 69 6d 70 6c 65 20 53  or more simple S
19e90 45 4c 45 43 54 73 20 63 6f 6e 6e 65 63 74 65 64  ELECTs connected
19ea0 0a 62 79 20 6f 6e 65 20 6f 66 20 74 68 65 20 6f  .by one of the o
19eb0 70 65 72 61 74 6f 72 73 20 55 4e 49 4f 4e 2c 20  perators UNION, 
19ec0 55 4e 49 4f 4e 20 41 4c 4c 2c 20 49 4e 54 45 52  UNION ALL, INTER
19ed0 53 45 43 54 2c 20 6f 72 20 45 58 43 45 50 54 2e  SECT, or EXCEPT.
19ee0 20 20 5e 49 6e 0a 61 20 63 6f 6d 70 6f 75 6e 64    ^In.a compound
19ef0 20 53 45 4c 45 43 54 2c 20 61 6c 6c 20 74 68 65   SELECT, all the
19f00 20 63 6f 6e 73 74 69 74 75 65 6e 74 20 53 45 4c   constituent SEL
19f10 45 43 54 73 20 6d 75 73 74 20 73 70 65 63 69 66  ECTs must specif
19f20 79 20 74 68 65 0a 73 61 6d 65 20 6e 75 6d 62 65  y the.same numbe
19f30 72 20 6f 66 20 72 65 73 75 6c 74 20 63 6f 6c 75  r of result colu
19f40 6d 6e 73 2e 20 20 5e 54 68 65 72 65 20 6d 61 79  mns.  ^There may
19f50 20 62 65 20 6f 6e 6c 79 20 61 20 73 69 6e 67 6c   be only a singl
19f60 65 20 4f 52 44 45 52 20 42 59 0a 63 6c 61 75 73  e ORDER BY.claus
19f70 65 20 61 74 20 74 68 65 20 65 6e 64 20 6f 66 20  e at the end of 
19f80 74 68 65 20 63 6f 6d 70 6f 75 6e 64 20 53 45 4c  the compound SEL
19f90 45 43 54 2e 20 20 5e 54 68 65 20 55 4e 49 4f 4e  ECT.  ^The UNION
19fa0 20 61 6e 64 20 55 4e 49 4f 4e 20 41 4c 4c 0a 6f   and UNION ALL.o
19fb0 70 65 72 61 74 6f 72 73 20 63 6f 6d 62 69 6e 65  perators combine
19fc0 20 74 68 65 20 72 65 73 75 6c 74 73 20 6f 66 20   the results of 
19fd0 74 68 65 20 53 45 4c 45 43 54 73 20 74 6f 20 74  the SELECTs to t
19fe0 68 65 20 72 69 67 68 74 20 61 6e 64 20 6c 65 66  he right and lef
19ff0 74 20 69 6e 74 6f 0a 61 20 73 69 6e 67 6c 65 20  t into.a single 
1a000 62 69 67 20 74 61 62 6c 65 2e 20 20 5e 54 68 65  big table.  ^The
1a010 20 64 69 66 66 65 72 65 6e 63 65 20 69 73 20 74   difference is t
1a020 68 61 74 20 69 6e 20 55 4e 49 4f 4e 20 61 6c 6c  hat in UNION all
1a030 20 72 65 73 75 6c 74 20 72 6f 77 73 0a 61 72 65   result rows.are
1a040 20 64 69 73 74 69 6e 63 74 20 77 68 65 72 65 20   distinct where 
1a050 69 6e 20 55 4e 49 4f 4e 20 41 4c 4c 20 74 68 65  in UNION ALL the
1a060 72 65 20 6d 61 79 20 62 65 20 64 75 70 6c 69 63  re may be duplic
1a070 61 74 65 73 2e 0a 5e 54 68 65 20 49 4e 54 45 52  ates..^The INTER
1a080 53 45 43 54 20 6f 70 65 72 61 74 6f 72 20 74 61  SECT operator ta
1a090 6b 65 73 20 74 68 65 20 69 6e 74 65 72 73 65 63  kes the intersec
1a0a0 74 69 6f 6e 20 6f 66 20 74 68 65 20 72 65 73 75  tion of the resu
1a0b0 6c 74 73 20 6f 66 20 74 68 65 0a 6c 65 66 74 20  lts of the.left 
1a0c0 61 6e 64 20 72 69 67 68 74 20 53 45 4c 45 43 54  and right SELECT
1a0d0 73 2e 20 20 5e 45 58 43 45 50 54 20 74 61 6b 65  s.  ^EXCEPT take
1a0e0 73 20 74 68 65 20 72 65 73 75 6c 74 20 6f 66 20  s the result of 
1a0f0 6c 65 66 74 20 53 45 4c 45 43 54 20 61 66 74 65  left SELECT afte
1a100 72 0a 72 65 6d 6f 76 69 6e 67 20 74 68 65 20 72  r.removing the r
1a110 65 73 75 6c 74 73 20 6f 66 20 74 68 65 20 72 69  esults of the ri
1a120 67 68 74 20 53 45 4c 45 43 54 2e 20 20 5e 57 68  ght SELECT.  ^Wh
1a130 65 6e 20 74 68 72 65 65 20 6f 72 20 6d 6f 72 65  en three or more
1a140 20 53 45 4c 45 43 54 73 0a 61 72 65 20 63 6f 6e   SELECTs.are con
1a150 6e 65 63 74 65 64 20 69 6e 74 6f 20 61 20 63 6f  nected into a co
1a160 6d 70 6f 75 6e 64 2c 20 74 68 65 79 20 67 72 6f  mpound, they gro
1a170 75 70 20 66 72 6f 6d 20 6c 65 66 74 20 74 6f 20  up from left to 
1a180 72 69 67 68 74 2e 3c 2f 70 3e 0a 0a 0a 3c 74 63  right.</p>...<tc
1a190 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23 23  l>.#############
1a1a0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1a1b0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1a1c0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1a1d0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1a1e0 23 0a 53 65 63 74 69 6f 6e 20 55 50 44 41 54 45  #.Section UPDATE
1a1f0 20 75 70 64 61 74 65 20 7b 55 50 44 41 54 45 20   update {UPDATE 
1a200 2a 55 50 44 41 54 45 73 7d 0a 0a 42 75 62 62 6c  *UPDATEs}..Bubbl
1a210 65 44 69 61 67 72 61 6d 20 75 70 64 61 74 65 2d  eDiagram update-
1a220 73 74 6d 74 20 31 0a 42 75 62 62 6c 65 44 69 61  stmt 1.BubbleDia
1a230 67 72 61 6d 20 71 75 61 6c 69 66 69 65 64 2d 74  gram qualified-t
1a240 61 62 6c 65 2d 6e 61 6d 65 0a 3c 2f 74 63 6c 3e  able-name.</tcl>
1a250 0a 0a 3c 70 3e 5e 54 68 65 20 55 50 44 41 54 45  ..<p>^The UPDATE
1a260 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 75 73   statement is us
1a270 65 64 20 74 6f 20 63 68 61 6e 67 65 20 74 68 65  ed to change the
1a280 20 76 61 6c 75 65 20 6f 66 20 63 6f 6c 75 6d 6e   value of column
1a290 73 20 69 6e 20 0a 73 65 6c 65 63 74 65 64 20 72  s in .selected r
1a2a0 6f 77 73 20 6f 66 20 61 20 74 61 62 6c 65 2e 20  ows of a table. 
1a2b0 20 5e 45 61 63 68 20 61 73 73 69 67 6e 6d 65 6e   ^Each assignmen
1a2c0 74 20 69 6e 20 61 6e 20 55 50 44 41 54 45 20 73  t in an UPDATE s
1a2d0 70 65 63 69 66 69 65 73 0a 61 20 63 6f 6c 75 6d  pecifies.a colum
1a2e0 6e 20 6e 61 6d 65 20 74 6f 20 74 68 65 20 6c 65  n name to the le
1a2f0 66 74 20 6f 66 20 74 68 65 20 65 71 75 61 6c 73  ft of the equals
1a300 20 73 69 67 6e 20 61 6e 64 20 61 6e 20 61 72 62   sign and an arb
1a310 69 74 72 61 72 79 20 65 78 70 72 65 73 73 69 6f  itrary expressio
1a320 6e 0a 74 6f 20 74 68 65 20 72 69 67 68 74 2e 20  n.to the right. 
1a330 20 5e 54 68 65 20 65 78 70 72 65 73 73 69 6f 6e   ^The expression
1a340 73 20 6d 61 79 20 75 73 65 20 74 68 65 20 76 61  s may use the va
1a350 6c 75 65 73 20 6f 66 20 6f 74 68 65 72 20 63 6f  lues of other co
1a360 6c 75 6d 6e 73 2e 0a 5e 41 6c 6c 20 65 78 70 72  lumns..^All expr
1a370 65 73 73 69 6f 6e 73 20 61 72 65 20 65 76 61 6c  essions are eval
1a380 75 61 74 65 64 20 62 65 66 6f 72 65 20 61 6e 79  uated before any
1a390 20 61 73 73 69 67 6e 6d 65 6e 74 73 20 61 72 65   assignments are
1a3a0 20 6d 61 64 65 2e 0a 5e 41 20 57 48 45 52 45 20   made..^A WHERE 
1a3b0 63 6c 61 75 73 65 20 63 61 6e 20 62 65 20 75 73  clause can be us
1a3c0 65 64 20 74 6f 20 72 65 73 74 72 69 63 74 20 77  ed to restrict w
1a3d0 68 69 63 68 20 72 6f 77 73 20 61 72 65 20 75 70  hich rows are up
1a3e0 64 61 74 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e  dated.</p>..<p>^
1a3f0 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20 63 6f 6e  The optional con
1a400 66 6c 69 63 74 2d 63 6c 61 75 73 65 20 61 6c 6c  flict-clause all
1a410 6f 77 73 20 74 68 65 20 73 70 65 63 69 66 69 63  ows the specific
1a420 61 74 69 6f 6e 20 6f 66 20 61 6e 20 61 6c 74 65  ation of an alte
1a430 72 6e 61 74 69 76 65 0a 63 6f 6e 73 74 72 61 69  rnative.constrai
1a440 6e 74 20 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f  nt conflict reso
1a450 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d  lution algorithm
1a460 20 74 6f 20 75 73 65 20 64 75 72 69 6e 67 20 74   to use during t
1a470 68 69 73 20 6f 6e 65 20 55 50 44 41 54 45 20 63  his one UPDATE c
1a480 6f 6d 6d 61 6e 64 2e 0a 53 65 65 20 74 68 65 20  ommand..See the 
1a490 73 65 63 74 69 6f 6e 20 74 69 74 6c 65 64 0a 5b  section titled.[
1a4a0 4f 4e 20 43 4f 4e 46 4c 49 43 54 5d 20 66 6f 72  ON CONFLICT] for
1a4b0 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f   additional info
1a4c0 72 6d 61 74 69 6f 6e 2e 3c 2f 70 3e 0a 0a 3c 68  rmation.</p>..<h
1a4d0 33 3e 52 65 73 74 72 69 63 74 69 6f 6e 73 20 6f  3>Restrictions o
1a4e0 6e 20 55 50 44 41 54 45 20 53 74 61 74 65 6d 65  n UPDATE Stateme
1a4f0 6e 74 73 20 57 69 74 68 69 6e 20 43 52 45 41 54  nts Within CREAT
1a500 45 20 54 52 49 47 47 45 52 3c 2f 68 33 3e 0a 0a  E TRIGGER</h3>..
1a510 3c 70 3e 5e 54 68 65 72 65 20 61 72 65 20 61 64  <p>^There are ad
1a520 64 69 74 69 6f 6e 61 6c 20 73 79 6e 74 61 78 20  ditional syntax 
1a530 72 65 73 74 72 69 63 74 69 6f 6e 73 20 6f 6e 20  restrictions on 
1a540 55 50 44 41 54 45 20 73 74 61 74 65 6d 65 6e 74  UPDATE statement
1a550 73 20 74 68 61 74 0a 6f 63 63 75 72 20 77 69 74  s that.occur wit
1a560 68 69 6e 20 74 68 65 20 62 6f 64 79 20 6f 66 20  hin the body of 
1a570 61 20 5b 43 52 45 41 54 45 20 54 52 49 47 47 45  a [CREATE TRIGGE
1a580 52 5d 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 5e  R] statement.  ^
1a590 54 68 65 20 3c 69 3e 74 61 62 6c 65 2d 6e 61 6d  The <i>table-nam
1a5a0 65 3c 2f 69 3e 0a 6f 66 20 74 68 65 20 55 50 44  e</i>.of the UPD
1a5b0 41 54 45 20 6d 75 73 74 20 62 65 20 75 6e 71 75  ATE must be unqu
1a5c0 61 6c 69 66 69 65 64 2e 20 0a 5e 28 49 6e 20 6f  alified. .^(In o
1a5d0 74 68 65 72 20 77 6f 72 64 73 2c 20 74 68 65 20  ther words, the 
1a5e0 3c 69 3e 64 61 74 61 62 61 73 65 2d 6e 61 6d 65  <i>database-name
1a5f0 3c 2f 69 3e 3c 62 3e 2e 3c 2f 62 3e 20 70 72 65  </i><b>.</b> pre
1a600 66 69 78 20 0a 6f 6e 20 74 68 65 20 74 61 62 6c  fix .on the tabl
1a610 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 55 50  e name of the UP
1a620 44 41 54 45 20 69 73 20 6e 6f 74 20 61 6c 6c 6f  DATE is not allo
1a630 77 65 64 20 77 69 74 68 69 6e 20 74 72 69 67 67  wed within trigg
1a640 65 72 73 2e 29 5e 0a 5e 54 68 65 20 74 61 62 6c  ers.)^.^The tabl
1a650 65 20 74 6f 20 62 65 20 75 70 64 61 74 65 64 20  e to be updated 
1a660 6d 75 73 74 20 62 65 20 69 6e 20 74 68 65 20 73  must be in the s
1a670 61 6d 65 0a 64 61 74 61 62 61 73 65 20 61 73 20  ame.database as 
1a680 74 68 65 20 74 61 62 6c 65 20 74 6f 20 77 68 69  the table to whi
1a690 63 68 20 74 68 65 20 74 72 69 67 67 65 72 20 69  ch the trigger i
1a6a0 73 20 61 74 74 61 63 68 65 64 2e 3c 2f 70 3e 0a  s attached.</p>.
1a6b0 0a 3c 70 3e 5e 54 68 65 20 49 4e 44 45 58 45 44  .<p>^The INDEXED
1a6c0 20 42 59 20 61 6e 64 20 4e 4f 54 20 49 4e 44 45   BY and NOT INDE
1a6d0 58 45 44 20 63 6c 61 75 73 65 73 20 61 72 65 20  XED clauses are 
1a6e0 6e 6f 74 20 61 6c 6c 6f 77 65 64 20 6f 6e 20 55  not allowed on U
1a6f0 50 44 41 54 45 0a 73 74 61 74 65 6d 65 6e 74 73  PDATE.statements
1a700 20 77 69 74 68 69 6e 20 74 72 69 67 67 65 72 73   within triggers
1a710 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20 4c  .</p>..<p>^The L
1a720 49 4d 49 54 20 63 6c 61 75 73 65 20 66 6f 72 20  IMIT clause for 
1a730 55 50 44 41 54 45 20 69 73 20 75 6e 73 75 70 70  UPDATE is unsupp
1a740 6f 72 74 65 64 20 77 69 74 68 69 6e 20 74 72 69  orted within tri
1a750 67 67 65 72 73 2e 3c 2f 70 3e 0a 0a 3c 68 33 3e  ggers.</p>..<h3>
1a760 4f 70 74 69 6f 6e 61 6c 20 4c 49 4d 49 54 20 61  Optional LIMIT a
1a770 6e 64 20 4f 52 44 45 52 20 42 59 20 43 6c 61 75  nd ORDER BY Clau
1a780 73 65 73 3c 2f 68 33 3e 0a 0a 3c 70 3e 5e 28 49  ses</h3>..<p>^(I
1a790 66 20 53 51 4c 69 74 65 20 69 73 20 62 75 69 6c  f SQLite is buil
1a7a0 74 20 77 69 74 68 20 74 68 65 20 5b 53 51 4c 49  t with the [SQLI
1a7b0 54 45 5f 45 4e 41 42 4c 45 5f 55 50 44 41 54 45  TE_ENABLE_UPDATE
1a7c0 5f 44 45 4c 45 54 45 5f 4c 49 4d 49 54 5d 0a 63  _DELETE_LIMIT].c
1a7d0 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
1a7e0 6f 6e 20 74 68 65 6e 20 74 68 65 20 73 79 6e 74  on then the synt
1a7f0 61 78 20 6f 66 20 74 68 65 20 55 50 44 41 54 45  ax of the UPDATE
1a800 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 65 78   statement is ex
1a810 74 65 6e 64 65 64 0a 77 69 74 68 20 6f 70 74 69  tended.with opti
1a820 6f 6e 61 6c 20 4f 52 44 45 52 20 42 59 20 61 6e  onal ORDER BY an
1a830 64 20 4c 49 4d 49 54 20 63 6c 61 75 73 65 73 29  d LIMIT clauses)
1a840 5e 20 61 73 20 66 6f 6c 6c 6f 77 73 3a 3c 2f 70  ^ as follows:</p
1a850 3e 0a 0a 3c 74 63 6c 3e 42 75 62 62 6c 65 44 69  >..<tcl>BubbleDi
1a860 61 67 72 61 6d 20 75 70 64 61 74 65 2d 73 74 6d  agram update-stm
1a870 74 2d 6c 69 6d 69 74 65 64 3c 2f 74 63 6c 3e 0a  t-limited</tcl>.
1a880 0a 3c 70 3e 5e 54 68 65 20 6f 70 74 69 6f 6e 61  .<p>^The optiona
1a890 6c 20 4c 49 4d 49 54 20 63 6c 61 75 73 65 20 63  l LIMIT clause c
1a8a0 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 6c 69  an be used to li
1a8b0 6d 69 74 20 74 68 65 20 6e 75 6d 62 65 72 20 6f  mit the number o
1a8c0 66 0a 72 6f 77 73 20 6d 6f 64 69 66 65 64 2c 20  f.rows modifed, 
1a8d0 61 6e 64 20 74 68 65 72 65 62 79 20 6c 69 6d 69  and thereby limi
1a8e0 74 20 74 68 65 20 73 69 7a 65 20 6f 66 20 74 68  t the size of th
1a8f0 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 2e 0a 5e  e transaction..^
1a900 54 68 65 20 4f 52 44 45 52 20 42 59 20 63 6c 61  The ORDER BY cla
1a910 75 73 65 20 6f 6e 20 61 6e 20 55 50 44 41 54 45  use on an UPDATE
1a920 20 73 74 61 74 65 6d 65 6e 74 0a 69 73 20 75 73   statement.is us
1a930 65 64 20 6f 6e 6c 79 20 74 6f 20 64 65 74 65 72  ed only to deter
1a940 6d 69 6e 65 20 77 68 69 63 68 20 72 6f 77 73 20  mine which rows 
1a950 66 61 6c 6c 0a 77 69 74 68 69 6e 20 74 68 65 20  fall.within the 
1a960 4c 49 4d 49 54 2e 20 20 5e 54 68 65 20 6f 72 64  LIMIT.  ^The ord
1a970 65 72 20 69 6e 20 77 68 69 63 68 20 72 6f 77 73  er in which rows
1a980 20 61 72 65 20 6d 6f 64 69 66 69 65 64 20 69 73   are modified is
1a990 20 61 72 62 69 74 72 61 72 79 0a 61 6e 64 20 69   arbitrary.and i
1a9a0 73 20 6e 6f 74 20 64 65 74 65 72 6d 69 6e 65 64  s not determined
1a9b0 20 62 79 20 74 68 65 20 4f 52 44 45 52 20 42 59   by the ORDER BY
1a9c0 20 63 6c 61 75 73 65 2e 3c 2f 70 3e 0a 0a 3c 74   clause.</p>..<t
1a9d0 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23  cl>.############
1a9e0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1a9f0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1aa00 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1aa10 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1aa20 23 23 0a 53 65 63 74 69 6f 6e 20 56 41 43 55 55  ##.Section VACUU
1aa30 4d 20 76 61 63 75 75 6d 20 56 41 43 55 55 4d 0a  M vacuum VACUUM.
1aa40 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 76  .BubbleDiagram v
1aa50 61 63 75 75 6d 2d 73 74 6d 74 20 31 0a 3c 2f 74  acuum-stmt 1.</t
1aa60 63 6c 3e 0a 0a 3c 70 3e 5e 57 68 65 6e 20 61 6e  cl>..<p>^When an
1aa70 20 6f 62 6a 65 63 74 20 28 74 61 62 6c 65 2c 20   object (table, 
1aa80 69 6e 64 65 78 2c 20 74 72 69 67 67 65 72 2c 20  index, trigger, 
1aa90 6f 72 20 76 69 65 77 29 20 69 73 20 64 72 6f 70  or view) is drop
1aaa0 70 65 64 20 66 72 6f 6d 20 74 68 65 20 0a 64 61  ped from the .da
1aab0 74 61 62 61 73 65 2c 20 69 74 20 6c 65 61 76 65  tabase, it leave
1aac0 73 20 62 65 68 69 6e 64 20 65 6d 70 74 79 20 73  s behind empty s
1aad0 70 61 63 65 2e 20 0a 5e 54 68 69 73 20 65 6d 70  pace. .^This emp
1aae0 74 79 20 73 70 61 63 65 20 77 69 6c 6c 20 62 65  ty space will be
1aaf0 20 72 65 75 73 65 64 20 74 68 65 20 6e 65 78 74   reused the next
1ab00 20 74 69 6d 65 20 6e 65 77 20 69 6e 66 6f 72 6d   time new inform
1ab10 61 74 69 6f 6e 20 69 73 0a 61 64 64 65 64 20 74  ation is.added t
1ab20 6f 20 74 68 65 20 64 61 74 61 62 61 73 65 2e 20  o the database. 
1ab30 20 42 75 74 20 69 6e 20 74 68 65 20 6d 65 61 6e   But in the mean
1ab40 74 69 6d 65 2c 20 74 68 65 20 64 61 74 61 62 61  time, the databa
1ab50 73 65 20 66 69 6c 65 20 6d 69 67 68 74 0a 62 65  se file might.be
1ab60 20 6c 61 72 67 65 72 20 74 68 61 6e 20 73 74 72   larger than str
1ab70 69 63 74 6c 79 20 6e 65 63 65 73 73 61 72 79 2e  ictly necessary.
1ab80 20 20 41 6c 73 6f 2c 20 66 72 65 71 75 65 6e 74    Also, frequent
1ab90 20 69 6e 73 65 72 74 73 2c 20 75 70 64 61 74 65   inserts, update
1aba0 73 2c 0a 61 6e 64 20 64 65 6c 65 74 65 73 20 63  s,.and deletes c
1abb0 61 6e 20 63 61 75 73 65 20 74 68 65 20 69 6e 66  an cause the inf
1abc0 6f 72 6d 61 74 69 6f 6e 20 69 6e 20 74 68 65 20  ormation in the 
1abd0 64 61 74 61 62 61 73 65 20 74 6f 20 62 65 63 6f  database to beco
1abe0 6d 65 0a 66 72 61 67 6d 65 6e 74 65 64 20 2d 20  me.fragmented - 
1abf0 73 63 72 61 74 74 65 72 65 64 20 6f 75 74 20 61  scrattered out a
1ac00 6c 6c 20 61 63 72 6f 73 73 20 74 68 65 20 64 61  ll across the da
1ac10 74 61 62 61 73 65 20 66 69 6c 65 20 72 61 74 68  tabase file rath
1ac20 65 72 0a 74 68 61 6e 20 63 6c 75 73 74 65 72 65  er.than clustere
1ac30 64 20 74 6f 67 65 74 68 65 72 20 69 6e 20 6f 6e  d together in on
1ac40 65 20 70 6c 61 63 65 2e 3c 2f 70 3e 0a 0a 3c 70  e place.</p>..<p
1ac50 3e 5e 54 68 65 20 56 41 43 55 55 4d 20 63 6f 6d  >^The VACUUM com
1ac60 6d 61 6e 64 20 63 6c 65 61 6e 73 0a 74 68 65 20  mand cleans.the 
1ac70 6d 61 69 6e 20 64 61 74 61 62 61 73 65 20 62 79  main database by
1ac80 20 63 6f 70 79 69 6e 67 20 69 74 73 20 63 6f 6e   copying its con
1ac90 74 65 6e 74 73 20 74 6f 20 61 20 74 65 6d 70 6f  tents to a tempo
1aca0 72 61 72 79 20 64 61 74 61 62 61 73 65 20 66 69  rary database fi
1acb0 6c 65 20 61 6e 64 20 0a 72 65 6c 6f 61 64 69 6e  le and .reloadin
1acc0 67 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 64  g the original d
1acd0 61 74 61 62 61 73 65 20 66 69 6c 65 20 66 72 6f  atabase file fro
1ace0 6d 20 74 68 65 20 63 6f 70 79 2e 20 20 54 68 69  m the copy.  Thi
1acf0 73 20 65 6c 69 6d 69 6e 61 74 65 73 20 0a 66 72  s eliminates .fr
1ad00 65 65 20 70 61 67 65 73 2c 20 20 61 6c 69 67 6e  ee pages,  align
1ad10 73 20 74 61 62 6c 65 20 64 61 74 61 20 74 6f 20  s table data to 
1ad20 62 65 20 63 6f 6e 74 69 67 75 6f 75 73 2c 20 61  be contiguous, a
1ad30 6e 64 20 6f 74 68 65 72 77 69 73 65 20 63 6c 65  nd otherwise cle
1ad40 61 6e 73 20 0a 75 70 20 74 68 65 20 64 61 74 61  ans .up the data
1ad50 62 61 73 65 20 66 69 6c 65 20 73 74 72 75 63 74  base file struct
1ad60 75 72 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68  ure.</p>..<p>^Th
1ad70 65 20 56 41 43 55 55 4d 20 63 6f 6d 6d 61 6e 64  e VACUUM command
1ad80 20 6d 61 79 20 63 68 61 6e 67 65 20 74 68 65 20   may change the 
1ad90 0a 5b 52 4f 57 49 44 20 7c 20 52 4f 57 49 44 73  .[ROWID | ROWIDs
1ada0 5d 20 6f 66 20 65 6e 74 72 69 65 73 20 69 6e 20  ] of entries in 
1adb0 74 61 62 6c 65 73 20 74 68 61 74 20 64 6f 0a 6e  tables that do.n
1adc0 6f 74 20 68 61 76 65 20 61 6e 20 65 78 70 6c 69  ot have an expli
1add0 63 69 74 20 5b 49 4e 54 45 47 45 52 20 50 52 49  cit [INTEGER PRI
1ade0 4d 41 52 59 20 4b 45 59 5d 2e 3c 2f 70 3e 0a 0a  MARY KEY].</p>..
1adf0 3c 70 3e 5e 56 41 43 55 55 4d 20 6f 6e 6c 79 20  <p>^VACUUM only 
1ae00 77 6f 72 6b 73 20 6f 6e 20 74 68 65 20 6d 61 69  works on the mai
1ae10 6e 20 64 61 74 61 62 61 73 65 2e 0a 49 74 20 69  n database..It i
1ae20 73 20 6e 6f 74 20 70 6f 73 73 69 62 6c 65 20 74  s not possible t
1ae30 6f 20 56 41 43 55 55 4d 20 61 6e 20 61 74 74 61  o VACUUM an atta
1ae40 63 68 65 64 20 64 61 74 61 62 61 73 65 20 66 69  ched database fi
1ae50 6c 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65  le.</p>..<p>^The
1ae60 20 56 41 43 55 55 4d 20 63 6f 6d 6d 61 6e 64 20   VACUUM command 
1ae70 77 69 6c 6c 20 66 61 69 6c 20 69 66 20 74 68 65  will fail if the
1ae80 72 65 20 69 73 20 61 6e 20 61 63 74 69 76 65 20  re is an active 
1ae90 74 72 61 6e 73 61 63 74 69 6f 6e 2e 0a 5e 54 68  transaction..^Th
1aea0 65 20 56 41 43 55 55 4d 20 63 6f 6d 6d 61 6e 64  e VACUUM command
1aeb0 20 69 73 20 61 20 6e 6f 2d 6f 70 20 66 6f 72 20   is a no-op for 
1aec0 69 6e 2d 6d 65 6d 6f 72 79 20 64 61 74 61 62 61  in-memory databa
1aed0 73 65 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 28 41  ses.</p>..<p>^(A
1aee0 73 20 6f 66 20 53 51 4c 69 74 65 20 76 65 72 73  s of SQLite vers
1aef0 69 6f 6e 20 33 2e 31 2c 20 61 6e 20 61 6c 74 65  ion 3.1, an alte
1af00 72 6e 61 74 69 76 65 20 74 6f 20 75 73 69 6e 67  rnative to using
1af10 20 74 68 65 20 56 41 43 55 55 4d 20 63 6f 6d 6d   the VACUUM comm
1af20 61 6e 64 0a 69 73 20 61 75 74 6f 2d 76 61 63 75  and.is auto-vacu
1af30 75 6d 20 6d 6f 64 65 2c 20 65 6e 61 62 6c 65 64  um mode, enabled
1af40 20 75 73 69 6e 67 20 74 68 65 20 0a 5b 61 75 74   using the .[aut
1af50 6f 5f 76 61 63 75 75 6d 5d 20 70 72 61 67 6d 61  o_vacuum] pragma
1af60 2e 29 5e 20 20 5e 57 68 65 6e 20 5b 61 75 74 6f  .)^  ^When [auto
1af70 5f 76 61 63 75 75 6d 5d 20 69 73 20 65 6e 61 62  _vacuum] is enab
1af80 6c 65 64 20 66 6f 72 20 61 20 64 61 74 61 62 61  led for a databa
1af90 73 65 2c 20 0a 6c 61 72 67 65 20 64 65 6c 65 74  se, .large delet
1afa0 65 73 20 63 61 75 73 65 0a 74 68 65 20 73 69 7a  es cause.the siz
1afb0 65 20 6f 66 20 74 68 65 20 64 61 74 61 62 61 73  e of the databas
1afc0 65 20 66 69 6c 65 20 74 6f 20 73 68 72 69 6e 6b  e file to shrink
1afd0 2e 20 20 48 6f 77 65 76 65 72 2c 20 5b 61 75 74  .  However, [aut
1afe0 6f 5f 76 61 63 75 75 6d 5d 0a 61 6c 73 6f 20 63  o_vacuum].also c
1aff0 61 75 73 65 73 20 65 78 63 65 73 73 20 66 72 61  auses excess fra
1b000 67 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68  gmentation of th
1b010 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 2e  e database file.
1b020 20 20 5e 41 6e 64 20 5b 61 75 74 6f 5f 76 61 63    ^And [auto_vac
1b030 75 75 6d 5d 0a 64 6f 65 73 20 6e 6f 74 20 63 6f  uum].does not co
1b040 6d 70 61 63 74 20 70 61 72 74 69 61 6c 6c 79 20  mpact partially 
1b050 66 69 6c 6c 65 64 20 70 61 67 65 73 20 6f 66 20  filled pages of 
1b060 74 68 65 20 64 61 74 61 62 61 73 65 20 61 73 20  the database as 
1b070 56 41 43 55 55 4d 0a 64 6f 65 73 2e 3c 2f 70 3e  VACUUM.does.</p>
1b080 0a 0a 3c 70 3e 5e 54 68 65 20 5b 70 61 67 65 5f  ..<p>^The [page_
1b090 73 69 7a 65 5d 20 61 6e 64 2f 6f 72 20 5b 61 75  size] and/or [au
1b0a0 74 6f 5f 76 61 63 75 75 6d 5d 20 6d 6f 64 65 20  to_vacuum] mode 
1b0b0 6f 66 20 61 20 64 61 74 61 62 61 73 65 20 63 61  of a database ca
1b0c0 6e 20 62 65 20 63 68 61 6e 67 65 64 0a 62 79 20  n be changed.by 
1b0d0 69 6e 76 6f 6b 69 6e 67 20 74 68 65 20 5b 70 61  invoking the [pa
1b0e0 67 65 5f 73 69 7a 65 20 70 72 61 67 6d 61 5d 20  ge_size pragma] 
1b0f0 61 6e 64 2f 6f 72 20 5b 61 75 74 6f 5f 76 61 63  and/or [auto_vac
1b100 75 75 6d 20 70 72 61 67 6d 61 5d 20 61 6e 64 20  uum pragma] and 
1b110 74 68 65 6e 0a 69 6d 6d 65 64 69 61 74 65 6c 79  then.immediately
1b120 20 56 41 43 55 55 4d 69 6e 67 20 74 68 65 20 64   VACUUMing the d
1b130 61 74 61 62 61 73 65 2e 20 5e 45 78 63 65 70 74  atabase. ^Except
1b140 2c 20 74 68 65 20 70 61 67 65 20 73 69 7a 65 20  , the page size 
1b150 63 61 6e 6e 6f 74 20 62 65 0a 63 68 61 6e 67 65  cannot be.change
1b160 64 20 77 68 65 6e 20 5b 77 72 69 74 65 2d 61 68  d when [write-ah
1b170 65 61 64 20 6c 6f 67 5d 20 6d 6f 64 65 20 69 73  ead log] mode is
1b180 20 69 6e 20 75 73 65 2e 3c 2f 70 3e 0a 0a 3c 74   in use.</p>..<t
1b190 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23  cl>.############
1b1a0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1b1b0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1b1c0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1b1d0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1b1e0 23 23 0a 53 65 63 74 69 6f 6e 20 7b 49 4e 44 45  ##.Section {INDE
1b1f0 58 45 44 20 42 59 7d 20 69 6e 64 65 78 65 64 62  XED BY} indexedb
1b200 79 20 7b 7b 49 4e 44 45 58 45 44 20 42 59 7d 20  y {{INDEXED BY} 
1b210 7b 4e 4f 54 20 49 4e 44 45 58 45 44 7d 7d 0a 0a  {NOT INDEXED}}..
1b220 3c 2f 74 63 6c 3e 0a 3c 70 3e 5e 54 68 65 20 49  </tcl>.<p>^The I
1b230 4e 44 45 58 45 44 20 42 59 20 70 68 72 61 73 65  NDEXED BY phrase
1b240 20 69 73 20 61 20 53 51 4c 20 65 78 74 65 6e 73   is a SQL extens
1b250 69 6f 6e 20 66 6f 75 6e 64 20 6f 6e 6c 79 20 69  ion found only i
1b260 6e 20 53 51 4c 69 74 65 20 77 68 69 63 68 20 63  n SQLite which c
1b270 61 6e 0a 62 65 20 75 73 65 64 20 74 6f 20 76 65  an.be used to ve
1b280 72 69 66 79 20 74 68 61 74 20 74 68 65 20 63 6f  rify that the co
1b290 72 72 65 63 74 20 69 6e 64 69 63 65 73 20 61 72  rrect indices ar
1b2a0 65 20 62 65 69 6e 67 20 75 73 65 64 20 6f 6e 20  e being used on 
1b2b0 61 20 5b 44 45 4c 45 54 45 5d 2c 0a 5b 53 45 4c  a [DELETE],.[SEL
1b2c0 45 43 54 5d 2c 20 6f 72 20 5b 55 50 44 41 54 45  ECT], or [UPDATE
1b2d0 5d 20 73 74 61 74 65 6d 65 6e 74 2e 0a 5e 54 68  ] statement..^Th
1b2e0 65 20 49 4e 44 45 58 45 44 20 42 59 20 70 68 72  e INDEXED BY phr
1b2f0 61 73 65 20 61 6c 77 61 79 73 20 66 6f 6c 6c 6f  ase always follo
1b300 77 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 61  ws the name of a
1b310 20 74 61 62 6c 65 20 74 68 61 74 20 53 51 4c 69   table that SQLi
1b320 74 65 20 77 69 6c 6c 0a 62 65 20 72 65 61 64 69  te will.be readi
1b330 6e 67 2e 20 20 54 68 65 20 49 4e 44 45 58 45 44  ng.  The INDEXED
1b340 20 42 59 20 70 68 72 61 73 65 20 63 61 6e 20 62   BY phrase can b
1b350 65 20 73 65 65 6e 20 69 6e 20 74 68 65 20 66 6f  e seen in the fo
1b360 6c 6c 6f 77 69 6e 67 20 73 79 6e 74 61 78 0a 64  llowing syntax.d
1b370 69 61 67 72 61 6d 73 3a 3c 2f 70 3e 0a 0a 3c 74  iagrams:</p>..<t
1b380 63 6c 3e 0a 42 75 62 62 6c 65 44 69 61 67 72 61  cl>.BubbleDiagra
1b390 6d 20 71 75 61 6c 69 66 69 65 64 2d 74 61 62 6c  m qualified-tabl
1b3a0 65 2d 6e 61 6d 65 0a 42 75 62 62 6c 65 44 69 61  e-name.BubbleDia
1b3b0 67 72 61 6d 20 73 69 6e 67 6c 65 2d 73 6f 75 72  gram single-sour
1b3c0 63 65 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 5e 54  ce.</tcl>..<p>^T
1b3d0 68 65 20 22 49 4e 44 45 58 45 44 20 42 59 20 69  he "INDEXED BY i
1b3e0 6e 64 65 78 2d 6e 61 6d 65 22 20 63 6c 61 75 73  ndex-name" claus
1b3f0 65 20 73 70 65 63 69 66 69 65 73 20 74 68 61 74  e specifies that
1b400 20 74 68 65 20 6e 61 6d 65 64 20 69 6e 64 65 78   the named index
1b410 0a 6d 75 73 74 20 62 65 20 75 73 65 64 20 69 6e  .must be used in
1b420 20 6f 72 64 65 72 20 74 6f 20 6c 6f 6f 6b 20 75   order to look u
1b430 70 20 76 61 6c 75 65 73 20 6f 6e 20 74 68 65 20  p values on the 
1b440 70 72 65 63 65 64 69 6e 67 20 74 61 62 6c 65 2e  preceding table.
1b450 0a 5e 49 66 20 69 6e 64 65 78 2d 6e 61 6d 65 20  .^If index-name 
1b460 64 6f 65 73 20 6e 6f 74 20 65 78 69 73 74 20 6f  does not exist o
1b470 72 20 63 61 6e 6e 6f 74 20 62 65 20 75 73 65 64  r cannot be used
1b480 20 66 6f 72 20 74 68 65 20 71 75 65 72 79 2c 20   for the query, 
1b490 74 68 65 6e 0a 74 68 65 20 70 72 65 70 61 72 61  then.the prepara
1b4a0 74 69 6f 6e 20 6f 66 20 74 68 65 20 53 51 4c 20  tion of the SQL 
1b4b0 73 74 61 74 65 6d 65 6e 74 20 66 61 69 6c 73 2e  statement fails.
1b4c0 0a 5e 28 54 68 65 20 22 4e 4f 54 20 49 4e 44 45  .^(The "NOT INDE
1b4d0 58 45 44 22 20 63 6c 61 75 73 65 20 73 70 65 63  XED" clause spec
1b4e0 69 66 69 65 73 20 74 68 61 74 20 6e 6f 20 69 6e  ifies that no in
1b4f0 64 65 78 20 73 68 61 6c 6c 20 62 65 20 75 73 65  dex shall be use
1b500 64 20 77 68 65 6e 0a 61 63 63 65 73 73 69 6e 67  d when.accessing
1b510 20 74 68 65 20 70 72 65 63 65 64 69 6e 67 20 74   the preceding t
1b520 61 62 6c 65 2c 20 69 6e 63 6c 75 64 69 6e 67 20  able, including 
1b530 69 6d 70 6c 69 65 64 20 69 6e 64 69 63 65 73 20  implied indices 
1b540 63 72 65 61 74 65 20 62 79 0a 55 4e 49 51 55 45  create by.UNIQUE
1b550 20 61 6e 64 20 50 52 49 4d 41 52 59 20 4b 45 59   and PRIMARY KEY
1b560 20 63 6f 6e 73 74 72 61 69 6e 74 73 2e 20 20 48   constraints.  H
1b570 6f 77 65 76 65 72 2c 20 74 68 65 20 49 4e 54 45  owever, the INTE
1b580 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 0a  GER PRIMARY KEY.
1b590 63 61 6e 20 73 74 69 6c 6c 20 62 65 20 75 73 65  can still be use
1b5a0 64 20 74 6f 20 6c 6f 6f 6b 20 75 70 20 65 6e 74  d to look up ent
1b5b0 72 69 65 73 20 65 76 65 6e 20 77 68 65 6e 20 22  ries even when "
1b5c0 4e 4f 54 20 49 4e 44 45 58 45 44 22 20 69 73 20  NOT INDEXED" is 
1b5d0 73 70 65 63 69 66 69 65 64 2e 29 5e 3c 2f 70 3e  specified.)^</p>
1b5e0 0a 0a 3c 70 3e 53 6f 6d 65 20 53 51 4c 20 64 61  ..<p>Some SQL da
1b5f0 74 61 62 61 73 65 20 65 6e 67 69 6e 65 73 20 70  tabase engines p
1b600 72 6f 76 69 64 65 20 6e 6f 6e 2d 73 74 61 6e 64  rovide non-stand
1b610 61 72 64 20 22 68 69 6e 74 22 20 6d 65 63 68 61  ard "hint" mecha
1b620 6e 69 73 6d 73 20 77 68 69 63 68 0a 63 61 6e 20  nisms which.can 
1b630 62 65 20 75 73 65 64 20 74 6f 20 67 69 76 65 20  be used to give 
1b640 74 68 65 20 71 75 65 72 79 20 6f 70 74 69 6d 69  the query optimi
1b650 7a 65 72 20 63 6c 75 65 73 20 61 62 6f 75 74 20  zer clues about 
1b660 77 68 61 74 20 69 6e 64 69 63 65 73 20 69 74 20  what indices it 
1b670 73 68 6f 75 6c 64 0a 75 73 65 20 66 6f 72 20 61  should.use for a
1b680 20 70 61 72 74 69 63 75 6c 61 72 20 73 74 61 74   particular stat
1b690 65 6d 65 6e 74 2e 20 20 54 68 65 20 49 4e 44 45  ement.  The INDE
1b6a0 58 20 42 59 20 63 6c 61 75 73 65 20 6f 66 20 53  X BY clause of S
1b6b0 51 4c 69 74 65 20 69 73 20 0a 3c 65 6d 3e 6e 6f  QLite is .<em>no
1b6c0 74 3c 2f 65 6d 3e 20 61 20 68 69 6e 74 69 6e 67  t</em> a hinting
1b6d0 20 6d 65 63 68 61 6e 69 73 6d 20 61 6e 64 20 69   mechanism and i
1b6e0 74 20 73 68 6f 75 6c 64 20 6e 6f 74 20 62 65 20  t should not be 
1b6f0 75 73 65 64 20 61 73 20 73 75 63 68 2e 0a 5e 54  used as such..^T
1b700 68 65 20 49 4e 44 45 58 45 44 20 42 59 20 63 6c  he INDEXED BY cl
1b710 61 75 73 65 20 64 6f 65 73 20 6e 6f 74 20 67 69  ause does not gi
1b720 76 65 20 74 68 65 20 6f 70 74 69 6d 69 7a 65 72  ve the optimizer
1b730 20 68 69 6e 74 73 20 61 62 6f 75 74 20 77 68 69   hints about whi
1b740 63 68 20 69 6e 64 65 78 0a 74 6f 20 75 73 65 3b  ch index.to use;
1b750 20 69 74 20 67 69 76 65 73 20 74 68 65 20 6f 70   it gives the op
1b760 74 69 6d 69 7a 65 72 20 61 20 72 65 71 75 69 72  timizer a requir
1b770 65 6d 65 6e 74 20 6f 66 20 77 68 69 63 68 20 69  ement of which i
1b780 6e 64 65 78 20 74 6f 20 75 73 65 2e 0a 5e 49 66  ndex to use..^If
1b790 20 74 68 65 20 71 75 65 72 79 20 6f 70 74 69 6d   the query optim
1b7a0 69 7a 65 72 20 69 73 20 75 6e 61 62 6c 65 20 74  izer is unable t
1b7b0 6f 20 75 73 65 20 74 68 65 20 69 6e 64 65 78 20  o use the index 
1b7c0 73 70 65 63 69 66 69 65 64 20 62 79 20 74 68 65  specified by the
1b7d0 0a 49 4e 44 45 58 20 42 59 20 63 6c 61 75 73 65  .INDEX BY clause
1b7e0 2c 20 74 68 65 6e 20 74 68 65 20 71 75 65 72 79  , then the query
1b7f0 20 77 69 6c 6c 20 66 61 69 6c 20 77 69 74 68 20   will fail with 
1b800 61 6e 20 65 72 72 6f 72 2e 3c 2f 70 3e 0a 0a 3c  an error.</p>..<
1b810 70 3e 54 68 65 20 49 4e 44 45 58 45 44 20 42 59  p>The INDEXED BY
1b820 20 63 6c 61 75 73 65 20 69 73 20 3c 65 6d 3e 6e   clause is <em>n
1b830 6f 74 3c 2f 65 6d 3e 20 69 6e 74 65 6e 64 65 64  ot</em> intended
1b840 20 66 6f 72 20 75 73 65 20 69 6e 20 74 75 6e 69   for use in tuni
1b850 6e 67 0a 74 68 65 20 70 72 65 66 6f 72 6d 61 6e  ng.the preforman
1b860 63 65 20 6f 66 20 61 20 71 75 65 72 79 2e 20 20  ce of a query.  
1b870 54 68 65 20 69 6e 74 65 6e 74 20 6f 66 20 74 68  The intent of th
1b880 65 20 49 4e 44 45 58 45 44 20 42 59 20 63 6c 61  e INDEXED BY cla
1b890 75 73 65 20 69 73 0a 74 6f 20 72 61 69 73 65 20  use is.to raise 
1b8a0 61 20 72 75 6e 2d 74 69 6d 65 20 65 72 72 6f 72  a run-time error
1b8b0 20 69 66 20 61 20 73 63 68 65 6d 61 20 63 68 61   if a schema cha
1b8c0 6e 67 65 2c 20 73 75 63 68 20 61 73 20 64 72 6f  nge, such as dro
1b8d0 70 70 69 6e 67 20 6f 72 0a 63 72 65 61 74 69 6e  pping or.creatin
1b8e0 67 20 61 6e 20 69 6e 64 65 78 2c 20 63 61 75 73  g an index, caus
1b8f0 65 73 20 74 68 65 20 71 75 65 72 79 20 70 6c 61  es the query pla
1b900 6e 20 66 6f 72 20 61 20 74 69 6d 65 2d 73 65 6e  n for a time-sen
1b910 73 69 74 69 76 65 20 71 75 65 72 79 0a 74 6f 20  sitive query.to 
1b920 63 68 61 6e 67 65 2e 20 20 54 68 65 20 49 4e 44  change.  The IND
1b930 45 58 45 44 20 42 59 20 63 6c 61 75 73 65 20 69  EXED BY clause i
1b940 73 20 64 65 73 69 67 6e 65 64 20 74 6f 20 68 65  s designed to he
1b950 6c 70 20 64 65 74 65 63 74 0a 75 6e 64 65 73 69  lp detect.undesi
1b960 72 61 62 6c 65 20 71 75 65 72 79 20 70 6c 61 6e  rable query plan
1b970 20 63 68 61 6e 67 65 73 20 64 75 72 69 6e 67 20   changes during 
1b980 72 65 67 72 65 73 73 69 6f 6e 20 74 65 73 74 69  regression testi
1b990 6e 67 2e 0a 44 65 76 65 6c 6f 70 65 72 73 20 61  ng..Developers a
1b9a0 72 65 20 61 64 6d 6f 6e 69 73 68 65 64 20 74 6f  re admonished to
1b9b0 20 6f 6d 69 74 20 61 6c 6c 20 75 73 65 20 6f 66   omit all use of
1b9c0 20 49 4e 44 45 58 45 44 20 42 59 20 64 75 72 69   INDEXED BY duri
1b9d0 6e 67 0a 61 70 70 6c 69 63 61 74 69 6f 6e 20 64  ng.application d
1b9e0 65 73 69 67 6e 2c 20 69 6d 70 6c 65 6d 65 6e 74  esign, implement
1b9f0 61 74 69 6f 6e 2c 20 74 65 73 74 69 6e 67 2c 20  ation, testing, 
1ba00 61 6e 64 20 74 75 6e 69 6e 67 2e 20 20 49 66 0a  and tuning.  If.
1ba10 49 4e 44 45 58 45 44 20 42 59 20 69 73 20 74 6f  INDEXED BY is to
1ba20 20 62 65 20 75 73 65 64 20 61 74 20 61 6c 6c 2c   be used at all,
1ba30 20 69 74 20 73 68 6f 75 6c 64 20 62 65 20 69 6e   it should be in
1ba40 73 65 72 74 65 64 20 61 74 20 74 68 65 20 76 65  serted at the ve
1ba50 72 79 0a 65 6e 64 20 6f 66 20 74 68 65 20 64 65  ry.end of the de
1ba60 76 65 6c 6f 70 6d 65 6e 74 20 70 72 6f 63 65 73  velopment proces
1ba70 73 20 77 68 65 6e 20 22 6c 6f 63 6b 69 6e 67 20  s when "locking 
1ba80 64 6f 77 6e 22 20 61 20 64 65 73 69 67 6e 2e 3c  down" a design.<
1ba90 2f 70 3e 0a 0a 3c 68 33 3e 53 65 65 20 41 6c 73  /p>..<h3>See Als
1baa0 6f 3a 3c 2f 68 33 3e 0a 0a 3c 70 3e 54 68 65 20  o:</h3>..<p>The 
1bab0 5b 73 71 6c 69 74 65 33 5f 73 74 6d 74 5f 73 74  [sqlite3_stmt_st
1bac0 61 74 75 73 28 29 5d 20 43 2f 43 2b 2b 20 69 6e  atus()] C/C++ in
1bad0 74 65 72 66 61 63 65 20 74 6f 67 65 74 68 65 72  terface together
1bae0 20 77 69 74 68 20 74 68 65 0a 5b 53 51 4c 49 54   with the.[SQLIT
1baf0 45 5f 53 54 4d 54 53 54 41 54 55 53 5f 46 55 4c  E_STMTSTATUS_FUL
1bb00 4c 53 43 41 4e 5f 53 54 45 50 5d 20 61 6e 64 20  LSCAN_STEP] and 
1bb10 5b 53 51 4c 49 54 45 5f 53 54 4d 54 53 54 41 54  [SQLITE_STMTSTAT
1bb20 55 53 5f 53 4f 52 54 5d 20 76 65 72 62 73 0a 63  US_SORT] verbs.c
1bb30 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 64 65  an be used to de
1bb40 74 65 63 74 20 61 74 20 72 75 6e 2d 74 69 6d 65  tect at run-time
1bb50 20 77 68 65 6e 20 61 6e 20 53 51 4c 20 73 74 61   when an SQL sta
1bb60 74 65 6d 65 6e 74 20 69 73 20 6e 6f 74 0a 6d 61  tement is not.ma
1bb70 6b 69 6e 67 20 65 66 66 65 63 74 69 76 65 20 75  king effective u
1bb80 73 65 20 6f 66 20 69 6e 64 69 63 65 73 2e 20 20  se of indices.  
1bb90 4d 61 6e 79 20 61 70 70 6c 69 63 61 74 69 6f 6e  Many application
1bba0 73 20 6d 61 79 20 70 72 65 66 65 72 20 74 6f 0a  s may prefer to.
1bbb0 75 73 65 20 74 68 65 20 5b 73 71 6c 69 74 65 33  use the [sqlite3
1bbc0 5f 73 74 6d 74 5f 73 74 61 74 75 73 28 29 5d 20  _stmt_status()] 
1bbd0 69 6e 74 65 72 66 61 63 65 20 74 6f 20 64 65 74  interface to det
1bbe0 65 63 74 20 69 6e 64 65 78 20 6d 69 73 75 73 65  ect index misuse
1bbf0 0a 72 61 74 68 65 72 20 74 68 61 6e 20 74 68 65  .rather than 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 64 65 73 63 72 69 62 65 64 20 68 65 72  se described her
1bc20 65 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23  e.</p>..<tcl>.##
1bc30 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1bc40 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1bc50 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1bc60 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1bc70 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 41 20  ###########.# A 
1bc80 6c 69 73 74 20 6f 66 20 6b 65 79 77 6f 72 64 73  list of keywords
1bc90 2e 20 20 41 20 61 73 74 65 72 69 73 6b 20 6f 63  .  A asterisk oc
1bca0 63 75 72 73 20 61 66 74 65 72 20 74 68 65 20 6b  curs after the k
1bcb0 65 79 77 6f 72 64 20 69 66 20 69 74 20 69 73 20  eyword if it is 
1bcc0 6f 6e 0a 23 20 74 68 65 20 66 61 6c 6c 62 61 63  on.# the fallbac
1bcd0 6b 20 6c 69 73 74 2e 0a 23 0a 73 65 74 20 6b 65  k list..#.set ke
1bce0 79 77 6f 72 64 5f 6c 69 73 74 20 5b 6c 73 6f 72  yword_list [lsor
1bcf0 74 20 7b 0a 20 20 20 41 42 4f 52 54 0a 20 20 20  t {.   ABORT.   
1bd00 41 43 54 49 4f 4e 0a 20 20 20 41 44 44 0a 20 20  ACTION.   ADD.  
1bd10 20 41 46 54 45 52 0a 20 20 20 41 4c 4c 0a 20 20   AFTER.   ALL.  
1bd20 20 41 4c 54 45 52 0a 20 20 20 41 4e 41 4c 59 5a   ALTER.   ANALYZ
1bd30 45 0a 20 20 20 41 4e 44 0a 20 20 20 41 53 0a 20  E.   AND.   AS. 
1bd40 20 20 41 53 43 0a 20 20 20 41 54 54 41 43 48 0a    ASC.   ATTACH.
1bd50 20 20 20 41 55 54 4f 49 4e 43 52 45 4d 45 4e 54     AUTOINCREMENT
1bd60 0a 20 20 20 42 45 46 4f 52 45 0a 20 20 20 42 45  .   BEFORE.   BE
1bd70 47 49 4e 0a 20 20 20 42 45 54 57 45 45 4e 0a 20  GIN.   BETWEEN. 
1bd80 20 20 42 59 0a 20 20 20 43 41 53 43 41 44 45 0a    BY.   CASCADE.
1bd90 20 20 20 43 41 53 45 0a 20 20 20 43 41 53 54 0a     CASE.   CAST.
1bda0 20 20 20 43 48 45 43 4b 0a 20 20 20 43 4f 4c 4c     CHECK.   COLL
1bdb0 41 54 45 0a 20 20 20 43 4f 4c 55 4d 4e 0a 20 20  ATE.   COLUMN.  
1bdc0 20 43 4f 4d 4d 49 54 0a 20 20 20 43 4f 4e 46 4c   COMMIT.   CONFL
1bdd0 49 43 54 0a 20 20 20 43 4f 4e 53 54 52 41 49 4e  ICT.   CONSTRAIN
1bde0 54 0a 20 20 20 43 52 45 41 54 45 0a 20 20 20 43  T.   CREATE.   C
1bdf0 52 4f 53 53 0a 20 20 20 43 55 52 52 45 4e 54 5f  ROSS.   CURRENT_
1be00 44 41 54 45 0a 20 20 20 43 55 52 52 45 4e 54 5f  DATE.   CURRENT_
1be10 54 49 4d 45 0a 20 20 20 43 55 52 52 45 4e 54 5f  TIME.   CURRENT_
1be20 54 49 4d 45 53 54 41 4d 50 0a 20 20 20 44 41 54  TIMESTAMP.   DAT
1be30 41 42 41 53 45 0a 20 20 20 44 45 46 41 55 4c 54  ABASE.   DEFAULT
1be40 0a 20 20 20 44 45 46 45 52 52 45 44 0a 20 20 20  .   DEFERRED.   
1be50 44 45 46 45 52 52 41 42 4c 45 0a 20 20 20 44 45  DEFERRABLE.   DE
1be60 4c 45 54 45 0a 20 20 20 44 45 53 43 0a 20 20 20  LETE.   DESC.   
1be70 44 45 54 41 43 48 0a 20 20 20 44 49 53 54 49 4e  DETACH.   DISTIN
1be80 43 54 0a 20 20 20 44 52 4f 50 0a 20 20 20 45 4e  CT.   DROP.   EN
1be90 44 0a 20 20 20 45 41 43 48 0a 20 20 20 45 4c 53  D.   EACH.   ELS
1bea0 45 0a 20 20 20 45 53 43 41 50 45 0a 20 20 20 45  E.   ESCAPE.   E
1beb0 58 43 45 50 54 0a 20 20 20 45 58 43 4c 55 53 49  XCEPT.   EXCLUSI
1bec0 56 45 0a 20 20 20 45 58 49 53 54 53 0a 20 20 20  VE.   EXISTS.   
1bed0 45 58 50 4c 41 49 4e 0a 20 20 20 46 41 49 4c 0a  EXPLAIN.   FAIL.
1bee0 20 20 20 46 4f 52 0a 20 20 20 46 4f 52 45 49 47     FOR.   FOREIG
1bef0 4e 0a 20 20 20 46 52 4f 4d 0a 20 20 20 46 55 4c  N.   FROM.   FUL
1bf00 4c 0a 20 20 20 47 4c 4f 42 0a 20 20 20 47 52 4f  L.   GLOB.   GRO
1bf10 55 50 0a 20 20 20 48 41 56 49 4e 47 0a 20 20 20  UP.   HAVING.   
1bf20 49 46 0a 20 20 20 49 47 4e 4f 52 45 0a 20 20 20  IF.   IGNORE.   
1bf30 49 4d 4d 45 44 49 41 54 45 0a 20 20 20 49 4e 0a  IMMEDIATE.   IN.
1bf40 20 20 20 49 4e 44 45 58 0a 20 20 20 49 4e 44 45     INDEX.   INDE
1bf50 58 45 44 0a 20 20 20 49 4e 49 54 49 41 4c 4c 59  XED.   INITIALLY
1bf60 0a 20 20 20 49 4e 4e 45 52 0a 20 20 20 49 4e 53  .   INNER.   INS
1bf70 45 52 54 0a 20 20 20 49 4e 53 54 45 41 44 0a 20  ERT.   INSTEAD. 
1bf80 20 20 49 4e 54 45 52 53 45 43 54 0a 20 20 20 49    INTERSECT.   I
1bf90 4e 54 4f 0a 20 20 20 49 53 0a 20 20 20 49 53 4e  NTO.   IS.   ISN
1bfa0 55 4c 4c 0a 20 20 20 4a 4f 49 4e 0a 20 20 20 4b  ULL.   JOIN.   K
1bfb0 45 59 0a 20 20 20 4c 45 46 54 0a 20 20 20 4c 49  EY.   LEFT.   LI
1bfc0 4b 45 0a 20 20 20 4c 49 4d 49 54 0a 20 20 20 4d  KE.   LIMIT.   M
1bfd0 41 54 43 48 0a 20 20 20 4e 41 54 55 52 41 4c 0a  ATCH.   NATURAL.
1bfe0 20 20 20 4e 4f 0a 20 20 20 4e 4f 54 0a 20 20 20     NO.   NOT.   
1bff0 4e 4f 54 4e 55 4c 4c 0a 20 20 20 4e 55 4c 4c 0a  NOTNULL.   NULL.
1c000 20 20 20 4f 46 0a 20 20 20 4f 46 46 53 45 54 0a     OF.   OFFSET.
1c010 20 20 20 4f 4e 0a 20 20 20 4f 52 0a 20 20 20 4f     ON.   OR.   O
1c020 52 44 45 52 0a 20 20 20 4f 55 54 45 52 0a 20 20  RDER.   OUTER.  
1c030 20 50 4c 41 4e 0a 20 20 20 50 52 41 47 4d 41 0a   PLAN.   PRAGMA.
1c040 20 20 20 50 52 49 4d 41 52 59 0a 20 20 20 51 55     PRIMARY.   QU
1c050 45 52 59 0a 20 20 20 52 41 49 53 45 0a 20 20 20  ERY.   RAISE.   
1c060 52 45 46 45 52 45 4e 43 45 53 0a 20 20 20 52 45  REFERENCES.   RE
1c070 47 45 58 50 0a 20 20 20 52 45 49 4e 44 45 58 0a  GEXP.   REINDEX.
1c080 20 20 20 52 45 4c 45 41 53 45 0a 20 20 20 52 45     RELEASE.   RE
1c090 4e 41 4d 45 0a 20 20 20 52 45 50 4c 41 43 45 0a  NAME.   REPLACE.
1c0a0 20 20 20 52 45 53 54 52 49 43 54 0a 20 20 20 52     RESTRICT.   R
1c0b0 49 47 48 54 0a 20 20 20 52 4f 4c 4c 42 41 43 4b  IGHT.   ROLLBACK
1c0c0 0a 20 20 20 52 4f 57 0a 20 20 20 53 41 56 45 50  .   ROW.   SAVEP
1c0d0 4f 49 4e 54 0a 20 20 20 53 45 4c 45 43 54 0a 20  OINT.   SELECT. 
1c0e0 20 20 53 45 54 0a 20 20 20 54 41 42 4c 45 0a 20    SET.   TABLE. 
1c0f0 20 20 54 45 4d 50 0a 20 20 20 54 45 4d 50 4f 52    TEMP.   TEMPOR
1c100 41 52 59 0a 20 20 20 54 48 45 4e 0a 20 20 20 54  ARY.   THEN.   T
1c110 4f 0a 20 20 20 54 52 41 4e 53 41 43 54 49 4f 4e  O.   TRANSACTION
1c120 0a 20 20 20 54 52 49 47 47 45 52 0a 20 20 20 55  .   TRIGGER.   U
1c130 4e 49 4f 4e 0a 20 20 20 55 4e 49 51 55 45 0a 20  NION.   UNIQUE. 
1c140 20 20 55 50 44 41 54 45 0a 20 20 20 55 53 49 4e    UPDATE.   USIN
1c150 47 0a 20 20 20 56 41 43 55 55 4d 0a 20 20 20 56  G.   VACUUM.   V
1c160 41 4c 55 45 53 0a 20 20 20 56 49 45 57 0a 20 20  ALUES.   VIEW.  
1c170 20 56 49 52 54 55 41 4c 0a 20 20 20 57 48 45 4e   VIRTUAL.   WHEN
1c180 0a 20 20 20 57 48 45 52 45 0a 7d 5d 0a 0a 68 64  .   WHERE.}]..hd
1c190 5f 70 75 74 73 20 7b 3c 44 49 56 20 63 6c 61 73  _puts {<DIV clas
1c1a0 73 3d 22 70 64 66 5f 73 65 63 74 69 6f 6e 22 3e  s="pdf_section">
1c1b0 7d 0a 53 65 63 74 69 6f 6e 20 7b 53 51 4c 69 74  }.Section {SQLit
1c1c0 65 20 4b 65 79 77 6f 72 64 73 7d 20 6b 65 79 77  e Keywords} keyw
1c1d0 6f 72 64 73 20 7b 7b 2a 53 51 4c 20 6b 65 79 77  ords {{*SQL keyw
1c1e0 6f 72 64 7d 20 7b 53 51 4c 20 6b 65 79 77 6f 72  ord} {SQL keywor
1c1f0 64 73 7d 7d 0a 68 64 5f 70 75 74 73 20 7b 3c 2f  ds}}.hd_puts {</
1c200 44 49 56 3e 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70  DIV>}.</tcl>..<p
1c210 3e 54 68 65 20 53 51 4c 20 73 74 61 6e 64 61 72  >The SQL standar
1c220 64 20 73 70 65 63 69 66 69 65 73 20 61 20 68 75  d specifies a hu
1c230 67 65 20 6e 75 6d 62 65 72 20 6f 66 20 6b 65 79  ge number of key
1c240 77 6f 72 64 73 20 77 68 69 63 68 20 6d 61 79 20  words which may 
1c250 6e 6f 74 0a 62 65 20 75 73 65 64 20 61 73 20 74  not.be used as t
1c260 68 65 20 6e 61 6d 65 73 20 6f 66 20 74 61 62 6c  he names of tabl
1c270 65 73 2c 20 69 6e 64 69 63 65 73 2c 20 63 6f 6c  es, indices, col
1c280 75 6d 6e 73 2c 20 64 61 74 61 62 61 73 65 73 2c  umns, databases,
1c290 20 75 73 65 72 2d 64 65 66 69 6e 65 64 0a 66 75   user-defined.fu
1c2a0 6e 63 74 69 6f 6e 73 2c 20 63 6f 6c 6c 61 74 69  nctions, collati
1c2b0 6f 6e 73 2c 20 76 69 72 74 75 61 6c 20 74 61 62  ons, virtual tab
1c2c0 6c 65 20 6d 6f 64 75 6c 65 73 2c 20 6f 72 20 61  le modules, or a
1c2d0 6e 79 20 6f 74 68 65 72 20 6e 61 6d 65 64 20 6f  ny other named o
1c2e0 62 6a 65 63 74 2e 0a 54 68 65 20 6c 69 73 74 20  bject..The list 
1c2f0 6f 66 20 6b 65 79 77 6f 72 64 73 20 69 73 20 73  of keywords is s
1c300 6f 20 6c 6f 6e 67 20 74 68 61 74 20 66 65 77 20  o long that few 
1c310 70 65 6f 70 6c 65 20 63 61 6e 20 72 65 6d 65 6d  people can remem
1c320 62 65 72 20 74 68 65 6d 20 61 6c 6c 2e 0a 46 6f  ber them all..Fo
1c330 72 20 6d 6f 73 74 20 53 51 4c 20 63 6f 64 65 2c  r most SQL code,
1c340 20 79 6f 75 72 20 73 61 66 65 73 74 20 62 65 74   your safest bet
1c350 20 69 73 20 74 6f 20 6e 65 76 65 72 20 75 73 65   is to never use
1c360 20 61 6e 79 20 45 6e 67 6c 69 73 68 20 6c 61 6e   any English lan
1c370 67 75 61 67 65 0a 77 6f 72 64 20 61 73 20 74 68  guage.word as th
1c380 65 20 6e 61 6d 65 20 6f 66 20 61 20 75 73 65 72  e name of a user
1c390 2d 64 65 66 69 6e 65 64 20 6f 62 6a 65 63 74 2e  -defined object.
1c3a0 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 79 6f 75 20  </p>..<p>If you 
1c3b0 77 61 6e 74 20 74 6f 20 75 73 65 20 61 20 6b 65  want to use a ke
1c3c0 79 77 6f 72 64 20 61 73 20 61 20 6e 61 6d 65 2c  yword as a name,
1c3d0 20 79 6f 75 20 6e 65 65 64 20 74 6f 20 71 75 6f   you need to quo
1c3e0 74 65 20 69 74 2e 20 20 54 68 65 72 65 0a 61 72  te it.  There.ar
1c3f0 65 20 74 68 72 65 65 20 77 61 79 73 20 6f 66 20  e three ways of 
1c400 71 75 6f 74 69 6e 67 20 6b 65 79 77 6f 72 64 73  quoting keywords
1c410 20 69 6e 20 53 51 4c 69 74 65 3a 3c 2f 70 3e 0a   in SQLite:</p>.
1c420 0a 3c 70 3e 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65  .<p>.<blockquote
1c430 3e 0a 3c 74 61 62 6c 65 3e 0a 3c 74 72 3e 09 3c  >.<table>.<tr>.<
1c440 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e  td valign="top">
1c450 3c 62 3e 27 6b 65 79 77 6f 72 64 27 3c 2f 62 3e  <b>'keyword'</b>
1c460 3c 2f 74 64 3e 3c 74 64 20 77 69 64 74 68 3d 22  </td><td width="
1c470 32 30 22 3e 3c 2f 74 64 3e 0a 09 3c 74 64 3e 5e  20"></td>..<td>^
1c480 41 20 6b 65 79 77 6f 72 64 20 69 6e 20 73 69 6e  A keyword in sin
1c490 67 6c 65 20 71 75 6f 74 65 73 20 69 73 20 61 20  gle quotes is a 
1c4a0 73 74 72 69 6e 67 20 6c 69 74 65 72 61 6c 2e 3c  string literal.<
1c4b0 2f 74 64 3e 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 09  /td></tr>..<tr>.
1c4c0 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  <td valign="top"
1c4d0 3e 3c 62 3e 22 6b 65 79 77 6f 72 64 22 3c 2f 62  ><b>"keyword"</b
1c4e0 3e 3c 2f 74 64 3e 3c 74 64 3e 3c 2f 74 64 3e 0a  ></td><td></td>.
1c4f0 09 3c 74 64 3e 5e 41 20 6b 65 79 77 6f 72 64 20  .<td>^A keyword 
1c500 69 6e 20 64 6f 75 62 6c 65 2d 71 75 6f 74 65 73  in double-quotes
1c510 20 69 73 20 61 6e 20 69 64 65 6e 74 69 66 69 65   is an identifie
1c520 72 2e 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 0a 3c 74  r.</td></tr>..<t
1c530 72 3e 09 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  r>.<td valign="t
1c540 6f 70 22 3e 3c 62 3e 26 23 39 31 3b 6b 65 79 77  op"><b>&#91;keyw
1c550 6f 72 64 26 23 39 33 3b 3c 2f 62 3e 3c 2f 74 64  ord&#93;</b></td
1c560 3e 3c 74 64 3e 3c 2f 74 64 3e 0a 09 3c 74 64 3e  ><td></td>..<td>
1c570 5e 41 20 6b 65 79 77 6f 72 64 20 65 6e 63 6c 6f  ^A keyword enclo
1c580 73 65 64 20 69 6e 20 73 71 75 61 72 65 20 62 72  sed in square br
1c590 61 63 6b 65 74 73 20 69 73 20 0a 20 20 20 20 20  ackets is .     
1c5a0 20 20 20 61 6e 20 69 64 65 6e 74 69 66 69 65 72     an identifier
1c5b0 2e 20 20 54 68 69 73 20 69 73 20 6e 6f 74 20 73  .  This is not s
1c5c0 74 61 6e 64 61 72 64 20 53 51 4c 2e 20 20 54 68  tandard SQL.  Th
1c5d0 69 73 20 71 75 6f 74 69 6e 67 20 6d 65 63 68 61  is quoting mecha
1c5e0 6e 69 73 6d 0a 20 20 20 20 20 20 20 20 69 73 20  nism.        is 
1c5f0 75 73 65 64 20 62 79 20 4d 53 20 41 63 63 65 73  used by MS Acces
1c600 73 20 61 6e 64 20 53 51 4c 20 53 65 72 76 65 72  s and SQL Server
1c610 20 61 6e 64 20 69 73 20 69 6e 63 6c 75 64 65 64   and is included
1c620 20 69 6e 20 53 51 4c 69 74 65 20 66 6f 72 0a 20   in SQLite for. 
1c630 20 20 20 20 20 20 20 63 6f 6d 70 61 74 69 62 69         compatibi
1c640 6c 69 74 79 2e 3c 2f 74 64 3e 3c 2f 74 72 3e 0a  lity.</td></tr>.
1c650 0a 3c 74 72 3e 09 3c 74 64 20 76 61 6c 69 67 6e  .<tr>.<td valign
1c660 3d 22 74 6f 70 22 3e 3c 62 3e 26 23 39 36 3b 6b  ="top"><b>&#96;k
1c670 65 79 77 6f 72 64 26 23 39 36 3b 3c 2f 62 3e 3c  eyword&#96;</b><
1c680 2f 74 64 3e 3c 74 64 3e 3c 2f 74 64 3e 0a 09 3c  /td><td></td>..<
1c690 74 64 3e 5e 41 20 6b 65 79 77 6f 72 64 20 65 6e  td>^A keyword en
1c6a0 63 6c 6f 73 65 64 20 69 6e 20 67 72 61 76 65 20  closed in grave 
1c6b0 61 63 63 65 6e 74 73 20 28 41 53 43 49 49 20 63  accents (ASCII c
1c6c0 6f 64 65 20 39 36 29 20 69 73 20 0a 20 20 20 20  ode 96) is .    
1c6d0 20 20 20 20 61 6e 20 69 64 65 6e 74 69 66 69 65      an identifie
1c6e0 72 2e 20 20 54 68 69 73 20 69 73 20 6e 6f 74 20  r.  This is not 
1c6f0 73 74 61 6e 64 61 72 64 20 53 51 4c 2e 20 20 54  standard SQL.  T
1c700 68 69 73 20 71 75 6f 74 69 6e 67 20 6d 65 63 68  his quoting mech
1c710 61 6e 69 73 6d 0a 20 20 20 20 20 20 20 20 69 73  anism.        is
1c720 20 75 73 65 64 20 62 79 20 4d 79 53 51 4c 20 61   used by MySQL a
1c730 6e 64 20 69 73 20 69 6e 63 6c 75 64 65 64 20 69  nd is included i
1c740 6e 20 53 51 4c 69 74 65 20 66 6f 72 0a 20 20 20  n SQLite for.   
1c750 20 20 20 20 20 63 6f 6d 70 61 74 69 62 69 6c 69       compatibili
1c760 74 79 2e 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 3c 2f  ty.</td></tr>.</
1c770 74 61 62 6c 65 3e 0a 3c 2f 62 6c 6f 63 6b 71 75  table>.</blockqu
1c780 6f 74 65 3e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 46 6f  ote>.</p>..<p>Fo
1c790 72 20 72 65 73 69 6c 69 65 6e 63 65 20 77 68 65  r resilience whe
1c7a0 6e 20 63 6f 6e 66 72 6f 6e 74 65 64 20 77 69 74  n confronted wit
1c7b0 68 20 68 69 73 74 6f 72 69 63 61 6c 20 53 51 4c  h historical SQL
1c7c0 20 73 74 61 74 65 6d 65 6e 74 73 2c 20 53 51 4c   statements, SQL
1c7d0 69 74 65 0a 77 69 6c 6c 20 73 6f 6d 65 74 69 6d  ite.will sometim
1c7e0 65 73 20 62 65 6e 64 20 74 68 65 20 71 75 6f 74  es bend the quot
1c7f0 69 6e 67 20 72 75 6c 65 73 20 61 62 6f 76 65 3a  ing rules above:
1c800 3c 2f 70 3e 0a 0a 3c 75 6c 3e 0a 3c 6c 69 3e 3c  </p>..<ul>.<li><
1c810 70 3e 5e 49 66 20 61 20 6b 65 79 77 6f 72 64 20  p>^If a keyword 
1c820 69 6e 20 73 69 6e 67 6c 65 0a 71 75 6f 74 65 73  in single.quotes
1c830 20 28 65 78 3a 20 3c 62 3e 27 6b 65 79 27 3c 2f   (ex: <b>'key'</
1c840 62 3e 20 6f 72 20 3c 62 3e 27 67 6c 6f 62 27 3c  b> or <b>'glob'<
1c850 2f 62 3e 29 20 69 73 20 75 73 65 64 20 69 6e 20  /b>) is used in 
1c860 61 20 63 6f 6e 74 65 78 74 20 77 68 65 72 65 0a  a context where.
1c870 61 6e 20 69 64 65 6e 74 69 66 69 65 72 20 69 73  an identifier is
1c880 20 61 6c 6c 6f 77 65 64 20 62 75 74 20 77 68 65   allowed but whe
1c890 72 65 20 61 20 73 74 72 69 6e 67 20 6c 69 74 65  re a string lite
1c8a0 72 61 6c 20 69 73 20 6e 6f 74 20 61 6c 6c 6f 77  ral is not allow
1c8b0 65 64 2c 20 74 68 65 6e 0a 74 68 65 20 74 6f 6b  ed, then.the tok
1c8c0 65 6e 20 69 73 20 75 6e 64 65 72 73 74 6f 6f 64  en is understood
1c8d0 20 74 6f 20 62 65 20 61 6e 20 69 64 65 6e 74 69   to be an identi
1c8e0 66 69 65 72 20 69 6e 73 74 65 61 64 20 6f 66 20  fier instead of 
1c8f0 61 20 73 74 72 69 6e 67 20 6c 69 74 65 72 61 6c  a string literal
1c900 2e 0a 3c 2f 70 3e 3c 2f 6c 69 3e 0a 0a 3c 6c 69  ..</p></li>..<li
1c910 3e 3c 70 3e 5e 49 66 20 61 20 6b 65 79 77 6f 72  ><p>^If a keywor
1c920 64 20 69 6e 20 64 6f 75 62 6c 65 0a 71 75 6f 74  d in double.quot
1c930 65 73 20 28 65 78 3a 20 3c 62 3e 22 6b 65 79 22  es (ex: <b>"key"
1c940 3c 2f 62 3e 20 6f 72 20 3c 62 3e 22 67 6c 6f 62  </b> or <b>"glob
1c950 22 3c 2f 62 3e 29 20 69 73 20 75 73 65 64 20 69  "</b>) is used i
1c960 6e 20 61 20 63 6f 6e 74 65 78 74 20 77 68 65 72  n a context wher
1c970 65 0a 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 72  e.it cannot be r
1c980 65 73 6f 6c 76 65 64 20 74 6f 20 61 6e 20 69 64  esolved to an id
1c990 65 6e 74 69 66 69 65 72 20 62 75 74 20 77 68 65  entifier but whe
1c9a0 72 65 20 61 20 73 74 72 69 6e 67 20 6c 69 74 65  re a string lite
1c9b0 72 61 6c 0a 69 73 20 61 6c 6c 6f 77 65 64 2c 20  ral.is allowed, 
1c9c0 74 68 65 6e 20 74 68 65 20 74 6f 6b 65 6e 20 69  then the token i
1c9d0 73 20 75 6e 64 65 72 73 74 6f 6f 64 20 74 6f 20  s understood to 
1c9e0 62 65 20 61 20 73 74 72 69 6e 67 20 6c 69 74 65  be a string lite
1c9f0 72 61 6c 20 69 6e 73 74 65 61 64 0a 6f 66 20 61  ral instead.of a
1ca00 6e 20 69 64 65 6e 74 69 66 65 72 2e 3c 2f 70 3e  n identifer.</p>
1ca10 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e 0a 0a 3c 70 3e  </li>.</ul>..<p>
1ca20 50 72 6f 67 72 61 6d 6d 65 72 73 20 61 72 65 20  Programmers are 
1ca30 63 61 75 74 69 6f 6e 65 64 20 6e 6f 74 20 74 6f  cautioned not to
1ca40 20 75 73 65 20 74 68 65 20 74 77 6f 20 65 78 63   use the two exc
1ca50 65 70 74 69 6f 6e 73 20 64 65 73 63 72 69 62 65  eptions describe
1ca60 64 20 69 6e 0a 74 68 65 20 70 72 65 76 69 6f 75  d in.the previou
1ca70 73 20 62 75 6c 6c 65 74 73 2e 20 20 57 65 20 65  s bullets.  We e
1ca80 6d 70 68 61 73 69 7a 65 20 74 68 61 74 20 74 68  mphasize that th
1ca90 65 79 20 65 78 69 73 74 20 6f 6e 6c 79 20 73 6f  ey exist only so
1caa0 20 74 68 61 74 20 6f 6c 64 0a 61 6e 64 20 69 6c   that old.and il
1cab0 6c 2d 66 6f 72 6d 65 64 20 53 51 4c 20 73 74 61  l-formed SQL sta
1cac0 74 65 6d 65 6e 74 73 20 77 69 6c 6c 20 72 75 6e  tements will run
1cad0 20 63 6f 72 72 65 63 74 6c 79 2e 20 20 46 75 74   correctly.  Fut
1cae0 75 72 65 20 76 65 72 73 69 6f 6e 73 20 6f 66 0a  ure versions of.
1caf0 53 51 4c 69 74 65 20 6d 69 67 68 74 20 63 68 61  SQLite might cha
1cb00 6e 67 65 20 74 6f 20 72 61 69 73 65 20 65 72 72  nge to raise err
1cb10 6f 72 73 20 69 6e 73 74 65 61 64 20 6f 66 20 61  ors instead of a
1cb20 63 63 65 70 74 69 6e 67 20 74 68 65 20 6d 61 6c  ccepting the mal
1cb30 66 6f 72 6d 65 64 0a 73 74 61 74 65 6d 65 6e 74  formed.statement
1cb40 73 20 63 6f 76 65 72 65 64 20 62 79 20 74 68 65  s covered by the
1cb50 20 65 78 63 65 70 74 69 6f 6e 73 20 61 62 6f 76   exceptions abov
1cb60 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 0a 53 51 4c 69  e.</p>..<p>.SQLi
1cb70 74 65 20 61 64 64 73 20 6e 65 77 20 6b 65 79 77  te adds new keyw
1cb80 6f 72 64 73 20 66 72 6f 6d 20 74 69 6d 65 20 74  ords from time t
1cb90 6f 20 74 69 6d 65 20 77 68 65 6e 20 69 74 20 74  o time when it t
1cba0 61 6b 65 73 20 6f 6e 20 6e 65 77 20 66 65 61 74  akes on new feat
1cbb0 75 72 65 73 2e 0a 53 6f 20 74 6f 20 70 72 65 76  ures..So to prev
1cbc0 65 6e 74 20 79 6f 75 72 20 63 6f 64 65 20 66 72  ent your code fr
1cbd0 6f 6d 20 62 65 69 6e 67 20 62 72 6f 6b 65 6e 20  om being broken 
1cbe0 62 79 20 66 75 74 75 72 65 20 65 6e 68 61 6e 63  by future enhanc
1cbf0 65 6d 65 6e 74 73 2c 20 79 6f 75 20 73 68 6f 75  ements, you shou
1cc00 6c 64 0a 6e 6f 72 6d 61 6c 6c 79 20 71 75 6f 74  ld.normally quot
1cc10 65 20 61 6e 79 20 69 64 65 6e 74 69 66 69 65 72  e any identifier
1cc20 20 74 68 61 74 20 69 73 20 61 6e 20 45 6e 67 6c   that is an Engl
1cc30 69 73 68 20 6c 61 6e 67 75 61 67 65 20 77 6f 72  ish language wor
1cc40 64 2c 20 65 76 65 6e 20 69 66 0a 79 6f 75 20 64  d, even if.you d
1cc50 6f 20 6e 6f 74 20 68 61 76 65 20 74 6f 2e 0a 3c  o not have to..<
1cc60 2f 70 3e 0a 0a 3c 70 3e 0a 54 68 65 20 6c 69 73  /p>..<p>.The lis
1cc70 74 20 62 65 6c 6f 77 20 73 68 6f 77 73 20 61 6c  t below shows al
1cc80 6c 20 70 6f 73 73 69 62 6c 65 20 6b 65 79 77 6f  l possible keywo
1cc90 72 64 73 20 75 73 65 64 20 62 79 20 61 6e 79 20  rds used by any 
1cca0 62 75 69 6c 64 20 6f 66 0a 53 51 4c 69 74 65 20  build of.SQLite 
1ccb0 72 65 67 61 72 64 6c 65 73 73 20 6f 66 20 5b 63  regardless of [c
1ccc0 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
1ccd0 6f 6e 73 5d 2e 20 20 0a 4d 6f 73 74 20 72 65 61  ons].  .Most rea
1cce0 73 6f 6e 61 62 6c 65 20 63 6f 6e 66 69 67 75 72  sonable configur
1ccf0 61 74 69 6f 6e 73 20 75 73 65 20 6d 6f 72 65 20  ations use more 
1cd00 6f 72 20 61 6c 6c 20 6f 66 20 74 68 65 73 65 20  or all of these 
1cd10 6b 65 79 77 6f 72 64 73 2c 0a 62 75 74 20 73 6f  keywords,.but so
1cd20 6d 65 20 6b 65 79 77 6f 72 64 73 20 6d 61 79 20  me keywords may 
1cd30 62 65 20 6f 6d 69 74 74 65 64 20 77 68 65 6e 20  be omitted when 
1cd40 53 51 4c 20 6c 61 6e 67 75 61 67 65 20 66 65 61  SQL language fea
1cd50 74 75 72 65 73 20 61 72 65 0a 64 69 73 61 62 6c  tures are.disabl
1cd60 65 64 2e 0a 5e 28 52 65 67 61 72 64 6c 65 73 73  ed..^(Regardless
1cd70 20 6f 66 20 74 68 65 20 63 6f 6d 70 69 6c 65 2d   of the compile-
1cd80 74 69 6d 65 20 63 6f 6e 66 69 67 75 72 61 74 69  time configurati
1cd90 6f 6e 2c 20 61 6e 79 20 69 64 65 6e 74 69 66 69  on, any identifi
1cda0 65 72 20 74 68 61 74 20 69 73 20 6e 6f 74 20 6f  er that is not o
1cdb0 6e 0a 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20  n.the following 
1cdc0 3c 74 63 6c 3e 68 64 5f 70 75 74 73 20 5b 6c 6c  <tcl>hd_puts [ll
1cdd0 65 6e 67 74 68 20 24 6b 65 79 77 6f 72 64 5f 6c  ength $keyword_l
1cde0 69 73 74 5d 3c 2f 74 63 6c 3e 20 65 6c 65 6d 65  ist]</tcl> eleme
1cdf0 6e 74 0a 6c 69 73 74 20 69 73 20 6e 6f 74 20 61  nt.list is not a
1ce00 20 6b 65 79 77 6f 72 64 20 74 6f 20 74 68 65 20   keyword to the 
1ce10 53 51 4c 20 70 61 72 73 65 72 20 69 6e 20 53 51  SQL parser in SQ
1ce20 4c 69 74 65 3a 0a 3c 2f 70 3e 0a 0a 3c 62 6c 6f  Lite:.</p>..<blo
1ce30 63 6b 71 75 6f 74 65 3e 0a 3c 74 61 62 6c 65 20  ckquote>.<table 
1ce40 77 69 64 74 68 3d 22 31 30 30 25 22 3e 3c 74 72  width="100%"><tr
1ce50 3e 0a 3c 74 64 20 61 6c 69 67 6e 3d 22 6c 65 66  >.<td align="lef
1ce60 74 22 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20  t" valign="top" 
1ce70 77 69 64 74 68 3d 22 32 30 25 22 3e 0a 3c 74 63  width="20%">.<tc
1ce80 6c 3e 0a 73 65 74 20 6e 20 5b 6c 6c 65 6e 67 74  l>.set n [llengt
1ce90 68 20 24 6b 65 79 77 6f 72 64 5f 6c 69 73 74 5d  h $keyword_list]
1cea0 0a 73 65 74 20 6e 43 6f 6c 20 35 0a 73 65 74 20  .set nCol 5.set 
1ceb0 6e 52 6f 77 20 5b 65 78 70 72 20 7b 28 24 6e 2b  nRow [expr {($n+
1cec0 24 6e 43 6f 6c 2d 31 29 2f 24 6e 43 6f 6c 7d 5d  $nCol-1)/$nCol}]
1ced0 0a 73 65 74 20 69 20 30 0a 66 6f 72 65 61 63 68  .set i 0.foreach
1cee0 20 77 6f 72 64 20 24 6b 65 79 77 6f 72 64 5f 6c   word $keyword_l
1cef0 69 73 74 20 7b 0a 20 20 69 66 20 7b 24 69 3d 3d  ist {.  if {$i==
1cf00 24 6e 52 6f 77 7d 20 7b 0a 20 20 20 20 68 64 5f  $nRow} {.    hd_
1cf10 70 75 74 73 20 22 3c 2f 74 64 3e 3c 74 64 20 76  puts "</td><td v
1cf20 61 6c 69 67 6e 3d 5c 22 74 6f 70 5c 22 20 61 6c  align=\"top\" al
1cf30 69 67 6e 3d 5c 22 6c 65 66 74 5c 22 20 77 69 64  ign=\"left\" wid
1cf40 74 68 3d 5c 22 32 30 25 5c 22 3e 22 0a 20 20 20  th=\"20%\">".   
1cf50 20 73 65 74 20 69 20 31 0a 20 20 7d 20 65 6c 73   set i 1.  } els
1cf60 65 20 7b 0a 20 20 20 20 69 6e 63 72 20 69 0a 20  e {.    incr i. 
1cf70 20 7d 0a 20 20 68 64 5f 70 75 74 73 20 22 24 77   }.  hd_puts "$w
1cf80 6f 72 64 3c 62 72 3e 5c 6e 22 0a 7d 0a 3c 2f 74  ord<br>\n".}.</t
1cf90 63 6c 3e 0a 3c 2f 74 64 3e 3c 2f 74 72 3e 3c 2f  cl>.</td></tr></
1cfa0 74 61 62 6c 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f  table></blockquo
1cfb0 74 65 3e 29 5e 0a                                te>)^.