Documentation Source Text

Hex Artifact Content
Login

Artifact c9d5f5e79c0a523cd38d5f7fdd6894d44a0bc717:


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 3c 74 63 6c 3e 68 64 5f 66 72  </p>..<tcl>hd_fr
f2c0: 61 67 6d 65 6e 74 20 69 6e 5f 6f 70 20 7b 49 4e  agment in_op {IN
f2d0: 20 6f 70 65 72 61 74 6f 72 7d 20 7b 4e 4f 54 20   operator} {NOT 
f2e0: 49 4e 20 6f 70 65 72 61 74 6f 72 7d 3c 2f 74 63  IN operator}</tc
f2f0: 6c 3e 0a 3c 68 33 3e 54 68 65 20 49 4e 20 61 6e  l>.<h3>The IN an
f300: 64 20 4e 4f 54 20 49 4e 20 6f 70 65 72 61 74 6f  d NOT IN operato
f310: 72 73 3c 2f 68 33 3e 0a 3c 70 3e 5e 54 68 65 20  rs</h3>.<p>^The 
f320: 49 4e 20 61 6e 64 20 4e 4f 54 20 49 4e 20 6f 70  IN and NOT IN op
f330: 65 72 61 74 6f 72 73 20 74 61 6b 65 20 61 20 73  erators take a s
f340: 69 6e 67 6c 65 20 73 63 61 6c 61 72 20 6f 70 65  ingle scalar ope
f350: 72 61 6e 64 20 6f 6e 20 74 68 65 0a 6c 65 66 74  rand on the.left
f360: 20 61 6e 64 20 61 20 76 65 63 74 6f 72 20 6f 70   and a vector op
f370: 65 72 61 6e 64 20 6f 6e 20 74 68 65 20 72 69 67  erand on the rig
f380: 68 74 0a 66 6f 72 6d 65 64 20 62 79 20 61 6e 20  ht.formed by an 
f390: 65 78 70 6c 69 63 69 74 20 6c 69 73 74 20 6f 66  explicit list of
f3a0: 20 7a 65 72 6f 20 6f 72 20 6d 6f 72 65 20 73 63   zero or more sc
f3b0: 61 6c 61 72 73 20 6f 72 20 62 79 20 61 20 0a 73  alars or by a .s
f3c0: 69 6e 67 6c 65 20 73 75 62 71 75 65 72 79 2e 0a  ingle subquery..
f3d0: 5e 57 68 65 6e 20 74 68 65 20 72 69 67 68 74 20  ^When the right 
f3e0: 6f 70 65 72 61 6e 64 20 6f 66 20 61 6e 20 49 4e  operand of an IN
f3f0: 20 6f 72 20 4e 4f 54 20 49 4e 20 6f 70 65 72 61   or NOT IN opera
f400: 74 6f 72 20 69 73 20 61 20 73 75 62 71 75 65 72  tor is a subquer
f410: 79 2c 20 74 68 65 0a 73 75 62 71 75 65 72 79 20  y, the.subquery 
f420: 6d 75 73 74 20 68 61 76 65 20 61 20 73 69 6e 67  must have a sing
f430: 6c 65 20 72 65 73 75 6c 74 20 63 6f 6c 75 6d 6e  le result column
f440: 2e 0a 5e 57 68 65 6e 20 74 68 65 20 72 69 67 68  ..^When the righ
f450: 74 20 6f 70 65 72 61 6e 64 20 69 73 20 61 6e 20  t operand is an 
f460: 65 6d 70 74 79 20 73 65 74 2c 20 74 68 65 20 72  empty set, the r
f470: 65 73 75 6c 74 20 6f 66 20 49 4e 20 69 73 20 66  esult of IN is f
f480: 61 6c 73 65 20 61 6e 64 20 74 68 65 0a 72 65 73  alse and the.res
f490: 75 6c 74 20 6f 66 20 4e 4f 54 20 49 4e 20 69 73  ult of NOT IN is
f4a0: 20 74 72 75 65 2c 20 72 65 67 61 72 64 6c 65 73   true, regardles
f4b0: 73 20 6f 66 20 74 68 65 20 6c 65 66 74 20 6f 70  s of the left op
f4c0: 65 72 61 6e 64 20 61 6e 64 20 65 76 65 6e 20 69  erand and even i
f4d0: 66 20 74 68 65 0a 6c 65 66 74 20 6f 70 65 72 61  f the.left opera
f4e0: 6e 64 20 69 73 20 4e 55 4c 4c 2e 0a 5e 28 54 68  nd is NULL..^(Th
f4f0: 65 20 72 65 73 75 6c 74 20 6f 66 20 61 6e 20 49  e result of an I
f500: 4e 20 6f 72 20 4e 4f 54 20 49 4e 20 6f 70 65 72  N or NOT IN oper
f510: 61 74 6f 72 20 69 73 20 64 65 74 65 72 6d 69 6e  ator is determin
f520: 65 64 20 62 79 20 74 68 65 20 66 6f 6c 6c 6f 77  ed by the follow
f530: 69 6e 67 0a 6d 61 74 72 69 78 3a 0a 0a 3c 63 65  ing.matrix:..<ce
f540: 6e 74 65 72 3e 0a 3c 74 61 62 6c 65 20 62 6f 72  nter>.<table bor
f550: 64 65 72 3d 31 3e 0a 3c 74 72 3e 0a 3c 74 68 3e  der=1>.<tr>.<th>
f560: 4c 65 66 74 20 6f 70 65 72 61 6e 64 20 3c 62 72  Left operand <br
f570: 3e 69 73 20 4e 55 4c 4c 0a 3c 74 68 3e 52 69 67  >is NULL.<th>Rig
f580: 68 74 20 6f 70 65 72 61 6e 64 20 3c 62 72 3e 63  ht operand <br>c
f590: 6f 6e 74 61 69 6e 73 20 4e 55 4c 4c 0a 3c 74 68  ontains NULL.<th
f5a0: 3e 52 69 67 68 74 20 6f 70 65 72 61 6e 64 20 3c  >Right operand <
f5b0: 62 72 3e 69 73 20 61 6e 20 65 6d 70 74 79 20 73  br>is an empty s
f5c0: 65 74 0a 3c 74 68 3e 4c 65 66 74 20 6f 70 65 72  et.<th>Left oper
f5d0: 61 6e 64 20 66 6f 75 6e 64 20 3c 62 72 3e 77 69  and found <br>wi
f5e0: 74 68 69 6e 20 72 69 67 68 74 20 6f 70 65 72 61  thin right opera
f5f0: 6e 64 0a 3c 74 68 3e 52 65 73 75 6c 74 20 6f 66  nd.<th>Result of
f600: 20 3c 62 72 3e 49 4e 20 6f 70 65 72 61 74 6f 72   <br>IN operator
f610: 0a 3c 74 68 3e 52 65 73 75 6c 74 20 6f 66 20 3c  .<th>Result of <
f620: 62 72 3e 4e 4f 54 20 49 4e 20 6f 70 65 72 61 74  br>NOT IN operat
f630: 6f 72 0a 3c 74 72 3e 0a 3c 74 64 20 61 6c 69 67  or.<tr>.<td alig
f640: 6e 3d 22 63 65 6e 74 65 72 22 3e 6e 6f 0a 3c 74  n="center">no.<t
f650: 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22  d align="center"
f660: 3e 6e 6f 0a 3c 74 64 20 61 6c 69 67 6e 3d 22 63  >no.<td align="c
f670: 65 6e 74 65 72 22 3e 6e 6f 0a 3c 74 64 20 61 6c  enter">no.<td al
f680: 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 6e 6f 0a  ign="center">no.
f690: 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65  <td align="cente
f6a0: 72 22 3e 66 61 6c 73 65 0a 3c 74 64 20 61 6c 69  r">false.<td ali
f6b0: 67 6e 3d 22 63 65 6e 74 65 72 22 3e 74 72 75 65  gn="center">true
f6c0: 0a 3c 74 72 3e 0a 3c 74 64 20 61 6c 69 67 6e 3d  .<tr>.<td align=
f6d0: 22 63 65 6e 74 65 72 22 3e 64 6f 65 73 20 6e 6f  "center">does no
f6e0: 74 20 6d 61 74 74 65 72 0a 3c 74 64 20 61 6c 69  t matter.<td ali
f6f0: 67 6e 3d 22 63 65 6e 74 65 72 22 3e 6e 6f 0a 3c  gn="center">no.<
f700: 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72  td align="center
f710: 22 3e 79 65 73 0a 3c 74 64 20 61 6c 69 67 6e 3d  ">yes.<td align=
f720: 22 63 65 6e 74 65 72 22 3e 6e 6f 0a 3c 74 64 20  "center">no.<td 
f730: 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 66  align="center">f
f740: 61 6c 73 65 0a 3c 74 64 20 61 6c 69 67 6e 3d 22  alse.<td align="
f750: 63 65 6e 74 65 72 22 3e 74 72 75 65 0a 3c 74 72  center">true.<tr
f760: 3e 0a 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e  >.<td align="cen
f770: 74 65 72 22 3e 6e 6f 0a 3c 74 64 20 61 6c 69 67  ter">no.<td alig
f780: 6e 3d 22 63 65 6e 74 65 72 22 3e 64 6f 65 73 20  n="center">does 
f790: 6e 6f 74 20 6d 61 74 74 65 72 0a 3c 74 64 20 61  not matter.<td a
f7a0: 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 6e 6f  lign="center">no
f7b0: 0a 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74  .<td align="cent
f7c0: 65 72 22 3e 79 65 73 0a 3c 74 64 20 61 6c 69 67  er">yes.<td alig
f7d0: 6e 3d 22 63 65 6e 74 65 72 22 3e 74 72 75 65 0a  n="center">true.
f7e0: 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65  <td align="cente
f7f0: 72 22 3e 66 61 6c 73 65 0a 3c 74 72 3e 0a 3c 74  r">false.<tr>.<t
f800: 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22  d align="center"
f810: 3e 6e 6f 0a 3c 74 64 20 61 6c 69 67 6e 3d 22 63  >no.<td align="c
f820: 65 6e 74 65 72 22 3e 79 65 73 0a 3c 74 64 20 61  enter">yes.<td a
f830: 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 6e 6f  lign="center">no
f840: 0a 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74  .<td align="cent
f850: 65 72 22 3e 6e 6f 0a 3c 74 64 20 61 6c 69 67 6e  er">no.<td align
f860: 3d 22 63 65 6e 74 65 72 22 3e 4e 55 4c 4c 0a 3c  ="center">NULL.<
f870: 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72  td align="center
f880: 22 3e 4e 55 4c 4c 0a 3c 74 72 3e 0a 3c 74 64 20  ">NULL.<tr>.<td 
f890: 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 79  align="center">y
f8a0: 65 73 0a 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65  es.<td align="ce
f8b0: 6e 74 65 72 22 3e 64 6f 65 73 20 6e 6f 74 20 6d  nter">does not m
f8c0: 61 74 74 65 72 0a 3c 74 64 20 61 6c 69 67 6e 3d  atter.<td align=
f8d0: 22 63 65 6e 74 65 72 22 3e 6e 6f 0a 3c 74 64 20  "center">no.<td 
f8e0: 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 64  align="center">d
f8f0: 6f 65 73 20 6e 6f 74 20 6d 61 74 74 65 72 0a 3c  oes not matter.<
f900: 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72  td align="center
f910: 22 3e 4e 55 4c 4c 0a 3c 74 64 20 61 6c 69 67 6e  ">NULL.<td align
f920: 3d 22 63 65 6e 74 65 72 22 3e 4e 55 4c 4c 0a 3c  ="center">NULL.<
f930: 2f 74 61 62 6c 65 3e 0a 3c 2f 63 65 6e 74 65 72  /table>.</center
f940: 3e 29 5e 0a 0a 3c 70 3e 5e 4e 6f 74 65 20 74 68  >)^..<p>^Note th
f950: 61 74 20 53 51 4c 69 74 65 20 61 6c 6c 6f 77 73  at SQLite allows
f960: 20 74 68 65 20 70 61 72 65 6e 74 68 65 73 69 7a   the parenthesiz
f970: 65 64 20 6c 69 73 74 20 6f 66 20 73 63 61 6c 61  ed list of scala
f980: 72 20 76 61 6c 75 65 73 20 6f 6e 0a 74 68 65 20  r values on.the 
f990: 72 69 67 68 74 2d 68 61 6e 64 20 73 69 64 65 20  right-hand side 
f9a0: 6f 66 20 61 6e 20 49 4e 20 6f 72 20 4e 4f 54 20  of an IN or NOT 
f9b0: 49 4e 20 6f 70 65 72 61 74 6f 72 20 74 6f 20 62  IN operator to b
f9c0: 65 20 61 6e 20 65 6d 70 74 79 20 6c 69 73 74 20  e an empty list 
f9d0: 62 75 74 0a 6d 6f 73 74 20 6f 74 68 65 72 20 53  but.most other S
f9e0: 51 4c 20 64 61 74 61 62 61 73 65 20 64 61 74 61  QL database data
f9f0: 62 61 73 65 20 65 6e 67 69 6e 65 73 20 61 6e 64  base engines and
fa00: 20 74 68 65 20 53 51 4c 39 32 20 73 74 61 6e 64   the SQL92 stand
fa10: 61 72 64 20 72 65 71 75 69 72 65 0a 74 68 65 20  ard require.the 
fa20: 6c 69 73 74 20 74 6f 20 63 6f 6e 74 61 69 6e 20  list to contain 
fa30: 61 74 20 6c 65 61 73 74 20 6f 6e 65 20 65 6c 65  at least one ele
fa40: 6d 65 6e 74 2e 3c 2f 70 3e 0a 0a 0a 3c 68 33 3e  ment.</p>...<h3>
fa50: 54 61 62 6c 65 20 43 6f 6c 75 6d 6e 20 4e 61 6d  Table Column Nam
fa60: 65 73 3c 2f 68 33 3e 0a 3c 70 3e 5e 41 20 63 6f  es</h3>.<p>^A co
fa70: 6c 75 6d 6e 20 6e 61 6d 65 20 63 61 6e 20 62 65  lumn name can be
fa80: 20 61 6e 79 20 6f 66 20 74 68 65 20 6e 61 6d 65   any of the name
fa90: 73 20 64 65 66 69 6e 65 64 20 69 6e 20 74 68 65  s defined in the
faa0: 20 5b 43 52 45 41 54 45 20 54 41 42 4c 45 5d 0a   [CREATE TABLE].
fab0: 73 74 61 74 65 6d 65 6e 74 20 6f 72 20 6f 6e 65  statement or one
fac0: 20 6f 66 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e   of the followin
fad0: 67 20 73 70 65 63 69 61 6c 20 69 64 65 6e 74 69  g special identi
fae0: 66 69 65 72 73 3a 20 22 3c 62 3e 52 4f 57 49 44  fiers: "<b>ROWID
faf0: 3c 2f 62 3e 22 2c 0a 22 3c 62 3e 4f 49 44 3c 2f  </b>",."<b>OID</
fb00: 62 3e 22 2c 20 6f 72 20 22 3c 62 3e 5f 52 4f 57  b>", or "<b>_ROW
fb10: 49 44 5f 3c 2f 62 3e 22 2e 0a 5e 54 68 65 73 65  ID_</b>"..^These
fb20: 20 73 70 65 63 69 61 6c 20 69 64 65 6e 74 69 66   special identif
fb30: 69 65 72 73 20 61 6c 6c 20 64 65 73 63 72 69 62  iers all describ
fb40: 65 20 74 68 65 0a 75 6e 69 71 75 65 20 69 6e 74  e the.unique int
fb50: 65 67 65 72 20 6b 65 79 20 28 74 68 65 20 5b 72  eger key (the [r
fb60: 6f 77 69 64 5d 29 20 61 73 73 6f 63 69 61 74 65  owid]) associate
fb70: 64 20 77 69 74 68 20 65 76 65 72 79 20 0a 72 6f  d with every .ro
fb80: 77 20 6f 66 20 65 76 65 72 79 20 74 61 62 6c 65  w of every table
fb90: 2e 0a 5e 54 68 65 20 73 70 65 63 69 61 6c 20 69  ..^The special i
fba0: 64 65 6e 74 69 66 69 65 72 73 20 6f 6e 6c 79 20  dentifiers only 
fbb0: 72 65 66 65 72 20 74 6f 20 74 68 65 20 72 6f 77  refer to the row
fbc0: 20 6b 65 79 20 69 66 20 74 68 65 20 5b 43 52 45   key if the [CRE
fbd0: 41 54 45 20 54 41 42 4c 45 5d 0a 73 74 61 74 65  ATE TABLE].state
fbe0: 6d 65 6e 74 20 64 6f 65 73 20 6e 6f 74 20 64 65  ment does not de
fbf0: 66 69 6e 65 20 61 20 72 65 61 6c 20 63 6f 6c 75  fine a real colu
fc00: 6d 6e 20 77 69 74 68 20 74 68 65 20 73 61 6d 65  mn with the same
fc10: 20 6e 61 6d 65 2e 0a 5e 54 68 65 20 72 6f 77 69   name..^The rowi
fc20: 64 20 63 61 6e 20 62 65 20 75 73 65 64 20 61 6e  d can be used an
fc30: 79 77 68 65 72 65 20 61 20 72 65 67 75 6c 61 72  ywhere a regular
fc40: 0a 63 6f 6c 75 6d 6e 20 63 61 6e 20 62 65 20 75  .column can be u
fc50: 73 65 64 2e 3c 2f 70 3e 0a 0a 3c 68 33 3e 53 75  sed.</p>..<h3>Su
fc60: 62 71 75 65 72 69 65 73 3c 2f 68 33 3e 0a 3c 70  bqueries</h3>.<p
fc70: 3e 5e 5b 53 45 4c 45 43 54 5d 20 73 74 61 74 65  >^[SELECT] state
fc80: 6d 65 6e 74 73 20 63 61 6e 20 61 70 70 65 61 72  ments can appear
fc90: 20 69 6e 20 65 78 70 72 65 73 73 69 6f 6e 73 20   in expressions 
fca0: 61 73 20 65 69 74 68 65 72 20 74 68 65 0a 72 69  as either the.ri
fcb0: 67 68 74 2d 68 61 6e 64 20 6f 70 65 72 61 6e 64  ght-hand operand
fcc0: 20 6f 66 20 74 68 65 20 49 4e 20 6f 72 20 4e 4f   of the IN or NO
fcd0: 54 20 49 4e 20 6f 70 65 72 61 74 6f 72 73 2c 20  T IN operators, 
fce0: 61 73 20 61 20 73 63 61 6c 61 72 20 71 75 61 6e  as a scalar quan
fcf0: 74 69 74 79 2c 20 6f 72 0a 61 73 20 74 68 65 20  tity, or.as the 
fd00: 6f 70 65 72 61 6e 64 20 6f 66 20 61 6e 20 45 58  operand of an EX
fd10: 49 53 54 53 20 6f 70 65 72 61 74 6f 72 2e 0a 5e  ISTS operator..^
fd20: 41 73 20 61 20 73 63 61 6c 61 72 20 71 75 61 6e  As a scalar quan
fd30: 74 69 74 79 20 6f 72 20 74 68 65 20 6f 70 65 72  tity or the oper
fd40: 61 6e 64 20 6f 66 20 61 6e 20 49 4e 20 6f 72 20  and of an IN or 
fd50: 4e 4f 54 20 49 4e 20 6f 70 65 72 61 74 6f 72 2c  NOT IN operator,
fd60: 0a 74 68 65 20 53 45 4c 45 43 54 20 6d 61 79 20  .the SELECT may 
fd70: 68 61 76 65 20 6f 6e 6c 79 20 61 20 73 69 6e 67  have only a sing
fd80: 6c 65 20 63 6f 6c 75 6d 6e 20 69 6e 20 69 74 73  le column in its
fd90: 0a 72 65 73 75 6c 74 2e 20 20 5e 43 6f 6d 70 6f  .result.  ^Compo
fda0: 75 6e 64 20 53 45 4c 45 43 54 73 20 28 63 6f 6e  und SELECTs (con
fdb0: 6e 65 63 74 65 64 20 77 69 74 68 20 6b 65 79 77  nected with keyw
fdc0: 6f 72 64 73 20 6c 69 6b 65 20 55 4e 49 4f 4e 20  ords like UNION 
fdd0: 6f 72 0a 45 58 43 45 50 54 29 20 61 72 65 20 61  or.EXCEPT) are a
fde0: 6c 6c 6f 77 65 64 20 69 6e 20 61 6e 79 20 73 75  llowed in any su
fdf0: 62 71 75 65 72 79 2e 0a 5e 57 69 74 68 20 74 68  bquery..^With th
fe00: 65 20 45 58 49 53 54 53 20 6f 70 65 72 61 74 6f  e EXISTS operato
fe10: 72 2c 20 74 68 65 20 63 6f 6c 75 6d 6e 73 20 69  r, the columns i
fe20: 6e 20 74 68 65 20 72 65 73 75 6c 74 20 73 65 74  n the result set
fe30: 20 6f 66 20 74 68 65 20 5b 53 45 4c 45 43 54 5d   of the [SELECT]
fe40: 20 61 72 65 0a 69 67 6e 6f 72 65 64 20 61 6e 64   are.ignored and
fe50: 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20   the expression 
fe60: 72 65 74 75 72 6e 73 20 54 52 55 45 20 69 66 20  returns TRUE if 
fe70: 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 72 6f 77 73  one or more rows
fe80: 20 65 78 69 73 74 0a 61 6e 64 20 46 41 4c 53 45   exist.and FALSE
fe90: 20 69 66 20 74 68 65 20 72 65 73 75 6c 74 20 73   if the result s
fea0: 65 74 20 69 73 20 65 6d 70 74 79 2e 0a 5e 49 66  et is empty..^If
feb0: 20 6e 6f 20 74 65 72 6d 73 20 69 6e 20 74 68 65   no terms in the
fec0: 20 5b 53 45 4c 45 43 54 5d 20 65 78 70 72 65 73   [SELECT] expres
fed0: 73 69 6f 6e 20 72 65 66 65 72 20 74 6f 20 76 61  sion refer to va
fee0: 6c 75 65 73 20 69 6e 20 74 68 65 20 63 6f 6e 74  lues in the cont
fef0: 61 69 6e 69 6e 67 0a 71 75 65 72 79 2c 20 74 68  aining.query, th
ff00: 65 6e 20 74 68 65 20 65 78 70 72 65 73 73 69 6f  en the expressio
ff10: 6e 20 69 73 20 65 76 61 6c 75 61 74 65 64 20 6f  n is evaluated o
ff20: 6e 63 65 20 70 72 69 6f 72 20 74 6f 20 61 6e 79  nce prior to any
ff30: 20 6f 74 68 65 72 0a 70 72 6f 63 65 73 73 69 6e   other.processin
ff40: 67 20 61 6e 64 20 74 68 65 20 72 65 73 75 6c 74  g and the result
ff50: 20 69 73 20 72 65 75 73 65 64 20 61 73 20 6e 65   is reused as ne
ff60: 63 65 73 73 61 72 79 2e 20 20 5e 49 66 20 74 68  cessary.  ^If th
ff70: 65 20 5b 53 45 4c 45 43 54 5d 20 65 78 70 72 65  e [SELECT] expre
ff80: 73 73 69 6f 6e 0a 64 6f 65 73 20 63 6f 6e 74 61  ssion.does conta
ff90: 69 6e 20 76 61 72 69 61 62 6c 65 73 20 66 72 6f  in variables fro
ffa0: 6d 20 74 68 65 20 6f 75 74 65 72 20 71 75 65 72  m the outer quer
ffb0: 79 2c 20 74 68 65 6e 20 74 68 65 20 5b 53 45 4c  y, then the [SEL
ffc0: 45 43 54 5d 20 69 73 20 72 65 65 76 61 6c 75 61  ECT] is reevalua
ffd0: 74 65 64 0a 65 76 65 72 79 20 74 69 6d 65 20 69  ted.every time i
ffe0: 74 20 69 73 20 6e 65 65 64 65 64 2e 3c 2f 70 3e  t is needed.</p>
fff0: 0a 0a 3c 70 3e 5e 57 68 65 6e 20 61 20 53 45 4c  ..<p>^When a SEL
10000 45 43 54 20 61 70 70 65 61 72 73 20 77 69 74 68  ECT appears with
10010 69 6e 20 61 6e 20 65 78 70 72 65 73 73 69 6f 6e  in an expression
10020 20 62 75 74 20 69 73 20 6e 6f 74 20 74 68 65 20   but is not the 
10030 72 69 67 68 74 0a 6f 70 65 72 61 6e 64 20 6f 66  right.operand of
10040 20 61 6e 20 49 4e 20 6f 72 20 4e 4f 54 20 49 4e   an IN or NOT IN
10050 20 6f 70 65 72 61 74 6f 72 2c 20 74 68 65 6e 20   operator, then 
10060 74 68 65 20 66 69 72 73 74 20 72 6f 77 20 6f 66  the first row of
10070 20 74 68 65 20 72 65 73 75 6c 74 20 6f 66 20 74   the result of t
10080 68 65 0a 53 45 4c 45 43 54 20 62 65 63 6f 6d 65  he.SELECT become
10090 73 20 74 68 65 20 76 61 6c 75 65 20 75 73 65 64  s the value used
100a0 20 69 6e 20 74 68 65 20 65 78 70 72 65 73 73 69   in the expressi
100b0 6f 6e 2e 20 20 5e 49 66 20 74 68 65 20 53 45 4c  on.  ^If the SEL
100c0 45 43 54 20 79 69 65 6c 64 73 0a 6d 6f 72 65 20  ECT yields.more 
100d0 74 68 61 6e 20 6f 6e 65 20 72 65 73 75 6c 74 20  than one result 
100e0 72 6f 77 2c 20 61 6c 6c 20 72 6f 77 73 20 61 66  row, all rows af
100f0 74 65 72 20 74 68 65 20 66 69 72 73 74 20 61 72  ter the first ar
10100 65 20 69 67 6e 6f 72 65 64 2e 20 20 5e 49 66 0a  e ignored.  ^If.
10110 74 68 65 20 53 45 4c 45 43 54 20 79 69 65 6c 64  the SELECT yield
10120 73 20 6e 6f 20 72 6f 77 73 2c 20 74 68 65 6e 20  s no rows, then 
10130 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65  the value of the
10140 20 53 45 4c 45 43 54 20 69 73 20 4e 55 4c 4c 2e   SELECT is NULL.
10150 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 68 64 5f 66 72  </p>..<tcl>hd_fr
10160 61 67 6d 65 6e 74 20 63 61 73 74 65 78 70 72 20  agment castexpr 
10170 7b 43 41 53 54 20 65 78 70 72 65 73 73 69 6f 6e  {CAST expression
10180 7d 3c 2f 74 63 6c 3e 0a 3c 68 33 3e 43 41 53 54  }</tcl>.<h3>CAST
10190 20 65 78 70 72 65 73 73 69 6f 6e 73 3c 2f 68 33   expressions</h3
101a0 3e 0a 0a 3c 70 3e 5e 41 20 43 41 53 54 20 65 78  >..<p>^A CAST ex
101b0 70 72 65 73 73 69 6f 6e 20 63 68 61 6e 67 65 73  pression changes
101c0 20 74 68 65 20 5b 64 61 74 61 74 79 70 65 5d 20   the [datatype] 
101d0 6f 66 20 74 68 65 20 3c 65 78 70 72 3e 20 69 6e  of the <expr> in
101e0 74 6f 20 74 68 65 0a 74 79 70 65 20 73 70 65 63  to the.type spec
101f0 69 66 69 65 64 20 62 79 20 26 6c 74 3b 74 79 70  ified by &lt;typ
10200 65 26 67 74 3b 2e 20 0a 5e 28 26 6c 74 3b 74 79  e&gt;. .^(&lt;ty
10210 70 65 26 67 74 3b 20 63 61 6e 20 62 65 20 61 6e  pe&gt; can be an
10220 79 20 6e 6f 6e 2d 65 6d 70 74 79 20 74 79 70 65  y non-empty type
10230 20 6e 61 6d 65 20 74 68 61 74 20 69 73 20 76 61   name that is va
10240 6c 69 64 0a 66 6f 72 20 74 68 65 20 74 79 70 65  lid.for the type
10250 20 69 6e 20 61 20 63 6f 6c 75 6d 6e 20 64 65 66   in a column def
10260 69 6e 69 74 69 6f 6e 20 6f 66 20 61 20 5b 43 52  inition of a [CR
10270 45 41 54 45 20 54 41 42 4c 45 5d 20 73 74 61 74  EATE TABLE] stat
10280 65 6d 65 6e 74 2e 29 5e 0a 5e 54 68 65 20 26 6c  ement.)^.^The &l
10290 74 3b 74 79 70 65 26 67 74 3b 20 6e 61 6d 65 20  t;type&gt; name 
102a0 69 73 20 69 6e 74 65 72 70 72 65 74 65 64 20 61  is interpreted a
102b0 63 63 6f 72 64 69 6e 67 20 74 6f 20 74 68 65 20  ccording to the 
102c0 0a 5b 72 75 6c 65 73 20 66 6f 72 20 64 65 74 65  .[rules for dete
102d0 72 6d 69 6e 69 6e 67 20 63 6f 6c 75 6d 6e 20 61  rmining column a
102e0 66 66 69 6e 69 74 79 5d 2e 0a 0a 3c 70 3e 5e 41  ffinity]...<p>^A
102f0 6e 20 65 78 70 6c 69 63 69 74 20 63 61 73 74 20  n explicit cast 
10300 69 73 20 73 74 72 6f 6e 67 65 72 20 74 68 61 6e  is stronger than
10310 20 61 66 66 69 6e 69 74 79 3b 20 77 69 74 68 20   affinity; with 
10320 74 68 65 20 43 41 53 54 20 65 78 70 72 65 73 73  the CAST express
10330 69 6f 6e 0a 74 68 65 20 64 61 74 61 74 79 70 65  ion.the datatype
10340 20 63 6f 6e 76 65 72 73 69 6f 6e 20 69 73 20 66   conversion is f
10350 6f 72 63 65 64 20 65 76 65 6e 20 69 66 20 69 74  orced even if it
10360 20 69 73 20 6c 6f 73 73 79 20 61 6e 64 20 69 72   is lossy and ir
10370 72 72 65 76 65 72 73 69 62 6c 65 2e 0a 3c 75 6c  rreversible..<ul
10380 3e 0a 3c 6c 69 3e 3c 70 3e 0a 20 20 5e 41 20 63  >.<li><p>.  ^A c
10390 61 73 74 20 6f 66 20 61 20 52 45 41 4c 20 76 61  ast of a REAL va
103a0 6c 75 65 20 69 6e 74 6f 20 61 6e 20 49 4e 54 45  lue into an INTE
103b0 47 45 52 20 77 69 6c 6c 20 74 72 75 6e 63 61 74  GER will truncat
103c0 65 20 74 68 65 0a 20 20 66 72 61 63 74 69 6f 6e  e the.  fraction
103d0 61 6c 20 70 61 72 74 20 6f 66 20 74 68 65 20 52  al part of the R
103e0 45 41 4c 2e 20 20 5e 49 66 20 61 6e 20 52 45 41  EAL.  ^If an REA
103f0 4c 20 69 73 20 74 6f 6f 20 6c 61 72 67 65 20 74  L is too large t
10400 6f 20 62 65 0a 20 20 72 65 70 72 65 73 65 6e 74  o be.  represent
10410 65 64 20 61 73 20 61 6e 20 49 4e 54 45 47 45 52  ed as an INTEGER
10420 20 74 68 65 6e 20 74 68 65 20 72 65 73 75 6c 74   then the result
10430 20 6f 66 20 74 68 65 20 63 61 73 74 20 69 73 0a   of the cast is.
10440 20 20 74 68 65 20 6c 61 72 67 65 73 74 20 6e 65    the largest ne
10450 67 61 74 69 76 65 20 69 6e 74 65 67 65 72 3a 20  gative integer: 
10460 2d 39 32 32 33 33 37 32 30 33 36 38 35 34 37 37  -922337203685477
10470 35 38 30 38 2e 0a 0a 3c 6c 69 3e 3c 70 3e 0a 20  5808...<li><p>. 
10480 5e 41 20 63 61 73 74 20 6f 66 20 61 20 54 45 58  ^A cast of a TEX
10490 54 20 76 61 6c 75 65 20 69 6e 74 6f 20 61 6e 20  T value into an 
104a0 49 4e 54 45 47 45 52 20 6f 72 20 52 45 41 4c 20  INTEGER or REAL 
104b0 77 69 6c 6c 20 72 65 61 64 20 61 20 70 72 65 66  will read a pref
104c0 69 78 0a 20 6f 66 20 74 68 65 20 54 45 58 54 20  ix. of the TEXT 
104d0 76 61 6c 75 65 20 74 68 61 74 20 6c 6f 6f 6b 73  value that looks
104e0 20 6c 69 6b 65 20 61 6e 20 69 6e 74 65 67 65 72   like an integer
104f0 20 6f 72 20 72 65 61 6c 20 76 61 6c 75 65 2c 20   or real value, 
10500 72 65 73 70 65 63 74 69 76 65 6c 79 2c 0a 20 61  respectively,. a
10510 6e 64 20 69 67 6e 6f 72 65 20 74 68 65 20 72 65  nd ignore the re
10520 73 74 2e 20 20 5e 57 68 65 6e 20 63 61 73 74 69  st.  ^When casti
10530 6e 67 20 66 72 6f 6d 20 54 45 58 54 20 69 6e 74  ng from TEXT int
10540 6f 20 49 4e 54 45 47 45 52 20 6f 72 20 52 45 41  o INTEGER or REA
10550 4c 2c 0a 20 6c 65 61 64 69 6e 67 20 73 70 61 63  L,. leading spac
10560 65 73 20 69 6e 20 74 68 65 20 54 45 58 54 20 76  es in the TEXT v
10570 61 6c 75 65 20 61 72 65 20 69 67 6e 6f 72 65 64  alue are ignored
10580 2e 20 20 5e 28 41 20 63 61 73 74 20 6f 66 20 61  .  ^(A cast of a
10590 20 54 45 58 54 20 76 61 6c 75 65 0a 20 74 68 61   TEXT value. tha
105a0 74 20 6c 6f 6f 6b 73 20 6e 6f 74 68 69 6e 67 20  t looks nothing 
105b0 6c 69 6b 65 20 61 20 6e 75 6d 62 65 72 20 69 6e  like a number in
105c0 74 6f 20 49 4e 54 45 47 45 52 20 6f 72 20 52 45  to INTEGER or RE
105d0 41 4c 20 72 65 73 75 6c 74 73 20 69 6e 20 30 20  AL results in 0 
105e0 6f 72 20 30 2e 30 2c 0a 20 72 65 73 70 65 63 74  or 0.0,. respect
105f0 69 76 65 6c 79 2e 29 5e 0a 0a 3c 6c 69 3e 3c 70  ively.)^..<li><p
10600 3e 0a 20 5e 43 61 73 74 69 6e 67 20 61 20 76 61  >. ^Casting a va
10610 6c 75 65 20 69 6e 74 6f 20 4e 55 4d 45 52 49 43  lue into NUMERIC
10620 20 66 69 72 73 74 20 64 6f 65 73 20 61 20 66 6f   first does a fo
10630 72 63 65 64 20 63 6f 6e 76 65 72 73 69 6f 6e 20  rced conversion 
10640 69 6e 74 6f 20 52 45 41 4c 0a 20 20 62 75 74 20  into REAL.  but 
10650 77 69 6c 6c 20 74 68 65 6e 20 66 75 72 74 68 65  will then furthe
10660 72 20 63 6f 6e 76 65 72 74 73 20 74 68 65 20 72  r converts the r
10670 65 73 75 6c 74 20 69 6e 74 6f 20 49 4e 54 45 47  esult into INTEG
10680 45 52 20 69 66 20 61 6e 64 20 6f 6e 6c 79 20 69  ER if and only i
10690 66 0a 20 20 74 68 65 20 63 6f 6e 76 65 72 73 69  f.  the conversi
106a0 6f 6e 20 66 72 6f 6d 20 52 45 41 4c 20 74 6f 20  on from REAL to 
106b0 49 4e 54 45 47 45 52 20 69 73 20 6c 6f 73 73 6c  INTEGER is lossl
106c0 65 73 73 20 61 6e 64 20 72 65 76 65 72 73 69 62  ess and reversib
106d0 6c 65 2e 0a 20 20 54 68 69 73 20 69 73 20 74 68  le..  This is th
106e0 65 20 6f 6e 6c 79 20 63 6f 6e 74 65 78 74 20 69  e only context i
106f0 6e 20 53 51 4c 69 74 65 20 77 68 65 72 65 20 74  n SQLite where t
10700 68 65 20 4e 55 4d 45 52 49 43 20 61 6e 64 20 49  he NUMERIC and I
10710 4e 54 45 47 45 52 0a 20 20 5b 61 66 66 69 6e 69  NTEGER.  [affini
10720 74 69 65 73 5d 20 62 65 68 61 76 65 20 64 69 66  ties] behave dif
10730 66 65 72 65 6e 74 6c 79 2e 0a 0a 3c 6c 69 3e 3c  ferently...<li><
10740 70 3e 0a 20 5e 43 61 73 74 69 6e 67 20 61 20 76  p>. ^Casting a v
10750 61 6c 75 65 20 69 6e 74 6f 20 54 45 58 54 20 72  alue into TEXT r
10760 65 6e 64 65 72 73 20 74 68 65 20 76 61 6c 75 65  enders the value
10770 20 61 73 20 69 66 20 76 69 61 20 5b 73 71 6c 69   as if via [sqli
10780 74 65 33 5f 73 6e 70 72 69 6e 74 66 28 29 5d 0a  te3_snprintf()].
10790 20 20 65 78 63 65 70 74 20 74 68 61 74 20 74 68    except that th
107a0 65 20 72 65 73 75 6c 74 69 6e 67 20 54 45 58 54  e resulting TEXT
107b0 20 75 73 65 73 20 74 68 65 20 5b 65 6e 63 6f 64   uses the [encod
107c0 69 6e 67 5d 20 6f 66 20 74 68 65 20 64 61 74 61  ing] of the data
107d0 62 61 73 65 0a 20 20 63 6f 6e 6e 65 63 74 69 6f  base.  connectio
107e0 6e 2e 0a 0a 3c 6c 69 3e 3c 70 3e 0a 20 5e 43 61  n...<li><p>. ^Ca
107f0 73 74 69 6e 67 20 61 20 76 61 6c 75 65 20 74 6f  sting a value to
10800 20 61 20 26 6c 74 3b 74 79 70 65 26 67 74 3b 20   a &lt;type&gt; 
10810 77 69 74 68 20 6e 6f 20 61 66 66 69 6e 69 74 79  with no affinity
10820 20 63 61 75 73 65 73 20 74 68 65 20 76 61 6c 75   causes the valu
10830 65 20 74 6f 0a 20 20 62 65 20 63 6f 6e 76 65 72  e to.  be conver
10840 74 65 64 20 69 6e 74 6f 20 61 20 42 4c 4f 42 2e  ted into a BLOB.
10850 20 20 5e 43 61 73 74 69 6e 67 20 74 6f 20 61 20    ^Casting to a 
10860 42 4c 4f 42 20 63 6f 6e 73 69 73 74 73 20 6f 66  BLOB consists of
10870 20 66 69 72 73 74 20 63 61 73 74 69 6e 67 0a 20   first casting. 
10880 20 74 68 65 20 76 61 6c 75 65 20 74 6f 20 54 45   the value to TE
10890 58 54 20 69 6e 20 74 68 65 20 5b 65 6e 63 6f 64  XT in the [encod
108a0 69 6e 67 5d 20 6f 66 20 74 68 65 20 64 61 74 61  ing] of the data
108b0 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c  base connection,
108c0 20 74 68 65 6e 0a 20 20 69 6e 74 65 72 70 72 65   then.  interpre
108d0 74 69 6e 67 20 74 68 65 20 72 65 73 75 6c 74 69  ting the resulti
108e0 6e 67 20 62 79 74 65 20 73 65 71 75 65 6e 63 65  ng byte sequence
108f0 20 61 73 20 61 20 42 4c 4f 42 20 69 6e 73 74 65   as a BLOB inste
10900 61 64 20 6f 66 20 61 73 20 54 45 58 54 2e 0a 0a  ad of as TEXT...
10910 3c 6c 69 3e 3c 70 3e 0a 20 5e 43 61 73 74 69 6e  <li><p>. ^Castin
10920 67 20 61 20 42 4c 4f 42 20 76 61 6c 75 65 20 69  g a BLOB value i
10930 6e 74 6f 20 61 6e 79 20 74 79 70 65 20 6f 74 68  nto any type oth
10940 65 72 20 74 68 61 6e 20 61 20 42 4c 4f 42 20 63  er than a BLOB c
10950 6f 6e 73 69 73 74 73 20 6f 66 20 66 69 72 73 74  onsists of first
10960 0a 20 20 69 6e 74 65 72 70 72 65 74 69 6e 67 20  .  interpreting 
10970 74 68 65 20 62 79 74 65 20 73 65 71 75 65 6e 63  the byte sequenc
10980 65 20 6f 66 20 74 68 65 20 42 4c 4f 42 20 61 73  e of the BLOB as
10990 20 61 20 54 45 58 54 20 73 74 72 69 6e 67 20 69   a TEXT string i
109a0 6e 20 74 68 65 0a 20 20 64 61 74 61 62 61 73 65  n the.  database
109b0 20 65 6e 63 6f 64 69 6e 67 20 74 68 65 6e 20 63   encoding then c
109c0 6f 6e 74 69 6e 75 69 6e 67 20 61 73 20 69 66 20  ontinuing as if 
109d0 74 68 65 20 76 61 6c 75 65 20 77 68 65 72 65 20  the value where 
109e0 6f 72 69 67 69 6e 61 6c 6c 79 20 6f 66 0a 20 20  originally of.  
109f0 74 79 70 65 20 54 45 58 54 2e 0a 0a 3c 6c 69 3e  type TEXT...<li>
10a00 3c 70 3e 0a 20 5e 41 6e 79 20 63 61 73 74 20 6f  <p>. ^Any cast o
10a10 66 20 61 20 4e 55 4c 4c 20 76 61 6c 75 65 20 79  f a NULL value y
10a20 69 65 6c 64 73 20 61 20 4e 55 4c 4c 20 72 65 73  ields a NULL res
10a30 75 6c 74 2e 0a 3c 2f 75 6c 3e 0a 0a 3c 70 3e 5e  ult..</ul>..<p>^
10a40 4e 6f 74 65 20 74 68 61 74 20 74 68 65 20 72 65  Note that the re
10a50 73 75 6c 74 20 66 72 6f 6d 20 63 61 73 74 69 6e  sult from castin
10a60 67 20 61 6e 79 20 6e 6f 6e 2d 42 4c 4f 42 20 76  g any non-BLOB v
10a70 61 6c 75 65 20 69 6e 74 6f 20 61 20 0a 42 4c 4f  alue into a .BLO
10a80 42 20 61 6e 64 20 74 68 65 20 72 65 73 75 6c 74  B and the result
10a90 20 66 72 6f 6d 20 63 61 73 74 69 6e 67 20 61 6e   from casting an
10aa0 79 20 42 4c 4f 42 20 76 61 6c 75 65 20 69 6e 74  y BLOB value int
10ab0 6f 20 61 20 6e 6f 6e 2d 42 4c 4f 42 20 76 61 6c  o a non-BLOB val
10ac0 75 65 0a 77 69 6c 6c 20 62 65 20 64 69 66 66 65  ue.will be diffe
10ad0 72 65 6e 74 20 64 65 70 65 6e 64 69 6e 67 20 6f  rent depending o
10ae0 6e 20 77 68 65 74 68 65 72 20 74 68 65 20 64 61  n whether the da
10af0 74 61 62 61 73 65 20 5b 65 6e 63 6f 64 69 6e 67  tabase [encoding
10b00 5d 20 69 73 20 55 54 46 2d 38 2c 0a 55 54 46 2d  ] is UTF-8,.UTF-
10b10 31 36 62 65 2c 20 6f 72 20 55 54 46 2d 31 36 6c  16be, or UTF-16l
10b20 65 2e 0a 0a 3c 68 33 3e 46 75 6e 63 74 69 6f 6e  e...<h3>Function
10b30 73 3c 2f 68 33 3e 0a 3c 70 3e 5e 42 6f 74 68 20  s</h3>.<p>^Both 
10b40 5b 63 6f 72 65 66 75 6e 63 7c 73 69 6d 70 6c 65  [corefunc|simple
10b50 5d 20 61 6e 64 20 5b 61 67 67 66 75 6e 63 7c 61  ] and [aggfunc|a
10b60 67 67 72 65 67 61 74 65 5d 20 66 75 6e 63 74 69  ggregate] functi
10b70 6f 6e 73 20 61 72 65 20 73 75 70 70 6f 72 74 65  ons are supporte
10b80 64 2e 0a 28 46 6f 72 20 70 72 65 73 65 6e 74 61  d..(For presenta
10b90 74 69 6f 6e 20 70 75 72 70 6f 73 65 73 2c 20 73  tion purposes, s
10ba0 69 6d 70 6c 65 20 66 75 6e 63 74 69 6f 6e 73 20  imple functions 
10bb0 61 72 65 20 66 75 72 74 68 65 72 20 73 75 62 64  are further subd
10bc0 69 76 69 64 65 64 20 69 6e 74 6f 0a 5b 63 6f 72  ivided into.[cor
10bd0 65 66 75 6e 63 20 7c 20 63 6f 72 65 20 66 75 6e  efunc | core fun
10be0 63 74 69 6f 6e 73 5d 20 61 6e 64 20 5b 64 61 74  ctions] and [dat
10bf0 65 66 75 6e 63 20 7c 20 64 61 74 65 2d 74 69 6d  efunc | date-tim
10c00 65 20 66 75 6e 63 74 69 6f 6e 73 5d 2e 29 0a 5e  e functions].).^
10c10 41 20 73 69 6d 70 6c 65 20 66 75 6e 63 74 69 6f  A simple functio
10c20 6e 20 63 61 6e 20 62 65 20 75 73 65 64 20 69 6e  n can be used in
10c30 20 61 6e 79 20 65 78 70 72 65 73 73 69 6f 6e 2e   any expression.
10c40 20 20 5e 53 69 6d 70 6c 65 20 66 75 6e 63 74 69    ^Simple functi
10c50 6f 6e 73 20 72 65 74 75 72 6e 0a 61 20 72 65 73  ons return.a res
10c60 75 6c 74 20 69 6d 6d 65 64 69 61 74 65 6c 79 20  ult immediately 
10c70 62 61 73 65 64 20 6f 6e 20 74 68 65 69 72 20 69  based on their i
10c80 6e 70 75 74 73 2e 20 20 5e 41 67 67 72 65 67 61  nputs.  ^Aggrega
10c90 74 65 20 66 75 6e 63 74 69 6f 6e 73 0a 6d 61 79  te functions.may
10ca0 20 6f 6e 6c 79 20 62 65 20 75 73 65 64 20 69 6e   only be used in
10cb0 20 61 20 53 45 4c 45 43 54 20 73 74 61 74 65 6d   a SELECT statem
10cc0 65 6e 74 2e 20 20 5e 41 67 67 72 65 67 61 74 65  ent.  ^Aggregate
10cd0 20 66 75 6e 63 74 69 6f 6e 73 20 63 6f 6d 70 75   functions compu
10ce0 74 65 0a 74 68 65 69 72 20 72 65 73 75 6c 74 20  te.their result 
10cf0 61 63 72 6f 73 73 20 61 6c 6c 20 72 6f 77 73 20  across all rows 
10d00 6f 66 20 74 68 65 20 72 65 73 75 6c 74 20 73 65  of the result se
10d10 74 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23  t.</p>..<tcl>.##
10d20 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10d30 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10d40 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10d50 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10d60 23 23 23 23 23 23 23 23 23 23 23 23 0a 53 65 63  ############.Sec
10d70 74 69 6f 6e 20 7b 43 6f 72 65 20 46 75 6e 63 74  tion {Core Funct
10d80 69 6f 6e 73 7d 20 63 6f 72 65 66 75 6e 63 20 7b  ions} corefunc {
10d90 2a 63 6f 72 65 66 75 6e 63 7d 0a 70 72 6f 63 20  *corefunc}.proc 
10da0 66 75 6e 63 64 65 66 20 7b 73 79 6e 74 61 78 20  funcdef {syntax 
10db0 6b 65 79 77 6f 72 64 73 20 64 65 73 63 7d 20 7b  keywords desc} {
10dc0 0a 20 20 68 64 5f 70 75 74 73 20 7b 3c 74 72 3e  .  hd_puts {<tr>
10dd0 7d 0a 20 20 72 65 67 73 75 62 20 2d 61 6c 6c 20  }.  regsub -all 
10de0 7b 5c 73 2b 7d 20 5b 73 74 72 69 6e 67 20 74 72  {\s+} [string tr
10df0 69 6d 20 24 73 79 6e 74 61 78 5d 20 7b 3c 62 72  im $syntax] {<br
10e00 3e 3c 2f 62 72 3e 7d 20 73 79 6e 74 61 78 0a 20  ></br>} syntax. 
10e10 20 72 65 67 73 75 62 20 2d 61 6c 6c 20 7b 5c 28   regsub -all {\(
10e20 28 5b 5e 2a 29 5d 2b 29 5c 29 7d 20 24 73 79 6e  ([^*)]+)\)} $syn
10e30 74 61 78 20 7b 28 3c 69 3e 5c 31 3c 2f 69 3e 29  tax {(<i>\1</i>)
10e40 7d 20 73 79 6e 74 61 78 0a 20 20 72 65 67 73 75  } syntax.  regsu
10e50 62 20 2d 61 6c 6c 20 7b 2c 7d 20 24 73 79 6e 74  b -all {,} $synt
10e60 61 78 20 7b 3c 2f 69 3e 2c 3c 69 3e 7d 20 73 79  ax {</i>,<i>} sy
10e70 6e 74 61 78 0a 20 20 72 65 67 73 75 62 20 2d 61  ntax.  regsub -a
10e80 6c 6c 20 7b 3c 69 3e 5c 2e 5c 2e 5c 2e 3c 2f 69  ll {<i>\.\.\.</i
10e90 3e 7d 20 24 73 79 6e 74 61 78 20 7b 2e 2e 2e 7d  >} $syntax {...}
10ea0 20 73 79 6e 74 61 78 0a 20 20 68 64 5f 70 75 74   syntax.  hd_put
10eb0 73 20 22 3c 74 64 20 76 61 6c 69 67 6e 3d 5c 22  s "<td valign=\"
10ec0 74 6f 70 5c 22 20 61 6c 69 67 6e 3d 5c 22 72 69  top\" align=\"ri
10ed0 67 68 74 5c 22 20 77 69 64 74 68 3d 5c 22 31 32  ght\" width=\"12
10ee0 30 5c 22 3e 22 0a 20 20 69 66 20 7b 5b 6c 6c 65  0\">".  if {[lle
10ef0 6e 67 74 68 20 24 6b 65 79 77 6f 72 64 73 5d 3d  ngth $keywords]=
10f00 3d 30 7d 20 7b 0a 20 20 20 20 72 65 67 65 78 70  =0} {.    regexp
10f10 20 7b 5b 61 2d 7a 5f 5d 2b 7d 20 24 73 79 6e 74   {[a-z_]+} $synt
10f20 61 78 20 6e 61 6d 65 0a 20 20 20 20 68 64 5f 66  ax name.    hd_f
10f30 72 61 67 6d 65 6e 74 20 24 6e 61 6d 65 20 2a 24  ragment $name *$
10f40 6e 61 6d 65 20 22 24 7b 6e 61 6d 65 7d 28 29 20  name "${name}() 
10f50 53 51 4c 20 66 75 6e 63 74 69 6f 6e 22 0a 20 20  SQL function".  
10f60 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 73 65 74  } else {.    set
10f70 20 66 72 61 67 6e 61 6d 65 20 5b 6c 69 6e 64 65   fragname [linde
10f80 78 20 24 6b 65 79 77 6f 72 64 73 20 30 5d 0a 20  x $keywords 0]. 
10f90 20 20 20 72 65 67 73 75 62 20 2d 61 6c 6c 20 7b     regsub -all {
10fa0 5b 5e 61 2d 7a 5d 7d 20 24 66 72 61 67 6e 61 6d  [^a-z]} $fragnam
10fb0 65 20 7b 7d 20 66 72 61 67 6e 61 6d 65 0a 20 20  e {} fragname.  
10fc0 20 20 68 64 5f 66 72 61 67 6d 65 6e 74 20 24 66    hd_fragment $f
10fd0 72 61 67 6e 61 6d 65 0a 20 20 20 20 65 76 61 6c  ragname.    eval
10fe0 20 68 64 5f 6b 65 79 77 6f 72 64 73 20 5b 73 74   hd_keywords [st
10ff0 72 69 6e 67 20 6d 61 70 20 7b 5c 6e 20 7b 20 7d  ring map {\n { }
11000 7d 20 24 6b 65 79 77 6f 72 64 73 5d 0a 20 20 7d  } $keywords].  }
11010 0a 20 20 68 64 5f 70 75 74 73 20 22 24 73 79 6e  .  hd_puts "$syn
11020 74 61 78 3c 2f 74 64 3e 22 0a 20 20 68 64 5f 70  tax</td>".  hd_p
11030 75 74 73 20 7b 3c 74 64 20 76 61 6c 69 67 6e 3d  uts {<td valign=
11040 22 74 6f 70 22 3e 7d 0a 20 20 68 64 5f 72 65 73  "top">}.  hd_res
11050 6f 6c 76 65 20 24 64 65 73 63 0a 20 20 68 64 5f  olve $desc.  hd_
11060 70 75 74 73 20 7b 3c 2f 74 64 3e 3c 2f 74 72 3e  puts {</td></tr>
11070 7d 0a 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54  }.}.</tcl>..<p>T
11080 68 65 20 63 6f 72 65 20 66 75 6e 63 74 69 6f 6e  he core function
11090 73 20 73 68 6f 77 6e 20 62 65 6c 6f 77 20 61 72  s shown below ar
110a0 65 20 61 76 61 69 6c 61 62 6c 65 20 62 79 20 64  e available by d
110b0 65 66 61 75 6c 74 2e 20 0a 5b 64 61 74 65 66 75  efault. .[datefu
110c0 6e 63 20 7c 20 44 61 74 65 20 26 61 6d 70 3b 20  nc | Date &amp; 
110d0 54 69 6d 65 20 66 75 6e 63 74 69 6f 6e 73 5d 20  Time functions] 
110e0 61 6e 64 0a 5b 61 67 67 66 75 6e 63 20 7c 20 61  and.[aggfunc | a
110f0 67 67 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f  ggregate functio
11100 6e 73 5d 20 61 72 65 20 64 6f 63 75 6d 65 6e 74  ns] are document
11110 65 64 20 73 65 70 61 72 61 74 65 6c 79 2e 20 20  ed separately.  
11120 41 6e 0a 61 70 70 6c 69 63 61 74 69 6f 6e 20 6d  An.application m
11130 61 79 20 64 65 66 69 6e 65 20 61 64 64 69 74 69  ay define additi
11140 6f 6e 61 6c 0a 66 75 6e 63 74 69 6f 6e 73 20 77  onal.functions w
11150 72 69 74 74 65 6e 20 69 6e 20 43 20 61 6e 64 20  ritten in C and 
11160 61 64 64 65 64 20 74 6f 20 74 68 65 20 64 61 74  added to the dat
11170 61 62 61 73 65 20 65 6e 67 69 6e 65 20 75 73 69  abase engine usi
11180 6e 67 0a 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  ng.the [sqlite3_
11190 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 28  create_function(
111a0 29 5d 20 41 50 49 2e 3c 2f 70 3e 0a 0a 3c 74 61  )] API.</p>..<ta
111b0 62 6c 65 20 62 6f 72 64 65 72 3d 30 20 63 65 6c  ble border=0 cel
111c0 6c 70 61 64 64 69 6e 67 3d 31 30 3e 0a 3c 74 63  lpadding=10>.<tc
111d0 6c 3e 0a 66 75 6e 63 64 65 66 20 7b 61 62 73 28  l>.funcdef {abs(
111e0 58 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20  X)} {} {.  ^The 
111f0 61 62 73 28 58 29 20 66 75 6e 63 74 69 6f 6e 20  abs(X) function 
11200 72 65 74 75 72 6e 73 20 74 68 65 20 61 62 73 6f  returns the abso
11210 6c 75 74 65 20 76 61 6c 75 65 20 6f 66 20 74 68  lute value of th
11220 65 20 6e 75 6d 65 72 69 63 0a 20 20 61 72 67 75  e numeric.  argu
11230 6d 65 6e 74 20 58 2e 20 20 5e 41 62 73 28 58 29  ment X.  ^Abs(X)
11240 20 72 65 74 75 72 6e 73 20 4e 55 4c 4c 20 69 66   returns NULL if
11250 20 58 20 69 73 20 4e 55 4c 4c 2e 20 0a 20 20 5e   X is NULL. .  ^
11260 28 41 62 73 28 58 29 20 72 65 74 75 72 6e 20 30  (Abs(X) return 0
11270 2e 30 20 69 66 20 58 20 69 73 20 61 20 73 74 72  .0 if X is a str
11280 69 6e 67 20 6f 72 20 62 6c 6f 62 0a 20 20 74 68  ing or blob.  th
11290 61 74 20 63 61 6e 6e 6f 74 20 62 65 20 63 6f 6e  at cannot be con
112a0 76 65 72 74 65 64 20 74 6f 20 61 20 6e 75 6d 65  verted to a nume
112b0 72 69 63 20 76 61 6c 75 65 2e 29 5e 20 20 5e 49  ric value.)^  ^I
112c0 66 20 58 20 69 73 20 74 68 65 20 0a 20 20 69 6e  f X is the .  in
112d0 74 65 67 65 72 20 2d 39 32 32 33 33 37 32 30 33  teger -922337203
112e0 36 38 35 34 37 37 35 38 30 37 20 74 68 65 6e 20  6854775807 then 
112f0 61 62 73 28 58 29 20 74 68 72 6f 77 73 20 61 6e  abs(X) throws an
11300 20 69 6e 74 65 67 65 72 20 6f 76 65 72 66 6c 6f   integer overflo
11310 77 0a 20 20 65 72 72 6f 72 20 73 69 6e 63 65 20  w.  error since 
11320 74 68 65 72 65 20 69 73 20 6e 6f 20 65 71 75 69  there is no equi
11330 76 61 6c 65 6e 74 20 70 6f 73 69 74 69 76 65 20  valent positive 
11340 36 34 2d 62 69 74 20 74 77 6f 20 63 6f 6d 70 6c  64-bit two compl
11350 65 6d 65 6e 74 20 76 61 6c 75 65 2e 0a 7d 0a 0a  ement value..}..
11360 66 75 6e 63 64 65 66 20 7b 63 68 61 6e 67 65 73  funcdef {changes
11370 28 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20  ()} {} {.  ^The 
11380 63 68 61 6e 67 65 73 28 29 20 66 75 6e 63 74 69  changes() functi
11390 6f 6e 20 72 65 74 75 72 6e 73 20 74 68 65 20 6e  on returns the n
113a0 75 6d 62 65 72 20 6f 66 20 64 61 74 61 62 61 73  umber of databas
113b0 65 20 72 6f 77 73 20 74 68 61 74 20 77 65 72 65  e rows that were
113c0 20 63 68 61 6e 67 65 64 0a 20 20 6f 72 20 69 6e   changed.  or in
113d0 73 65 72 74 65 64 20 6f 72 20 64 65 6c 65 74 65  serted or delete
113e0 64 20 62 79 20 74 68 65 20 6d 6f 73 74 20 72 65  d by the most re
113f0 63 65 6e 74 6c 79 20 63 6f 6d 70 6c 65 74 65 64  cently completed
11400 20 49 4e 53 45 52 54 2c 20 44 45 4c 45 54 45 2c   INSERT, DELETE,
11410 0a 20 20 6f 72 20 55 50 44 41 54 45 20 73 74 61  .  or UPDATE sta
11420 74 65 6d 65 6e 74 2c 20 65 78 63 6c 75 73 69 76  tement, exclusiv
11430 65 20 6f 66 20 73 74 61 74 65 6d 65 6e 74 73 20  e of statements 
11440 69 6e 20 6c 6f 77 65 72 2d 6c 65 76 65 6c 20 74  in lower-level t
11450 72 69 67 67 65 72 73 2e 0a 20 20 5e 54 68 65 20  riggers..  ^The 
11460 63 68 61 6e 67 65 73 28 29 20 53 51 4c 20 66 75  changes() SQL fu
11470 6e 63 74 69 6f 6e 20 69 73 20 61 20 77 72 61 70  nction is a wrap
11480 70 65 72 20 61 72 6f 75 6e 64 20 74 68 65 20 5b  per around the [
11490 73 71 6c 69 74 65 33 5f 63 68 61 6e 67 65 73 28  sqlite3_changes(
114a0 29 5d 0a 20 20 43 2f 43 2b 2b 20 66 75 6e 63 74  )].  C/C++ funct
114b0 69 6f 6e 20 61 6e 64 20 68 65 6e 63 65 20 66 6f  ion and hence fo
114c0 6c 6c 6f 77 73 20 74 68 65 20 73 61 6d 65 20 72  llows the same r
114d0 75 6c 65 73 20 66 6f 72 20 63 6f 75 6e 74 69 6e  ules for countin
114e0 67 20 63 68 61 6e 67 65 73 2e 0a 7d 0a 0a 66 75  g changes..}..fu
114f0 6e 63 64 65 66 20 7b 63 6f 61 6c 65 73 63 65 28  ncdef {coalesce(
11500 58 2c 59 2c 2e 2e 2e 29 7d 20 7b 7d 20 7b 0a 20  X,Y,...)} {} {. 
11510 20 5e 54 68 65 20 63 6f 61 6c 65 73 63 65 28 29   ^The coalesce()
11520 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e   function return
11530 73 20 61 20 63 6f 70 79 20 6f 66 20 69 74 73 20  s a copy of its 
11540 66 69 72 73 74 20 6e 6f 6e 2d 4e 55 4c 4c 20 61  first non-NULL a
11550 72 67 75 6d 65 6e 74 2c 20 6f 72 0a 20 20 4e 55  rgument, or.  NU
11560 4c 4c 20 69 66 20 61 6c 6c 20 61 72 67 75 6d 65  LL if all argume
11570 6e 74 73 20 61 72 65 20 4e 55 4c 4c 2e 20 20 5e  nts are NULL.  ^
11580 43 6f 61 6c 65 73 63 65 28 29 20 6d 75 73 74 20  Coalesce() must 
11590 62 65 20 61 74 20 6c 65 61 73 74 20 0a 20 20 32  be at least .  2
115a0 20 61 72 67 75 6d 65 6e 74 73 2e 0a 7d 0a 0a 66   arguments..}..f
115b0 75 6e 63 64 65 66 20 7b 67 6c 6f 62 28 58 2c 59  uncdef {glob(X,Y
115c0 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20 67  )} {} {.  ^The g
115d0 6c 6f 62 28 58 2c 59 29 20 66 75 6e 63 74 69 6f  lob(X,Y) functio
115e0 6e 20 69 73 20 65 71 75 69 76 61 6c 65 6e 74 20  n is equivalent 
115f0 74 6f 20 74 68 65 0a 20 20 65 78 70 72 65 73 73  to the.  express
11600 69 6f 6e 20 22 3c 62 3e 59 20 47 4c 4f 42 20 58  ion "<b>Y GLOB X
11610 3c 2f 62 3e 22 2e 0a 20 20 4e 6f 74 65 20 74 68  </b>"..  Note th
11620 61 74 20 74 68 65 20 58 20 61 6e 64 20 59 20 61  at the X and Y a
11630 72 67 75 6d 65 6e 74 73 20 61 72 65 20 72 65 76  rguments are rev
11640 65 72 73 65 64 20 69 6e 20 74 68 65 20 67 6c 6f  ersed in the glo
11650 62 28 29 20 66 75 6e 63 74 69 6f 6e 0a 20 20 72  b() function.  r
11660 65 6c 61 74 69 76 65 20 74 6f 20 74 68 65 20 69  elative to the i
11670 6e 66 69 78 20 5b 47 4c 4f 42 5d 20 6f 70 65 72  nfix [GLOB] oper
11680 61 74 6f 72 2e 0a 20 20 5e 49 66 20 74 68 65 20  ator..  ^If the 
11690 5b 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f  [sqlite3_create_
116a0 66 75 6e 63 74 69 6f 6e 28 29 5d 20 69 6e 74 65  function()] inte
116b0 72 66 61 63 65 20 69 73 20 75 73 65 64 20 74 6f  rface is used to
116c0 0a 20 20 6f 76 65 72 72 69 64 65 20 74 68 65 20  .  override the 
116d0 67 6c 6f 62 28 58 2c 59 29 20 66 75 6e 63 74 69  glob(X,Y) functi
116e0 6f 6e 20 77 69 74 68 20 61 6e 20 61 6c 74 65 72  on with an alter
116f0 6e 61 74 69 76 65 20 69 6d 70 6c 65 6d 65 6e 74  native implement
11700 61 74 69 6f 6e 20 74 68 65 6e 0a 20 20 74 68 65  ation then.  the
11710 20 5b 47 4c 4f 42 5d 20 6f 70 65 72 61 74 6f 72   [GLOB] operator
11720 20 77 69 6c 6c 20 69 6e 76 6f 6b 65 20 74 68 65   will invoke the
11730 20 61 6c 74 65 72 6e 61 74 69 76 65 20 69 6d 70   alternative imp
11740 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 0a 7d 0a 0a  lementation..}..
11750 66 75 6e 63 64 65 66 20 7b 69 66 6e 75 6c 6c 28  funcdef {ifnull(
11760 58 2c 59 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68  X,Y)} {} {.  ^Th
11770 65 20 69 66 6e 75 6c 6c 28 29 20 66 75 6e 63 74  e ifnull() funct
11780 69 6f 6e 20 72 65 74 75 72 6e 73 20 61 20 63 6f  ion returns a co
11790 70 79 20 6f 66 20 69 74 73 20 66 69 72 73 74 20  py of its first 
117a0 6e 6f 6e 2d 4e 55 4c 4c 20 61 72 67 75 6d 65 6e  non-NULL argumen
117b0 74 2c 20 6f 72 0a 20 20 4e 55 4c 4c 20 69 66 20  t, or.  NULL if 
117c0 62 6f 74 68 20 61 72 67 75 6d 65 6e 74 73 20 61  both arguments a
117d0 72 65 20 4e 55 4c 4c 2e 20 20 5e 49 66 6e 75 6c  re NULL.  ^Ifnul
117e0 6c 28 29 20 6d 75 73 74 20 68 61 76 65 20 65 78  l() must have ex
117f0 61 63 74 6c 79 20 32 20 61 72 67 75 6d 65 6e 74  actly 2 argument
11800 73 2e 0a 20 20 5e 54 68 65 20 69 66 6e 75 6c 6c  s..  ^The ifnull
11810 28 29 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 65  () function is e
11820 71 75 69 76 61 6c 65 6e 74 20 74 6f 20 5b 63 6f  quivalent to [co
11830 61 6c 65 73 63 65 28 29 5d 20 77 69 74 68 20 74  alesce()] with t
11840 77 6f 20 61 72 67 75 6d 65 6e 74 73 2e 0a 7d 0a  wo arguments..}.
11850 0a 66 75 6e 63 64 65 66 20 7b 68 65 78 28 58 29  .funcdef {hex(X)
11860 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20 68 65  } {} {.  ^The he
11870 78 28 29 20 66 75 6e 63 74 69 6f 6e 20 69 6e 74  x() function int
11880 65 72 70 72 65 74 73 20 69 74 73 20 61 72 67 75  erprets its argu
11890 6d 65 6e 74 20 61 73 20 61 20 42 4c 4f 42 20 61  ment as a BLOB a
118a0 6e 64 20 72 65 74 75 72 6e 73 0a 20 20 61 20 73  nd returns.  a s
118b0 74 72 69 6e 67 20 77 68 69 63 68 20 69 73 20 74  tring which is t
118c0 68 65 20 75 70 70 65 72 2d 63 61 73 65 20 68 65  he upper-case he
118d0 78 61 64 65 63 69 6d 61 6c 20 72 65 6e 64 65 72  xadecimal render
118e0 69 6e 67 20 6f 66 20 74 68 65 20 63 6f 6e 74 65  ing of the conte
118f0 6e 74 20 6f 66 0a 20 20 74 68 61 74 20 62 6c 6f  nt of.  that blo
11900 62 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 6c  b..}..funcdef {l
11910 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64  ast_insert_rowid
11920 28 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20  ()} {} {.  ^The 
11930 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69  last_insert_rowi
11940 64 28 29 20 66 75 6e 63 74 69 6f 6e 20 72 65 74  d() function ret
11950 75 72 6e 73 20 74 68 65 20 5b 52 4f 57 49 44 5d  urns the [ROWID]
11960 0a 20 20 6f 66 20 74 68 65 20 6c 61 73 74 20 72  .  of the last r
11970 6f 77 20 69 6e 73 65 72 74 20 66 72 6f 6d 20 74  ow insert from t
11980 68 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  he database conn
11990 65 63 74 69 6f 6e 20 77 68 69 63 68 20 69 6e 76  ection which inv
119a0 6f 6b 65 64 20 74 68 65 0a 20 20 66 75 6e 63 74  oked the.  funct
119b0 69 6f 6e 2e 0a 20 20 5e 54 68 65 20 6c 61 73 74  ion..  ^The last
119c0 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 28 29 20  _insert_rowid() 
119d0 53 51 4c 20 66 75 6e 63 74 69 6f 6e 20 69 73 20  SQL function is 
119e0 61 20 77 72 61 70 70 65 72 20 61 72 6f 75 6e 64  a wrapper around
119f0 20 74 68 65 0a 20 20 5b 73 71 6c 69 74 65 33 5f   the.  [sqlite3_
11a00 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69  last_insert_rowi
11a10 64 28 29 5d 20 43 2f 43 2b 2b 20 69 6e 74 65 72  d()] C/C++ inter
11a20 66 61 63 65 20 66 75 6e 63 74 69 6f 6e 2e 0a 7d  face function..}
11a30 0a 0a 66 75 6e 63 64 65 66 20 7b 6c 65 6e 67 74  ..funcdef {lengt
11a40 68 28 58 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68  h(X)} {} {.  ^Th
11a50 65 20 6c 65 6e 67 74 68 28 58 29 20 66 75 6e 63  e length(X) func
11a60 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 74 68 65  tion returns the
11a70 20 6c 65 6e 67 74 68 20 6f 66 20 58 20 69 6e 20   length of X in 
11a80 0a 20 20 63 68 61 72 61 63 74 65 72 73 20 69 66  .  characters if
11a90 20 58 20 69 73 20 61 20 73 74 72 69 6e 67 2c 20   X is a string, 
11aa0 6f 72 20 69 6e 20 62 79 74 65 73 20 69 66 20 58  or in bytes if X
11ab0 20 69 73 20 61 20 62 6c 6f 62 2e 0a 20 20 5e 49   is a blob..  ^I
11ac0 66 20 58 20 69 73 20 4e 55 4c 4c 20 74 68 65 6e  f X is NULL then
11ad0 20 6c 65 6e 67 74 68 28 58 29 20 69 73 20 4e 55   length(X) is NU
11ae0 4c 4c 2e 0a 20 20 5e 49 66 20 58 20 69 73 20 6e  LL..  ^If X is n
11af0 75 6d 65 72 69 63 20 74 68 65 6e 20 6c 65 6e 67  umeric then leng
11b00 74 68 28 58 29 20 72 65 74 75 72 6e 73 20 74 68  th(X) returns th
11b10 65 20 6c 65 6e 67 74 68 20 6f 66 20 61 20 73 74  e length of a st
11b20 72 69 6e 67 0a 20 20 72 65 70 72 65 73 65 6e 74  ring.  represent
11b30 61 74 69 6f 6e 20 6f 66 20 58 2e 0a 7d 0a 0a 66  ation of X..}..f
11b40 75 6e 63 64 65 66 20 7b 6c 69 6b 65 28 58 2c 59  uncdef {like(X,Y
11b50 29 20 6c 69 6b 65 28 58 2c 59 2c 5a 29 7d 20 7b  ) like(X,Y,Z)} {
11b60 7d 20 7b 0a 20 20 5e 54 68 65 20 6c 69 6b 65 28  } {.  ^The like(
11b70 29 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 75 73  ) function is us
11b80 65 64 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20  ed to implement 
11b90 74 68 65 0a 20 20 22 3c 62 3e 59 20 4c 49 4b 45  the.  "<b>Y LIKE
11ba0 20 58 20 26 23 39 31 3b 45 53 43 41 50 45 20 5a   X &#91;ESCAPE Z
11bb0 26 23 39 33 3b 3c 2f 62 3e 22 20 65 78 70 72 65  &#93;</b>" expre
11bc0 73 73 69 6f 6e 2e 20 0a 20 20 5e 49 66 20 74 68  ssion. .  ^If th
11bd0 65 20 6f 70 74 69 6f 6e 61 6c 20 45 53 43 41 50  e optional ESCAP
11be0 45 20 63 6c 61 75 73 65 20 69 73 20 70 72 65 73  E clause is pres
11bf0 65 6e 74 2c 20 74 68 65 6e 20 74 68 65 0a 20 20  ent, then the.  
11c00 6c 69 6b 65 28 29 20 66 75 6e 63 74 69 6f 6e 20  like() function 
11c10 69 73 20 69 6e 76 6f 6b 65 64 20 77 69 74 68 20  is invoked with 
11c20 74 68 72 65 65 20 61 72 67 75 6d 65 6e 74 73 2e  three arguments.
11c30 20 20 5e 4f 74 68 65 72 77 69 73 65 2c 20 69 74    ^Otherwise, it
11c40 20 69 73 0a 20 20 69 6e 76 6f 6b 65 64 20 77 69   is.  invoked wi
11c50 74 68 20 74 77 6f 20 61 72 67 75 6d 65 6e 74 73  th two arguments
11c60 20 6f 6e 6c 79 2e 20 4e 6f 74 65 20 74 68 61 74   only. Note that
11c70 20 74 68 65 20 58 20 61 6e 64 20 59 20 70 61 72   the X and Y par
11c80 61 6d 65 74 65 72 73 20 61 72 65 0a 20 20 72 65  ameters are.  re
11c90 76 65 72 73 65 64 20 69 6e 20 74 68 65 20 6c 69  versed in the li
11ca0 6b 65 28 29 20 66 75 6e 63 74 69 6f 6e 20 72 65  ke() function re
11cb0 6c 61 74 69 76 65 20 74 6f 20 74 68 65 20 69 6e  lative to the in
11cc0 66 69 78 20 5b 4c 49 4b 45 5d 20 6f 70 65 72 61  fix [LIKE] opera
11cd0 74 6f 72 2e 0a 20 20 5e 54 68 65 20 5b 73 71 6c  tor..  ^The [sql
11ce0 69 74 65 33 5f 63 72 65 61 74 65 5f 66 75 6e 63  ite3_create_func
11cf0 74 69 6f 6e 28 29 5d 20 69 6e 74 65 72 66 61 63  tion()] interfac
11d00 65 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f  e can be used to
11d10 20 6f 76 65 72 72 69 64 65 20 74 68 65 0a 20 20   override the.  
11d20 6c 69 6b 65 28 29 20 66 75 6e 63 74 69 6f 6e 20  like() function 
11d30 61 6e 64 20 74 68 65 72 65 62 79 20 63 68 61 6e  and thereby chan
11d40 67 65 20 74 68 65 20 6f 70 65 72 61 74 69 6f 6e  ge the operation
11d50 20 6f 66 20 74 68 65 0a 20 20 5b 4c 49 4b 45 5d   of the.  [LIKE]
11d60 20 6f 70 65 72 61 74 6f 72 2e 20 20 57 68 65 6e   operator.  When
11d70 20 6f 76 65 72 72 69 64 69 6e 67 20 74 68 65 20   overriding the 
11d80 6c 69 6b 65 28 29 20 66 75 6e 63 74 69 6f 6e 2c  like() function,
11d90 20 69 74 20 6d 61 79 20 62 65 20 69 6d 70 6f 72   it may be impor
11da0 74 61 6e 74 0a 20 20 74 6f 20 6f 76 65 72 72 69  tant.  to overri
11db0 64 65 20 62 6f 74 68 20 74 68 65 20 74 77 6f 20  de both the two 
11dc0 61 6e 64 20 74 68 72 65 65 20 61 72 67 75 6d 65  and three argume
11dd0 6e 74 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 74  nt versions of t
11de0 68 65 20 6c 69 6b 65 28 29 20 0a 20 20 66 75 6e  he like() .  fun
11df0 63 74 69 6f 6e 2e 20 4f 74 68 65 72 77 69 73 65  ction. Otherwise
11e00 2c 20 64 69 66 66 65 72 65 6e 74 20 63 6f 64 65  , different code
11e10 20 6d 61 79 20 62 65 20 63 61 6c 6c 65 64 20 74   may be called t
11e20 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 74 68 65 0a  o implement the.
11e30 20 20 5b 4c 49 4b 45 5d 20 6f 70 65 72 61 74 6f    [LIKE] operato
11e40 72 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 77  r depending on w
11e50 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 61 6e  hether or not an
11e60 20 45 53 43 41 50 45 20 63 6c 61 75 73 65 20 77   ESCAPE clause w
11e70 61 73 20 0a 20 20 73 70 65 63 69 66 69 65 64 2e  as .  specified.
11e80 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 6c 6f 61  .}..funcdef {loa
11e90 64 5f 65 78 74 65 6e 73 69 6f 6e 28 58 29 20 6c  d_extension(X) l
11ea0 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28 58 2c  oad_extension(X,
11eb0 59 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20  Y)} {} {.  ^The 
11ec0 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28 58  load_extension(X
11ed0 2c 59 29 20 66 75 6e 63 74 69 6f 6e 20 6c 6f 61  ,Y) function loa
11ee0 64 73 20 53 51 4c 69 74 65 20 65 78 74 65 6e 73  ds SQLite extens
11ef0 69 6f 6e 73 20 6f 75 74 20 6f 66 20 74 68 65 20  ions out of the 
11f00 73 68 61 72 65 64 0a 20 20 6c 69 62 72 61 72 79  shared.  library
11f10 20 66 69 6c 65 20 6e 61 6d 65 64 20 58 20 75 73   file named X us
11f20 69 6e 67 20 74 68 65 20 65 6e 74 72 79 20 70 6f  ing the entry po
11f30 69 6e 74 20 59 2e 20 20 5e 54 68 65 20 72 65 73  int Y.  ^The res
11f40 75 6c 74 20 6f 66 20 6c 6f 61 64 5f 65 78 74 65  ult of load_exte
11f50 6e 73 69 6f 6e 28 29 0a 20 20 69 73 20 61 6c 77  nsion().  is alw
11f60 61 79 73 20 61 20 4e 55 4c 4c 2e 20 20 5e 49 66  ays a NULL.  ^If
11f70 20 59 20 69 73 20 6f 6d 69 74 74 65 64 20 74 68   Y is omitted th
11f80 65 6e 20 74 68 65 20 64 65 66 61 75 6c 74 20 65  en the default e
11f90 6e 74 72 79 20 70 6f 69 6e 74 0a 20 20 6f 66 20  ntry point.  of 
11fa0 3c 62 3e 73 71 6c 69 74 65 33 5f 65 78 74 65 6e  <b>sqlite3_exten
11fb0 73 69 6f 6e 5f 69 6e 69 74 3c 2f 62 3e 20 69 73  sion_init</b> is
11fc0 20 75 73 65 64 2e 20 20 5e 54 68 65 20 6c 6f 61   used.  ^The loa
11fd0 64 5f 65 78 74 65 6e 73 69 6f 6e 28 29 20 66 75  d_extension() fu
11fe0 6e 63 74 69 6f 6e 0a 20 20 72 61 69 73 65 73 20  nction.  raises 
11ff0 61 6e 20 65 78 63 65 70 74 69 6f 6e 20 69 66 20  an exception if 
12000 74 68 65 20 65 78 74 65 6e 73 69 6f 6e 20 66 61  the extension fa
12010 69 6c 73 20 74 6f 20 6c 6f 61 64 20 6f 72 20 69  ils to load or i
12020 6e 69 74 69 61 6c 69 7a 65 20 63 6f 72 72 65 63  nitialize correc
12030 74 6c 79 2e 0a 0a 20 20 3c 70 3e 5e 54 68 65 20  tly...  <p>^The 
12040 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28 29  load_extension()
12050 20 66 75 6e 63 74 69 6f 6e 20 77 69 6c 6c 20 66   function will f
12060 61 69 6c 20 69 66 20 74 68 65 20 65 78 74 65 6e  ail if the exten
12070 73 69 6f 6e 20 61 74 74 65 6d 70 74 73 20 74 6f  sion attempts to
12080 20 0a 20 20 6d 6f 64 69 66 79 20 6f 72 20 64 65   .  modify or de
12090 6c 65 74 65 20 61 20 53 51 4c 20 66 75 6e 63 74  lete a SQL funct
120a0 69 6f 6e 20 6f 72 20 63 6f 6c 6c 61 74 69 6e 67  ion or collating
120b0 20 73 65 71 75 65 6e 63 65 2e 20 20 5e 54 68 65   sequence.  ^The
120c0 0a 20 20 65 78 74 65 6e 73 69 6f 6e 20 63 61 6e  .  extension can
120d0 20 61 64 64 20 6e 65 77 20 66 75 6e 63 74 69 6f   add new functio
120e0 6e 73 20 6f 72 20 63 6f 6c 6c 61 74 69 6e 67 20  ns or collating 
120f0 73 65 71 75 65 6e 63 65 73 2c 20 62 75 74 20 63  sequences, but c
12100 61 6e 6e 6f 74 0a 20 20 6d 6f 64 69 66 79 20 6f  annot.  modify o
12110 72 20 64 65 6c 65 74 65 20 65 78 69 73 74 69 6e  r delete existin
12120 67 20 66 75 6e 63 74 69 6f 6e 73 20 6f 72 20 63  g functions or c
12130 6f 6c 6c 61 74 69 6e 67 20 73 65 71 75 65 6e 63  ollating sequenc
12140 65 73 20 62 65 63 61 75 73 65 0a 20 20 74 68 6f  es because.  tho
12150 73 65 20 66 75 6e 63 74 69 6f 6e 73 20 61 6e 64  se functions and
12160 2f 6f 72 20 63 6f 6c 6c 61 74 69 6e 67 20 73 65  /or collating se
12170 71 75 65 6e 63 65 73 20 6d 69 67 68 74 20 62 65  quences might be
12180 20 75 73 65 64 20 65 6c 73 65 77 68 65 72 65 0a   used elsewhere.
12190 20 20 69 6e 20 74 68 65 20 63 75 72 72 65 6e 74    in the current
121a0 6c 79 20 72 75 6e 6e 69 6e 67 20 53 51 4c 20 73  ly running SQL s
121b0 74 61 74 65 6d 65 6e 74 2e 20 20 54 6f 20 6c 6f  tatement.  To lo
121c0 61 64 20 61 6e 20 65 78 74 65 6e 73 69 6f 6e 20  ad an extension 
121d0 74 68 61 74 0a 20 20 63 68 61 6e 67 65 73 20 6f  that.  changes o
121e0 72 20 64 65 6c 65 74 65 73 20 66 75 6e 63 74 69  r deletes functi
121f0 6f 6e 73 20 6f 72 20 63 6f 6c 6c 61 74 69 6e 67  ons or collating
12200 20 73 65 71 75 65 6e 63 65 73 2c 20 75 73 65 20   sequences, use 
12210 74 68 65 0a 20 20 5b 73 71 6c 69 74 65 33 5f 6c  the.  [sqlite3_l
12220 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28 29 5d  oad_extension()]
12230 20 43 2d 6c 61 6e 67 75 61 67 65 20 41 50 49 2e   C-language API.
12240 3c 2f 70 3e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20  </p>.}..funcdef 
12250 7b 6c 6f 77 65 72 28 58 29 7d 20 7b 7d 20 7b 0a  {lower(X)} {} {.
12260 20 20 5e 54 68 65 20 6c 6f 77 65 72 28 58 29 20    ^The lower(X) 
12270 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73  function returns
12280 20 61 20 63 6f 70 79 20 6f 66 20 73 74 72 69 6e   a copy of strin
12290 67 20 58 20 77 69 74 68 20 61 6c 6c 20 41 53 43  g X with all ASC
122a0 49 49 20 63 68 61 72 61 63 74 65 72 73 0a 20 20  II characters.  
122b0 63 6f 6e 76 65 72 74 65 64 20 74 6f 20 6c 6f 77  converted to low
122c0 65 72 20 63 61 73 65 2e 20 20 5e 54 68 65 20 64  er case.  ^The d
122d0 65 66 61 75 6c 74 20 62 75 69 6c 74 2d 69 6e 20  efault built-in 
122e0 6c 6f 77 65 72 28 29 20 66 75 6e 63 74 69 6f 6e  lower() function
122f0 20 77 6f 72 6b 73 0a 20 20 66 6f 72 20 41 53 43   works.  for ASC
12300 49 49 20 63 68 61 72 61 63 74 65 72 73 20 6f 6e  II characters on
12310 6c 79 2e 20 20 54 6f 20 64 6f 20 63 61 73 65 20  ly.  To do case 
12320 63 6f 6e 76 65 72 73 69 6f 6e 73 20 6f 6e 20 6e  conversions on n
12330 6f 6e 2d 41 53 43 49 49 0a 20 20 63 68 61 72 61  on-ASCII.  chara
12340 63 74 65 72 73 2c 20 6c 6f 61 64 20 74 68 65 20  cters, load the 
12350 49 43 55 20 65 78 74 65 6e 73 69 6f 6e 2e 0a 7d  ICU extension..}
12360 0a 0a 66 75 6e 63 64 65 66 20 7b 6c 74 72 69 6d  ..funcdef {ltrim
12370 28 58 29 20 6c 74 72 69 6d 28 58 2c 59 29 7d 20  (X) ltrim(X,Y)} 
12380 7b 7d 20 7b 0a 20 20 5e 54 68 65 20 6c 74 72 69  {} {.  ^The ltri
12390 6d 28 58 2c 59 29 20 66 75 6e 63 74 69 6f 6e 20  m(X,Y) function 
123a0 72 65 74 75 72 6e 73 20 61 20 73 74 72 69 6e 67  returns a string
123b0 20 66 6f 72 6d 65 64 20 62 79 20 72 65 6d 6f 76   formed by remov
123c0 69 6e 67 20 61 6e 79 20 61 6e 64 20 61 6c 6c 0a  ing any and all.
123d0 20 20 63 68 61 72 61 63 74 65 72 73 20 74 68 61    characters tha
123e0 74 20 61 70 70 65 61 72 20 69 6e 20 59 20 66 72  t appear in Y fr
123f0 6f 6d 20 74 68 65 20 6c 65 66 74 20 73 69 64 65  om the left side
12400 20 6f 66 20 58 2e 0a 20 20 5e 49 66 20 74 68 65   of X..  ^If the
12410 20 59 20 61 72 67 75 6d 65 6e 74 20 69 73 20 6f   Y argument is o
12420 6d 69 74 74 65 64 2c 20 6c 74 72 69 6d 28 58 29  mitted, ltrim(X)
12430 20 72 65 6d 6f 76 65 73 20 73 70 61 63 65 73 20   removes spaces 
12440 66 72 6f 6d 20 74 68 65 20 6c 65 66 74 20 73 69  from the left si
12450 64 65 0a 20 20 6f 66 20 58 2e 0a 7d 0a 0a 66 75  de.  of X..}..fu
12460 6e 63 64 65 66 20 7b 6d 61 78 28 58 2c 59 2c 2e  ncdef {max(X,Y,.
12470 2e 2e 29 7d 20 7b 2a 6d 61 78 43 6f 72 65 46 75  ..)} {*maxCoreFu
12480 6e 63 20 2a 6d 61 78 20 7b 6d 61 78 28 29 20 53  nc *max {max() S
12490 51 4c 20 66 75 6e 63 74 69 6f 6e 7d 7d 20 7b 0a  QL function}} {.
124a0 20 20 5e 54 68 65 20 6d 75 6c 74 69 2d 61 72 67    ^The multi-arg
124b0 75 6d 65 6e 74 20 6d 61 78 28 29 20 66 75 6e 63  ument max() func
124c0 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 74 68 65  tion returns the
124d0 20 61 72 67 75 6d 65 6e 74 20 77 69 74 68 20 74   argument with t
124e0 68 65 20 0a 20 20 6d 61 78 69 6d 75 6d 20 76 61  he .  maximum va
124f0 6c 75 65 2c 20 6f 72 20 72 65 74 75 72 6e 20 4e  lue, or return N
12500 55 4c 4c 20 69 66 20 61 6e 79 20 61 72 67 75 6d  ULL if any argum
12510 65 6e 74 20 69 73 20 4e 55 4c 4c 2e 20 0a 20 20  ent is NULL. .  
12520 5e 54 68 65 20 6d 75 6c 74 69 2d 61 72 67 75 6d  ^The multi-argum
12530 65 6e 74 20 6d 61 78 28 29 20 66 75 6e 63 74 69  ent max() functi
12540 6f 6e 20 73 65 61 72 63 68 65 73 20 69 74 73 20  on searches its 
12550 61 72 67 75 6d 65 6e 74 73 20 66 72 6f 6d 20 6c  arguments from l
12560 65 66 74 20 74 6f 20 72 69 67 68 74 0a 20 20 66  eft to right.  f
12570 6f 72 20 61 6e 20 61 72 67 75 6d 65 6e 74 20 74  or an argument t
12580 68 61 74 20 64 65 66 69 6e 65 73 20 61 20 63 6f  hat defines a co
12590 6c 6c 61 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e  llating function
125a0 20 61 6e 64 20 75 73 65 73 20 74 68 61 74 20 63   and uses that c
125b0 6f 6c 6c 61 74 69 6e 67 0a 20 20 66 75 6e 63 74  ollating.  funct
125c0 69 6f 6e 20 66 6f 72 20 61 6c 6c 20 73 74 72 69  ion for all stri
125d0 6e 67 20 63 6f 6d 70 61 72 69 73 6f 6e 73 2e 20  ng comparisons. 
125e0 20 5e 49 66 20 6e 6f 6e 65 20 6f 66 20 74 68 65   ^If none of the
125f0 20 61 72 67 75 6d 65 6e 74 73 20 74 6f 20 6d 61   arguments to ma
12600 78 28 29 0a 20 20 64 65 66 69 6e 65 20 61 20 63  x().  define a c
12610 6f 6c 6c 61 74 69 6e 67 20 66 75 6e 63 74 69 6f  ollating functio
12620 6e 2c 20 74 68 65 6e 20 74 68 65 20 42 49 4e 41  n, then the BINA
12630 52 59 20 63 6f 6c 6c 61 74 69 6e 67 20 66 75 6e  RY collating fun
12640 63 74 69 6f 6e 20 69 73 20 75 73 65 64 2e 0a 20  ction is used.. 
12650 20 4e 6f 74 65 20 74 68 61 74 20 3c 62 3e 6d 61   Note that <b>ma
12660 78 28 29 3c 2f 62 3e 20 69 73 20 61 20 73 69 6d  x()</b> is a sim
12670 70 6c 65 20 66 75 6e 63 74 69 6f 6e 20 77 68 65  ple function whe
12680 6e 0a 20 20 69 74 20 68 61 73 20 32 20 6f 72 20  n.  it has 2 or 
12690 6d 6f 72 65 20 61 72 67 75 6d 65 6e 74 73 20 62  more arguments b
126a0 75 74 20 6f 70 65 72 61 74 65 73 20 61 73 20 61  ut operates as a
126b0 6e 0a 20 20 5b 6d 69 6e 41 67 67 46 75 6e 63 20  n.  [minAggFunc 
126c0 7c 20 61 67 67 72 65 67 61 74 65 20 66 75 6e 63  | aggregate func
126d0 74 69 6f 6e 5d 20 69 66 20 67 69 76 65 6e 20 6f  tion] if given o
126e0 6e 6c 79 20 61 20 73 69 6e 67 6c 65 20 61 72 67  nly a single arg
126f0 75 6d 65 6e 74 2e 0a 7d 0a 0a 66 75 6e 63 64 65  ument..}..funcde
12700 66 20 7b 6d 69 6e 28 58 2c 59 2c 2e 2e 2e 29 7d  f {min(X,Y,...)}
12710 20 7b 2a 6d 69 6e 43 6f 72 65 46 75 6e 63 20 2a   {*minCoreFunc *
12720 6d 69 6e 20 7b 6d 69 6e 28 29 20 53 51 4c 20 66  min {min() SQL f
12730 75 6e 63 74 69 6f 6e 7d 7d 20 7b 0a 20 20 5e 54  unction}} {.  ^T
12740 68 65 20 6d 75 6c 74 69 2d 61 72 67 75 6d 65 6e  he multi-argumen
12750 74 20 6d 69 6e 28 29 20 66 75 6e 63 74 69 6f 6e  t min() function
12760 20 72 65 74 75 72 6e 73 20 74 68 65 20 61 72 67   returns the arg
12770 75 6d 65 6e 74 20 77 69 74 68 20 74 68 65 0a 20  ument with the. 
12780 20 6d 69 6e 69 6d 75 6d 20 76 61 6c 75 65 2e 0a   minimum value..
12790 20 20 5e 54 68 65 20 6d 75 6c 74 69 2d 61 72 67    ^The multi-arg
127a0 75 6d 65 6e 74 20 6d 69 6e 28 29 20 66 75 6e 63  ument min() func
127b0 74 69 6f 6e 20 73 65 61 72 63 68 65 73 20 69 74  tion searches it
127c0 73 20 61 72 67 75 6d 65 6e 74 73 20 66 72 6f 6d  s arguments from
127d0 20 6c 65 66 74 20 74 6f 20 72 69 67 68 74 0a 20   left to right. 
127e0 20 66 6f 72 20 61 6e 20 61 72 67 75 6d 65 6e 74   for an argument
127f0 20 74 68 61 74 20 64 65 66 69 6e 65 73 20 61 20   that defines a 
12800 63 6f 6c 6c 61 74 69 6e 67 20 66 75 6e 63 74 69  collating functi
12810 6f 6e 20 61 6e 64 20 75 73 65 73 20 74 68 61 74  on and uses that
12820 20 63 6f 6c 6c 61 74 69 6e 67 0a 20 20 66 75 6e   collating.  fun
12830 63 74 69 6f 6e 20 66 6f 72 20 61 6c 6c 20 73 74  ction for all st
12840 72 69 6e 67 20 63 6f 6d 70 61 72 69 73 6f 6e 73  ring comparisons
12850 2e 20 20 5e 49 66 20 6e 6f 6e 65 20 6f 66 20 74  .  ^If none of t
12860 68 65 20 61 72 67 75 6d 65 6e 74 73 20 74 6f 20  he arguments to 
12870 6d 69 6e 28 29 0a 20 20 64 65 66 69 6e 65 20 61  min().  define a
12880 20 63 6f 6c 6c 61 74 69 6e 67 20 66 75 6e 63 74   collating funct
12890 69 6f 6e 2c 20 74 68 65 6e 20 74 68 65 20 42 49  ion, then the BI
128a0 4e 41 52 59 20 63 6f 6c 6c 61 74 69 6e 67 20 66  NARY collating f
128b0 75 6e 63 74 69 6f 6e 20 69 73 20 75 73 65 64 2e  unction is used.
128c0 0a 20 20 4e 6f 74 65 20 74 68 61 74 20 3c 62 3e  .  Note that <b>
128d0 6d 69 6e 28 29 3c 2f 62 3e 20 69 73 20 61 20 73  min()</b> is a s
128e0 69 6d 70 6c 65 20 66 75 6e 63 74 69 6f 6e 20 77  imple function w
128f0 68 65 6e 0a 20 20 69 74 20 68 61 73 20 32 20 6f  hen.  it has 2 o
12900 72 20 6d 6f 72 65 20 61 72 67 75 6d 65 6e 74 73  r more arguments
12910 20 62 75 74 20 6f 70 65 72 61 74 65 73 20 61 73   but operates as
12920 20 61 6e 20 0a 20 20 5b 6d 61 78 41 67 67 46 75   an .  [maxAggFu
12930 6e 63 20 7c 20 61 67 67 72 65 67 61 74 65 20 66  nc | aggregate f
12940 75 6e 63 74 69 6f 6e 5d 20 69 66 20 67 69 76 65  unction] if give
12950 6e 0a 20 20 6f 6e 6c 79 20 61 20 73 69 6e 67 6c  n.  only a singl
12960 65 20 61 72 67 75 6d 65 6e 74 2e 0a 7d 0a 0a 66  e argument..}..f
12970 75 6e 63 64 65 66 20 7b 6e 75 6c 6c 69 66 28 58  uncdef {nullif(X
12980 2c 59 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68 65  ,Y)} {} {.  ^The
12990 20 6e 75 6c 6c 69 66 28 58 2c 59 29 20 66 75 6e   nullif(X,Y) fun
129a0 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 69 74  ction returns it
129b0 73 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74  s first argument
129c0 20 69 66 20 74 68 65 20 61 72 67 75 6d 65 6e 74   if the argument
129d0 73 20 61 72 65 0a 20 20 64 69 66 66 65 72 65 6e  s are.  differen
129e0 74 20 61 6e 64 20 4e 55 4c 4c 20 69 66 20 74 68  t and NULL if th
129f0 65 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20  e arguments are 
12a00 74 68 65 20 73 61 6d 65 2e 20 20 5e 54 68 65 20  the same.  ^The 
12a10 6e 75 6c 6c 69 66 28 58 2c 59 29 20 66 75 6e 63  nullif(X,Y) func
12a20 74 69 6f 6e 0a 20 20 73 65 61 72 63 68 65 73 20  tion.  searches 
12a30 69 74 73 20 61 72 67 75 6d 65 6e 74 73 20 66 72  its arguments fr
12a40 6f 6d 20 6c 65 66 74 20 74 6f 20 72 69 67 68 74  om left to right
12a50 20 66 6f 72 20 61 6e 20 61 72 67 75 6d 65 6e 74   for an argument
12a60 20 74 68 61 74 20 64 65 66 69 6e 65 73 20 61 0a   that defines a.
12a70 20 20 63 6f 6c 6c 61 74 69 6e 67 20 66 75 6e 63    collating func
12a80 74 69 6f 6e 20 61 6e 64 20 75 73 65 73 20 74 68  tion and uses th
12a90 61 74 20 63 6f 6c 6c 61 74 69 6e 67 20 66 75 6e  at collating fun
12aa0 63 74 69 6f 6e 20 66 6f 72 20 61 6c 6c 20 73 74  ction for all st
12ab0 72 69 6e 67 0a 20 20 63 6f 6d 70 61 72 69 73 6f  ring.  compariso
12ac0 6e 73 2e 20 20 5e 49 66 20 6e 65 69 74 68 65 72  ns.  ^If neither
12ad0 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 6e 75 6c   argument to nul
12ae0 6c 69 66 28 29 20 64 65 66 69 6e 65 73 20 61 20  lif() defines a 
12af0 63 6f 6c 6c 61 74 69 6e 67 20 66 75 6e 63 74 69  collating functi
12b00 6f 6e 0a 20 20 74 68 65 6e 20 74 68 65 20 42 49  on.  then the BI
12b10 4e 41 52 59 20 69 73 20 75 73 65 64 2e 0a 7d 0a  NARY is used..}.
12b20 0a 66 75 6e 63 64 65 66 20 7b 71 75 6f 74 65 28  .funcdef {quote(
12b30 58 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20  X)} {} {.  ^The 
12b40 71 75 6f 74 65 28 58 29 20 66 75 6e 63 74 69 6f  quote(X) functio
12b50 6e 20 72 65 74 75 72 6e 73 20 61 20 73 74 72 69  n returns a stri
12b60 6e 67 20 77 68 69 63 68 20 69 73 20 74 68 65 20  ng which is the 
12b70 76 61 6c 75 65 20 6f 66 0a 20 20 69 74 73 20 61  value of.  its a
12b80 72 67 75 6d 65 6e 74 20 73 75 69 74 61 62 6c 65  rgument suitable
12b90 20 66 6f 72 20 69 6e 63 6c 75 73 69 6f 6e 20 69   for inclusion i
12ba0 6e 74 6f 20 61 6e 6f 74 68 65 72 20 53 51 4c 20  nto another SQL 
12bb0 73 74 61 74 65 6d 65 6e 74 2e 0a 20 20 5e 53 74  statement..  ^St
12bc0 72 69 6e 67 73 20 61 72 65 20 73 75 72 72 6f 75  rings are surrou
12bd0 6e 64 65 64 20 62 79 20 73 69 6e 67 6c 65 2d 71  nded by single-q
12be0 75 6f 74 65 73 20 77 69 74 68 20 65 73 63 61 70  uotes with escap
12bf0 65 73 20 6f 6e 20 69 6e 74 65 72 69 6f 72 20 71  es on interior q
12c00 75 6f 74 65 73 0a 20 20 61 73 20 6e 65 65 64 65  uotes.  as neede
12c10 64 2e 20 20 5e 42 4c 4f 42 73 20 61 72 65 20 65  d.  ^BLOBs are e
12c20 6e 63 6f 64 65 64 20 61 73 20 68 65 78 61 64 65  ncoded as hexade
12c30 63 69 6d 61 6c 20 6c 69 74 65 72 61 6c 73 2e 0a  cimal literals..
12c40 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 72 61 6e 64  }..funcdef {rand
12c50 6f 6d 28 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68  om()} {} {.  ^Th
12c60 65 20 72 61 6e 64 6f 6d 28 29 20 66 75 6e 63 74  e random() funct
12c70 69 6f 6e 20 72 65 74 75 72 6e 73 20 61 20 70 73  ion returns a ps
12c80 65 75 64 6f 2d 72 61 6e 64 6f 6d 20 69 6e 74 65  eudo-random inte
12c90 67 65 72 0a 20 20 62 65 74 77 65 65 6e 20 2d 39  ger.  between -9
12ca0 32 32 33 33 37 32 30 33 36 38 35 34 37 37 35 38  2233720368547758
12cb0 30 38 20 61 6e 64 20 2b 39 32 32 33 33 37 32 30  08 and +92233720
12cc0 33 36 38 35 34 37 37 35 38 30 37 2e 0a 7d 0a 0a  36854775807..}..
12cd0 66 75 6e 63 64 65 66 20 7b 72 61 6e 64 6f 6d 62  funcdef {randomb
12ce0 6c 6f 62 28 4e 29 7d 20 7b 7d 20 7b 0a 20 20 5e  lob(N)} {} {.  ^
12cf0 54 68 65 20 72 61 6e 64 6f 6d 62 6c 6f 62 28 4e  The randomblob(N
12d00 29 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72  ) function retur
12d10 6e 20 61 6e 20 4e 2d 62 79 74 65 20 62 6c 6f 62  n an N-byte blob
12d20 20 63 6f 6e 74 61 69 6e 69 6e 67 20 70 73 65 75   containing pseu
12d30 64 6f 2d 72 61 6e 64 6f 6d 0a 20 20 62 79 74 65  do-random.  byte
12d40 73 2e 20 5e 49 66 20 4e 20 69 73 20 6c 65 73 73  s. ^If N is less
12d50 20 74 68 61 6e 20 31 20 74 68 65 6e 20 61 20 31   than 1 then a 1
12d60 2d 62 79 74 65 20 72 61 6e 64 6f 6d 20 62 6c 6f  -byte random blo
12d70 62 20 69 73 20 72 65 74 75 72 6e 65 64 2e 0a 0a  b is returned...
12d80 20 20 3c 70 3e 48 69 6e 74 3a 20 20 61 70 70 6c    <p>Hint:  appl
12d90 69 63 61 74 69 6f 6e 73 20 63 61 6e 20 67 65 6e  ications can gen
12da0 65 72 61 74 65 20 67 6c 6f 62 61 6c 6c 79 20 75  erate globally u
12db0 6e 69 71 75 65 20 69 64 65 6e 74 69 66 69 65 72  nique identifier
12dc0 73 0a 20 20 75 73 69 6e 67 20 74 68 69 73 20 66  s.  using this f
12dd0 75 6e 63 74 69 6f 6e 20 74 6f 67 65 74 68 65 72  unction together
12de0 20 77 69 74 68 20 5b 68 65 78 28 29 5d 20 61 6e   with [hex()] an
12df0 64 2f 6f 72 0a 20 20 5b 6c 6f 77 65 72 28 29 5d  d/or.  [lower()]
12e00 20 6c 69 6b 65 20 74 68 69 73 3a 3c 2f 70 3e 0a   like this:</p>.
12e10 0a 20 20 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a  .  <blockquote>.
12e20 20 20 68 65 78 28 72 61 6e 64 6f 6d 62 6c 6f 62    hex(randomblob
12e30 28 31 36 29 29 3c 62 72 3e 3c 2f 62 72 3e 0a 20  (16))<br></br>. 
12e40 20 6c 6f 77 65 72 28 68 65 78 28 72 61 6e 64 6f   lower(hex(rando
12e50 6d 62 6c 6f 62 28 31 36 29 29 29 0a 20 20 3c 2f  mblob(16))).  </
12e60 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 7d 0a 0a 66  blockquote>.}..f
12e70 75 6e 63 64 65 66 20 7b 72 65 70 6c 61 63 65 28  uncdef {replace(
12e80 58 2c 59 2c 5a 29 7d 20 7b 7d 20 7b 0a 20 20 5e  X,Y,Z)} {} {.  ^
12e90 54 68 65 20 72 65 70 6c 61 63 65 28 58 2c 59 2c  The replace(X,Y,
12ea0 5a 29 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75  Z) function retu
12eb0 72 6e 73 20 61 20 73 74 72 69 6e 67 20 66 6f 72  rns a string for
12ec0 6d 65 64 20 62 79 20 73 75 62 73 74 69 74 75 74  med by substitut
12ed0 69 6e 67 0a 20 20 73 74 72 69 6e 67 20 5a 20 66  ing.  string Z f
12ee0 6f 72 20 65 76 65 72 79 20 6f 63 63 75 72 72 61  or every occurra
12ef0 6e 63 65 20 6f 66 20 73 74 72 69 6e 67 20 59 20  nce of string Y 
12f00 69 6e 20 73 74 72 69 6e 67 20 58 2e 20 20 5e 54  in string X.  ^T
12f10 68 65 20 5b 42 49 4e 41 52 59 5d 0a 20 20 63 6f  he [BINARY].  co
12f20 6c 6c 61 74 69 6e 67 20 73 65 71 75 65 6e 63 65  llating sequence
12f30 20 69 73 20 75 73 65 64 20 66 6f 72 20 63 6f 6d   is used for com
12f40 70 61 72 69 73 6f 6e 73 2e 20 20 5e 49 66 20 59  parisons.  ^If Y
12f50 20 69 73 20 61 6e 20 65 6d 70 74 79 0a 20 20 73   is an empty.  s
12f60 74 72 69 6e 67 20 74 68 65 6e 20 72 65 74 75 72  tring then retur
12f70 6e 20 58 20 75 6e 63 68 61 6e 67 65 64 2e 20 20  n X unchanged.  
12f80 5e 49 66 20 5a 20 69 73 20 6e 6f 74 20 69 6e 69  ^If Z is not ini
12f90 74 69 61 6c 6c 79 0a 20 20 61 20 73 74 72 69 6e  tially.  a strin
12fa0 67 2c 20 69 74 20 69 73 20 63 61 73 74 20 74 6f  g, it is cast to
12fb0 20 61 20 55 54 46 2d 38 20 73 74 72 69 6e 67 20   a UTF-8 string 
12fc0 70 72 69 6f 72 20 74 6f 20 70 72 6f 63 65 73 73  prior to process
12fd0 69 6e 67 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20  ing..}..funcdef 
12fe0 7b 72 6f 75 6e 64 28 58 29 20 72 6f 75 6e 64 28  {round(X) round(
12ff0 58 2c 59 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68  X,Y)} {} {.  ^Th
13000 65 20 72 6f 75 6e 64 28 58 2c 59 29 20 66 75 6e  e round(X,Y) fun
13010 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 61 20  ction returns a 
13020 73 74 72 69 6e 67 20 72 65 70 72 65 73 65 6e 74  string represent
13030 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 66 6c 6f  ation of the flo
13040 61 74 69 6e 67 2d 70 6f 69 6e 74 0a 20 20 76 61  ating-point.  va
13050 6c 75 65 20 58 20 72 6f 75 6e 64 65 64 20 74 6f  lue X rounded to
13060 20 59 20 64 69 67 69 74 73 20 74 6f 20 74 68 65   Y digits to the
13070 20 72 69 67 68 74 20 6f 66 20 74 68 65 20 64 65   right of the de
13080 63 69 6d 61 6c 20 70 6f 69 6e 74 2e 0a 20 20 5e  cimal point..  ^
13090 49 66 20 74 68 65 20 59 20 61 72 67 75 6d 65 6e  If the Y argumen
130a0 74 20 69 73 20 6f 6d 69 74 74 65 64 2c 20 74 68  t is omitted, th
130b0 65 20 58 20 76 61 6c 75 65 20 69 73 20 74 72 75  e X value is tru
130c0 6e 63 61 74 65 64 20 74 6f 20 61 6e 20 69 6e 74  ncated to an int
130d0 65 67 65 72 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66  eger..}..funcdef
130e0 20 7b 72 74 72 69 6d 28 58 29 20 72 74 72 69 6d   {rtrim(X) rtrim
130f0 28 58 2c 59 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54  (X,Y)} {} {.  ^T
13100 68 65 20 72 74 72 69 6d 28 58 2c 59 29 20 66 75  he rtrim(X,Y) fu
13110 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 61  nction returns a
13120 20 73 74 72 69 6e 67 20 66 6f 72 6d 65 64 20 62   string formed b
13130 79 20 72 65 6d 6f 76 69 6e 67 20 61 6e 79 20 61  y removing any a
13140 6e 64 20 61 6c 6c 0a 20 20 63 68 61 72 61 63 74  nd all.  charact
13150 65 72 73 20 74 68 61 74 20 61 70 70 65 61 72 20  ers that appear 
13160 69 6e 20 59 20 66 72 6f 6d 20 74 68 65 20 72 69  in Y from the ri
13170 67 68 74 20 73 69 64 65 20 6f 66 20 58 2e 0a 20  ght side of X.. 
13180 20 5e 49 66 20 74 68 65 20 59 20 61 72 67 75 6d   ^If the Y argum
13190 65 6e 74 20 69 73 20 6f 6d 69 74 74 65 64 2c 20  ent is omitted, 
131a0 72 74 72 69 6d 28 58 29 20 72 65 6d 6f 76 65 73  rtrim(X) removes
131b0 20 73 70 61 63 65 73 20 66 72 6f 6d 20 74 68 65   spaces from the
131c0 20 72 69 67 68 74 0a 20 20 73 69 64 65 20 6f 66   right.  side of
131d0 20 58 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b   X..}..funcdef {
131e0 73 6f 75 6e 64 65 78 28 58 29 7d 20 7b 7d 20 7b  soundex(X)} {} {
131f0 0a 20 20 5e 54 68 65 20 73 6f 75 6e 64 65 78 28  .  ^The soundex(
13200 58 29 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75  X) function retu
13210 72 6e 73 20 61 20 73 74 72 69 6e 67 20 74 68 61  rns a string tha
13220 74 20 69 73 20 74 68 65 20 73 6f 75 6e 64 65 78  t is the soundex
13230 20 65 6e 63 6f 64 69 6e 67 20 0a 20 20 6f 66 20   encoding .  of 
13240 74 68 65 20 73 74 72 69 6e 67 20 58 2e 0a 20 20  the string X..  
13250 5e 54 68 65 20 73 74 72 69 6e 67 20 22 3f 30 30  ^The string "?00
13260 30 22 20 69 73 20 72 65 74 75 72 6e 65 64 20 69  0" is returned i
13270 66 20 74 68 65 20 61 72 67 75 6d 65 6e 74 20 69  f the argument i
13280 73 20 4e 55 4c 4c 20 6f 72 20 63 6f 6e 74 61 69  s NULL or contai
13290 6e 73 0a 20 20 6e 6f 20 41 53 43 49 49 20 61 6c  ns.  no ASCII al
132a0 70 68 61 62 65 74 69 63 20 63 68 61 72 61 63 74  phabetic charact
132b0 65 72 73 2e 0a 20 20 5e 28 54 68 69 73 20 66 75  ers..  ^(This fu
132c0 6e 63 74 69 6f 6e 20 69 73 20 6f 6d 69 74 74 65  nction is omitte
132d0 64 20 66 72 6f 6d 20 53 51 4c 69 74 65 20 62 79  d from SQLite by
132e0 20 64 65 66 61 75 6c 74 2e 0a 20 20 49 74 20 69   default..  It i
132f0 73 20 6f 6e 6c 79 20 61 76 61 69 6c 61 62 6c 65  s only available
13300 20 69 66 20 74 68 65 20 5b 53 51 4c 49 54 45 5f   if the [SQLITE_
13310 53 4f 55 4e 44 45 58 5d 20 63 6f 6d 70 69 6c 65  SOUNDEX] compile
13320 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 0a 20 20 69  -time option.  i
13330 73 20 75 73 65 64 20 77 68 65 6e 20 53 51 4c 69  s used when SQLi
13340 74 65 20 69 73 20 62 75 69 6c 74 2e 29 5e 0a 7d  te is built.)^.}
13350 0a 0a 66 75 6e 63 64 65 66 20 7b 73 71 6c 69 74  ..funcdef {sqlit
13360 65 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f  e_compileoption_
13370 67 65 74 28 4e 29 7d 20 7b 7d 20 7b 0a 20 20 5e  get(N)} {} {.  ^
13380 54 68 65 20 73 71 6c 69 74 65 5f 63 6f 6d 70 69  The sqlite_compi
13390 6c 65 6f 70 74 69 6f 6e 5f 67 65 74 28 29 20 53  leoption_get() S
133a0 51 4c 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 61  QL function is a
133b0 20 77 72 61 70 70 65 72 20 61 72 6f 75 6e 64 20   wrapper around 
133c0 74 68 65 0a 20 20 5b 73 71 6c 69 74 65 33 5f 63  the.  [sqlite3_c
133d0 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 67 65 74  ompileoption_get
133e0 28 29 5d 20 43 2f 43 2b 2b 20 66 75 6e 63 74 69  ()] C/C++ functi
133f0 6f 6e 2e 0a 20 20 5e 54 68 69 73 20 72 6f 75 74  on..  ^This rout
13400 69 6e 65 20 72 65 74 75 72 6e 73 20 74 68 65 20  ine returns the 
13410 4e 2d 74 68 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  N-th compile-tim
13420 65 20 6f 70 74 69 6f 6e 20 75 73 65 64 20 74 6f  e option used to
13430 20 62 75 69 6c 64 20 53 51 4c 69 74 65 0a 20 20   build SQLite.  
13440 6f 72 20 4e 55 4c 4c 20 69 66 20 4e 20 69 73 20  or NULL if N is 
13450 6f 75 74 20 6f 66 20 72 61 6e 67 65 2e 20 20 53  out of range.  S
13460 65 65 20 61 6c 73 6f 20 74 68 65 20 5b 63 6f 6d  ee also the [com
13470 70 69 6c 65 5f 6f 70 74 69 6f 6e 73 20 70 72 61  pile_options pra
13480 67 6d 61 5d 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66  gma]..}..funcdef
13490 20 7b 73 71 6c 69 74 65 5f 63 6f 6d 70 69 6c 65   {sqlite_compile
134a0 6f 70 74 69 6f 6e 5f 75 73 65 64 28 58 29 7d 20  option_used(X)} 
134b0 7b 7d 20 7b 0a 20 20 5e 54 68 65 20 73 71 6c 69  {} {.  ^The sqli
134c0 74 65 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e  te_compileoption
134d0 5f 75 73 65 64 28 29 20 53 51 4c 20 66 75 6e 63  _used() SQL func
134e0 74 69 6f 6e 20 69 73 20 61 20 77 72 61 70 70 65  tion is a wrappe
134f0 72 20 61 72 6f 75 6e 64 20 74 68 65 0a 20 20 5b  r around the.  [
13500 73 71 6c 69 74 65 33 5f 63 6f 6d 70 69 6c 65 6f  sqlite3_compileo
13510 70 74 69 6f 6e 5f 75 73 65 64 28 29 5d 20 43 2f  ption_used()] C/
13520 43 2b 2b 20 66 75 6e 63 74 69 6f 6e 2e 0a 20 20  C++ function..  
13530 5e 57 68 65 6e 20 74 68 65 20 61 72 67 75 6d 65  ^When the argume
13540 6e 74 20 58 20 74 6f 20 73 71 6c 69 74 65 5f 63  nt X to sqlite_c
13550 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 75 73 65  ompileoption_use
13560 64 28 58 29 20 69 73 20 61 20 73 74 72 69 6e 67  d(X) is a string
13570 20 77 68 69 63 68 0a 20 20 69 73 20 74 68 65 20   which.  is the 
13580 6e 61 6d 65 20 6f 66 20 61 20 63 6f 6d 70 69 6c  name of a compil
13590 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 2c 20 74  e-time option, t
135a0 68 69 73 20 72 6f 75 74 69 6e 65 20 72 65 74 75  his routine retu
135b0 72 6e 73 20 74 72 75 65 20 28 31 29 20 6f 72 0a  rns true (1) or.
135c0 20 20 66 61 6c 73 65 20 28 30 29 20 64 65 70 65    false (0) depe
135d0 6e 64 69 6e 67 20 6f 6e 20 77 68 65 74 68 65 72  nding on whether
135e0 20 6f 72 20 6e 6f 74 20 74 68 61 74 20 6f 70 74   or not that opt
135f0 69 6f 6e 20 77 61 73 20 75 73 65 64 20 64 75 72  ion was used dur
13600 69 6e 67 20 74 68 65 0a 20 20 62 75 69 6c 64 2e  ing the.  build.
13610 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 73 71 6c  .}..funcdef {sql
13620 69 74 65 5f 73 6f 75 72 63 65 5f 69 64 28 29 7d  ite_source_id()}
13630 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20 73 71 6c   {} {.  ^The sql
13640 69 74 65 5f 73 6f 75 72 63 65 5f 69 64 28 29 20  ite_source_id() 
13650 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73  function returns
13660 20 61 20 73 74 72 69 6e 67 20 74 68 61 74 20 69   a string that i
13670 64 65 6e 74 69 66 69 65 73 20 74 68 65 0a 20 20  dentifies the.  
13680 73 70 65 63 69 66 69 63 20 76 65 72 73 69 6f 6e  specific version
13690 20 6f 66 20 74 68 65 20 73 6f 75 72 63 65 20 63   of the source c
136a0 6f 64 65 20 74 68 61 74 20 77 61 73 20 75 73 65  ode that was use
136b0 64 20 74 6f 20 62 75 69 6c 64 20 74 68 65 20 53  d to build the S
136c0 51 4c 69 74 65 0a 20 20 6c 69 62 72 61 72 79 2e  QLite.  library.
136d0 20 20 5e 54 68 65 20 73 74 72 69 6e 67 20 72 65    ^The string re
136e0 74 75 72 6e 65 64 20 62 79 20 73 71 6c 69 74 65  turned by sqlite
136f0 5f 73 6f 75 72 63 65 5f 69 64 28 29 20 62 65 67  _source_id() beg
13700 69 6e 73 20 77 69 74 68 0a 20 20 74 68 65 20 64  ins with.  the d
13710 61 74 65 20 61 6e 64 20 74 69 6d 65 20 74 68 61  ate and time tha
13720 74 20 74 68 65 20 73 6f 75 72 63 65 20 63 6f 64  t the source cod
13730 65 20 77 61 73 20 63 68 65 63 6b 65 64 20 69 6e  e was checked in
13740 20 61 6e 64 20 69 73 20 66 6f 6c 6c 6f 77 73 20   and is follows 
13750 62 79 0a 20 20 61 6e 20 53 48 41 31 20 68 61 73  by.  an SHA1 has
13760 68 20 74 68 61 74 20 75 6e 69 71 75 65 6c 79 20  h that uniquely 
13770 69 64 65 6e 74 69 66 69 65 73 20 74 68 65 20 73  identifies the s
13780 6f 75 72 63 65 20 74 72 65 65 2e 20 20 5e 54 68  ource tree.  ^Th
13790 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 0a 20  is function is. 
137a0 20 61 6e 20 53 51 4c 20 77 72 61 70 70 65 72 20   an SQL wrapper 
137b0 61 72 6f 75 6e 64 20 74 68 65 20 5b 73 71 6c 69  around the [sqli
137c0 74 65 33 5f 73 6f 75 72 63 65 69 64 28 29 5d 20  te3_sourceid()] 
137d0 43 20 69 6e 74 65 72 66 61 63 65 2e 0a 7d 0a 0a  C interface..}..
137e0 66 75 6e 63 64 65 66 20 7b 73 71 6c 69 74 65 5f  funcdef {sqlite_
137f0 76 65 72 73 69 6f 6e 28 29 7d 20 7b 7d 20 7b 0a  version()} {} {.
13800 20 20 5e 54 68 65 20 73 71 6c 69 74 65 5f 76 65    ^The sqlite_ve
13810 72 73 69 6f 6e 28 29 20 66 75 6e 63 74 69 6f 6e  rsion() function
13820 20 72 65 74 75 72 6e 73 20 74 68 65 20 76 65 72   returns the ver
13830 73 69 6f 6e 20 73 74 72 69 6e 67 20 66 6f 72 20  sion string for 
13840 74 68 65 20 53 51 4c 69 74 65 0a 20 20 6c 69 62  the SQLite.  lib
13850 72 61 72 79 20 74 68 61 74 20 69 73 20 72 75 6e  rary that is run
13860 6e 69 6e 67 2e 20 20 5e 54 68 69 73 20 66 75 6e  ning.  ^This fun
13870 63 74 69 6f 6e 20 69 73 20 61 6e 20 53 51 4c 0a  ction is an SQL.
13880 20 20 77 72 61 70 70 65 72 20 61 72 6f 75 6e 64    wrapper around
13890 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 6c 69   the [sqlite3_li
138a0 62 76 65 72 73 69 6f 6e 28 29 5d 20 43 2d 69 6e  bversion()] C-in
138b0 74 65 72 66 61 63 65 2e 0a 7d 0a 0a 66 75 6e 63  terface..}..func
138c0 64 65 66 20 7b 73 75 62 73 74 72 28 58 2c 59 2c  def {substr(X,Y,
138d0 5a 29 20 73 75 62 73 74 72 28 58 2c 59 29 7d 20  Z) substr(X,Y)} 
138e0 7b 7d 20 7b 0a 20 20 5e 54 68 65 20 73 75 62 73  {} {.  ^The subs
138f0 74 72 28 58 2c 59 2c 5a 29 20 66 75 6e 63 74 69  tr(X,Y,Z) functi
13900 6f 6e 20 72 65 74 75 72 6e 73 20 61 20 73 75 62  on returns a sub
13910 73 74 72 69 6e 67 20 6f 66 20 69 6e 70 75 74 20  string of input 
13920 73 74 72 69 6e 67 20 58 20 74 68 61 74 20 62 65  string X that be
13930 67 69 6e 73 0a 20 20 77 69 74 68 20 74 68 65 20  gins.  with the 
13940 59 2d 74 68 20 63 68 61 72 61 63 74 65 72 20 61  Y-th character a
13950 6e 64 20 77 68 69 63 68 20 69 73 20 5a 20 63 68  nd which is Z ch
13960 61 72 61 63 74 65 72 73 20 6c 6f 6e 67 2e 0a 20  aracters long.. 
13970 20 5e 49 66 20 5a 20 69 73 20 6f 6d 69 74 74 65   ^If Z is omitte
13980 64 20 74 68 65 6e 20 73 75 62 73 74 72 28 58 2c  d then substr(X,
13990 59 29 20 72 65 74 75 72 6e 73 20 61 6c 6c 20 63  Y) returns all c
139a0 68 61 72 61 63 74 65 72 73 20 74 68 72 6f 75 67  haracters throug
139b0 68 20 74 68 65 20 65 6e 64 0a 20 20 6f 66 20 74  h the end.  of t
139c0 68 65 20 73 74 72 69 6e 67 20 58 20 62 65 67 69  he string X begi
139d0 6e 6e 69 6e 67 20 77 69 74 68 20 74 68 65 20 59  nning with the Y
139e0 2d 74 68 2e 0a 20 20 5e 54 68 65 20 6c 65 66 74  -th..  ^The left
139f0 2d 6d 6f 73 74 20 63 68 61 72 61 63 74 65 72 20  -most character 
13a00 6f 66 20 58 20 69 73 20 6e 75 6d 62 65 72 20 31  of X is number 1
13a10 2e 20 20 5e 49 66 20 59 20 69 73 20 6e 65 67 61  .  ^If Y is nega
13a20 74 69 76 65 0a 20 20 74 68 65 6e 20 74 68 65 20  tive.  then the 
13a30 66 69 72 73 74 20 63 68 61 72 61 63 74 65 72 20  first character 
13a40 6f 66 20 74 68 65 20 73 75 62 73 74 72 69 6e 67  of the substring
13a50 20 69 73 20 66 6f 75 6e 64 20 62 79 20 63 6f 75   is found by cou
13a60 6e 74 69 6e 67 20 66 72 6f 6d 20 74 68 65 0a 20  nting from the. 
13a70 20 72 69 67 68 74 20 72 61 74 68 65 72 20 74 68   right rather th
13a80 61 6e 20 74 68 65 20 6c 65 66 74 2e 20 20 5e 49  an the left.  ^I
13a90 66 20 5a 20 69 73 20 6e 65 67 61 74 69 76 65 20  f Z is negative 
13aa0 74 68 65 6e 0a 20 20 74 68 65 20 61 62 73 28 5a  then.  the abs(Z
13ab0 29 20 63 68 61 72 61 63 74 65 72 73 20 70 72 65  ) characters pre
13ac0 63 65 65 64 69 6e 67 20 74 68 65 20 59 2d 74 68  ceeding the Y-th
13ad0 20 63 68 61 72 61 63 74 65 72 20 61 72 65 20 72   character are r
13ae0 65 74 75 72 6e 65 64 2e 0a 20 20 5e 49 66 20 58  eturned..  ^If X
13af0 20 69 73 20 61 20 73 74 72 69 6e 67 20 74 68 65   is a string the
13b00 6e 20 63 68 61 72 61 63 74 65 72 73 20 69 6e 64  n characters ind
13b10 69 63 65 73 20 72 65 66 65 72 20 74 6f 20 61 63  ices refer to ac
13b20 74 75 61 6c 20 55 54 46 2d 38 20 0a 20 20 63 68  tual UTF-8 .  ch
13b30 61 72 61 63 74 65 72 73 2e 20 20 5e 49 66 20 58  aracters.  ^If X
13b40 20 69 73 20 61 20 42 4c 4f 42 20 74 68 65 6e 20   is a BLOB then 
13b50 74 68 65 20 69 6e 64 69 63 65 73 20 72 65 66 65  the indices refe
13b60 72 20 74 6f 20 62 79 74 65 73 2e 0a 7d 0a 0a 66  r to bytes..}..f
13b70 75 6e 63 64 65 66 20 7b 74 6f 74 61 6c 5f 63 68  uncdef {total_ch
13b80 61 6e 67 65 73 28 29 7d 20 7b 7d 20 7b 0a 20 20  anges()} {} {.  
13b90 5e 54 68 65 20 74 6f 74 61 6c 5f 63 68 61 6e 67  ^The total_chang
13ba0 65 73 28 29 20 66 75 6e 63 74 69 6f 6e 20 72 65  es() function re
13bb0 74 75 72 6e 73 20 74 68 65 20 6e 75 6d 62 65 72  turns the number
13bc0 20 6f 66 20 72 6f 77 20 63 68 61 6e 67 65 73 0a   of row changes.
13bd0 20 20 63 61 75 73 65 64 20 62 79 20 49 4e 53 45    caused by INSE
13be0 52 54 2c 20 55 50 44 41 54 45 20 6f 72 20 44 45  RT, UPDATE or DE
13bf0 4c 45 54 45 0a 20 20 73 74 61 74 65 6d 65 6e 74  LETE.  statement
13c00 73 20 73 69 6e 63 65 20 74 68 65 20 63 75 72 72  s since the curr
13c10 65 6e 74 20 64 61 74 61 62 61 73 65 20 63 6f 6e  ent database con
13c20 6e 65 63 74 69 6f 6e 20 77 61 73 20 6f 70 65 6e  nection was open
13c30 65 64 2e 0a 20 20 5e 54 68 69 73 20 66 75 6e 63  ed..  ^This func
13c40 74 69 6f 6e 20 69 73 20 61 20 77 72 61 70 70 65  tion is a wrappe
13c50 72 20 61 72 6f 75 6e 64 20 74 68 65 20 5b 73 71  r around the [sq
13c60 6c 69 74 65 33 5f 74 6f 74 61 6c 5f 63 68 61 6e  lite3_total_chan
13c70 67 65 73 28 29 5d 0a 20 20 43 2f 43 2b 2b 20 69  ges()].  C/C++ i
13c80 6e 74 65 72 66 61 63 65 2e 0a 7d 0a 0a 66 75 6e  nterface..}..fun
13c90 63 64 65 66 20 7b 74 72 69 6d 28 58 29 20 74 72  cdef {trim(X) tr
13ca0 69 6d 28 58 2c 59 29 7d 20 7b 7d 20 7b 0a 20 20  im(X,Y)} {} {.  
13cb0 5e 54 68 65 20 74 72 69 6d 28 58 2c 59 29 20 66  ^The trim(X,Y) f
13cc0 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20  unction returns 
13cd0 61 20 73 74 72 69 6e 67 20 66 6f 72 6d 65 64 20  a string formed 
13ce0 62 79 20 72 65 6d 6f 76 69 6e 67 20 61 6e 79 20  by removing any 
13cf0 61 6e 64 20 61 6c 6c 0a 20 20 63 68 61 72 61 63  and all.  charac
13d00 74 65 72 73 20 74 68 61 74 20 61 70 70 65 61 72  ters that appear
13d10 20 69 6e 20 59 20 66 72 6f 6d 20 62 6f 74 68 20   in Y from both 
13d20 65 6e 64 73 20 6f 66 20 58 2e 0a 20 20 5e 49 66  ends of X..  ^If
13d30 20 74 68 65 20 59 20 61 72 67 75 6d 65 6e 74 20   the Y argument 
13d40 69 73 20 6f 6d 69 74 74 65 64 2c 20 74 72 69 6d  is omitted, trim
13d50 28 58 29 20 72 65 6d 6f 76 65 73 20 73 70 61 63  (X) removes spac
13d60 65 73 20 66 72 6f 6d 20 62 6f 74 68 20 65 6e 64  es from both end
13d70 73 20 6f 66 20 58 2e 0a 7d 0a 0a 66 75 6e 63 64  s of X..}..funcd
13d80 65 66 20 7b 74 79 70 65 6f 66 28 58 29 7d 20 7b  ef {typeof(X)} {
13d90 7d 20 7b 0a 20 20 5e 54 68 65 20 74 79 70 65 6f  } {.  ^The typeo
13da0 66 28 58 29 20 66 75 6e 63 74 69 6f 6e 20 72 65  f(X) function re
13db0 74 75 72 6e 73 20 61 20 73 74 72 69 6e 67 20 74  turns a string t
13dc0 68 61 74 20 69 6e 64 69 63 61 74 65 73 20 74 68  hat indicates th
13dd0 65 20 5b 64 61 74 61 74 79 70 65 5d 20 6f 66 0a  e [datatype] of.
13de0 20 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e    the expression
13df0 20 58 3a 20 22 6e 75 6c 6c 22 2c 20 22 69 6e 74   X: "null", "int
13e00 65 67 65 72 22 2c 20 22 72 65 61 6c 22 2c 20 22  eger", "real", "
13e10 74 65 78 74 22 2c 20 6f 72 20 22 62 6c 6f 62 22  text", or "blob"
13e20 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 75 70  ..}..funcdef {up
13e30 70 65 72 28 58 29 7d 20 7b 7d 20 7b 0a 20 20 5e  per(X)} {} {.  ^
13e40 54 68 65 20 75 70 70 65 72 28 58 29 20 66 75 6e  The upper(X) fun
13e50 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 61 20  ction returns a 
13e60 63 6f 70 79 20 6f 66 20 69 6e 70 75 74 20 73 74  copy of input st
13e70 72 69 6e 67 20 58 20 69 6e 20 77 68 69 63 68 20  ring X in which 
13e80 61 6c 6c 20 0a 20 20 6c 6f 77 65 72 2d 63 61 73  all .  lower-cas
13e90 65 20 41 53 43 49 49 20 63 68 61 72 61 63 74 65  e ASCII characte
13ea0 72 73 20 61 72 65 20 63 6f 6e 76 65 72 74 65 64  rs are converted
13eb0 20 74 6f 20 74 68 65 69 72 20 75 70 70 65 72 2d   to their upper-
13ec0 63 61 73 65 20 65 71 75 69 76 61 6c 65 6e 74 2e  case equivalent.
13ed0 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 7a 65 72  .}..funcdef {zer
13ee0 6f 62 6c 6f 62 28 4e 29 7d 20 7b 7d 20 7b 0a 20  oblob(N)} {} {. 
13ef0 20 5e 54 68 65 20 7a 65 72 6f 62 6c 6f 62 28 4e   ^The zeroblob(N
13f00 29 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72  ) function retur
13f10 6e 73 20 61 20 42 4c 4f 42 20 63 6f 6e 73 69 73  ns a BLOB consis
13f20 74 69 6e 67 20 6f 66 20 4e 20 62 79 74 65 73 20  ting of N bytes 
13f30 6f 66 20 30 78 30 30 2e 0a 20 20 53 51 4c 69 74  of 0x00..  SQLit
13f40 65 20 6d 61 6e 61 67 65 73 20 74 68 65 73 65 20  e manages these 
13f50 7a 65 72 6f 62 6c 6f 62 73 20 76 65 72 79 20 65  zeroblobs very e
13f60 66 66 69 63 69 65 6e 74 6c 79 2e 20 20 5a 65 72  fficiently.  Zer
13f70 6f 62 6c 6f 62 73 20 63 61 6e 20 62 65 20 75 73  oblobs can be us
13f80 65 64 20 74 6f 0a 20 20 72 65 73 65 72 76 65 20  ed to.  reserve 
13f90 73 70 61 63 65 20 66 6f 72 20 61 20 42 4c 4f 42  space for a BLOB
13fa0 20 74 68 61 74 20 69 73 20 6c 61 74 65 72 20 77   that is later w
13fb0 72 69 74 74 65 6e 20 75 73 69 6e 67 20 0a 20 20  ritten using .  
13fc0 5b 73 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 6f 70  [sqlite3_blob_op
13fd0 65 6e 28 29 20 7c 20 69 6e 63 72 65 6d 65 6e 74  en() | increment
13fe0 61 6c 20 42 4c 4f 42 20 49 2f 4f 5d 2e 0a 20 20  al BLOB I/O]..  
13ff0 5e 54 68 69 73 20 53 51 4c 20 66 75 6e 63 74 69  ^This SQL functi
14000 6f 6e 20 69 73 20 69 6d 70 6c 65 6d 65 6e 74 65  on is implemente
14010 64 20 75 73 69 6e 67 20 74 68 65 20 5b 73 71 6c  d using the [sql
14020 69 74 65 33 5f 72 65 73 75 6c 74 5f 7a 65 72 6f  ite3_result_zero
14030 62 6c 6f 62 28 29 5d 0a 20 20 72 6f 75 74 69 6e  blob()].  routin
14040 65 20 66 72 6f 6d 20 74 68 65 20 43 2f 43 2b 2b  e from the C/C++
14050 20 69 6e 74 65 72 66 61 63 65 2e 0a 7d 0a 3c 2f   interface..}.</
14060 74 63 6c 3e 0a 3c 2f 74 61 62 6c 65 3e 0a 0a 3c  tcl>.</table>..<
14070 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23  tcl>.###########
14080 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14090 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
140a0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
140b0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
140c0 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b 44 61 74  ###.Section {Dat
140d0 65 20 41 6e 64 20 54 69 6d 65 20 46 75 6e 63 74  e And Time Funct
140e0 69 6f 6e 73 7d 20 64 61 74 65 66 75 6e 63 20 7b  ions} datefunc {
140f0 2a 64 61 74 65 66 75 6e 63 7d 0a 68 64 5f 6b 65  *datefunc}.hd_ke
14100 79 77 6f 72 64 73 20 7b 64 61 74 65 28 29 20 53  ywords {date() S
14110 51 4c 20 66 75 6e 63 74 69 6f 6e 7d 20 7b 74 69  QL function} {ti
14120 6d 65 28 29 20 53 51 4c 20 66 75 6e 63 74 69 6f  me() SQL functio
14130 6e 7d 0a 68 64 5f 6b 65 79 77 6f 72 64 73 20 7b  n}.hd_keywords {
14140 64 61 74 65 74 69 6d 65 28 29 20 53 51 4c 20 66  datetime() SQL f
14150 75 6e 63 74 69 6f 6e 7d 20 7b 6a 75 6c 69 61 6e  unction} {julian
14160 64 61 79 28 29 20 53 51 4c 20 66 75 6e 63 74 69  day() SQL functi
14170 6f 6e 7d 0a 68 64 5f 6b 65 79 77 6f 72 64 73 20  on}.hd_keywords 
14180 7b 73 74 72 66 74 69 6d 65 28 29 20 53 51 4c 20  {strftime() SQL 
14190 66 75 6e 63 74 69 6f 6e 7d 0a 3c 2f 74 63 6c 3e  function}.</tcl>
141a0 0a 0a 3c 70 3e 0a 53 51 4c 69 74 65 20 73 75 70  ..<p>.SQLite sup
141b0 70 6f 72 74 73 20 66 69 76 65 20 64 61 74 65 20  ports five date 
141c0 61 6e 64 20 74 69 6d 65 20 66 75 6e 63 74 69 6f  and time functio
141d0 6e 73 20 61 73 20 66 6f 6c 6c 6f 77 73 3a 0a 3c  ns as follows:.<
141e0 2f 70 3e 0a 0a 3c 70 3e 0a 3c 6f 6c 3e 0a 3c 6c  /p>..<p>.<ol>.<l
141f0 69 3e 20 5e 28 3c 62 3e 64 61 74 65 28 3c 2f 62  i> ^(<b>date(</b
14200 3e 3c 69 3e 74 69 6d 65 73 74 72 69 6e 67 2c 20  ><i>timestring, 
14210 6d 6f 64 69 66 69 65 72 2c 20 6d 6f 64 69 66 69  modifier, modifi
14220 65 72 2c 20 2e 2e 2e 3c 2f 69 3e 3c 62 3e 29 3c  er, ...</i><b>)<
14230 2f 62 3e 29 5e 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e  /b>)^ </li>.<li>
14240 20 5e 28 3c 62 3e 74 69 6d 65 28 3c 2f 62 3e 3c   ^(<b>time(</b><
14250 69 3e 74 69 6d 65 73 74 72 69 6e 67 2c 20 6d 6f  i>timestring, mo
14260 64 69 66 69 65 72 2c 20 6d 6f 64 69 66 69 65 72  difier, modifier
14270 2c 20 2e 2e 2e 3c 2f 69 3e 3c 62 3e 29 3c 2f 62  , ...</i><b>)</b
14280 3e 29 5e 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5e  >)^ </li>.<li> ^
14290 28 3c 62 3e 64 61 74 65 74 69 6d 65 28 3c 2f 62  (<b>datetime(</b
142a0 3e 3c 69 3e 74 69 6d 65 73 74 72 69 6e 67 2c 20  ><i>timestring, 
142b0 6d 6f 64 69 66 69 65 72 2c 20 6d 6f 64 69 66 69  modifier, modifi
142c0 65 72 2c 20 2e 2e 2e 3c 2f 69 3e 3c 62 3e 29 3c  er, ...</i><b>)<
142d0 2f 62 3e 29 5e 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e  /b>)^ </li>.<li>
142e0 20 5e 28 3c 62 3e 6a 75 6c 69 61 6e 64 61 79 28   ^(<b>julianday(
142f0 3c 2f 62 3e 3c 69 3e 74 69 6d 65 73 74 72 69 6e  </b><i>timestrin
14300 67 2c 20 6d 6f 64 69 66 69 65 72 2c 20 6d 6f 64  g, modifier, mod
14310 69 66 69 65 72 2c 20 2e 2e 2e 3c 2f 69 3e 3c 62  ifier, ...</i><b
14320 3e 29 3c 2f 62 3e 29 5e 20 3c 2f 6c 69 3e 0a 3c  >)</b>)^ </li>.<
14330 6c 69 3e 20 5e 28 3c 62 3e 73 74 72 66 74 69 6d  li> ^(<b>strftim
14340 65 28 3c 2f 62 3e 3c 69 3e 66 6f 72 6d 61 74 2c  e(</b><i>format,
14350 20 74 69 6d 65 73 74 72 69 6e 67 2c 20 6d 6f 64   timestring, mod
14360 69 66 69 65 72 2c 20 6d 6f 64 69 66 69 65 72 2c  ifier, modifier,
14370 20 2e 2e 2e 3c 2f 69 3e 3c 62 3e 29 3c 2f 62 3e   ...</i><b>)</b>
14380 29 5e 20 3c 2f 6c 69 3e 0a 3c 2f 6f 6c 3e 0a 0a  )^ </li>.</ol>..
14390 3c 70 3e 0a 5e 41 6c 6c 20 66 69 76 65 20 64 61  <p>.^All five da
143a0 74 65 20 61 6e 64 20 74 69 6d 65 20 66 75 6e 63  te and time func
143b0 74 69 6f 6e 73 20 74 61 6b 65 20 61 20 74 69 6d  tions take a tim
143c0 65 20 73 74 72 69 6e 67 20 61 73 20 61 6e 20 61  e string as an a
143d0 72 67 75 6d 65 6e 74 2e 20 0a 5e 54 68 65 20 74  rgument. .^The t
143e0 69 6d 65 20 73 74 72 69 6e 67 20 69 73 20 66 6f  ime string is fo
143f0 6c 6c 6f 77 65 64 20 62 79 20 7a 65 72 6f 20 6f  llowed by zero o
14400 72 20 6d 6f 72 65 20 6d 6f 64 69 66 69 65 72 73  r more modifiers
14410 2e 20 0a 5e 54 68 65 20 73 74 72 66 74 69 6d 65  . .^The strftime
14420 28 29 20 66 75 6e 63 74 69 6f 6e 20 61 6c 73 6f  () function also
14430 20 74 61 6b 65 73 20 61 20 66 6f 72 6d 61 74 20   takes a format 
14440 73 74 72 69 6e 67 20 61 73 20 69 74 73 20 66 69  string as its fi
14450 72 73 74 20 61 72 67 75 6d 65 6e 74 2e 0a 3c 2f  rst argument..</
14460 70 3e 0a 0a 3c 70 3e 0a 54 68 65 20 64 61 74 65  p>..<p>.The date
14470 20 61 6e 64 20 74 69 6d 65 20 66 75 6e 63 74 69   and time functi
14480 6f 6e 73 20 75 73 65 20 61 20 73 75 62 73 65 74  ons use a subset
14490 20 6f 66 0a 5b 68 74 74 70 3a 2f 2f 65 6e 2e 77   of.[http://en.w
144a0 69 6b 69 70 65 64 69 61 2e 6f 72 67 2f 77 69 6b  ikipedia.org/wik
144b0 69 2f 49 53 4f 5f 38 36 30 31 20 7c 20 49 53 30  i/ISO_8601 | IS0
144c0 2d 38 36 30 31 5d 20 64 61 74 65 20 61 6e 64 20  -8601] date and 
144d0 74 69 6d 65 0a 66 6f 72 6d 61 74 73 2e 0a 5e 54  time.formats..^T
144e0 68 65 20 64 61 74 65 28 29 20 66 75 6e 63 74 69  he date() functi
144f0 6f 6e 20 72 65 74 75 72 6e 73 20 74 68 65 20 64  on returns the d
14500 61 74 65 20 69 6e 20 74 68 69 73 20 66 6f 72 6d  ate in this form
14510 61 74 3a 20 59 59 59 59 2d 4d 4d 2d 44 44 2e 20  at: YYYY-MM-DD. 
14520 0a 5e 54 68 65 20 74 69 6d 65 28 29 20 66 75 6e  .^The time() fun
14530 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 74 68  ction returns th
14540 65 20 74 69 6d 65 20 61 73 20 48 48 3a 4d 4d 3a  e time as HH:MM:
14550 53 53 2e 20 0a 5e 54 68 65 20 64 61 74 65 74 69  SS. .^The dateti
14560 6d 65 28 29 20 66 75 6e 63 74 69 6f 6e 20 72 65  me() function re
14570 74 75 72 6e 73 20 22 59 59 59 59 2d 4d 4d 2d 44  turns "YYYY-MM-D
14580 44 20 48 48 3a 4d 4d 3a 53 53 22 2e 20 0a 5e 28  D HH:MM:SS". .^(
14590 54 68 65 20 6a 75 6c 69 61 6e 64 61 79 28 29 20  The julianday() 
145a0 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73  function returns
145b0 20 74 68 65 20 0a 5b 68 74 74 70 3a 2f 2f 65 6e   the .[http://en
145c0 2e 77 69 6b 69 70 65 64 69 61 2e 6f 72 67 2f 77  .wikipedia.org/w
145d0 69 6b 69 2f 4a 75 6c 69 61 6e 5f 64 61 79 20 7c  iki/Julian_day |
145e0 20 4a 75 6c 69 61 6e 20 64 61 79 5d 20 2d 20 74   Julian day] - t
145f0 68 65 0a 6e 75 6d 62 65 72 20 6f 66 20 64 61 79  he.number of day
14600 73 20 73 69 6e 63 65 20 6e 6f 6f 6e 20 69 6e 20  s since noon in 
14610 47 72 65 65 6e 77 69 63 68 20 6f 6e 20 4e 6f 76  Greenwich on Nov
14620 65 6d 62 65 72 20 32 34 2c 20 34 37 31 34 20 42  ember 24, 4714 B
14630 2e 43 2e 20 0a 28 5b 68 74 74 70 3a 2f 2f 65 6e  .C. .([http://en
14640 2e 77 69 6b 69 70 65 64 69 61 2e 6f 72 67 2f 77  .wikipedia.org/w
14650 69 6b 69 2f 50 72 6f 6c 65 70 74 69 63 5f 47 72  iki/Proleptic_Gr
14660 65 67 6f 72 69 61 6e 5f 63 61 6c 65 6e 64 61 72  egorian_calendar
14670 20 7c 20 50 72 6f 6c 65 70 74 69 63 20 47 72 65   | Proleptic Gre
14680 67 6f 72 69 61 6e 20 63 61 6c 65 6e 64 61 72 5d  gorian calendar]
14690 29 2e 29 5e 0a 5e 54 68 65 20 73 74 72 66 74 69  ).)^.^The strfti
146a0 6d 65 28 29 20 72 6f 75 74 69 6e 65 20 72 65 74  me() routine ret
146b0 75 72 6e 73 20 74 68 65 20 64 61 74 65 20 66 6f  urns the date fo
146c0 72 6d 61 74 74 65 64 20 61 63 63 6f 72 64 69 6e  rmatted accordin
146d0 67 20 74 6f 20 0a 74 68 65 20 66 6f 72 6d 61 74  g to .the format
146e0 20 73 74 72 69 6e 67 20 73 70 65 63 69 66 69 65   string specifie
146f0 64 20 61 73 20 74 68 65 20 66 69 72 73 74 20 61  d as the first a
14700 72 67 75 6d 65 6e 74 2e 0a 5e 54 68 65 20 66 6f  rgument..^The fo
14710 72 6d 61 74 20 73 74 72 69 6e 67 20 73 75 70 70  rmat string supp
14720 6f 72 74 73 20 74 68 65 20 6d 6f 73 74 20 63 6f  orts the most co
14730 6d 6d 6f 6e 20 73 75 62 73 74 69 74 75 74 69 6f  mmon substitutio
14740 6e 73 20 66 6f 75 6e 64 20 69 6e 20 74 68 65 20  ns found in the 
14750 0a 5b 68 74 74 70 3a 2f 2f 6f 70 65 6e 67 72 6f  .[http://opengro
14760 75 70 2e 6f 72 67 2f 6f 6e 6c 69 6e 65 70 75 62  up.org/onlinepub
14770 73 2f 30 30 37 39 30 38 37 39 39 2f 78 73 68 2f  s/007908799/xsh/
14780 73 74 72 66 74 69 6d 65 2e 68 74 6d 6c 20 7c 20  strftime.html | 
14790 73 74 72 66 74 69 6d 65 28 29 20 66 75 6e 63 74  strftime() funct
147a0 69 6f 6e 5d 0a 66 72 6f 6d 20 74 68 65 20 73 74  ion].from the st
147b0 61 6e 64 61 72 64 20 43 20 6c 69 62 72 61 72 79  andard C library
147c0 20 70 6c 75 73 20 74 77 6f 20 6e 65 77 20 73 75   plus two new su
147d0 62 73 74 69 74 75 74 69 6f 6e 73 2c 20 25 66 20  bstitutions, %f 
147e0 61 6e 64 20 25 4a 2e 0a 5e 28 54 68 65 20 66 6f  and %J..^(The fo
147f0 6c 6c 6f 77 69 6e 67 20 69 73 20 61 20 63 6f 6d  llowing is a com
14800 70 6c 65 74 65 20 6c 69 73 74 20 6f 66 20 76 61  plete list of va
14810 6c 69 64 20 73 74 72 66 74 69 6d 65 28 29 20 73  lid strftime() s
14820 75 62 73 74 69 74 75 74 69 6f 6e 73 3a 0a 3c 2f  ubstitutions:.</
14830 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e  p>..<blockquote>
14840 0a 3c 74 61 62 6c 65 20 62 6f 72 64 65 72 3d 22  .<table border="
14850 30 22 20 63 65 6c 6c 70 61 64 64 69 6e 67 3d 22  0" cellpadding="
14860 30 22 20 63 65 6c 6c 73 70 61 63 69 6e 67 3d 22  0" cellspacing="
14870 30 22 3e 0a 3c 74 72 3e 3c 74 64 3e 3c 74 64 20  0">.<tr><td><td 
14880 77 69 64 74 68 3d 22 31 30 22 3e 3c 74 64 3e 3c  width="10"><td><
14890 2f 74 72 3e 0a 0a 3c 74 72 3e 3c 74 64 3e 20 25  /tr>..<tr><td> %
148a0 64 20 3c 74 64 3e 3c 74 64 3e 20 64 61 79 20 6f  d <td><td> day o
148b0 66 20 6d 6f 6e 74 68 3a 20 30 30 0a 3c 74 72 3e  f month: 00.<tr>
148c0 3c 74 64 3e 20 25 66 20 3c 74 64 3e 3c 74 64 3e  <td> %f <td><td>
148d0 20 66 72 61 63 74 69 6f 6e 61 6c 20 73 65 63 6f   fractional seco
148e0 6e 64 73 3a 20 53 53 2e 53 53 53 0a 3c 74 72 3e  nds: SS.SSS.<tr>
148f0 3c 74 64 3e 20 25 48 20 3c 74 64 3e 3c 74 64 3e  <td> %H <td><td>
14900 20 68 6f 75 72 3a 20 30 30 2d 32 34 20 0a 3c 74   hour: 00-24 .<t
14910 72 3e 3c 74 64 3e 20 25 6a 20 3c 74 64 3e 3c 74  r><td> %j <td><t
14920 64 3e 20 64 61 79 20 6f 66 20 79 65 61 72 3a 20  d> day of year: 
14930 30 30 31 2d 33 36 36 0a 3c 74 72 3e 3c 74 64 3e  001-366.<tr><td>
14940 20 25 4a 20 3c 74 64 3e 3c 74 64 3e 20 4a 75 6c   %J <td><td> Jul
14950 69 61 6e 20 64 61 79 20 6e 75 6d 62 65 72 0a 3c  ian day number.<
14960 74 72 3e 3c 74 64 3e 20 25 6d 20 3c 74 64 3e 3c  tr><td> %m <td><
14970 74 64 3e 20 6d 6f 6e 74 68 3a 20 30 31 2d 31 32  td> month: 01-12
14980 0a 3c 74 72 3e 3c 74 64 3e 20 25 4d 20 3c 74 64  .<tr><td> %M <td
14990 3e 3c 74 64 3e 20 6d 69 6e 75 74 65 3a 20 30 30  ><td> minute: 00
149a0 2d 35 39 0a 3c 74 72 3e 3c 74 64 3e 20 25 73 20  -59.<tr><td> %s 
149b0 3c 74 64 3e 3c 74 64 3e 20 73 65 63 6f 6e 64 73  <td><td> seconds
149c0 20 73 69 6e 63 65 20 31 39 37 30 2d 30 31 2d 30   since 1970-01-0
149d0 31 0a 3c 74 72 3e 3c 74 64 3e 20 25 53 20 3c 74  1.<tr><td> %S <t
149e0 64 3e 3c 74 64 3e 20 73 65 63 6f 6e 64 73 3a 20  d><td> seconds: 
149f0 30 30 2d 35 39 0a 3c 74 72 3e 3c 74 64 3e 20 25  00-59.<tr><td> %
14a00 77 20 3c 74 64 3e 3c 74 64 3e 20 64 61 79 20 6f  w <td><td> day o
14a10 66 20 77 65 65 6b 20 30 2d 36 20 77 69 74 68 20  f week 0-6 with 
14a20 73 75 6e 64 61 79 3d 3d 30 0a 3c 74 72 3e 3c 74  sunday==0.<tr><t
14a30 64 3e 20 25 57 20 3c 74 64 3e 3c 74 64 3e 20 77  d> %W <td><td> w
14a40 65 65 6b 20 6f 66 20 79 65 61 72 3a 20 30 30 2d  eek of year: 00-
14a50 35 33 0a 3c 74 72 3e 3c 74 64 3e 20 25 59 20 3c  53.<tr><td> %Y <
14a60 74 64 3e 3c 74 64 3e 20 79 65 61 72 3a 20 30 30  td><td> year: 00
14a70 30 30 2d 39 39 39 39 0a 3c 74 72 3e 3c 74 64 3e  00-9999.<tr><td>
14a80 20 25 25 20 3c 74 64 3e 3c 74 64 3e 20 25 0a 3c   %% <td><td> %.<
14a90 2f 74 61 62 6c 65 3e 0a 3c 2f 62 6c 6f 63 6b 71  /table>.</blockq
14aa0 75 6f 74 65 3e 29 5e 0a 0a 3c 70 3e 0a 5e 28 4e  uote>)^..<p>.^(N
14ab0 6f 74 69 63 65 20 74 68 61 74 20 61 6c 6c 20 6f  otice that all o
14ac0 74 68 65 72 20 64 61 74 65 20 61 6e 64 20 74 69  ther date and ti
14ad0 6d 65 20 66 75 6e 63 74 69 6f 6e 73 20 63 61 6e  me functions can
14ae0 20 62 65 20 65 78 70 72 65 73 73 65 64 0a 69 6e   be expressed.in
14af0 20 74 65 72 6d 73 20 6f 66 20 73 74 72 66 74 69   terms of strfti
14b00 6d 65 28 29 3a 0a 3c 2f 70 3e 0a 0a 3c 62 6c 6f  me():.</p>..<blo
14b10 63 6b 71 75 6f 74 65 3e 0a 3c 74 61 62 6c 65 20  ckquote>.<table 
14b20 62 6f 72 64 65 72 3d 22 30 22 20 63 65 6c 6c 70  border="0" cellp
14b30 61 64 64 69 6e 67 3d 22 30 22 20 63 65 6c 6c 73  adding="0" cells
14b40 70 61 63 69 6e 67 3d 22 30 22 3e 0a 3c 74 72 3e  pacing="0">.<tr>
14b50 3c 74 64 3e 3c 62 3e 46 75 6e 63 74 69 6f 6e 3c  <td><b>Function<
14b60 2f 62 3e 3c 74 64 20 77 69 64 74 68 3d 22 33 30  /b><td width="30
14b70 22 3e 3c 74 64 3e 3c 62 3e 45 71 75 69 76 61 6c  "><td><b>Equival
14b80 65 6e 74 20 73 74 72 66 74 69 6d 65 28 29 3c 2f  ent strftime()</
14b90 62 3e 0a 3c 74 72 3e 3c 74 64 3e 20 20 20 64 61  b>.<tr><td>   da
14ba0 74 65 28 2e 2e 2e 29 20 20 20 20 20 20 3c 74 64  te(...)      <td
14bb0 3e 3c 74 64 3e 20 20 73 74 72 66 74 69 6d 65 28  ><td>  strftime(
14bc0 27 25 59 2d 25 6d 2d 25 64 27 2c 20 2e 2e 2e 29  '%Y-%m-%d', ...)
14bd0 0a 3c 74 72 3e 3c 74 64 3e 20 20 20 74 69 6d 65  .<tr><td>   time
14be0 28 2e 2e 2e 29 20 20 20 20 20 20 3c 74 64 3e 3c  (...)      <td><
14bf0 74 64 3e 20 20 73 74 72 66 74 69 6d 65 28 27 25  td>  strftime('%
14c00 48 3a 25 4d 3a 25 53 27 2c 20 2e 2e 2e 29 0a 3c  H:%M:%S', ...).<
14c10 74 72 3e 3c 74 64 3e 20 20 20 64 61 74 65 74 69  tr><td>   dateti
14c20 6d 65 28 2e 2e 2e 29 20 20 3c 74 64 3e 3c 74 64  me(...)  <td><td
14c30 3e 20 20 73 74 72 66 74 69 6d 65 28 27 25 59 2d  >  strftime('%Y-
14c40 25 6d 2d 25 64 20 25 48 3a 25 4d 3a 25 53 27 2c  %m-%d %H:%M:%S',
14c50 20 2e 2e 2e 29 0a 3c 74 72 3e 3c 74 64 3e 20 20   ...).<tr><td>  
14c60 20 6a 75 6c 69 61 6e 64 61 79 28 2e 2e 2e 29 20   julianday(...) 
14c70 3c 74 64 3e 3c 74 64 3e 20 20 73 74 72 66 74 69  <td><td>  strfti
14c80 6d 65 28 27 25 4a 27 2c 20 2e 2e 2e 29 0a 3c 2f  me('%J', ...).</
14c90 74 61 62 6c 65 3e 0a 3c 2f 62 6c 6f 63 6b 71 75  table>.</blockqu
14ca0 6f 74 65 3e 29 5e 0a 0a 3c 70 3e 0a 54 68 65 20  ote>)^..<p>.The 
14cb0 6f 6e 6c 79 20 72 65 61 73 6f 6e 73 20 66 6f 72  only reasons for
14cc0 20 70 72 6f 76 69 64 69 6e 67 20 66 75 6e 63 74   providing funct
14cd0 69 6f 6e 73 20 6f 74 68 65 72 20 74 68 61 6e 20  ions other than 
14ce0 73 74 72 66 74 69 6d 65 28 29 20 69 73 0a 66 6f  strftime() is.fo
14cf0 72 20 63 6f 6e 76 65 6e 69 65 6e 63 65 20 61 6e  r convenience an
14d00 64 20 66 6f 72 20 65 66 66 69 63 69 65 6e 63 79  d for efficiency
14d10 2e 0a 3c 2f 70 3e 0a 0a 3c 68 33 3e 54 69 6d 65  ..</p>..<h3>Time
14d20 20 53 74 72 69 6e 67 73 3c 2f 68 33 3e 0a 0a 3c   Strings</h3>..<
14d30 70 3e 5e 28 41 20 74 69 6d 65 20 73 74 72 69 6e  p>^(A time strin
14d40 67 20 63 61 6e 20 62 65 20 69 6e 20 61 6e 79 20  g can be in any 
14d50 6f 66 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  of the following
14d60 20 66 6f 72 6d 61 74 73 3a 3c 2f 70 3e 0a 0a 3c   formats:</p>..<
14d70 6f 6c 3e 0a 3c 6c 69 3e 20 3c 69 3e 59 59 59 59  ol>.<li> <i>YYYY
14d80 2d 4d 4d 2d 44 44 3c 2f 69 3e 0a 3c 6c 69 3e 20  -MM-DD</i>.<li> 
14d90 3c 69 3e 59 59 59 59 2d 4d 4d 2d 44 44 20 48 48  <i>YYYY-MM-DD HH
14da0 3a 4d 4d 3c 2f 69 3e 0a 3c 6c 69 3e 20 3c 69 3e  :MM</i>.<li> <i>
14db0 59 59 59 59 2d 4d 4d 2d 44 44 20 48 48 3a 4d 4d  YYYY-MM-DD HH:MM
14dc0 3a 53 53 3c 2f 69 3e 0a 3c 6c 69 3e 20 3c 69 3e  :SS</i>.<li> <i>
14dd0 59 59 59 59 2d 4d 4d 2d 44 44 20 48 48 3a 4d 4d  YYYY-MM-DD HH:MM
14de0 3a 53 53 2e 53 53 53 3c 2f 69 3e 0a 3c 6c 69 3e  :SS.SSS</i>.<li>
14df0 20 3c 69 3e 59 59 59 59 2d 4d 4d 2d 44 44 3c 2f   <i>YYYY-MM-DD</
14e00 69 3e 3c 62 3e 54 3c 2f 62 3e 3c 69 3e 48 48 3a  i><b>T</b><i>HH:
14e10 4d 4d 3c 2f 69 3e 0a 3c 6c 69 3e 20 3c 69 3e 59  MM</i>.<li> <i>Y
14e20 59 59 59 2d 4d 4d 2d 44 44 3c 2f 69 3e 3c 62 3e  YYY-MM-DD</i><b>
14e30 54 3c 2f 62 3e 3c 69 3e 48 48 3a 4d 4d 3a 53 53  T</b><i>HH:MM:SS
14e40 3c 2f 69 3e 0a 3c 6c 69 3e 20 3c 69 3e 59 59 59  </i>.<li> <i>YYY
14e50 59 2d 4d 4d 2d 44 44 3c 2f 69 3e 3c 62 3e 54 3c  Y-MM-DD</i><b>T<
14e60 2f 62 3e 3c 69 3e 48 48 3a 4d 4d 3a 53 53 2e 53  /b><i>HH:MM:SS.S
14e70 53 53 3c 2f 69 3e 0a 3c 6c 69 3e 20 3c 69 3e 48  SS</i>.<li> <i>H
14e80 48 3a 4d 4d 3c 2f 69 3e 0a 3c 6c 69 3e 20 3c 69  H:MM</i>.<li> <i
14e90 3e 48 48 3a 4d 4d 3a 53 53 3c 2f 69 3e 0a 3c 6c  >HH:MM:SS</i>.<l
14ea0 69 3e 20 3c 69 3e 48 48 3a 4d 4d 3a 53 53 2e 53  i> <i>HH:MM:SS.S
14eb0 53 53 3c 2f 69 3e 0a 3c 6c 69 3e 20 3c 62 3e 6e  SS</i>.<li> <b>n
14ec0 6f 77 3c 2f 62 3e 0a 3c 6c 69 3e 20 3c 69 3e 44  ow</b>.<li> <i>D
14ed0 44 44 44 44 44 44 44 44 44 3c 2f 69 3e 0a 3c 2f  DDDDDDDDD</i>.</
14ee0 6f 6c 3e 29 5e 0a 0a 3c 70 3e 0a 5e 49 6e 20 66  ol>)^..<p>.^In f
14ef0 6f 72 6d 61 74 73 20 35 20 74 68 72 6f 75 67 68  ormats 5 through
14f00 20 37 2c 20 74 68 65 20 22 54 22 20 69 73 20 61   7, the "T" is a
14f10 20 6c 69 74 65 72 61 6c 20 63 68 61 72 61 63 74   literal charact
14f20 65 72 20 73 65 70 61 72 61 74 69 6e 67 20 0a 74  er separating .t
14f30 68 65 20 64 61 74 65 20 61 6e 64 20 74 68 65 20  he date and the 
14f40 74 69 6d 65 2c 20 61 73 20 72 65 71 75 69 72 65  time, as require
14f50 64 20 62 79 20 0a 5b 68 74 74 70 3a 2f 2f 77 77  d by .[http://ww
14f60 77 2e 77 33 63 2e 6f 72 67 2f 54 52 2f 4e 4f 54  w.w3c.org/TR/NOT
14f70 45 2d 64 61 74 65 74 69 6d 65 20 7c 20 49 53 4f  E-datetime | ISO
14f80 2d 38 36 30 31 5d 2e 20 0a 5e 46 6f 72 6d 61 74  -8601]. .^Format
14f90 73 20 38 20 74 68 72 6f 75 67 68 20 31 30 20 74  s 8 through 10 t
14fa0 68 61 74 20 73 70 65 63 69 66 79 20 6f 6e 6c 79  hat specify only
14fb0 20 61 20 74 69 6d 65 20 61 73 73 75 6d 65 20 61   a time assume a
14fc0 20 64 61 74 65 20 6f 66 20 0a 32 30 30 30 2d 30   date of .2000-0
14fd0 31 2d 30 31 2e 20 46 6f 72 6d 61 74 20 31 31 2c  1-01. Format 11,
14fe0 20 74 68 65 20 73 74 72 69 6e 67 20 27 6e 6f 77   the string 'now
14ff0 27 2c 20 69 73 20 63 6f 6e 76 65 72 74 65 64 20  ', is converted 
15000 69 6e 74 6f 20 74 68 65 20 0a 63 75 72 72 65 6e  into the .curren
15010 74 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20  t date and time 
15020 61 73 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d  as obtained from
15030 20 74 68 65 20 78 43 75 72 72 65 6e 74 54 69 6d   the xCurrentTim
15040 65 20 6d 65 74 68 6f 64 0a 6f 66 20 74 68 65 20  e method.of the 
15050 5b 73 71 6c 69 74 65 33 5f 76 66 73 5d 20 6f 62  [sqlite3_vfs] ob
15060 6a 65 63 74 20 69 6e 20 75 73 65 2e 0a 5e 5b 68  ject in use..^[h
15070 74 74 70 3a 2f 2f 65 6e 2e 77 69 6b 69 70 65 64  ttp://en.wikiped
15080 69 61 2e 6f 72 67 2f 77 69 6b 69 2f 43 6f 6f 72  ia.org/wiki/Coor
15090 64 69 6e 61 74 65 64 5f 55 6e 69 76 65 72 73 61  dinated_Universa
150a0 6c 5f 54 69 6d 65 20 7c 20 55 6e 69 76 65 72 73  l_Time | Univers
150b0 61 6c 20 43 6f 6f 72 64 69 6e 61 74 65 64 20 54  al Coordinated T
150c0 69 6d 65 20 28 55 54 43 29 5d 20 69 73 20 75 73  ime (UTC)] is us
150d0 65 64 2e 20 0a 5e 46 6f 72 6d 61 74 20 31 32 20  ed. .^Format 12 
150e0 69 73 20 74 68 65 20 0a 5b 68 74 74 70 3a 2f 2f  is the .[http://
150f0 65 6e 2e 77 69 6b 69 70 65 64 69 61 2e 6f 72 67  en.wikipedia.org
15100 2f 77 69 6b 69 2f 4a 75 6c 69 61 6e 5f 64 61 79  /wiki/Julian_day
15110 20 7c 20 4a 75 6c 69 61 6e 20 64 61 79 20 6e 75   | Julian day nu
15120 6d 62 65 72 5d 0a 65 78 70 72 65 73 73 65 64 20  mber].expressed 
15130 61 73 20 61 20 66 6c 6f 61 74 69 6e 67 20 70 6f  as a floating po
15140 69 6e 74 20 76 61 6c 75 65 2e 0a 3c 2f 70 3e 0a  int value..</p>.
15150 0a 3c 68 33 3e 4d 6f 64 69 66 69 65 72 73 3c 2f  .<h3>Modifiers</
15160 68 33 3e 0a 0a 3c 70 3e 5e 54 68 65 20 74 69 6d  h3>..<p>^The tim
15170 65 20 73 74 72 69 6e 67 20 63 61 6e 20 62 65 20  e string can be 
15180 66 6f 6c 6c 6f 77 65 64 20 62 79 20 7a 65 72 6f  followed by zero
15190 20 6f 72 20 6d 6f 72 65 20 6d 6f 64 69 66 69 65   or more modifie
151a0 72 73 20 74 68 61 74 20 0a 61 6c 74 65 72 20 74  rs that .alter t
151b0 68 65 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65  he date and time
151c0 20 73 74 72 69 6e 67 2e 20 5e 45 61 63 68 20 6d   string. ^Each m
151d0 6f 64 69 66 69 65 72 0a 69 73 20 61 20 74 72 61  odifier.is a tra
151e0 6e 73 66 6f 72 6d 61 74 69 6f 6e 20 74 68 61 74  nsformation that
151f0 20 69 73 20 61 70 70 6c 69 65 64 20 74 6f 20 74   is applied to t
15200 68 65 20 74 69 6d 65 20 76 61 6c 75 65 20 74 6f  he time value to
15210 20 69 74 73 20 6c 65 66 74 2e 0a 5e 4d 6f 64 69   its left..^Modi
15220 66 69 65 72 73 20 61 72 65 20 61 70 70 6c 69 65  fiers are applie
15230 64 20 66 72 6f 6d 20 6c 65 66 74 20 74 6f 20 72  d from left to r
15240 69 67 68 74 3b 20 6f 72 64 65 72 20 69 73 20 69  ight; order is i
15250 6d 70 6f 72 74 61 6e 74 2e 0a 5e 28 54 68 65 20  mportant..^(The 
15260 61 76 61 69 6c 61 62 6c 65 20 6d 6f 64 69 66 69  available modifi
15270 65 72 73 20 61 72 65 20 61 73 20 66 6f 6c 6c 6f  ers are as follo
15280 77 73 2e 3c 2f 70 3e 0a 0a 3c 6f 6c 3e 0a 3c 6c  ws.</p>..<ol>.<l
15290 69 3e 20 4e 4e 4e 20 64 61 79 73 0a 3c 6c 69 3e  i> NNN days.<li>
152a0 20 4e 4e 4e 20 68 6f 75 72 73 0a 3c 6c 69 3e 20   NNN hours.<li> 
152b0 4e 4e 4e 20 6d 69 6e 75 74 65 73 0a 3c 6c 69 3e  NNN minutes.<li>
152c0 20 4e 4e 4e 2e 4e 4e 4e 4e 20 73 65 63 6f 6e 64   NNN.NNNN second
152d0 73 0a 3c 6c 69 3e 20 4e 4e 4e 20 6d 6f 6e 74 68  s.<li> NNN month
152e0 73 0a 3c 6c 69 3e 20 4e 4e 4e 20 79 65 61 72 73  s.<li> NNN years
152f0 0a 3c 6c 69 3e 20 73 74 61 72 74 20 6f 66 20 6d  .<li> start of m
15300 6f 6e 74 68 0a 3c 6c 69 3e 20 73 74 61 72 74 20  onth.<li> start 
15310 6f 66 20 79 65 61 72 0a 3c 6c 69 3e 20 73 74 61  of year.<li> sta
15320 72 74 20 6f 66 20 64 61 79 0a 3c 6c 69 3e 20 77  rt of day.<li> w
15330 65 65 6b 64 61 79 20 4e 0a 3c 6c 69 3e 20 75 6e  eekday N.<li> un
15340 69 78 65 70 6f 63 68 0a 3c 6c 69 3e 20 6c 6f 63  ixepoch.<li> loc
15350 61 6c 74 69 6d 65 0a 3c 6c 69 3e 20 75 74 63 20  altime.<li> utc 
15360 0a 3c 2f 6f 6c 3e 29 5e 0a 0a 3c 70 3e 5e 54 68  .</ol>)^..<p>^Th
15370 65 20 66 69 72 73 74 20 73 69 78 20 6d 6f 64 69  e first six modi
15380 66 69 65 72 73 20 28 31 20 74 68 72 6f 75 67 68  fiers (1 through
15390 20 36 29 20 0a 73 69 6d 70 6c 79 20 61 64 64 20   6) .simply add 
153a0 74 68 65 20 73 70 65 63 69 66 69 65 64 20 61 6d  the specified am
153b0 6f 75 6e 74 20 6f 66 20 74 69 6d 65 20 74 6f 20  ount of time to 
153c0 74 68 65 20 64 61 74 65 20 61 6e 64 20 74 69 6d  the date and tim
153d0 65 20 0a 73 70 65 63 69 66 69 65 64 20 62 79 20  e .specified by 
153e0 74 68 65 20 70 72 65 63 65 64 69 6e 67 20 74 69  the preceding ti
153f0 6d 65 73 74 72 69 6e 67 20 61 6e 64 20 6d 6f 64  mestring and mod
15400 69 66 69 65 72 73 2e 0a 5e 4e 6f 74 65 20 74 68  ifiers..^Note th
15410 61 74 20 22 26 70 6c 75 73 6d 6e 3b 4e 4e 4e 20  at "&plusmn;NNN 
15420 6d 6f 6e 74 68 73 22 20 77 6f 72 6b 73 20 62 79  months" works by
15430 20 72 65 6e 64 65 72 69 6e 67 20 74 68 65 20 6f   rendering the o
15440 72 69 67 69 6e 61 6c 20 64 61 74 65 20 69 6e 74  riginal date int
15450 6f 0a 74 68 65 20 59 59 59 59 2d 4d 4d 2d 44 44  o.the YYYY-MM-DD
15460 20 66 6f 72 6d 61 74 2c 20 61 64 64 69 6e 67 20   format, adding 
15470 74 68 65 20 26 70 6c 75 73 6d 6e 3b 4e 4e 4e 20  the &plusmn;NNN 
15480 74 6f 20 74 68 65 20 4d 4d 20 6d 6f 6e 74 68 20  to the MM month 
15490 76 61 6c 75 65 2c 20 74 68 65 6e 0a 6e 6f 72 6d  value, then.norm
154a0 61 6c 69 7a 69 6e 67 20 74 68 65 20 72 65 73 75  alizing the resu
154b0 6c 74 2e 20 20 5e 54 68 75 73 2c 20 66 6f 72 20  lt.  ^Thus, for 
154c0 65 78 61 6d 70 6c 65 2c 20 74 68 65 20 64 61 74  example, the dat
154d0 61 20 32 30 30 31 2d 30 33 2d 33 31 20 6d 6f 64  a 2001-03-31 mod
154e0 69 66 69 65 64 0a 62 79 20 27 2b 31 20 6d 6f 6e  ified.by '+1 mon
154f0 74 68 27 20 69 6e 69 74 69 61 6c 6c 79 20 79 69  th' initially yi
15500 65 6c 64 73 20 32 30 30 31 2d 30 34 2d 33 31 2c  elds 2001-04-31,
15510 20 62 75 74 20 41 70 72 69 6c 20 6f 6e 6c 79 20   but April only 
15520 68 61 73 20 33 30 20 64 61 79 73 0a 73 6f 20 74  has 30 days.so t
15530 68 65 20 64 61 74 65 20 69 73 20 6e 6f 72 6d 61  he date is norma
15540 6c 69 7a 65 64 20 74 6f 20 32 30 30 31 2d 30 35  lized to 2001-05
15550 2d 30 31 2e 20 20 5e 41 20 73 69 6d 69 6c 61 72  -01.  ^A similar
15560 20 65 66 66 65 63 74 20 6f 63 63 75 72 73 20 77   effect occurs w
15570 68 65 6e 0a 74 68 65 20 6f 72 69 67 69 6e 61 6c  hen.the original
15580 20 64 61 74 65 20 69 73 20 46 65 62 72 75 61 72   date is Februar
15590 79 20 32 39 20 6f 66 20 61 20 6c 65 61 70 79 65  y 29 of a leapye
155a0 61 72 20 61 6e 64 20 74 68 65 20 6d 6f 64 69 66  ar and the modif
155b0 69 65 72 20 69 73 0a 26 70 6c 75 73 6d 6e 3b 4e  ier is.&plusmn;N
155c0 20 79 65 61 72 73 20 77 68 65 72 65 20 4e 20 69   years where N i
155d0 73 20 6e 6f 74 20 61 20 6d 75 6c 74 69 70 6c 65  s not a multiple
155e0 20 6f 66 20 66 6f 75 72 2e 3c 2f 70 3e 0a 0a 3c   of four.</p>..<
155f0 70 3e 5e 54 68 65 20 22 73 74 61 72 74 20 6f 66  p>^The "start of
15600 22 20 6d 6f 64 69 66 69 65 72 73 20 28 37 20 74  " modifiers (7 t
15610 68 72 6f 75 67 68 20 39 29 20 73 68 69 66 74 20  hrough 9) shift 
15620 74 68 65 20 64 61 74 65 20 62 61 63 6b 77 61 72  the date backwar
15630 64 73 20 0a 74 6f 20 74 68 65 20 62 65 67 69 6e  ds .to the begin
15640 6e 69 6e 67 20 6f 66 20 74 68 65 20 63 75 72 72  ning of the curr
15650 65 6e 74 20 6d 6f 6e 74 68 2c 20 79 65 61 72 20  ent month, year 
15660 6f 72 20 64 61 79 2e 3c 2f 70 3e 0a 0a 3c 70 3e  or day.</p>..<p>
15670 5e 54 68 65 20 22 77 65 65 6b 64 61 79 22 20 6d  ^The "weekday" m
15680 6f 64 69 66 69 65 72 20 61 64 76 61 6e 63 65 73  odifier advances
15690 20 74 68 65 20 64 61 74 65 20 66 6f 72 77 61 72   the date forwar
156a0 64 20 74 6f 20 74 68 65 20 6e 65 78 74 20 64 61  d to the next da
156b0 74 65 20 0a 77 68 65 72 65 20 74 68 65 20 77 65  te .where the we
156c0 65 6b 64 61 79 20 6e 75 6d 62 65 72 20 69 73 20  ekday number is 
156d0 4e 2e 20 53 75 6e 64 61 79 20 69 73 20 30 2c 20  N. Sunday is 0, 
156e0 4d 6f 6e 64 61 79 20 69 73 20 31 2c 20 61 6e 64  Monday is 1, and
156f0 20 73 6f 20 66 6f 72 74 68 2e 3c 2f 70 3e 0a 0a   so forth.</p>..
15700 3c 70 3e 5e 54 68 65 20 22 75 6e 69 78 65 70 6f  <p>^The "unixepo
15710 63 68 22 20 6d 6f 64 69 66 69 65 72 20 28 31 31  ch" modifier (11
15720 29 20 6f 6e 6c 79 20 77 6f 72 6b 73 20 69 66 20  ) only works if 
15730 69 74 20 69 6d 6d 65 64 69 61 74 65 6c 79 20 66  it immediately f
15740 6f 6c 6c 6f 77 73 20 0a 61 20 74 69 6d 65 73 74  ollows .a timest
15750 72 69 6e 67 20 69 6e 20 74 68 65 20 44 44 44 44  ring in the DDDD
15760 44 44 44 44 44 44 20 66 6f 72 6d 61 74 2e 20 0a  DDDDDD format. .
15770 5e 54 68 69 73 20 6d 6f 64 69 66 69 65 72 20 63  ^This modifier c
15780 61 75 73 65 73 20 74 68 65 20 44 44 44 44 44 44  auses the DDDDDD
15790 44 44 44 44 20 74 6f 20 62 65 20 69 6e 74 65 72  DDDD to be inter
157a0 70 72 65 74 65 64 20 6e 6f 74 20 0a 61 73 20 61  preted not .as a
157b0 20 4a 75 6c 69 61 6e 20 64 61 79 20 6e 75 6d 62   Julian day numb
157c0 65 72 20 61 73 20 69 74 20 6e 6f 72 6d 61 6c 6c  er as it normall
157d0 79 20 77 6f 75 6c 64 20 62 65 2c 20 62 75 74 20  y would be, but 
157e0 61 73 0a 5b 68 74 74 70 3a 2f 2f 65 6e 2e 77 69  as.[http://en.wi
157f0 6b 69 70 65 64 69 61 2e 6f 72 67 2f 77 69 6b 69  kipedia.org/wiki
15800 2f 55 6e 69 78 5f 74 69 6d 65 20 7c 20 55 6e 69  /Unix_time | Uni
15810 78 20 54 69 6d 65 5d 20 2d 20 74 68 65 20 0a 6e  x Time] - the .n
15820 75 6d 62 65 72 20 6f 66 20 73 65 63 6f 6e 64 73  umber of seconds
15830 20 73 69 6e 63 65 20 31 39 37 30 2e 20 20 49 66   since 1970.  If
15840 20 74 68 65 20 22 75 6e 69 78 65 70 6f 63 68 22   the "unixepoch"
15850 20 6d 6f 64 69 66 69 65 72 20 64 6f 65 73 20 6e   modifier does n
15860 6f 74 0a 66 6f 6c 6c 6f 77 20 61 20 74 69 6d 65  ot.follow a time
15870 73 74 72 69 6e 67 20 6f 66 20 74 68 65 20 66 6f  string of the fo
15880 72 6d 20 44 44 44 44 44 44 44 44 44 44 20 77 68  rm DDDDDDDDDD wh
15890 69 63 68 20 65 78 70 72 65 73 73 65 73 20 74 68  ich expresses th
158a0 65 20 6e 75 6d 62 65 72 0a 6f 66 20 73 65 63 6f  e number.of seco
158b0 6e 64 73 20 73 69 6e 63 65 20 31 39 37 30 20 6f  nds since 1970 o
158c0 72 20 69 66 20 6f 74 68 65 72 20 6d 6f 64 69 66  r if other modif
158d0 69 65 72 73 0a 73 65 70 61 72 61 74 65 20 74 68  iers.separate th
158e0 65 20 22 75 6e 69 78 65 70 6f 63 68 22 20 6d 6f  e "unixepoch" mo
158f0 64 69 66 69 65 72 20 66 72 6f 6d 20 70 72 69 6f  difier from prio
15900 72 20 44 44 44 44 44 44 44 44 44 44 20 74 68 65  r DDDDDDDDDD the
15910 6e 20 74 68 65 0a 62 65 68 61 76 69 6f 72 20 69  n the.behavior i
15920 73 20 75 6e 64 65 66 69 6e 65 64 2e 0a 44 75 65  s undefined..Due
15930 20 74 6f 20 70 72 65 63 69 73 69 6f 6e 20 6c 69   to precision li
15940 6d 69 74 61 74 69 6f 6e 73 20 69 6d 70 6f 73 65  mitations impose
15950 64 20 62 79 20 74 68 65 20 69 6d 70 6c 65 6d 65  d by the impleme
15960 6e 74 61 74 69 6f 6e 73 20 75 73 65 0a 6f 66 20  ntations use.of 
15970 36 34 2d 62 69 74 20 69 6e 74 65 67 65 72 73 2c  64-bit integers,
15980 20 74 68 65 20 22 75 6e 69 78 65 70 6f 63 68 22   the "unixepoch"
15990 20 6d 6f 64 69 66 69 65 72 20 6f 6e 6c 79 20 77   modifier only w
159a0 6f 72 6b 73 20 66 6f 72 0a 64 61 74 65 73 20 62  orks for.dates b
159b0 65 74 77 65 65 6e 20 30 30 30 30 2d 30 31 2d 30  etween 0000-01-0
159c0 31 20 30 30 3a 30 30 3a 30 30 20 61 6e 64 20 35  1 00:00:00 and 5
159d0 33 35 32 2d 31 31 2d 30 31 20 31 30 3a 35 32 3a  352-11-01 10:52:
159e0 34 37 20 28 75 6e 69 78 20 74 69 6d 65 73 0a 6f  47 (unix times.o
159f0 66 20 2d 36 32 31 36 37 32 31 39 32 30 30 20 74  f -62167219200 t
15a00 68 72 6f 75 67 68 20 31 30 36 37 35 31 39 39 31  hrough 106751991
15a10 36 37 29 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68  67).</p>..<p>^Th
15a20 65 20 22 6c 6f 63 61 6c 74 69 6d 65 22 20 6d 6f  e "localtime" mo
15a30 64 69 66 69 65 72 20 28 31 32 29 20 61 73 73 75  difier (12) assu
15a40 6d 65 73 20 74 68 65 20 74 69 6d 65 20 73 74 72  mes the time str
15a50 69 6e 67 20 74 6f 20 69 74 73 20 6c 65 66 74 20  ing to its left 
15a60 69 73 20 69 6e 0a 55 6e 69 76 65 72 73 61 6c 20  is in.Universal 
15a70 43 6f 6f 72 64 69 6e 61 74 65 64 20 54 69 6d 65  Coordinated Time
15a80 20 28 55 54 43 29 20 61 6e 64 20 61 64 6a 75 73   (UTC) and adjus
15a90 74 73 20 74 68 65 20 74 69 6d 65 0a 73 74 72 69  ts the time.stri
15aa0 6e 67 20 73 6f 20 74 68 61 74 20 69 74 20 64 69  ng so that it di
15ab0 73 70 6c 61 79 73 20 6c 6f 63 61 6c 74 69 6d 65  splays localtime
15ac0 2e 20 20 49 66 20 22 6c 6f 63 61 6c 74 69 6d 65  .  If "localtime
15ad0 22 0a 66 6f 6c 6c 6f 77 73 20 61 20 74 69 6d 65  ".follows a time
15ae0 20 74 68 61 74 20 69 73 20 6e 6f 74 20 55 54 43   that is not UTC
15af0 2c 20 74 68 65 6e 20 74 68 65 20 62 65 68 61 76  , then the behav
15b00 69 6f 72 20 69 73 20 75 6e 64 65 66 69 6e 65 64  ior is undefined
15b10 2e 0a 5e 28 54 68 65 20 22 75 74 63 22 20 69 73  ..^(The "utc" is
15b20 20 74 68 65 20 6f 70 70 6f 73 69 74 65 20 6f 66   the opposite of
15b30 20 22 6c 6f 63 61 6c 74 69 6d 65 22 2e 20 20 22   "localtime".  "
15b40 75 74 63 22 20 61 73 73 75 6d 65 73 20 74 68 61  utc" assumes tha
15b50 74 20 74 68 65 20 73 74 72 69 6e 67 0a 74 6f 20  t the string.to 
15b60 69 74 73 20 6c 65 66 74 20 69 73 20 69 6e 20 74  its left is in t
15b70 68 65 20 6c 6f 63 61 6c 20 74 69 6d 65 7a 6f 6e  he local timezon
15b80 65 20 61 6e 64 20 61 64 6a 75 73 74 73 20 74 68  e and adjusts th
15b90 61 74 20 73 74 72 69 6e 67 20 74 6f 20 62 65 20  at string to be 
15ba0 69 6e 20 55 54 43 2e 29 5e 0a 49 66 20 74 68 65  in UTC.)^.If the
15bb0 20 70 72 69 6f 72 20 73 74 72 69 6e 67 20 69 73   prior string is
15bc0 20 6e 6f 74 20 69 6e 20 6c 6f 63 61 6c 74 69 6d   not in localtim
15bd0 65 2c 20 74 68 65 6e 20 74 68 65 20 72 65 73 75  e, then the resu
15be0 6c 74 20 6f 66 20 22 75 74 63 22 20 69 73 0a 75  lt of "utc" is.u
15bf0 6e 64 65 66 69 6e 65 64 2e 3c 2f 70 3e 0a 0a 3c  ndefined.</p>..<
15c00 68 33 3e 45 78 61 6d 70 6c 65 73 3c 2f 68 33 3e  h3>Examples</h3>
15c10 0a 0a 5e 28 3c 70 3e 43 6f 6d 70 75 74 65 20 74  ..^(<p>Compute t
15c20 68 65 20 63 75 72 72 65 6e 74 20 64 61 74 65 2e  he current date.
15c30 3c 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65  <p>..<blockquote
15c40 3e 53 45 4c 45 43 54 20 64 61 74 65 28 27 6e 6f  >SELECT date('no
15c50 77 27 29 3b 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65  w');</blockquote
15c60 3e 29 5e 0a 0a 5e 28 3c 70 3e 43 6f 6d 70 75 74  >)^..^(<p>Comput
15c70 65 20 74 68 65 20 6c 61 73 74 20 64 61 79 20 6f  e the last day o
15c80 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 6d 6f  f the current mo
15c90 6e 74 68 2e 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b  nth.</p>..<block
15ca0 71 75 6f 74 65 3e 53 45 4c 45 43 54 20 64 61 74  quote>SELECT dat
15cb0 65 28 27 6e 6f 77 27 2c 27 73 74 61 72 74 20 6f  e('now','start o
15cc0 66 20 6d 6f 6e 74 68 27 2c 27 2b 31 20 6d 6f 6e  f month','+1 mon
15cd0 74 68 27 2c 27 2d 31 20 64 61 79 27 29 3b 0a 3c  th','-1 day');.<
15ce0 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 29 5e 0a 0a  /blockquote>)^..
15cf0 5e 28 3c 70 3e 43 6f 6d 70 75 74 65 20 74 68 65  ^(<p>Compute the
15d00 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20 67   date and time g
15d10 69 76 65 6e 20 61 20 75 6e 69 78 20 74 69 6d 65  iven a unix time
15d20 73 74 61 6d 70 20 31 30 39 32 39 34 31 34 36 36  stamp 1092941466
15d30 2e 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f  .</p>..<blockquo
15d40 74 65 3e 0a 20 20 20 20 53 45 4c 45 43 54 20 64  te>.    SELECT d
15d50 61 74 65 74 69 6d 65 28 31 30 39 32 39 34 31 34  atetime(10929414
15d60 36 36 2c 20 27 75 6e 69 78 65 70 6f 63 68 27 29  66, 'unixepoch')
15d70 3b 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 29  ;.</blockquote>)
15d80 5e 0a 0a 5e 28 3c 70 3e 43 6f 6d 70 75 74 65 20  ^..^(<p>Compute 
15d90 74 68 65 20 64 61 74 65 20 61 6e 64 20 74 69 6d  the date and tim
15da0 65 20 67 69 76 65 6e 20 61 20 75 6e 69 78 20 74  e given a unix t
15db0 69 6d 65 73 74 61 6d 70 20 31 30 39 32 39 34 31  imestamp 1092941
15dc0 34 36 36 2c 20 61 6e 64 20 0a 63 6f 6d 70 65 6e  466, and .compen
15dd0 73 61 74 65 20 66 6f 72 20 79 6f 75 72 20 6c 6f  sate for your lo
15de0 63 61 6c 20 74 69 6d 65 7a 6f 6e 65 2e 3c 2f 70  cal timezone.</p
15df0 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a  >..<blockquote>.
15e00 20 20 53 45 4c 45 43 54 20 64 61 74 65 74 69 6d    SELECT datetim
15e10 65 28 31 30 39 32 39 34 31 34 36 36 2c 20 27 75  e(1092941466, 'u
15e20 6e 69 78 65 70 6f 63 68 27 2c 20 27 6c 6f 63 61  nixepoch', 'loca
15e30 6c 74 69 6d 65 27 29 3b 0a 3c 2f 62 6c 6f 63 6b  ltime');.</block
15e40 71 75 6f 74 65 3e 29 5e 0a 0a 5e 28 3c 70 3e 43  quote>)^..^(<p>C
15e50 6f 6d 70 75 74 65 20 74 68 65 20 63 75 72 72 65  ompute the curre
15e60 6e 74 20 75 6e 69 78 20 74 69 6d 65 73 74 61 6d  nt unix timestam
15e70 70 2e 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75  p.</p>..<blockqu
15e80 6f 74 65 3e 0a 20 20 53 45 4c 45 43 54 20 73 74  ote>.  SELECT st
15e90 72 66 74 69 6d 65 28 27 25 73 27 2c 27 6e 6f 77  rftime('%s','now
15ea0 27 29 3b 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65  ');.</blockquote
15eb0 3e 29 5e 0a 0a 5e 28 3c 70 3e 43 6f 6d 70 75 74  >)^..^(<p>Comput
15ec0 65 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  e the number of 
15ed0 64 61 79 73 20 73 69 6e 63 65 20 74 68 65 20 73  days since the s
15ee0 69 67 6e 69 6e 67 20 6f 66 20 74 68 65 20 55 53  igning of the US
15ef0 20 44 65 63 6c 61 72 61 74 69 6f 6e 0a 6f 66 20   Declaration.of 
15f00 49 6e 64 65 70 65 6e 64 65 6e 63 65 2e 3c 2f 70  Independence.</p
15f10 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a  >..<blockquote>.
15f20 20 20 53 45 4c 45 43 54 20 6a 75 6c 69 61 6e 64    SELECT juliand
15f30 61 79 28 27 6e 6f 77 27 29 20 2d 20 6a 75 6c 69  ay('now') - juli
15f40 61 6e 64 61 79 28 27 31 37 37 36 2d 30 37 2d 30  anday('1776-07-0
15f50 34 27 29 3b 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74  4');.</blockquot
15f60 65 3e 29 5e 0a 0a 5e 28 3c 70 3e 43 6f 6d 70 75  e>)^..^(<p>Compu
15f70 74 65 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  te the number of
15f80 20 73 65 63 6f 6e 64 73 20 73 69 6e 63 65 20 61   seconds since a
15f90 20 70 61 72 74 69 63 75 6c 61 72 20 6d 6f 6d 65   particular mome
15fa0 6e 74 20 69 6e 20 32 30 30 34 3a 3c 2f 70 3e 0a  nt in 2004:</p>.
15fb0 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 20 20  .<blockquote>.  
15fc0 53 45 4c 45 43 54 20 73 74 72 66 74 69 6d 65 28  SELECT strftime(
15fd0 27 25 73 27 2c 27 6e 6f 77 27 29 20 2d 20 73 74  '%s','now') - st
15fe0 72 66 74 69 6d 65 28 27 25 73 27 2c 27 32 30 30  rftime('%s','200
15ff0 34 2d 30 31 2d 30 31 20 30 32 3a 33 34 3a 35 36  4-01-01 02:34:56
16000 27 29 3b 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65  ');.</blockquote
16010 3e 29 5e 0a 0a 5e 28 3c 70 3e 0a 43 6f 6d 70 75  >)^..^(<p>.Compu
16020 74 65 20 74 68 65 20 64 61 74 65 20 6f 66 20 74  te the date of t
16030 68 65 20 66 69 72 73 74 20 54 75 65 73 64 61 79  he first Tuesday
16040 20 69 6e 20 4f 63 74 6f 62 65 72 0a 66 6f 72 20   in October.for 
16050 74 68 65 20 63 75 72 72 65 6e 74 20 79 65 61 72  the current year
16060 2e 0a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75  ..</p>..<blockqu
16070 6f 74 65 3e 0a 20 20 53 45 4c 45 43 54 20 64 61  ote>.  SELECT da
16080 74 65 28 27 6e 6f 77 27 2c 27 73 74 61 72 74 20  te('now','start 
16090 6f 66 20 79 65 61 72 27 2c 27 2b 39 20 6d 6f 6e  of year','+9 mon
160a0 74 68 73 27 2c 27 77 65 65 6b 64 61 79 20 32 27  ths','weekday 2'
160b0 29 3b 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e  );.</blockquote>
160c0 29 5e 0a 0a 5e 28 3c 70 3e 43 6f 6d 70 75 74 65  )^..^(<p>Compute
160d0 20 74 68 65 20 74 69 6d 65 20 73 69 6e 63 65 20   the time since 
160e0 74 68 65 20 75 6e 69 78 20 65 70 6f 63 68 20 69  the unix epoch i
160f0 6e 20 73 65 63 6f 6e 64 73 20 0a 28 6c 69 6b 65  n seconds .(like
16100 20 73 74 72 66 74 69 6d 65 28 27 25 73 27 2c 27   strftime('%s','
16110 6e 6f 77 27 29 20 65 78 63 65 70 74 20 69 6e 63  now') except inc
16120 6c 75 64 65 73 20 66 72 61 63 74 69 6f 6e 61 6c  ludes fractional
16130 20 70 61 72 74 29 3a 3c 2f 70 3e 0a 0a 3c 62 6c   part):</p>..<bl
16140 6f 63 6b 71 75 6f 74 65 3e 0a 20 20 53 45 4c 45  ockquote>.  SELE
16150 43 54 20 28 6a 75 6c 69 61 6e 64 61 79 28 27 6e  CT (julianday('n
16160 6f 77 27 29 20 2d 20 32 34 34 30 35 38 37 2e 35  ow') - 2440587.5
16170 29 2a 38 36 34 30 30 2e 30 3b 0a 3c 2f 62 6c 6f  )*86400.0;.</blo
16180 63 6b 71 75 6f 74 65 3e 29 5e 0a 0a 3c 68 33 3e  ckquote>)^..<h3>
16190 43 61 76 65 61 74 73 20 41 6e 64 20 42 75 67 73  Caveats And Bugs
161a0 3c 2f 68 33 3e 0a 0a 3c 70 3e 54 68 65 20 63 6f  </h3>..<p>The co
161b0 6d 70 75 74 61 74 69 6f 6e 20 6f 66 20 6c 6f 63  mputation of loc
161c0 61 6c 20 74 69 6d 65 20 64 65 70 65 6e 64 73 20  al time depends 
161d0 68 65 61 76 69 6c 79 20 6f 6e 20 74 68 65 20 77  heavily on the w
161e0 68 69 6d 20 0a 6f 66 20 70 6f 6c 69 74 69 63 69  him .of politici
161f0 61 6e 73 20 61 6e 64 20 69 73 20 74 68 75 73 20  ans and is thus 
16200 64 69 66 66 69 63 75 6c 74 20 74 6f 20 67 65 74  difficult to get
16210 20 63 6f 72 72 65 63 74 20 66 6f 72 20 0a 61 6c   correct for .al
16220 6c 20 6c 6f 63 61 6c 65 73 2e 20 5e 49 6e 20 74  l locales. ^In t
16230 68 69 73 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  his implementati
16240 6f 6e 2c 20 74 68 65 20 73 74 61 6e 64 61 72 64  on, the standard
16250 20 43 20 6c 69 62 72 61 72 79 20 0a 66 75 6e 63   C library .func
16260 74 69 6f 6e 20 6c 6f 63 61 6c 74 69 6d 65 5f 72  tion localtime_r
16270 28 29 20 69 73 20 75 73 65 64 20 74 6f 20 61 73  () is used to as
16280 73 69 73 74 20 69 6e 20 74 68 65 20 63 61 6c 63  sist in the calc
16290 75 6c 61 74 69 6f 6e 20 6f 66 20 0a 6c 6f 63 61  ulation of .loca
162a0 6c 20 74 69 6d 65 2e 20 20 5e 28 54 68 65 20 0a  l time.  ^(The .
162b0 6c 6f 63 61 6c 74 69 6d 65 5f 72 28 29 20 43 20  localtime_r() C 
162c0 66 75 6e 63 74 69 6f 6e 20 6e 6f 72 6d 61 6c 6c  function normall
162d0 79 20 6f 6e 6c 79 20 77 6f 72 6b 73 20 66 6f 72  y only works for
162e0 20 79 65 61 72 73 0a 62 65 74 77 65 65 6e 20 31   years.between 1
162f0 39 37 30 20 61 6e 64 20 32 30 33 37 2e 20 46 6f  970 and 2037. Fo
16300 72 20 64 61 74 65 73 20 6f 75 74 73 69 64 65 20  r dates outside 
16310 74 68 69 73 20 72 61 6e 67 65 2c 20 53 51 4c 69  this range, SQLi
16320 74 65 20 0a 61 74 74 65 6d 70 74 73 20 74 6f 20  te .attempts to 
16330 6d 61 70 20 74 68 65 20 79 65 61 72 20 69 6e 74  map the year int
16340 6f 20 61 6e 20 65 71 75 69 76 61 6c 65 6e 74 20  o an equivalent 
16350 79 65 61 72 20 77 69 74 68 69 6e 20 0a 74 68 69  year within .thi
16360 73 20 72 61 6e 67 65 2c 20 64 6f 20 74 68 65 20  s range, do the 
16370 63 61 6c 63 75 6c 61 74 69 6f 6e 2c 20 74 68 65  calculation, the
16380 6e 20 6d 61 70 20 74 68 65 20 79 65 61 72 20 62  n map the year b
16390 61 63 6b 2e 29 5e 3c 2f 70 3e 0a 0a 0a 3c 70 3e  ack.)^</p>...<p>
163a0 5e 28 54 68 65 73 65 20 66 75 6e 63 74 69 6f 6e  ^(These function
163b0 73 20 6f 6e 6c 79 20 77 6f 72 6b 20 66 6f 72 20  s only work for 
163c0 64 61 74 65 73 20 62 65 74 77 65 65 6e 20 30 30  dates between 00
163d0 30 30 2d 30 31 2d 30 31 20 30 30 3a 30 30 3a 30  00-01-01 00:00:0
163e0 30 0a 61 6e 64 20 39 39 39 39 2d 31 32 2d 33 31  0.and 9999-12-31
163f0 20 32 33 3a 35 39 3a 35 39 20 28 6a 75 6c 69 64   23:59:59 (julid
16400 61 6e 20 64 61 79 20 6e 75 6d 62 65 72 73 20 31  an day numbers 1
16410 37 32 31 30 35 39 2e 35 20 74 68 72 6f 75 67 68  721059.5 through
16420 20 35 33 37 33 34 38 34 2e 35 29 2e 29 5e 0a 46   5373484.5).)^.F
16430 6f 72 20 64 61 74 65 73 20 6f 75 74 73 69 64 65  or dates outside
16440 20 74 68 61 74 20 72 61 6e 67 65 2c 20 74 68 65   that range, the
16450 20 72 65 73 75 6c 74 73 20 6f 66 20 74 68 65 73   results of thes
16460 65 0a 66 75 6e 63 74 69 6f 6e 73 20 61 72 65 20  e.functions are 
16470 75 6e 64 65 66 69 6e 65 64 2e 3c 2f 70 3e 0a 0a  undefined.</p>..
16480 3c 70 3e 4e 6f 6e 2d 56 69 73 74 61 20 57 69 6e  <p>Non-Vista Win
16490 64 6f 77 73 20 70 6c 61 74 66 6f 72 6d 73 20 6f  dows platforms o
164a0 6e 6c 79 20 73 75 70 70 6f 72 74 20 6f 6e 65 20  nly support one 
164b0 73 65 74 20 6f 66 20 44 53 54 20 72 75 6c 65 73  set of DST rules
164c0 2e 20 0a 56 69 73 74 61 20 6f 6e 6c 79 20 73 75  . .Vista only su
164d0 70 70 6f 72 74 73 20 74 77 6f 2e 20 54 68 65 72  pports two. Ther
164e0 65 66 6f 72 65 2c 20 6f 6e 20 74 68 65 73 65 20  efore, on these 
164f0 70 6c 61 74 66 6f 72 6d 73 2c 20 0a 68 69 73 74  platforms, .hist
16500 6f 72 69 63 61 6c 20 44 53 54 20 63 61 6c 63 75  orical DST calcu
16510 6c 61 74 69 6f 6e 73 20 77 69 6c 6c 20 62 65 20  lations will be 
16520 69 6e 63 6f 72 72 65 63 74 2e 20 0a 46 6f 72 20  incorrect. .For 
16530 65 78 61 6d 70 6c 65 2c 20 69 6e 20 74 68 65 20  example, in the 
16540 55 53 2c 20 69 6e 20 32 30 30 37 20 74 68 65 20  US, in 2007 the 
16550 44 53 54 20 72 75 6c 65 73 20 63 68 61 6e 67 65  DST rules change
16560 64 2e 20 0a 4e 6f 6e 2d 56 69 73 74 61 20 57 69  d. .Non-Vista Wi
16570 6e 64 6f 77 73 20 70 6c 61 74 66 6f 72 6d 73 20  ndows platforms 
16580 61 70 70 6c 79 20 74 68 65 20 6e 65 77 20 32 30  apply the new 20
16590 30 37 20 44 53 54 20 72 75 6c 65 73 20 0a 74 6f  07 DST rules .to
165a0 20 61 6c 6c 20 70 72 65 76 69 6f 75 73 20 79 65   all previous ye
165b0 61 72 73 20 61 73 20 77 65 6c 6c 2e 20 56 69 73  ars as well. Vis
165c0 74 61 20 64 6f 65 73 20 73 6f 6d 65 77 68 61 74  ta does somewhat
165d0 20 62 65 74 74 65 72 0a 67 65 74 74 69 6e 67 20   better.getting 
165e0 72 65 73 75 6c 74 73 20 63 6f 72 72 65 63 74 20  results correct 
165f0 62 61 63 6b 20 74 6f 20 31 39 38 36 2c 20 77 68  back to 1986, wh
16600 65 6e 20 74 68 65 20 72 75 6c 65 73 20 77 65 72  en the rules wer
16610 65 20 61 6c 73 6f 20 63 68 61 6e 67 65 64 2e 3c  e also changed.<
16620 2f 70 3e 0a 0a 3c 70 3e 41 6c 6c 20 69 6e 74 65  /p>..<p>All inte
16630 72 6e 61 6c 20 63 6f 6d 70 75 74 61 74 69 6f 6e  rnal computation
16640 73 20 61 73 73 75 6d 65 20 74 68 65 20 0a 5b 68  s assume the .[h
16650 74 74 70 3a 2f 2f 65 6e 2e 77 69 6b 69 70 65 64  ttp://en.wikiped
16660 69 61 2e 6f 72 67 2f 77 69 6b 69 2f 47 72 65 67  ia.org/wiki/Greg
16670 6f 72 69 61 6e 5f 63 61 6c 65 6e 64 61 72 20 7c  orian_calendar |
16680 20 47 72 65 67 6f 72 69 61 6e 20 63 61 6c 65 6e   Gregorian calen
16690 64 61 72 5d 0a 73 79 73 74 65 6d 2e 20 20 49 74  dar].system.  It
166a0 20 69 73 20 61 6c 73 6f 20 61 73 73 75 6d 65 64   is also assumed
166b0 20 74 68 61 74 20 65 76 65 72 79 0a 64 61 79 20   that every.day 
166c0 69 73 20 65 78 61 63 74 6c 79 20 38 36 34 30 30  is exactly 86400
166d0 20 73 65 63 6f 6e 64 73 20 69 6e 20 64 75 72 61   seconds in dura
166e0 74 69 6f 6e 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e  tion.</p>..<tcl>
166f0 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  .###############
16700 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
16710 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
16720 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
16730 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a  ###############.
16740 53 65 63 74 69 6f 6e 20 7b 41 67 67 72 65 67 61  Section {Aggrega
16750 74 65 20 46 75 6e 63 74 69 6f 6e 73 7d 20 61 67  te Functions} ag
16760 67 66 75 6e 63 20 7b 2a 61 67 67 66 75 6e 63 7d  gfunc {*aggfunc}
16770 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 0a 54 68 65  .</tcl>..<p>.The
16780 20 61 67 67 72 65 67 61 74 65 20 66 75 6e 63 74   aggregate funct
16790 69 6f 6e 73 20 73 68 6f 77 6e 20 62 65 6c 6f 77  ions shown below
167a0 20 61 72 65 20 61 76 61 69 6c 61 62 6c 65 20 62   are available b
167b0 79 20 64 65 66 61 75 6c 74 2e 20 20 41 64 64 69  y default.  Addi
167c0 74 69 6f 6e 61 6c 0a 61 67 67 72 65 67 61 74 65  tional.aggregate
167d0 20 66 75 6e 63 74 69 6f 6e 73 20 77 72 69 74 74   functions writt
167e0 65 6e 20 69 6e 20 43 20 6d 61 79 20 62 65 20 61  en in C may be a
167f0 64 64 65 64 20 75 73 69 6e 67 20 74 68 65 20 0a  dded using the .
16800 5b 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f  [sqlite3_create_
16810 66 75 6e 63 74 69 6f 6e 28 29 5d 3c 2f 61 3e 0a  function()]</a>.
16820 41 50 49 2e 3c 2f 70 3e 0a 0a 3c 70 3e 0a 5e 49  API.</p>..<p>.^I
16830 6e 20 61 6e 79 20 61 67 67 72 65 67 61 74 65 20  n any aggregate 
16840 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 74 61  function that ta
16850 6b 65 73 20 61 20 73 69 6e 67 6c 65 20 61 72 67  kes a single arg
16860 75 6d 65 6e 74 2c 20 74 68 61 74 20 61 72 67 75  ument, that argu
16870 6d 65 6e 74 0a 63 61 6e 20 62 65 20 70 72 65 63  ment.can be prec
16880 65 64 65 64 20 62 79 20 74 68 65 20 6b 65 79 77  eded by the keyw
16890 6f 72 64 20 44 49 53 54 49 4e 43 54 2e 20 20 5e  ord DISTINCT.  ^
168a0 49 6e 20 73 75 63 68 20 63 61 73 65 73 2c 20 64  In such cases, d
168b0 75 70 6c 69 63 61 74 65 0a 65 6c 65 6d 65 6e 74  uplicate.element
168c0 73 20 61 72 65 20 66 69 6c 74 65 72 65 64 20 62  s are filtered b
168d0 65 66 6f 72 65 20 62 65 69 6e 67 20 70 61 73 73  efore being pass
168e0 65 64 20 69 6e 74 6f 20 74 68 65 20 61 67 67 72  ed into the aggr
168f0 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 2e 0a  egate function..
16900 5e 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 74 68  ^For example, th
16910 65 20 66 75 6e 63 74 69 6f 6e 20 22 63 6f 75 6e  e function "coun
16920 74 28 64 69 73 74 69 6e 63 74 20 58 29 22 20 77  t(distinct X)" w
16930 69 6c 6c 20 72 65 74 75 72 6e 20 74 68 65 20 6e  ill return the n
16940 75 6d 62 65 72 0a 6f 66 20 64 69 73 74 69 6e 63  umber.of distinc
16950 74 20 76 61 6c 75 65 73 20 6f 66 20 63 6f 6c 75  t values of colu
16960 6d 6e 20 58 20 69 6e 73 74 65 61 64 20 6f 66 20  mn X instead of 
16970 74 68 65 20 74 6f 74 61 6c 20 6e 75 6d 62 65 72  the total number
16980 20 6f 66 20 6e 6f 6e 2d 6e 75 6c 6c 0a 76 61 6c   of non-null.val
16990 75 65 73 20 69 6e 20 63 6f 6c 75 6d 6e 20 58 2e  ues in column X.
169a0 0a 3c 2f 70 3e 0a 0a 3c 74 61 62 6c 65 20 62 6f  .</p>..<table bo
169b0 72 64 65 72 3d 30 20 63 65 6c 6c 70 61 64 64 69  rder=0 cellpaddi
169c0 6e 67 3d 31 30 3e 0a 3c 74 63 6c 3e 0a 66 75 6e  ng=10>.<tcl>.fun
169d0 63 64 65 66 20 7b 61 76 67 28 58 29 7d 20 7b 2a  cdef {avg(X)} {*
169e0 61 76 67 20 7b 61 76 67 28 29 20 61 67 67 72 65  avg {avg() aggre
169f0 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 7d 7d 20  gate function}} 
16a00 7b 0a 20 20 5e 54 68 65 20 61 76 67 28 29 20 66  {.  ^The avg() f
16a10 75 6e 63 74 69 6f 6e 0a 20 20 72 65 74 75 72 6e  unction.  return
16a20 73 20 74 68 65 20 61 76 65 72 61 67 65 20 76 61  s the average va
16a30 6c 75 65 20 6f 66 20 61 6c 6c 20 6e 6f 6e 2d 4e  lue of all non-N
16a40 55 4c 4c 20 3c 69 3e 58 3c 2f 69 3e 20 77 69 74  ULL <i>X</i> wit
16a50 68 69 6e 20 61 0a 20 20 67 72 6f 75 70 2e 20 20  hin a.  group.  
16a60 5e 53 74 72 69 6e 67 20 61 6e 64 20 42 4c 4f 42  ^String and BLOB
16a70 20 76 61 6c 75 65 73 20 74 68 61 74 20 64 6f 20   values that do 
16a80 6e 6f 74 20 6c 6f 6f 6b 20 6c 69 6b 65 20 6e 75  not look like nu
16a90 6d 62 65 72 73 20 61 72 65 0a 20 20 69 6e 74 65  mbers are.  inte
16aa0 72 70 72 65 74 65 64 20 61 73 20 30 2e 0a 20 20  rpreted as 0..  
16ab0 5e 54 68 65 20 72 65 73 75 6c 74 20 6f 66 20 61  ^The result of a
16ac0 76 67 28 29 20 69 73 20 61 6c 77 61 79 73 20 61  vg() is always a
16ad0 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20   floating point 
16ae0 76 61 6c 75 65 20 61 73 20 6c 6f 6e 67 20 61 73  value as long as
16af0 0a 20 20 61 74 20 74 68 65 72 65 20 69 73 20 61  .  at there is a
16b00 74 20 6c 65 61 73 74 20 6f 6e 65 20 6e 6f 6e 2d  t least one non-
16b10 4e 55 4c 4c 20 69 6e 70 75 74 20 65 76 65 6e 20  NULL input even 
16b20 69 66 20 61 6c 6c 0a 20 20 69 6e 70 75 74 73 20  if all.  inputs 
16b30 61 72 65 20 69 6e 74 65 67 65 72 73 2e 20 20 5e  are integers.  ^
16b40 54 68 65 20 72 65 73 75 6c 74 20 6f 66 20 61 76  The result of av
16b50 67 28 29 20 69 73 20 4e 55 4c 4c 20 69 66 20 61  g() is NULL if a
16b60 6e 64 20 6f 6e 6c 79 20 69 66 0a 20 20 74 68 65  nd only if.  the
16b70 72 65 20 61 72 65 20 6e 6f 20 6e 6f 6e 2d 4e 55  re are no non-NU
16b80 4c 4c 20 69 6e 70 75 74 73 2e 20 20 0a 7d 0a 0a  LL inputs.  .}..
16b90 66 75 6e 63 64 65 66 20 7b 63 6f 75 6e 74 28 58  funcdef {count(X
16ba0 29 20 63 6f 75 6e 74 28 2a 29 7d 20 7b 2a 63 6f  ) count(*)} {*co
16bb0 75 6e 74 20 7b 63 6f 75 6e 74 28 29 20 61 67 67  unt {count() agg
16bc0 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 7d  regate function}
16bd0 7d 20 7b 0a 20 20 5e 54 68 65 20 63 6f 75 6e 74  } {.  ^The count
16be0 28 58 29 20 66 75 6e 63 74 69 6f 6e 20 72 65 74  (X) function ret
16bf0 75 72 6e 73 0a 20 20 61 20 63 6f 75 6e 74 20 6f  urns.  a count o
16c00 66 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  f the number of 
16c10 74 69 6d 65 73 0a 20 20 74 68 61 74 20 3c 69 3e  times.  that <i>
16c20 58 3c 2f 69 3e 20 69 73 20 6e 6f 74 20 4e 55 4c  X</i> is not NUL
16c30 4c 20 69 6e 20 61 20 67 72 6f 75 70 2e 20 20 5e  L in a group.  ^
16c40 54 68 65 20 63 6f 75 6e 74 28 2a 29 20 66 75 6e  The count(*) fun
16c50 63 74 69 6f 6e 0a 20 20 28 77 69 74 68 20 6e 6f  ction.  (with no
16c60 20 61 72 67 75 6d 65 6e 74 73 29 20 72 65 74 75   arguments) retu
16c70 72 6e 73 20 74 68 65 20 74 6f 74 61 6c 20 6e 75  rns the total nu
16c80 6d 62 65 72 20 6f 66 20 72 6f 77 73 20 69 6e 20  mber of rows in 
16c90 74 68 65 20 67 72 6f 75 70 2e 0a 7d 0a 0a 66 75  the group..}..fu
16ca0 6e 63 64 65 66 20 7b 67 72 6f 75 70 5f 63 6f 6e  ncdef {group_con
16cb0 63 61 74 28 58 29 20 67 72 6f 75 70 5f 63 6f 6e  cat(X) group_con
16cc0 63 61 74 28 58 2c 59 29 7d 20 7b 0a 20 20 2a 67  cat(X,Y)} {.  *g
16cd0 72 6f 75 70 5f 63 6f 6e 63 61 74 20 7b 67 72 6f  roup_concat {gro
16ce0 75 70 5f 63 6f 6e 63 61 74 28 29 20 61 67 67 72  up_concat() aggr
16cf0 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 7d 0a  egate function}.
16d00 7d 20 7b 0a 20 20 5e 54 68 65 20 67 72 6f 75 70  } {.  ^The group
16d10 5f 63 6f 6e 63 61 74 28 29 20 66 75 6e 63 74 69  _concat() functi
16d20 6f 6e 20 72 65 74 75 72 6e 73 0a 20 20 61 20 73  on returns.  a s
16d30 74 72 69 6e 67 20 77 68 69 63 68 20 69 73 20 74  tring which is t
16d40 68 65 20 63 6f 6e 63 61 74 65 6e 61 74 69 6f 6e  he concatenation
16d50 20 6f 66 0a 20 20 61 6c 6c 20 6e 6f 6e 2d 4e 55   of.  all non-NU
16d60 4c 4c 20 76 61 6c 75 65 73 20 6f 66 20 3c 69 3e  LL values of <i>
16d70 58 3c 2f 69 3e 2e 20 20 5e 49 66 20 70 61 72 61  X</i>.  ^If para
16d80 6d 65 74 65 72 20 3c 69 3e 59 3c 2f 69 3e 20 69  meter <i>Y</i> i
16d90 73 20 70 72 65 73 65 6e 74 20 74 68 65 6e 0a 20  s present then. 
16da0 20 69 73 20 69 73 20 75 73 65 64 20 61 73 20 74   is is used as t
16db0 68 65 20 73 65 70 61 72 61 74 6f 72 0a 20 20 62  he separator.  b
16dc0 65 74 77 65 65 6e 20 69 6e 73 74 61 6e 63 65 73  etween instances
16dd0 20 6f 66 20 3c 69 3e 58 3c 2f 69 3e 2e 20 20 5e   of <i>X</i>.  ^
16de0 41 20 63 6f 6d 6d 61 20 28 22 2c 22 29 20 69 73  A comma (",") is
16df0 20 75 73 65 64 20 61 73 20 74 68 65 20 73 65 70   used as the sep
16e00 61 72 61 74 6f 72 0a 20 20 69 66 20 3c 69 3e 59  arator.  if <i>Y
16e10 3c 2f 69 3e 20 69 73 20 6f 6d 69 74 74 65 64 2e  </i> is omitted.
16e20 20 20 54 68 65 20 6f 72 64 65 72 20 6f 66 20 74    The order of t
16e30 68 65 20 63 6f 6e 63 61 74 65 6e 61 74 65 64 20  he concatenated 
16e40 65 6c 65 6d 65 6e 74 73 20 69 73 0a 20 20 61 72  elements is.  ar
16e50 62 69 74 72 61 72 79 2e 0a 7d 0a 0a 66 75 6e 63  bitrary..}..func
16e60 64 65 66 20 7b 6d 61 78 28 58 29 7d 20 7b 2a 6d  def {max(X)} {*m
16e70 61 78 41 67 67 46 75 6e 63 20 2a 61 67 67 5f 6d  axAggFunc *agg_m
16e80 61 78 20 7b 6d 61 78 28 29 20 61 67 67 72 65 67  ax {max() aggreg
16e90 61 74 65 20 66 75 6e 63 74 69 6f 6e 7d 7d 20 7b  ate function}} {
16ea0 0a 20 20 5e 54 68 65 20 6d 61 78 28 29 20 61 67  .  ^The max() ag
16eb0 67 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e  gregate function
16ec0 0a 20 20 72 65 74 75 72 6e 73 20 74 68 65 20 6d  .  returns the m
16ed0 61 78 69 6d 75 6d 20 76 61 6c 75 65 20 6f 66 20  aximum value of 
16ee0 61 6c 6c 20 76 61 6c 75 65 73 20 69 6e 20 74 68  all values in th
16ef0 65 20 67 72 6f 75 70 2e 0a 20 20 5e 54 68 65 20  e group..  ^The 
16f00 6d 61 78 69 6d 75 6d 20 76 61 6c 75 65 20 69 73  maximum value is
16f10 20 74 68 65 20 76 61 6c 75 65 20 74 68 61 74 20   the value that 
16f20 77 6f 75 6c 64 20 62 65 20 72 65 74 75 72 6e 65  would be returne
16f30 64 20 6c 61 73 74 20 69 6e 20 61 6e 0a 20 20 4f  d last in an.  O
16f40 52 44 45 52 20 42 59 20 6f 6e 20 74 68 65 20 73  RDER BY on the s
16f50 61 6d 65 20 63 6f 6c 75 6d 6e 2e 20 20 5e 41 67  ame column.  ^Ag
16f60 67 72 65 67 61 74 65 20 6d 61 78 28 29 20 72 65  gregate max() re
16f70 74 75 72 6e 73 20 4e 55 4c 4c 20 0a 20 20 69 66  turns NULL .  if
16f80 20 61 6e 64 20 6f 6e 6c 79 20 69 66 20 74 68 65   and only if the
16f90 72 65 20 61 72 65 20 6e 6f 20 6e 6f 6e 2d 4e 55  re are no non-NU
16fa0 4c 4c 20 76 61 6c 75 65 73 20 69 6e 20 74 68 65  LL values in the
16fb0 20 67 72 6f 75 70 2e 0a 7d 0a 0a 66 75 6e 63 64   group..}..funcd
16fc0 65 66 20 7b 6d 69 6e 28 58 29 7d 20 7b 2a 6d 69  ef {min(X)} {*mi
16fd0 6e 41 67 67 46 75 6e 63 20 2a 61 67 67 5f 6d 69  nAggFunc *agg_mi
16fe0 6e 20 7b 6d 69 6e 28 29 20 61 67 67 72 65 67 61  n {min() aggrega
16ff0 74 65 20 66 75 6e 63 74 69 6f 6e 7d 7d 20 7b 0a  te function}} {.
17000 20 20 5e 54 68 65 20 6d 69 6e 28 29 20 61 67 67    ^The min() agg
17010 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 0a  regate function.
17020 20 20 72 65 74 75 72 6e 73 20 74 68 65 20 6d 69    returns the mi
17030 6e 69 6d 75 6d 20 6e 6f 6e 2d 4e 55 4c 4c 20 76  nimum non-NULL v
17040 61 6c 75 65 20 6f 66 20 61 6c 6c 20 76 61 6c 75  alue of all valu
17050 65 73 20 69 6e 20 74 68 65 20 67 72 6f 75 70 2e  es in the group.
17060 0a 20 20 5e 54 68 65 20 6d 69 6e 69 6d 75 6d 20  .  ^The minimum 
17070 76 61 6c 75 65 20 69 73 20 74 68 65 20 66 69 72  value is the fir
17080 73 74 20 6e 6f 6e 2d 4e 55 4c 4c 20 76 61 6c 75  st non-NULL valu
17090 65 20 74 68 61 74 20 77 6f 75 6c 64 20 61 70 70  e that would app
170a0 65 61 72 0a 20 20 69 6e 20 61 6e 20 4f 52 44 45  ear.  in an ORDE
170b0 52 20 42 59 20 6f 66 20 74 68 65 20 63 6f 6c 75  R BY of the colu
170c0 6d 6e 2e 0a 20 20 5e 41 67 67 72 65 67 61 74 65  mn..  ^Aggregate
170d0 20 6d 69 6e 28 29 20 72 65 74 75 72 6e 73 20 4e   min() returns N
170e0 55 4c 4c 20 69 66 20 61 6e 64 20 6f 6e 6c 79 20  ULL if and only 
170f0 69 66 20 74 68 65 72 65 20 61 72 65 20 6e 6f 20  if there are no 
17100 6e 6f 6e 2d 4e 55 4c 4c 0a 20 20 76 61 6c 75 65  non-NULL.  value
17110 73 20 69 6e 20 74 68 65 20 67 72 6f 75 70 2e 0a  s in the group..
17120 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 73 75 6d 28  }..funcdef {sum(
17130 58 29 20 74 6f 74 61 6c 28 58 29 7d 20 7b 0a 20  X) total(X)} {. 
17140 20 2a 73 75 6d 46 75 6e 63 20 2a 73 75 6d 20 2a   *sumFunc *sum *
17150 74 6f 74 61 6c 0a 20 20 7b 73 75 6d 28 29 20 61  total.  {sum() a
17160 67 67 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f  ggregate functio
17170 6e 7d 0a 20 20 7b 74 6f 74 61 6c 28 29 20 61 67  n}.  {total() ag
17180 67 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e  gregate function
17190 7d 0a 7d 20 7b 0a 20 20 5e 54 68 65 20 73 75 6d  }.} {.  ^The sum
171a0 28 29 20 61 6e 64 20 74 6f 74 61 6c 28 29 20 61  () and total() a
171b0 67 67 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f  ggregate functio
171c0 6e 73 0a 20 20 72 65 74 75 72 6e 20 73 75 6d 20  ns.  return sum 
171d0 6f 66 20 61 6c 6c 20 6e 6f 6e 2d 4e 55 4c 4c 20  of all non-NULL 
171e0 76 61 6c 75 65 73 20 69 6e 20 74 68 65 20 67 72  values in the gr
171f0 6f 75 70 2e 0a 20 20 5e 49 66 20 74 68 65 72 65  oup..  ^If there
17200 20 61 72 65 20 6e 6f 20 6e 6f 6e 2d 4e 55 4c 4c   are no non-NULL
17210 20 69 6e 70 75 74 20 72 6f 77 73 20 74 68 65 6e   input rows then
17220 20 73 75 6d 28 29 20 72 65 74 75 72 6e 73 0a 20   sum() returns. 
17230 20 4e 55 4c 4c 20 62 75 74 20 74 6f 74 61 6c 28   NULL but total(
17240 29 20 72 65 74 75 72 6e 73 20 30 2e 30 2e 0a 20  ) returns 0.0.. 
17250 20 4e 55 4c 4c 20 69 73 20 6e 6f 74 20 6e 6f 72   NULL is not nor
17260 6d 61 6c 6c 79 20 61 20 68 65 6c 70 66 75 6c 20  mally a helpful 
17270 72 65 73 75 6c 74 20 66 6f 72 20 74 68 65 20 73  result for the s
17280 75 6d 20 6f 66 20 6e 6f 20 72 6f 77 73 0a 20 20  um of no rows.  
17290 62 75 74 20 74 68 65 20 53 51 4c 20 73 74 61 6e  but the SQL stan
172a0 64 61 72 64 20 72 65 71 75 69 72 65 73 20 69 74  dard requires it
172b0 20 61 6e 64 20 6d 6f 73 74 20 6f 74 68 65 72 0a   and most other.
172c0 20 20 53 51 4c 20 64 61 74 61 62 61 73 65 20 65    SQL database e
172d0 6e 67 69 6e 65 73 20 69 6d 70 6c 65 6d 65 6e 74  ngines implement
172e0 20 73 75 6d 28 29 20 74 68 61 74 20 77 61 79 20   sum() that way 
172f0 73 6f 20 53 51 4c 69 74 65 20 64 6f 65 73 20 69  so SQLite does i
17300 74 20 69 6e 20 74 68 65 0a 20 20 73 61 6d 65 20  t in the.  same 
17310 77 61 79 20 69 6e 20 6f 72 64 65 72 20 74 6f 20  way in order to 
17320 62 65 20 63 6f 6d 70 61 74 69 62 6c 65 2e 20 20  be compatible.  
17330 20 54 68 65 20 6e 6f 6e 2d 73 74 61 6e 64 61 72   The non-standar
17340 64 20 74 6f 74 61 6c 28 29 20 66 75 6e 63 74 69  d total() functi
17350 6f 6e 0a 20 20 69 73 20 70 72 6f 76 69 64 65 64  on.  is provided
17360 20 61 73 20 61 20 63 6f 6e 76 65 6e 69 65 6e 74   as a convenient
17370 20 77 61 79 20 74 6f 20 77 6f 72 6b 20 61 72 6f   way to work aro
17380 75 6e 64 20 74 68 69 73 20 64 65 73 69 67 6e 20  und this design 
17390 70 72 6f 62 6c 65 6d 0a 20 20 69 6e 20 74 68 65  problem.  in the
173a0 20 53 51 4c 20 6c 61 6e 67 75 61 67 65 2e 3c 2f   SQL language.</
173b0 70 3e 0a 0a 20 20 3c 70 3e 5e 54 68 65 20 72 65  p>..  <p>^The re
173c0 73 75 6c 74 20 6f 66 20 74 6f 74 61 6c 28 29 20  sult of total() 
173d0 69 73 20 61 6c 77 61 79 73 20 61 20 66 6c 6f 61  is always a floa
173e0 74 69 6e 67 20 70 6f 69 6e 74 20 76 61 6c 75 65  ting point value
173f0 2e 0a 20 20 5e 54 68 65 20 72 65 73 75 6c 74 20  ..  ^The result 
17400 6f 66 20 73 75 6d 28 29 20 69 73 20 61 6e 20 69  of sum() is an i
17410 6e 74 65 67 65 72 20 76 61 6c 75 65 20 69 66 20  nteger value if 
17420 61 6c 6c 20 6e 6f 6e 2d 4e 55 4c 4c 20 69 6e 70  all non-NULL inp
17430 75 74 73 20 61 72 65 20 69 6e 74 65 67 65 72 73  uts are integers
17440 2e 0a 20 20 5e 49 66 20 61 6e 79 20 69 6e 70 75  ..  ^If any inpu
17450 74 20 74 6f 20 73 75 6d 28 29 20 69 73 20 6e 65  t to sum() is ne
17460 69 74 68 65 72 20 61 6e 20 69 6e 74 65 67 65 72  ither an integer
17470 20 6f 72 20 61 20 4e 55 4c 4c 0a 20 20 74 68 65   or a NULL.  the
17480 6e 20 73 75 6d 28 29 20 72 65 74 75 72 6e 73 20  n sum() returns 
17490 61 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74  a floating point
174a0 20 76 61 6c 75 65 0a 20 20 77 68 69 63 68 20 6d   value.  which m
174b0 69 67 68 74 20 62 65 20 61 6e 20 61 70 70 72 6f  ight be an appro
174c0 78 69 6d 61 74 69 6f 6e 20 74 6f 20 74 68 65 20  ximation to the 
174d0 74 72 75 65 20 73 75 6d 2e 3c 2f 70 3e 0a 0a 20  true sum.</p>.. 
174e0 20 3c 70 3e 5e 53 75 6d 28 29 20 77 69 6c 6c 20   <p>^Sum() will 
174f0 74 68 72 6f 77 20 61 6e 20 22 69 6e 74 65 67 65  throw an "intege
17500 72 20 6f 76 65 72 66 6c 6f 77 22 20 65 78 63 65  r overflow" exce
17510 70 74 69 6f 6e 20 69 66 20 61 6c 6c 20 69 6e 70  ption if all inp
17520 75 74 73 0a 20 20 61 72 65 20 69 6e 74 65 67 65  uts.  are intege
17530 72 73 20 6f 72 20 4e 55 4c 4c 0a 20 20 61 6e 64  rs or NULL.  and
17540 20 61 6e 20 69 6e 74 65 67 65 72 20 6f 76 65 72   an integer over
17550 66 6c 6f 77 20 6f 63 63 75 72 73 20 61 74 20 61  flow occurs at a
17560 6e 79 20 70 6f 69 6e 74 20 64 75 72 69 6e 67 20  ny point during 
17570 74 68 65 20 63 6f 6d 70 75 74 61 74 69 6f 6e 2e  the computation.
17580 0a 20 20 5e 54 6f 74 61 6c 28 29 20 6e 65 76 65  .  ^Total() neve
17590 72 20 74 68 72 6f 77 73 20 61 6e 20 69 6e 74 65  r throws an inte
175a0 67 65 72 20 6f 76 65 72 66 6c 6f 77 2e 0a 7d 0a  ger overflow..}.
175b0 3c 2f 74 63 6c 3e 0a 3c 2f 74 61 62 6c 65 3e 0a  </tcl>.</table>.
175c0 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23  .<tcl>.#########
175d0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
175e0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
175f0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17600 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17610 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 49 4e  #####.Section IN
17620 53 45 52 54 20 69 6e 73 65 72 74 20 7b 49 4e 53  SERT insert {INS
17630 45 52 54 20 2a 49 4e 53 45 52 54 73 7d 0a 0a 42  ERT *INSERTs}..B
17640 75 62 62 6c 65 44 69 61 67 72 61 6d 20 69 6e 73  ubbleDiagram ins
17650 65 72 74 2d 73 74 6d 74 20 31 0a 3c 2f 74 63 6c  ert-stmt 1.</tcl
17660 3e 0a 0a 3c 70 3e 54 68 65 20 49 4e 53 45 52 54  >..<p>The INSERT
17670 20 73 74 61 74 65 6d 65 6e 74 20 63 6f 6d 65 73   statement comes
17680 20 69 6e 20 74 68 72 65 65 20 62 61 73 69 63 20   in three basic 
17690 66 6f 72 6d 73 2e 20 20 5e 54 68 65 20 66 69 72  forms.  ^The fir
176a0 73 74 20 66 6f 72 6d 0a 28 77 69 74 68 20 74 68  st form.(with th
176b0 65 20 22 56 41 4c 55 45 53 22 20 6b 65 79 77 6f  e "VALUES" keywo
176c0 72 64 29 20 63 72 65 61 74 65 73 20 61 20 73 69  rd) creates a si
176d0 6e 67 6c 65 20 6e 65 77 20 72 6f 77 20 69 6e 20  ngle new row in 
176e0 61 6e 20 65 78 69 73 74 69 6e 67 20 74 61 62 6c  an existing tabl
176f0 65 2e 0a 5e 49 66 20 6e 6f 20 63 6f 6c 75 6d 6e  e..^If no column
17700 2d 6c 69 73 74 20 69 73 20 73 70 65 63 69 66 69  -list is specifi
17710 65 64 20 74 68 65 6e 20 74 68 65 20 6e 75 6d 62  ed then the numb
17720 65 72 20 6f 66 20 76 61 6c 75 65 73 20 6d 75 73  er of values mus
17730 74 0a 62 65 20 74 68 65 20 73 61 6d 65 20 61 73  t.be the same as
17740 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 63   the number of c
17750 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65 20 74 61  olumns in the ta
17760 62 6c 65 2e 20 20 5e 49 66 20 61 20 63 6f 6c 75  ble.  ^If a colu
17770 6d 6e 2d 6c 69 73 74 0a 69 73 20 73 70 65 63 69  mn-list.is speci
17780 66 69 65 64 2c 20 74 68 65 6e 20 74 68 65 20 6e  fied, then the n
17790 75 6d 62 65 72 20 6f 66 20 76 61 6c 75 65 73 20  umber of values 
177a0 6d 75 73 74 20 6d 61 74 63 68 20 74 68 65 20 6e  must match the n
177b0 75 6d 62 65 72 20 6f 66 0a 73 70 65 63 69 66 69  umber of.specifi
177c0 65 64 20 63 6f 6c 75 6d 6e 73 2e 20 20 5e 43 6f  ed columns.  ^Co
177d0 6c 75 6d 6e 73 20 6f 66 20 74 68 65 20 74 61 62  lumns of the tab
177e0 6c 65 20 74 68 61 74 20 64 6f 20 6e 6f 74 20 61  le that do not a
177f0 70 70 65 61 72 20 69 6e 20 74 68 65 0a 63 6f 6c  ppear in the.col
17800 75 6d 6e 20 6c 69 73 74 20 61 72 65 20 66 69 6c  umn list are fil
17810 6c 65 64 20 77 69 74 68 20 74 68 65 20 64 65 66  led with the def
17820 61 75 6c 74 20 76 61 6c 75 65 2c 20 6f 72 20 77  ault value, or w
17830 69 74 68 20 4e 55 4c 4c 20 69 66 20 6e 6f 0a 64  ith NULL if no.d
17840 65 66 61 75 6c 74 20 76 61 6c 75 65 20 69 73 20  efault value is 
17850 73 70 65 63 69 66 69 65 64 2e 0a 3c 2f 70 3e 0a  specified..</p>.
17860 0a 3c 70 3e 5e 54 68 65 20 73 65 63 6f 6e 64 20  .<p>^The second 
17870 66 6f 72 6d 20 6f 66 20 74 68 65 20 49 4e 53 45  form of the INSE
17880 52 54 20 73 74 61 74 65 6d 65 6e 74 20 74 61 6b  RT statement tak
17890 65 73 20 69 74 73 20 64 61 74 61 20 66 72 6f 6d  es its data from
178a0 20 61 0a 53 45 4c 45 43 54 20 73 74 61 74 65 6d   a.SELECT statem
178b0 65 6e 74 2e 20 20 5e 54 68 65 20 6e 75 6d 62 65  ent.  ^The numbe
178c0 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20  r of columns in 
178d0 74 68 65 20 72 65 73 75 6c 74 20 6f 66 20 74 68  the result of th
178e0 65 0a 53 45 4c 45 43 54 20 6d 75 73 74 20 65 78  e.SELECT must ex
178f0 61 63 74 6c 79 20 6d 61 74 63 68 20 74 68 65 20  actly match the 
17900 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e  number of column
17910 73 20 69 6e 20 74 68 65 20 74 61 62 6c 65 20 69  s in the table i
17920 66 0a 6e 6f 20 63 6f 6c 75 6d 6e 20 6c 69 73 74  f.no column list
17930 20 69 73 20 73 70 65 63 69 66 69 65 64 2c 20 6f   is specified, o
17940 72 20 69 74 20 6d 75 73 74 20 6d 61 74 63 68 20  r it must match 
17950 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f  the number of co
17960 6c 75 6d 6e 73 0a 6e 61 6d 65 64 20 69 6e 20 74  lumns.named in t
17970 68 65 20 63 6f 6c 75 6d 6e 20 6c 69 73 74 2e 20  he column list. 
17980 20 5e 41 20 6e 65 77 20 65 6e 74 72 79 20 69 73   ^A new entry is
17990 20 6d 61 64 65 20 69 6e 20 74 68 65 20 74 61 62   made in the tab
179a0 6c 65 0a 66 6f 72 20 65 76 65 72 79 20 72 6f 77  le.for every row
179b0 20 6f 66 20 74 68 65 20 53 45 4c 45 43 54 20 72   of the SELECT r
179c0 65 73 75 6c 74 2e 20 20 5e 54 68 65 20 53 45 4c  esult.  ^The SEL
179d0 45 43 54 20 6d 61 79 20 62 65 20 73 69 6d 70 6c  ECT may be simpl
179e0 65 0a 6f 72 20 63 6f 6d 70 6f 75 6e 64 2e 3c 2f  e.or compound.</
179f0 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20 74 68 69 72  p>..<p>^The thir
17a00 64 20 66 6f 72 6d 20 6f 66 20 61 6e 20 49 4e 53  d form of an INS
17a10 45 52 54 20 73 74 61 74 65 6d 65 6e 74 20 69 73  ERT statement is
17a20 20 77 69 74 68 20 44 45 46 41 55 4c 54 20 56 41   with DEFAULT VA
17a30 4c 55 45 53 2e 0a 5e 28 54 68 65 20 49 4e 53 45  LUES..^(The INSE
17a40 52 54 20 2e 2e 2e 20 44 45 46 41 55 4c 54 20 56  RT ... DEFAULT V
17a50 41 4c 55 45 53 20 73 74 61 74 65 6d 65 6e 74 20  ALUES statement 
17a60 73 69 6d 70 6c 79 20 63 72 65 61 74 65 73 20 61  simply creates a
17a70 20 73 69 6e 67 6c 65 20 6e 65 77 0a 72 6f 77 20   single new.row 
17a80 69 6e 20 74 68 65 20 74 61 62 6c 65 20 69 6e 20  in the table in 
17a90 77 68 69 63 68 20 65 61 63 68 20 63 6f 6c 75 6d  which each colum
17aa0 6e 20 69 73 20 66 69 6c 6c 65 64 20 77 69 74 68  n is filled with
17ab0 20 69 74 73 20 64 65 66 61 75 6c 74 20 76 61 6c   its default val
17ac0 75 65 2e 29 5e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54  ue.)^</p>..<p>^T
17ad0 68 65 20 6f 70 74 69 6f 6e 61 6c 20 63 6f 6e 66  he optional conf
17ae0 6c 69 63 74 2d 63 6c 61 75 73 65 20 61 6c 6c 6f  lict-clause allo
17af0 77 73 20 74 68 65 20 73 70 65 63 69 66 69 63 61  ws the specifica
17b00 74 69 6f 6e 20 6f 66 20 61 6e 20 61 6c 74 65 72  tion of an alter
17b10 6e 61 74 69 76 65 0a 63 6f 6e 73 74 72 61 69 6e  native.constrain
17b20 74 20 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c  t conflict resol
17b30 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 20  ution algorithm 
17b40 74 6f 20 75 73 65 20 64 75 72 69 6e 67 20 74 68  to use during th
17b50 69 73 20 6f 6e 65 20 49 4e 53 45 52 54 20 63 6f  is one INSERT co
17b60 6d 6d 61 6e 64 2e 0a 53 65 65 20 74 68 65 20 73  mmand..See the s
17b70 65 63 74 69 6f 6e 20 74 69 74 6c 65 64 0a 5b 4f  ection titled.[O
17b80 4e 20 43 4f 4e 46 4c 49 43 54 5d 20 66 6f 72 20  N CONFLICT] for 
17b90 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72  additional infor
17ba0 6d 61 74 69 6f 6e 2e 0a 5e 46 6f 72 20 63 6f 6d  mation..^For com
17bb0 70 61 74 69 62 69 6c 69 74 79 20 77 69 74 68 20  patibility with 
17bc0 4d 79 53 51 4c 2c 20 74 68 65 20 70 61 72 73 65  MySQL, the parse
17bd0 72 20 61 6c 6c 6f 77 73 20 74 68 65 20 75 73 65  r allows the use
17be0 20 6f 66 20 74 68 65 0a 73 69 6e 67 6c 65 20 6b   of the.single k
17bf0 65 79 77 6f 72 64 20 3c 61 20 68 72 65 66 3d 22  eyword <a href="
17c00 6c 61 6e 67 5f 72 65 70 6c 61 63 65 2e 68 74 6d  lang_replace.htm
17c10 6c 22 3e 52 45 50 4c 41 43 45 3c 2f 61 3e 20 61  l">REPLACE</a> a
17c20 73 20 61 6e 20 0a 61 6c 69 61 73 20 66 6f 72 20  s an .alias for 
17c30 22 49 4e 53 45 52 54 20 4f 52 20 52 45 50 4c 41  "INSERT OR REPLA
17c40 43 45 22 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 5e 28  CE"..</p>..<p>^(
17c50 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20 22 3c 69  The optional "<i
17c60 3e 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3c 2f  >database-name</
17c70 69 3e 3c 62 3e 2e 3c 2f 62 3e 22 20 70 72 65 66  i><b>.</b>" pref
17c80 69 78 20 6f 6e 20 74 68 65 20 3c 69 3e 74 61 62  ix on the <i>tab
17c90 6c 65 2d 6e 61 6d 65 3c 2f 69 3e 0a 69 73 20 73  le-name</i>.is s
17ca0 75 70 70 6f 72 74 20 66 6f 72 20 74 6f 70 2d 6c  upport for top-l
17cb0 65 76 65 6c 20 49 4e 53 45 52 54 20 73 74 61 74  evel INSERT stat
17cc0 65 6d 65 6e 74 73 20 6f 6e 6c 79 2e 29 5e 20 20  ements only.)^  
17cd0 5e 54 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 20  ^The table name 
17ce0 6d 75 73 74 20 62 65 0a 75 6e 71 75 61 6c 69 66  must be.unqualif
17cf0 69 65 64 20 66 6f 72 20 49 4e 53 45 52 54 20 73  ied for INSERT s
17d00 74 61 74 65 6d 65 6e 74 73 20 74 68 61 74 20 6f  tatements that o
17d10 63 63 75 72 20 77 69 74 68 69 6e 20 5b 43 52 45  ccur within [CRE
17d20 41 54 45 20 54 52 49 47 47 45 52 5d 20 73 74 61  ATE TRIGGER] sta
17d30 74 65 6d 65 6e 74 73 2e 0a 5e 53 69 6d 69 6c 61  tements..^Simila
17d40 72 6c 79 2c 20 74 68 65 20 22 44 45 46 41 55 4c  rly, the "DEFAUL
17d50 54 20 56 41 4c 55 45 53 22 20 66 6f 72 6d 20 6f  T VALUES" form o
17d60 66 20 74 68 65 20 49 4e 53 45 52 54 20 73 74 61  f the INSERT sta
17d70 74 65 6d 65 6e 74 20 69 73 20 73 75 70 70 6f 72  tement is suppor
17d80 74 65 64 20 66 6f 72 0a 74 6f 70 2d 6c 65 76 65  ted for.top-leve
17d90 6c 20 49 4e 53 45 52 54 20 73 74 61 74 65 6d 65  l INSERT stateme
17da0 6e 74 73 20 6f 6e 6c 79 20 61 6e 64 20 6e 6f 74  nts only and not
17db0 20 66 6f 72 20 49 4e 53 45 52 54 20 73 74 61 74   for INSERT stat
17dc0 65 6d 65 6e 74 73 20 77 69 74 68 69 6e 0a 74 72  ements within.tr
17dd0 69 67 67 65 72 73 2e 0a 3c 70 3e 0a 0a 3c 74 63  iggers..<p>..<tc
17de0 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23 23  l>.#############
17df0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17e00 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17e10 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17e20 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17e30 23 0a 53 65 63 74 69 6f 6e 20 7b 4f 4e 20 43 4f  #.Section {ON CO
17e40 4e 46 4c 49 43 54 20 63 6c 61 75 73 65 7d 20 63  NFLICT clause} c
17e50 6f 6e 66 6c 69 63 74 20 7b 7b 63 6f 6e 66 6c 69  onflict {{confli
17e60 63 74 20 63 6c 61 75 73 65 7d 20 7b 4f 4e 20 43  ct clause} {ON C
17e70 4f 4e 46 4c 49 43 54 7d 7d 0a 0a 42 75 62 62 6c  ONFLICT}}..Bubbl
17e80 65 44 69 61 67 72 61 6d 20 63 6f 6e 66 6c 69 63  eDiagram conflic
17e90 74 2d 63 6c 61 75 73 65 0a 3c 2f 74 63 6c 3e 0a  t-clause.</tcl>.
17ea0 0a 3c 70 3e 54 68 65 20 4f 4e 20 43 4f 4e 46 4c  .<p>The ON CONFL
17eb0 49 43 54 20 63 6c 61 75 73 65 20 69 73 20 6e 6f  ICT clause is no
17ec0 74 20 61 20 73 65 70 61 72 61 74 65 20 53 51 4c  t a separate SQL
17ed0 20 63 6f 6d 6d 61 6e 64 2e 20 20 49 74 20 69 73   command.  It is
17ee0 20 61 0a 6e 6f 6e 2d 73 74 61 6e 64 61 72 64 20   a.non-standard 
17ef0 63 6c 61 75 73 65 20 74 68 61 74 20 63 61 6e 20  clause that can 
17f00 61 70 70 65 61 72 20 69 6e 20 6d 61 6e 79 20 6f  appear in many o
17f10 74 68 65 72 20 53 51 4c 20 63 6f 6d 6d 61 6e 64  ther SQL command
17f20 73 2e 0a 49 74 20 69 73 20 67 69 76 65 6e 20 69  s..It is given i
17f30 74 73 20 6f 77 6e 20 73 65 63 74 69 6f 6e 20 69  ts own section i
17f40 6e 20 74 68 69 73 20 64 6f 63 75 6d 65 6e 74 20  n this document 
17f50 62 65 63 61 75 73 65 20 69 74 20 69 73 20 6e 6f  because it is no
17f60 74 0a 70 61 72 74 20 6f 66 20 73 74 61 6e 64 61  t.part of standa
17f70 72 64 20 53 51 4c 20 61 6e 64 20 74 68 65 72 65  rd SQL and there
17f80 66 6f 72 65 20 6d 69 67 68 74 20 6e 6f 74 20 62  fore might not b
17f90 65 20 66 61 6d 69 6c 69 61 72 2e 3c 2f 70 3e 0a  e familiar.</p>.
17fa0 0a 3c 70 3e 5e 54 68 65 20 73 79 6e 74 61 78 20  .<p>^The syntax 
17fb0 66 6f 72 20 74 68 65 20 4f 4e 20 43 4f 4e 46 4c  for the ON CONFL
17fc0 49 43 54 20 63 6c 61 75 73 65 20 69 73 20 61 73  ICT clause is as
17fd0 20 73 68 6f 77 6e 20 61 62 6f 76 65 20 66 6f 72   shown above for
17fe0 0a 74 68 65 20 43 52 45 41 54 45 20 54 41 42 4c  .the CREATE TABL
17ff0 45 20 63 6f 6d 6d 61 6e 64 2e 20 20 5e 46 6f 72  E command.  ^For
18000 20 74 68 65 20 49 4e 53 45 52 54 20 61 6e 64 0a   the INSERT and.
18010 55 50 44 41 54 45 20 63 6f 6d 6d 61 6e 64 73 2c  UPDATE commands,
18020 20 74 68 65 20 6b 65 79 77 6f 72 64 73 20 22 4f   the keywords "O
18030 4e 20 43 4f 4e 46 4c 49 43 54 22 20 61 72 65 20  N CONFLICT" are 
18040 72 65 70 6c 61 63 65 64 20 62 79 20 22 4f 52 22  replaced by "OR"
18050 2c 20 74 6f 20 6d 61 6b 65 0a 74 68 65 20 73 79  , to make.the sy
18060 6e 74 61 78 20 73 65 65 6d 20 6d 6f 72 65 20 6e  ntax seem more n
18070 61 74 75 72 61 6c 2e 20 20 5e 46 6f 72 20 65 78  atural.  ^For ex
18080 61 6d 70 6c 65 2c 20 69 6e 73 74 65 61 64 20 6f  ample, instead o
18090 66 0a 22 49 4e 53 45 52 54 20 4f 4e 20 43 4f 4e  f."INSERT ON CON
180a0 46 4c 49 43 54 20 49 47 4e 4f 52 45 22 20 77 65  FLICT IGNORE" we
180b0 20 68 61 76 65 20 22 49 4e 53 45 52 54 20 4f 52   have "INSERT OR
180c0 20 49 47 4e 4f 52 45 22 2e 0a 54 68 65 20 6b 65   IGNORE"..The ke
180d0 79 77 6f 72 64 73 20 63 68 61 6e 67 65 20 62 75  ywords change bu
180e0 74 20 74 68 65 20 6d 65 61 6e 69 6e 67 20 6f 66  t the meaning of
180f0 20 74 68 65 20 63 6c 61 75 73 65 20 69 73 20 74   the clause is t
18100 68 65 20 73 61 6d 65 0a 65 69 74 68 65 72 20 77  he same.either w
18110 61 79 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65  ay.</p>..<p>^The
18120 20 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 63 6c 61   ON CONFLICT cla
18130 75 73 65 20 73 70 65 63 69 66 69 65 73 20 61 6e  use specifies an
18140 20 61 6c 67 6f 72 69 74 68 6d 20 75 73 65 64 20   algorithm used 
18150 74 6f 20 72 65 73 6f 6c 76 65 0a 63 6f 6e 73 74  to resolve.const
18160 72 61 69 6e 74 20 63 6f 6e 66 6c 69 63 74 73 2e  raint conflicts.
18170 20 20 5e 54 68 65 72 65 20 61 72 65 20 66 69 76    ^There are fiv
18180 65 20 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c  e conflict resol
18190 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 20  ution algorithm 
181a0 63 68 6f 69 63 65 73 3a 0a 52 4f 4c 4c 42 41 43  choices:.ROLLBAC
181b0 4b 2c 20 41 42 4f 52 54 2c 20 46 41 49 4c 2c 20  K, ABORT, FAIL, 
181c0 49 47 4e 4f 52 45 2c 20 61 6e 64 20 52 45 50 4c  IGNORE, and REPL
181d0 41 43 45 2e 0a 5e 54 68 65 20 64 65 66 61 75 6c  ACE..^The defaul
181e0 74 20 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c  t conflict resol
181f0 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 20  ution algorithm 
18200 69 73 20 41 42 4f 52 54 2e 20 20 54 68 69 73 0a  is ABORT.  This.
18210 69 73 20 77 68 61 74 20 74 68 65 79 20 6d 65 61  is what they mea
18220 6e 3a 3c 2f 70 3e 0a 0a 3c 64 6c 3e 0a 3c 64 74  n:</p>..<dl>.<dt
18230 3e 3c 62 3e 52 4f 4c 4c 42 41 43 4b 3c 2f 62 3e  ><b>ROLLBACK</b>
18240 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 5e 57 68  </dt>.<dd><p>^Wh
18250 65 6e 20 61 20 63 6f 6e 73 74 72 61 69 6e 74 20  en a constraint 
18260 76 69 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72 73  violation occurs
18270 2c 20 61 6e 20 69 6d 6d 65 64 69 61 74 65 20 52  , an immediate R
18280 4f 4c 4c 42 41 43 4b 0a 6f 63 63 75 72 73 2c 20  OLLBACK.occurs, 
18290 74 68 75 73 20 65 6e 64 69 6e 67 20 74 68 65 20  thus ending the 
182a0 63 75 72 72 65 6e 74 20 74 72 61 6e 73 61 63 74  current transact
182b0 69 6f 6e 2c 20 61 6e 64 20 74 68 65 20 63 6f 6d  ion, and the com
182c0 6d 61 6e 64 20 61 62 6f 72 74 73 0a 77 69 74 68  mand aborts.with
182d0 20 61 20 72 65 74 75 72 6e 20 63 6f 64 65 20 6f   a return code o
182e0 66 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41  f SQLITE_CONSTRA
182f0 49 4e 54 2e 20 20 5e 49 66 20 6e 6f 20 74 72 61  INT.  ^If no tra
18300 6e 73 61 63 74 69 6f 6e 20 69 73 0a 61 63 74 69  nsaction is.acti
18310 76 65 20 28 6f 74 68 65 72 20 74 68 61 6e 20 74  ve (other than t
18320 68 65 20 69 6d 70 6c 69 65 64 20 74 72 61 6e 73  he implied trans
18330 61 63 74 69 6f 6e 20 74 68 61 74 20 69 73 20 63  action that is c
18340 72 65 61 74 65 64 20 6f 6e 20 65 76 65 72 79 0a  reated on every.
18350 63 6f 6d 6d 61 6e 64 29 20 74 68 65 6e 20 74 68  command) then th
18360 69 73 20 61 6c 67 6f 72 69 74 68 6d 20 77 6f 72  is algorithm wor
18370 6b 73 20 74 68 65 20 73 61 6d 65 20 61 73 20 41  ks the same as A
18380 42 4f 52 54 2e 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a  BORT.</p></dd>..
18390 3c 64 74 3e 3c 62 3e 41 42 4f 52 54 3c 2f 62 3e  <dt><b>ABORT</b>
183a0 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 5e 57 68  </dt>.<dd><p>^Wh
183b0 65 6e 20 61 20 63 6f 6e 73 74 72 61 69 6e 74 20  en a constraint 
183c0 76 69 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72 73  violation occurs
183d0 2c 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20 62 61  , the command ba
183e0 63 6b 73 20 6f 75 74 0a 61 6e 79 20 70 72 69 6f  cks out.any prio
183f0 72 20 63 68 61 6e 67 65 73 20 69 74 20 6d 69 67  r changes it mig
18400 68 74 20 68 61 76 65 20 6d 61 64 65 20 61 6e 64  ht have made and
18410 20 61 62 6f 72 74 73 20 77 69 74 68 20 61 20 72   aborts with a r
18420 65 74 75 72 6e 20 63 6f 64 65 0a 6f 66 20 53 51  eturn code.of SQ
18430 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 2e  LITE_CONSTRAINT.
18440 20 20 5e 42 75 74 20 6e 6f 20 52 4f 4c 4c 42 41    ^But no ROLLBA
18450 43 4b 20 69 73 20 65 78 65 63 75 74 65 64 20 73  CK is executed s
18460 6f 20 63 68 61 6e 67 65 73 0a 66 72 6f 6d 20 70  o changes.from p
18470 72 69 6f 72 20 63 6f 6d 6d 61 6e 64 73 20 77 69  rior commands wi
18480 74 68 69 6e 20 74 68 65 20 73 61 6d 65 20 74 72  thin the same tr
18490 61 6e 73 61 63 74 69 6f 6e 0a 61 72 65 20 70 72  ansaction.are pr
184a0 65 73 65 72 76 65 64 2e 20 20 54 68 69 73 20 69  eserved.  This i
184b0 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 62 65  s the default be
184c0 68 61 76 69 6f 72 2e 3c 2f 70 3e 3c 2f 64 64 3e  havior.</p></dd>
184d0 0a 0a 3c 64 74 3e 3c 62 3e 46 41 49 4c 3c 2f 62  ..<dt><b>FAIL</b
184e0 3e 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 5e 57  ></dt>.<dd><p>^W
184f0 68 65 6e 20 61 20 63 6f 6e 73 74 72 61 69 6e 74  hen a constraint
18500 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72   violation occur
18510 73 2c 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20 61  s, the command a
18520 62 6f 72 74 73 20 77 69 74 68 20 61 0a 72 65 74  borts with a.ret
18530 75 72 6e 20 63 6f 64 65 20 53 51 4c 49 54 45 5f  urn code SQLITE_
18540 43 4f 4e 53 54 52 41 49 4e 54 2e 20 20 5e 42 75  CONSTRAINT.  ^Bu
18550 74 20 61 6e 79 20 63 68 61 6e 67 65 73 20 74 6f  t any changes to
18560 20 74 68 65 20 64 61 74 61 62 61 73 65 20 74 68   the database th
18570 61 74 0a 74 68 65 20 63 6f 6d 6d 61 6e 64 20 6d  at.the command m
18580 61 64 65 20 70 72 69 6f 72 20 74 6f 20 65 6e 63  ade prior to enc
18590 6f 75 6e 74 65 72 69 6e 67 20 74 68 65 20 63 6f  ountering the co
185a0 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69  nstraint violati
185b0 6f 6e 0a 61 72 65 20 70 72 65 73 65 72 76 65 64  on.are preserved
185c0 20 61 6e 64 20 61 72 65 20 6e 6f 74 20 62 61 63   and are not bac
185d0 6b 65 64 20 6f 75 74 2e 20 20 5e 46 6f 72 20 65  ked out.  ^For e
185e0 78 61 6d 70 6c 65 2c 20 69 66 20 61 6e 20 55 50  xample, if an UP
185f0 44 41 54 45 0a 73 74 61 74 65 6d 65 6e 74 20 65  DATE.statement e
18600 6e 63 6f 75 6e 74 65 72 65 64 20 61 20 63 6f 6e  ncountered a con
18610 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f  straint violatio
18620 6e 20 6f 6e 20 74 68 65 20 31 30 30 74 68 20 72  n on the 100th r
18630 6f 77 20 74 68 61 74 0a 69 74 20 61 74 74 65 6d  ow that.it attem
18640 70 74 73 20 74 6f 20 75 70 64 61 74 65 2c 20 74  pts to update, t
18650 68 65 6e 20 74 68 65 20 66 69 72 73 74 20 39 39  hen the first 99
18660 20 72 6f 77 20 63 68 61 6e 67 65 73 20 61 72 65   row changes are
18670 20 70 72 65 73 65 72 76 65 64 0a 62 75 74 20 63   preserved.but c
18680 68 61 6e 67 65 73 20 74 6f 20 72 6f 77 73 20 31  hanges to rows 1
18690 30 30 20 61 6e 64 20 62 65 79 6f 6e 64 20 6e 65  00 and beyond ne
186a0 76 65 72 20 6f 63 63 75 72 2e 3c 2f 70 3e 3c 2f  ver occur.</p></
186b0 64 64 3e 0a 0a 3c 64 74 3e 3c 62 3e 49 47 4e 4f  dd>..<dt><b>IGNO
186c0 52 45 3c 2f 62 3e 3c 2f 64 74 3e 0a 3c 64 64 3e  RE</b></dt>.<dd>
186d0 3c 70 3e 5e 57 68 65 6e 20 61 20 63 6f 6e 73 74  <p>^When a const
186e0 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20  raint violation 
186f0 6f 63 63 75 72 73 2c 20 74 68 65 20 6f 6e 65 20  occurs, the one 
18700 72 6f 77 20 74 68 61 74 20 63 6f 6e 74 61 69 6e  row that contain
18710 73 0a 74 68 65 20 63 6f 6e 73 74 72 61 69 6e 74  s.the constraint
18720 20 76 69 6f 6c 61 74 69 6f 6e 20 69 73 20 6e 6f   violation is no
18730 74 20 69 6e 73 65 72 74 65 64 20 6f 72 20 63 68  t inserted or ch
18740 61 6e 67 65 64 2e 20 20 5e 42 75 74 20 74 68 65  anged.  ^But the
18750 20 63 6f 6d 6d 61 6e 64 0a 63 6f 6e 74 69 6e 75   command.continu
18760 65 73 20 65 78 65 63 75 74 69 6e 67 20 6e 6f 72  es executing nor
18770 6d 61 6c 6c 79 2e 20 20 5e 4f 74 68 65 72 20 72  mally.  ^Other r
18780 6f 77 73 20 62 65 66 6f 72 65 20 61 6e 64 20 61  ows before and a
18790 66 74 65 72 20 74 68 65 20 72 6f 77 20 74 68 61  fter the row tha
187a0 74 0a 63 6f 6e 74 61 69 6e 65 64 20 74 68 65 20  t.contained the 
187b0 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61  constraint viola
187c0 74 69 6f 6e 20 63 6f 6e 74 69 6e 75 65 20 74 6f  tion continue to
187d0 20 62 65 20 69 6e 73 65 72 74 65 64 20 6f 72 20   be inserted or 
187e0 75 70 64 61 74 65 64 0a 6e 6f 72 6d 61 6c 6c 79  updated.normally
187f0 2e 20 20 5e 4e 6f 20 65 72 72 6f 72 20 69 73 20  .  ^No error is 
18800 72 65 74 75 72 6e 65 64 20 77 68 65 6e 20 74 68  returned when th
18810 65 20 49 47 4e 4f 52 45 20 63 6f 6e 66 6c 69 63  e IGNORE conflic
18820 74 20 72 65 73 6f 6c 75 74 69 6f 6e 0a 61 6c 67  t resolution.alg
18830 6f 72 69 74 68 6d 20 69 73 20 75 73 65 64 2e 3c  orithm is used.<
18840 2f 70 3e 3c 2f 64 64 3e 0a 0a 3c 64 74 3e 3c 62  /p></dd>..<dt><b
18850 3e 52 45 50 4c 41 43 45 3c 2f 62 3e 3c 2f 64 74  >REPLACE</b></dt
18860 3e 0a 3c 64 64 3e 3c 70 3e 5e 57 68 65 6e 20 61  >.<dd><p>^When a
18870 20 55 4e 49 51 55 45 20 63 6f 6e 73 74 72 61 69   UNIQUE constrai
18880 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 63 63  nt violation occ
18890 75 72 73 2c 20 74 68 65 20 70 72 65 2d 65 78 69  urs, the pre-exi
188a0 73 74 69 6e 67 20 72 6f 77 73 0a 74 68 61 74 20  sting rows.that 
188b0 61 72 65 20 63 61 75 73 69 6e 67 20 74 68 65 20  are causing the 
188c0 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61  constraint viola
188d0 74 69 6f 6e 20 61 72 65 20 72 65 6d 6f 76 65 64  tion are removed
188e0 20 70 72 69 6f 72 20 74 6f 20 69 6e 73 65 72 74   prior to insert
188f0 69 6e 67 0a 6f 72 20 75 70 64 61 74 69 6e 67 20  ing.or updating 
18900 74 68 65 20 63 75 72 72 65 6e 74 20 72 6f 77 2e  the current row.
18910 20 20 5e 54 68 75 73 20 74 68 65 20 69 6e 73 65    ^Thus the inse
18920 72 74 20 6f 72 20 75 70 64 61 74 65 20 61 6c 77  rt or update alw
18930 61 79 73 20 6f 63 63 75 72 73 2e 0a 5e 54 68 65  ays occurs..^The
18940 20 63 6f 6d 6d 61 6e 64 20 63 6f 6e 74 69 6e 75   command continu
18950 65 73 20 65 78 65 63 75 74 69 6e 67 20 6e 6f 72  es executing nor
18960 6d 61 6c 6c 79 20 66 6f 6c 6c 6f 77 69 6e 67 20  mally following 
18970 52 45 50 4c 41 43 45 2e 20 20 0a 5e 4e 6f 20 65  REPLACE.  .^No e
18980 72 72 6f 72 20 69 73 20 72 65 74 75 72 6e 65 64  rror is returned
18990 20 62 79 20 74 68 65 20 52 45 50 4c 41 43 45 20   by the REPLACE 
189a0 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75 74  conflict resolut
189b0 69 6f 6e 2e 0a 5e 49 66 20 61 20 4e 4f 54 20 4e  ion..^If a NOT N
189c0 55 4c 4c 20 63 6f 6e 73 74 72 61 69 6e 74 20 76  ULL constraint v
189d0 69 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72 73 2c  iolation occurs,
189e0 20 74 68 65 20 4e 55 4c 4c 20 76 61 6c 75 65 20   the NULL value 
189f0 69 73 20 72 65 70 6c 61 63 65 64 0a 62 79 20 74  is replaced.by t
18a00 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65  he default value
18a10 20 66 6f 72 20 74 68 61 74 20 63 6f 6c 75 6d 6e   for that column
18a20 2e 20 20 5e 49 66 20 74 68 65 20 63 6f 6c 75 6d  .  ^If the colum
18a30 6e 20 68 61 73 20 6e 6f 20 64 65 66 61 75 6c 74  n has no default
18a40 0a 76 61 6c 75 65 2c 20 74 68 65 6e 20 74 68 65  .value, then the
18a50 20 41 42 4f 52 54 20 61 6c 67 6f 72 69 74 68 6d   ABORT algorithm
18a60 20 69 73 20 75 73 65 64 2e 20 20 5e 49 66 20 61   is used.  ^If a
18a70 20 43 48 45 43 4b 20 63 6f 6e 73 74 72 61 69 6e   CHECK constrain
18a80 74 20 76 69 6f 6c 61 74 69 6f 6e 0a 6f 63 63 75  t violation.occu
18a90 72 73 20 74 68 65 6e 20 74 68 65 20 49 47 4e 4f  rs then the IGNO
18aa0 52 45 20 61 6c 67 6f 72 69 74 68 6d 20 69 73 20  RE algorithm is 
18ab0 75 73 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 57  used.</p>..<p>^W
18ac0 68 65 6e 20 74 68 69 73 20 63 6f 6e 66 6c 69 63  hen this conflic
18ad0 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20 73 74 72  t resolution str
18ae0 61 74 65 67 79 20 64 65 6c 65 74 65 73 20 72 6f  ategy deletes ro
18af0 77 73 20 69 6e 20 6f 72 64 65 72 20 74 6f 0a 73  ws in order to.s
18b00 61 74 69 73 66 79 20 61 20 63 6f 6e 73 74 72 61  atisfy a constra
18b10 69 6e 74 2c 20 5b 43 52 45 41 54 45 20 54 52 49  int, [CREATE TRI
18b20 47 47 45 52 20 7c 20 64 65 6c 65 74 65 20 74 72  GGER | delete tr
18b30 69 67 67 65 72 73 5d 20 6f 6e 6c 79 20 66 69 72  iggers] only fir
18b40 65 20 69 66 0a 5b 72 65 63 75 72 73 69 76 65 5f  e if.[recursive_
18b50 74 72 69 67 67 65 72 73 20 70 72 61 67 6d 61 20  triggers pragma 
18b60 7c 20 72 65 63 75 72 73 69 76 65 20 74 72 69 67  | recursive trig
18b70 67 65 72 73 5d 20 61 72 65 20 65 6e 61 62 6c 65  gers] are enable
18b80 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20  d.</p>..<p>^The 
18b90 5b 73 71 6c 69 74 65 33 5f 75 70 64 61 74 65 5f  [sqlite3_update_
18ba0 68 6f 6f 6b 20 7c 20 75 70 64 61 74 65 20 68 6f  hook | update ho
18bb0 6f 6b 5d 20 69 73 20 6e 6f 74 20 69 6e 76 6f 6b  ok] is not invok
18bc0 65 64 20 66 6f 72 20 72 6f 77 73 20 74 68 61 74  ed for rows that
18bd0 0a 61 72 65 20 64 65 6c 65 74 65 64 20 62 79 20  .are deleted by 
18be0 61 6e 20 4f 52 20 52 45 50 4c 41 43 45 20 72 65  an OR REPLACE re
18bf0 73 6f 6c 75 74 69 6f 6e 2e 20 20 5e 4e 6f 72 20  solution.  ^Nor 
18c00 69 73 20 74 68 65 20 0a 5b 73 71 6c 69 74 65 33  is the .[sqlite3
18c10 5f 63 68 61 6e 67 65 73 20 7c 20 63 68 61 6e 67  _changes | chang
18c20 65 20 63 6f 75 6e 74 65 72 5d 20 69 6e 63 72 65  e counter] incre
18c30 6d 65 6e 74 65 64 2e 0a 54 68 65 20 65 78 63 65  mented..The exce
18c40 70 74 69 6f 6e 61 6c 20 62 65 68 61 76 69 6f 72  ptional behavior
18c50 73 20 64 65 66 69 6e 65 64 20 69 6e 20 74 68 69  s defined in thi
18c60 73 20 70 61 72 61 67 72 61 70 68 20 6d 69 67 68  s paragraph migh
18c70 74 20 63 68 61 6e 67 65 20 0a 69 6e 20 61 20 66  t change .in a f
18c80 75 74 75 72 65 20 72 65 6c 65 61 73 65 2e 3c 2f  uture release.</
18c90 70 3e 0a 3c 2f 64 6c 3e 0a 0a 3c 70 3e 5e 54 68  p>.</dl>..<p>^Th
18ca0 65 20 61 6c 67 6f 72 69 74 68 6d 20 73 70 65 63  e algorithm spec
18cb0 69 66 69 65 64 20 69 6e 20 74 68 65 20 4f 52 20  ified in the OR 
18cc0 63 6c 61 75 73 65 20 6f 66 20 61 20 49 4e 53 45  clause of a INSE
18cd0 52 54 20 6f 72 20 55 50 44 41 54 45 0a 6f 76 65  RT or UPDATE.ove
18ce0 72 72 69 64 65 73 20 61 6e 79 20 61 6c 67 6f 72  rrides any algor
18cf0 69 74 68 6d 20 73 70 65 63 69 66 69 65 64 20 69  ithm specified i
18d00 6e 20 61 20 43 52 45 41 54 45 20 54 41 42 4c 45  n a CREATE TABLE
18d10 2e 0a 5e 49 66 20 6e 6f 20 61 6c 67 6f 72 69 74  ..^If no algorit
18d20 68 6d 20 69 73 20 73 70 65 63 69 66 69 65 64 20  hm is specified 
18d30 61 6e 79 77 68 65 72 65 2c 20 74 68 65 20 41 42  anywhere, the AB
18d40 4f 52 54 20 61 6c 67 6f 72 69 74 68 6d 20 69 73  ORT algorithm is
18d50 20 75 73 65 64 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c   used.</p>..<tcl
18d60 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23  >.##############
18d70 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18d80 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18d90 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18da0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18db0 0a 53 65 63 74 69 6f 6e 20 52 45 49 4e 44 45 58  .Section REINDEX
18dc0 20 72 65 69 6e 64 65 78 20 52 45 49 4e 44 45 58   reindex REINDEX
18dd0 0a 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20  ..BubbleDiagram 
18de0 72 65 69 6e 64 65 78 2d 73 74 6d 74 20 31 0a 3c  reindex-stmt 1.<
18df0 2f 74 63 6c 3e 0a 0a 3c 70 3e 5e 54 68 65 20 52  /tcl>..<p>^The R
18e00 45 49 4e 44 45 58 20 63 6f 6d 6d 61 6e 64 20 69  EINDEX command i
18e10 73 20 75 73 65 64 20 74 6f 20 64 65 6c 65 74 65  s used to delete
18e20 20 61 6e 64 20 72 65 63 72 65 61 74 65 20 69 6e   and recreate in
18e30 64 69 63 65 73 20 66 72 6f 6d 20 73 63 72 61 74  dices from scrat
18e40 63 68 2e 0a 54 68 69 73 20 69 73 20 75 73 65 66  ch..This is usef
18e50 75 6c 20 77 68 65 6e 20 74 68 65 20 64 65 66 69  ul when the defi
18e60 6e 69 74 69 6f 6e 20 6f 66 20 61 20 63 6f 6c 6c  nition of a coll
18e70 61 74 69 6f 6e 20 73 65 71 75 65 6e 63 65 20 68  ation sequence h
18e80 61 73 20 63 68 61 6e 67 65 64 2e 0a 3c 2f 70 3e  as changed..</p>
18e90 0a 0a 3c 70 3e 5e 49 6e 20 74 68 65 20 66 69 72  ..<p>^In the fir
18ea0 73 74 20 66 6f 72 6d 2c 20 61 6c 6c 20 69 6e 64  st form, all ind
18eb0 69 63 65 73 20 69 6e 20 61 6c 6c 20 61 74 74 61  ices in all atta
18ec0 63 68 65 64 20 64 61 74 61 62 61 73 65 73 20 74  ched databases t
18ed0 68 61 74 20 75 73 65 20 74 68 65 0a 6e 61 6d 65  hat use the.name
18ee0 64 20 63 6f 6c 6c 61 74 69 6f 6e 20 73 65 71 75  d collation sequ
18ef0 65 6e 63 65 20 61 72 65 20 72 65 63 72 65 61 74  ence are recreat
18f00 65 64 2e 20 5e 28 49 6e 20 74 68 65 20 73 65 63  ed. ^(In the sec
18f10 6f 6e 64 20 66 6f 72 6d 2c 20 69 66 20 0a 3c 69  ond form, if .<i
18f20 3e 26 23 39 31 3b 64 61 74 61 62 61 73 65 2d 6e  >&#91;database-n
18f30 61 6d 65 2e 26 23 39 33 3b 74 61 62 6c 65 2f 69  ame.&#93;table/i
18f40 6e 64 65 78 2d 6e 61 6d 65 3c 2f 69 3e 20 69 64  ndex-name</i> id
18f50 65 6e 74 69 66 69 65 73 20 61 20 74 61 62 6c 65  entifies a table
18f60 2c 0a 74 68 65 6e 20 61 6c 6c 20 69 6e 64 69 63  ,.then all indic
18f70 65 73 0a 61 73 73 6f 63 69 61 74 65 64 20 77 69  es.associated wi
18f80 74 68 20 74 68 65 20 74 61 62 6c 65 20 61 72 65  th the table are
18f90 20 72 65 62 75 69 6c 74 2e 29 5e 20 5e 49 66 20   rebuilt.)^ ^If 
18fa0 61 6e 20 69 6e 64 65 78 20 69 73 20 69 64 65 6e  an index is iden
18fb0 74 69 66 69 65 64 2c 20 74 68 65 6e 20 6f 6e 6c  tified, then onl
18fc0 79 0a 74 68 69 73 20 73 70 65 63 69 66 69 63 20  y.this specific 
18fd0 69 6e 64 65 78 20 69 73 20 64 65 6c 65 74 65 64  index is deleted
18fe0 20 61 6e 64 20 72 65 63 72 65 61 74 65 64 2e 0a   and recreated..
18ff0 3c 2f 70 3e 0a 0a 3c 70 3e 5e 49 66 20 6e 6f 20  </p>..<p>^If no 
19000 3c 69 3e 64 61 74 61 62 61 73 65 2d 6e 61 6d 65  <i>database-name
19010 3c 2f 69 3e 20 69 73 20 73 70 65 63 69 66 69 65  </i> is specifie
19020 64 20 61 6e 64 20 74 68 65 72 65 20 65 78 69 73  d and there exis
19030 74 73 20 62 6f 74 68 20 61 20 74 61 62 6c 65 20  ts both a table 
19040 6f 72 0a 69 6e 64 65 78 20 61 6e 64 20 61 20 63  or.index and a c
19050 6f 6c 6c 61 74 69 6f 6e 20 73 65 71 75 65 6e 63  ollation sequenc
19060 65 20 6f 66 20 74 68 65 20 73 70 65 63 69 66 69  e of the specifi
19070 65 64 20 6e 61 6d 65 2c 20 74 68 65 6e 20 69 6e  ed name, then in
19080 64 69 63 65 73 20 61 73 73 6f 63 69 61 74 65 64  dices associated
19090 0a 77 69 74 68 20 74 68 65 20 63 6f 6c 6c 61 74  .with the collat
190a0 69 6f 6e 20 73 65 71 75 65 6e 63 65 20 6f 6e 6c  ion sequence onl
190b0 79 20 61 72 65 20 72 65 63 6f 6e 73 74 72 75 63  y are reconstruc
190c0 74 65 64 2e 20 54 68 69 73 20 61 6d 62 69 67 75  ted. This ambigu
190d0 69 74 79 20 6d 61 79 20 62 65 0a 64 69 73 70 65  ity may be.dispe
190e0 6c 6c 65 64 20 62 79 20 61 6c 77 61 79 73 20 73  lled by always s
190f0 70 65 63 69 66 79 69 6e 67 20 61 20 3c 69 3e 64  pecifying a <i>d
19100 61 74 61 62 61 73 65 2d 6e 61 6d 65 3c 2f 69 3e  atabase-name</i>
19110 20 77 68 65 6e 20 72 65 69 6e 64 65 78 69 6e 67   when reindexing
19120 20 61 0a 73 70 65 63 69 66 69 63 20 74 61 62 6c   a.specific tabl
19130 65 20 6f 72 20 69 6e 64 65 78 2e 0a 0a 3c 74 63  e or index...<tc
19140 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23 23  l>.#############
19150 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
19160 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
19170 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
19180 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
19190 23 23 0a 53 65 63 74 69 6f 6e 20 52 45 50 4c 41  ##.Section REPLA
191a0 43 45 20 72 65 70 6c 61 63 65 20 52 45 50 4c 41  CE replace REPLA
191b0 43 45 0a 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 5e  CE..</tcl>..<p>^
191c0 54 68 65 20 52 45 50 4c 41 43 45 20 63 6f 6d 6d  The REPLACE comm
191d0 61 6e 64 20 69 73 20 61 6e 20 61 6c 69 61 73 20  and is an alias 
191e0 66 6f 72 20 74 68 65 20 22 5b 4f 4e 20 43 4f 4e  for the "[ON CON
191f0 46 4c 49 43 54 20 7c 20 49 4e 53 45 52 54 20 4f  FLICT | INSERT O
19200 52 20 52 45 50 4c 41 43 45 5d 22 0a 76 61 72 69  R REPLACE]".vari
19210 61 6e 74 20 6f 66 20 74 68 65 20 5b 49 4e 53 45  ant of the [INSE
19220 52 54 5d 20 63 6f 6d 6d 61 6e 64 2e 20 20 0a 54  RT] command.  .T
19230 68 69 73 20 61 6c 69 61 73 20 69 73 20 70 72 6f  his alias is pro
19240 76 69 64 65 64 20 66 6f 72 20 63 6f 6d 70 61 74  vided for compat
19250 69 62 69 6c 69 74 79 20 6f 74 68 65 72 20 53 51  ibility other SQ
19260 4c 20 64 61 74 61 62 61 73 65 20 65 6e 67 69 6e  L database engin
19270 65 73 2e 20 20 53 65 65 20 74 68 65 20 0a 5b 49  es.  See the .[I
19280 4e 53 45 52 54 5d 20 63 6f 6d 6d 61 6e 64 20 64  NSERT] command d
19290 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72  ocumentation for
192a0 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f   additional info
192b0 72 6d 61 74 69 6f 6e 2e 3c 2f 70 3e 20 20 0a 0a  rmation.</p>  ..
192c0 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23  <tcl>.##########
192d0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
192e0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
192f0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
19300 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
19310 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 53 45  #####.Section SE
19320 4c 45 43 54 20 73 65 6c 65 63 74 20 7b 53 45 4c  LECT select {SEL
19330 45 43 54 20 71 75 65 72 79 7d 0a 0a 42 75 62 62  ECT query}..Bubb
19340 6c 65 44 69 61 67 72 61 6d 20 73 65 6c 65 63 74  leDiagram select
19350 2d 73 74 6d 74 20 31 0a 42 75 62 62 6c 65 44 69  -stmt 1.BubbleDi
19360 61 67 72 61 6d 20 73 65 6c 65 63 74 2d 63 6f 72  agram select-cor
19370 65 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20  e.BubbleDiagram 
19380 72 65 73 75 6c 74 2d 63 6f 6c 75 6d 6e 0a 42 75  result-column.Bu
19390 62 62 6c 65 44 69 61 67 72 61 6d 20 6a 6f 69 6e  bbleDiagram join
193a0 2d 73 6f 75 72 63 65 0a 42 75 62 62 6c 65 44 69  -source.BubbleDi
193b0 61 67 72 61 6d 20 73 69 6e 67 6c 65 2d 73 6f 75  agram single-sou
193c0 72 63 65 0a 42 75 62 62 6c 65 44 69 61 67 72 61  rce.BubbleDiagra
193d0 6d 20 6a 6f 69 6e 2d 6f 70 0a 42 75 62 62 6c 65  m join-op.Bubble
193e0 44 69 61 67 72 61 6d 20 6a 6f 69 6e 2d 63 6f 6e  Diagram join-con
193f0 73 74 72 61 69 6e 74 0a 42 75 62 62 6c 65 44 69  straint.BubbleDi
19400 61 67 72 61 6d 20 6f 72 64 65 72 69 6e 67 2d 74  agram ordering-t
19410 65 72 6d 0a 42 75 62 62 6c 65 44 69 61 67 72 61  erm.BubbleDiagra
19420 6d 20 63 6f 6d 70 6f 75 6e 64 2d 6f 70 65 72 61  m compound-opera
19430 74 6f 72 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54  tor.</tcl>..<p>T
19440 68 65 20 53 45 4c 45 43 54 20 73 74 61 74 65 6d  he SELECT statem
19450 65 6e 74 20 69 73 20 75 73 65 64 20 74 6f 20 71  ent is used to q
19460 75 65 72 79 20 74 68 65 20 64 61 74 61 62 61 73  uery the databas
19470 65 2e 20 20 5e 54 68 65 0a 72 65 73 75 6c 74 20  e.  ^The.result 
19480 6f 66 20 61 20 53 45 4c 45 43 54 20 69 73 20 7a  of a SELECT is z
19490 65 72 6f 20 6f 72 20 6d 6f 72 65 20 72 6f 77 73  ero or more rows
194a0 20 6f 66 20 64 61 74 61 20 77 68 65 72 65 20 65   of data where e
194b0 61 63 68 20 72 6f 77 0a 68 61 73 20 61 20 66 69  ach row.has a fi
194c0 78 65 64 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f  xed number of co
194d0 6c 75 6d 6e 73 2e 20 20 5e 54 68 65 20 6e 75 6d  lumns.  ^The num
194e0 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69  ber of columns i
194f0 6e 20 74 68 65 0a 72 65 73 75 6c 74 20 69 73 20  n the.result is 
19500 73 70 65 63 69 66 69 65 64 20 62 79 20 74 68 65  specified by the
19510 20 65 78 70 72 65 73 73 69 6f 6e 20 6c 69 73 74   expression list
19520 20 69 6e 20 62 65 74 77 65 65 6e 20 74 68 65 0a   in between the.
19530 53 45 4c 45 43 54 20 61 6e 64 20 46 52 4f 4d 20  SELECT and FROM 
19540 6b 65 79 77 6f 72 64 73 2e 20 20 5e 41 6e 79 20  keywords.  ^Any 
19550 61 72 62 69 74 72 61 72 79 20 65 78 70 72 65 73  arbitrary expres
19560 73 69 6f 6e 20 63 61 6e 20 62 65 20 75 73 65 64  sion can be used
19570 0a 61 73 20 61 20 72 65 73 75 6c 74 2e 20 20 5e  .as a result.  ^
19580 49 66 20 61 20 72 65 73 75 6c 74 20 65 78 70 72  If a result expr
19590 65 73 73 69 6f 6e 20 69 73 20 7d 0a 68 64 5f 70  ession is }.hd_p
195a0 75 74 73 20 22 5b 4f 70 65 72 61 74 6f 72 20 2a  uts "[Operator *
195b0 5d 20 74 68 65 6e 20 61 6c 6c 20 63 6f 6c 75 6d  ] then all colum
195c0 6e 73 20 6f 66 20 61 6c 6c 20 74 61 62 6c 65 73  ns of all tables
195d0 20 61 72 65 20 73 75 62 73 74 69 74 75 74 65 64   are substituted
195e0 5c 6e 22 0a 68 64 5f 70 75 74 73 20 22 66 6f 72  \n".hd_puts "for
195f0 20 74 68 61 74 20 6f 6e 65 20 65 78 70 72 65 73   that one expres
19600 73 69 6f 6e 2e 20 20 5e 28 49 66 20 74 68 65 20  sion.  ^(If the 
19610 65 78 70 72 65 73 73 69 6f 6e 20 69 73 20 74 68  expression is th
19620 65 20 6e 61 6d 65 20 6f 66 5c 6e 22 0a 68 64 5f  e name of\n".hd_
19630 70 75 74 73 20 22 61 20 74 61 62 6c 65 20 66 6f  puts "a table fo
19640 6c 6c 6f 77 65 64 20 62 79 20 5b 4f 70 65 72 61  llowed by [Opera
19650 74 6f 72 20 2e 2a 5d 20 74 68 65 6e 20 74 68 65  tor .*] then the
19660 20 72 65 73 75 6c 74 20 69 73 20 61 6c 6c 20 63   result is all c
19670 6f 6c 75 6d 6e 73 5c 6e 22 0a 68 64 5f 70 75 74  olumns\n".hd_put
19680 73 20 7b 69 6e 20 74 68 61 74 20 6f 6e 65 20 74  s {in that one t
19690 61 62 6c 65 2e 3c 2f 70 3e 29 5e 0a 0a 3c 70 3e  able.</p>)^..<p>
196a0 5e 54 68 65 20 44 49 53 54 49 4e 43 54 20 6b 65  ^The DISTINCT ke
196b0 79 77 6f 72 64 20 63 61 75 73 65 73 20 61 20 73  yword causes a s
196c0 75 62 73 65 74 20 6f 66 20 72 65 73 75 6c 74 20  ubset of result 
196d0 72 6f 77 73 20 74 6f 20 62 65 20 72 65 74 75 72  rows to be retur
196e0 6e 65 64 2c 20 0a 69 6e 20 77 68 69 63 68 20 65  ned, .in which e
196f0 61 63 68 20 72 65 73 75 6c 74 20 72 6f 77 20 69  ach result row i
19700 73 20 64 69 66 66 65 72 65 6e 74 2e 20 20 5e 4e  s different.  ^N
19710 55 4c 4c 20 76 61 6c 75 65 73 20 61 72 65 20 6e  ULL values are n
19720 6f 74 20 74 72 65 61 74 65 64 20 61 73 20 0a 64  ot treated as .d
19730 69 73 74 69 6e 63 74 20 66 72 6f 6d 20 65 61 63  istinct from eac
19740 68 20 6f 74 68 65 72 2e 20 20 5e 54 68 65 20 64  h other.  ^The d
19750 65 66 61 75 6c 74 20 62 65 68 61 76 69 6f 72 20  efault behavior 
19760 69 73 20 74 68 61 74 20 61 6c 6c 20 72 65 73 75  is that all resu
19770 6c 74 20 72 6f 77 73 20 0a 62 65 20 72 65 74 75  lt rows .be retu
19780 72 6e 65 64 2c 20 77 68 69 63 68 20 63 61 6e 20  rned, which can 
19790 62 65 20 6d 61 64 65 20 65 78 70 6c 69 63 69 74  be made explicit
197a0 20 77 69 74 68 20 74 68 65 20 6b 65 79 77 6f 72   with the keywor
197b0 64 20 41 4c 4c 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e  d ALL.</p>..<p>^
197c0 54 68 65 20 71 75 65 72 79 20 69 73 20 65 78 65  The query is exe
197d0 63 75 74 65 64 20 61 67 61 69 6e 73 74 20 6f 6e  cuted against on
197e0 65 20 6f 72 20 6d 6f 72 65 20 74 61 62 6c 65 73  e or more tables
197f0 20 73 70 65 63 69 66 69 65 64 20 61 66 74 65 72   specified after
19800 0a 74 68 65 20 46 52 4f 4d 20 6b 65 79 77 6f 72  .the FROM keywor
19810 64 2e 20 20 5e 49 66 20 6d 75 6c 74 69 70 6c 65  d.  ^If multiple
19820 20 74 61 62 6c 65 73 20 6e 61 6d 65 73 20 61 72   tables names ar
19830 65 20 73 65 70 61 72 61 74 65 64 20 62 79 20 63  e separated by c
19840 6f 6d 6d 61 73 2c 0a 74 68 65 6e 20 74 68 65 20  ommas,.then the 
19850 71 75 65 72 79 20 69 73 20 61 67 61 69 6e 73 74  query is against
19860 20 74 68 65 20 63 72 6f 73 73 20 6a 6f 69 6e 20   the cross join 
19870 6f 66 20 74 68 65 20 76 61 72 69 6f 75 73 20 74  of the various t
19880 61 62 6c 65 73 2e 0a 5e 54 68 65 20 66 75 6c 6c  ables..^The full
19890 20 53 51 4c 2d 39 32 20 6a 6f 69 6e 20 73 79 6e   SQL-92 join syn
198a0 74 61 78 20 63 61 6e 20 61 6c 73 6f 20 62 65 20  tax can also be 
198b0 75 73 65 64 20 74 6f 20 73 70 65 63 69 66 79 20  used to specify 
198c0 6a 6f 69 6e 73 2e 0a 5e 41 20 73 75 62 2d 71 75  joins..^A sub-qu
198d0 65 72 79 0a 69 6e 20 70 61 72 65 6e 74 68 65 73  ery.in parenthes
198e0 65 73 20 6d 61 79 20 62 65 20 73 75 62 73 74 69  es may be substi
198f0 74 75 74 65 64 20 66 6f 72 20 61 6e 79 20 74 61  tuted for any ta
19900 62 6c 65 20 6e 61 6d 65 20 69 6e 20 74 68 65 20  ble name in the 
19910 46 52 4f 4d 20 63 6c 61 75 73 65 2e 0a 5e 54 68  FROM clause..^Th
19920 65 20 65 6e 74 69 72 65 20 46 52 4f 4d 20 63 6c  e entire FROM cl
19930 61 75 73 65 20 6d 61 79 20 62 65 20 6f 6d 69 74  ause may be omit
19940 74 65 64 2c 20 69 6e 20 77 68 69 63 68 20 63 61  ted, in which ca
19950 73 65 20 74 68 65 20 72 65 73 75 6c 74 20 69 73  se the result is
19960 20 61 0a 73 69 6e 67 6c 65 20 72 6f 77 20 63 6f   a.single row co
19970 6e 73 69 73 74 69 6e 67 20 6f 66 20 74 68 65 20  nsisting of the 
19980 76 61 6c 75 65 73 20 6f 66 20 74 68 65 20 65 78  values of the ex
19990 70 72 65 73 73 69 6f 6e 20 6c 69 73 74 2e 0a 3c  pression list..<
199a0 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20 57 48 45  /p>..<p>^The WHE
199b0 52 45 20 63 6c 61 75 73 65 20 63 61 6e 20 62 65  RE clause can be
199c0 20 75 73 65 64 20 74 6f 20 6c 69 6d 69 74 20 74   used to limit t
199d0 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 72 6f 77  he number of row
199e0 73 20 6f 76 65 72 0a 77 68 69 63 68 20 74 68 65  s over.which the
199f0 20 71 75 65 72 79 20 6f 70 65 72 61 74 65 73 2e   query operates.
19a00 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20 47 52  </p>..<p>^The GR
19a10 4f 55 50 20 42 59 20 63 6c 61 75 73 65 20 63 61  OUP BY clause ca
19a20 75 73 65 73 20 6f 6e 65 20 6f 72 20 6d 6f 72 65  uses one or more
19a30 20 72 6f 77 73 20 6f 66 20 74 68 65 20 72 65 73   rows of the res
19a40 75 6c 74 20 74 6f 0a 62 65 20 63 6f 6d 62 69 6e  ult to.be combin
19a50 65 64 20 69 6e 74 6f 20 61 20 73 69 6e 67 6c 65  ed into a single
19a60 20 72 6f 77 20 6f 66 20 6f 75 74 70 75 74 2e 20   row of output. 
19a70 20 54 68 69 73 20 69 73 20 65 73 70 65 63 69 61   This is especia
19a80 6c 6c 79 20 75 73 65 66 75 6c 0a 77 68 65 6e 20  lly useful.when 
19a90 74 68 65 20 72 65 73 75 6c 74 20 63 6f 6e 74 61  the result conta
19aa0 69 6e 73 20 61 67 67 72 65 67 61 74 65 20 66 75  ins aggregate fu
19ab0 6e 63 74 69 6f 6e 73 2e 20 20 5e 54 68 65 20 65  nctions.  ^The e
19ac0 78 70 72 65 73 73 69 6f 6e 73 20 69 6e 0a 74 68  xpressions in.th
19ad0 65 20 47 52 4f 55 50 20 42 59 20 63 6c 61 75 73  e GROUP BY claus
19ae0 65 20 64 6f 20 3c 65 6d 3e 6e 6f 74 3c 2f 65 6d  e do <em>not</em
19af0 3e 20 68 61 76 65 20 74 6f 20 62 65 20 65 78 70  > have to be exp
19b00 72 65 73 73 69 6f 6e 73 20 74 68 61 74 0a 61 70  ressions that.ap
19b10 70 65 61 72 20 69 6e 20 74 68 65 20 72 65 73 75  pear in the resu
19b20 6c 74 2e 20 20 5e 54 68 65 20 48 41 56 49 4e 47  lt.  ^The HAVING
19b30 20 63 6c 61 75 73 65 20 69 73 20 73 69 6d 69 6c   clause is simil
19b40 61 72 20 74 6f 20 57 48 45 52 45 20 65 78 63 65  ar to WHERE exce
19b50 70 74 0a 74 68 61 74 20 48 41 56 49 4e 47 20 61  pt.that HAVING a
19b60 70 70 6c 69 65 73 20 61 66 74 65 72 20 67 72 6f  pplies after gro
19b70 75 70 69 6e 67 20 68 61 73 20 6f 63 63 75 72 72  uping has occurr
19b80 65 64 2e 20 20 5e 54 68 65 20 48 41 56 49 4e 47  ed.  ^The HAVING
19b90 20 65 78 70 72 65 73 73 69 6f 6e 0a 6d 61 79 20   expression.may 
19ba0 72 65 66 65 72 20 74 6f 20 76 61 6c 75 65 73 2c  refer to values,
19bb0 20 65 76 65 6e 20 61 67 67 72 65 67 61 74 65 20   even aggregate 
19bc0 66 75 6e 63 74 69 6f 6e 73 2c 20 74 68 61 74 20  functions, that 
19bd0 61 72 65 20 6e 6f 74 20 69 6e 20 74 68 65 20 72  are not in the r
19be0 65 73 75 6c 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e  esult.</p>..<p>^
19bf0 54 68 65 20 4f 52 44 45 52 20 42 59 20 63 6c 61  The ORDER BY cla
19c00 75 73 65 20 63 61 75 73 65 73 20 74 68 65 20 6f  use causes the o
19c10 75 74 70 75 74 20 72 6f 77 73 20 74 6f 20 62 65  utput rows to be
19c20 20 73 6f 72 74 65 64 2e 20 20 0a 5e 54 68 65 20   sorted.  .^The 
19c30 61 72 67 75 6d 65 6e 74 20 74 6f 20 4f 52 44 45  argument to ORDE
19c40 52 20 42 59 20 69 73 20 61 20 6c 69 73 74 20 6f  R BY is a list o
19c50 66 20 65 78 70 72 65 73 73 69 6f 6e 73 20 74 68  f expressions th
19c60 61 74 20 61 72 65 20 75 73 65 64 20 61 73 20 74  at are used as t
19c70 68 65 0a 6b 65 79 20 66 6f 72 20 74 68 65 20 73  he.key for the s
19c80 6f 72 74 2e 20 20 5e 54 68 65 20 65 78 70 72 65  ort.  ^The expre
19c90 73 73 69 6f 6e 73 20 64 6f 20 6e 6f 74 20 68 61  ssions do not ha
19ca0 76 65 20 74 6f 20 62 65 20 70 61 72 74 20 6f 66  ve to be part of
19cb0 20 74 68 65 0a 72 65 73 75 6c 74 20 66 6f 72 20   the.result for 
19cc0 61 20 73 69 6d 70 6c 65 20 53 45 4c 45 43 54 2c  a simple SELECT,
19cd0 20 62 75 74 20 69 6e 20 61 20 63 6f 6d 70 6f 75   but in a compou
19ce0 6e 64 20 53 45 4c 45 43 54 20 65 61 63 68 20 73  nd SELECT each s
19cf0 6f 72 74 0a 65 78 70 72 65 73 73 69 6f 6e 20 6d  ort.expression m
19d00 75 73 74 20 65 78 61 63 74 6c 79 20 6d 61 74 63  ust exactly matc
19d10 68 20 6f 6e 65 20 6f 66 20 74 68 65 20 72 65 73  h one of the res
19d20 75 6c 74 20 63 6f 6c 75 6d 6e 73 2e 20 20 5e 45  ult columns.  ^E
19d30 61 63 68 0a 73 6f 72 74 20 65 78 70 72 65 73 73  ach.sort express
19d40 69 6f 6e 20 6d 61 79 20 62 65 20 6f 70 74 69 6f  ion may be optio
19d50 6e 61 6c 6c 79 20 66 6f 6c 6c 6f 77 65 64 20 62  nally followed b
19d60 79 20 61 20 43 4f 4c 4c 41 54 45 20 6b 65 79 77  y a COLLATE keyw
19d70 6f 72 64 20 61 6e 64 0a 74 68 65 20 6e 61 6d 65  ord and.the name
19d80 20 6f 66 20 61 20 63 6f 6c 6c 61 74 69 6e 67 20   of a collating 
19d90 66 75 6e 63 74 69 6f 6e 20 75 73 65 64 20 66 6f  function used fo
19da0 72 20 6f 72 64 65 72 69 6e 67 20 74 65 78 74 20  r ordering text 
19db0 61 6e 64 2f 6f 72 0a 6b 65 79 77 6f 72 64 73 20  and/or.keywords 
19dc0 41 53 43 20 6f 72 20 44 45 53 43 20 74 6f 20 73  ASC or DESC to s
19dd0 70 65 63 69 66 79 20 74 68 65 20 73 6f 72 74 20  pecify the sort 
19de0 6f 72 64 65 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 45  order.</p>..<p>E
19df0 61 63 68 20 74 65 72 6d 20 6f 66 20 61 6e 20 4f  ach term of an O
19e00 52 44 45 52 20 42 59 20 65 78 70 72 65 73 73 69  RDER BY expressi
19e10 6f 6e 20 69 73 20 70 72 6f 63 65 73 73 65 64 20  on is processed 
19e20 61 73 20 66 6f 6c 6c 6f 77 73 3a 3c 2f 70 3e 0a  as follows:</p>.
19e30 0a 3c 6f 6c 3e 0a 3c 6c 69 3e 3c 70 3e 5e 49 66  .<ol>.<li><p>^If
19e40 20 74 68 65 20 4f 52 44 45 52 20 42 59 20 65 78   the ORDER BY ex
19e50 70 72 65 73 73 69 6f 6e 20 69 73 20 61 20 63 6f  pression is a co
19e60 6e 73 74 61 6e 74 20 69 6e 74 65 67 65 72 20 4b  nstant integer K
19e70 20 74 68 65 6e 20 74 68 65 0a 6f 75 74 70 75 74   then the.output
19e80 20 69 73 20 6f 72 64 65 72 65 64 20 62 79 20 74   is ordered by t
19e90 68 65 20 4b 2d 74 68 20 63 6f 6c 75 6d 6e 20 6f  he K-th column o
19ea0 66 20 74 68 65 20 72 65 73 75 6c 74 20 73 65 74  f the result set
19eb0 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c  .</p></li>.<li><
19ec0 70 3e 5e 49 66 20 74 68 65 20 4f 52 44 45 52 20  p>^If the ORDER 
19ed0 42 59 20 65 78 70 72 65 73 73 69 6f 6e 20 69 73  BY expression is
19ee0 20 61 6e 20 69 64 65 6e 74 69 66 69 65 72 20 61   an identifier a
19ef0 6e 64 20 6f 6e 65 20 6f 66 20 74 68 65 0a 6f 75  nd one of the.ou
19f00 74 70 75 74 20 63 6f 6c 75 6d 6e 73 20 68 61 73  tput columns has
19f10 20 61 6e 20 61 6c 69 61 73 20 62 79 20 74 68 65   an alias by the
19f20 20 73 61 6d 65 20 6e 61 6d 65 2c 20 74 68 65 6e   same name, then
19f30 20 74 68 65 20 6f 75 74 70 75 74 20 69 73 0a 6f   the output is.o
19f40 72 64 65 72 65 64 20 62 79 20 74 68 65 20 69 64  rdered by the id
19f50 65 6e 74 69 66 69 65 64 20 63 6f 6c 75 6d 6e 2e  entified column.
19f60 3c 2f 70 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c 70  </p></li>.<li><p
19f70 3e 5e 4f 74 68 65 72 77 69 73 65 2c 20 74 68 65  >^Otherwise, the
19f80 20 4f 52 44 45 52 20 42 59 20 65 78 70 72 65 73   ORDER BY expres
19f90 73 69 6f 6e 20 69 73 20 65 76 61 6c 75 61 74 65  sion is evaluate
19fa0 64 20 61 6e 64 20 74 68 65 20 6f 75 74 70 75 74  d and the output
19fb0 20 0a 69 73 20 6f 72 64 65 72 65 64 20 62 79 20   .is ordered by 
19fc0 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 61  the value of tha
19fd0 74 20 65 78 70 72 65 73 73 69 6f 6e 2e 3c 2f 70  t expression.</p
19fe0 3e 3c 2f 6c 69 3e 0a 3c 2f 6f 6c 3e 0a 0a 3c 70  ></li>.</ol>..<p
19ff0 3e 5e 49 6e 20 61 20 63 6f 6d 70 6f 75 6e 64 20  >^In a compound 
1a000 53 45 4c 45 43 54 20 73 74 61 74 65 6d 65 6e 74  SELECT statement
1a010 2c 20 74 68 65 20 74 68 69 72 64 20 4f 52 44 45  , the third ORDE
1a020 52 20 42 59 20 6d 61 74 63 68 69 6e 67 20 72 75  R BY matching ru
1a030 6c 65 0a 72 65 71 75 69 72 65 73 20 74 68 61 74  le.requires that
1a040 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20   the expression 
1a050 62 65 20 69 64 65 6e 74 69 63 61 6c 20 74 6f 20  be identical to 
1a060 6f 6e 65 20 6f 66 20 74 68 65 20 63 6f 6c 75 6d  one of the colum
1a070 6e 73 20 69 6e 0a 74 68 65 20 72 65 73 75 6c 74  ns in.the result
1a080 20 73 65 74 2e 20 20 5e 28 54 68 65 20 74 68 72   set.  ^(The thr
1a090 65 65 20 72 75 6c 65 73 20 61 72 65 20 66 69 72  ee rules are fir
1a0a0 73 74 20 61 70 70 6c 69 65 64 20 74 6f 20 74 68  st applied to th
1a0b0 65 20 6c 65 66 74 2d 6d 6f 73 74 0a 53 45 4c 45  e left-most.SELE
1a0c0 43 54 20 69 6e 20 74 68 65 20 63 6f 6d 70 6f 75  CT in the compou
1a0d0 6e 64 2e 20 20 49 66 20 61 20 6d 61 74 63 68 20  nd.  If a match 
1a0e0 69 73 20 66 6f 75 6e 64 2c 20 74 68 65 20 73 65  is found, the se
1a0f0 61 72 63 68 20 73 74 6f 70 73 2e 20 20 4f 74 68  arch stops.  Oth
1a100 65 72 77 69 73 65 2c 0a 74 68 65 20 6e 65 78 74  erwise,.the next
1a110 20 53 45 4c 45 43 54 20 74 6f 20 74 68 65 20 72   SELECT to the r
1a120 69 67 68 74 20 69 73 20 74 72 69 65 64 2e 20 20  ight is tried.  
1a130 54 68 69 73 20 63 6f 6e 74 69 6e 75 65 73 20 75  This continues u
1a140 6e 74 69 6c 20 61 20 6d 61 74 63 68 0a 69 73 20  ntil a match.is 
1a150 66 6f 75 6e 64 2e 29 5e 20 20 5e 45 61 63 68 20  found.)^  ^Each 
1a160 74 65 72 6d 20 6f 66 20 74 68 65 20 4f 52 44 45  term of the ORDE
1a170 52 20 42 59 20 63 6c 61 75 73 65 20 69 73 20 70  R BY clause is p
1a180 72 6f 63 65 73 73 65 64 20 73 65 70 61 72 61 74  rocessed separat
1a190 65 6c 79 20 0a 61 6e 64 20 6d 61 79 20 63 6f 6d  ely .and may com
1a1a0 65 20 66 72 6f 6d 20 64 69 66 66 65 72 65 6e 74  e from different
1a1b0 20 53 45 4c 45 43 54 20 73 74 61 74 65 6d 65 6e   SELECT statemen
1a1c0 74 73 20 69 6e 20 74 68 65 20 63 6f 6d 70 6f 75  ts in the compou
1a1d0 6e 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65  nd.</p>..<p>^The
1a1e0 20 4c 49 4d 49 54 20 63 6c 61 75 73 65 20 70 6c   LIMIT clause pl
1a1f0 61 63 65 73 20 61 6e 20 75 70 70 65 72 20 62 6f  aces an upper bo
1a200 75 6e 64 20 6f 6e 20 74 68 65 20 6e 75 6d 62 65  und on the numbe
1a210 72 20 6f 66 20 72 6f 77 73 0a 72 65 74 75 72 6e  r of rows.return
1a220 65 64 20 69 6e 20 74 68 65 20 72 65 73 75 6c 74  ed in the result
1a230 2e 20 20 5e 41 20 6e 65 67 61 74 69 76 65 20 4c  .  ^A negative L
1a240 49 4d 49 54 20 69 6e 64 69 63 61 74 65 73 20 6e  IMIT indicates n
1a250 6f 20 75 70 70 65 72 20 62 6f 75 6e 64 2e 0a 5e  o upper bound..^
1a260 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20 4f 46 46  The optional OFF
1a270 53 45 54 20 66 6f 6c 6c 6f 77 69 6e 67 20 4c 49  SET following LI
1a280 4d 49 54 20 73 70 65 63 69 66 69 65 73 20 68 6f  MIT specifies ho
1a290 77 20 6d 61 6e 79 0a 72 6f 77 73 20 74 6f 20 73  w many.rows to s
1a2a0 6b 69 70 20 61 74 20 74 68 65 20 62 65 67 69 6e  kip at the begin
1a2b0 6e 69 6e 67 20 6f 66 20 74 68 65 20 72 65 73 75  ning of the resu
1a2c0 6c 74 20 73 65 74 2e 0a 5e 49 6e 20 61 20 63 6f  lt set..^In a co
1a2d0 6d 70 6f 75 6e 64 20 71 75 65 72 79 2c 20 74 68  mpound query, th
1a2e0 65 20 4c 49 4d 49 54 20 63 6c 61 75 73 65 20 6d  e LIMIT clause m
1a2f0 61 79 20 6f 6e 6c 79 20 61 70 70 65 61 72 20 6f  ay only appear o
1a300 6e 20 74 68 65 0a 66 69 6e 61 6c 20 53 45 4c 45  n the.final SELE
1a310 43 54 20 73 74 61 74 65 6d 65 6e 74 2e 0a 5e 54  CT statement..^T
1a320 68 65 20 6c 69 6d 69 74 20 69 73 20 61 70 70 6c  he limit is appl
1a330 69 65 64 20 74 6f 20 74 68 65 20 65 6e 74 69 72  ied to the entir
1a340 65 20 71 75 65 72 79 20 6e 6f 74 0a 74 6f 20 74  e query not.to t
1a350 68 65 20 69 6e 64 69 76 69 64 75 61 6c 20 53 45  he individual SE
1a360 4c 45 43 54 20 73 74 61 74 65 6d 65 6e 74 20 74  LECT statement t
1a370 6f 20 77 68 69 63 68 20 69 74 20 69 73 20 61 74  o which it is at
1a380 74 61 63 68 65 64 2e 0a 5e 4e 6f 74 65 20 74 68  tached..^Note th
1a390 61 74 20 69 66 20 74 68 65 20 4f 46 46 53 45 54  at if the OFFSET
1a3a0 20 6b 65 79 77 6f 72 64 20 69 73 20 75 73 65 64   keyword is used
1a3b0 20 69 6e 20 74 68 65 20 4c 49 4d 49 54 20 63 6c   in the LIMIT cl
1a3c0 61 75 73 65 2c 20 74 68 65 6e 20 74 68 65 0a 6c  ause, then the.l
1a3d0 69 6d 69 74 20 69 73 20 74 68 65 20 66 69 72 73  imit is the firs
1a3e0 74 20 6e 75 6d 62 65 72 20 61 6e 64 20 74 68 65  t number and the
1a3f0 20 6f 66 66 73 65 74 20 69 73 20 74 68 65 20 73   offset is the s
1a400 65 63 6f 6e 64 20 6e 75 6d 62 65 72 2e 20 20 5e  econd number.  ^
1a410 49 66 20 61 0a 63 6f 6d 6d 61 20 69 73 20 75 73  If a.comma is us
1a420 65 64 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68  ed instead of th
1a430 65 20 4f 46 46 53 45 54 20 6b 65 79 77 6f 72 64  e OFFSET keyword
1a440 2c 20 74 68 65 6e 20 74 68 65 20 6f 66 66 73 65  , then the offse
1a450 74 20 69 73 20 74 68 65 0a 66 69 72 73 74 20 6e  t is the.first n
1a460 75 6d 62 65 72 20 61 6e 64 20 74 68 65 20 6c 69  umber and the li
1a470 6d 69 74 20 69 73 20 74 68 65 20 73 65 63 6f 6e  mit is the secon
1a480 64 20 6e 75 6d 62 65 72 2e 20 20 54 68 69 73 20  d number.  This 
1a490 73 65 65 6d 69 6e 67 0a 63 6f 6e 74 72 61 64 69  seeming.contradi
1a4a0 74 69 6f 6e 20 69 73 20 69 6e 74 65 6e 74 69 6f  tion is intentio
1a4b0 6e 61 6c 20 2d 20 69 74 20 6d 61 78 69 6d 69 7a  nal - it maximiz
1a4c0 65 73 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79  es compatibility
1a4d0 20 77 69 74 68 20 6c 65 67 61 63 79 0a 53 51 4c   with legacy.SQL
1a4e0 20 64 61 74 61 62 61 73 65 20 73 79 73 74 65 6d   database system
1a4f0 73 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 5e 41 20 63  s..</p>..<p>^A c
1a500 6f 6d 70 6f 75 6e 64 20 53 45 4c 45 43 54 20 69  ompound SELECT i
1a510 73 20 66 6f 72 6d 65 64 20 66 72 6f 6d 20 74 77  s formed from tw
1a520 6f 20 6f 72 20 6d 6f 72 65 20 73 69 6d 70 6c 65  o or more simple
1a530 20 53 45 4c 45 43 54 73 20 63 6f 6e 6e 65 63 74   SELECTs connect
1a540 65 64 0a 62 79 20 6f 6e 65 20 6f 66 20 74 68 65  ed.by one of the
1a550 20 6f 70 65 72 61 74 6f 72 73 20 55 4e 49 4f 4e   operators UNION
1a560 2c 20 55 4e 49 4f 4e 20 41 4c 4c 2c 20 49 4e 54  , UNION ALL, INT
1a570 45 52 53 45 43 54 2c 20 6f 72 20 45 58 43 45 50  ERSECT, or EXCEP
1a580 54 2e 20 20 5e 49 6e 0a 61 20 63 6f 6d 70 6f 75  T.  ^In.a compou
1a590 6e 64 20 53 45 4c 45 43 54 2c 20 61 6c 6c 20 74  nd SELECT, all t
1a5a0 68 65 20 63 6f 6e 73 74 69 74 75 65 6e 74 20 53  he constituent S
1a5b0 45 4c 45 43 54 73 20 6d 75 73 74 20 73 70 65 63  ELECTs must spec
1a5c0 69 66 79 20 74 68 65 0a 73 61 6d 65 20 6e 75 6d  ify the.same num
1a5d0 62 65 72 20 6f 66 20 72 65 73 75 6c 74 20 63 6f  ber of result co
1a5e0 6c 75 6d 6e 73 2e 20 20 5e 54 68 65 72 65 20 6d  lumns.  ^There m
1a5f0 61 79 20 62 65 20 6f 6e 6c 79 20 61 20 73 69 6e  ay be only a sin
1a600 67 6c 65 20 4f 52 44 45 52 20 42 59 0a 63 6c 61  gle ORDER BY.cla
1a610 75 73 65 20 61 74 20 74 68 65 20 65 6e 64 20 6f  use at the end o
1a620 66 20 74 68 65 20 63 6f 6d 70 6f 75 6e 64 20 53  f the compound S
1a630 45 4c 45 43 54 2e 20 20 5e 54 68 65 20 55 4e 49  ELECT.  ^The UNI
1a640 4f 4e 20 61 6e 64 20 55 4e 49 4f 4e 20 41 4c 4c  ON and UNION ALL
1a650 0a 6f 70 65 72 61 74 6f 72 73 20 63 6f 6d 62 69  .operators combi
1a660 6e 65 20 74 68 65 20 72 65 73 75 6c 74 73 20 6f  ne the results o
1a670 66 20 74 68 65 20 53 45 4c 45 43 54 73 20 74 6f  f the SELECTs to
1a680 20 74 68 65 20 72 69 67 68 74 20 61 6e 64 20 6c   the right and l
1a690 65 66 74 20 69 6e 74 6f 0a 61 20 73 69 6e 67 6c  eft into.a singl
1a6a0 65 20 62 69 67 20 74 61 62 6c 65 2e 20 20 5e 54  e big table.  ^T
1a6b0 68 65 20 64 69 66 66 65 72 65 6e 63 65 20 69 73  he difference is
1a6c0 20 74 68 61 74 20 69 6e 20 55 4e 49 4f 4e 20 61   that in UNION a
1a6d0 6c 6c 20 72 65 73 75 6c 74 20 72 6f 77 73 0a 61  ll result rows.a
1a6e0 72 65 20 64 69 73 74 69 6e 63 74 20 77 68 65 72  re distinct wher
1a6f0 65 20 69 6e 20 55 4e 49 4f 4e 20 41 4c 4c 20 74  e in UNION ALL t
1a700 68 65 72 65 20 6d 61 79 20 62 65 20 64 75 70 6c  here may be dupl
1a710 69 63 61 74 65 73 2e 0a 5e 54 68 65 20 49 4e 54  icates..^The INT
1a720 45 52 53 45 43 54 20 6f 70 65 72 61 74 6f 72 20  ERSECT operator 
1a730 74 61 6b 65 73 20 74 68 65 20 69 6e 74 65 72 73  takes the inters
1a740 65 63 74 69 6f 6e 20 6f 66 20 74 68 65 20 72 65  ection of the re
1a750 73 75 6c 74 73 20 6f 66 20 74 68 65 0a 6c 65 66  sults of the.lef
1a760 74 20 61 6e 64 20 72 69 67 68 74 20 53 45 4c 45  t and right SELE
1a770 43 54 73 2e 20 20 5e 45 58 43 45 50 54 20 74 61  CTs.  ^EXCEPT ta
1a780 6b 65 73 20 74 68 65 20 72 65 73 75 6c 74 20 6f  kes the result o
1a790 66 20 6c 65 66 74 20 53 45 4c 45 43 54 20 61 66  f left SELECT af
1a7a0 74 65 72 0a 72 65 6d 6f 76 69 6e 67 20 74 68 65  ter.removing the
1a7b0 20 72 65 73 75 6c 74 73 20 6f 66 20 74 68 65 20   results of the 
1a7c0 72 69 67 68 74 20 53 45 4c 45 43 54 2e 20 20 5e  right SELECT.  ^
1a7d0 57 68 65 6e 20 74 68 72 65 65 20 6f 72 20 6d 6f  When three or mo
1a7e0 72 65 20 53 45 4c 45 43 54 73 0a 61 72 65 20 63  re SELECTs.are c
1a7f0 6f 6e 6e 65 63 74 65 64 20 69 6e 74 6f 20 61 20  onnected into a 
1a800 63 6f 6d 70 6f 75 6e 64 2c 20 74 68 65 79 20 67  compound, they g
1a810 72 6f 75 70 20 66 72 6f 6d 20 6c 65 66 74 20 74  roup from left t
1a820 6f 20 72 69 67 68 74 2e 3c 2f 70 3e 0a 0a 0a 3c  o right.</p>...<
1a830 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23  tcl>.###########
1a840 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1a850 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1a860 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1a870 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1a880 23 23 23 0a 53 65 63 74 69 6f 6e 20 55 50 44 41  ###.Section UPDA
1a890 54 45 20 75 70 64 61 74 65 20 7b 55 50 44 41 54  TE update {UPDAT
1a8a0 45 20 2a 55 50 44 41 54 45 73 7d 0a 0a 42 75 62  E *UPDATEs}..Bub
1a8b0 62 6c 65 44 69 61 67 72 61 6d 20 75 70 64 61 74  bleDiagram updat
1a8c0 65 2d 73 74 6d 74 20 31 0a 42 75 62 62 6c 65 44  e-stmt 1.BubbleD
1a8d0 69 61 67 72 61 6d 20 71 75 61 6c 69 66 69 65 64  iagram qualified
1a8e0 2d 74 61 62 6c 65 2d 6e 61 6d 65 0a 3c 2f 74 63  -table-name.</tc
1a8f0 6c 3e 0a 0a 3c 70 3e 5e 54 68 65 20 55 50 44 41  l>..<p>^The UPDA
1a900 54 45 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20  TE statement is 
1a910 75 73 65 64 20 74 6f 20 63 68 61 6e 67 65 20 74  used to change t
1a920 68 65 20 76 61 6c 75 65 20 6f 66 20 63 6f 6c 75  he value of colu
1a930 6d 6e 73 20 69 6e 20 0a 73 65 6c 65 63 74 65 64  mns in .selected
1a940 20 72 6f 77 73 20 6f 66 20 61 20 74 61 62 6c 65   rows of a table
1a950 2e 20 20 5e 45 61 63 68 20 61 73 73 69 67 6e 6d  .  ^Each assignm
1a960 65 6e 74 20 69 6e 20 61 6e 20 55 50 44 41 54 45  ent in an UPDATE
1a970 20 73 70 65 63 69 66 69 65 73 0a 61 20 63 6f 6c   specifies.a col
1a980 75 6d 6e 20 6e 61 6d 65 20 74 6f 20 74 68 65 20  umn name to the 
1a990 6c 65 66 74 20 6f 66 20 74 68 65 20 65 71 75 61  left of the equa
1a9a0 6c 73 20 73 69 67 6e 20 61 6e 64 20 61 6e 20 61  ls sign and an a
1a9b0 72 62 69 74 72 61 72 79 20 65 78 70 72 65 73 73  rbitrary express
1a9c0 69 6f 6e 0a 74 6f 20 74 68 65 20 72 69 67 68 74  ion.to the right
1a9d0 2e 20 20 5e 54 68 65 20 65 78 70 72 65 73 73 69  .  ^The expressi
1a9e0 6f 6e 73 20 6d 61 79 20 75 73 65 20 74 68 65 20  ons may use the 
1a9f0 76 61 6c 75 65 73 20 6f 66 20 6f 74 68 65 72 20  values of other 
1aa00 63 6f 6c 75 6d 6e 73 2e 0a 5e 41 6c 6c 20 65 78  columns..^All ex
1aa10 70 72 65 73 73 69 6f 6e 73 20 61 72 65 20 65 76  pressions are ev
1aa20 61 6c 75 61 74 65 64 20 62 65 66 6f 72 65 20 61  aluated before a
1aa30 6e 79 20 61 73 73 69 67 6e 6d 65 6e 74 73 20 61  ny assignments a
1aa40 72 65 20 6d 61 64 65 2e 0a 5e 41 20 57 48 45 52  re made..^A WHER
1aa50 45 20 63 6c 61 75 73 65 20 63 61 6e 20 62 65 20  E clause can be 
1aa60 75 73 65 64 20 74 6f 20 72 65 73 74 72 69 63 74  used to restrict
1aa70 20 77 68 69 63 68 20 72 6f 77 73 20 61 72 65 20   which rows are 
1aa80 75 70 64 61 74 65 64 2e 3c 2f 70 3e 0a 0a 3c 70  updated.</p>..<p
1aa90 3e 5e 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20 63  >^The optional c
1aaa0 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65 20 61  onflict-clause a
1aab0 6c 6c 6f 77 73 20 74 68 65 20 73 70 65 63 69 66  llows the specif
1aac0 69 63 61 74 69 6f 6e 20 6f 66 20 61 6e 20 61 6c  ication of an al
1aad0 74 65 72 6e 61 74 69 76 65 0a 63 6f 6e 73 74 72  ternative.constr
1aae0 61 69 6e 74 20 63 6f 6e 66 6c 69 63 74 20 72 65  aint conflict re
1aaf0 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74  solution algorit
1ab00 68 6d 20 74 6f 20 75 73 65 20 64 75 72 69 6e 67  hm to use during
1ab10 20 74 68 69 73 20 6f 6e 65 20 55 50 44 41 54 45   this one UPDATE
1ab20 20 63 6f 6d 6d 61 6e 64 2e 0a 53 65 65 20 74 68   command..See th
1ab30 65 20 73 65 63 74 69 6f 6e 20 74 69 74 6c 65 64  e section titled
1ab40 0a 5b 4f 4e 20 43 4f 4e 46 4c 49 43 54 5d 20 66  .[ON CONFLICT] f
1ab50 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e  or additional in
1ab60 66 6f 72 6d 61 74 69 6f 6e 2e 3c 2f 70 3e 0a 0a  formation.</p>..
1ab70 3c 68 33 3e 52 65 73 74 72 69 63 74 69 6f 6e 73  <h3>Restrictions
1ab80 20 6f 6e 20 55 50 44 41 54 45 20 53 74 61 74 65   on UPDATE State
1ab90 6d 65 6e 74 73 20 57 69 74 68 69 6e 20 43 52 45  ments Within CRE
1aba0 41 54 45 20 54 52 49 47 47 45 52 3c 2f 68 33 3e  ATE TRIGGER</h3>
1abb0 0a 0a 3c 70 3e 5e 54 68 65 72 65 20 61 72 65 20  ..<p>^There are 
1abc0 61 64 64 69 74 69 6f 6e 61 6c 20 73 79 6e 74 61  additional synta
1abd0 78 20 72 65 73 74 72 69 63 74 69 6f 6e 73 20 6f  x restrictions o
1abe0 6e 20 55 50 44 41 54 45 20 73 74 61 74 65 6d 65  n UPDATE stateme
1abf0 6e 74 73 20 74 68 61 74 0a 6f 63 63 75 72 20 77  nts that.occur w
1ac00 69 74 68 69 6e 20 74 68 65 20 62 6f 64 79 20 6f  ithin the body o
1ac10 66 20 61 20 5b 43 52 45 41 54 45 20 54 52 49 47  f a [CREATE TRIG
1ac20 47 45 52 5d 20 73 74 61 74 65 6d 65 6e 74 2e 20  GER] statement. 
1ac30 20 5e 54 68 65 20 3c 69 3e 74 61 62 6c 65 2d 6e   ^The <i>table-n
1ac40 61 6d 65 3c 2f 69 3e 0a 6f 66 20 74 68 65 20 55  ame</i>.of the U
1ac50 50 44 41 54 45 20 6d 75 73 74 20 62 65 20 75 6e  PDATE must be un
1ac60 71 75 61 6c 69 66 69 65 64 2e 20 0a 5e 28 49 6e  qualified. .^(In
1ac70 20 6f 74 68 65 72 20 77 6f 72 64 73 2c 20 74 68   other words, th
1ac80 65 20 3c 69 3e 64 61 74 61 62 61 73 65 2d 6e 61  e <i>database-na
1ac90 6d 65 3c 2f 69 3e 3c 62 3e 2e 3c 2f 62 3e 20 70  me</i><b>.</b> p
1aca0 72 65 66 69 78 20 0a 6f 6e 20 74 68 65 20 74 61  refix .on the ta
1acb0 62 6c 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  ble name of the 
1acc0 55 50 44 41 54 45 20 69 73 20 6e 6f 74 20 61 6c  UPDATE is not al
1acd0 6c 6f 77 65 64 20 77 69 74 68 69 6e 20 74 72 69  lowed within tri
1ace0 67 67 65 72 73 2e 29 5e 0a 5e 54 68 65 20 74 61  ggers.)^.^The ta
1acf0 62 6c 65 20 74 6f 20 62 65 20 75 70 64 61 74 65  ble to be update
1ad00 64 20 6d 75 73 74 20 62 65 20 69 6e 20 74 68 65  d must be in the
1ad10 20 73 61 6d 65 0a 64 61 74 61 62 61 73 65 20 61   same.database a
1ad20 73 20 74 68 65 20 74 61 62 6c 65 20 74 6f 20 77  s the table to w
1ad30 68 69 63 68 20 74 68 65 20 74 72 69 67 67 65 72  hich the trigger
1ad40 20 69 73 20 61 74 74 61 63 68 65 64 2e 3c 2f 70   is attached.</p
1ad50 3e 0a 0a 3c 70 3e 5e 54 68 65 20 49 4e 44 45 58  >..<p>^The INDEX
1ad60 45 44 20 42 59 20 61 6e 64 20 4e 4f 54 20 49 4e  ED BY and NOT IN
1ad70 44 45 58 45 44 20 63 6c 61 75 73 65 73 20 61 72  DEXED clauses ar
1ad80 65 20 6e 6f 74 20 61 6c 6c 6f 77 65 64 20 6f 6e  e not allowed on
1ad90 20 55 50 44 41 54 45 0a 73 74 61 74 65 6d 65 6e   UPDATE.statemen
1ada0 74 73 20 77 69 74 68 69 6e 20 74 72 69 67 67 65  ts within trigge
1adb0 72 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65  rs.</p>..<p>^The
1adc0 20 4c 49 4d 49 54 20 63 6c 61 75 73 65 20 66 6f   LIMIT clause fo
1add0 72 20 55 50 44 41 54 45 20 69 73 20 75 6e 73 75  r UPDATE is unsu
1ade0 70 70 6f 72 74 65 64 20 77 69 74 68 69 6e 20 74  pported within t
1adf0 72 69 67 67 65 72 73 2e 3c 2f 70 3e 0a 0a 3c 68  riggers.</p>..<h
1ae00 33 3e 4f 70 74 69 6f 6e 61 6c 20 4c 49 4d 49 54  3>Optional LIMIT
1ae10 20 61 6e 64 20 4f 52 44 45 52 20 42 59 20 43 6c   and ORDER BY Cl
1ae20 61 75 73 65 73 3c 2f 68 33 3e 0a 0a 3c 70 3e 5e  auses</h3>..<p>^
1ae30 28 49 66 20 53 51 4c 69 74 65 20 69 73 20 62 75  (If SQLite is bu
1ae40 69 6c 74 20 77 69 74 68 20 74 68 65 20 5b 53 51  ilt with the [SQ
1ae50 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 55 50 44 41  LITE_ENABLE_UPDA
1ae60 54 45 5f 44 45 4c 45 54 45 5f 4c 49 4d 49 54 5d  TE_DELETE_LIMIT]
1ae70 0a 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70  .compile-time op
1ae80 74 69 6f 6e 20 74 68 65 6e 20 74 68 65 20 73 79  tion then the sy
1ae90 6e 74 61 78 20 6f 66 20 74 68 65 20 55 50 44 41  ntax of the UPDA
1aea0 54 45 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20  TE statement is 
1aeb0 65 78 74 65 6e 64 65 64 0a 77 69 74 68 20 6f 70  extended.with op
1aec0 74 69 6f 6e 61 6c 20 4f 52 44 45 52 20 42 59 20  tional ORDER BY 
1aed0 61 6e 64 20 4c 49 4d 49 54 20 63 6c 61 75 73 65  and LIMIT clause
1aee0 73 29 5e 20 61 73 20 66 6f 6c 6c 6f 77 73 3a 3c  s)^ as follows:<
1aef0 2f 70 3e 0a 0a 3c 74 63 6c 3e 42 75 62 62 6c 65  /p>..<tcl>Bubble
1af00 44 69 61 67 72 61 6d 20 75 70 64 61 74 65 2d 73  Diagram update-s
1af10 74 6d 74 2d 6c 69 6d 69 74 65 64 3c 2f 74 63 6c  tmt-limited</tcl
1af20 3e 0a 0a 3c 70 3e 5e 54 68 65 20 6f 70 74 69 6f  >..<p>^The optio
1af30 6e 61 6c 20 4c 49 4d 49 54 20 63 6c 61 75 73 65  nal LIMIT clause
1af40 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20   can be used to 
1af50 6c 69 6d 69 74 20 74 68 65 20 6e 75 6d 62 65 72  limit the number
1af60 20 6f 66 0a 72 6f 77 73 20 6d 6f 64 69 66 65 64   of.rows modifed
1af70 2c 20 61 6e 64 20 74 68 65 72 65 62 79 20 6c 69  , and thereby li
1af80 6d 69 74 20 74 68 65 20 73 69 7a 65 20 6f 66 20  mit the size of 
1af90 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 2e  the transaction.
1afa0 0a 5e 54 68 65 20 4f 52 44 45 52 20 42 59 20 63  .^The ORDER BY c
1afb0 6c 61 75 73 65 20 6f 6e 20 61 6e 20 55 50 44 41  lause on an UPDA
1afc0 54 45 20 73 74 61 74 65 6d 65 6e 74 0a 69 73 20  TE statement.is 
1afd0 75 73 65 64 20 6f 6e 6c 79 20 74 6f 20 64 65 74  used only to det
1afe0 65 72 6d 69 6e 65 20 77 68 69 63 68 20 72 6f 77  ermine which row
1aff0 73 20 66 61 6c 6c 0a 77 69 74 68 69 6e 20 74 68  s fall.within th
1b000 65 20 4c 49 4d 49 54 2e 20 20 5e 54 68 65 20 6f  e LIMIT.  ^The o
1b010 72 64 65 72 20 69 6e 20 77 68 69 63 68 20 72 6f  rder in which ro
1b020 77 73 20 61 72 65 20 6d 6f 64 69 66 69 65 64 20  ws are modified 
1b030 69 73 20 61 72 62 69 74 72 61 72 79 0a 61 6e 64  is arbitrary.and
1b040 20 69 73 20 6e 6f 74 20 64 65 74 65 72 6d 69 6e   is not determin
1b050 65 64 20 62 79 20 74 68 65 20 4f 52 44 45 52 20  ed by the ORDER 
1b060 42 59 20 63 6c 61 75 73 65 2e 3c 2f 70 3e 0a 0a  BY clause.</p>..
1b070 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23  <tcl>.##########
1b080 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1b090 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1b0a0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1b0b0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1b0c0 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 56 41 43  ####.Section VAC
1b0d0 55 55 4d 20 76 61 63 75 75 6d 20 56 41 43 55 55  UUM vacuum VACUU
1b0e0 4d 0a 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d  M..BubbleDiagram
1b0f0 20 76 61 63 75 75 6d 2d 73 74 6d 74 20 31 0a 3c   vacuum-stmt 1.<
1b100 2f 74 63 6c 3e 0a 0a 3c 70 3e 5e 57 68 65 6e 20  /tcl>..<p>^When 
1b110 61 6e 20 6f 62 6a 65 63 74 20 28 74 61 62 6c 65  an object (table
1b120 2c 20 69 6e 64 65 78 2c 20 74 72 69 67 67 65 72  , index, trigger
1b130 2c 20 6f 72 20 76 69 65 77 29 20 69 73 20 64 72  , or view) is dr
1b140 6f 70 70 65 64 20 66 72 6f 6d 20 74 68 65 20 0a  opped from the .
1b150 64 61 74 61 62 61 73 65 2c 20 69 74 20 6c 65 61  database, it lea
1b160 76 65 73 20 62 65 68 69 6e 64 20 65 6d 70 74 79  ves behind empty
1b170 20 73 70 61 63 65 2e 20 0a 5e 54 68 69 73 20 65   space. .^This e
1b180 6d 70 74 79 20 73 70 61 63 65 20 77 69 6c 6c 20  mpty space will 
1b190 62 65 20 72 65 75 73 65 64 20 74 68 65 20 6e 65  be reused the ne
1b1a0 78 74 20 74 69 6d 65 20 6e 65 77 20 69 6e 66 6f  xt time new info
1b1b0 72 6d 61 74 69 6f 6e 20 69 73 0a 61 64 64 65 64  rmation is.added
1b1c0 20 74 6f 20 74 68 65 20 64 61 74 61 62 61 73 65   to the database
1b1d0 2e 20 20 42 75 74 20 69 6e 20 74 68 65 20 6d 65  .  But in the me
1b1e0 61 6e 74 69 6d 65 2c 20 74 68 65 20 64 61 74 61  antime, the data
1b1f0 62 61 73 65 20 66 69 6c 65 20 6d 69 67 68 74 0a  base file might.
1b200 62 65 20 6c 61 72 67 65 72 20 74 68 61 6e 20 73  be larger than s
1b210 74 72 69 63 74 6c 79 20 6e 65 63 65 73 73 61 72  trictly necessar
1b220 79 2e 20 20 41 6c 73 6f 2c 20 66 72 65 71 75 65  y.  Also, freque
1b230 6e 74 20 69 6e 73 65 72 74 73 2c 20 75 70 64 61  nt inserts, upda
1b240 74 65 73 2c 0a 61 6e 64 20 64 65 6c 65 74 65 73  tes,.and deletes
1b250 20 63 61 6e 20 63 61 75 73 65 20 74 68 65 20 69   can cause the i
1b260 6e 66 6f 72 6d 61 74 69 6f 6e 20 69 6e 20 74 68  nformation in th
1b270 65 20 64 61 74 61 62 61 73 65 20 74 6f 20 62 65  e database to be
1b280 63 6f 6d 65 0a 66 72 61 67 6d 65 6e 74 65 64 20  come.fragmented 
1b290 2d 20 73 63 72 61 74 74 65 72 65 64 20 6f 75 74  - scrattered out
1b2a0 20 61 6c 6c 20 61 63 72 6f 73 73 20 74 68 65 20   all across the 
1b2b0 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 72 61  database file ra
1b2c0 74 68 65 72 0a 74 68 61 6e 20 63 6c 75 73 74 65  ther.than cluste
1b2d0 72 65 64 20 74 6f 67 65 74 68 65 72 20 69 6e 20  red together in 
1b2e0 6f 6e 65 20 70 6c 61 63 65 2e 3c 2f 70 3e 0a 0a  one place.</p>..
1b2f0 3c 70 3e 5e 54 68 65 20 56 41 43 55 55 4d 20 63  <p>^The VACUUM c
1b300 6f 6d 6d 61 6e 64 20 63 6c 65 61 6e 73 0a 74 68  ommand cleans.th
1b310 65 20 6d 61 69 6e 20 64 61 74 61 62 61 73 65 20  e main database 
1b320 62 79 20 63 6f 70 79 69 6e 67 20 69 74 73 20 63  by copying its c
1b330 6f 6e 74 65 6e 74 73 20 74 6f 20 61 20 74 65 6d  ontents to a tem
1b340 70 6f 72 61 72 79 20 64 61 74 61 62 61 73 65 20  porary database 
1b350 66 69 6c 65 20 61 6e 64 20 0a 72 65 6c 6f 61 64  file and .reload
1b360 69 6e 67 20 74 68 65 20 6f 72 69 67 69 6e 61 6c  ing the original
1b370 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 66   database file f
1b380 72 6f 6d 20 74 68 65 20 63 6f 70 79 2e 20 20 54  rom the copy.  T
1b390 68 69 73 20 65 6c 69 6d 69 6e 61 74 65 73 20 0a  his eliminates .
1b3a0 66 72 65 65 20 70 61 67 65 73 2c 20 20 61 6c 69  free pages,  ali
1b3b0 67 6e 73 20 74 61 62 6c 65 20 64 61 74 61 20 74  gns table data t
1b3c0 6f 20 62 65 20 63 6f 6e 74 69 67 75 6f 75 73 2c  o be contiguous,
1b3d0 20 61 6e 64 20 6f 74 68 65 72 77 69 73 65 20 63   and otherwise c
1b3e0 6c 65 61 6e 73 20 0a 75 70 20 74 68 65 20 64 61  leans .up the da
1b3f0 74 61 62 61 73 65 20 66 69 6c 65 20 73 74 72 75  tabase file stru
1b400 63 74 75 72 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e  cture.</p>..<p>^
1b410 54 68 65 20 56 41 43 55 55 4d 20 63 6f 6d 6d 61  The VACUUM comma
1b420 6e 64 20 6d 61 79 20 63 68 61 6e 67 65 20 74 68  nd may change th
1b430 65 20 0a 5b 52 4f 57 49 44 20 7c 20 52 4f 57 49  e .[ROWID | ROWI
1b440 44 73 5d 20 6f 66 20 65 6e 74 72 69 65 73 20 69  Ds] of entries i
1b450 6e 20 74 61 62 6c 65 73 20 74 68 61 74 20 64 6f  n tables that do
1b460 0a 6e 6f 74 20 68 61 76 65 20 61 6e 20 65 78 70  .not have an exp
1b470 6c 69 63 69 74 20 5b 49 4e 54 45 47 45 52 20 50  licit [INTEGER P
1b480 52 49 4d 41 52 59 20 4b 45 59 5d 2e 3c 2f 70 3e  RIMARY KEY].</p>
1b490 0a 0a 3c 70 3e 5e 56 41 43 55 55 4d 20 6f 6e 6c  ..<p>^VACUUM onl
1b4a0 79 20 77 6f 72 6b 73 20 6f 6e 20 74 68 65 20 6d  y works on the m
1b4b0 61 69 6e 20 64 61 74 61 62 61 73 65 2e 0a 49 74  ain database..It
1b4c0 20 69 73 20 6e 6f 74 20 70 6f 73 73 69 62 6c 65   is not possible
1b4d0 20 74 6f 20 56 41 43 55 55 4d 20 61 6e 20 61 74   to VACUUM an at
1b4e0 74 61 63 68 65 64 20 64 61 74 61 62 61 73 65 20  tached database 
1b4f0 66 69 6c 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54  file.</p>..<p>^T
1b500 68 65 20 56 41 43 55 55 4d 20 63 6f 6d 6d 61 6e  he VACUUM comman
1b510 64 20 77 69 6c 6c 20 66 61 69 6c 20 69 66 20 74  d will fail if t
1b520 68 65 72 65 20 69 73 20 61 6e 20 61 63 74 69 76  here is an activ
1b530 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 2e 0a 5e  e transaction..^
1b540 54 68 65 20 56 41 43 55 55 4d 20 63 6f 6d 6d 61  The VACUUM comma
1b550 6e 64 20 69 73 20 61 20 6e 6f 2d 6f 70 20 66 6f  nd is a no-op fo
1b560 72 20 69 6e 2d 6d 65 6d 6f 72 79 20 64 61 74 61  r in-memory data
1b570 62 61 73 65 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e  bases.</p>..<p>^
1b580 28 41 73 20 6f 66 20 53 51 4c 69 74 65 20 76 65  (As of SQLite ve
1b590 72 73 69 6f 6e 20 33 2e 31 2c 20 61 6e 20 61 6c  rsion 3.1, an al
1b5a0 74 65 72 6e 61 74 69 76 65 20 74 6f 20 75 73 69  ternative to usi
1b5b0 6e 67 20 74 68 65 20 56 41 43 55 55 4d 20 63 6f  ng the VACUUM co
1b5c0 6d 6d 61 6e 64 0a 69 73 20 61 75 74 6f 2d 76 61  mmand.is auto-va
1b5d0 63 75 75 6d 20 6d 6f 64 65 2c 20 65 6e 61 62 6c  cuum mode, enabl
1b5e0 65 64 20 75 73 69 6e 67 20 74 68 65 20 0a 5b 61  ed using the .[a
1b5f0 75 74 6f 5f 76 61 63 75 75 6d 5d 20 70 72 61 67  uto_vacuum] prag
1b600 6d 61 2e 29 5e 20 20 5e 57 68 65 6e 20 5b 61 75  ma.)^  ^When [au
1b610 74 6f 5f 76 61 63 75 75 6d 5d 20 69 73 20 65 6e  to_vacuum] is en
1b620 61 62 6c 65 64 20 66 6f 72 20 61 20 64 61 74 61  abled for a data
1b630 62 61 73 65 2c 20 0a 6c 61 72 67 65 20 64 65 6c  base, .large del
1b640 65 74 65 73 20 63 61 75 73 65 0a 74 68 65 20 73  etes cause.the s
1b650 69 7a 65 20 6f 66 20 74 68 65 20 64 61 74 61 62  ize of the datab
1b660 61 73 65 20 66 69 6c 65 20 74 6f 20 73 68 72 69  ase file to shri
1b670 6e 6b 2e 20 20 48 6f 77 65 76 65 72 2c 20 5b 61  nk.  However, [a
1b680 75 74 6f 5f 76 61 63 75 75 6d 5d 0a 61 6c 73 6f  uto_vacuum].also
1b690 20 63 61 75 73 65 73 20 65 78 63 65 73 73 20 66   causes excess f
1b6a0 72 61 67 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20  ragmentation of 
1b6b0 74 68 65 20 64 61 74 61 62 61 73 65 20 66 69 6c  the database fil
1b6c0 65 2e 20 20 5e 41 6e 64 20 5b 61 75 74 6f 5f 76  e.  ^And [auto_v
1b6d0 61 63 75 75 6d 5d 0a 64 6f 65 73 20 6e 6f 74 20  acuum].does not 
1b6e0 63 6f 6d 70 61 63 74 20 70 61 72 74 69 61 6c 6c  compact partiall
1b6f0 79 20 66 69 6c 6c 65 64 20 70 61 67 65 73 20 6f  y filled pages o
1b700 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20 61  f the database a
1b710 73 20 56 41 43 55 55 4d 0a 64 6f 65 73 2e 3c 2f  s VACUUM.does.</
1b720 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20 5b 70 61 67  p>..<p>^The [pag
1b730 65 5f 73 69 7a 65 5d 20 61 6e 64 2f 6f 72 20 5b  e_size] and/or [
1b740 61 75 74 6f 5f 76 61 63 75 75 6d 5d 20 6d 6f 64  auto_vacuum] mod
1b750 65 20 6f 66 20 61 20 64 61 74 61 62 61 73 65 20  e of a database 
1b760 63 61 6e 20 62 65 20 63 68 61 6e 67 65 64 0a 62  can be changed.b
1b770 79 20 69 6e 76 6f 6b 69 6e 67 20 74 68 65 20 5b  y invoking the [
1b780 70 61 67 65 5f 73 69 7a 65 20 70 72 61 67 6d 61  page_size pragma
1b790 5d 20 61 6e 64 2f 6f 72 20 5b 61 75 74 6f 5f 76  ] and/or [auto_v
1b7a0 61 63 75 75 6d 20 70 72 61 67 6d 61 5d 20 61 6e  acuum pragma] an
1b7b0 64 20 74 68 65 6e 0a 69 6d 6d 65 64 69 61 74 65  d then.immediate
1b7c0 6c 79 20 56 41 43 55 55 4d 69 6e 67 20 74 68 65  ly VACUUMing the
1b7d0 20 64 61 74 61 62 61 73 65 2e 20 5e 45 78 63 65   database. ^Exce
1b7e0 70 74 2c 20 74 68 65 20 70 61 67 65 20 73 69 7a  pt, the page siz
1b7f0 65 20 63 61 6e 6e 6f 74 20 62 65 0a 63 68 61 6e  e cannot be.chan
1b800 67 65 64 20 77 68 65 6e 20 5b 77 72 69 74 65 2d  ged when [write-
1b810 61 68 65 61 64 20 6c 6f 67 5d 20 6d 6f 64 65 20  ahead log] mode 
1b820 69 73 20 69 6e 20 75 73 65 2e 3c 2f 70 3e 0a 0a  is in use.</p>..
1b830 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23  <tcl>.##########
1b840 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1b850 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1b860 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1b870 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1b880 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b 49 4e  ####.Section {IN
1b890 44 45 58 45 44 20 42 59 7d 20 69 6e 64 65 78 65  DEXED BY} indexe
1b8a0 64 62 79 20 7b 7b 49 4e 44 45 58 45 44 20 42 59  dby {{INDEXED BY
1b8b0 7d 20 7b 4e 4f 54 20 49 4e 44 45 58 45 44 7d 7d  } {NOT INDEXED}}
1b8c0 0a 0a 3c 2f 74 63 6c 3e 0a 3c 70 3e 5e 54 68 65  ..</tcl>.<p>^The
1b8d0 20 49 4e 44 45 58 45 44 20 42 59 20 70 68 72 61   INDEXED BY phra
1b8e0 73 65 20 69 73 20 61 20 53 51 4c 20 65 78 74 65  se is a SQL exte
1b8f0 6e 73 69 6f 6e 20 66 6f 75 6e 64 20 6f 6e 6c 79  nsion found only
1b900 20 69 6e 20 53 51 4c 69 74 65 20 77 68 69 63 68   in SQLite which
1b910 20 63 61 6e 0a 62 65 20 75 73 65 64 20 74 6f 20   can.be used to 
1b920 76 65 72 69 66 79 20 74 68 61 74 20 74 68 65 20  verify that the 
1b930 63 6f 72 72 65 63 74 20 69 6e 64 69 63 65 73 20  correct indices 
1b940 61 72 65 20 62 65 69 6e 67 20 75 73 65 64 20 6f  are being used o
1b950 6e 20 61 20 5b 44 45 4c 45 54 45 5d 2c 0a 5b 53  n a [DELETE],.[S
1b960 45 4c 45 43 54 5d 2c 20 6f 72 20 5b 55 50 44 41  ELECT], or [UPDA
1b970 54 45 5d 20 73 74 61 74 65 6d 65 6e 74 2e 0a 5e  TE] statement..^
1b980 54 68 65 20 49 4e 44 45 58 45 44 20 42 59 20 70  The INDEXED BY p
1b990 68 72 61 73 65 20 61 6c 77 61 79 73 20 66 6f 6c  hrase always fol
1b9a0 6c 6f 77 73 20 74 68 65 20 6e 61 6d 65 20 6f 66  lows the name of
1b9b0 20 61 20 74 61 62 6c 65 20 74 68 61 74 20 53 51   a table that SQ
1b9c0 4c 69 74 65 20 77 69 6c 6c 0a 62 65 20 72 65 61  Lite will.be rea
1b9d0 64 69 6e 67 2e 20 20 54 68 65 20 49 4e 44 45 58  ding.  The INDEX
1b9e0 45 44 20 42 59 20 70 68 72 61 73 65 20 63 61 6e  ED BY phrase can
1b9f0 20 62 65 20 73 65 65 6e 20 69 6e 20 74 68 65 20   be seen in the 
1ba00 66 6f 6c 6c 6f 77 69 6e 67 20 73 79 6e 74 61 78  following syntax
1ba10 0a 64 69 61 67 72 61 6d 73 3a 3c 2f 70 3e 0a 0a  .diagrams:</p>..
1ba20 3c 74 63 6c 3e 0a 42 75 62 62 6c 65 44 69 61 67  <tcl>.BubbleDiag
1ba30 72 61 6d 20 71 75 61 6c 69 66 69 65 64 2d 74 61  ram qualified-ta
1ba40 62 6c 65 2d 6e 61 6d 65 0a 42 75 62 62 6c 65 44  ble-name.BubbleD
1ba50 69 61 67 72 61 6d 20 73 69 6e 67 6c 65 2d 73 6f  iagram single-so
1ba60 75 72 63 65 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e  urce.</tcl>..<p>
1ba70 5e 54 68 65 20 22 49 4e 44 45 58 45 44 20 42 59  ^The "INDEXED BY
1ba80 20 69 6e 64 65 78 2d 6e 61 6d 65 22 20 63 6c 61   index-name" cla
1ba90 75 73 65 20 73 70 65 63 69 66 69 65 73 20 74 68  use specifies th
1baa0 61 74 20 74 68 65 20 6e 61 6d 65 64 20 69 6e 64  at the named ind
1bab0 65 78 0a 6d 75 73 74 20 62 65 20 75 73 65 64 20  ex.must be used 
1bac0 69 6e 20 6f 72 64 65 72 20 74 6f 20 6c 6f 6f 6b  in order to look
1bad0 20 75 70 20 76 61 6c 75 65 73 20 6f 6e 20 74 68   up values on th
1bae0 65 20 70 72 65 63 65 64 69 6e 67 20 74 61 62 6c  e preceding tabl
1baf0 65 2e 0a 5e 49 66 20 69 6e 64 65 78 2d 6e 61 6d  e..^If index-nam
1bb00 65 20 64 6f 65 73 20 6e 6f 74 20 65 78 69 73 74  e does not exist
1bb10 20 6f 72 20 63 61 6e 6e 6f 74 20 62 65 20 75 73   or cannot be us
1bb20 65 64 20 66 6f 72 20 74 68 65 20 71 75 65 72 79  ed for the query
1bb30 2c 20 74 68 65 6e 0a 74 68 65 20 70 72 65 70 61  , then.the prepa
1bb40 72 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 53 51  ration of the SQ
1bb50 4c 20 73 74 61 74 65 6d 65 6e 74 20 66 61 69 6c  L statement fail
1bb60 73 2e 0a 5e 28 54 68 65 20 22 4e 4f 54 20 49 4e  s..^(The "NOT IN
1bb70 44 45 58 45 44 22 20 63 6c 61 75 73 65 20 73 70  DEXED" clause sp
1bb80 65 63 69 66 69 65 73 20 74 68 61 74 20 6e 6f 20  ecifies that no 
1bb90 69 6e 64 65 78 20 73 68 61 6c 6c 20 62 65 20 75  index shall be u
1bba0 73 65 64 20 77 68 65 6e 0a 61 63 63 65 73 73 69  sed when.accessi
1bbb0 6e 67 20 74 68 65 20 70 72 65 63 65 64 69 6e 67  ng the preceding
1bbc0 20 74 61 62 6c 65 2c 20 69 6e 63 6c 75 64 69 6e   table, includin
1bbd0 67 20 69 6d 70 6c 69 65 64 20 69 6e 64 69 63 65  g implied indice
1bbe0 73 20 63 72 65 61 74 65 20 62 79 0a 55 4e 49 51  s create by.UNIQ
1bbf0 55 45 20 61 6e 64 20 50 52 49 4d 41 52 59 20 4b  UE and PRIMARY K
1bc00 45 59 20 63 6f 6e 73 74 72 61 69 6e 74 73 2e 20  EY constraints. 
1bc10 20 48 6f 77 65 76 65 72 2c 20 74 68 65 20 49 4e   However, the IN
1bc20 54 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45  TEGER PRIMARY KE
1bc30 59 0a 63 61 6e 20 73 74 69 6c 6c 20 62 65 20 75  Y.can still be u
1bc40 73 65 64 20 74 6f 20 6c 6f 6f 6b 20 75 70 20 65  sed to look up e
1bc50 6e 74 72 69 65 73 20 65 76 65 6e 20 77 68 65 6e  ntries even when
1bc60 20 22 4e 4f 54 20 49 4e 44 45 58 45 44 22 20 69   "NOT INDEXED" i
1bc70 73 20 73 70 65 63 69 66 69 65 64 2e 29 5e 3c 2f  s specified.)^</
1bc80 70 3e 0a 0a 3c 70 3e 53 6f 6d 65 20 53 51 4c 20  p>..<p>Some SQL 
1bc90 64 61 74 61 62 61 73 65 20 65 6e 67 69 6e 65 73  database engines
1bca0 20 70 72 6f 76 69 64 65 20 6e 6f 6e 2d 73 74 61   provide non-sta
1bcb0 6e 64 61 72 64 20 22 68 69 6e 74 22 20 6d 65 63  ndard "hint" mec
1bcc0 68 61 6e 69 73 6d 73 20 77 68 69 63 68 0a 63 61  hanisms which.ca
1bcd0 6e 20 62 65 20 75 73 65 64 20 74 6f 20 67 69 76  n be used to giv
1bce0 65 20 74 68 65 20 71 75 65 72 79 20 6f 70 74 69  e the query opti
1bcf0 6d 69 7a 65 72 20 63 6c 75 65 73 20 61 62 6f 75  mizer clues abou
1bd00 74 20 77 68 61 74 20 69 6e 64 69 63 65 73 20 69  t what indices i
1bd10 74 20 73 68 6f 75 6c 64 0a 75 73 65 20 66 6f 72  t should.use for
1bd20 20 61 20 70 61 72 74 69 63 75 6c 61 72 20 73 74   a particular st
1bd30 61 74 65 6d 65 6e 74 2e 20 20 54 68 65 20 49 4e  atement.  The IN
1bd40 44 45 58 20 42 59 20 63 6c 61 75 73 65 20 6f 66  DEX BY clause of
1bd50 20 53 51 4c 69 74 65 20 69 73 20 0a 3c 65 6d 3e   SQLite is .<em>
1bd60 6e 6f 74 3c 2f 65 6d 3e 20 61 20 68 69 6e 74 69  not</em> a hinti
1bd70 6e 67 20 6d 65 63 68 61 6e 69 73 6d 20 61 6e 64  ng mechanism and
1bd80 20 69 74 20 73 68 6f 75 6c 64 20 6e 6f 74 20 62   it should not b
1bd90 65 20 75 73 65 64 20 61 73 20 73 75 63 68 2e 0a  e used as such..
1bda0 5e 54 68 65 20 49 4e 44 45 58 45 44 20 42 59 20  ^The INDEXED BY 
1bdb0 63 6c 61 75 73 65 20 64 6f 65 73 20 6e 6f 74 20  clause does not 
1bdc0 67 69 76 65 20 74 68 65 20 6f 70 74 69 6d 69 7a  give the optimiz
1bdd0 65 72 20 68 69 6e 74 73 20 61 62 6f 75 74 20 77  er hints about w
1bde0 68 69 63 68 20 69 6e 64 65 78 0a 74 6f 20 75 73  hich index.to us
1bdf0 65 3b 20 69 74 20 67 69 76 65 73 20 74 68 65 20  e; it gives the 
1be00 6f 70 74 69 6d 69 7a 65 72 20 61 20 72 65 71 75  optimizer a requ
1be10 69 72 65 6d 65 6e 74 20 6f 66 20 77 68 69 63 68  irement of which
1be20 20 69 6e 64 65 78 20 74 6f 20 75 73 65 2e 0a 5e   index to use..^
1be30 49 66 20 74 68 65 20 71 75 65 72 79 20 6f 70 74  If the query opt
1be40 69 6d 69 7a 65 72 20 69 73 20 75 6e 61 62 6c 65  imizer is unable
1be50 20 74 6f 20 75 73 65 20 74 68 65 20 69 6e 64 65   to use the inde
1be60 78 20 73 70 65 63 69 66 69 65 64 20 62 79 20 74  x specified by t
1be70 68 65 0a 49 4e 44 45 58 20 42 59 20 63 6c 61 75  he.INDEX BY clau
1be80 73 65 2c 20 74 68 65 6e 20 74 68 65 20 71 75 65  se, then the que
1be90 72 79 20 77 69 6c 6c 20 66 61 69 6c 20 77 69 74  ry will fail wit
1bea0 68 20 61 6e 20 65 72 72 6f 72 2e 3c 2f 70 3e 0a  h an error.</p>.
1beb0 0a 3c 70 3e 54 68 65 20 49 4e 44 45 58 45 44 20  .<p>The INDEXED 
1bec0 42 59 20 63 6c 61 75 73 65 20 69 73 20 3c 65 6d  BY clause is <em
1bed0 3e 6e 6f 74 3c 2f 65 6d 3e 20 69 6e 74 65 6e 64  >not</em> intend
1bee0 65 64 20 66 6f 72 20 75 73 65 20 69 6e 20 74 75  ed for use in tu
1bef0 6e 69 6e 67 0a 74 68 65 20 70 72 65 66 6f 72 6d  ning.the preform
1bf00 61 6e 63 65 20 6f 66 20 61 20 71 75 65 72 79 2e  ance of a query.
1bf10 20 20 54 68 65 20 69 6e 74 65 6e 74 20 6f 66 20    The intent of 
1bf20 74 68 65 20 49 4e 44 45 58 45 44 20 42 59 20 63  the INDEXED BY c
1bf30 6c 61 75 73 65 20 69 73 0a 74 6f 20 72 61 69 73  lause is.to rais
1bf40 65 20 61 20 72 75 6e 2d 74 69 6d 65 20 65 72 72  e a run-time err
1bf50 6f 72 20 69 66 20 61 20 73 63 68 65 6d 61 20 63  or if a schema c
1bf60 68 61 6e 67 65 2c 20 73 75 63 68 20 61 73 20 64  hange, such as d
1bf70 72 6f 70 70 69 6e 67 20 6f 72 0a 63 72 65 61 74  ropping or.creat
1bf80 69 6e 67 20 61 6e 20 69 6e 64 65 78 2c 20 63 61  ing an index, ca
1bf90 75 73 65 73 20 74 68 65 20 71 75 65 72 79 20 70  uses the query p
1bfa0 6c 61 6e 20 66 6f 72 20 61 20 74 69 6d 65 2d 73  lan for a time-s
1bfb0 65 6e 73 69 74 69 76 65 20 71 75 65 72 79 0a 74  ensitive query.t
1bfc0 6f 20 63 68 61 6e 67 65 2e 20 20 54 68 65 20 49  o change.  The I
1bfd0 4e 44 45 58 45 44 20 42 59 20 63 6c 61 75 73 65  NDEXED BY clause
1bfe0 20 69 73 20 64 65 73 69 67 6e 65 64 20 74 6f 20   is designed to 
1bff0 68 65 6c 70 20 64 65 74 65 63 74 0a 75 6e 64 65  help detect.unde
1c000 73 69 72 61 62 6c 65 20 71 75 65 72 79 20 70 6c  sirable query pl
1c010 61 6e 20 63 68 61 6e 67 65 73 20 64 75 72 69 6e  an changes durin
1c020 67 20 72 65 67 72 65 73 73 69 6f 6e 20 74 65 73  g regression tes
1c030 74 69 6e 67 2e 0a 44 65 76 65 6c 6f 70 65 72 73  ting..Developers
1c040 20 61 72 65 20 61 64 6d 6f 6e 69 73 68 65 64 20   are admonished 
1c050 74 6f 20 6f 6d 69 74 20 61 6c 6c 20 75 73 65 20  to omit all use 
1c060 6f 66 20 49 4e 44 45 58 45 44 20 42 59 20 64 75  of INDEXED BY du
1c070 72 69 6e 67 0a 61 70 70 6c 69 63 61 74 69 6f 6e  ring.application
1c080 20 64 65 73 69 67 6e 2c 20 69 6d 70 6c 65 6d 65   design, impleme
1c090 6e 74 61 74 69 6f 6e 2c 20 74 65 73 74 69 6e 67  ntation, testing
1c0a0 2c 20 61 6e 64 20 74 75 6e 69 6e 67 2e 20 20 49  , and tuning.  I
1c0b0 66 0a 49 4e 44 45 58 45 44 20 42 59 20 69 73 20  f.INDEXED BY is 
1c0c0 74 6f 20 62 65 20 75 73 65 64 20 61 74 20 61 6c  to be used at al
1c0d0 6c 2c 20 69 74 20 73 68 6f 75 6c 64 20 62 65 20  l, it should be 
1c0e0 69 6e 73 65 72 74 65 64 20 61 74 20 74 68 65 20  inserted at the 
1c0f0 76 65 72 79 0a 65 6e 64 20 6f 66 20 74 68 65 20  very.end of the 
1c100 64 65 76 65 6c 6f 70 6d 65 6e 74 20 70 72 6f 63  development proc
1c110 65 73 73 20 77 68 65 6e 20 22 6c 6f 63 6b 69 6e  ess when "lockin
1c120 67 20 64 6f 77 6e 22 20 61 20 64 65 73 69 67 6e  g down" a design
1c130 2e 3c 2f 70 3e 0a 0a 3c 68 33 3e 53 65 65 20 41  .</p>..<h3>See A
1c140 6c 73 6f 3a 3c 2f 68 33 3e 0a 0a 3c 70 3e 54 68  lso:</h3>..<p>Th
1c150 65 20 5b 73 71 6c 69 74 65 33 5f 73 74 6d 74 5f  e [sqlite3_stmt_
1c160 73 74 61 74 75 73 28 29 5d 20 43 2f 43 2b 2b 20  status()] C/C++ 
1c170 69 6e 74 65 72 66 61 63 65 20 74 6f 67 65 74 68  interface togeth
1c180 65 72 20 77 69 74 68 20 74 68 65 0a 5b 53 51 4c  er with the.[SQL
1c190 49 54 45 5f 53 54 4d 54 53 54 41 54 55 53 5f 46  ITE_STMTSTATUS_F
1c1a0 55 4c 4c 53 43 41 4e 5f 53 54 45 50 5d 20 61 6e  ULLSCAN_STEP] an
1c1b0 64 20 5b 53 51 4c 49 54 45 5f 53 54 4d 54 53 54  d [SQLITE_STMTST
1c1c0 41 54 55 53 5f 53 4f 52 54 5d 20 76 65 72 62 73  ATUS_SORT] verbs
1c1d0 0a 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20  .can be used to 
1c1e0 64 65 74 65 63 74 20 61 74 20 72 75 6e 2d 74 69  detect at run-ti
1c1f0 6d 65 20 77 68 65 6e 20 61 6e 20 53 51 4c 20 73  me when an SQL s
1c200 74 61 74 65 6d 65 6e 74 20 69 73 20 6e 6f 74 0a  tatement is not.
1c210 6d 61 6b 69 6e 67 20 65 66 66 65 63 74 69 76 65  making effective
1c220 20 75 73 65 20 6f 66 20 69 6e 64 69 63 65 73 2e   use of indices.
1c230 20 20 4d 61 6e 79 20 61 70 70 6c 69 63 61 74 69    Many applicati
1c240 6f 6e 73 20 6d 61 79 20 70 72 65 66 65 72 20 74  ons may prefer t
1c250 6f 0a 75 73 65 20 74 68 65 20 5b 73 71 6c 69 74  o.use the [sqlit
1c260 65 33 5f 73 74 6d 74 5f 73 74 61 74 75 73 28 29  e3_stmt_status()
1c270 5d 20 69 6e 74 65 72 66 61 63 65 20 74 6f 20 64  ] interface to d
1c280 65 74 65 63 74 20 69 6e 64 65 78 20 6d 69 73 75  etect index misu
1c290 73 65 0a 72 61 74 68 65 72 20 74 68 61 6e 20 74  se.rather than t
1c2a0 68 65 20 49 4e 44 45 58 45 44 20 42 59 20 70 68  he INDEXED BY ph
1c2b0 72 61 73 65 20 64 65 73 63 72 69 62 65 64 20 68  rase described h
1c2c0 65 72 65 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a  ere.</p>..<tcl>.
1c2d0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1c2e0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1c2f0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1c300 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1c310 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 20  #############.# 
1c320 41 20 6c 69 73 74 20 6f 66 20 6b 65 79 77 6f 72  A list of keywor
1c330 64 73 2e 20 20 41 20 61 73 74 65 72 69 73 6b 20  ds.  A asterisk 
1c340 6f 63 63 75 72 73 20 61 66 74 65 72 20 74 68 65  occurs after the
1c350 20 6b 65 79 77 6f 72 64 20 69 66 20 69 74 20 69   keyword if it i
1c360 73 20 6f 6e 0a 23 20 74 68 65 20 66 61 6c 6c 62  s on.# the fallb
1c370 61 63 6b 20 6c 69 73 74 2e 0a 23 0a 73 65 74 20  ack list..#.set 
1c380 6b 65 79 77 6f 72 64 5f 6c 69 73 74 20 5b 6c 73  keyword_list [ls
1c390 6f 72 74 20 7b 0a 20 20 20 41 42 4f 52 54 0a 20  ort {.   ABORT. 
1c3a0 20 20 41 43 54 49 4f 4e 0a 20 20 20 41 44 44 0a    ACTION.   ADD.
1c3b0 20 20 20 41 46 54 45 52 0a 20 20 20 41 4c 4c 0a     AFTER.   ALL.
1c3c0 20 20 20 41 4c 54 45 52 0a 20 20 20 41 4e 41 4c     ALTER.   ANAL
1c3d0 59 5a 45 0a 20 20 20 41 4e 44 0a 20 20 20 41 53  YZE.   AND.   AS
1c3e0 0a 20 20 20 41 53 43 0a 20 20 20 41 54 54 41 43  .   ASC.   ATTAC
1c3f0 48 0a 20 20 20 41 55 54 4f 49 4e 43 52 45 4d 45  H.   AUTOINCREME
1c400 4e 54 0a 20 20 20 42 45 46 4f 52 45 0a 20 20 20  NT.   BEFORE.   
1c410 42 45 47 49 4e 0a 20 20 20 42 45 54 57 45 45 4e  BEGIN.   BETWEEN
1c420 0a 20 20 20 42 59 0a 20 20 20 43 41 53 43 41 44  .   BY.   CASCAD
1c430 45 0a 20 20 20 43 41 53 45 0a 20 20 20 43 41 53  E.   CASE.   CAS
1c440 54 0a 20 20 20 43 48 45 43 4b 0a 20 20 20 43 4f  T.   CHECK.   CO
1c450 4c 4c 41 54 45 0a 20 20 20 43 4f 4c 55 4d 4e 0a  LLATE.   COLUMN.
1c460 20 20 20 43 4f 4d 4d 49 54 0a 20 20 20 43 4f 4e     COMMIT.   CON
1c470 46 4c 49 43 54 0a 20 20 20 43 4f 4e 53 54 52 41  FLICT.   CONSTRA
1c480 49 4e 54 0a 20 20 20 43 52 45 41 54 45 0a 20 20  INT.   CREATE.  
1c490 20 43 52 4f 53 53 0a 20 20 20 43 55 52 52 45 4e   CROSS.   CURREN
1c4a0 54 5f 44 41 54 45 0a 20 20 20 43 55 52 52 45 4e  T_DATE.   CURREN
1c4b0 54 5f 54 49 4d 45 0a 20 20 20 43 55 52 52 45 4e  T_TIME.   CURREN
1c4c0 54 5f 54 49 4d 45 53 54 41 4d 50 0a 20 20 20 44  T_TIMESTAMP.   D
1c4d0 41 54 41 42 41 53 45 0a 20 20 20 44 45 46 41 55  ATABASE.   DEFAU
1c4e0 4c 54 0a 20 20 20 44 45 46 45 52 52 45 44 0a 20  LT.   DEFERRED. 
1c4f0 20 20 44 45 46 45 52 52 41 42 4c 45 0a 20 20 20    DEFERRABLE.   
1c500 44 45 4c 45 54 45 0a 20 20 20 44 45 53 43 0a 20  DELETE.   DESC. 
1c510 20 20 44 45 54 41 43 48 0a 20 20 20 44 49 53 54    DETACH.   DIST
1c520 49 4e 43 54 0a 20 20 20 44 52 4f 50 0a 20 20 20  INCT.   DROP.   
1c530 45 4e 44 0a 20 20 20 45 41 43 48 0a 20 20 20 45  END.   EACH.   E
1c540 4c 53 45 0a 20 20 20 45 53 43 41 50 45 0a 20 20  LSE.   ESCAPE.  
1c550 20 45 58 43 45 50 54 0a 20 20 20 45 58 43 4c 55   EXCEPT.   EXCLU
1c560 53 49 56 45 0a 20 20 20 45 58 49 53 54 53 0a 20  SIVE.   EXISTS. 
1c570 20 20 45 58 50 4c 41 49 4e 0a 20 20 20 46 41 49    EXPLAIN.   FAI
1c580 4c 0a 20 20 20 46 4f 52 0a 20 20 20 46 4f 52 45  L.   FOR.   FORE
1c590 49 47 4e 0a 20 20 20 46 52 4f 4d 0a 20 20 20 46  IGN.   FROM.   F
1c5a0 55 4c 4c 0a 20 20 20 47 4c 4f 42 0a 20 20 20 47  ULL.   GLOB.   G
1c5b0 52 4f 55 50 0a 20 20 20 48 41 56 49 4e 47 0a 20  ROUP.   HAVING. 
1c5c0 20 20 49 46 0a 20 20 20 49 47 4e 4f 52 45 0a 20    IF.   IGNORE. 
1c5d0 20 20 49 4d 4d 45 44 49 41 54 45 0a 20 20 20 49    IMMEDIATE.   I
1c5e0 4e 0a 20 20 20 49 4e 44 45 58 0a 20 20 20 49 4e  N.   INDEX.   IN
1c5f0 44 45 58 45 44 0a 20 20 20 49 4e 49 54 49 41 4c  DEXED.   INITIAL
1c600 4c 59 0a 20 20 20 49 4e 4e 45 52 0a 20 20 20 49  LY.   INNER.   I
1c610 4e 53 45 52 54 0a 20 20 20 49 4e 53 54 45 41 44  NSERT.   INSTEAD
1c620 0a 20 20 20 49 4e 54 45 52 53 45 43 54 0a 20 20  .   INTERSECT.  
1c630 20 49 4e 54 4f 0a 20 20 20 49 53 0a 20 20 20 49   INTO.   IS.   I
1c640 53 4e 55 4c 4c 0a 20 20 20 4a 4f 49 4e 0a 20 20  SNULL.   JOIN.  
1c650 20 4b 45 59 0a 20 20 20 4c 45 46 54 0a 20 20 20   KEY.   LEFT.   
1c660 4c 49 4b 45 0a 20 20 20 4c 49 4d 49 54 0a 20 20  LIKE.   LIMIT.  
1c670 20 4d 41 54 43 48 0a 20 20 20 4e 41 54 55 52 41   MATCH.   NATURA
1c680 4c 0a 20 20 20 4e 4f 0a 20 20 20 4e 4f 54 0a 20  L.   NO.   NOT. 
1c690 20 20 4e 4f 54 4e 55 4c 4c 0a 20 20 20 4e 55 4c    NOTNULL.   NUL
1c6a0 4c 0a 20 20 20 4f 46 0a 20 20 20 4f 46 46 53 45  L.   OF.   OFFSE
1c6b0 54 0a 20 20 20 4f 4e 0a 20 20 20 4f 52 0a 20 20  T.   ON.   OR.  
1c6c0 20 4f 52 44 45 52 0a 20 20 20 4f 55 54 45 52 0a   ORDER.   OUTER.
1c6d0 20 20 20 50 4c 41 4e 0a 20 20 20 50 52 41 47 4d     PLAN.   PRAGM
1c6e0 41 0a 20 20 20 50 52 49 4d 41 52 59 0a 20 20 20  A.   PRIMARY.   
1c6f0 51 55 45 52 59 0a 20 20 20 52 41 49 53 45 0a 20  QUERY.   RAISE. 
1c700 20 20 52 45 46 45 52 45 4e 43 45 53 0a 20 20 20    REFERENCES.   
1c710 52 45 47 45 58 50 0a 20 20 20 52 45 49 4e 44 45  REGEXP.   REINDE
1c720 58 0a 20 20 20 52 45 4c 45 41 53 45 0a 20 20 20  X.   RELEASE.   
1c730 52 45 4e 41 4d 45 0a 20 20 20 52 45 50 4c 41 43  RENAME.   REPLAC
1c740 45 0a 20 20 20 52 45 53 54 52 49 43 54 0a 20 20  E.   RESTRICT.  
1c750 20 52 49 47 48 54 0a 20 20 20 52 4f 4c 4c 42 41   RIGHT.   ROLLBA
1c760 43 4b 0a 20 20 20 52 4f 57 0a 20 20 20 53 41 56  CK.   ROW.   SAV
1c770 45 50 4f 49 4e 54 0a 20 20 20 53 45 4c 45 43 54  EPOINT.   SELECT
1c780 0a 20 20 20 53 45 54 0a 20 20 20 54 41 42 4c 45  .   SET.   TABLE
1c790 0a 20 20 20 54 45 4d 50 0a 20 20 20 54 45 4d 50  .   TEMP.   TEMP
1c7a0 4f 52 41 52 59 0a 20 20 20 54 48 45 4e 0a 20 20  ORARY.   THEN.  
1c7b0 20 54 4f 0a 20 20 20 54 52 41 4e 53 41 43 54 49   TO.   TRANSACTI
1c7c0 4f 4e 0a 20 20 20 54 52 49 47 47 45 52 0a 20 20  ON.   TRIGGER.  
1c7d0 20 55 4e 49 4f 4e 0a 20 20 20 55 4e 49 51 55 45   UNION.   UNIQUE
1c7e0 0a 20 20 20 55 50 44 41 54 45 0a 20 20 20 55 53  .   UPDATE.   US
1c7f0 49 4e 47 0a 20 20 20 56 41 43 55 55 4d 0a 20 20  ING.   VACUUM.  
1c800 20 56 41 4c 55 45 53 0a 20 20 20 56 49 45 57 0a   VALUES.   VIEW.
1c810 20 20 20 56 49 52 54 55 41 4c 0a 20 20 20 57 48     VIRTUAL.   WH
1c820 45 4e 0a 20 20 20 57 48 45 52 45 0a 7d 5d 0a 0a  EN.   WHERE.}]..
1c830 68 64 5f 70 75 74 73 20 7b 3c 44 49 56 20 63 6c  hd_puts {<DIV cl
1c840 61 73 73 3d 22 70 64 66 5f 73 65 63 74 69 6f 6e  ass="pdf_section
1c850 22 3e 7d 0a 53 65 63 74 69 6f 6e 20 7b 53 51 4c  ">}.Section {SQL
1c860 69 74 65 20 4b 65 79 77 6f 72 64 73 7d 20 6b 65  ite Keywords} ke
1c870 79 77 6f 72 64 73 20 7b 7b 2a 53 51 4c 20 6b 65  ywords {{*SQL ke
1c880 79 77 6f 72 64 7d 20 7b 53 51 4c 20 6b 65 79 77  yword} {SQL keyw
1c890 6f 72 64 73 7d 7d 0a 68 64 5f 70 75 74 73 20 7b  ords}}.hd_puts {
1c8a0 3c 2f 44 49 56 3e 7d 0a 3c 2f 74 63 6c 3e 0a 0a  </DIV>}.</tcl>..
1c8b0 3c 70 3e 54 68 65 20 53 51 4c 20 73 74 61 6e 64  <p>The SQL stand
1c8c0 61 72 64 20 73 70 65 63 69 66 69 65 73 20 61 20  ard specifies a 
1c8d0 68 75 67 65 20 6e 75 6d 62 65 72 20 6f 66 20 6b  huge number of k
1c8e0 65 79 77 6f 72 64 73 20 77 68 69 63 68 20 6d 61  eywords which ma
1c8f0 79 20 6e 6f 74 0a 62 65 20 75 73 65 64 20 61 73  y not.be used as
1c900 20 74 68 65 20 6e 61 6d 65 73 20 6f 66 20 74 61   the names of ta
1c910 62 6c 65 73 2c 20 69 6e 64 69 63 65 73 2c 20 63  bles, indices, c
1c920 6f 6c 75 6d 6e 73 2c 20 64 61 74 61 62 61 73 65  olumns, database
1c930 73 2c 20 75 73 65 72 2d 64 65 66 69 6e 65 64 0a  s, user-defined.
1c940 66 75 6e 63 74 69 6f 6e 73 2c 20 63 6f 6c 6c 61  functions, colla
1c950 74 69 6f 6e 73 2c 20 76 69 72 74 75 61 6c 20 74  tions, virtual t
1c960 61 62 6c 65 20 6d 6f 64 75 6c 65 73 2c 20 6f 72  able modules, or
1c970 20 61 6e 79 20 6f 74 68 65 72 20 6e 61 6d 65 64   any other named
1c980 20 6f 62 6a 65 63 74 2e 0a 54 68 65 20 6c 69 73   object..The lis
1c990 74 20 6f 66 20 6b 65 79 77 6f 72 64 73 20 69 73  t of keywords is
1c9a0 20 73 6f 20 6c 6f 6e 67 20 74 68 61 74 20 66 65   so long that fe
1c9b0 77 20 70 65 6f 70 6c 65 20 63 61 6e 20 72 65 6d  w people can rem
1c9c0 65 6d 62 65 72 20 74 68 65 6d 20 61 6c 6c 2e 0a  ember them all..
1c9d0 46 6f 72 20 6d 6f 73 74 20 53 51 4c 20 63 6f 64  For most SQL cod
1c9e0 65 2c 20 79 6f 75 72 20 73 61 66 65 73 74 20 62  e, your safest b
1c9f0 65 74 20 69 73 20 74 6f 20 6e 65 76 65 72 20 75  et is to never u
1ca00 73 65 20 61 6e 79 20 45 6e 67 6c 69 73 68 20 6c  se any English l
1ca10 61 6e 67 75 61 67 65 0a 77 6f 72 64 20 61 73 20  anguage.word as 
1ca20 74 68 65 20 6e 61 6d 65 20 6f 66 20 61 20 75 73  the name of a us
1ca30 65 72 2d 64 65 66 69 6e 65 64 20 6f 62 6a 65 63  er-defined objec
1ca40 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 79 6f  t.</p>..<p>If yo
1ca50 75 20 77 61 6e 74 20 74 6f 20 75 73 65 20 61 20  u want to use a 
1ca60 6b 65 79 77 6f 72 64 20 61 73 20 61 20 6e 61 6d  keyword as a nam
1ca70 65 2c 20 79 6f 75 20 6e 65 65 64 20 74 6f 20 71  e, you need to q
1ca80 75 6f 74 65 20 69 74 2e 20 20 54 68 65 72 65 0a  uote it.  There.
1ca90 61 72 65 20 74 68 72 65 65 20 77 61 79 73 20 6f  are three ways o
1caa0 66 20 71 75 6f 74 69 6e 67 20 6b 65 79 77 6f 72  f quoting keywor
1cab0 64 73 20 69 6e 20 53 51 4c 69 74 65 3a 3c 2f 70  ds in SQLite:</p
1cac0 3e 0a 0a 3c 70 3e 0a 3c 62 6c 6f 63 6b 71 75 6f  >..<p>.<blockquo
1cad0 74 65 3e 0a 3c 74 61 62 6c 65 3e 0a 3c 74 72 3e  te>.<table>.<tr>
1cae0 09 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
1caf0 22 3e 3c 62 3e 27 6b 65 79 77 6f 72 64 27 3c 2f  "><b>'keyword'</
1cb00 62 3e 3c 2f 74 64 3e 3c 74 64 20 77 69 64 74 68  b></td><td width
1cb10 3d 22 32 30 22 3e 3c 2f 74 64 3e 0a 09 3c 74 64  ="20"></td>..<td
1cb20 3e 5e 41 20 6b 65 79 77 6f 72 64 20 69 6e 20 73  >^A keyword in s
1cb30 69 6e 67 6c 65 20 71 75 6f 74 65 73 20 69 73 20  ingle quotes is 
1cb40 61 20 73 74 72 69 6e 67 20 6c 69 74 65 72 61 6c  a string literal
1cb50 2e 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 0a 3c 74 72  .</td></tr>..<tr
1cb60 3e 09 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
1cb70 70 22 3e 3c 62 3e 22 6b 65 79 77 6f 72 64 22 3c  p"><b>"keyword"<
1cb80 2f 62 3e 3c 2f 74 64 3e 3c 74 64 3e 3c 2f 74 64  /b></td><td></td
1cb90 3e 0a 09 3c 74 64 3e 5e 41 20 6b 65 79 77 6f 72  >..<td>^A keywor
1cba0 64 20 69 6e 20 64 6f 75 62 6c 65 2d 71 75 6f 74  d in double-quot
1cbb0 65 73 20 69 73 20 61 6e 20 69 64 65 6e 74 69 66  es is an identif
1cbc0 69 65 72 2e 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 0a  ier.</td></tr>..
1cbd0 3c 74 72 3e 09 3c 74 64 20 76 61 6c 69 67 6e 3d  <tr>.<td valign=
1cbe0 22 74 6f 70 22 3e 3c 62 3e 26 23 39 31 3b 6b 65  "top"><b>&#91;ke
1cbf0 79 77 6f 72 64 26 23 39 33 3b 3c 2f 62 3e 3c 2f  yword&#93;</b></
1cc00 74 64 3e 3c 74 64 3e 3c 2f 74 64 3e 0a 09 3c 74  td><td></td>..<t
1cc10 64 3e 5e 41 20 6b 65 79 77 6f 72 64 20 65 6e 63  d>^A keyword enc
1cc20 6c 6f 73 65 64 20 69 6e 20 73 71 75 61 72 65 20  losed in square 
1cc30 62 72 61 63 6b 65 74 73 20 69 73 20 0a 20 20 20  brackets is .   
1cc40 20 20 20 20 20 61 6e 20 69 64 65 6e 74 69 66 69       an identifi
1cc50 65 72 2e 20 20 54 68 69 73 20 69 73 20 6e 6f 74  er.  This is not
1cc60 20 73 74 61 6e 64 61 72 64 20 53 51 4c 2e 20 20   standard SQL.  
1cc70 54 68 69 73 20 71 75 6f 74 69 6e 67 20 6d 65 63  This quoting mec
1cc80 68 61 6e 69 73 6d 0a 20 20 20 20 20 20 20 20 69  hanism.        i
1cc90 73 20 75 73 65 64 20 62 79 20 4d 53 20 41 63 63  s used by MS Acc
1cca0 65 73 73 20 61 6e 64 20 53 51 4c 20 53 65 72 76  ess and SQL Serv
1ccb0 65 72 20 61 6e 64 20 69 73 20 69 6e 63 6c 75 64  er and is includ
1ccc0 65 64 20 69 6e 20 53 51 4c 69 74 65 20 66 6f 72  ed in SQLite for
1ccd0 0a 20 20 20 20 20 20 20 20 63 6f 6d 70 61 74 69  .        compati
1cce0 62 69 6c 69 74 79 2e 3c 2f 74 64 3e 3c 2f 74 72  bility.</td></tr
1ccf0 3e 0a 0a 3c 74 72 3e 09 3c 74 64 20 76 61 6c 69  >..<tr>.<td vali
1cd00 67 6e 3d 22 74 6f 70 22 3e 3c 62 3e 26 23 39 36  gn="top"><b>&#96
1cd10 3b 6b 65 79 77 6f 72 64 26 23 39 36 3b 3c 2f 62  ;keyword&#96;</b
1cd20 3e 3c 2f 74 64 3e 3c 74 64 3e 3c 2f 74 64 3e 0a  ></td><td></td>.
1cd30 09 3c 74 64 3e 5e 41 20 6b 65 79 77 6f 72 64 20  .<td>^A keyword 
1cd40 65 6e 63 6c 6f 73 65 64 20 69 6e 20 67 72 61 76  enclosed in grav
1cd50 65 20 61 63 63 65 6e 74 73 20 28 41 53 43 49 49  e accents (ASCII
1cd60 20 63 6f 64 65 20 39 36 29 20 69 73 20 0a 20 20   code 96) is .  
1cd70 20 20 20 20 20 20 61 6e 20 69 64 65 6e 74 69 66        an identif
1cd80 69 65 72 2e 20 20 54 68 69 73 20 69 73 20 6e 6f  ier.  This is no
1cd90 74 20 73 74 61 6e 64 61 72 64 20 53 51 4c 2e 20  t standard SQL. 
1cda0 20 54 68 69 73 20 71 75 6f 74 69 6e 67 20 6d 65   This quoting me
1cdb0 63 68 61 6e 69 73 6d 0a 20 20 20 20 20 20 20 20  chanism.        
1cdc0 69 73 20 75 73 65 64 20 62 79 20 4d 79 53 51 4c  is used by MySQL
1cdd0 20 61 6e 64 20 69 73 20 69 6e 63 6c 75 64 65 64   and is included
1cde0 20 69 6e 20 53 51 4c 69 74 65 20 66 6f 72 0a 20   in SQLite for. 
1cdf0 20 20 20 20 20 20 20 63 6f 6d 70 61 74 69 62 69         compatibi
1ce00 6c 69 74 79 2e 3c 2f 74 64 3e 3c 2f 74 72 3e 0a  lity.</td></tr>.
1ce10 3c 2f 74 61 62 6c 65 3e 0a 3c 2f 62 6c 6f 63 6b  </table>.</block
1ce20 71 75 6f 74 65 3e 0a 3c 2f 70 3e 0a 0a 3c 70 3e  quote>.</p>..<p>
1ce30 46 6f 72 20 72 65 73 69 6c 69 65 6e 63 65 20 77  For resilience w
1ce40 68 65 6e 20 63 6f 6e 66 72 6f 6e 74 65 64 20 77  hen confronted w
1ce50 69 74 68 20 68 69 73 74 6f 72 69 63 61 6c 20 53  ith historical S
1ce60 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 2c 20 53  QL statements, S
1ce70 51 4c 69 74 65 0a 77 69 6c 6c 20 73 6f 6d 65 74  QLite.will somet
1ce80 69 6d 65 73 20 62 65 6e 64 20 74 68 65 20 71 75  imes bend the qu
1ce90 6f 74 69 6e 67 20 72 75 6c 65 73 20 61 62 6f 76  oting rules abov
1cea0 65 3a 3c 2f 70 3e 0a 0a 3c 75 6c 3e 0a 3c 6c 69  e:</p>..<ul>.<li
1ceb0 3e 3c 70 3e 5e 49 66 20 61 20 6b 65 79 77 6f 72  ><p>^If a keywor
1cec0 64 20 69 6e 20 73 69 6e 67 6c 65 0a 71 75 6f 74  d in single.quot
1ced0 65 73 20 28 65 78 3a 20 3c 62 3e 27 6b 65 79 27  es (ex: <b>'key'
1cee0 3c 2f 62 3e 20 6f 72 20 3c 62 3e 27 67 6c 6f 62  </b> or <b>'glob
1cef0 27 3c 2f 62 3e 29 20 69 73 20 75 73 65 64 20 69  '</b>) is used i
1cf00 6e 20 61 20 63 6f 6e 74 65 78 74 20 77 68 65 72  n a context wher
1cf10 65 0a 61 6e 20 69 64 65 6e 74 69 66 69 65 72 20  e.an identifier 
1cf20 69 73 20 61 6c 6c 6f 77 65 64 20 62 75 74 20 77  is allowed but w
1cf30 68 65 72 65 20 61 20 73 74 72 69 6e 67 20 6c 69  here a string li
1cf40 74 65 72 61 6c 20 69 73 20 6e 6f 74 20 61 6c 6c  teral is not all
1cf50 6f 77 65 64 2c 20 74 68 65 6e 0a 74 68 65 20 74  owed, then.the t
1cf60 6f 6b 65 6e 20 69 73 20 75 6e 64 65 72 73 74 6f  oken is understo
1cf70 6f 64 20 74 6f 20 62 65 20 61 6e 20 69 64 65 6e  od to be an iden
1cf80 74 69 66 69 65 72 20 69 6e 73 74 65 61 64 20 6f  tifier instead o
1cf90 66 20 61 20 73 74 72 69 6e 67 20 6c 69 74 65 72  f a string liter
1cfa0 61 6c 2e 0a 3c 2f 70 3e 3c 2f 6c 69 3e 0a 0a 3c  al..</p></li>..<
1cfb0 6c 69 3e 3c 70 3e 5e 49 66 20 61 20 6b 65 79 77  li><p>^If a keyw
1cfc0 6f 72 64 20 69 6e 20 64 6f 75 62 6c 65 0a 71 75  ord in double.qu
1cfd0 6f 74 65 73 20 28 65 78 3a 20 3c 62 3e 22 6b 65  otes (ex: <b>"ke
1cfe0 79 22 3c 2f 62 3e 20 6f 72 20 3c 62 3e 22 67 6c  y"</b> or <b>"gl
1cff0 6f 62 22 3c 2f 62 3e 29 20 69 73 20 75 73 65 64  ob"</b>) is used
1d000 20 69 6e 20 61 20 63 6f 6e 74 65 78 74 20 77 68   in a context wh
1d010 65 72 65 0a 69 74 20 63 61 6e 6e 6f 74 20 62 65  ere.it cannot be
1d020 20 72 65 73 6f 6c 76 65 64 20 74 6f 20 61 6e 20   resolved to an 
1d030 69 64 65 6e 74 69 66 69 65 72 20 62 75 74 20 77  identifier but w
1d040 68 65 72 65 20 61 20 73 74 72 69 6e 67 20 6c 69  here a string li
1d050 74 65 72 61 6c 0a 69 73 20 61 6c 6c 6f 77 65 64  teral.is allowed
1d060 2c 20 74 68 65 6e 20 74 68 65 20 74 6f 6b 65 6e  , then the token
1d070 20 69 73 20 75 6e 64 65 72 73 74 6f 6f 64 20 74   is understood t
1d080 6f 20 62 65 20 61 20 73 74 72 69 6e 67 20 6c 69  o be a string li
1d090 74 65 72 61 6c 20 69 6e 73 74 65 61 64 0a 6f 66  teral instead.of
1d0a0 20 61 6e 20 69 64 65 6e 74 69 66 65 72 2e 3c 2f   an identifer.</
1d0b0 70 3e 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e 0a 0a 3c  p></li>.</ul>..<
1d0c0 70 3e 50 72 6f 67 72 61 6d 6d 65 72 73 20 61 72  p>Programmers ar
1d0d0 65 20 63 61 75 74 69 6f 6e 65 64 20 6e 6f 74 20  e cautioned not 
1d0e0 74 6f 20 75 73 65 20 74 68 65 20 74 77 6f 20 65  to use the two e
1d0f0 78 63 65 70 74 69 6f 6e 73 20 64 65 73 63 72 69  xceptions descri
1d100 62 65 64 20 69 6e 0a 74 68 65 20 70 72 65 76 69  bed in.the previ
1d110 6f 75 73 20 62 75 6c 6c 65 74 73 2e 20 20 57 65  ous bullets.  We
1d120 20 65 6d 70 68 61 73 69 7a 65 20 74 68 61 74 20   emphasize that 
1d130 74 68 65 79 20 65 78 69 73 74 20 6f 6e 6c 79 20  they exist only 
1d140 73 6f 20 74 68 61 74 20 6f 6c 64 0a 61 6e 64 20  so that old.and 
1d150 69 6c 6c 2d 66 6f 72 6d 65 64 20 53 51 4c 20 73  ill-formed SQL s
1d160 74 61 74 65 6d 65 6e 74 73 20 77 69 6c 6c 20 72  tatements will r
1d170 75 6e 20 63 6f 72 72 65 63 74 6c 79 2e 20 20 46  un correctly.  F
1d180 75 74 75 72 65 20 76 65 72 73 69 6f 6e 73 20 6f  uture versions o
1d190 66 0a 53 51 4c 69 74 65 20 6d 69 67 68 74 20 63  f.SQLite might c
1d1a0 68 61 6e 67 65 20 74 6f 20 72 61 69 73 65 20 65  hange to raise e
1d1b0 72 72 6f 72 73 20 69 6e 73 74 65 61 64 20 6f 66  rrors instead of
1d1c0 20 61 63 63 65 70 74 69 6e 67 20 74 68 65 20 6d   accepting the m
1d1d0 61 6c 66 6f 72 6d 65 64 0a 73 74 61 74 65 6d 65  alformed.stateme
1d1e0 6e 74 73 20 63 6f 76 65 72 65 64 20 62 79 20 74  nts covered by t
1d1f0 68 65 20 65 78 63 65 70 74 69 6f 6e 73 20 61 62  he exceptions ab
1d200 6f 76 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 0a 53 51  ove.</p>..<p>.SQ
1d210 4c 69 74 65 20 61 64 64 73 20 6e 65 77 20 6b 65  Lite adds new ke
1d220 79 77 6f 72 64 73 20 66 72 6f 6d 20 74 69 6d 65  ywords from time
1d230 20 74 6f 20 74 69 6d 65 20 77 68 65 6e 20 69 74   to time when it
1d240 20 74 61 6b 65 73 20 6f 6e 20 6e 65 77 20 66 65   takes on new fe
1d250 61 74 75 72 65 73 2e 0a 53 6f 20 74 6f 20 70 72  atures..So to pr
1d260 65 76 65 6e 74 20 79 6f 75 72 20 63 6f 64 65 20  event your code 
1d270 66 72 6f 6d 20 62 65 69 6e 67 20 62 72 6f 6b 65  from being broke
1d280 6e 20 62 79 20 66 75 74 75 72 65 20 65 6e 68 61  n by future enha
1d290 6e 63 65 6d 65 6e 74 73 2c 20 79 6f 75 20 73 68  ncements, you sh
1d2a0 6f 75 6c 64 0a 6e 6f 72 6d 61 6c 6c 79 20 71 75  ould.normally qu
1d2b0 6f 74 65 20 61 6e 79 20 69 64 65 6e 74 69 66 69  ote any identifi
1d2c0 65 72 20 74 68 61 74 20 69 73 20 61 6e 20 45 6e  er that is an En
1d2d0 67 6c 69 73 68 20 6c 61 6e 67 75 61 67 65 20 77  glish language w
1d2e0 6f 72 64 2c 20 65 76 65 6e 20 69 66 0a 79 6f 75  ord, even if.you
1d2f0 20 64 6f 20 6e 6f 74 20 68 61 76 65 20 74 6f 2e   do not have to.
1d300 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 54 68 65 20 6c  .</p>..<p>.The l
1d310 69 73 74 20 62 65 6c 6f 77 20 73 68 6f 77 73 20  ist below shows 
1d320 61 6c 6c 20 70 6f 73 73 69 62 6c 65 20 6b 65 79  all possible key
1d330 77 6f 72 64 73 20 75 73 65 64 20 62 79 20 61 6e  words used by an
1d340 79 20 62 75 69 6c 64 20 6f 66 0a 53 51 4c 69 74  y build of.SQLit
1d350 65 20 72 65 67 61 72 64 6c 65 73 73 20 6f 66 20  e regardless of 
1d360 5b 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70  [compile-time op
1d370 74 69 6f 6e 73 5d 2e 20 20 0a 4d 6f 73 74 20 72  tions].  .Most r
1d380 65 61 73 6f 6e 61 62 6c 65 20 63 6f 6e 66 69 67  easonable config
1d390 75 72 61 74 69 6f 6e 73 20 75 73 65 20 6d 6f 72  urations use mor
1d3a0 65 20 6f 72 20 61 6c 6c 20 6f 66 20 74 68 65 73  e or all of thes
1d3b0 65 20 6b 65 79 77 6f 72 64 73 2c 0a 62 75 74 20  e keywords,.but 
1d3c0 73 6f 6d 65 20 6b 65 79 77 6f 72 64 73 20 6d 61  some keywords ma
1d3d0 79 20 62 65 20 6f 6d 69 74 74 65 64 20 77 68 65  y be omitted whe
1d3e0 6e 20 53 51 4c 20 6c 61 6e 67 75 61 67 65 20 66  n SQL language f
1d3f0 65 61 74 75 72 65 73 20 61 72 65 0a 64 69 73 61  eatures are.disa
1d400 62 6c 65 64 2e 0a 5e 28 52 65 67 61 72 64 6c 65  bled..^(Regardle
1d410 73 73 20 6f 66 20 74 68 65 20 63 6f 6d 70 69 6c  ss of the compil
1d420 65 2d 74 69 6d 65 20 63 6f 6e 66 69 67 75 72 61  e-time configura
1d430 74 69 6f 6e 2c 20 61 6e 79 20 69 64 65 6e 74 69  tion, any identi
1d440 66 69 65 72 20 74 68 61 74 20 69 73 20 6e 6f 74  fier that is not
1d450 20 6f 6e 0a 74 68 65 20 66 6f 6c 6c 6f 77 69 6e   on.the followin
1d460 67 20 3c 74 63 6c 3e 68 64 5f 70 75 74 73 20 5b  g <tcl>hd_puts [
1d470 6c 6c 65 6e 67 74 68 20 24 6b 65 79 77 6f 72 64  llength $keyword
1d480 5f 6c 69 73 74 5d 3c 2f 74 63 6c 3e 20 65 6c 65  _list]</tcl> ele
1d490 6d 65 6e 74 0a 6c 69 73 74 20 69 73 20 6e 6f 74  ment.list is not
1d4a0 20 61 20 6b 65 79 77 6f 72 64 20 74 6f 20 74 68   a keyword to th
1d4b0 65 20 53 51 4c 20 70 61 72 73 65 72 20 69 6e 20  e SQL parser in 
1d4c0 53 51 4c 69 74 65 3a 0a 3c 2f 70 3e 0a 0a 3c 62  SQLite:.</p>..<b
1d4d0 6c 6f 63 6b 71 75 6f 74 65 3e 0a 3c 74 61 62 6c  lockquote>.<tabl
1d4e0 65 20 77 69 64 74 68 3d 22 31 30 30 25 22 3e 3c  e width="100%"><
1d4f0 74 72 3e 0a 3c 74 64 20 61 6c 69 67 6e 3d 22 6c  tr>.<td align="l
1d500 65 66 74 22 20 76 61 6c 69 67 6e 3d 22 74 6f 70  eft" valign="top
1d510 22 20 77 69 64 74 68 3d 22 32 30 25 22 3e 0a 3c  " width="20%">.<
1d520 74 63 6c 3e 0a 73 65 74 20 6e 20 5b 6c 6c 65 6e  tcl>.set n [llen
1d530 67 74 68 20 24 6b 65 79 77 6f 72 64 5f 6c 69 73  gth $keyword_lis
1d540 74 5d 0a 73 65 74 20 6e 43 6f 6c 20 35 0a 73 65  t].set nCol 5.se
1d550 74 20 6e 52 6f 77 20 5b 65 78 70 72 20 7b 28 24  t nRow [expr {($
1d560 6e 2b 24 6e 43 6f 6c 2d 31 29 2f 24 6e 43 6f 6c  n+$nCol-1)/$nCol
1d570 7d 5d 0a 73 65 74 20 69 20 30 0a 66 6f 72 65 61  }].set i 0.forea
1d580 63 68 20 77 6f 72 64 20 24 6b 65 79 77 6f 72 64  ch word $keyword
1d590 5f 6c 69 73 74 20 7b 0a 20 20 69 66 20 7b 24 69  _list {.  if {$i
1d5a0 3d 3d 24 6e 52 6f 77 7d 20 7b 0a 20 20 20 20 68  ==$nRow} {.    h
1d5b0 64 5f 70 75 74 73 20 22 3c 2f 74 64 3e 3c 74 64  d_puts "</td><td
1d5c0 20 76 61 6c 69 67 6e 3d 5c 22 74 6f 70 5c 22 20   valign=\"top\" 
1d5d0 61 6c 69 67 6e 3d 5c 22 6c 65 66 74 5c 22 20 77  align=\"left\" w
1d5e0 69 64 74 68 3d 5c 22 32 30 25 5c 22 3e 22 0a 20  idth=\"20%\">". 
1d5f0 20 20 20 73 65 74 20 69 20 31 0a 20 20 7d 20 65     set i 1.  } e
1d600 6c 73 65 20 7b 0a 20 20 20 20 69 6e 63 72 20 69  lse {.    incr i
1d610 0a 20 20 7d 0a 20 20 68 64 5f 70 75 74 73 20 22  .  }.  hd_puts "
1d620 24 77 6f 72 64 3c 62 72 3e 5c 6e 22 0a 7d 0a 3c  $word<br>\n".}.<
1d630 2f 74 63 6c 3e 0a 3c 2f 74 64 3e 3c 2f 74 72 3e  /tcl>.</td></tr>
1d640 3c 2f 74 61 62 6c 65 3e 3c 2f 62 6c 6f 63 6b 71  </table></blockq
1d650 75 6f 74 65 3e 29 5e 0a                          uote>)^.