Documentation Source Text

Hex Artifact Content
Login

Artifact 2a25b36de3f3edb60eb83998fde2a2c63b3b78b5:


0000: 3c 74 69 74 6c 65 3e 51 75 65 72 79 20 4c 61 6e  <title>Query Lan
0010: 67 75 61 67 65 20 55 6e 64 65 72 73 74 6f 6f 64  guage Understood
0020: 20 62 79 20 53 51 4c 69 74 65 3c 2f 74 69 74 6c   by SQLite</titl
0030: 65 3e 0a 0a 3c 68 31 20 61 6c 69 67 6e 3d 63 65  e>..<h1 align=ce
0040: 6e 74 65 72 3e 53 51 4c 20 41 73 20 55 6e 64 65  nter>SQL As Unde
0050: 72 73 74 6f 6f 64 20 42 79 20 53 51 4c 69 74 65  rstood By SQLite
0060: 3c 2f 68 31 3e 0a 0a 3c 70 3e 53 51 4c 69 74 65  </h1>..<p>SQLite
0070: 20 75 6e 64 65 72 73 74 61 6e 64 73 20 6d 6f 73   understands mos
0080: 74 20 6f 66 20 74 68 65 20 73 74 61 6e 64 61 72  t of the standar
0090: 64 20 53 51 4c 0a 6c 61 6e 67 75 61 67 65 2e 20  d SQL.language. 
00a0: 20 42 75 74 20 69 74 20 64 6f 65 73 20 3c 61 20   But it does <a 
00b0: 68 72 65 66 3d 22 6f 6d 69 74 74 65 64 2e 68 74  href="omitted.ht
00c0: 6d 6c 22 3e 6f 6d 69 74 20 73 6f 6d 65 20 66 65  ml">omit some fe
00d0: 61 74 75 72 65 73 3c 2f 61 3e 0a 77 68 69 6c 65  atures</a>.while
00e0: 20 61 74 20 74 68 65 20 73 61 6d 65 20 74 69 6d   at the same tim
00f0: 65 0a 61 64 64 69 6e 67 20 61 20 66 65 77 20 66  e.adding a few f
0100: 65 61 74 75 72 65 73 20 6f 66 20 69 74 73 20 6f  eatures of its o
0110: 77 6e 2e 20 20 54 68 69 73 20 64 6f 63 75 6d 65  wn.  This docume
0120: 6e 74 20 61 74 74 65 6d 70 74 73 20 74 6f 0a 64  nt attempts to.d
0130: 65 73 63 72 69 62 65 20 70 72 65 63 69 73 65 6c  escribe precisel
0140: 79 20 77 68 61 74 20 70 61 72 74 73 20 6f 66 20  y what parts of 
0150: 74 68 65 20 53 51 4c 20 6c 61 6e 67 75 61 67 65  the SQL language
0160: 20 53 51 4c 69 74 65 20 64 6f 65 73 0a 61 6e 64   SQLite does.and
0170: 20 64 6f 65 73 20 6e 6f 74 20 73 75 70 70 6f 72   does not suppor
0180: 74 2e 20 20 41 20 6c 69 73 74 20 6f 66 20 5b 53  t.  A list of [S
0190: 51 4c 20 6b 65 79 77 6f 72 64 73 5d 20 69 73 20  QL keywords] is 
01a0: 0a 61 6c 73 6f 20 70 72 6f 76 69 64 65 64 2e 20  .also provided. 
01b0: 20 54 68 65 20 53 51 4c 20 6c 61 6e 67 75 61 67   The SQL languag
01c0: 65 20 73 79 6e 74 61 78 20 69 73 20 64 65 73 63  e syntax is desc
01d0: 72 69 62 65 64 20 62 79 0a 5b 73 79 6e 74 61 78  ribed by.[syntax
01e0: 20 64 69 61 67 72 61 6d 73 5d 2e 0a 0a 3c 70 3e   diagrams]...<p>
01f0: 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 73 79  The following sy
0200: 6e 74 61 78 20 64 6f 63 75 6d 65 6e 74 61 74 69  ntax documentati
0210: 6f 6e 20 74 6f 70 69 63 73 20 61 72 65 20 61 76  on topics are av
0220: 61 69 6c 61 62 6c 65 3a 3c 2f 70 3e 0a 0a 3c 74  ailable:</p>..<t
0230: 61 62 6c 65 20 77 69 64 74 68 3d 22 31 30 30 25  able width="100%
0240: 22 20 63 65 6c 6c 70 61 64 64 69 6e 67 3d 22 35  " cellpadding="5
0250: 22 20 62 6f 72 64 65 72 3d 22 30 22 3e 0a 3c 74  " border="0">.<t
0260: 72 3e 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  r><td valign="to
0270: 70 22 3e 3c 75 6c 3e 0a 0a 3c 74 63 6c 3e 0a 20  p"><ul>..<tcl>. 
0280: 20 73 65 74 20 69 20 30 0a 20 20 73 65 74 20 6c   set i 0.  set l
0290: 61 6e 67 5f 73 65 63 74 69 6f 6e 5f 6c 69 73 74  ang_section_list
02a0: 20 7b 0a 20 20 20 20 7b 7b 43 52 45 41 54 45 20   {.    {{CREATE 
02b0: 54 41 42 4c 45 7d 20 63 72 65 61 74 65 74 61 62  TABLE} createtab
02c0: 6c 65 7d 0a 20 20 20 20 7b 7b 43 52 45 41 54 45  le}.    {{CREATE
02d0: 20 56 49 52 54 55 41 4c 20 54 41 42 4c 45 7d 20   VIRTUAL TABLE} 
02e0: 63 72 65 61 74 65 76 74 61 62 7d 0a 20 20 20 20  createvtab}.    
02f0: 7b 7b 43 52 45 41 54 45 20 49 4e 44 45 58 7d 20  {{CREATE INDEX} 
0300: 63 72 65 61 74 65 69 6e 64 65 78 7d 0a 20 20 20  createindex}.   
0310: 20 7b 56 41 43 55 55 4d 20 76 61 63 75 75 6d 7d   {VACUUM vacuum}
0320: 0a 20 20 20 20 7b 7b 44 52 4f 50 20 54 41 42 4c  .    {{DROP TABL
0330: 45 7d 20 64 72 6f 70 74 61 62 6c 65 7d 0a 20 20  E} droptable}.  
0340: 20 20 7b 7b 44 52 4f 50 20 49 4e 44 45 58 7d 20    {{DROP INDEX} 
0350: 64 72 6f 70 69 6e 64 65 78 7d 0a 20 20 20 20 7b  dropindex}.    {
0360: 49 4e 53 45 52 54 20 69 6e 73 65 72 74 7d 0a 20  INSERT insert}. 
0370: 20 20 20 7b 52 45 50 4c 41 43 45 20 72 65 70 6c     {REPLACE repl
0380: 61 63 65 7d 0a 20 20 20 20 7b 44 45 4c 45 54 45  ace}.    {DELETE
0390: 20 64 65 6c 65 74 65 7d 0a 20 20 20 20 7b 55 50   delete}.    {UP
03a0: 44 41 54 45 20 75 70 64 61 74 65 7d 0a 20 20 20  DATE update}.   
03b0: 20 7b 53 45 4c 45 43 54 20 73 65 6c 65 63 74 7d   {SELECT select}
03c0: 0a 20 20 20 20 7b 63 6f 6d 6d 65 6e 74 20 63 6f  .    {comment co
03d0: 6d 6d 65 6e 74 7d 0a 20 20 20 20 7b 45 58 50 4c  mment}.    {EXPL
03e0: 41 49 4e 20 65 78 70 6c 61 69 6e 7d 0a 20 20 20  AIN explain}.   
03f0: 20 7b 65 78 70 72 65 73 73 69 6f 6e 20 65 78 70   {expression exp
0400: 72 7d 0a 20 20 20 20 7b 7b 42 45 47 49 4e 20 54  r}.    {{BEGIN T
0410: 52 41 4e 53 41 43 54 49 4f 4e 7d 20 74 72 61 6e  RANSACTION} tran
0420: 73 61 63 74 69 6f 6e 7d 0a 20 20 20 20 7b 7b 43  saction}.    {{C
0430: 4f 4d 4d 49 54 20 54 52 41 4e 53 41 43 54 49 4f  OMMIT TRANSACTIO
0440: 4e 7d 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 43  N} transaction C
0450: 4f 4d 4d 49 54 7d 0a 20 20 20 20 7b 7b 45 4e 44  OMMIT}.    {{END
0460: 20 54 52 41 4e 53 41 43 54 49 4f 4e 7d 20 74 72   TRANSACTION} tr
0470: 61 6e 73 61 63 74 69 6f 6e 20 43 4f 4d 4d 49 54  ansaction COMMIT
0480: 7d 0a 20 20 20 20 7b 7b 52 4f 4c 4c 42 41 43 4b  }.    {{ROLLBACK
0490: 20 54 52 41 4e 53 41 43 54 49 4f 4e 7d 20 74 72   TRANSACTION} tr
04a0: 61 6e 73 61 63 74 69 6f 6e 20 52 4f 4c 4c 42 41  ansaction ROLLBA
04b0: 43 4b 7d 0a 20 20 20 20 7b 53 41 56 45 50 4f 49  CK}.    {SAVEPOI
04c0: 4e 54 20 73 61 76 65 70 6f 69 6e 74 7d 0a 20 20  NT savepoint}.  
04d0: 20 20 7b 7b 52 45 4c 45 41 53 45 20 53 41 56 45    {{RELEASE SAVE
04e0: 50 4f 49 4e 54 7d 20 73 61 76 65 70 6f 69 6e 74  POINT} savepoint
04f0: 20 53 41 56 45 50 4f 49 4e 54 7d 0a 20 20 20 20   SAVEPOINT}.    
0500: 7b 50 52 41 47 4d 41 20 70 72 61 67 6d 61 2e 68  {PRAGMA pragma.h
0510: 74 6d 6c 7d 0a 20 20 20 20 7b 7b 4f 4e 20 43 4f  tml}.    {{ON CO
0520: 4e 46 4c 49 43 54 20 63 6c 61 75 73 65 7d 20 63  NFLICT clause} c
0530: 6f 6e 66 6c 69 63 74 7d 0a 20 20 20 20 7b 7b 43  onflict}.    {{C
0540: 52 45 41 54 45 20 56 49 45 57 7d 20 63 72 65 61  REATE VIEW} crea
0550: 74 65 76 69 65 77 7d 0a 20 20 20 20 7b 7b 44 52  teview}.    {{DR
0560: 4f 50 20 56 49 45 57 7d 20 64 72 6f 70 76 69 65  OP VIEW} dropvie
0570: 77 7d 0a 20 20 20 20 7b 7b 43 52 45 41 54 45 20  w}.    {{CREATE 
0580: 54 52 49 47 47 45 52 7d 20 63 72 65 61 74 65 74  TRIGGER} createt
0590: 72 69 67 67 65 72 7d 0a 20 20 20 20 7b 7b 44 52  rigger}.    {{DR
05a0: 4f 50 20 54 52 49 47 47 45 52 7d 20 64 72 6f 70  OP TRIGGER} drop
05b0: 74 72 69 67 67 65 72 7d 0a 20 20 20 20 7b 7b 41  trigger}.    {{A
05c0: 54 54 41 43 48 20 44 41 54 41 42 41 53 45 7d 20  TTACH DATABASE} 
05d0: 61 74 74 61 63 68 7d 0a 20 20 20 20 7b 7b 44 45  attach}.    {{DE
05e0: 54 41 43 48 20 44 41 54 41 42 41 53 45 7d 20 64  TACH DATABASE} d
05f0: 65 74 61 63 68 7d 0a 20 20 20 20 7b 52 45 49 4e  etach}.    {REIN
0600: 44 45 58 20 72 65 69 6e 64 65 78 7d 0a 20 20 20  DEX reindex}.   
0610: 20 7b 7b 41 4c 54 45 52 20 54 41 42 4c 45 7d 20   {{ALTER TABLE} 
0620: 61 6c 74 65 72 74 61 62 6c 65 7d 0a 20 20 20 20  altertable}.    
0630: 7b 7b 41 4e 41 4c 59 5a 45 7d 20 61 6e 61 6c 79  {{ANALYZE} analy
0640: 7a 65 7d 0a 20 20 20 20 7b 7b 49 4e 44 45 58 45  ze}.    {{INDEXE
0650: 44 20 42 59 7d 20 69 6e 64 65 78 65 64 62 79 7d  D BY} indexedby}
0660: 0a 20 20 20 20 7b 7b 61 67 67 72 65 67 61 74 65  .    {{aggregate
0670: 20 66 75 6e 63 74 69 6f 6e 73 7d 20 61 67 67 66   functions} aggf
0680: 75 6e 63 20 61 67 67 66 75 6e 63 7d 0a 20 20 20  unc aggfunc}.   
0690: 20 7b 7b 63 6f 72 65 20 66 75 6e 63 74 69 6f 6e   {{core function
06a0: 73 7d 20 63 6f 72 65 66 75 6e 63 20 63 6f 72 65  s} corefunc core
06b0: 66 75 6e 63 7d 0a 20 20 20 20 7b 7b 64 61 74 65  func}.    {{date
06c0: 20 61 6e 64 20 74 69 6d 65 20 66 75 6e 63 74 69   and time functi
06d0: 6f 6e 73 7d 20 64 61 74 65 66 75 6e 63 20 64 61  ons} datefunc da
06e0: 74 65 66 75 6e 63 7d 0a 20 20 20 20 7b 6b 65 79  tefunc}.    {key
06f0: 77 6f 72 64 73 20 6b 65 79 77 6f 72 64 73 20 7b  words keywords {
0700: 53 51 4c 20 6b 65 79 77 6f 72 64 73 7d 7d 0a 20  SQL keywords}}. 
0710: 20 7d 0a 20 20 73 65 74 20 6c 61 6e 67 5f 73 65   }.  set lang_se
0720: 63 74 69 6f 6e 5f 62 72 65 61 6b 20 5b 65 78 70  ction_break [exp
0730: 72 20 7b 28 5b 6c 6c 65 6e 67 74 68 20 24 6c 61  r {([llength $la
0740: 6e 67 5f 73 65 63 74 69 6f 6e 5f 6c 69 73 74 5d  ng_section_list]
0750: 2b 32 29 2f 33 7d 5d 0a 20 20 66 6f 72 65 61 63  +2)/3}].  foreac
0760: 68 20 7b 73 65 63 74 69 6f 6e 7d 20 5b 6c 73 6f  h {section} [lso
0770: 72 74 20 2d 69 6e 64 65 78 20 30 20 2d 64 69 63  rt -index 0 -dic
0780: 74 69 6f 6e 61 72 79 20 24 6c 61 6e 67 5f 73 65  tionary $lang_se
0790: 63 74 69 6f 6e 5f 6c 69 73 74 5d 20 7b 0a 20 20  ction_list] {.  
07a0: 66 6f 72 65 61 63 68 20 7b 73 5f 74 69 74 6c 65  foreach {s_title
07b0: 20 73 5f 74 61 67 20 73 5f 6b 77 7d 20 24 73 65   s_tag s_kw} $se
07c0: 63 74 69 6f 6e 20 7b 7d 0a 20 20 69 66 20 7b 24  ction {}.  if {$
07d0: 73 5f 6b 77 20 3d 3d 20 22 22 7d 20 7b 0a 20 20  s_kw == ""} {.  
07e0: 20 20 73 65 74 20 73 5f 6b 77 20 24 73 5f 74 69    set s_kw $s_ti
07f0: 74 6c 65 0a 20 20 7d 0a 20 20 69 66 20 7b 24 73  tle.  }.  if {$s
0800: 5f 74 61 67 3d 3d 22 70 72 61 67 6d 61 2e 68 74  _tag=="pragma.ht
0810: 6d 6c 22 7d 20 7b 0a 20 20 20 20 73 65 74 20 75  ml"} {.    set u
0820: 72 6c 20 24 73 5f 74 61 67 0a 20 20 7d 20 65 6c  rl $s_tag.  } el
0830: 73 65 20 7b 0a 20 20 20 20 73 65 74 20 75 72 6c  se {.    set url
0840: 20 6c 61 6e 67 5f 24 73 5f 74 61 67 2e 68 74 6d   lang_$s_tag.htm
0850: 6c 0a 20 20 7d 0a 20 20 68 64 5f 72 65 73 6f 6c  l.  }.  hd_resol
0860: 76 65 20 22 3c 6c 69 3e 5c 5b 24 73 5f 6b 77 7c  ve "<li>\[$s_kw|
0870: 24 73 5f 74 69 74 6c 65 5c 5d 3c 2f 6c 69 3e 22  $s_title\]</li>"
0880: 0a 20 20 69 6e 63 72 20 69 0a 20 20 69 66 20 7b  .  incr i.  if {
0890: 24 69 3d 3d 24 6c 61 6e 67 5f 73 65 63 74 69 6f  $i==$lang_sectio
08a0: 6e 5f 62 72 65 61 6b 20 7c 7c 20 24 69 3d 3d 32  n_break || $i==2
08b0: 2a 24 6c 61 6e 67 5f 73 65 63 74 69 6f 6e 5f 62  *$lang_section_b
08c0: 72 65 61 6b 7d 20 7b 0a 20 20 20 20 68 64 5f 70  reak} {.    hd_p
08d0: 75 74 73 20 22 3c 2f 75 6c 3e 3c 2f 74 64 3e 3c  uts "</ul></td><
08e0: 74 64 20 76 61 6c 69 67 6e 3d 5c 22 74 6f 70 5c  td valign=\"top\
08f0: 22 3e 3c 75 6c 3e 22 0a 20 20 7d 0a 7d 0a 3c 2f  "><ul>".  }.}.</
0900: 74 63 6c 3e 0a 3c 2f 75 6c 3e 3c 2f 74 64 3e 3c  tcl>.</ul></td><
0910: 2f 74 72 3e 3c 2f 74 61 62 6c 65 3e 0a 0a 3c 70  /tr></table>..<p
0920: 3e 5e 54 68 65 20 72 6f 75 74 69 6e 65 73 20 5b  >^The routines [
0930: 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f  sqlite3_prepare_
0940: 76 32 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f  v2()], [sqlite3_
0950: 70 72 65 70 61 72 65 28 29 5d 2c 0a 5b 73 71 6c  prepare()],.[sql
0960: 69 74 65 33 5f 70 72 65 70 61 72 65 31 36 28 29  ite3_prepare16()
0970: 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 65 78 65 63  ], [sqlite3_exec
0980: 28 29 5d 2c 20 61 6e 64 20 5b 73 71 6c 69 74 65  ()], and [sqlite
0990: 33 5f 67 65 74 5f 74 61 62 6c 65 28 29 5d 20 61  3_get_table()] a
09a0: 63 63 65 70 74 0a 61 6e 20 53 51 4c 20 73 74 61  ccept.an SQL sta
09b0: 74 65 6d 65 6e 74 20 6c 69 73 74 20 28 73 71 6c  tement list (sql
09c0: 2d 73 74 6d 74 2d 6c 69 73 74 29 20 77 68 69 63  -stmt-list) whic
09d0: 68 20 69 73 20 61 20 73 65 6d 69 63 6f 6c 6f 6e  h is a semicolon
09e0: 2d 73 65 70 61 72 61 74 65 64 0a 6c 69 73 74 20  -separated.list 
09f0: 6f 66 20 73 74 61 74 65 6d 65 6e 74 73 2e 3c 2f  of statements.</
0a00: 70 3e 0a 0a 3c 74 63 6c 3e 42 75 62 62 6c 65 44  p>..<tcl>BubbleD
0a10: 69 61 67 72 61 6d 20 73 71 6c 2d 73 74 6d 74 2d  iagram sql-stmt-
0a20: 6c 69 73 74 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 45  list</tcl>..<p>E
0a30: 61 63 68 20 53 51 4c 20 73 74 61 74 65 6d 65 6e  ach SQL statemen
0a40: 74 20 69 6e 20 74 68 65 20 73 74 61 74 65 6d 65  t in the stateme
0a50: 6e 74 20 6c 69 73 74 20 69 73 20 61 6e 20 69 6e  nt list is an in
0a60: 73 74 61 6e 63 65 20 6f 66 20 74 68 65 0a 66 6f  stance of the.fo
0a70: 6c 6c 6f 77 69 6e 67 3a 3c 2f 70 3e 0a 0a 3c 74  llowing:</p>..<t
0a80: 63 6c 3e 42 75 62 62 6c 65 44 69 61 67 72 61 6d  cl>BubbleDiagram
0a90: 20 73 71 6c 2d 73 74 6d 74 3c 2f 74 63 6c 3e 0a   sql-stmt</tcl>.
0aa0: 0a 3c 74 63 6c 3e 0a 70 72 6f 63 20 4f 70 65 72  .<tcl>.proc Oper
0ab0: 61 74 6f 72 20 7b 6e 61 6d 65 7d 20 7b 0a 20 20  ator {name} {.  
0ac0: 72 65 74 75 72 6e 20 22 3c 66 6f 6e 74 20 63 6f  return "<font co
0ad0: 6c 6f 72 3d 5c 22 23 32 63 32 63 66 30 5c 22 3e  lor=\"#2c2cf0\">
0ae0: 3c 62 69 67 3e 24 6e 61 6d 65 3c 2f 62 69 67 3e  <big>$name</big>
0af0: 3c 2f 66 6f 6e 74 3e 22 0a 7d 0a 70 72 6f 63 20  </font>".}.proc 
0b00: 4e 6f 6e 74 65 72 6d 69 6e 61 6c 20 7b 6e 61 6d  Nonterminal {nam
0b10: 65 7d 20 7b 0a 20 20 72 65 74 75 72 6e 20 22 3c  e} {.  return "<
0b20: 69 3e 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 5c 22  i><font color=\"
0b30: 23 66 66 33 34 33 34 5c 22 3e 24 6e 61 6d 65 3c  #ff3434\">$name<
0b40: 2f 66 6f 6e 74 3e 3c 2f 69 3e 22 0a 7d 0a 70 72  /font></i>".}.pr
0b50: 6f 63 20 4b 65 79 77 6f 72 64 20 7b 6e 61 6d 65  oc Keyword {name
0b60: 7d 20 7b 0a 20 20 72 65 74 75 72 6e 20 22 3c 66  } {.  return "<f
0b70: 6f 6e 74 20 63 6f 6c 6f 72 3d 5c 22 23 32 63 32  ont color=\"#2c2
0b80: 63 66 30 5c 22 3e 24 6e 61 6d 65 3c 2f 66 6f 6e  cf0\">$name</fon
0b90: 74 3e 22 0a 7d 0a 70 72 6f 63 20 45 78 61 6d 70  t>".}.proc Examp
0ba0: 6c 65 20 7b 74 65 78 74 7d 20 7b 0a 20 20 68 64  le {text} {.  hd
0bb0: 5f 70 75 74 73 20 22 3c 62 6c 6f 63 6b 71 75 6f  _puts "<blockquo
0bc0: 74 65 3e 3c 70 72 65 3e 24 74 65 78 74 3c 2f 70  te><pre>$text</p
0bd0: 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e  re></blockquote>
0be0: 22 0a 7d 0a 0a 70 72 6f 63 20 53 65 63 74 69 6f  ".}..proc Sectio
0bf0: 6e 20 7b 6e 61 6d 65 20 6c 61 62 65 6c 20 6b 65  n {name label ke
0c00: 79 77 6f 72 64 73 7d 20 7b 0a 20 20 67 6c 6f 62  ywords} {.  glob
0c10: 61 6c 20 44 4f 43 0a 20 20 68 64 5f 63 6c 6f 73  al DOC.  hd_clos
0c20: 65 5f 6d 61 69 6e 0a 20 20 68 64 5f 6f 70 65 6e  e_main.  hd_open
0c30: 5f 6d 61 69 6e 20 6c 61 6e 67 5f 24 6c 61 62 65  _main lang_$labe
0c40: 6c 2e 68 74 6d 6c 0a 20 20 68 64 5f 68 65 61 64  l.html.  hd_head
0c50: 65 72 20 22 53 51 4c 69 74 65 20 51 75 65 72 79  er "SQLite Query
0c60: 20 4c 61 6e 67 75 61 67 65 3a 20 24 6e 61 6d 65   Language: $name
0c70: 22 20 24 44 4f 43 2f 70 61 67 65 73 2f 6c 61 6e  " $DOC/pages/lan
0c80: 67 2e 69 6e 0a 20 20 65 76 61 6c 20 68 64 5f 6b  g.in.  eval hd_k
0c90: 65 79 77 6f 72 64 73 20 24 6b 65 79 77 6f 72 64  eywords $keyword
0ca0: 73 0a 20 20 69 66 20 7b 5b 6c 73 65 61 72 63 68  s.  if {[lsearch
0cb0: 20 24 6b 65 79 77 6f 72 64 73 20 24 6e 61 6d 65   $keywords $name
0cc0: 5d 20 3d 3d 20 2d 31 20 26 26 20 5b 6c 73 65 61  ] == -1 && [lsea
0cd0: 72 63 68 20 24 6b 65 79 77 6f 72 64 73 20 2a 24  rch $keywords *$
0ce0: 6e 61 6d 65 5d 20 3d 3d 20 2d 31 7d 20 7b 0a 20  name] == -1} {. 
0cf0: 20 20 20 65 76 61 6c 20 68 64 5f 6b 65 79 77 6f     eval hd_keywo
0d00: 72 64 73 20 7b 20 24 6e 61 6d 65 20 7d 0a 20 20  rds { $name }.  
0d10: 7d 0a 20 20 68 64 5f 70 75 74 73 20 7b 3c 68 31  }.  hd_puts {<h1
0d20: 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e   align="center">
0d30: 53 51 4c 20 41 73 20 55 6e 64 65 72 73 74 6f 6f  SQL As Understoo
0d40: 64 20 42 79 20 53 51 4c 69 74 65 3c 2f 68 31 3e  d By SQLite</h1>
0d50: 7d 0a 20 20 68 64 5f 70 75 74 73 20 7b 3c 70 3e  }.  hd_puts {<p>
0d60: 3c 61 20 68 72 65 66 3d 22 6c 61 6e 67 2e 68 74  <a href="lang.ht
0d70: 6d 6c 22 3e 5b 54 6f 70 5d 3c 2f 61 3e 3c 2f 70  ml">[Top]</a></p
0d80: 3e 7d 0a 20 20 68 64 5f 70 75 74 73 20 22 3c 68  >}.  hd_puts "<h
0d90: 32 3e 24 6e 61 6d 65 3c 2f 68 32 3e 22 0a 7d 0a  2>$name</h2>".}.
0da0: 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  .###############
0db0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0dc0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0dd0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0de0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0df0: 0a 53 65 63 74 69 6f 6e 20 7b 41 4c 54 45 52 20  .Section {ALTER 
0e00: 54 41 42 4c 45 7d 20 61 6c 74 65 72 74 61 62 6c  TABLE} altertabl
0e10: 65 20 7b 7b 41 4c 54 45 52 20 54 41 42 4c 45 7d  e {{ALTER TABLE}
0e20: 20 7b 2a 41 4c 54 45 52 7d 7d 0a 0a 42 75 62 62   {*ALTER}}..Bubb
0e30: 6c 65 44 69 61 67 72 61 6d 20 61 6c 74 65 72 2d  leDiagram alter-
0e40: 74 61 62 6c 65 2d 73 74 6d 74 20 31 0a 3c 2f 74  table-stmt 1.</t
0e50: 63 6c 3e 0a 0a 3c 70 3e 53 51 4c 69 74 65 20 73  cl>..<p>SQLite s
0e60: 75 70 70 6f 72 74 73 20 61 20 6c 69 6d 69 74 65  upports a limite
0e70: 64 20 73 75 62 73 65 74 20 6f 66 20 41 4c 54 45  d subset of ALTE
0e80: 52 20 54 41 42 4c 45 2e 0a 54 68 65 20 41 4c 54  R TABLE..The ALT
0e90: 45 52 20 54 41 42 4c 45 20 63 6f 6d 6d 61 6e 64  ER TABLE command
0ea0: 20 69 6e 20 53 51 4c 69 74 65 20 61 6c 6c 6f 77   in SQLite allow
0eb0: 73 20 74 68 65 20 75 73 65 72 20 74 6f 20 72 65  s the user to re
0ec0: 6e 61 6d 65 20 61 20 74 61 62 6c 65 0a 6f 72 20  name a table.or 
0ed0: 74 6f 20 61 64 64 20 61 20 6e 65 77 20 63 6f 6c  to add a new col
0ee0: 75 6d 6e 20 74 6f 20 61 6e 20 65 78 69 73 74 69  umn to an existi
0ef0: 6e 67 20 74 61 62 6c 65 2e 20 49 74 20 69 73 20  ng table. It is 
0f00: 6e 6f 74 20 70 6f 73 73 69 62 6c 65 0a 74 6f 20  not possible.to 
0f10: 72 65 6e 61 6d 65 20 61 20 63 6f 6c 75 6d 6e 2c  rename a column,
0f20: 20 72 65 6d 6f 76 65 20 61 20 63 6f 6c 75 6d 6e   remove a column
0f30: 2c 20 6f 72 20 61 64 64 20 6f 72 20 72 65 6d 6f  , or add or remo
0f40: 76 65 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 66  ve constraints f
0f50: 72 6f 6d 20 61 20 74 61 62 6c 65 2e 0a 3c 2f 70  rom a table..</p
0f60: 3e 0a 0a 3c 70 3e 20 5e 28 54 68 65 20 52 45 4e  >..<p> ^(The REN
0f70: 41 4d 45 20 54 4f 20 73 79 6e 74 61 78 20 69 73  AME TO syntax is
0f80: 20 75 73 65 64 20 74 6f 20 72 65 6e 61 6d 65 20   used to rename 
0f90: 74 68 65 20 74 61 62 6c 65 20 69 64 65 6e 74 69  the table identi
0fa0: 66 69 65 64 20 62 79 20 0a 3c 69 3e 26 23 39 31  fied by .<i>&#91
0fb0: 3b 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 2e 26  ;database-name.&
0fc0: 23 39 33 3b 74 61 62 6c 65 2d 6e 61 6d 65 3c 2f  #93;table-name</
0fd0: 69 3e 20 74 6f 20 3c 69 3e 6e 65 77 2d 74 61 62  i> to <i>new-tab
0fe0: 6c 65 2d 6e 61 6d 65 3c 2f 69 3e 2e 29 5e 0a 54  le-name</i>.)^.T
0ff0: 68 69 73 20 63 6f 6d 6d 61 6e 64 20 0a 63 61 6e  his command .can
1000: 6e 6f 74 20 62 65 20 75 73 65 64 20 74 6f 20 6d  not be used to m
1010: 6f 76 65 20 61 20 74 61 62 6c 65 20 62 65 74 77  ove a table betw
1020: 65 65 6e 20 61 74 74 61 63 68 65 64 20 64 61 74  een attached dat
1030: 61 62 61 73 65 73 2c 20 6f 6e 6c 79 20 74 6f 20  abases, only to 
1040: 72 65 6e 61 6d 65 20 0a 61 20 74 61 62 6c 65 20  rename .a table 
1050: 77 69 74 68 69 6e 20 74 68 65 20 73 61 6d 65 20  within the same 
1060: 64 61 74 61 62 61 73 65 2e 3c 2f 70 3e 0a 0a 3c  database.</p>..<
1070: 70 3e 20 5e 49 66 20 74 68 65 20 74 61 62 6c 65  p> ^If the table
1080: 20 62 65 69 6e 67 20 72 65 6e 61 6d 65 64 20 68   being renamed h
1090: 61 73 20 74 72 69 67 67 65 72 73 20 6f 72 20 69  as triggers or i
10a0: 6e 64 69 63 65 73 2c 20 74 68 65 6e 20 74 68 65  ndices, then the
10b0: 73 65 20 72 65 6d 61 69 6e 0a 61 74 74 61 63 68  se remain.attach
10c0: 65 64 20 74 6f 20 74 68 65 20 74 61 62 6c 65 20  ed to the table 
10d0: 61 66 74 65 72 20 69 74 20 68 61 73 20 62 65 65  after it has bee
10e0: 6e 20 72 65 6e 61 6d 65 64 2e 20 20 5e 48 6f 77  n renamed.  ^How
10f0: 65 76 65 72 2c 20 69 66 20 74 68 65 72 65 20 61  ever, if there a
1100: 72 65 0a 61 6e 79 20 76 69 65 77 20 64 65 66 69  re.any view defi
1110: 6e 69 74 69 6f 6e 73 2c 20 6f 72 20 73 74 61 74  nitions, or stat
1120: 65 6d 65 6e 74 73 20 65 78 65 63 75 74 65 64 20  ements executed 
1130: 62 79 20 74 72 69 67 67 65 72 73 20 74 68 61 74  by triggers that
1140: 20 72 65 66 65 72 20 74 6f 0a 74 68 65 20 74 61   refer to.the ta
1150: 62 6c 65 20 62 65 69 6e 67 20 72 65 6e 61 6d 65  ble being rename
1160: 64 2c 20 74 68 65 73 65 20 61 72 65 20 6e 6f 74  d, these are not
1170: 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 6d   automatically m
1180: 6f 64 69 66 69 65 64 20 74 6f 20 75 73 65 20 74  odified to use t
1190: 68 65 20 6e 65 77 0a 74 61 62 6c 65 20 6e 61 6d  he new.table nam
11a0: 65 2e 20 49 66 20 74 68 69 73 20 69 73 20 72 65  e. If this is re
11b0: 71 75 69 72 65 64 2c 20 74 68 65 20 74 72 69 67  quired, the trig
11c0: 67 65 72 73 20 6f 72 20 76 69 65 77 20 64 65 66  gers or view def
11d0: 69 6e 69 74 69 6f 6e 73 20 6d 75 73 74 20 62 65  initions must be
11e0: 0a 64 72 6f 70 70 65 64 20 61 6e 64 20 72 65 63  .dropped and rec
11f0: 72 65 61 74 65 64 20 74 6f 20 75 73 65 20 74 68  reated to use th
1200: 65 20 6e 65 77 20 74 61 62 6c 65 20 6e 61 6d 65  e new table name
1210: 20 62 79 20 68 61 6e 64 2e 0a 3c 2f 70 3e 0a 0a   by hand..</p>..
1220: 3c 70 3e 5e 49 66 20 5b 66 6f 72 65 69 67 6e 20  <p>^If [foreign 
1230: 6b 65 79 20 63 6f 6e 73 74 72 61 69 6e 74 73 5d  key constraints]
1240: 20 61 72 65 20 0a 5b 66 6f 72 65 69 67 6e 5f 6b   are .[foreign_k
1250: 65 79 73 20 70 72 61 67 6d 61 20 7c 20 65 6e 61  eys pragma | ena
1260: 62 6c 65 64 5d 20 77 68 65 6e 20 61 20 74 61 62  bled] when a tab
1270: 6c 65 20 69 73 20 72 65 6e 61 6d 65 64 2c 20 74  le is renamed, t
1280: 68 65 6e 20 61 6e 79 0a 5b 66 6f 72 65 69 67 6e  hen any.[foreign
1290: 2d 6b 65 79 2d 63 6c 61 75 73 65 20 7c 20 52 45  -key-clause | RE
12a0: 46 45 52 45 4e 43 45 53 20 63 6c 61 75 73 65 73  FERENCES clauses
12b0: 5d 20 69 6e 20 61 6e 79 20 74 61 62 6c 65 20 28  ] in any table (
12c0: 65 69 74 68 65 72 20 74 68 65 0a 74 61 62 6c 65  either the.table
12d0: 20 62 65 69 6e 67 20 72 65 6e 61 6d 65 64 20 6f   being renamed o
12e0: 72 20 73 6f 6d 65 20 6f 74 68 65 72 20 74 61 62  r some other tab
12f0: 6c 65 29 0a 74 68 61 74 20 72 65 66 65 72 20 74  le).that refer t
1300: 6f 20 74 68 65 20 74 61 62 6c 65 20 62 65 69 6e  o the table bein
1310: 67 20 72 65 6e 61 6d 65 64 20 61 72 65 20 6d 6f  g renamed are mo
1320: 64 69 66 69 65 64 20 74 6f 20 72 65 66 65 72 20  dified to refer 
1330: 0a 74 6f 20 74 68 65 20 72 65 6e 61 6d 65 64 20  .to the renamed 
1340: 74 61 62 6c 65 20 62 79 20 69 74 73 20 6e 65 77  table by its new
1350: 20 6e 61 6d 65 2e 0a 0a 3c 70 3e 20 5e 54 68 65   name...<p> ^The
1360: 20 41 44 44 20 43 4f 4c 55 4d 4e 20 73 79 6e 74   ADD COLUMN synt
1370: 61 78 0a 69 73 20 75 73 65 64 20 74 6f 20 61 64  ax.is used to ad
1380: 64 20 61 20 6e 65 77 20 63 6f 6c 75 6d 6e 20 74  d a new column t
1390: 6f 20 61 6e 20 65 78 69 73 74 69 6e 67 20 74 61  o an existing ta
13a0: 62 6c 65 2e 0a 5e 54 68 65 20 6e 65 77 20 63 6f  ble..^The new co
13b0: 6c 75 6d 6e 20 69 73 20 61 6c 77 61 79 73 20 61  lumn is always a
13c0: 70 70 65 6e 64 65 64 20 74 6f 20 74 68 65 20 65  ppended to the e
13d0: 6e 64 20 6f 66 20 74 68 65 20 6c 69 73 74 20 6f  nd of the list o
13e0: 66 20 65 78 69 73 74 69 6e 67 20 63 6f 6c 75 6d  f existing colum
13f0: 6e 73 2e 0a 54 68 65 20 5b 63 6f 6c 75 6d 6e 2d  ns..The [column-
1400: 64 65 66 5d 20 72 75 6c 65 20 64 65 66 69 6e 65  def] rule define
1410: 73 20 74 68 65 20 63 68 61 72 61 63 74 65 72 69  s the characteri
1420: 73 74 69 63 73 20 6f 66 20 74 68 65 20 6e 65 77  stics of the new
1430: 20 63 6f 6c 75 6d 6e 2e 0a 5e 28 54 68 65 20 6e   column..^(The n
1440: 65 77 20 63 6f 6c 75 6d 6e 20 6d 61 79 20 74 61  ew column may ta
1450: 6b 65 20 61 6e 79 20 6f 66 20 74 68 65 20 66 6f  ke any of the fo
1460: 72 6d 73 20 70 65 72 6d 69 73 73 61 62 6c 65 20  rms permissable 
1470: 69 6e 20 61 20 5b 43 52 45 41 54 45 20 54 41 42  in a [CREATE TAB
1480: 4c 45 5d 0a 73 74 61 74 65 6d 65 6e 74 2c 20 77  LE].statement, w
1490: 69 74 68 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e  ith the followin
14a0: 67 20 72 65 73 74 72 69 63 74 69 6f 6e 73 3a 29  g restrictions:)
14b0: 5e 0a 3c 75 6c 3e 0a 3c 6c 69 3e 5e 54 68 65 20  ^.<ul>.<li>^The 
14c0: 63 6f 6c 75 6d 6e 20 6d 61 79 20 6e 6f 74 20 68  column may not h
14d0: 61 76 65 20 61 20 50 52 49 4d 41 52 59 20 4b 45  ave a PRIMARY KE
14e0: 59 20 6f 72 20 55 4e 49 51 55 45 20 63 6f 6e 73  Y or UNIQUE cons
14f0: 74 72 61 69 6e 74 2e 3c 2f 6c 69 3e 0a 3c 6c 69  traint.</li>.<li
1500: 3e 5e 54 68 65 20 63 6f 6c 75 6d 6e 20 6d 61 79  >^The column may
1510: 20 6e 6f 74 20 68 61 76 65 20 61 20 64 65 66 61   not have a defa
1520: 75 6c 74 20 76 61 6c 75 65 20 6f 66 20 43 55 52  ult value of CUR
1530: 52 45 4e 54 5f 54 49 4d 45 2c 20 43 55 52 52 45  RENT_TIME, CURRE
1540: 4e 54 5f 44 41 54 45 20 0a 20 20 20 20 6f 72 20  NT_DATE .    or 
1550: 43 55 52 52 45 4e 54 5f 54 49 4d 45 53 54 41 4d  CURRENT_TIMESTAM
1560: 50 2e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 5e 49 66 20  P.</li>.<li>^If 
1570: 61 20 4e 4f 54 20 4e 55 4c 4c 20 63 6f 6e 73 74  a NOT NULL const
1580: 72 61 69 6e 74 20 69 73 20 73 70 65 63 69 66 69  raint is specifi
1590: 65 64 2c 20 74 68 65 6e 20 74 68 65 20 63 6f 6c  ed, then the col
15a0: 75 6d 6e 20 6d 75 73 74 20 68 61 76 65 20 61 0a  umn must have a.
15b0: 20 20 20 20 64 65 66 61 75 6c 74 20 76 61 6c 75      default valu
15c0: 65 20 6f 74 68 65 72 20 74 68 61 6e 20 4e 55 4c  e other than NUL
15d0: 4c 2e 0a 3c 6c 69 3e 5e 49 66 20 5b 66 6f 72 65  L..<li>^If [fore
15e0: 69 67 6e 20 6b 65 79 20 63 6f 6e 73 74 72 61 69  ign key constrai
15f0: 6e 74 73 5d 20 61 72 65 20 5b 66 6f 72 65 69 67  nts] are [foreig
1600: 6e 5f 6b 65 79 73 20 70 72 61 67 6d 61 20 7c 20  n_keys pragma | 
1610: 65 6e 61 62 6c 65 64 5d 20 61 6e 64 0a 20 20 20  enabled] and.   
1620: 20 61 20 63 6f 6c 75 6d 6e 20 77 69 74 68 20 61   a column with a
1630: 20 5b 66 6f 72 65 69 67 6e 2d 6b 65 79 2d 63 6c   [foreign-key-cl
1640: 61 75 73 65 20 7c 20 52 45 46 45 52 45 4e 43 45  ause | REFERENCE
1650: 53 20 63 6c 61 75 73 65 5d 0a 20 20 20 20 69 73  S clause].    is
1660: 20 61 64 64 65 64 2c 20 74 68 65 20 63 6f 6c 75   added, the colu
1670: 6d 6e 20 6d 75 73 74 20 68 61 76 65 20 61 20 64  mn must have a d
1680: 65 66 61 75 6c 74 20 76 61 6c 75 65 20 6f 66 20  efault value of 
1690: 4e 55 4c 4c 2e 0a 3c 2f 75 6c 3e 0a 0a 3c 70 3e  NULL..</ul>..<p>
16a0: 5e 4e 6f 74 65 20 61 6c 73 6f 20 74 68 61 74 20  ^Note also that 
16b0: 77 68 65 6e 20 61 64 64 69 6e 67 20 61 20 43 48  when adding a CH
16c0: 45 43 4b 20 63 6f 6e 73 74 72 61 69 6e 74 2c 20  ECK constraint, 
16d0: 74 68 65 20 43 48 45 43 4b 20 63 6f 6e 73 74 72  the CHECK constr
16e0: 61 69 6e 74 0a 69 73 20 6e 6f 74 20 74 65 73 74  aint.is not test
16f0: 65 64 20 61 67 61 69 6e 73 74 20 70 72 65 65 78  ed against preex
1700: 69 73 74 69 6e 67 20 72 6f 77 73 20 6f 66 20 74  isting rows of t
1710: 68 65 20 74 61 62 6c 65 2e 0a 5e 54 68 69 73 20  he table..^This 
1720: 63 61 6e 20 72 65 73 75 6c 74 20 69 6e 20 61 20  can result in a 
1730: 74 61 62 6c 65 20 74 68 61 74 20 63 6f 6e 74 61  table that conta
1740: 69 6e 73 20 64 61 74 61 20 74 68 61 74 0a 69 73  ins data that.is
1750: 20 69 6e 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 66   in violation of
1760: 20 74 68 65 20 43 48 45 43 4b 20 63 6f 6e 73 74   the CHECK const
1770: 72 61 69 6e 74 2e 20 20 46 75 74 75 72 65 20 76  raint.  Future v
1780: 65 72 73 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74  ersions of SQLit
1790: 65 20 6d 69 67 68 74 0a 63 68 61 6e 67 65 20 74  e might.change t
17a0: 6f 20 76 61 6c 69 64 61 74 65 20 43 48 45 43 4b  o validate CHECK
17b0: 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 61 73 20   constraints as 
17c0: 74 68 65 79 20 61 72 65 20 61 64 64 65 64 2e 3c  they are added.<
17d0: 2f 70 3e 0a 0a 3c 70 3e 20 5e 54 68 65 20 65 78  /p>..<p> ^The ex
17e0: 65 63 75 74 69 6f 6e 20 74 69 6d 65 20 6f 66 20  ecution time of 
17f0: 74 68 65 20 41 4c 54 45 52 20 54 41 42 4c 45 20  the ALTER TABLE 
1800: 63 6f 6d 6d 61 6e 64 20 69 73 20 69 6e 64 65 70  command is indep
1810: 65 6e 64 65 6e 74 20 6f 66 0a 74 68 65 20 61 6d  endent of.the am
1820: 6f 75 6e 74 20 6f 66 20 64 61 74 61 20 69 6e 20  ount of data in 
1830: 74 68 65 20 74 61 62 6c 65 2e 20 20 54 68 65 20  the table.  The 
1840: 41 4c 54 45 52 20 54 41 42 4c 45 20 63 6f 6d 6d  ALTER TABLE comm
1850: 61 6e 64 20 72 75 6e 73 20 61 73 20 71 75 69 63  and runs as quic
1860: 6b 6c 79 0a 6f 6e 20 61 20 74 61 62 6c 65 20 77  kly.on a table w
1870: 69 74 68 20 31 30 20 6d 69 6c 6c 69 6f 6e 20 72  ith 10 million r
1880: 6f 77 73 20 61 73 20 69 74 20 64 6f 65 73 20 6f  ows as it does o
1890: 6e 20 61 20 74 61 62 6c 65 20 77 69 74 68 20 31  n a table with 1
18a0: 20 72 6f 77 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 41   row..</p>..<p>A
18b0: 66 74 65 72 20 41 44 44 20 43 4f 4c 55 4d 4e 20  fter ADD COLUMN 
18c0: 68 61 73 20 62 65 65 6e 20 72 75 6e 20 6f 6e 20  has been run on 
18d0: 61 20 64 61 74 61 62 61 73 65 2c 20 74 68 61 74  a database, that
18e0: 20 64 61 74 61 62 61 73 65 20 77 69 6c 6c 20 6e   database will n
18f0: 6f 74 0a 62 65 20 72 65 61 64 61 62 6c 65 20 62  ot.be readable b
1900: 79 20 53 51 4c 69 74 65 20 76 65 72 73 69 6f 6e  y SQLite version
1910: 20 33 2e 31 2e 33 20 61 6e 64 20 65 61 72 6c 69   3.1.3 and earli
1920: 65 72 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23  er.</p>..<tcl>.#
1930: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1940: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1950: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1960: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1970: 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 53 65  #############.Se
1980: 63 74 69 6f 6e 20 7b 41 4e 41 4c 59 5a 45 7d 20  ction {ANALYZE} 
1990: 61 6e 61 6c 79 7a 65 20 41 4e 41 4c 59 5a 45 0a  analyze ANALYZE.
19a0: 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 61  .BubbleDiagram a
19b0: 6e 61 6c 79 7a 65 2d 73 74 6d 74 20 31 0a 3c 2f  nalyze-stmt 1.</
19c0: 74 63 6c 3e 0a 0a 3c 70 3e 20 5e 54 68 65 20 41  tcl>..<p> ^The A
19d0: 4e 41 4c 59 5a 45 20 63 6f 6d 6d 61 6e 64 20 67  NALYZE command g
19e0: 61 74 68 65 72 73 20 73 74 61 74 69 73 74 69 63  athers statistic
19f0: 73 20 61 62 6f 75 74 20 69 6e 64 69 63 65 73 20  s about indices 
1a00: 61 6e 64 20 73 74 6f 72 65 73 20 74 68 65 6d 0a  and stores them.
1a10: 69 6e 20 61 20 73 70 65 63 69 61 6c 20 74 61 62  in a special tab
1a20: 6c 65 73 20 69 6e 20 74 68 65 20 64 61 74 61 62  les in the datab
1a30: 61 73 65 20 77 68 65 72 65 20 74 68 65 20 71 75  ase where the qu
1a40: 65 72 79 20 6f 70 74 69 6d 69 7a 65 72 20 63 61  ery optimizer ca
1a50: 6e 20 75 73 65 0a 74 68 65 6d 20 74 6f 20 68 65  n use.them to he
1a60: 6c 70 20 6d 61 6b 65 20 62 65 74 74 65 72 20 69  lp make better i
1a70: 6e 64 65 78 20 63 68 6f 69 63 65 73 2e 0a 5e 49  ndex choices..^I
1a80: 66 20 6e 6f 20 61 72 67 75 6d 65 6e 74 73 20 61  f no arguments a
1a90: 72 65 20 67 69 76 65 6e 2c 20 61 6c 6c 20 69 6e  re given, all in
1aa0: 64 69 63 65 73 20 69 6e 20 61 6c 6c 20 61 74 74  dices in all att
1ab0: 61 63 68 65 64 20 64 61 74 61 62 61 73 65 73 20  ached databases 
1ac0: 61 72 65 0a 61 6e 61 6c 79 7a 65 64 2e 20 20 5e  are.analyzed.  ^
1ad0: 49 66 20 61 20 64 61 74 61 62 61 73 65 20 6e 61  If a database na
1ae0: 6d 65 20 69 73 20 67 69 76 65 6e 20 61 73 20 74  me is given as t
1af0: 68 65 20 61 72 67 75 6d 65 6e 74 2c 20 61 6c 6c  he argument, all
1b00: 20 69 6e 64 69 63 65 73 0a 69 6e 20 74 68 61 74   indices.in that
1b10: 20 6f 6e 65 20 64 61 74 61 62 61 73 65 20 61 72   one database ar
1b20: 65 20 61 6e 61 6c 79 7a 65 64 2e 20 20 5e 49 66  e analyzed.  ^If
1b30: 20 74 68 65 20 61 72 67 75 6d 65 6e 74 20 69 73   the argument is
1b40: 20 61 20 74 61 62 6c 65 20 6e 61 6d 65 2c 0a 74   a table name,.t
1b50: 68 65 6e 20 6f 6e 6c 79 20 69 6e 64 69 63 65 73  hen only indices
1b60: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
1b70: 20 74 68 61 74 20 6f 6e 65 20 74 61 62 6c 65 20   that one table 
1b80: 61 72 65 20 61 6e 61 6c 79 7a 65 64 2e 3c 2f 70  are analyzed.</p
1b90: 3e 0a 0a 3c 70 3e 20 5e 54 68 65 20 64 65 66 61  >..<p> ^The defa
1ba0: 75 6c 74 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  ult implementati
1bb0: 6f 6e 20 73 74 6f 72 65 73 20 61 6c 6c 20 73 74  on stores all st
1bc0: 61 74 69 73 74 69 63 73 20 69 6e 20 61 20 73 69  atistics in a si
1bd0: 6e 67 6c 65 0a 74 61 62 6c 65 20 6e 61 6d 65 64  ngle.table named
1be0: 20 3c 62 3e 73 71 6c 69 74 65 5f 73 74 61 74 31   <b>sqlite_stat1
1bf0: 3c 2f 62 3e 2e 20 20 5e 49 66 20 53 51 4c 69 74  </b>.  ^If SQLit
1c00: 65 20 69 73 20 63 6f 6d 70 69 6c 65 64 20 77 69  e is compiled wi
1c10: 74 68 20 74 68 65 0a 5b 53 51 4c 49 54 45 5f 45  th the.[SQLITE_E
1c20: 4e 41 42 4c 45 5f 53 54 41 54 32 5d 20 6f 70 74  NABLE_STAT2] opt
1c30: 69 6f 6e 2c 20 74 68 65 6e 20 61 64 64 69 74 69  ion, then additi
1c40: 6f 6e 61 6c 20 68 69 73 74 6f 67 72 61 6d 20 64  onal histogram d
1c50: 61 74 61 20 69 73 0a 63 6f 6c 6c 65 63 74 65 64  ata is.collected
1c60: 20 61 6e 64 20 73 74 6f 72 65 64 20 69 6e 20 3c   and stored in <
1c70: 62 3e 73 71 6c 69 74 65 5f 73 74 61 74 32 3c 2f  b>sqlite_stat2</
1c80: 62 3e 2e 0a 46 75 74 75 72 65 20 65 6e 68 61 6e  b>..Future enhan
1c90: 63 65 6d 65 6e 74 73 20 6d 61 79 20 63 72 65 61  cements may crea
1ca0: 74 65 0a 61 64 64 69 74 69 6f 6e 61 6c 20 74 61  te.additional ta
1cb0: 62 6c 65 73 20 77 69 74 68 20 74 68 65 20 73 61  bles with the sa
1cc0: 6d 65 20 6e 61 6d 65 20 70 61 74 74 65 72 6e 20  me name pattern 
1cd0: 65 78 63 65 70 74 20 77 69 74 68 20 74 68 65 20  except with the 
1ce0: 22 31 22 0a 6f 72 20 22 32 22 20 63 68 61 6e 67  "1".or "2" chang
1cf0: 65 64 20 74 6f 20 61 20 64 69 66 66 65 72 65 6e  ed to a differen
1d00: 74 20 64 69 67 69 74 2e 3c 2f 70 3e 0a 0a 3c 70  t digit.</p>..<p
1d10: 3e 20 5e 54 68 65 20 5b 44 52 4f 50 20 54 41 42  > ^The [DROP TAB
1d20: 4c 45 5d 20 63 6f 6d 6d 61 6e 64 20 64 6f 65 73  LE] command does
1d30: 0a 6e 6f 74 20 77 6f 72 6b 20 6f 6e 20 74 68 65  .not work on the
1d40: 20 3c 62 3e 73 71 6c 69 74 65 5f 73 74 61 74 31   <b>sqlite_stat1
1d50: 3c 2f 62 3e 20 6f 72 20 3c 62 3e 73 71 6c 69 74  </b> or <b>sqlit
1d60: 65 5f 73 74 61 74 32 3c 2f 62 3e 20 74 61 62 6c  e_stat2</b> tabl
1d70: 65 73 2c 0a 62 75 74 20 61 6c 6c 20 74 68 65 20  es,.but all the 
1d80: 63 6f 6e 74 65 6e 74 20 6f 66 20 74 68 6f 73 65  content of those
1d90: 20 74 61 62 6c 65 73 20 63 61 6e 20 62 65 20 71   tables can be q
1da0: 75 65 72 69 65 64 20 75 73 69 6e 67 20 5b 53 45  ueried using [SE
1db0: 4c 45 43 54 5d 0a 61 6e 64 20 63 61 6e 20 62 65  LECT].and can be
1dc0: 20 64 65 6c 65 74 65 64 2c 20 61 75 67 6d 65 6e   deleted, augmen
1dd0: 74 65 64 2c 20 6f 72 20 6d 6f 64 69 66 69 65 64  ted, or modified
1de0: 20 75 73 69 6e 67 20 74 68 65 20 5b 44 45 4c 45   using the [DELE
1df0: 54 45 5d 2c 0a 5b 49 4e 53 45 52 54 5d 2c 20 61  TE],.[INSERT], a
1e00: 6e 64 20 5b 55 50 44 41 54 45 5d 20 63 6f 6d 6d  nd [UPDATE] comm
1e10: 61 6e 64 73 2e 0a 41 70 70 72 6f 70 72 69 61 74  ands..Appropriat
1e20: 65 20 63 61 72 65 20 73 68 6f 75 6c 64 20 62 65  e care should be
1e30: 20 75 73 65 64 20 77 68 65 6e 20 63 68 61 6e 67   used when chang
1e40: 69 6e 67 20 74 68 65 20 63 6f 6e 74 65 6e 74 20  ing the content 
1e50: 6f 66 20 74 68 65 20 73 74 61 74 69 73 74 69 63  of the statistic
1e60: 73 0a 74 61 62 6c 65 73 20 61 73 20 69 6e 76 61  s.tables as inva
1e70: 6c 69 64 20 63 6f 6e 74 65 6e 74 20 63 61 6e 20  lid content can 
1e80: 63 61 75 73 65 20 53 51 4c 69 74 65 20 74 6f 20  cause SQLite to 
1e90: 73 65 6c 65 63 74 20 69 6e 65 66 66 69 63 69 65  select inefficie
1ea0: 6e 74 0a 71 75 65 72 79 20 70 6c 61 6e 73 2e 20  nt.query plans. 
1eb0: 20 47 65 6e 65 72 61 6c 6c 79 20 73 70 65 61 6b   Generally speak
1ec0: 69 6e 67 2c 20 6f 6e 65 20 73 68 6f 75 6c 64 20  ing, one should 
1ed0: 6e 6f 74 20 6d 6f 64 69 66 79 20 74 68 65 20 63  not modify the c
1ee0: 6f 6e 74 65 6e 74 20 6f 66 0a 74 68 65 20 73 74  ontent of.the st
1ef0: 61 74 69 73 74 69 63 73 20 74 61 62 6c 65 73 20  atistics tables 
1f00: 62 79 20 61 6e 79 20 6d 65 63 68 61 6e 69 73 6d  by any mechanism
1f10: 20 6f 74 68 65 72 20 74 68 61 6e 20 69 6e 76 6f   other than invo
1f20: 6b 69 6e 67 20 74 68 65 0a 41 4e 41 4c 59 5a 45  king the.ANALYZE
1f30: 20 63 6f 6d 6d 61 6e 64 2e 3c 2f 70 3e 0a 0a 3c   command.</p>..<
1f40: 70 3e 20 5e 53 74 61 74 69 73 74 69 63 73 20 67  p> ^Statistics g
1f50: 61 74 68 65 72 65 64 20 62 79 20 41 4e 41 4c 59  athered by ANALY
1f60: 5a 45 20 61 72 65 20 3c 75 3e 6e 6f 74 3c 2f 75  ZE are <u>not</u
1f70: 3e 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20  > automatically 
1f80: 75 70 64 61 74 65 64 20 61 73 0a 74 68 65 20 63  updated as.the c
1f90: 6f 6e 74 65 6e 74 20 6f 66 20 74 68 65 20 64 61  ontent of the da
1fa0: 74 61 62 61 73 65 20 63 68 61 6e 67 65 73 2e 20  tabase changes. 
1fb0: 20 49 66 20 74 68 65 20 63 6f 6e 74 65 6e 74 20   If the content 
1fc0: 6f 66 20 74 68 65 20 64 61 74 61 62 61 73 65 0a  of the database.
1fd0: 63 68 61 6e 67 65 73 20 73 69 67 6e 69 66 69 63  changes signific
1fe0: 61 6e 74 6c 79 2c 20 6f 72 20 69 66 20 74 68 65  antly, or if the
1ff0: 20 64 61 74 61 62 61 73 65 20 73 63 68 65 6d 61   database schema
2000: 20 63 68 61 6e 67 65 73 2c 20 74 68 65 6e 20 6f   changes, then o
2010: 6e 65 20 73 68 6f 75 6c 64 0a 63 6f 6e 73 69 64  ne should.consid
2020: 65 72 20 72 65 72 75 6e 6e 69 6e 67 20 74 68 65  er rerunning the
2030: 20 41 4e 41 4c 59 5a 45 20 63 6f 6d 6d 61 6e 64   ANALYZE command
2040: 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 75 70 64   in order to upd
2050: 61 74 65 20 74 68 65 20 73 74 61 74 69 73 74 69  ate the statisti
2060: 63 73 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23  cs.</p>..<tcl>.#
2070: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2080: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2090: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
20a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
20b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 53 65  #############.Se
20c0: 63 74 69 6f 6e 20 7b 41 54 54 41 43 48 20 44 41  ction {ATTACH DA
20d0: 54 41 42 41 53 45 7d 20 61 74 74 61 63 68 20 2a  TABASE} attach *
20e0: 41 54 54 41 43 48 0a 0a 42 75 62 62 6c 65 44 69  ATTACH..BubbleDi
20f0: 61 67 72 61 6d 20 61 74 74 61 63 68 2d 73 74 6d  agram attach-stm
2100: 74 20 31 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 20  t 1.</tcl>..<p> 
2110: 5e 54 68 65 20 41 54 54 41 43 48 20 44 41 54 41  ^The ATTACH DATA
2120: 42 41 53 45 20 73 74 61 74 65 6d 65 6e 74 20 61  BASE statement a
2130: 64 64 73 20 61 6e 6f 74 68 65 72 20 64 61 74 61  dds another data
2140: 62 61 73 65 20 0a 66 69 6c 65 20 74 6f 20 74 68  base .file to th
2150: 65 20 63 75 72 72 65 6e 74 20 5b 64 61 74 61 62  e current [datab
2160: 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 2e  ase connection].
2170: 20 0a 5e 54 68 65 20 64 61 74 61 62 61 73 65 2d   .^The database-
2180: 6e 61 6d 65 73 20 27 6d 61 69 6e 27 20 61 6e 64  names 'main' and
2190: 20 0a 27 74 65 6d 70 27 20 72 65 66 65 72 20 74   .'temp' refer t
21a0: 6f 20 74 68 65 20 6d 61 69 6e 20 64 61 74 61 62  o the main datab
21b0: 61 73 65 20 61 6e 64 20 74 68 65 20 64 61 74 61  ase and the data
21c0: 62 61 73 65 20 75 73 65 64 20 66 6f 72 20 0a 74  base used for .t
21d0: 65 6d 70 6f 72 61 72 79 20 74 61 62 6c 65 73 2e  emporary tables.
21e0: 20 20 5e 54 68 65 20 6d 61 69 6e 20 61 6e 64 20    ^The main and 
21f0: 74 65 6d 70 20 64 61 74 61 62 61 73 65 73 20 63  temp databases c
2200: 61 6e 6e 6f 74 20 62 65 20 61 74 74 61 63 68 65  annot be attache
2210: 64 20 6f 72 0a 64 65 74 61 63 68 65 64 2e 3c 2f  d or.detached.</
2220: 70 3e 0a 0a 3c 70 3e 20 5e 59 6f 75 20 63 61 6e  p>..<p> ^You can
2230: 6e 6f 74 20 63 72 65 61 74 65 20 61 20 6e 65 77  not create a new
2240: 20 74 61 62 6c 65 20 77 69 74 68 20 74 68 65 20   table with the 
2250: 73 61 6d 65 20 6e 61 6d 65 20 61 73 20 61 20 74  same name as a t
2260: 61 62 6c 65 20 69 6e 20 0a 61 6e 20 61 74 74 61  able in .an atta
2270: 63 68 65 64 20 64 61 74 61 62 61 73 65 2c 20 62  ched database, b
2280: 75 74 20 79 6f 75 20 63 61 6e 20 61 74 74 61 63  ut you can attac
2290: 68 20 61 20 64 61 74 61 62 61 73 65 20 77 68 69  h a database whi
22a0: 63 68 20 63 6f 6e 74 61 69 6e 73 0a 74 61 62 6c  ch contains.tabl
22b0: 65 73 20 77 68 6f 73 65 20 6e 61 6d 65 73 20 61  es whose names a
22c0: 72 65 20 64 75 70 6c 69 63 61 74 65 73 20 6f 66  re duplicates of
22d0: 20 74 61 62 6c 65 73 20 69 6e 20 74 68 65 20 6d   tables in the m
22e0: 61 69 6e 20 64 61 74 61 62 61 73 65 2e 20 20 5e  ain database.  ^
22f0: 49 66 0a 74 68 65 20 73 79 73 74 65 6d 20 69 73  If.the system is
2300: 20 6e 6f 74 20 72 75 6e 6e 69 6e 67 20 69 6e 20   not running in 
2310: 5b 73 68 61 72 65 64 20 63 61 63 68 65 20 6d 6f  [shared cache mo
2320: 64 65 5d 2c 20 69 74 20 69 73 20 61 6c 73 6f 20  de], it is also 
2330: 70 65 72 6d 69 73 73 69 62 6c 65 20 0a 74 6f 20  permissible .to 
2340: 61 74 74 61 63 68 20 74 68 65 20 73 61 6d 65 20  attach the same 
2350: 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 6d 75  database file mu
2360: 6c 74 69 70 6c 65 20 74 69 6d 65 73 2e 3c 2f 70  ltiple times.</p
2370: 3e 0a 0a 3c 70 3e 20 5e 28 54 61 62 6c 65 73 20  >..<p> ^(Tables 
2380: 69 6e 20 61 6e 20 61 74 74 61 63 68 65 64 20 64  in an attached d
2390: 61 74 61 62 61 73 65 20 63 61 6e 20 62 65 20 72  atabase can be r
23a0: 65 66 65 72 72 65 64 20 74 6f 20 75 73 69 6e 67  eferred to using
23b0: 20 74 68 65 20 73 79 6e 74 61 78 20 0a 3c 69 3e   the syntax .<i>
23c0: 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 2e 74 61  database-name.ta
23d0: 62 6c 65 2d 6e 61 6d 65 3c 2f 69 3e 2e 29 5e 20  ble-name</i>.)^ 
23e0: 20 5e 49 66 20 74 68 65 20 6e 61 6d 65 20 6f 66   ^If the name of
23f0: 20 74 68 65 20 74 61 62 6c 65 20 69 73 20 75 6e   the table is un
2400: 69 71 75 65 0a 61 63 72 6f 73 73 20 61 6c 6c 20  ique.across all 
2410: 61 74 74 61 63 68 65 64 20 64 61 74 61 62 61 73  attached databas
2420: 65 73 20 61 6e 64 20 74 68 65 20 6d 61 69 6e 20  es and the main 
2430: 61 6e 64 20 74 65 6d 70 20 64 61 74 61 62 61 73  and temp databas
2440: 65 73 2c 20 74 68 65 6e 20 74 68 65 0a 3c 69 3e  es, then the.<i>
2450: 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3c 2f 69  database-name</i
2460: 3e 20 70 72 65 66 69 78 20 69 73 20 6e 6f 74 20  > prefix is not 
2470: 72 65 71 75 69 72 65 64 2e 20 20 5e 57 68 65 6e  required.  ^When
2480: 20 61 20 64 61 74 61 62 61 73 65 20 69 73 20 61   a database is a
2490: 74 74 61 63 68 65 64 2c 20 0a 61 6c 6c 20 74 61  ttached, .all ta
24a0: 62 6c 65 73 20 77 68 69 63 68 20 64 6f 6e 27 74  bles which don't
24b0: 20 68 61 76 65 20 64 75 70 6c 69 63 61 74 65 20   have duplicate 
24c0: 6e 61 6d 65 73 20 62 65 63 6f 6d 65 20 74 68 65  names become the
24d0: 20 64 65 66 61 75 6c 74 20 74 61 62 6c 65 0a 6f   default table.o
24e0: 66 20 74 68 61 74 20 6e 61 6d 65 2e 20 20 5e 41  f that name.  ^A
24f0: 6e 79 20 74 61 62 6c 65 73 20 6f 66 20 74 68 61  ny tables of tha
2500: 74 20 6e 61 6d 65 20 61 74 74 61 63 68 65 64 20  t name attached 
2510: 61 66 74 65 72 77 61 72 64 73 20 72 65 71 75 69  afterwards requi
2520: 72 65 20 74 68 65 0a 64 61 74 61 62 61 73 65 20  re the.database 
2530: 70 72 65 66 69 78 2e 20 5e 49 66 20 74 68 65 20  prefix. ^If the 
2540: 64 65 66 61 75 6c 74 20 74 61 62 6c 65 20 6f 66  default table of
2550: 20 61 20 67 69 76 65 6e 20 6e 61 6d 65 20 69 73   a given name is
2560: 20 64 65 74 61 63 68 65 64 2c 20 74 68 65 6e 0a   detached, then.
2570: 74 68 65 20 6c 61 73 74 20 74 61 62 6c 65 20 6f  the last table o
2580: 66 20 74 68 61 74 20 6e 61 6d 65 20 61 74 74 61  f that name atta
2590: 63 68 65 64 20 62 65 63 6f 6d 65 73 20 74 68 65  ched becomes the
25a0: 20 6e 65 77 20 64 65 66 61 75 6c 74 2e 3c 2f 70   new default.</p
25b0: 3e 0a 0a 3c 70 3e 0a 5e 54 72 61 6e 73 61 63 74  >..<p>.^Transact
25c0: 69 6f 6e 73 20 69 6e 76 6f 6c 76 69 6e 67 20 6d  ions involving m
25d0: 75 6c 74 69 70 6c 65 20 61 74 74 61 63 68 65 64  ultiple attached
25e0: 20 64 61 74 61 62 61 73 65 73 20 61 72 65 20 61   databases are a
25f0: 74 6f 6d 69 63 2c 0a 61 73 73 75 6d 69 6e 67 20  tomic,.assuming 
2600: 74 68 61 74 20 74 68 65 20 6d 61 69 6e 20 64 61  that the main da
2610: 74 61 62 61 73 65 20 69 73 20 6e 6f 74 20 22 5b  tabase is not "[
2620: 3a 6d 65 6d 6f 72 79 3a 5d 22 2e 20 20 5e 28 49  :memory:]".  ^(I
2630: 66 20 74 68 65 20 6d 61 69 6e 0a 64 61 74 61 62  f the main.datab
2640: 61 73 65 20 69 73 20 22 3a 6d 65 6d 6f 72 79 3a  ase is ":memory:
2650: 22 20 74 68 65 6e 20 0a 74 72 61 6e 73 61 63 74  " then .transact
2660: 69 6f 6e 73 20 63 6f 6e 74 69 6e 75 65 20 74 6f  ions continue to
2670: 20 62 65 20 61 74 6f 6d 69 63 20 77 69 74 68 69   be atomic withi
2680: 6e 20 65 61 63 68 20 69 6e 64 69 76 69 64 75 61  n each individua
2690: 6c 0a 64 61 74 61 62 61 73 65 20 66 69 6c 65 2e  l.database file.
26a0: 20 42 75 74 20 69 66 20 74 68 65 20 68 6f 73 74   But if the host
26b0: 20 63 6f 6d 70 75 74 65 72 20 63 72 61 73 68 65   computer crashe
26c0: 73 20 69 6e 20 74 68 65 20 6d 69 64 64 6c 65 0a  s in the middle.
26d0: 6f 66 20 61 20 5b 43 4f 4d 4d 49 54 5d 20 77 68  of a [COMMIT] wh
26e0: 65 72 65 20 74 77 6f 20 6f 72 20 6d 6f 72 65 20  ere two or more 
26f0: 64 61 74 61 62 61 73 65 20 66 69 6c 65 73 20 61  database files a
2700: 72 65 20 75 70 64 61 74 65 64 2c 0a 73 6f 6d 65  re updated,.some
2710: 20 6f 66 20 74 68 6f 73 65 20 66 69 6c 65 73 20   of those files 
2720: 6d 69 67 68 74 20 67 65 74 20 74 68 65 20 63 68  might get the ch
2730: 61 6e 67 65 73 20 77 68 65 72 65 20 6f 74 68 65  anges where othe
2740: 72 73 0a 6d 69 67 68 74 20 6e 6f 74 2e 29 5e 0a  rs.might not.)^.
2750: 3c 2f 70 3e 0a 0a 3c 70 3e 20 5e 54 68 65 72 65  </p>..<p> ^There
2760: 20 69 73 20 61 20 63 6f 6d 70 69 6c 65 2d 74 69   is a compile-ti
2770: 6d 65 20 6c 69 6d 69 74 20 6f 66 20 5b 53 51 4c  me limit of [SQL
2780: 49 54 45 5f 4d 41 58 5f 41 54 54 41 43 48 45 44  ITE_MAX_ATTACHED
2790: 5d 0a 61 74 74 61 63 68 65 64 20 64 61 74 61 62  ].attached datab
27a0: 61 73 65 20 66 69 6c 65 73 2e 3c 2f 70 3e 0a 0a  ase files.</p>..
27b0: 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23  <tcl>.##########
27c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
27d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
27e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
27f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2800: 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b 42  #####.Section {B
2810: 45 47 49 4e 20 54 52 41 4e 53 41 43 54 49 4f 4e  EGIN TRANSACTION
2820: 7d 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 7b 2a  } transaction {*
2830: 42 45 47 49 4e 20 43 4f 4d 4d 49 54 20 52 4f 4c  BEGIN COMMIT ROL
2840: 4c 42 41 43 4b 7d 0a 0a 42 75 62 62 6c 65 44 69  LBACK}..BubbleDi
2850: 61 67 72 61 6d 20 62 65 67 69 6e 2d 73 74 6d 74  agram begin-stmt
2860: 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 63  .BubbleDiagram c
2870: 6f 6d 6d 69 74 2d 73 74 6d 74 0a 42 75 62 62 6c  ommit-stmt.Bubbl
2880: 65 44 69 61 67 72 61 6d 20 72 6f 6c 6c 62 61 63  eDiagram rollbac
2890: 6b 2d 73 74 6d 74 0a 3c 2f 74 63 6c 3e 0a 0a 3c  k-stmt.</tcl>..<
28a0: 70 3e 0a 5e 4e 6f 20 63 68 61 6e 67 65 73 20 63  p>.^No changes c
28b0: 61 6e 20 62 65 20 6d 61 64 65 20 74 6f 20 74 68  an be made to th
28c0: 65 20 64 61 74 61 62 61 73 65 20 65 78 63 65 70  e database excep
28d0: 74 20 77 69 74 68 69 6e 20 61 20 74 72 61 6e 73  t within a trans
28e0: 61 63 74 69 6f 6e 2e 0a 5e 41 6e 79 20 63 6f 6d  action..^Any com
28f0: 6d 61 6e 64 20 74 68 61 74 20 63 68 61 6e 67 65  mand that change
2900: 73 20 74 68 65 20 64 61 74 61 62 61 73 65 20 28  s the database (
2910: 62 61 73 69 63 61 6c 6c 79 2c 20 61 6e 79 20 53  basically, any S
2920: 51 4c 20 63 6f 6d 6d 61 6e 64 0a 6f 74 68 65 72  QL command.other
2930: 20 74 68 61 6e 20 5b 53 45 4c 45 43 54 5d 29 20   than [SELECT]) 
2940: 77 69 6c 6c 20 61 75 74 6f 6d 61 74 69 63 61 6c  will automatical
2950: 6c 79 20 73 74 61 72 74 20 61 20 74 72 61 6e 73  ly start a trans
2960: 61 63 74 69 6f 6e 20 69 66 0a 6f 6e 65 20 69 73  action if.one is
2970: 20 6e 6f 74 20 61 6c 72 65 61 64 79 20 69 6e 20   not already in 
2980: 65 66 66 65 63 74 2e 20 20 5e 41 75 74 6f 6d 61  effect.  ^Automa
2990: 74 69 63 61 6c 6c 79 20 73 74 61 72 74 65 64 20  tically started 
29a0: 74 72 61 6e 73 61 63 74 69 6f 6e 73 0a 61 72 65  transactions.are
29b0: 20 63 6f 6d 6d 69 74 74 65 64 20 77 68 65 6e 20   committed when 
29c0: 74 68 65 20 6c 61 73 74 20 71 75 65 72 79 20 66  the last query f
29d0: 69 6e 69 73 68 65 73 2e 0a 3c 2f 70 3e 0a 0a 3c  inishes..</p>..<
29e0: 70 3e 0a 5e 54 72 61 6e 73 61 63 74 69 6f 6e 73  p>.^Transactions
29f0: 20 63 61 6e 20 62 65 20 73 74 61 72 74 65 64 20   can be started 
2a00: 6d 61 6e 75 61 6c 6c 79 20 75 73 69 6e 67 20 74  manually using t
2a10: 68 65 20 42 45 47 49 4e 0a 63 6f 6d 6d 61 6e 64  he BEGIN.command
2a20: 2e 20 20 5e 28 53 75 63 68 20 74 72 61 6e 73 61  .  ^(Such transa
2a30: 63 74 69 6f 6e 73 20 75 73 75 61 6c 6c 79 20 70  ctions usually p
2a40: 65 72 73 69 73 74 20 75 6e 74 69 6c 20 74 68 65  ersist until the
2a50: 20 6e 65 78 74 0a 43 4f 4d 4d 49 54 20 6f 72 20   next.COMMIT or 
2a60: 52 4f 4c 4c 42 41 43 4b 20 63 6f 6d 6d 61 6e 64  ROLLBACK command
2a70: 2e 20 20 42 75 74 20 61 20 74 72 61 6e 73 61 63  .  But a transac
2a80: 74 69 6f 6e 20 77 69 6c 6c 20 61 6c 73 6f 20 0a  tion will also .
2a90: 52 4f 4c 4c 42 41 43 4b 20 69 66 20 74 68 65 20  ROLLBACK if the 
2aa0: 64 61 74 61 62 61 73 65 20 69 73 20 63 6c 6f 73  database is clos
2ab0: 65 64 20 6f 72 20 69 66 20 61 6e 20 65 72 72 6f  ed or if an erro
2ac0: 72 20 6f 63 63 75 72 73 0a 61 6e 64 20 74 68 65  r occurs.and the
2ad0: 20 52 4f 4c 4c 42 41 43 4b 20 63 6f 6e 66 6c 69   ROLLBACK confli
2ae0: 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c  ct resolution al
2af0: 67 6f 72 69 74 68 6d 20 69 73 20 73 70 65 63 69  gorithm is speci
2b00: 66 69 65 64 2e 29 5e 0a 53 65 65 20 74 68 65 20  fied.)^.See the 
2b10: 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 6f 6e  documentation on
2b20: 20 74 68 65 20 5b 4f 4e 20 43 4f 4e 46 4c 49 43   the [ON CONFLIC
2b30: 54 5d 0a 63 6c 61 75 73 65 20 66 6f 72 20 61 64  T].clause for ad
2b40: 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61  ditional informa
2b50: 74 69 6f 6e 20 61 62 6f 75 74 20 74 68 65 20 52  tion about the R
2b60: 4f 4c 4c 42 41 43 4b 0a 63 6f 6e 66 6c 69 63 74  OLLBACK.conflict
2b70: 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f   resolution algo
2b80: 72 69 74 68 6d 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e  rithm..</p>..<p>
2b90: 0a 5e 45 4e 44 20 54 52 41 4e 53 41 43 54 49 4f  .^END TRANSACTIO
2ba0: 4e 20 69 73 20 61 6e 20 61 6c 69 61 73 20 66 6f  N is an alias fo
2bb0: 72 20 43 4f 4d 4d 49 54 2e 0a 3c 2f 70 3e 0a 0a  r COMMIT..</p>..
2bc0: 3c 70 3e 20 5e 28 54 72 61 6e 73 61 63 74 69 6f  <p> ^(Transactio
2bd0: 6e 73 20 63 72 65 61 74 65 64 20 75 73 69 6e 67  ns created using
2be0: 20 42 45 47 49 4e 2e 2e 2e 43 4f 4d 4d 49 54 20   BEGIN...COMMIT 
2bf0: 64 6f 20 6e 6f 74 20 6e 65 73 74 2e 29 5e 0a 5e  do not nest.)^.^
2c00: 46 6f 72 20 6e 65 73 74 65 64 20 74 72 61 6e 73  For nested trans
2c10: 61 63 74 69 6f 6e 73 2c 20 75 73 65 20 74 68 65  actions, use the
2c20: 20 5b 53 41 56 45 50 4f 49 4e 54 5d 20 61 6e 64   [SAVEPOINT] and
2c30: 20 5b 52 45 4c 45 41 53 45 5d 20 63 6f 6d 6d 61   [RELEASE] comma
2c40: 6e 64 73 2e 0a 54 68 65 20 22 54 4f 20 53 41 56  nds..The "TO SAV
2c50: 45 50 4f 49 4e 54 20 3c 69 3e 6e 61 6d 65 3c 2f  EPOINT <i>name</
2c60: 69 3e 22 20 63 6c 61 75 73 65 20 6f 66 20 74 68  i>" clause of th
2c70: 65 20 52 4f 4c 4c 42 41 43 4b 20 63 6f 6d 6d 61  e ROLLBACK comma
2c80: 6e 64 20 73 68 6f 77 6e 0a 69 6e 20 74 68 65 20  nd shown.in the 
2c90: 73 79 6e 74 61 78 20 64 69 61 67 72 61 6d 20 61  syntax diagram a
2ca0: 62 6f 76 65 20 69 73 20 6f 6e 6c 79 20 61 70 70  bove is only app
2cb0: 6c 69 63 61 62 6c 65 20 74 6f 20 5b 53 41 56 45  licable to [SAVE
2cc0: 50 4f 49 4e 54 5d 0a 74 72 61 6e 73 61 63 74 69  POINT].transacti
2cd0: 6f 6e 73 2e 20 20 5e 41 6e 20 61 74 74 65 6d 70  ons.  ^An attemp
2ce0: 74 20 74 6f 20 69 6e 76 6f 6b 65 20 74 68 65 20  t to invoke the 
2cf0: 42 45 47 49 4e 20 63 6f 6d 6d 61 6e 64 20 77 69  BEGIN command wi
2d00: 74 68 69 6e 0a 61 20 74 72 61 6e 73 61 63 74 69  thin.a transacti
2d10: 6f 6e 20 77 69 6c 6c 20 66 61 69 6c 20 77 69 74  on will fail wit
2d20: 68 20 61 6e 20 65 72 72 6f 72 2c 20 72 65 67 61  h an error, rega
2d30: 72 64 6c 65 73 73 20 6f 66 20 77 68 65 74 68 65  rdless of whethe
2d40: 72 0a 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f  r.the transactio
2d50: 6e 20 77 61 73 20 73 74 61 72 74 65 64 20 62 79  n was started by
2d60: 20 5b 53 41 56 45 50 4f 49 4e 54 5d 20 6f 72 20   [SAVEPOINT] or 
2d70: 61 20 70 72 69 6f 72 20 42 45 47 49 4e 2e 0a 5e  a prior BEGIN..^
2d80: 54 68 65 20 43 4f 4d 4d 49 54 20 63 6f 6d 6d 61  The COMMIT comma
2d90: 6e 64 20 61 6e 64 20 74 68 65 20 52 4f 4c 4c 42  nd and the ROLLB
2da0: 41 43 4b 20 63 6f 6d 6d 61 6e 64 20 77 69 74 68  ACK command with
2db0: 6f 75 74 20 74 68 65 20 54 4f 20 63 6c 61 75 73  out the TO claus
2dc0: 65 0a 77 6f 72 6b 20 74 68 65 20 73 61 6d 65 20  e.work the same 
2dd0: 6f 6e 20 5b 53 41 56 45 50 4f 49 4e 54 5d 20 74  on [SAVEPOINT] t
2de0: 72 61 6e 73 61 63 74 69 6f 6e 73 20 61 73 20 74  ransactions as t
2df0: 68 65 79 20 64 6f 20 77 69 74 68 20 74 72 61 6e  hey do with tran
2e00: 73 61 63 74 69 6f 6e 73 0a 73 74 61 72 74 65 64  sactions.started
2e10: 20 62 79 20 42 45 47 49 4e 2e 3c 2f 70 3e 0a 0a   by BEGIN.</p>..
2e20: 3c 70 3e 0a 5e 54 72 61 6e 73 61 63 74 69 6f 6e  <p>.^Transaction
2e30: 73 20 63 61 6e 20 62 65 20 64 65 66 65 72 72 65  s can be deferre
2e40: 64 2c 20 69 6d 6d 65 64 69 61 74 65 2c 20 6f 72  d, immediate, or
2e50: 20 65 78 63 6c 75 73 69 76 65 2e 20 20 0a 5e 54   exclusive.  .^T
2e60: 68 65 20 64 65 66 61 75 6c 74 20 74 72 61 6e 73  he default trans
2e70: 61 63 74 69 6f 6e 20 62 65 68 61 76 69 6f 72 20  action behavior 
2e80: 69 73 20 64 65 66 65 72 72 65 64 2e 0a 5e 44 65  is deferred..^De
2e90: 66 65 72 72 65 64 20 6d 65 61 6e 73 20 74 68 61  ferred means tha
2ea0: 74 20 6e 6f 20 6c 6f 63 6b 73 20 61 72 65 20 61  t no locks are a
2eb0: 63 71 75 69 72 65 64 0a 6f 6e 20 74 68 65 20 64  cquired.on the d
2ec0: 61 74 61 62 61 73 65 20 75 6e 74 69 6c 20 74 68  atabase until th
2ed0: 65 20 64 61 74 61 62 61 73 65 20 69 73 20 66 69  e database is fi
2ee0: 72 73 74 20 61 63 63 65 73 73 65 64 2e 20 20 5e  rst accessed.  ^
2ef0: 54 68 75 73 20 77 69 74 68 20 61 0a 64 65 66 65  Thus with a.defe
2f00: 72 72 65 64 20 74 72 61 6e 73 61 63 74 69 6f 6e  rred transaction
2f10: 2c 20 74 68 65 20 42 45 47 49 4e 20 73 74 61 74  , the BEGIN stat
2f20: 65 6d 65 6e 74 20 69 74 73 65 6c 66 20 64 6f 65  ement itself doe
2f30: 73 20 6e 6f 74 68 69 6e 67 20 74 6f 20 74 68 65  s nothing to the
2f40: 0a 66 69 6c 65 73 79 73 74 65 6d 2e 20 20 5e 4c  .filesystem.  ^L
2f50: 6f 63 6b 73 0a 61 72 65 20 6e 6f 74 20 61 63 71  ocks.are not acq
2f60: 75 69 72 65 64 20 75 6e 74 69 6c 20 74 68 65 20  uired until the 
2f70: 66 69 72 73 74 20 72 65 61 64 20 6f 72 20 77 72  first read or wr
2f80: 69 74 65 20 6f 70 65 72 61 74 69 6f 6e 2e 20 20  ite operation.  
2f90: 5e 54 68 65 20 66 69 72 73 74 20 72 65 61 64 0a  ^The first read.
2fa0: 6f 70 65 72 61 74 69 6f 6e 20 61 67 61 69 6e 73  operation agains
2fb0: 74 20 61 20 64 61 74 61 62 61 73 65 20 63 72 65  t a database cre
2fc0: 61 74 65 73 20 61 20 5b 53 48 41 52 45 44 5d 20  ates a [SHARED] 
2fd0: 6c 6f 63 6b 20 61 6e 64 20 74 68 65 20 66 69 72  lock and the fir
2fe0: 73 74 0a 77 72 69 74 65 20 6f 70 65 72 61 74 69  st.write operati
2ff0: 6f 6e 20 63 72 65 61 74 65 73 20 61 20 5b 52 45  on creates a [RE
3000: 53 45 52 56 45 44 5d 20 6c 6f 63 6b 2e 20 20 20  SERVED] lock.   
3010: 5e 42 65 63 61 75 73 65 20 74 68 65 20 61 63 71  ^Because the acq
3020: 75 69 73 69 74 69 6f 6e 20 6f 66 0a 6c 6f 63 6b  uisition of.lock
3030: 73 20 69 73 20 64 65 66 65 72 72 65 64 20 75 6e  s is deferred un
3040: 74 69 6c 20 74 68 65 79 20 61 72 65 20 6e 65 65  til they are nee
3050: 64 65 64 2c 20 69 74 20 69 73 20 70 6f 73 73 69  ded, it is possi
3060: 62 6c 65 20 74 68 61 74 20 61 6e 6f 74 68 65 72  ble that another
3070: 0a 74 68 72 65 61 64 20 6f 72 20 70 72 6f 63 65  .thread or proce
3080: 73 73 20 63 6f 75 6c 64 20 63 72 65 61 74 65 20  ss could create 
3090: 61 20 73 65 70 61 72 61 74 65 20 74 72 61 6e 73  a separate trans
30a0: 61 63 74 69 6f 6e 20 61 6e 64 20 77 72 69 74 65  action and write
30b0: 20 74 6f 0a 74 68 65 20 64 61 74 61 62 61 73 65   to.the database
30c0: 20 61 66 74 65 72 20 74 68 65 20 42 45 47 49 4e   after the BEGIN
30d0: 20 6f 6e 20 74 68 65 20 63 75 72 72 65 6e 74 20   on the current 
30e0: 74 68 72 65 61 64 20 68 61 73 20 65 78 65 63 75  thread has execu
30f0: 74 65 64 2e 0a 5e 49 66 20 74 68 65 20 74 72 61  ted..^If the tra
3100: 6e 73 61 63 74 69 6f 6e 20 69 73 20 69 6d 6d 65  nsaction is imme
3110: 64 69 61 74 65 2c 20 74 68 65 6e 20 5b 52 45 53  diate, then [RES
3120: 45 52 56 45 44 5d 20 6c 6f 63 6b 73 0a 61 72 65  ERVED] locks.are
3130: 20 61 63 71 75 69 72 65 64 20 6f 6e 20 61 6c 6c   acquired on all
3140: 20 64 61 74 61 62 61 73 65 73 20 61 73 20 73 6f   databases as so
3150: 6f 6e 20 61 73 20 74 68 65 20 42 45 47 49 4e 20  on as the BEGIN 
3160: 63 6f 6d 6d 61 6e 64 20 69 73 0a 65 78 65 63 75  command is.execu
3170: 74 65 64 2c 20 77 69 74 68 6f 75 74 20 77 61 69  ted, without wai
3180: 74 69 6e 67 20 66 6f 72 20 74 68 65 0a 64 61 74  ting for the.dat
3190: 61 62 61 73 65 20 74 6f 20 62 65 20 75 73 65 64  abase to be used
31a0: 2e 20 20 5e 41 66 74 65 72 20 61 20 42 45 47 49  .  ^After a BEGI
31b0: 4e 20 49 4d 4d 45 44 49 41 54 45 2c 20 0a 6e 6f  N IMMEDIATE, .no
31c0: 20 6f 74 68 65 72 20 5b 64 61 74 61 62 61 73 65   other [database
31d0: 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 77 69 6c   connection] wil
31e0: 6c 20 62 65 20 61 62 6c 65 20 74 6f 20 77 72 69  l be able to wri
31f0: 74 65 20 74 6f 20 74 68 65 20 64 61 74 61 62 61  te to the databa
3200: 73 65 20 6f 72 0a 64 6f 20 61 20 42 45 47 49 4e  se or.do a BEGIN
3210: 20 49 4d 4d 45 44 49 41 54 45 20 6f 72 20 42 45   IMMEDIATE or BE
3220: 47 49 4e 20 45 58 43 4c 55 53 49 56 45 2e 20 20  GIN EXCLUSIVE.  
3230: 5e 4f 74 68 65 72 20 70 72 6f 63 65 73 73 65 73  ^Other processes
3240: 20 63 61 6e 20 63 6f 6e 74 69 6e 75 65 0a 74 6f   can continue.to
3250: 20 72 65 61 64 20 66 72 6f 6d 20 74 68 65 20 64   read from the d
3260: 61 74 61 62 61 73 65 2c 20 68 6f 77 65 76 65 72  atabase, however
3270: 2e 20 20 5e 41 6e 20 65 78 63 6c 75 73 69 76 65  .  ^An exclusive
3280: 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 63 61 75   transaction cau
3290: 73 65 73 0a 5b 45 58 43 4c 55 53 49 56 45 5d 20  ses.[EXCLUSIVE] 
32a0: 6c 6f 63 6b 73 20 74 6f 20 62 65 20 61 63 71 75  locks to be acqu
32b0: 69 72 65 64 20 6f 6e 20 61 6c 6c 20 64 61 74 61  ired on all data
32c0: 62 61 73 65 73 2e 20 20 5e 41 66 74 65 72 20 61  bases.  ^After a
32d0: 20 42 45 47 49 4e 0a 45 58 43 4c 55 53 49 56 45   BEGIN.EXCLUSIVE
32e0: 2c 20 6e 6f 20 6f 74 68 65 72 20 5b 64 61 74 61  , no other [data
32f0: 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d  base connection]
3300: 20 65 78 63 65 70 74 20 66 6f 72 20 5b 72 65 61   except for [rea
3310: 64 5f 75 6e 63 6f 6d 6d 69 74 74 65 64 5d 0a 63  d_uncommitted].c
3320: 6f 6e 6e 65 63 74 69 6f 6e 73 20 77 69 6c 6c 20  onnections will 
3330: 62 65 20 61 62 6c 65 20 74 6f 20 72 65 61 64 20  be able to read 
3340: 74 68 65 20 64 61 74 61 62 61 73 65 20 61 6e 64  the database and
3350: 20 6e 6f 20 6f 74 68 65 72 20 63 6f 6e 6e 65 63   no other connec
3360: 74 69 6f 6e 20 77 69 74 68 6f 75 74 0a 65 78 63  tion without.exc
3370: 65 70 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20 61  eption will be a
3380: 62 6c 65 20 74 6f 20 77 72 69 74 65 20 74 68 65  ble to write the
3390: 20 64 61 74 61 62 61 73 65 20 75 6e 74 69 6c 20   database until 
33a0: 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  the transaction 
33b0: 69 73 0a 63 6f 6d 70 6c 65 74 65 2e 0a 3c 2f 70  is.complete..</p
33c0: 3e 0a 0a 3c 70 3e 0a 5e 28 41 6e 20 69 6d 70 6c  >..<p>.^(An impl
33d0: 69 63 69 74 20 74 72 61 6e 73 61 63 74 69 6f 6e  icit transaction
33e0: 20 28 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 20   (a transaction 
33f0: 74 68 61 74 20 69 73 20 73 74 61 72 74 65 64 20  that is started 
3400: 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2c 0a 6e  automatically,.n
3410: 6f 74 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e  ot a transaction
3420: 20 73 74 61 72 74 65 64 20 62 79 20 42 45 47 49   started by BEGI
3430: 4e 29 20 69 73 20 63 6f 6d 6d 69 74 74 65 64 20  N) is committed 
3440: 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 77 68  automatically wh
3450: 65 6e 0a 74 68 65 20 6c 61 73 74 20 61 63 74 69  en.the last acti
3460: 76 65 20 73 74 61 74 65 6d 65 6e 74 20 66 69 6e  ve statement fin
3470: 69 73 68 65 73 2e 20 20 41 20 73 74 61 74 65 6d  ishes.  A statem
3480: 65 6e 74 20 66 69 6e 69 73 68 65 73 20 77 68 65  ent finishes whe
3490: 6e 20 69 74 73 0a 70 72 65 70 61 72 65 64 20 73  n its.prepared s
34a0: 74 61 74 65 6d 65 6e 74 20 69 73 20 5b 73 71 6c  tatement is [sql
34b0: 69 74 65 33 5f 72 65 73 65 74 28 29 20 7c 20 72  ite3_reset() | r
34c0: 65 73 65 74 5d 20 6f 72 0a 5b 73 71 6c 69 74 65  eset] or.[sqlite
34d0: 33 5f 66 69 6e 61 6c 69 7a 65 28 29 20 7c 20 66  3_finalize() | f
34e0: 69 6e 61 6c 69 7a 65 64 5d 2e 20 20 41 6e 20 6f  inalized].  An o
34f0: 70 65 6e 20 5b 73 71 6c 69 74 65 33 5f 62 6c 6f  pen [sqlite3_blo
3500: 62 5d 20 75 73 65 64 20 66 6f 72 0a 69 6e 63 72  b] used for.incr
3510: 65 6d 65 6e 74 61 6c 20 42 4c 4f 42 20 49 2f 4f  emental BLOB I/O
3520: 20 63 6f 75 6e 74 73 20 61 73 20 61 6e 20 75 6e   counts as an un
3530: 66 69 6e 69 73 68 65 64 20 73 74 61 74 65 6d 65  finished stateme
3540: 6e 74 2e 20 20 54 68 65 20 5b 73 71 6c 69 74 65  nt.  The [sqlite
3550: 33 5f 62 6c 6f 62 5d 0a 66 69 6e 69 73 68 65 73  3_blob].finishes
3560: 20 77 68 65 6e 20 69 74 20 69 73 20 5b 73 71 6c   when it is [sql
3570: 69 74 65 33 5f 62 6c 6f 62 5f 63 6c 6f 73 65 28  ite3_blob_close(
3580: 29 20 7c 20 63 6c 6f 73 65 64 5d 2e 29 5e 0a 3c  ) | closed].)^.<
3590: 2f 70 3e 0a 0a 3c 70 3e 0a 5e 54 68 65 20 65 78  /p>..<p>.^The ex
35a0: 70 6c 69 63 69 74 20 43 4f 4d 4d 49 54 20 63 6f  plicit COMMIT co
35b0: 6d 6d 61 6e 64 20 72 75 6e 73 20 69 6d 6d 65 64  mmand runs immed
35c0: 69 61 74 65 6c 79 2c 20 65 76 65 6e 20 69 66 20  iately, even if 
35d0: 74 68 65 72 65 20 61 72 65 0a 70 65 6e 64 69 6e  there are.pendin
35e0: 67 20 5b 53 45 4c 45 43 54 5d 20 73 74 61 74 65  g [SELECT] state
35f0: 6d 65 6e 74 73 2e 20 20 5e 48 6f 77 65 76 65 72  ments.  ^However
3600: 2c 20 69 66 20 74 68 65 72 65 20 61 72 65 20 70  , if there are p
3610: 65 6e 64 69 6e 67 0a 77 72 69 74 65 20 6f 70 65  ending.write ope
3620: 72 61 74 69 6f 6e 73 2c 20 74 68 65 20 43 4f 4d  rations, the COM
3630: 4d 49 54 20 63 6f 6d 6d 61 6e 64 0a 77 69 6c 6c  MIT command.will
3640: 20 66 61 69 6c 20 77 69 74 68 20 61 20 65 72 72   fail with a err
3650: 6f 72 20 63 6f 64 65 20 5b 53 51 4c 49 54 45 5f  or code [SQLITE_
3660: 42 55 53 59 5d 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e  BUSY]..</p>..<p>
3670: 0a 5e 41 6e 20 61 74 74 65 6d 70 74 20 74 6f 20  .^An attempt to 
3680: 65 78 65 63 75 74 65 20 43 4f 4d 4d 49 54 20 6d  execute COMMIT m
3690: 69 67 68 74 20 61 6c 73 6f 20 72 65 73 75 6c 74  ight also result
36a0: 20 69 6e 20 61 6e 20 5b 53 51 4c 49 54 45 5f 42   in an [SQLITE_B
36b0: 55 53 59 5d 20 72 65 74 75 72 6e 20 63 6f 64 65  USY] return code
36c0: 0a 69 66 20 61 6e 20 61 6e 6f 74 68 65 72 20 74  .if an another t
36d0: 68 72 65 61 64 20 6f 72 20 70 72 6f 63 65 73 73  hread or process
36e0: 20 68 61 73 20 61 20 5b 73 68 61 72 65 64 20 6c   has a [shared l
36f0: 6f 63 6b 5d 20 6f 6e 20 74 68 65 20 64 61 74 61  ock] on the data
3700: 62 61 73 65 0a 74 68 61 74 20 70 72 65 76 65 6e  base.that preven
3710: 74 65 64 20 74 68 65 20 64 61 74 61 62 61 73 65  ted the database
3720: 20 66 72 6f 6d 20 62 65 69 6e 67 20 75 70 64 61   from being upda
3730: 74 65 64 2e 20 20 5e 57 68 65 6e 20 43 4f 4d 4d  ted.  ^When COMM
3740: 49 54 20 66 61 69 6c 73 20 69 6e 20 74 68 69 73  IT fails in this
3750: 0a 77 61 79 2c 20 74 68 65 20 74 72 61 6e 73 61  .way, the transa
3760: 63 74 69 6f 6e 20 72 65 6d 61 69 6e 73 20 61 63  ction remains ac
3770: 74 69 76 65 20 61 6e 64 20 74 68 65 20 43 4f 4d  tive and the COM
3780: 4d 49 54 20 63 61 6e 20 62 65 20 72 65 74 72 69  MIT can be retri
3790: 65 64 20 6c 61 74 65 72 0a 61 66 74 65 72 20 74  ed later.after t
37a0: 68 65 20 72 65 61 64 65 72 20 68 61 73 20 68 61  he reader has ha
37b0: 64 20 61 20 63 68 61 6e 63 65 20 74 6f 20 63 6c  d a chance to cl
37c0: 65 61 72 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 5e  ear..</p>..<p>.^
37d0: 54 68 65 20 52 4f 4c 4c 42 41 43 4b 20 77 69 6c  The ROLLBACK wil
37e0: 6c 20 66 61 69 6c 20 77 69 74 68 20 61 6e 20 65  l fail with an e
37f0: 72 72 6f 72 20 63 6f 64 65 20 5b 53 51 4c 49 54  rror code [SQLIT
3800: 45 5f 42 55 53 59 5d 20 69 66 20 74 68 65 72 65  E_BUSY] if there
3810: 0a 61 72 65 20 61 6e 79 20 70 65 6e 64 69 6e 67  .are any pending
3820: 20 71 75 65 72 69 65 73 2e 20 20 5e 42 6f 74 68   queries.  ^Both
3830: 20 72 65 61 64 2d 6f 6e 6c 79 20 61 6e 64 20 72   read-only and r
3840: 65 61 64 2f 77 72 69 74 65 20 71 75 65 72 69 65  ead/write querie
3850: 73 20 77 69 6c 6c 0a 63 61 75 73 65 20 61 20 52  s will.cause a R
3860: 4f 4c 4c 42 41 43 4b 20 74 6f 20 66 61 69 6c 2e  OLLBACK to fail.
3870: 20 20 41 20 52 4f 4c 4c 42 41 43 4b 20 6d 75 73    A ROLLBACK mus
3880: 74 20 66 61 69 6c 20 69 66 20 74 68 65 72 65 20  t fail if there 
3890: 61 72 65 20 70 65 6e 64 69 6e 67 0a 72 65 61 64  are pending.read
38a0: 20 6f 70 65 72 61 74 69 6f 6e 73 20 28 75 6e 6c   operations (unl
38b0: 69 6b 65 20 43 4f 4d 4d 49 54 20 77 68 69 63 68  ike COMMIT which
38c0: 20 63 61 6e 20 73 75 63 63 65 65 64 29 20 62 65   can succeed) be
38d0: 63 61 75 73 65 20 62 61 64 20 74 68 69 6e 67 73  cause bad things
38e0: 0a 77 69 6c 6c 20 68 61 70 70 65 6e 20 69 66 20  .will happen if 
38f0: 74 68 65 20 69 6e 2d 6d 65 6d 6f 72 79 20 69 6d  the in-memory im
3900: 61 67 65 20 6f 66 20 74 68 65 20 64 61 74 61 62  age of the datab
3910: 61 73 65 20 69 73 20 63 68 61 6e 67 65 64 20 6f  ase is changed o
3920: 75 74 20 66 72 6f 6d 20 75 6e 64 65 72 0a 61 6e  ut from under.an
3930: 20 61 63 74 69 76 65 20 71 75 65 72 79 2e 0a 3c   active query..<
3940: 2f 70 3e 0a 0a 3c 70 3e 0a 49 66 20 5b 50 52 41  /p>..<p>.If [PRA
3950: 47 4d 41 20 6a 6f 75 72 6e 61 6c 5f 6d 6f 64 65  GMA journal_mode
3960: 5d 20 69 73 20 73 65 74 20 74 6f 20 4f 46 46 20  ] is set to OFF 
3970: 28 74 68 75 73 20 64 69 73 61 62 6c 69 6e 67 20  (thus disabling 
3980: 74 68 65 20 72 6f 6c 6c 62 61 63 6b 20 6a 6f 75  the rollback jou
3990: 72 6e 61 6c 0a 66 69 6c 65 29 20 74 68 65 6e 20  rnal.file) then 
39a0: 74 68 65 20 62 65 68 61 76 69 6f 72 20 6f 66 20  the behavior of 
39b0: 74 68 65 20 52 4f 4c 4c 42 41 43 4b 20 63 6f 6d  the ROLLBACK com
39c0: 6d 61 6e 64 20 69 73 20 75 6e 64 65 66 69 6e 65  mand is undefine
39d0: 64 2e 0a 3c 2f 70 3e 0a 0a 3c 68 33 3e 52 65 73  d..</p>..<h3>Res
39e0: 70 6f 6e 73 65 20 54 6f 20 45 72 72 6f 72 73 20  ponse To Errors 
39f0: 57 69 74 68 69 6e 20 41 20 54 72 61 6e 73 61 63  Within A Transac
3a00: 74 69 6f 6e 3c 2f 68 33 3e 0a 0a 3c 70 3e 20 5e  tion</h3>..<p> ^
3a10: 28 49 66 20 63 65 72 74 61 69 6e 20 6b 69 6e 64  (If certain kind
3a20: 73 20 6f 66 20 65 72 72 6f 72 73 20 6f 63 63 75  s of errors occu
3a30: 72 20 77 69 74 68 69 6e 20 61 20 74 72 61 6e 73  r within a trans
3a40: 61 63 74 69 6f 6e 2c 20 74 68 65 0a 74 72 61 6e  action, the.tran
3a50: 73 61 63 74 69 6f 6e 20 6d 61 79 20 6f 72 20 6d  saction may or m
3a60: 61 79 20 6e 6f 74 20 62 65 20 72 6f 6c 6c 65 64  ay not be rolled
3a70: 20 62 61 63 6b 20 61 75 74 6f 6d 61 74 69 63 61   back automatica
3a80: 6c 6c 79 2e 20 20 54 68 65 0a 65 72 72 6f 72 73  lly.  The.errors
3a90: 20 74 68 61 74 20 63 61 75 73 65 20 74 68 65 20   that cause the 
3aa0: 62 65 68 61 76 69 6f 72 20 69 6e 63 6c 75 64 65  behavior include
3ab0: 3a 3c 2f 70 3e 0a 0a 3c 75 6c 3e 0a 3c 6c 69 3e  :</p>..<ul>.<li>
3ac0: 20 5b 53 51 4c 49 54 45 5f 46 55 4c 4c 5d 3a 20   [SQLITE_FULL]: 
3ad0: 64 61 74 61 62 61 73 65 20 6f 72 20 64 69 73 6b  database or disk
3ae0: 20 66 75 6c 6c 0a 3c 6c 69 3e 20 5b 53 51 4c 49   full.<li> [SQLI
3af0: 54 45 5f 49 4f 45 52 52 5d 3a 20 64 69 73 6b 20  TE_IOERR]: disk 
3b00: 49 2f 4f 20 65 72 72 6f 72 0a 3c 6c 69 3e 20 5b  I/O error.<li> [
3b10: 53 51 4c 49 54 45 5f 42 55 53 59 5d 3a 20 64 61  SQLITE_BUSY]: da
3b20: 74 61 62 61 73 65 20 69 6e 20 75 73 65 20 62 79  tabase in use by
3b30: 20 61 6e 6f 74 68 65 72 20 70 72 6f 63 65 73 73   another process
3b40: 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4e 4f  .<li> [SQLITE_NO
3b50: 4d 45 4d 5d 3a 20 6f 75 74 20 6f 72 20 6d 65 6d  MEM]: out or mem
3b60: 6f 72 79 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45  ory.<li> [SQLITE
3b70: 5f 49 4e 54 45 52 52 55 50 54 5d 3a 20 70 72 6f  _INTERRUPT]: pro
3b80: 63 65 73 73 69 6e 67 20 5b 73 71 6c 69 74 65 33  cessing [sqlite3
3b90: 5f 69 6e 74 65 72 72 75 70 74 7c 69 6e 74 65 72  _interrupt|inter
3ba0: 72 75 70 74 65 64 5d 0a 20 20 20 20 20 62 79 20  rupted].     by 
3bb0: 61 70 70 6c 69 63 61 74 69 6f 6e 20 72 65 71 75  application requ
3bc0: 65 73 74 0a 3c 2f 75 6c 3e 29 5e 0a 0a 3c 70 3e  est.</ul>)^..<p>
3bd0: 0a 5e 46 6f 72 20 61 6c 6c 20 6f 66 20 74 68 65  .^For all of the
3be0: 73 65 20 65 72 72 6f 72 73 2c 20 53 51 4c 69 74  se errors, SQLit
3bf0: 65 20 61 74 74 65 6d 70 74 73 20 74 6f 20 75 6e  e attempts to un
3c00: 64 6f 20 6a 75 73 74 20 74 68 65 20 6f 6e 65 20  do just the one 
3c10: 73 74 61 74 65 6d 65 6e 74 0a 69 74 20 77 61 73  statement.it was
3c20: 20 77 6f 72 6b 69 6e 67 20 6f 6e 20 61 6e 64 20   working on and 
3c30: 6c 65 61 76 65 20 63 68 61 6e 67 65 73 20 66 72  leave changes fr
3c40: 6f 6d 20 70 72 69 6f 72 20 73 74 61 74 65 6d 65  om prior stateme
3c50: 6e 74 73 20 77 69 74 68 69 6e 20 74 68 65 0a 73  nts within the.s
3c60: 61 6d 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  ame transaction 
3c70: 69 6e 74 61 63 74 20 61 6e 64 20 63 6f 6e 74 69  intact and conti
3c80: 6e 75 65 20 77 69 74 68 20 74 68 65 20 74 72 61  nue with the tra
3c90: 6e 73 61 63 74 69 6f 6e 2e 20 20 5e 48 6f 77 65  nsaction.  ^Howe
3ca0: 76 65 72 2c 20 0a 64 65 70 65 6e 64 69 6e 67 20  ver, .depending 
3cb0: 6f 6e 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74  on the statement
3cc0: 20 62 65 69 6e 67 20 65 76 61 6c 75 61 74 65 64   being evaluated
3cd0: 20 61 6e 64 20 74 68 65 20 70 6f 69 6e 74 20 61   and the point a
3ce0: 74 20 77 68 69 63 68 20 74 68 65 0a 65 72 72 6f  t which the.erro
3cf0: 72 20 6f 63 63 75 72 73 2c 20 69 74 20 6d 69 67  r occurs, it mig
3d00: 68 74 20 62 65 20 6e 65 63 65 73 73 61 72 79 20  ht be necessary 
3d10: 66 6f 72 20 53 51 4c 69 74 65 20 74 6f 20 72 6f  for SQLite to ro
3d20: 6c 6c 62 61 63 6b 20 61 6e 64 0a 63 61 6e 63 65  llback and.cance
3d30: 6c 20 74 68 65 20 65 6e 74 69 72 65 20 74 72 61  l the entire tra
3d40: 6e 73 61 63 74 69 6f 6e 2e 20 20 5e 41 6e 20 61  nsaction.  ^An a
3d50: 70 70 6c 69 63 61 74 69 6f 6e 20 63 61 6e 20 74  pplication can t
3d60: 65 6c 6c 20 77 68 69 63 68 0a 63 6f 75 72 73 65  ell which.course
3d70: 20 6f 66 20 61 63 74 69 6f 6e 20 53 51 4c 69 74   of action SQLit
3d80: 65 20 74 6f 6f 6b 20 62 79 20 75 73 69 6e 67 20  e took by using 
3d90: 74 68 65 0a 5b 73 71 6c 69 74 65 33 5f 67 65 74  the.[sqlite3_get
3da0: 5f 61 75 74 6f 63 6f 6d 6d 69 74 28 29 5d 20 43  _autocommit()] C
3db0: 2d 6c 61 6e 67 75 61 67 65 20 69 6e 74 65 72 66  -language interf
3dc0: 61 63 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 74 20  ace.</p>..<p>It 
3dd0: 69 73 20 72 65 63 6f 6d 6d 65 6e 64 65 64 20 74  is recommended t
3de0: 68 61 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 73  hat applications
3df0: 20 72 65 73 70 6f 6e 64 20 74 6f 20 74 68 65 20   respond to the 
3e00: 65 72 72 6f 72 73 0a 6c 69 73 74 65 64 20 61 62  errors.listed ab
3e10: 6f 76 65 20 62 79 20 65 78 70 6c 69 63 69 74 6c  ove by explicitl
3e20: 79 20 69 73 73 75 69 6e 67 20 61 20 52 4f 4c 4c  y issuing a ROLL
3e30: 42 41 43 4b 20 63 6f 6d 6d 61 6e 64 2e 20 20 5e  BACK command.  ^
3e40: 49 66 20 74 68 65 20 0a 74 72 61 6e 73 61 63 74  If the .transact
3e50: 69 6f 6e 20 68 61 73 20 61 6c 72 65 61 64 79 20  ion has already 
3e60: 62 65 65 6e 20 72 6f 6c 6c 65 64 20 62 61 63 6b  been rolled back
3e70: 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 0a 62   automatically.b
3e80: 79 20 74 68 65 20 65 72 72 6f 72 20 72 65 73 70  y the error resp
3e90: 6f 6e 73 65 2c 20 74 68 65 6e 20 74 68 65 20 52  onse, then the R
3ea0: 4f 4c 4c 42 41 43 4b 20 63 6f 6d 6d 61 6e 64 20  OLLBACK command 
3eb0: 77 69 6c 6c 20 66 61 69 6c 20 77 69 74 68 20 61  will fail with a
3ec0: 6e 0a 65 72 72 6f 72 2c 20 62 75 74 20 6e 6f 20  n.error, but no 
3ed0: 68 61 72 6d 20 69 73 20 63 61 75 73 65 64 20 62  harm is caused b
3ee0: 79 20 74 68 69 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e  y this.</p>..<p>
3ef0: 46 75 74 75 72 65 20 76 65 72 73 69 6f 6e 73 20  Future versions 
3f00: 6f 66 20 53 51 4c 69 74 65 20 6d 61 79 20 65 78  of SQLite may ex
3f10: 74 65 6e 64 20 74 68 65 20 6c 69 73 74 20 6f 66  tend the list of
3f20: 20 65 72 72 6f 72 73 20 77 68 69 63 68 0a 6d 69   errors which.mi
3f30: 67 68 74 20 63 61 75 73 65 20 61 75 74 6f 6d 61  ght cause automa
3f40: 74 69 63 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  tic transaction 
3f50: 72 6f 6c 6c 62 61 63 6b 2e 20 20 46 75 74 75 72  rollback.  Futur
3f60: 65 20 76 65 72 73 69 6f 6e 73 20 6f 66 0a 53 51  e versions of.SQ
3f70: 4c 69 74 65 20 6d 69 67 68 74 20 63 68 61 6e 67  Lite might chang
3f80: 65 20 74 68 65 20 65 72 72 6f 72 20 72 65 73 70  e the error resp
3f90: 6f 6e 73 65 2e 20 20 49 6e 20 70 61 72 74 69 63  onse.  In partic
3fa0: 75 6c 61 72 2c 20 77 65 20 6d 61 79 0a 63 68 6f  ular, we may.cho
3fb0: 6f 73 65 20 74 6f 20 73 69 6d 70 6c 69 66 79 20  ose to simplify 
3fc0: 74 68 65 20 69 6e 74 65 72 66 61 63 65 20 69 6e  the interface in
3fd0: 20 66 75 74 75 72 65 20 76 65 72 73 69 6f 6e 73   future versions
3fe0: 20 6f 66 20 53 51 4c 69 74 65 20 62 79 0a 63 61   of SQLite by.ca
3ff0: 75 73 69 6e 67 20 74 68 65 20 65 72 72 6f 72 73  using the errors
4000: 20 61 62 6f 76 65 20 74 6f 20 66 6f 72 63 65 20   above to force 
4010: 61 6e 20 75 6e 63 6f 6e 64 69 74 69 6f 6e 61 6c  an unconditional
4020: 20 72 6f 6c 6c 62 61 63 6b 2e 3c 2f 70 3e 0a 0a   rollback.</p>..
4030: 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23  <tcl>.##########
4040: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4050: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4060: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4070: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4080: 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b 53  #####.Section {S
4090: 41 56 45 50 4f 49 4e 54 7d 20 73 61 76 65 70 6f  AVEPOINT} savepo
40a0: 69 6e 74 20 7b 53 41 56 45 50 4f 49 4e 54 20 52  int {SAVEPOINT R
40b0: 45 4c 45 41 53 45 7d 0a 0a 42 75 62 62 6c 65 44  ELEASE}..BubbleD
40c0: 69 61 67 72 61 6d 20 73 61 76 65 70 6f 69 6e 74  iagram savepoint
40d0: 2d 73 74 6d 74 0a 42 75 62 62 6c 65 44 69 61 67  -stmt.BubbleDiag
40e0: 72 61 6d 20 72 65 6c 65 61 73 65 2d 73 74 6d 74  ram release-stmt
40f0: 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 72  .BubbleDiagram r
4100: 6f 6c 6c 62 61 63 6b 2d 73 74 6d 74 0a 3c 2f 74  ollback-stmt.</t
4110: 63 6c 3e 0a 0a 3c 70 3e 20 5e 53 41 56 45 50 4f  cl>..<p> ^SAVEPO
4120: 49 4e 54 73 20 61 72 65 20 61 20 6d 65 74 68 6f  INTs are a metho
4130: 64 20 6f 66 20 63 72 65 61 74 69 6e 67 20 74 72  d of creating tr
4140: 61 6e 73 61 63 74 69 6f 6e 73 2c 20 73 69 6d 69  ansactions, simi
4150: 6c 61 72 20 74 6f 0a 5b 42 45 47 49 4e 5d 20 61  lar to.[BEGIN] a
4160: 6e 64 20 5b 43 4f 4d 4d 49 54 5d 2c 20 65 78 63  nd [COMMIT], exc
4170: 65 70 74 20 74 68 61 74 20 74 68 65 20 53 41 56  ept that the SAV
4180: 45 50 4f 49 4e 54 20 61 6e 64 20 52 45 4c 45 41  EPOINT and RELEA
4190: 53 45 20 63 6f 6d 6d 61 6e 64 73 0a 61 72 65 20  SE commands.are 
41a0: 6e 61 6d 65 64 20 61 6e 64 20 6d 61 79 20 62 65  named and may be
41b0: 20 6e 65 73 74 65 64 2e 3c 2f 70 3e 0a 0a 3c 70   nested.</p>..<p
41c0: 3e 20 5e 54 68 65 20 53 41 56 45 50 4f 49 4e 54  > ^The SAVEPOINT
41d0: 20 63 6f 6d 6d 61 6e 64 20 73 74 61 72 74 73 20   command starts 
41e0: 61 20 6e 65 77 20 74 72 61 6e 73 61 63 74 69 6f  a new transactio
41f0: 6e 20 77 69 74 68 20 61 20 6e 61 6d 65 2e 0a 5e  n with a name..^
4200: 54 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  The transaction 
4210: 6e 61 6d 65 73 20 6e 65 65 64 20 6e 6f 74 20 62  names need not b
4220: 65 20 75 6e 69 71 75 65 2e 0a 5e 28 41 20 53 41  e unique..^(A SA
4230: 56 45 50 4f 49 4e 54 20 63 61 6e 20 62 65 20 73  VEPOINT can be s
4240: 74 61 72 74 65 64 20 65 69 74 68 65 72 20 77 69  tarted either wi
4250: 74 68 69 6e 20 6f 72 20 6f 75 74 73 69 64 65 20  thin or outside 
4260: 6f 66 0a 61 20 5b 42 45 47 49 4e 5d 2e 2e 2e 5b  of.a [BEGIN]...[
4270: 43 4f 4d 4d 49 54 5d 2e 29 5e 20 20 5e 28 57 68  COMMIT].)^  ^(Wh
4280: 65 6e 20 61 20 53 41 56 45 50 4f 49 4e 54 20 69  en a SAVEPOINT i
4290: 73 20 74 68 65 20 6f 75 74 65 72 2d 6d 6f 73 74  s the outer-most
42a0: 20 73 61 76 65 70 6f 69 6e 74 0a 61 6e 64 20 69   savepoint.and i
42b0: 74 20 69 73 20 6e 6f 74 20 77 69 74 68 69 6e 20  t is not within 
42c0: 61 20 5b 42 45 47 49 4e 5d 2e 2e 2e 5b 43 4f 4d  a [BEGIN]...[COM
42d0: 4d 49 54 5d 20 74 68 65 6e 20 74 68 65 20 62 65  MIT] then the be
42e0: 68 61 76 69 6f 72 20 69 73 20 74 68 65 0a 73 61  havior is the.sa
42f0: 6d 65 20 61 73 20 42 45 47 49 4e 20 44 45 46 45  me as BEGIN DEFE
4300: 52 52 45 44 20 54 52 41 4e 53 41 43 54 49 4f 4e  RRED TRANSACTION
4310: 2e 29 5e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65  .)^</p>..<p>^The
4320: 20 52 4f 4c 4c 42 41 43 4b 20 54 4f 20 63 6f 6d   ROLLBACK TO com
4330: 6d 61 6e 64 20 72 65 76 65 72 74 73 20 74 68 65  mand reverts the
4340: 20 73 74 61 74 65 20 6f 66 20 74 68 65 20 64 61   state of the da
4350: 74 61 62 61 73 65 20 62 61 63 6b 20 74 6f 20 77  tabase back to w
4360: 68 61 74 0a 69 74 20 77 61 73 20 6a 75 73 74 20  hat.it was just 
4370: 61 66 74 65 72 20 74 68 65 20 63 6f 72 72 65 73  after the corres
4380: 70 6f 6e 64 69 6e 67 20 53 41 56 45 50 4f 49 4e  ponding SAVEPOIN
4390: 54 2e 20 20 5e 4e 6f 74 65 20 74 68 61 74 20 75  T.  ^Note that u
43a0: 6e 6c 69 6b 65 20 74 68 61 74 0a 70 6c 61 69 6e  nlike that.plain
43b0: 20 5b 52 4f 4c 4c 42 41 43 4b 5d 20 63 6f 6d 6d   [ROLLBACK] comm
43c0: 61 6e 64 20 28 77 69 74 68 6f 75 74 20 74 68 65  and (without the
43d0: 20 54 4f 20 6b 65 79 77 6f 72 64 29 20 74 68 65   TO keyword) the
43e0: 20 52 4f 4c 4c 42 41 43 4b 20 54 4f 20 63 6f 6d   ROLLBACK TO com
43f0: 6d 61 6e 64 0a 64 6f 65 73 20 6e 6f 74 20 63 61  mand.does not ca
4400: 6e 63 65 6c 20 74 68 65 20 74 72 61 6e 73 61 63  ncel the transac
4410: 74 69 6f 6e 2e 20 20 5e 49 6e 73 74 65 61 64 20  tion.  ^Instead 
4420: 6f 66 20 63 61 6e 63 65 6c 6c 69 6e 67 20 74 68  of cancelling th
4430: 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 2c 0a 74  e transaction,.t
4440: 68 65 20 52 4f 4c 4c 42 41 43 4b 20 54 4f 20 63  he ROLLBACK TO c
4450: 6f 6d 6d 61 6e 64 20 72 65 73 74 61 72 74 73 20  ommand restarts 
4460: 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  the transaction 
4470: 61 67 61 69 6e 20 61 74 20 74 68 65 20 62 65 67  again at the beg
4480: 69 6e 6e 69 6e 67 2e 0a 5e 41 6c 6c 20 69 6e 74  inning..^All int
4490: 65 72 76 65 6e 69 6e 67 20 53 41 56 45 50 4f 49  ervening SAVEPOI
44a0: 4e 54 73 20 61 72 65 20 63 61 6e 63 65 6c 6c 65  NTs are cancelle
44b0: 64 2c 20 68 6f 77 65 76 65 72 2e 3c 2f 70 3e 0a  d, however.</p>.
44c0: 0a 3c 70 3e 5e 54 68 65 20 52 45 4c 45 41 53 45  .<p>^The RELEASE
44d0: 20 63 6f 6d 6d 61 6e 64 20 69 73 20 6c 69 6b 65   command is like
44e0: 20 61 20 5b 43 4f 4d 4d 49 54 5d 20 66 6f 72 20   a [COMMIT] for 
44f0: 61 20 53 41 56 45 50 4f 49 4e 54 2e 0a 5e 54 68  a SAVEPOINT..^Th
4500: 65 20 52 45 4c 45 41 53 45 20 63 6f 6d 6d 61 6e  e RELEASE comman
4510: 64 20 63 61 75 73 65 73 20 61 6c 6c 20 73 61 76  d causes all sav
4520: 65 70 6f 69 6e 74 73 20 62 61 63 6b 20 74 6f 20  epoints back to 
4530: 61 6e 64 20 69 6e 63 6c 75 64 69 6e 67 20 74 68  and including th
4540: 65 20 0a 6d 6f 73 74 20 72 65 63 65 6e 74 20 73  e .most recent s
4550: 61 76 65 70 6f 69 6e 74 20 77 69 74 68 20 61 20  avepoint with a 
4560: 6d 61 74 63 68 69 6e 67 20 6e 61 6d 65 20 74 6f  matching name to
4570: 20 62 65 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d   be removed from
4580: 20 74 68 65 20 0a 74 72 61 6e 73 61 63 74 69 6f   the .transactio
4590: 6e 20 73 74 61 63 6b 2e 20 20 5e 54 68 65 20 52  n stack.  ^The R
45a0: 45 4c 45 41 53 45 20 6f 66 20 61 6e 20 69 6e 6e  ELEASE of an inn
45b0: 65 72 20 74 72 61 6e 73 61 63 74 69 6f 6e 0a 64  er transaction.d
45c0: 6f 65 73 20 6e 6f 74 20 63 61 75 73 65 20 61 6e  oes not cause an
45d0: 79 20 63 68 61 6e 67 65 73 20 74 6f 20 62 65 20  y changes to be 
45e0: 77 72 69 74 74 65 6e 20 74 6f 20 74 68 65 20 64  written to the d
45f0: 61 74 61 62 61 73 65 20 66 69 6c 65 3b 20 69 74  atabase file; it
4600: 20 6d 65 72 65 6c 79 0a 72 65 6d 6f 76 65 73 20   merely.removes 
4610: 73 61 76 65 70 6f 69 6e 74 73 20 66 72 6f 6d 20  savepoints from 
4620: 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  the transaction 
4630: 73 74 61 63 6b 20 73 75 63 68 20 74 68 61 74 20  stack such that 
4640: 69 74 20 69 73 0a 6e 6f 20 6c 6f 6e 67 65 72 20  it is.no longer 
4650: 70 6f 73 73 69 62 6c 65 20 74 6f 20 52 4f 4c 4c  possible to ROLL
4660: 42 41 43 4b 20 54 4f 20 74 68 6f 73 65 20 73 61  BACK TO those sa
4670: 76 65 70 6f 69 6e 74 73 2e 0a 5e 49 66 20 61 20  vepoints..^If a 
4680: 52 45 4c 45 41 53 45 20 63 6f 6d 6d 61 6e 64 20  RELEASE command 
4690: 72 65 6c 65 61 73 65 73 20 74 68 65 20 6f 75 74  releases the out
46a0: 65 72 6d 6f 73 74 20 73 61 76 65 70 6f 69 6e 74  ermost savepoint
46b0: 2c 20 73 6f 0a 74 68 61 74 20 74 68 65 20 74 72  , so.that the tr
46c0: 61 6e 73 61 63 74 69 6f 6e 20 73 74 61 63 6b 20  ansaction stack 
46d0: 62 65 63 6f 6d 65 73 20 65 6d 70 74 79 2c 20 74  becomes empty, t
46e0: 68 65 6e 20 52 45 4c 45 41 53 45 20 69 73 20 74  hen RELEASE is t
46f0: 68 65 20 73 61 6d 65 0a 61 73 20 5b 43 4f 4d 4d  he same.as [COMM
4700: 49 54 5d 2e 0a 5e 54 68 65 20 5b 43 4f 4d 4d 49  IT]..^The [COMMI
4710: 54 5d 20 63 6f 6d 6d 61 6e 64 20 6d 61 79 20 62  T] command may b
4720: 65 20 75 73 65 64 20 74 6f 20 72 65 6c 65 61 73  e used to releas
4730: 65 20 61 6c 6c 20 73 61 76 65 70 6f 69 6e 74 73  e all savepoints
4740: 20 61 6e 64 0a 63 6f 6d 6d 69 74 20 74 68 65 20   and.commit the 
4750: 74 72 61 6e 73 61 63 74 69 6f 6e 20 65 76 65 6e  transaction even
4760: 20 69 66 20 74 68 65 20 74 72 61 6e 73 61 63 74   if the transact
4770: 69 6f 6e 20 77 61 73 20 6f 72 69 67 69 6e 61 6c  ion was original
4780: 6c 79 20 73 74 61 72 74 65 64 0a 62 79 20 61 20  ly started.by a 
4790: 53 41 56 45 50 4f 49 4e 54 20 63 6f 6d 6d 61 6e  SAVEPOINT comman
47a0: 64 20 69 6e 73 74 65 61 64 20 6f 66 20 61 20 5b  d instead of a [
47b0: 42 45 47 49 4e 5d 20 63 6f 6d 6d 61 6e 64 2e 3c  BEGIN] command.<
47c0: 2f 70 3e 0a 0a 3c 70 3e 5e 49 66 20 74 68 65 20  /p>..<p>^If the 
47d0: 73 61 76 65 70 6f 69 6e 74 2d 6e 61 6d 65 20 69  savepoint-name i
47e0: 6e 20 61 20 52 45 4c 45 41 53 45 20 63 6f 6d 6d  n a RELEASE comm
47f0: 61 6e 64 20 64 6f 65 73 20 6e 6f 74 20 6d 61 74  and does not mat
4800: 63 68 20 61 6e 79 0a 73 61 76 65 70 6f 69 6e 74  ch any.savepoint
4810: 20 63 75 72 72 65 6e 74 6c 79 20 69 6e 20 74 68   currently in th
4820: 65 20 74 72 61 6e 61 63 74 69 6f 6e 20 73 74 61  e tranaction sta
4830: 63 6b 2c 20 74 68 65 6e 20 6e 6f 20 73 61 76 65  ck, then no save
4840: 70 6f 69 6e 74 73 20 61 72 65 0a 72 65 6c 65 61  points are.relea
4850: 73 65 64 2c 20 74 68 65 20 64 61 74 61 62 61 73  sed, the databas
4860: 65 20 69 73 20 75 6e 63 68 61 6e 67 65 64 2c 20  e is unchanged, 
4870: 61 6e 64 20 74 68 65 20 52 45 4c 45 41 53 45 20  and the RELEASE 
4880: 63 6f 6d 6d 61 6e 64 20 72 65 74 75 72 6e 73 0a  command returns.
4890: 61 6e 20 65 72 72 6f 72 2e 3c 2f 70 3e 0a 0a 3c  an error.</p>..<
48a0: 70 3e 5e 4e 6f 74 65 20 74 68 61 74 20 61 6e 20  p>^Note that an 
48b0: 69 6e 6e 65 72 20 74 72 61 6e 73 61 63 74 69 6f  inner transactio
48c0: 6e 20 6d 69 67 68 74 20 63 6f 6d 6d 69 74 20 28  n might commit (
48d0: 75 73 69 6e 67 20 74 68 65 20 52 45 4c 45 41 53  using the RELEAS
48e0: 45 20 63 6f 6d 6d 61 6e 64 29 0a 62 75 74 20 74  E command).but t
48f0: 68 65 6e 20 6c 61 74 65 72 20 68 61 76 65 20 69  hen later have i
4900: 74 73 20 77 6f 72 6b 20 75 6e 64 6f 6e 65 20 62  ts work undone b
4910: 79 20 61 20 52 4f 4c 4c 42 41 43 4b 20 69 6e 20  y a ROLLBACK in 
4920: 61 6e 20 6f 75 74 65 72 20 74 72 61 6e 73 61 63  an outer transac
4930: 74 69 6f 6e 2e 0a 5e 41 20 70 6f 77 65 72 20 66  tion..^A power f
4940: 61 69 6c 75 72 65 20 6f 72 20 70 72 6f 67 72 61  ailure or progra
4950: 6d 20 63 72 61 73 68 20 6f 72 20 4f 53 20 63 72  m crash or OS cr
4960: 61 73 68 20 77 69 6c 6c 20 63 61 75 73 65 20 74  ash will cause t
4970: 68 65 20 6f 75 74 65 72 2d 6d 6f 73 74 0a 74 72  he outer-most.tr
4980: 61 6e 73 61 63 74 69 6f 6e 20 74 6f 20 72 6f 6c  ansaction to rol
4990: 6c 62 61 63 6b 2c 20 75 6e 64 6f 69 6e 67 20 61  lback, undoing a
49a0: 6c 6c 20 63 68 61 6e 67 65 73 20 74 68 61 74 20  ll changes that 
49b0: 68 61 76 65 20 6f 63 63 75 72 72 65 64 20 77 69  have occurred wi
49c0: 74 68 69 6e 0a 74 68 61 74 20 6f 75 74 65 72 20  thin.that outer 
49d0: 74 72 61 6e 73 61 63 74 69 6f 6e 2c 20 65 76 65  transaction, eve
49e0: 6e 20 63 68 61 6e 67 65 73 20 74 68 61 74 20 68  n changes that h
49f0: 61 76 65 20 73 75 70 70 6f 73 65 64 6c 79 20 62  ave supposedly b
4a00: 65 65 6e 20 22 63 6f 6d 6d 69 74 74 65 64 22 0a  een "committed".
4a10: 62 79 20 74 68 65 20 52 45 4c 45 41 53 45 20 63  by the RELEASE c
4a20: 6f 6d 6d 61 6e 64 2e 20 20 5e 43 6f 6e 74 65 6e  ommand.  ^Conten
4a30: 74 20 69 73 20 6e 6f 74 20 61 63 74 75 61 6c 6c  t is not actuall
4a40: 79 20 63 6f 6d 6d 69 74 74 65 64 20 6f 6e 20 74  y committed on t
4a50: 68 65 20 64 69 73 6b 20 0a 75 6e 74 69 6c 20 74  he disk .until t
4a60: 68 65 20 6f 75 74 65 72 6d 6f 73 74 20 74 72 61  he outermost tra
4a70: 6e 73 61 63 74 69 6f 6e 20 63 6f 6d 6d 69 74 73  nsaction commits
4a80: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 72 65 20  .</p>..<p>There 
4a90: 61 72 65 20 73 65 76 65 72 61 6c 20 77 61 79 73  are several ways
4aa0: 20 6f 66 20 74 68 69 6e 6b 69 6e 67 20 61 62 6f   of thinking abo
4ab0: 75 74 20 74 68 65 20 52 45 4c 45 41 53 45 20 63  ut the RELEASE c
4ac0: 6f 6d 6d 61 6e 64 3a 3c 2f 70 3e 0a 0a 3c 75 6c  ommand:</p>..<ul
4ad0: 3e 0a 3c 6c 69 3e 3c 70 3e 0a 53 6f 6d 65 20 70  >.<li><p>.Some p
4ae0: 65 6f 70 6c 65 20 76 69 65 77 20 52 45 4c 45 41  eople view RELEA
4af0: 53 45 20 61 73 20 74 68 65 20 65 71 75 69 76 61  SE as the equiva
4b00: 6c 65 6e 74 20 6f 66 20 43 4f 4d 4d 49 54 20 66  lent of COMMIT f
4b10: 6f 72 20 61 20 53 41 56 45 50 4f 49 4e 54 2e 0a  or a SAVEPOINT..
4b20: 54 68 69 73 20 69 73 20 61 6e 20 61 63 63 65 70  This is an accep
4b30: 74 61 62 6c 65 20 70 6f 69 6e 74 20 6f 66 20 76  table point of v
4b40: 69 65 77 20 61 73 20 6c 6f 6e 67 20 61 73 20 6f  iew as long as o
4b50: 6e 65 20 72 65 6d 65 6d 62 65 72 73 20 74 68 61  ne remembers tha
4b60: 74 20 74 68 65 0a 63 68 61 6e 67 65 73 20 63 6f  t the.changes co
4b70: 6d 6d 69 74 74 65 64 20 62 79 20 61 6e 20 69 6e  mmitted by an in
4b80: 6e 65 72 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  ner transaction 
4b90: 6d 69 67 68 74 20 6c 61 74 65 72 20 62 65 20 75  might later be u
4ba0: 6e 64 6f 6e 65 20 62 79 20 61 0a 72 6f 6c 6c 62  ndone by a.rollb
4bb0: 61 63 6b 20 69 6e 20 61 6e 20 6f 75 74 65 72 20  ack in an outer 
4bc0: 74 72 61 6e 73 61 63 74 69 6f 6e 2e 3c 2f 70 3e  transaction.</p>
4bd0: 3c 2f 6c 69 3e 0a 0a 3c 6c 69 3e 3c 70 3e 0a 41  </li>..<li><p>.A
4be0: 6e 6f 74 68 65 72 20 76 69 65 77 20 6f 66 20 52  nother view of R
4bf0: 45 4c 45 41 53 45 20 69 73 20 74 68 61 74 20 69  ELEASE is that i
4c00: 74 20 6d 65 72 67 65 73 20 61 20 6e 61 6d 65 64  t merges a named
4c10: 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 69 6e 74   transaction int
4c20: 6f 20 69 74 73 0a 70 61 72 65 6e 74 20 74 72 61  o its.parent tra
4c30: 6e 73 61 63 74 69 6f 6e 2c 20 73 6f 20 74 68 61  nsaction, so tha
4c40: 74 20 74 68 65 20 6e 61 6d 65 64 20 74 72 61 6e  t the named tran
4c50: 73 61 63 74 69 6f 6e 20 61 6e 64 20 69 74 73 20  saction and its 
4c60: 70 61 72 65 6e 74 20 62 65 63 6f 6d 65 0a 74 68  parent become.th
4c70: 65 20 73 61 6d 65 20 74 72 61 6e 73 61 63 74 69  e same transacti
4c80: 6f 6e 2e 20 20 41 66 74 65 72 20 52 45 4c 45 41  on.  After RELEA
4c90: 53 45 2c 20 74 68 65 20 6e 61 6d 65 64 20 74 72  SE, the named tr
4ca0: 61 6e 73 61 63 74 69 6f 6e 20 61 6e 64 20 69 74  ansaction and it
4cb0: 73 20 70 61 72 65 6e 74 0a 77 69 6c 6c 20 63 6f  s parent.will co
4cc0: 6d 6d 69 74 20 6f 72 20 72 6f 6c 6c 62 61 63 6b  mmit or rollback
4cd0: 20 74 6f 67 65 74 68 65 72 2c 20 77 68 61 74 65   together, whate
4ce0: 76 65 72 20 74 68 65 69 72 20 66 61 74 65 20 6d  ver their fate m
4cf0: 61 79 20 62 65 2e 0a 3c 2f 70 3e 3c 2f 6c 69 3e  ay be..</p></li>
4d00: 0a 0a 3c 6c 69 3e 3c 70 3e 0a 4f 6e 65 20 63 61  ..<li><p>.One ca
4d10: 6e 20 61 6c 73 6f 20 74 68 69 6e 6b 20 6f 66 20  n also think of 
4d20: 73 61 76 65 70 6f 69 6e 74 73 20 61 73 0a 22 6d  savepoints as."m
4d30: 61 72 6b 73 22 20 69 6e 20 74 68 65 20 74 72 61  arks" in the tra
4d40: 6e 73 61 63 74 69 6f 6e 20 74 69 6d 65 6c 69 6e  nsaction timelin
4d50: 65 2e 20 20 49 6e 20 74 68 69 73 20 76 69 65 77  e.  In this view
4d60: 2c 20 74 68 65 20 53 41 56 45 50 4f 49 4e 54 20  , the SAVEPOINT 
4d70: 63 6f 6d 6d 61 6e 64 0a 63 72 65 61 74 65 73 20  command.creates 
4d80: 61 20 6e 65 77 20 6d 61 72 6b 2c 20 74 68 65 20  a new mark, the 
4d90: 52 4f 4c 4c 42 41 43 4b 20 54 4f 20 63 6f 6d 6d  ROLLBACK TO comm
4da0: 61 6e 64 20 72 65 77 69 6e 64 73 20 74 68 65 20  and rewinds the 
4db0: 74 69 6d 65 6c 69 6e 65 20 62 61 63 6b 0a 74 6f  timeline back.to
4dc0: 20 61 20 70 6f 69 6e 74 20 6a 75 73 74 20 61 66   a point just af
4dd0: 74 65 72 20 74 68 65 20 6e 61 6d 65 64 20 6d 61  ter the named ma
4de0: 72 6b 2c 20 61 6e 64 20 74 68 65 20 52 45 4c 45  rk, and the RELE
4df0: 41 53 45 20 63 6f 6d 6d 61 6e 64 0a 65 72 61 73  ASE command.eras
4e00: 65 73 20 6d 61 72 6b 73 20 66 72 6f 6d 20 74 68  es marks from th
4e10: 65 20 74 69 6d 65 6c 69 6e 65 20 77 69 74 68 6f  e timeline witho
4e20: 75 74 20 61 63 74 75 61 6c 6c 79 20 6d 61 6b 69  ut actually maki
4e30: 6e 67 20 61 6e 79 0a 63 68 61 6e 67 65 73 20 74  ng any.changes t
4e40: 6f 20 74 68 65 20 64 61 74 61 62 61 73 65 2e 0a  o the database..
4e50: 3c 2f 70 3e 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e 0a  </p></li>.</ul>.
4e60: 0a 0a 0a 3c 68 33 3e 54 72 61 6e 73 61 63 74 69  ...<h3>Transacti
4e70: 6f 6e 20 4e 65 73 74 69 6e 67 20 52 75 6c 65 73  on Nesting Rules
4e80: 3c 2f 68 33 3e 0a 0a 3c 70 3e 5e 54 68 65 20 6c  </h3>..<p>^The l
4e90: 61 73 74 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  ast transaction 
4ea0: 73 74 61 72 74 65 64 20 77 69 6c 6c 20 62 65 20  started will be 
4eb0: 74 68 65 20 66 69 72 73 74 0a 74 72 61 6e 73 61  the first.transa
4ec0: 63 74 69 6f 6e 20 63 6f 6d 6d 69 74 74 65 64 20  ction committed 
4ed0: 6f 72 20 72 6f 6c 6c 65 64 20 62 61 63 6b 2e 3c  or rolled back.<
4ee0: 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20 5b 42 45  /p>..<p>^The [BE
4ef0: 47 49 4e 5d 20 63 6f 6d 6d 61 6e 64 20 6f 6e 6c  GIN] command onl
4f00: 79 20 77 6f 72 6b 73 20 69 66 20 74 68 65 20 74  y works if the t
4f10: 72 61 6e 73 61 63 74 69 6f 6e 20 73 74 61 63 6b  ransaction stack
4f20: 20 69 73 20 65 6d 70 74 79 2c 20 6f 72 0a 69 6e   is empty, or.in
4f30: 20 6f 74 68 65 72 20 77 6f 72 64 73 20 69 66 20   other words if 
4f40: 74 68 65 72 65 20 61 72 65 20 6e 6f 20 70 65 6e  there are no pen
4f50: 64 69 6e 67 20 74 72 61 6e 73 61 63 74 69 6f 6e  ding transaction
4f60: 73 2e 20 20 5e 49 66 20 74 68 65 20 74 72 61 6e  s.  ^If the tran
4f70: 73 61 63 74 69 6f 6e 0a 73 74 61 63 6b 20 69 73  saction.stack is
4f80: 20 6e 6f 74 20 65 6d 70 74 79 20 77 68 65 6e 20   not empty when 
4f90: 74 68 65 20 5b 42 45 47 49 4e 5d 20 63 6f 6d 6d  the [BEGIN] comm
4fa0: 61 6e 64 20 69 73 20 69 6e 76 6f 6b 65 64 2c 20  and is invoked, 
4fb0: 74 68 65 6e 20 74 68 65 20 63 6f 6d 6d 61 6e 64  then the command
4fc0: 0a 66 61 69 6c 73 20 77 69 74 68 20 61 6e 20 65  .fails with an e
4fd0: 72 72 6f 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54  rror.</p>..<p>^T
4fe0: 68 65 20 5b 43 4f 4d 4d 49 54 5d 20 63 6f 6d 6d  he [COMMIT] comm
4ff0: 61 6e 64 20 63 6f 6d 6d 69 74 73 20 61 6c 6c 20  and commits all 
5000: 6f 75 74 73 74 61 6e 64 69 6e 67 20 74 72 61 6e  outstanding tran
5010: 73 61 63 74 69 6f 6e 73 20 61 6e 64 20 6c 65 61  sactions and lea
5020: 76 65 73 0a 74 68 65 20 74 72 61 6e 73 61 63 74  ves.the transact
5030: 69 6f 6e 20 73 74 61 63 6b 20 65 6d 70 74 79 2e  ion stack empty.
5040: 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20 52 45  </p>..<p>^The RE
5050: 4c 45 41 53 45 20 63 6f 6d 6d 61 6e 64 20 73 74  LEASE command st
5060: 61 72 74 73 20 77 69 74 68 20 74 68 65 20 6d 6f  arts with the mo
5070: 73 74 20 72 65 63 65 6e 74 20 61 64 64 69 74 69  st recent additi
5080: 6f 6e 20 74 6f 20 74 68 65 0a 74 72 61 6e 73 61  on to the.transa
5090: 63 74 69 6f 6e 20 73 74 61 63 6b 20 61 6e 64 20  ction stack and 
50a0: 72 65 6c 65 61 73 65 73 20 73 61 76 65 70 6f 69  releases savepoi
50b0: 6e 74 73 20 62 61 63 6b 77 61 72 64 73 20 0a 69  nts backwards .i
50c0: 6e 20 74 69 6d 65 20 75 6e 74 69 6c 20 69 74 20  n time until it 
50d0: 72 65 6c 65 61 73 65 73 20 61 20 73 61 76 65 70  releases a savep
50e0: 6f 69 6e 74 20 77 69 74 68 20 61 20 6d 61 74 63  oint with a matc
50f0: 68 69 6e 67 20 73 61 76 65 70 6f 69 6e 74 2d 6e  hing savepoint-n
5100: 61 6d 65 2e 0a 5e 50 72 69 6f 72 20 73 61 76 65  ame..^Prior save
5110: 70 6f 69 6e 74 73 2c 20 65 76 65 6e 20 73 61 76  points, even sav
5120: 65 70 6f 69 6e 74 73 20 77 69 74 68 20 6d 61 74  epoints with mat
5130: 63 68 69 6e 67 20 73 61 76 65 70 6f 69 6e 74 2d  ching savepoint-
5140: 6e 61 6d 65 73 2c 20 61 72 65 0a 75 6e 63 68 61  names, are.uncha
5150: 6e 67 65 64 2e 0a 5e 49 66 20 74 68 65 20 52 45  nged..^If the RE
5160: 4c 45 41 53 45 20 63 6f 6d 6d 61 6e 64 20 63 61  LEASE command ca
5170: 75 73 65 73 20 74 68 65 0a 74 72 61 6e 73 61 63  uses the.transac
5180: 74 69 6f 6e 20 73 74 61 63 6b 20 74 6f 20 62 65  tion stack to be
5190: 63 6f 6d 65 20 65 6d 70 74 79 20 28 69 66 20 74  come empty (if t
51a0: 68 65 20 52 45 4c 45 41 53 45 20 63 6f 6d 6d 61  he RELEASE comma
51b0: 6e 64 20 72 65 6c 65 61 73 65 73 20 74 68 65 0a  nd releases the.
51c0: 6f 75 74 65 72 6d 6f 73 74 20 74 72 61 6e 73 61  outermost transa
51d0: 63 74 69 6f 6e 20 66 72 6f 6d 20 74 68 65 20 73  ction from the s
51e0: 74 61 63 6b 29 20 74 68 65 6e 20 74 68 65 20 74  tack) then the t
51f0: 72 61 6e 73 61 63 74 69 6f 6e 20 63 6f 6d 6d 69  ransaction commi
5200: 74 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65  ts.</p>..<p>^The
5210: 20 5b 52 4f 4c 4c 42 41 43 4b 5d 20 63 6f 6d 6d   [ROLLBACK] comm
5220: 61 6e 64 20 77 69 74 68 6f 75 74 20 61 20 54 4f  and without a TO
5230: 20 63 6c 61 75 73 65 20 72 6f 6c 6c 73 20 62 61   clause rolls ba
5240: 63 6b 73 20 61 6c 6c 20 74 72 61 6e 73 61 63 74  cks all transact
5250: 69 6f 6e 73 0a 61 6e 64 20 6c 65 61 76 65 73 20  ions.and leaves 
5260: 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  the transaction 
5270: 73 74 61 63 6b 20 65 6d 70 74 79 2e 3c 2f 70 3e  stack empty.</p>
5280: 0a 0a 3c 70 3e 5e 54 68 65 20 52 4f 4c 4c 42 41  ..<p>^The ROLLBA
5290: 43 4b 20 63 6f 6d 6d 61 6e 64 20 77 69 74 68 20  CK command with 
52a0: 61 20 54 4f 20 63 6c 61 75 73 65 20 72 6f 6c 6c  a TO clause roll
52b0: 73 20 62 61 63 6b 20 74 72 61 6e 73 61 63 74 69  s back transacti
52c0: 6f 6e 73 20 67 6f 69 6e 67 0a 62 61 63 6b 77 61  ons going.backwa
52d0: 72 64 73 20 69 6e 20 74 69 6d 65 20 62 61 63 6b  rds in time back
52e0: 20 74 6f 20 74 68 65 20 6d 6f 73 74 20 72 65 63   to the most rec
52f0: 65 6e 74 20 53 41 56 45 50 4f 49 4e 54 20 77 69  ent SAVEPOINT wi
5300: 74 68 20 61 20 6d 61 74 63 68 69 6e 67 20 6e 61  th a matching na
5310: 6d 65 2e 0a 5e 54 68 65 20 53 41 56 45 50 4f 49  me..^The SAVEPOI
5320: 4e 54 20 77 69 74 68 20 74 68 65 20 6d 61 74 63  NT with the matc
5330: 68 69 6e 67 20 6e 61 6d 65 20 72 65 6d 61 69 6e  hing name remain
5340: 73 20 6f 6e 20 74 68 65 20 74 72 61 6e 73 61 63  s on the transac
5350: 74 69 6f 6e 20 73 74 61 63 6b 2c 0a 62 75 74 20  tion stack,.but 
5360: 61 6c 6c 20 64 61 74 61 62 61 73 65 20 63 68 61  all database cha
5370: 6e 67 65 73 20 74 68 61 74 20 6f 63 63 75 72 72  nges that occurr
5380: 65 64 20 61 66 74 65 72 20 74 68 61 74 20 53 41  ed after that SA
5390: 56 45 50 4f 49 4e 54 20 77 61 73 20 63 72 65 61  VEPOINT was crea
53a0: 74 65 64 0a 61 72 65 20 72 6f 6c 6c 65 64 20 62  ted.are rolled b
53b0: 61 63 6b 2e 20 20 5e 49 66 20 74 68 65 20 73 61  ack.  ^If the sa
53c0: 76 65 70 6f 69 6e 74 2d 6e 61 6d 65 20 69 6e 20  vepoint-name in 
53d0: 61 20 52 4f 4c 4c 42 41 43 4b 20 54 4f 20 63 6f  a ROLLBACK TO co
53e0: 6d 6d 61 6e 64 20 64 6f 65 73 20 6e 6f 74 0a 6d  mmand does not.m
53f0: 61 74 63 68 20 61 6e 79 20 53 41 56 45 50 4f 49  atch any SAVEPOI
5400: 4e 54 20 6f 6e 20 74 68 65 20 73 74 61 63 6b 2c  NT on the stack,
5410: 20 74 68 65 6e 20 74 68 65 20 52 4f 4c 4c 42 41   then the ROLLBA
5420: 43 4b 20 63 6f 6d 6d 61 6e 64 20 66 61 69 6c 73  CK command fails
5430: 20 77 69 74 68 20 61 6e 0a 65 72 72 6f 72 20 61   with an.error a
5440: 6e 64 20 6c 65 61 76 65 73 20 74 68 65 20 73 74  nd leaves the st
5450: 61 74 65 20 6f 66 20 74 68 65 20 64 61 74 61 62  ate of the datab
5460: 61 73 65 20 75 6e 63 68 61 6e 67 65 64 2e 3c 2f  ase unchanged.</
5470: 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23  p>..<tcl>.######
5480: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5490: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
54a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
54b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
54c0: 23 23 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f  #########.Sectio
54d0: 6e 20 63 6f 6d 6d 65 6e 74 20 63 6f 6d 6d 65 6e  n comment commen
54e0: 74 20 7b 63 6f 6d 6d 65 6e 74 20 2a 63 6f 6d 6d  t {comment *comm
54f0: 65 6e 74 73 7d 0a 0a 42 75 62 62 6c 65 44 69 61  ents}..BubbleDia
5500: 67 72 61 6d 20 63 6f 6d 6d 65 6e 74 2d 73 79 6e  gram comment-syn
5510: 74 61 78 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 5e  tax.</tcl>..<p>^
5520: 43 6f 6d 6d 65 6e 74 73 20 61 72 65 20 6e 6f 74  Comments are not
5530: 20 53 51 4c 20 63 6f 6d 6d 61 6e 64 73 2c 20 62   SQL commands, b
5540: 75 74 20 63 61 6e 20 6f 63 63 75 72 20 77 69 74  ut can occur wit
5550: 68 69 6e 20 74 68 65 20 74 65 78 74 20 6f 66 0a  hin the text of.
5560: 53 51 4c 20 71 75 65 72 69 65 73 20 70 61 73 73  SQL queries pass
5570: 65 64 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 70  ed to [sqlite3_p
5580: 72 65 70 61 72 65 5f 76 32 28 29 5d 20 61 6e 64  repare_v2()] and
5590: 20 72 65 6c 61 74 65 64 20 69 6e 74 65 72 66 61   related interfa
55a0: 63 65 73 2e 0a 5e 43 6f 6d 6d 65 6e 74 73 20 61  ces..^Comments a
55b0: 72 65 20 74 72 65 61 74 65 64 20 61 73 20 77 68  re treated as wh
55c0: 69 74 65 73 70 61 63 65 20 62 79 20 74 68 65 20  itespace by the 
55d0: 70 61 72 73 65 72 2e 0a 5e 43 6f 6d 6d 65 6e 74  parser..^Comment
55e0: 73 20 63 61 6e 20 62 65 67 69 6e 20 61 6e 79 77  s can begin anyw
55f0: 68 65 72 65 20 77 68 69 74 65 73 70 61 63 65 20  here whitespace 
5600: 0a 63 61 6e 20 62 65 20 66 6f 75 6e 64 2c 20 69  .can be found, i
5610: 6e 63 6c 75 64 69 6e 67 20 69 6e 73 69 64 65 20  ncluding inside 
5620: 65 78 70 72 65 73 73 69 6f 6e 73 20 74 68 61 74  expressions that
5630: 20 73 70 61 6e 20 6d 75 6c 74 69 70 6c 65 20 6c   span multiple l
5640: 69 6e 65 73 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 5e  ines..</p>..<p>^
5650: 53 51 4c 20 63 6f 6d 6d 65 6e 74 73 20 62 65 67  SQL comments beg
5660: 69 6e 20 77 69 74 68 20 74 77 6f 20 63 6f 6e 73  in with two cons
5670: 65 63 75 74 69 76 65 20 22 2d 22 20 63 68 61 72  ecutive "-" char
5680: 61 63 74 65 72 73 20 28 41 53 43 49 49 20 30 78  acters (ASCII 0x
5690: 32 64 29 0a 61 6e 64 20 65 78 74 65 6e 64 20 75  2d).and extend u
56a0: 70 20 74 6f 20 61 6e 64 20 69 6e 63 6c 75 64 69  p to and includi
56b0: 6e 67 20 74 68 65 20 6e 65 78 74 20 6e 65 77 6c  ng the next newl
56c0: 69 6e 65 20 63 68 61 72 61 63 74 65 72 20 28 41  ine character (A
56d0: 53 43 49 49 20 30 78 30 61 29 0a 6f 72 20 75 6e  SCII 0x0a).or un
56e0: 74 69 6c 20 74 68 65 20 65 6e 64 20 6f 66 20 69  til the end of i
56f0: 6e 70 75 74 2c 20 77 68 69 63 68 65 76 65 72 20  nput, whichever 
5700: 63 6f 6d 65 73 20 66 69 72 73 74 2e 3c 2f 70 3e  comes first.</p>
5710: 0a 0a 3c 70 3e 5e 43 2d 73 74 79 6c 65 20 63 6f  ..<p>^C-style co
5720: 6d 6d 65 6e 74 73 20 62 65 67 69 6e 0a 77 69 74  mments begin.wit
5730: 68 20 22 2f 2a 22 20 61 6e 64 20 65 78 74 65 6e  h "/*" and exten
5740: 64 20 75 70 20 74 6f 20 61 6e 64 20 69 6e 63 6c  d up to and incl
5750: 75 64 69 6e 67 20 74 68 65 20 6e 65 78 74 20 22  uding the next "
5760: 2a 2f 22 20 63 68 61 72 61 63 74 65 72 20 70 61  */" character pa
5770: 69 72 0a 6f 72 20 75 6e 74 69 6c 20 74 68 65 20  ir.or until the 
5780: 65 6e 64 20 6f 66 20 69 6e 70 75 74 2c 20 77 68  end of input, wh
5790: 69 63 68 65 76 65 72 20 63 6f 6d 65 73 20 66 69  ichever comes fi
57a0: 72 73 74 2e 20 20 5e 43 2d 73 74 79 6c 65 20 63  rst.  ^C-style c
57b0: 6f 6d 6d 65 6e 74 73 0a 63 61 6e 20 73 70 61 6e  omments.can span
57c0: 20 6d 75 6c 74 69 70 6c 65 20 6c 69 6e 65 73 2e   multiple lines.
57d0: 20 3c 2f 70 3e 0a 0a 3c 70 3e 5e 43 6f 6d 6d 65   </p>..<p>^Comme
57e0: 6e 74 73 20 63 61 6e 20 61 70 70 65 61 72 20 61  nts can appear a
57f0: 6e 79 77 68 65 72 65 20 77 68 69 74 65 73 70 61  nywhere whitespa
5800: 63 65 20 63 61 6e 20 6f 63 63 75 72 2c 0a 69 6e  ce can occur,.in
5810: 63 6c 75 64 69 6e 67 20 69 6e 73 69 64 65 20 65  cluding inside e
5820: 78 70 72 65 73 73 69 6f 6e 73 20 61 6e 64 20 69  xpressions and i
5830: 6e 20 74 68 65 20 6d 69 64 64 6c 65 20 6f 66 20  n the middle of 
5840: 6f 74 68 65 72 20 53 51 4c 20 73 74 61 74 65 6d  other SQL statem
5850: 65 6e 74 73 2e 0a 5e 43 6f 6d 6d 65 6e 74 73 20  ents..^Comments 
5860: 64 6f 20 6e 6f 74 20 6e 65 73 74 2e 0a 3c 2f 70  do not nest..</p
5870: 3e 0a 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23  >...<tcl>.######
5880: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5890: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
58a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
58b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
58c0: 23 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e  ########.Section
58d0: 20 7b 43 52 45 41 54 45 20 49 4e 44 45 58 7d 20   {CREATE INDEX} 
58e0: 63 72 65 61 74 65 69 6e 64 65 78 20 7b 7b 43 52  createindex {{CR
58f0: 45 41 54 45 20 49 4e 44 45 58 7d 7d 0a 0a 42 75  EATE INDEX}}..Bu
5900: 62 62 6c 65 44 69 61 67 72 61 6d 20 63 72 65 61  bbleDiagram crea
5910: 74 65 2d 69 6e 64 65 78 2d 73 74 6d 74 20 31 0a  te-index-stmt 1.
5920: 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 69 6e  BubbleDiagram in
5930: 64 65 78 65 64 2d 63 6f 6c 75 6d 6e 0a 3c 2f 74  dexed-column.</t
5940: 63 6c 3e 0a 0a 3c 70 3e 5e 54 68 65 20 43 52 45  cl>..<p>^The CRE
5950: 41 54 45 20 49 4e 44 45 58 20 63 6f 6d 6d 61 6e  ATE INDEX comman
5960: 64 20 63 6f 6e 73 69 73 74 73 20 6f 66 20 74 68  d consists of th
5970: 65 20 6b 65 79 77 6f 72 64 73 20 22 43 52 45 41  e keywords "CREA
5980: 54 45 20 49 4e 44 45 58 22 20 66 6f 6c 6c 6f 77  TE INDEX" follow
5990: 65 64 0a 62 79 20 74 68 65 20 6e 61 6d 65 20 6f  ed.by the name o
59a0: 66 20 74 68 65 20 6e 65 77 20 69 6e 64 65 78 2c  f the new index,
59b0: 20 74 68 65 20 6b 65 79 77 6f 72 64 20 22 4f 4e   the keyword "ON
59c0: 22 2c 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 61  ", the name of a
59d0: 20 70 72 65 76 69 6f 75 73 6c 79 0a 63 72 65 61   previously.crea
59e0: 74 65 64 20 74 61 62 6c 65 20 74 68 61 74 20 69  ted table that i
59f0: 73 20 74 6f 20 62 65 20 69 6e 64 65 78 65 64 2c  s to be indexed,
5a00: 20 61 6e 64 20 61 20 70 61 72 65 6e 74 68 65 73   and a parenthes
5a10: 69 7a 65 64 20 6c 69 73 74 20 6f 66 20 6e 61 6d  ized list of nam
5a20: 65 73 20 6f 66 0a 63 6f 6c 75 6d 6e 73 20 69 6e  es of.columns in
5a30: 20 74 68 65 20 74 61 62 6c 65 20 74 68 61 74 20   the table that 
5a40: 61 72 65 20 75 73 65 64 20 66 6f 72 20 74 68 65  are used for the
5a50: 20 69 6e 64 65 78 20 6b 65 79 2e 3c 2f 70 3e 0a   index key.</p>.
5a60: 0a 3c 70 3e 5e 45 61 63 68 20 63 6f 6c 75 6d 6e  .<p>^Each column
5a70: 20 6e 61 6d 65 20 63 61 6e 20 62 65 20 66 6f 6c   name can be fol
5a80: 6c 6f 77 65 64 20 62 79 20 6f 6e 65 20 6f 66 20  lowed by one of 
5a90: 74 68 65 20 22 41 53 43 22 20 6f 72 20 22 44 45  the "ASC" or "DE
5aa0: 53 43 22 20 6b 65 79 77 6f 72 64 73 0a 74 6f 20  SC" keywords.to 
5ab0: 69 6e 64 69 63 61 74 65 20 73 6f 72 74 20 6f 72  indicate sort or
5ac0: 64 65 72 2e 20 20 5e 54 68 65 20 73 6f 72 74 20  der.  ^The sort 
5ad0: 6f 72 64 65 72 20 6d 61 79 20 6f 72 20 6d 61 79  order may or may
5ae0: 20 6e 6f 74 20 62 65 20 69 67 6e 6f 72 65 64 20   not be ignored 
5af0: 64 65 70 65 6e 64 69 6e 67 0a 6f 6e 20 74 68 65  depending.on the
5b00: 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 66   database file f
5b10: 6f 72 6d 61 74 2e 20 20 5e 54 68 65 20 22 6c 65  ormat.  ^The "le
5b20: 67 61 63 79 22 20 66 69 6c 65 20 66 6f 72 6d 61  gacy" file forma
5b30: 74 20 69 67 6e 6f 72 65 73 20 69 6e 64 65 78 0a  t ignores index.
5b40: 73 6f 72 74 20 6f 72 64 65 72 2e 20 20 5e 54 68  sort order.  ^Th
5b50: 65 20 64 65 73 63 65 6e 64 69 6e 67 20 69 6e 64  e descending ind
5b60: 65 78 20 66 69 6c 65 20 66 6f 72 6d 61 74 20 74  ex file format t
5b70: 61 6b 65 73 20 69 6e 64 65 78 20 73 6f 72 74 20  akes index sort 
5b80: 6f 72 64 65 72 0a 69 6e 74 6f 20 61 63 63 6f 75  order.into accou
5b90: 6e 74 2e 20 20 5e 28 4f 6e 6c 79 20 63 6f 70 69  nt.  ^(Only copi
5ba0: 65 73 20 6f 66 20 53 51 4c 69 74 65 20 6e 65 77  es of SQLite new
5bb0: 65 72 20 74 68 61 6e 20 5b 76 65 72 73 69 6f 6e  er than [version
5bc0: 20 33 2e 33 2e 30 5d 20 0a 28 72 65 6c 65 61 73   3.3.0] .(releas
5bd0: 65 64 20 6f 6e 20 32 30 30 36 2d 30 31 2d 31 30  ed on 2006-01-10
5be0: 29 20 61 72 65 20 61 62 6c 65 20 74 6f 20 75 6e  ) are able to un
5bf0: 64 65 72 73 74 61 6e 64 20 74 68 65 20 6e 65 77  derstand the new
5c00: 65 72 20 64 65 73 63 65 6e 64 69 6e 67 0a 69 6e  er descending.in
5c10: 64 65 78 20 66 69 6c 65 20 66 6f 72 6d 61 74 20  dex file format 
5c20: 61 6e 64 20 73 6f 20 66 6f 72 20 63 6f 6d 70 61  and so for compa
5c30: 74 69 62 69 6c 69 74 79 20 77 69 74 68 20 6f 6c  tibility with ol
5c40: 64 65 72 20 76 65 72 73 69 6f 6e 73 20 6f 66 0a  der versions of.
5c50: 53 51 4c 69 74 65 2c 20 74 68 65 20 6c 65 67 61  SQLite, the lega
5c60: 63 79 20 66 69 6c 65 20 66 6f 72 6d 61 74 20 69  cy file format i
5c70: 73 20 67 65 6e 65 72 61 74 65 64 20 62 79 20 64  s generated by d
5c80: 65 66 61 75 6c 74 2e 29 5e 20 20 5e 55 73 65 20  efault.)^  ^Use 
5c90: 74 68 65 0a 5b 6c 65 67 61 63 79 5f 66 69 6c 65  the.[legacy_file
5ca0: 5f 66 6f 72 6d 61 74 5d 20 70 72 61 67 6d 61 20  _format] pragma 
5cb0: 74 6f 20 6d 6f 64 69 66 79 20 74 68 69 73 20 62  to modify this b
5cc0: 65 68 61 76 69 6f 72 20 61 6e 64 20 67 65 6e 65  ehavior and gene
5cd0: 72 61 74 65 0a 64 61 74 61 62 61 73 65 73 20 74  rate.databases t
5ce0: 68 61 74 20 75 73 65 20 74 68 65 20 6e 65 77 65  hat use the newe
5cf0: 72 20 66 69 6c 65 20 66 6f 72 6d 61 74 2e 20 20  r file format.  
5d00: 46 75 74 75 72 65 20 76 65 72 73 69 6f 6e 73 20  Future versions 
5d10: 6f 66 20 53 51 4c 69 74 65 0a 6d 61 79 20 62 65  of SQLite.may be
5d20: 67 69 6e 20 74 6f 20 67 65 6e 65 72 61 74 65 20  gin to generate 
5d30: 74 68 65 20 6e 65 77 65 72 20 66 69 6c 65 20 66  the newer file f
5d40: 6f 72 6d 61 74 20 62 79 20 64 65 66 61 75 6c 74  ormat by default
5d50: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20 43  .</p>..<p>^The C
5d60: 4f 4c 4c 41 54 45 20 63 6c 61 75 73 65 20 6f 70  OLLATE clause op
5d70: 74 69 6f 6e 61 6c 6c 79 20 66 6f 6c 6c 6f 77 69  tionally followi
5d80: 6e 67 20 65 61 63 68 20 63 6f 6c 75 6d 6e 20 6e  ng each column n
5d90: 61 6d 65 20 64 65 66 69 6e 65 73 20 61 0a 63 6f  ame defines a.co
5da0: 6c 6c 61 74 69 6e 67 20 73 65 71 75 65 6e 63 65  llating sequence
5db0: 20 75 73 65 64 20 66 6f 72 20 74 65 78 74 20 65   used for text e
5dc0: 6e 74 72 69 65 73 20 69 6e 20 74 68 61 74 20 63  ntries in that c
5dd0: 6f 6c 75 6d 6e 2e 0a 5e 54 68 65 20 64 65 66 61  olumn..^The defa
5de0: 75 6c 74 20 63 6f 6c 6c 61 74 69 6e 67 0a 73 65  ult collating.se
5df0: 71 75 65 6e 63 65 20 69 73 20 74 68 65 20 63 6f  quence is the co
5e00: 6c 6c 61 74 69 6e 67 20 73 65 71 75 65 6e 63 65  llating sequence
5e10: 20 64 65 66 69 6e 65 64 20 66 6f 72 20 74 68 61   defined for tha
5e20: 74 20 63 6f 6c 75 6d 6e 20 69 6e 20 74 68 65 0a  t column in the.
5e30: 5b 43 52 45 41 54 45 20 54 41 42 4c 45 5d 20 73  [CREATE TABLE] s
5e40: 74 61 74 65 6d 65 6e 74 2e 20 20 5e 4f 72 20 69  tatement.  ^Or i
5e50: 66 20 6e 6f 20 63 6f 6c 6c 61 74 69 6e 67 20 73  f no collating s
5e60: 65 71 75 65 6e 63 65 20 69 73 20 6f 74 68 65 72  equence is other
5e70: 77 69 73 65 20 64 65 66 69 6e 65 64 2c 0a 74 68  wise defined,.th
5e80: 65 20 62 75 69 6c 74 2d 69 6e 20 42 49 4e 41 52  e built-in BINAR
5e90: 59 20 63 6f 6c 6c 61 74 69 6e 67 20 73 65 71 75  Y collating sequ
5ea0: 65 6e 63 65 20 69 73 20 75 73 65 64 2e 3c 2f 70  ence is used.</p
5eb0: 3e 0a 0a 3c 70 3e 54 68 65 72 65 20 61 72 65 20  >..<p>There are 
5ec0: 6e 6f 20 61 72 62 69 74 72 61 72 79 20 6c 69 6d  no arbitrary lim
5ed0: 69 74 73 20 6f 6e 20 74 68 65 20 6e 75 6d 62 65  its on the numbe
5ee0: 72 20 6f 66 20 69 6e 64 69 63 65 73 20 74 68 61  r of indices tha
5ef0: 74 20 63 61 6e 20 62 65 0a 61 74 74 61 63 68 65  t can be.attache
5f00: 64 20 74 6f 20 61 20 73 69 6e 67 6c 65 20 74 61  d to a single ta
5f10: 62 6c 65 2e 20 20 5e 28 54 68 65 20 6e 75 6d 62  ble.  ^(The numb
5f20: 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e  er of columns in
5f30: 20 61 6e 20 69 6e 64 65 78 20 69 73 20 0a 6c 69   an index is .li
5f40: 6d 69 74 65 64 20 74 6f 20 74 68 65 20 76 61 6c  mited to the val
5f50: 75 65 20 73 65 74 20 62 79 0a 5b 73 71 6c 69 74  ue set by.[sqlit
5f60: 65 33 5f 6c 69 6d 69 74 5d 28 5b 53 51 4c 49 54  e3_limit]([SQLIT
5f70: 45 5f 4c 49 4d 49 54 5f 43 4f 4c 55 4d 4e 5d 2c  E_LIMIT_COLUMN],
5f80: 2e 2e 2e 29 2e 29 5e 3c 2f 70 3e 0a 0a 3c 70 3e  ...).)^</p>..<p>
5f90: 5e 49 66 20 74 68 65 20 55 4e 49 51 55 45 20 6b  ^If the UNIQUE k
5fa0: 65 79 77 6f 72 64 20 61 70 70 65 61 72 73 20 62  eyword appears b
5fb0: 65 74 77 65 65 6e 20 43 52 45 41 54 45 20 61 6e  etween CREATE an
5fc0: 64 20 49 4e 44 45 58 20 74 68 65 6e 20 64 75 70  d INDEX then dup
5fd0: 6c 69 63 61 74 65 0a 69 6e 64 65 78 20 65 6e 74  licate.index ent
5fe0: 72 69 65 73 20 61 72 65 20 6e 6f 74 20 61 6c 6c  ries are not all
5ff0: 6f 77 65 64 2e 20 20 5e 41 6e 79 20 61 74 74 65  owed.  ^Any atte
6000: 6d 70 74 20 74 6f 20 69 6e 73 65 72 74 20 61 20  mpt to insert a 
6010: 64 75 70 6c 69 63 61 74 65 20 65 6e 74 72 79 0a  duplicate entry.
6020: 77 69 6c 6c 20 72 65 73 75 6c 74 20 69 6e 20 61  will result in a
6030: 6e 20 65 72 72 6f 72 2e 20 20 5e 46 6f 72 20 74  n error.  ^For t
6040: 68 65 20 70 75 72 70 6f 73 65 73 20 6f 66 20 75  he purposes of u
6050: 6e 69 71 75 65 20 69 6e 64 69 63 65 73 2c 20 61  nique indices, a
6060: 6c 6c 20 4e 55 4c 4c 20 76 61 6c 75 65 73 0a 61  ll NULL values.a
6070: 72 65 20 63 6f 6e 73 69 64 65 72 65 64 20 74 6f  re considered to
6080: 20 64 69 66 66 65 72 65 6e 74 20 66 72 6f 6d 20   different from 
6090: 61 6c 6c 20 6f 74 68 65 72 20 4e 55 4c 4c 20 76  all other NULL v
60a0: 61 6c 75 65 73 20 61 6e 64 20 61 72 65 20 74 68  alues and are th
60b0: 75 73 20 75 6e 69 71 75 65 2e 0a 54 68 69 73 20  us unique..This 
60c0: 69 73 20 6f 6e 65 20 6f 66 20 74 68 65 20 74 77  is one of the tw
60d0: 6f 20 70 6f 73 73 69 62 6c 65 20 69 6e 74 65 72  o possible inter
60e0: 70 72 65 74 61 74 69 6f 6e 73 20 6f 66 20 74 68  pretations of th
60f0: 65 20 53 51 4c 2d 39 32 20 73 74 61 6e 64 61 72  e SQL-92 standar
6100: 64 0a 28 74 68 65 20 6c 61 6e 67 75 61 67 65 20  d.(the language 
6110: 69 6e 20 74 68 65 20 73 74 61 6e 64 61 72 64 20  in the standard 
6120: 69 73 20 61 6d 62 69 67 75 69 6f 75 73 29 20 61  is ambiguious) a
6130: 6e 64 20 69 73 20 74 68 65 20 69 6e 74 65 72 70  nd is the interp
6140: 72 65 74 61 74 69 6f 6e 0a 66 6f 6c 6c 6f 77 65  retation.followe
6150: 64 20 62 79 20 50 6f 73 74 67 72 65 53 51 4c 2c  d by PostgreSQL,
6160: 20 4d 79 53 51 4c 2c 20 46 69 72 65 62 69 72 64   MySQL, Firebird
6170: 2c 20 61 6e 64 20 4f 72 61 63 6c 65 2e 20 20 49  , and Oracle.  I
6180: 6e 66 6f 72 6d 69 78 20 61 6e 64 0a 4d 69 63 72  nformix and.Micr
6190: 6f 73 6f 66 74 20 53 51 4c 20 53 65 72 76 65 72  osoft SQL Server
61a0: 20 66 6f 6c 6c 6f 77 20 74 68 65 20 6f 74 68 65   follow the othe
61b0: 72 20 69 6e 74 65 72 70 72 65 74 61 74 69 6f 6e  r interpretation
61c0: 20 6f 66 20 74 68 65 20 73 74 61 6e 64 61 72 64   of the standard
61d0: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 49 66 20 74 68  .</p>..<p>^If th
61e0: 65 20 6f 70 74 69 6f 6e 61 6c 20 49 46 20 4e 4f  e optional IF NO
61f0: 54 20 45 58 49 53 54 53 20 63 6c 61 75 73 65 20  T EXISTS clause 
6200: 69 73 20 70 72 65 73 65 6e 74 20 61 6e 64 20 61  is present and a
6210: 6e 6f 74 68 65 72 20 69 6e 64 65 78 0a 77 69 74  nother index.wit
6220: 68 20 74 68 65 20 73 61 6d 65 20 6e 61 6d 65 20  h the same name 
6230: 61 6c 65 61 64 79 20 65 78 69 73 74 73 2c 20 74  aleady exists, t
6240: 68 65 6e 20 74 68 69 73 20 63 6f 6d 6d 61 6e 64  hen this command
6250: 20 62 65 63 6f 6d 65 73 20 61 20 6e 6f 2d 6f 70   becomes a no-op
6260: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 49 6e 64 65 78  .</p>..<p>^Index
6270: 65 73 20 61 72 65 20 72 65 6d 6f 76 65 64 20 77  es are removed w
6280: 69 74 68 20 74 68 65 20 5b 44 52 4f 50 20 49 4e  ith the [DROP IN
6290: 44 45 58 5d 20 63 6f 6d 6d 61 6e 64 2e 3c 2f 70  DEX] command.</p
62a0: 3e 0a 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23  >...<tcl>.######
62b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
62c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
62d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
62e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
62f0: 23 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e  ########.Section
6300: 20 7b 43 52 45 41 54 45 20 54 41 42 4c 45 7d 20   {CREATE TABLE} 
6310: 7b 63 72 65 61 74 65 74 61 62 6c 65 7d 20 7b 7b  {createtable} {{
6320: 43 52 45 41 54 45 20 54 41 42 4c 45 7d 7d 0a 0a  CREATE TABLE}}..
6330: 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 63 72  BubbleDiagram cr
6340: 65 61 74 65 2d 74 61 62 6c 65 2d 73 74 6d 74 20  eate-table-stmt 
6350: 31 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20  1.BubbleDiagram 
6360: 63 6f 6c 75 6d 6e 2d 64 65 66 0a 42 75 62 62 6c  column-def.Bubbl
6370: 65 44 69 61 67 72 61 6d 20 74 79 70 65 2d 6e 61  eDiagram type-na
6380: 6d 65 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d  me.BubbleDiagram
6390: 20 63 6f 6c 75 6d 6e 2d 63 6f 6e 73 74 72 61 69   column-constrai
63a0: 6e 74 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d  nt.BubbleDiagram
63b0: 20 74 61 62 6c 65 2d 63 6f 6e 73 74 72 61 69 6e   table-constrain
63c0: 74 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20  t.BubbleDiagram 
63d0: 66 6f 72 65 69 67 6e 2d 6b 65 79 2d 63 6c 61 75  foreign-key-clau
63e0: 73 65 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 5e 41  se.</tcl>..<p>^A
63f0: 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 73 74   CREATE TABLE st
6400: 61 74 65 6d 65 6e 74 20 69 73 20 62 61 73 69 63  atement is basic
6410: 61 6c 6c 79 20 74 68 65 20 6b 65 79 77 6f 72 64  ally the keyword
6420: 73 20 22 43 52 45 41 54 45 20 54 41 42 4c 45 22  s "CREATE TABLE"
6430: 0a 66 6f 6c 6c 6f 77 65 64 20 62 79 20 74 68 65  .followed by the
6440: 20 6e 61 6d 65 20 6f 66 20 61 20 6e 65 77 20 74   name of a new t
6450: 61 62 6c 65 20 61 6e 64 20 61 20 70 61 72 65 6e  able and a paren
6460: 74 68 65 73 69 7a 65 64 20 6c 69 73 74 20 6f 66  thesized list of
6470: 20 63 6f 6c 75 6d 6e 0a 64 65 66 69 6e 69 74 69   column.definiti
6480: 6f 6e 73 20 61 6e 64 20 63 6f 6e 73 74 72 61 69  ons and constrai
6490: 6e 74 73 2e 20 20 0a 5e 54 61 62 6c 65 73 20 6e  nts.  .^Tables n
64a0: 61 6d 65 73 20 74 68 61 74 20 62 65 67 69 6e 20  ames that begin 
64b0: 77 69 74 68 20 22 3c 62 3e 73 71 6c 69 74 65 5f  with "<b>sqlite_
64c0: 3c 2f 62 3e 22 20 61 72 65 20 72 65 73 65 72 76  </b>" are reserv
64d0: 65 64 0a 66 6f 72 20 75 73 65 20 62 79 20 53 51  ed.for use by SQ
64e0: 4c 69 74 65 20 69 74 73 65 6c 66 20 61 6e 64 20  Lite itself and 
64f0: 63 61 6e 6e 6f 74 20 6e 6f 72 6d 61 6c 6c 79 0a  cannot normally.
6500: 61 70 70 65 61 72 20 69 6e 20 61 20 43 52 45 41  appear in a CREA
6510: 54 45 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65  TE TABLE stateme
6520: 6e 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 45 61 63  nt.</p>..<p>^Eac
6530: 68 20 63 6f 6c 75 6d 6e 20 64 65 66 69 6e 69 74  h column definit
6540: 69 6f 6e 20 69 73 20 74 68 65 20 6e 61 6d 65 20  ion is the name 
6550: 6f 66 20 74 68 65 20 63 6f 6c 75 6d 6e 20 6f 70  of the column op
6560: 74 69 6f 6e 61 6c 6c 79 20 66 6f 6c 6c 6f 77 65  tionally followe
6570: 64 20 62 79 20 74 68 65 0a 5b 64 61 74 61 74 79  d by the.[dataty
6580: 70 65 5d 20 66 6f 72 20 74 68 61 74 20 63 6f 6c  pe] for that col
6590: 75 6d 6e 2c 20 74 68 65 6e 20 6f 6e 65 20 6f 72  umn, then one or
65a0: 20 6d 6f 72 65 20 6f 70 74 69 6f 6e 61 6c 20 63   more optional c
65b0: 6f 6c 75 6d 6e 20 63 6f 6e 73 74 72 61 69 6e 74  olumn constraint
65c0: 73 2e 0a 5e 53 51 4c 69 74 65 20 75 73 65 73 20  s..^SQLite uses 
65d0: 5b 64 79 6e 61 6d 69 63 20 74 79 70 69 6e 67 5d  [dynamic typing]
65e0: 3b 20 0a 74 68 65 20 64 61 74 61 74 79 70 65 20  ; .the datatype 
65f0: 66 6f 72 20 74 68 65 20 63 6f 6c 75 6d 6e 20 64  for the column d
6600: 6f 65 73 20 6e 6f 74 20 72 65 73 74 72 69 63 74  oes not restrict
6610: 20 77 68 61 74 20 64 61 74 61 20 6d 61 79 20 62   what data may b
6620: 65 20 70 75 74 0a 69 6e 20 74 68 61 74 20 63 6f  e put.in that co
6630: 6c 75 6d 6e 2e 0a 5e 54 68 65 20 55 4e 49 51 55  lumn..^The UNIQU
6640: 45 20 63 6f 6e 73 74 72 61 69 6e 74 20 63 61 75  E constraint cau
6650: 73 65 73 20 61 6e 20 75 6e 69 71 75 65 20 69 6e  ses an unique in
6660: 64 65 78 20 74 6f 20 62 65 20 63 72 65 61 74 65  dex to be create
6670: 64 20 6f 6e 20 74 68 65 20 73 70 65 63 69 66 69  d on the specifi
6680: 65 64 0a 63 6f 6c 75 6d 6e 73 2e 20 20 5e 41 6c  ed.columns.  ^Al
6690: 6c 20 4e 55 4c 4c 20 76 61 6c 75 65 73 20 61 72  l NULL values ar
66a0: 65 20 63 6f 6e 73 69 64 65 72 65 64 20 64 69 66  e considered dif
66b0: 66 65 72 65 6e 74 20 66 72 6f 6d 20 65 61 63 68  ferent from each
66c0: 20 6f 74 68 65 72 20 61 6e 64 20 66 72 6f 6d 0a   other and from.
66d0: 61 6c 6c 20 6f 74 68 65 72 20 76 61 6c 75 65 73  all other values
66e0: 20 66 6f 72 20 74 68 65 20 70 75 72 70 6f 73 65   for the purpose
66f0: 20 6f 66 20 64 65 74 65 72 6d 69 6e 69 6e 67 20   of determining 
6700: 75 6e 69 71 75 65 6e 65 73 73 2c 20 68 65 6e 63  uniqueness, henc
6710: 65 20 61 20 55 4e 49 51 55 45 0a 63 6f 6c 75 6d  e a UNIQUE.colum
6720: 6e 20 6d 61 79 20 63 6f 6e 74 61 69 6e 20 6d 75  n may contain mu
6730: 6c 74 69 70 6c 65 20 65 6e 74 72 69 65 73 20 77  ltiple entries w
6740: 69 74 68 20 74 68 65 20 76 61 6c 75 65 20 6f 66  ith the value of
6750: 20 4e 55 4c 4c 2e 0a 5e 54 68 65 20 43 4f 4c 4c   NULL..^The COLL
6760: 41 54 45 20 63 6c 61 75 73 65 20 73 70 65 63 69  ATE clause speci
6770: 66 69 65 73 20 77 68 61 74 20 74 65 78 74 20 0a  fies what text .
6780: 5b 63 6f 6c 6c 61 74 69 6e 67 20 66 75 6e 63 74  [collating funct
6790: 69 6f 6e 5d 20 74 6f 20 75 73 65 20 77 68 65 6e  ion] to use when
67a0: 20 63 6f 6d 70 61 72 69 6e 67 20 74 65 78 74 20   comparing text 
67b0: 65 6e 74 72 69 65 73 20 66 6f 72 20 74 68 65 20  entries for the 
67c0: 63 6f 6c 75 6d 6e 2e 20 20 0a 5e 54 68 65 20 62  column.  .^The b
67d0: 75 69 6c 74 2d 69 6e 20 5b 42 49 4e 41 52 59 5d  uilt-in [BINARY]
67e0: 20 63 6f 6c 6c 61 74 69 6e 67 20 66 75 6e 63 74   collating funct
67f0: 69 6f 6e 20 69 73 20 75 73 65 64 20 62 79 20 64  ion is used by d
6800: 65 66 61 75 6c 74 2e 0a 3c 70 3e 0a 5e 54 68 65  efault..<p>.^The
6810: 20 44 45 46 41 55 4c 54 20 63 6f 6e 73 74 72 61   DEFAULT constra
6820: 69 6e 74 20 73 70 65 63 69 66 69 65 73 20 61 20  int specifies a 
6830: 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 74 6f  default value to
6840: 20 75 73 65 20 77 68 65 6e 20 64 6f 69 6e 67 20   use when doing 
6850: 61 6e 20 5b 49 4e 53 45 52 54 5d 2e 0a 5e 54 68  an [INSERT]..^Th
6860: 65 20 76 61 6c 75 65 20 6d 61 79 20 62 65 20 4e  e value may be N
6870: 55 4c 4c 2c 20 61 20 73 74 72 69 6e 67 20 63 6f  ULL, a string co
6880: 6e 73 74 61 6e 74 2c 20 61 20 6e 75 6d 62 65 72  nstant, a number
6890: 2c 20 6f 72 20 61 20 63 6f 6e 73 74 61 6e 74 20  , or a constant 
68a0: 65 78 70 72 65 73 73 69 6f 6e 0a 65 6e 63 6c 6f  expression.enclo
68b0: 73 65 64 20 69 6e 20 70 61 72 65 6e 74 68 65 73  sed in parenthes
68c0: 65 73 2e 0a 5e 54 68 65 20 64 65 66 61 75 6c 74  es..^The default
68d0: 20 76 61 6c 75 65 20 6d 61 79 20 61 6c 73 6f 20   value may also 
68e0: 62 65 20 6f 6e 65 20 6f 66 20 74 68 65 20 73 70  be one of the sp
68f0: 65 63 69 61 6c 20 63 61 73 65 2d 69 6e 64 65 70  ecial case-indep
6900: 65 6e 64 61 6e 74 0a 6b 65 79 77 6f 72 64 73 20  endant.keywords 
6910: 43 55 52 52 45 4e 54 5f 54 49 4d 45 2c 20 43 55  CURRENT_TIME, CU
6920: 52 52 45 4e 54 5f 44 41 54 45 20 6f 72 20 43 55  RRENT_DATE or CU
6930: 52 52 45 4e 54 5f 54 49 4d 45 53 54 41 4d 50 2e  RRENT_TIMESTAMP.
6940: 20 20 5e 49 66 20 74 68 65 20 76 61 6c 75 65 20    ^If the value 
6950: 69 73 0a 4e 55 4c 4c 2c 20 61 20 73 74 72 69 6e  is.NULL, a strin
6960: 67 20 63 6f 6e 73 74 61 6e 74 20 6f 72 20 6e 75  g constant or nu
6970: 6d 62 65 72 2c 20 69 74 20 69 73 20 69 6e 73 65  mber, it is inse
6980: 72 74 65 64 20 69 6e 74 6f 20 74 68 65 20 63 6f  rted into the co
6990: 6c 75 6d 6e 0a 77 68 65 6e 65 76 65 72 20 61 6e  lumn.whenever an
69a0: 20 49 4e 53 45 52 54 20 73 74 61 74 65 6d 65 6e   INSERT statemen
69b0: 74 20 74 68 61 74 20 64 6f 65 73 20 6e 6f 74 20  t that does not 
69c0: 73 70 65 63 69 66 79 20 61 20 76 61 6c 75 65 20  specify a value 
69d0: 66 6f 72 20 74 68 65 20 63 6f 6c 75 6d 6e 20 69  for the column i
69e0: 73 0a 65 78 65 63 75 74 65 64 2e 20 5e 49 66 20  s.executed. ^If 
69f0: 74 68 65 20 76 61 6c 75 65 20 69 73 20 43 55 52  the value is CUR
6a00: 52 45 4e 54 5f 54 49 4d 45 2c 20 43 55 52 52 45  RENT_TIME, CURRE
6a10: 4e 54 5f 44 41 54 45 20 6f 72 20 43 55 52 52 45  NT_DATE or CURRE
6a20: 4e 54 5f 54 49 4d 45 53 54 41 4d 50 2c 20 74 68  NT_TIMESTAMP, th
6a30: 65 6e 0a 74 68 65 20 63 75 72 72 65 6e 74 20 55  en.the current U
6a40: 54 43 20 64 61 74 65 20 61 6e 64 2f 6f 72 20 74  TC date and/or t
6a50: 69 6d 65 20 69 73 20 69 6e 73 65 72 74 65 64 20  ime is inserted 
6a60: 69 6e 74 6f 20 74 68 65 20 63 6f 6c 75 6d 6e 73  into the columns
6a70: 2e 20 5e 46 6f 72 0a 43 55 52 52 45 4e 54 5f 54  . ^For.CURRENT_T
6a80: 49 4d 45 2c 20 74 68 65 20 66 6f 72 6d 61 74 20  IME, the format 
6a90: 69 73 20 48 48 3a 4d 4d 3a 53 53 2e 20 5e 46 6f  is HH:MM:SS. ^Fo
6aa0: 72 20 43 55 52 52 45 4e 54 5f 44 41 54 45 2c 20  r CURRENT_DATE, 
6ab0: 59 59 59 59 2d 4d 4d 2d 44 44 2e 0a 5e 54 68 65  YYYY-MM-DD..^The
6ac0: 20 66 6f 72 6d 61 74 20 66 6f 72 20 43 55 52 52   format for CURR
6ad0: 45 4e 54 5f 54 49 4d 45 53 54 41 4d 50 20 69 73  ENT_TIMESTAMP is
6ae0: 20 22 59 59 59 59 2d 4d 4d 2d 44 44 20 48 48 3a   "YYYY-MM-DD HH:
6af0: 4d 4d 3a 53 53 22 2e 0a 3c 2f 70 3e 0a 0a 3c 70  MM:SS"..</p>..<p
6b00: 3e 5e 28 54 68 65 20 50 52 49 4d 41 52 59 20 4b  >^(The PRIMARY K
6b10: 45 59 20 61 74 74 72 69 62 75 74 65 20 6e 6f 72  EY attribute nor
6b20: 6d 61 6c 6c 79 20 63 72 65 61 74 65 73 20 61 20  mally creates a 
6b30: 55 4e 49 51 55 45 20 69 6e 64 65 78 20 6f 6e 0a  UNIQUE index on.
6b40: 74 68 65 20 63 6f 6c 75 6d 6e 20 6f 72 20 63 6f  the column or co
6b50: 6c 75 6d 6e 73 20 74 68 61 74 20 61 72 65 20 73  lumns that are s
6b60: 70 65 63 69 66 69 65 64 20 61 73 20 74 68 65 20  pecified as the 
6b70: 50 52 49 4d 41 52 59 20 4b 45 59 2e 20 20 54 68  PRIMARY KEY.  Th
6b80: 65 20 6f 6e 6c 79 0a 65 78 63 65 70 74 69 6f 6e  e only.exception
6b90: 20 74 6f 20 74 68 69 73 20 62 65 68 61 76 69 6f   to this behavio
6ba0: 72 20 69 73 20 73 70 65 63 69 61 6c 20 5b 49 4e  r is special [IN
6bb0: 54 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45  TEGER PRIMARY KE
6bc0: 59 5d 20 63 6f 6c 75 6d 6e 2c 0a 64 65 73 63 72  Y] column,.descr
6bd0: 69 62 65 64 20 62 65 6c 6f 77 2e 29 5e 0a 5e 28  ibed below.)^.^(
6be0: 41 63 63 6f 72 64 69 6e 67 20 74 6f 20 74 68 65  According to the
6bf0: 20 53 51 4c 20 73 74 61 6e 64 61 72 64 2c 20 50   SQL standard, P
6c00: 52 49 4d 41 52 59 20 4b 45 59 20 73 68 6f 75 6c  RIMARY KEY shoul
6c10: 64 20 69 6d 70 6c 79 20 4e 4f 54 20 4e 55 4c 4c  d imply NOT NULL
6c20: 2e 0a 55 6e 66 6f 72 74 75 6e 61 74 65 6c 79 2c  ..Unfortunately,
6c30: 20 64 75 65 20 74 6f 20 61 20 6c 6f 6e 67 2d 73   due to a long-s
6c40: 74 61 6e 64 69 6e 67 20 63 6f 64 69 6e 67 20 6f  tanding coding o
6c50: 76 65 72 73 69 67 68 74 2c 20 74 68 69 73 20 69  versight, this i
6c60: 73 20 6e 6f 74 20 0a 74 68 65 20 63 61 73 65 20  s not .the case 
6c70: 69 6e 20 53 51 4c 69 74 65 2e 20 20 53 51 4c 69  in SQLite.  SQLi
6c80: 74 65 20 61 6c 6c 6f 77 73 20 4e 55 4c 4c 20 76  te allows NULL v
6c90: 61 6c 75 65 73 0a 69 6e 20 61 20 50 52 49 4d 41  alues.in a PRIMA
6ca0: 52 59 20 4b 45 59 20 63 6f 6c 75 6d 6e 2e 29 5e  RY KEY column.)^
6cb0: 20 20 57 65 20 63 6f 75 6c 64 20 63 68 61 6e 67    We could chang
6cc0: 65 20 53 51 4c 69 74 65 20 74 6f 20 63 6f 6e 66  e SQLite to conf
6cd0: 6f 72 6d 20 74 6f 20 74 68 65 0a 73 74 61 6e 64  orm to the.stand
6ce0: 61 72 64 20 28 61 6e 64 20 77 65 20 6d 69 67 68  ard (and we migh
6cf0: 74 20 64 6f 20 73 6f 20 69 6e 20 74 68 65 20 66  t do so in the f
6d00: 75 74 75 72 65 29 2c 20 62 75 74 20 62 79 20 74  uture), but by t
6d10: 68 65 20 74 69 6d 65 20 74 68 65 0a 6f 76 65 72  he time the.over
6d20: 73 69 67 68 74 20 77 61 73 20 64 69 73 63 6f 76  sight was discov
6d30: 65 72 65 64 2c 20 53 51 4c 69 74 65 20 77 61 73  ered, SQLite was
6d40: 20 69 6e 20 73 75 63 68 20 77 69 64 65 20 75 73   in such wide us
6d50: 65 20 74 68 61 74 20 77 65 20 66 65 61 72 65 64  e that we feared
6d60: 0a 62 72 65 61 6b 69 6e 67 20 6c 65 67 61 63 79  .breaking legacy
6d70: 20 63 6f 64 65 20 69 66 20 77 65 20 66 69 78 65   code if we fixe
6d80: 64 20 74 68 65 20 70 72 6f 62 6c 65 6d 2e 20 20  d the problem.  
6d90: 53 6f 20 66 6f 72 20 6e 6f 77 20 77 65 20 68 61  So for now we ha
6da0: 76 65 0a 63 68 6f 73 65 6e 20 74 6f 20 63 6f 6e  ve.chosen to con
6db0: 74 69 6e 75 65 20 61 6c 6c 6f 77 69 6e 67 20 4e  tinue allowing N
6dc0: 55 4c 4c 73 20 69 6e 20 50 52 49 4d 41 52 59 20  ULLs in PRIMARY 
6dd0: 4b 45 59 20 63 6f 6c 75 6d 6e 73 2e 0a 44 65 76  KEY columns..Dev
6de0: 65 6c 6f 70 65 72 73 20 73 68 6f 75 6c 64 20 62  elopers should b
6df0: 65 20 61 77 61 72 65 2c 20 68 6f 77 65 76 65 72  e aware, however
6e00: 2c 20 74 68 61 74 20 77 65 20 6d 61 79 20 63 68  , that we may ch
6e10: 61 6e 67 65 20 53 51 4c 69 74 65 20 74 6f 0a 63  ange SQLite to.c
6e20: 6f 6e 66 6f 72 6d 20 74 6f 20 74 68 65 20 53 51  onform to the SQ
6e30: 4c 20 73 74 61 6e 64 61 72 64 20 69 6e 20 66 75  L standard in fu
6e40: 74 75 72 65 20 61 6e 64 20 73 68 6f 75 6c 64 20  ture and should 
6e50: 64 65 73 69 67 6e 20 6e 65 77 20 70 72 6f 67 72  design new progr
6e60: 61 6d 73 0a 61 63 63 6f 72 64 69 6e 67 6c 79 2e  ams.accordingly.
6e70: 3c 2f 70 3e 0a 0a 3c 70 3e 5e 53 51 4c 69 74 65  </p>..<p>^SQLite
6e80: 20 75 73 65 73 20 5b 64 79 6e 61 6d 69 63 20 74   uses [dynamic t
6e90: 79 70 69 6e 67 5d 20 69 6e 73 74 65 61 64 20 6f  yping] instead o
6ea0: 66 20 73 74 61 74 69 63 20 74 79 70 69 6e 67 2e  f static typing.
6eb0: 20 20 5e 45 78 63 65 70 74 20 66 6f 72 20 74 68    ^Except for th
6ec0: 65 0a 73 70 65 63 69 61 6c 20 63 61 73 65 20 6f  e.special case o
6ed0: 66 20 5b 49 4e 54 45 47 45 52 20 50 52 49 4d 41  f [INTEGER PRIMA
6ee0: 52 59 20 4b 45 59 5d 2c 20 53 51 4c 69 74 65 20  RY KEY], SQLite 
6ef0: 77 69 6c 6c 20 61 6c 6c 6f 77 20 76 61 6c 75 65  will allow value
6f00: 73 20 6f 66 20 61 6e 79 0a 74 79 70 65 20 74 6f  s of any.type to
6f10: 20 62 65 20 73 74 6f 72 65 64 20 69 6e 20 61 6e   be stored in an
6f20: 79 20 63 6f 6c 75 6d 6e 20 72 65 67 61 72 64 6c  y column regardl
6f30: 65 73 73 20 6f 66 20 74 68 65 20 64 65 63 6c 61  ess of the decla
6f40: 72 65 64 20 64 61 74 61 74 79 70 65 20 6f 66 0a  red datatype of.
6f50: 74 68 61 74 20 63 6f 6c 75 6d 6e 2e 20 20 5e 54  that column.  ^T
6f60: 68 65 20 64 65 63 6c 61 72 65 64 20 64 61 74 61  he declared data
6f70: 74 79 70 65 20 69 73 20 61 20 5b 61 66 66 69 6e  type is a [affin
6f80: 69 74 79 20 7c 20 74 79 70 65 20 61 66 66 69 6e  ity | type affin
6f90: 69 74 79 5d 20 74 68 61 74 0a 53 51 4c 69 74 65  ity] that.SQLite
6fa0: 20 61 74 74 65 6d 70 74 73 20 74 6f 20 63 6f 6d   attempts to com
6fb0: 70 6c 79 20 77 69 74 68 2c 20 62 75 74 20 74 68  ply with, but th
6fc0: 65 20 6f 70 65 72 61 74 69 6f 6e 20 77 69 6c 6c  e operation will
6fd0: 20 70 72 6f 63 65 65 64 20 65 76 65 6e 20 69 66   proceed even if
6fe0: 0a 63 6f 6d 70 6c 69 61 6e 63 65 20 69 73 20 6e  .compliance is n
6ff0: 6f 74 20 70 6f 73 73 69 62 6c 65 2e 3c 2f 70 3e  ot possible.</p>
7000: 0a 0a 3c 70 3e 5e 49 66 20 74 68 65 20 22 54 45  ..<p>^If the "TE
7010: 4d 50 22 20 6f 72 20 22 54 45 4d 50 4f 52 41 52  MP" or "TEMPORAR
7020: 59 22 20 6b 65 79 77 6f 72 64 20 6f 63 63 75 72  Y" keyword occur
7030: 73 20 69 6e 20 62 65 74 77 65 65 6e 20 22 43 52  s in between "CR
7040: 45 41 54 45 22 0a 61 6e 64 20 22 54 41 42 4c 45  EATE".and "TABLE
7050: 22 20 74 68 65 6e 20 74 68 65 20 74 61 62 6c 65  " then the table
7060: 20 74 68 61 74 20 69 73 20 63 72 65 61 74 65 64   that is created
7070: 20 69 73 20 6f 6e 6c 79 20 76 69 73 69 62 6c 65   is only visible
7080: 0a 77 69 74 68 69 6e 20 74 68 61 74 20 73 61 6d  .within that sam
7090: 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  e database conne
70a0: 63 74 69 6f 6e 0a 61 6e 64 20 69 73 20 61 75 74  ction.and is aut
70b0: 6f 6d 61 74 69 63 61 6c 6c 79 20 64 65 6c 65 74  omatically delet
70c0: 65 64 20 77 68 65 6e 0a 74 68 65 20 64 61 74 61  ed when.the data
70d0: 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  base connection 
70e0: 69 73 20 63 6c 6f 73 65 64 2e 20 20 5e 41 6e 79  is closed.  ^Any
70f0: 20 69 6e 64 69 63 65 73 20 63 72 65 61 74 65 64   indices created
7100: 20 6f 6e 20 61 20 74 65 6d 70 6f 72 61 72 79 20   on a temporary 
7110: 74 61 62 6c 65 0a 61 72 65 20 61 6c 73 6f 20 74  table.are also t
7120: 65 6d 70 6f 72 61 72 79 2e 20 20 5e 54 65 6d 70  emporary.  ^Temp
7130: 6f 72 61 72 79 20 74 61 62 6c 65 73 20 61 6e 64  orary tables and
7140: 20 69 6e 64 69 63 65 73 20 61 72 65 20 73 74 6f   indices are sto
7150: 72 65 64 20 69 6e 20 61 0a 73 65 70 61 72 61 74  red in a.separat
7160: 65 20 66 69 6c 65 20 64 69 73 74 69 6e 63 74 20  e file distinct 
7170: 66 72 6f 6d 20 74 68 65 20 6d 61 69 6e 20 64 61  from the main da
7180: 74 61 62 61 73 65 20 66 69 6c 65 2e 3c 2f 70 3e  tabase file.</p>
7190: 0a 0a 3c 70 3e 20 5e 49 66 20 61 20 26 6c 74 3b  ..<p> ^If a &lt;
71a0: 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 26 67 74  database-name&gt
71b0: 3b 20 69 73 20 73 70 65 63 69 66 69 65 64 2c 20  ; is specified, 
71c0: 74 68 65 6e 20 74 68 65 20 74 61 62 6c 65 20 69  then the table i
71d0: 73 20 63 72 65 61 74 65 64 20 69 6e 20 0a 74 68  s created in .th
71e0: 65 20 6e 61 6d 65 64 20 64 61 74 61 62 61 73 65  e named database
71f0: 2e 20 5e 49 74 20 69 73 20 61 6e 20 65 72 72 6f  . ^It is an erro
7200: 72 20 74 6f 20 73 70 65 63 69 66 79 20 62 6f 74  r to specify bot
7210: 68 20 61 20 26 6c 74 3b 64 61 74 61 62 61 73 65  h a &lt;database
7220: 2d 6e 61 6d 65 26 67 74 3b 0a 61 6e 64 20 74 68  -name&gt;.and th
7230: 65 20 54 45 4d 50 20 6b 65 79 77 6f 72 64 2c 20  e TEMP keyword, 
7240: 75 6e 6c 65 73 73 20 74 68 65 20 26 6c 74 3b 64  unless the &lt;d
7250: 61 74 61 62 61 73 65 2d 6e 61 6d 65 26 67 74 3b  atabase-name&gt;
7260: 20 69 73 20 22 74 65 6d 70 22 2e 20 5e 49 66 20   is "temp". ^If 
7270: 6e 6f 0a 64 61 74 61 62 61 73 65 20 6e 61 6d 65  no.database name
7280: 20 69 73 20 73 70 65 63 69 66 69 65 64 20 61 6e   is specified an
7290: 64 20 74 68 65 20 54 45 4d 50 20 6b 65 79 77 6f  d the TEMP keywo
72a0: 72 64 20 69 73 20 6e 6f 74 20 70 72 65 73 65 6e  rd is not presen
72b0: 74 20 74 68 65 6e 0a 74 68 65 20 74 61 62 6c 65  t then.the table
72c0: 20 69 73 20 63 72 65 61 74 65 64 20 69 6e 20 74   is created in t
72d0: 68 65 20 6d 61 69 6e 20 64 61 74 61 62 61 73 65  he main database
72e0: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20 6f  .</p>..<p>^The o
72f0: 70 74 69 6f 6e 61 6c 20 5b 63 6f 6e 66 6c 69 63  ptional [conflic
7300: 74 20 63 6c 61 75 73 65 5d 20 66 6f 6c 6c 6f 77  t clause] follow
7310: 69 6e 67 20 65 61 63 68 20 63 6f 6e 73 74 72 61  ing each constra
7320: 69 6e 74 0a 61 6c 6c 6f 77 73 20 74 68 65 20 73  int.allows the s
7330: 70 65 63 69 66 69 63 61 74 69 6f 6e 20 6f 66 20  pecification of 
7340: 61 6e 20 61 6c 74 65 72 6e 61 74 69 76 65 20 64  an alternative d
7350: 65 66 61 75 6c 74 0a 63 6f 6e 73 74 72 61 69 6e  efault.constrain
7360: 74 20 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c  t conflict resol
7370: 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 20  ution algorithm 
7380: 66 6f 72 20 74 68 61 74 20 63 6f 6e 73 74 72 61  for that constra
7390: 69 6e 74 2e 0a 5e 49 66 20 6e 6f 20 63 6f 6e 66  int..^If no conf
73a0: 6c 69 63 74 20 63 6c 61 75 73 65 20 69 73 20 73  lict clause is s
73b0: 70 65 63 69 66 69 65 64 2c 20 74 68 65 20 41 42  pecified, the AB
73c0: 4f 52 54 20 61 6c 67 6f 72 69 74 68 6d 20 69 73  ORT algorithm is
73d0: 20 75 73 65 64 2e 0a 5e 44 69 66 66 65 72 65 6e   used..^Differen
73e0: 74 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 77 69  t constraints wi
73f0: 74 68 69 6e 20 74 68 65 20 73 61 6d 65 0a 74 61  thin the same.ta
7400: 62 6c 65 20 6d 61 79 20 68 61 76 65 20 64 69 66  ble may have dif
7410: 66 65 72 65 6e 74 20 63 6f 6e 66 6c 69 63 74 20  ferent conflict 
7420: 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72  resolution algor
7430: 69 74 68 6d 73 2e 0a 5e 49 66 20 61 6e 20 5b 49  ithms..^If an [I
7440: 4e 53 45 52 54 5d 20 6f 72 20 5b 55 50 44 41 54  NSERT] or [UPDAT
7450: 45 5d 20 73 74 61 74 65 6d 65 6e 74 20 73 70 65  E] statement spe
7460: 63 69 66 69 65 73 20 61 20 63 6f 6e 66 6c 69 63  cifies a conflic
7470: 74 0a 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67  t.resolution alg
7480: 6f 72 69 74 68 6d 2c 20 74 68 65 6e 20 74 68 65  orithm, then the
7490: 20 61 6c 67 6f 72 69 74 68 6d 20 73 70 65 63 69   algorithm speci
74a0: 66 69 65 64 20 6f 6e 20 74 68 65 20 49 4e 53 45  fied on the INSE
74b0: 52 54 20 6f 72 0a 55 50 44 41 54 45 20 73 74 61  RT or.UPDATE sta
74c0: 74 65 6d 65 6e 74 20 6f 76 65 72 72 69 64 65 73  tement overrides
74d0: 20 74 68 65 20 61 6c 67 6f 72 69 74 68 6d 20 73   the algorithm s
74e0: 70 65 63 69 66 69 65 64 20 69 6e 20 74 68 65 20  pecified in the 
74f0: 0a 43 52 45 41 54 45 20 54 41 42 4c 45 20 73 74  .CREATE TABLE st
7500: 61 74 65 6d 65 6e 74 2e 0a 53 65 65 20 74 68 65  atement..See the
7510: 20 73 65 63 74 69 6f 6e 20 74 69 74 6c 65 64 0a   section titled.
7520: 5b 4f 4e 20 43 4f 4e 46 4c 49 43 54 5d 20 66 6f  [ON CONFLICT] fo
7530: 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66  r additional inf
7540: 6f 72 6d 61 74 69 6f 6e 2e 3c 2f 70 3e 0a 0a 3c  ormation.</p>..<
7550: 70 3e 43 48 45 43 4b 20 63 6f 6e 73 74 72 61 69  p>CHECK constrai
7560: 6e 74 73 20 61 72 65 20 73 75 70 70 6f 72 74 65  nts are supporte
7570: 64 20 61 73 20 6f 66 20 5b 76 65 72 73 69 6f 6e  d as of [version
7580: 20 33 2e 33 2e 30 5d 2e 20 20 50 72 69 6f 72 0a   3.3.0].  Prior.
7590: 74 6f 20 76 65 72 73 69 6f 6e 20 33 2e 33 2e 30  to version 3.3.0
75a0: 2c 20 43 48 45 43 4b 20 63 6f 6e 73 74 72 61 69  , CHECK constrai
75b0: 6e 74 73 20 77 65 72 65 20 70 61 72 73 65 64 20  nts were parsed 
75c0: 62 75 74 20 6e 6f 74 20 65 6e 66 6f 72 63 65 64  but not enforced
75d0: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20 6e  .</p>..<p>^The n
75e0: 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73  umber of columns
75f0: 20 69 6e 20 61 20 74 61 62 6c 65 20 69 73 20 6c   in a table is l
7600: 69 6d 69 74 65 64 20 62 79 20 74 68 65 0a 5b 53  imited by the.[S
7610: 51 4c 49 54 45 5f 4d 41 58 5f 43 4f 4c 55 4d 4e  QLITE_MAX_COLUMN
7620: 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 70  ] compile-time p
7630: 61 72 61 6d 65 74 65 72 2e 0a 5e 41 20 73 69 6e  arameter..^A sin
7640: 67 6c 65 20 72 6f 77 20 6f 66 20 61 20 74 61 62  gle row of a tab
7650: 6c 65 20 63 61 6e 6e 6f 74 20 73 74 6f 72 65 20  le cannot store 
7660: 6d 6f 72 65 20 74 68 61 6e 0a 5b 53 51 4c 49 54  more than.[SQLIT
7670: 45 5f 4d 41 58 5f 4c 45 4e 47 54 48 5d 20 62 79  E_MAX_LENGTH] by
7680: 74 65 73 20 6f 66 20 64 61 74 61 2e 0a 5e 42 6f  tes of data..^Bo
7690: 74 68 20 6f 66 20 74 68 65 73 65 20 6c 69 6d 69  th of these limi
76a0: 74 73 20 63 61 6e 20 62 65 20 6c 6f 77 65 72 65  ts can be lowere
76b0: 64 20 61 74 20 72 75 6e 74 69 6d 65 20 75 73 69  d at runtime usi
76c0: 6e 67 20 74 68 65 0a 5b 73 71 6c 69 74 65 33 5f  ng the.[sqlite3_
76d0: 6c 69 6d 69 74 28 29 5d 20 43 2f 43 2b 2b 20 69  limit()] C/C++ i
76e0: 6e 74 65 72 66 61 63 65 2e 3c 2f 70 3e 0a 0a 0a  nterface.</p>...
76f0: 3c 70 3e 5e 54 68 65 20 43 52 45 41 54 45 20 54  <p>^The CREATE T
7700: 41 42 4c 45 20 41 53 20 66 6f 72 6d 20 64 65 66  ABLE AS form def
7710: 69 6e 65 73 20 74 68 65 20 74 61 62 6c 65 20 74  ines the table t
7720: 6f 20 62 65 0a 74 68 65 20 72 65 73 75 6c 74 20  o be.the result 
7730: 73 65 74 20 6f 66 20 61 20 71 75 65 72 79 2e 20  set of a query. 
7740: 20 5e 54 68 65 20 6e 61 6d 65 73 20 6f 66 20 74   ^The names of t
7750: 68 65 20 74 61 62 6c 65 20 63 6f 6c 75 6d 6e 73  he table columns
7760: 20 61 72 65 0a 74 68 65 20 6e 61 6d 65 73 20 6f   are.the names o
7770: 66 20 74 68 65 20 63 6f 6c 75 6d 6e 73 20 69 6e  f the columns in
7780: 20 74 68 65 20 72 65 73 75 6c 74 2e 3c 2f 70 3e   the result.</p>
7790: 0a 0a 3c 70 3e 5e 49 66 20 74 68 65 20 6f 70 74  ..<p>^If the opt
77a0: 69 6f 6e 61 6c 20 49 46 20 4e 4f 54 20 45 58 49  ional IF NOT EXI
77b0: 53 54 53 20 63 6c 61 75 73 65 20 69 73 20 70 72  STS clause is pr
77c0: 65 73 65 6e 74 20 61 6e 64 20 61 6e 6f 74 68 65  esent and anothe
77d0: 72 20 74 61 62 6c 65 0a 77 69 74 68 20 74 68 65  r table.with the
77e0: 20 73 61 6d 65 20 6e 61 6d 65 20 61 6c 65 61 64   same name alead
77f0: 79 20 65 78 69 73 74 73 2c 20 74 68 65 6e 20 74  y exists, then t
7800: 68 69 73 20 63 6f 6d 6d 61 6e 64 20 62 65 63 6f  his command beco
7810: 6d 65 73 20 61 20 6e 6f 2d 6f 70 2e 3c 2f 70 3e  mes a no-op.</p>
7820: 0a 0a 3c 70 3e 5e 54 61 62 6c 65 73 20 61 72 65  ..<p>^Tables are
7830: 20 72 65 6d 6f 76 65 64 20 75 73 69 6e 67 20 74   removed using t
7840: 68 65 20 5b 44 52 4f 50 20 54 41 42 4c 45 5d 20  he [DROP TABLE] 
7850: 73 74 61 74 65 6d 65 6e 74 2e 20 20 3c 2f 70 3e  statement.  </p>
7860: 0a 0a 3c 74 63 6c 3e 68 64 5f 66 72 61 67 6d 65  ..<tcl>hd_fragme
7870: 6e 74 20 72 6f 77 69 64 20 7b 49 4e 54 45 47 45  nt rowid {INTEGE
7880: 52 20 50 52 49 4d 41 52 59 20 4b 45 59 7d 20 52  R PRIMARY KEY} R
7890: 4f 57 49 44 20 72 6f 77 69 64 3c 2f 74 63 6c 3e  OWID rowid</tcl>
78a0: 0a 3c 68 33 3e 52 4f 57 49 44 73 20 61 6e 64 20  .<h3>ROWIDs and 
78b0: 74 68 65 20 49 4e 54 45 47 45 52 20 50 52 49 4d  the INTEGER PRIM
78c0: 41 52 59 20 4b 45 59 3c 2f 68 33 3e 0a 0a 3c 70  ARY KEY</h3>..<p
78d0: 3e 5e 45 76 65 72 79 20 72 6f 77 20 6f 66 20 65  >^Every row of e
78e0: 76 65 72 79 20 53 51 4c 69 74 65 20 74 61 62 6c  very SQLite tabl
78f0: 65 20 68 61 73 20 61 20 36 34 2d 62 69 74 20 73  e has a 64-bit s
7900: 69 67 6e 65 64 20 69 6e 74 65 67 65 72 20 6b 65  igned integer ke
7910: 79 20 0a 74 68 61 74 20 69 73 20 75 6e 69 71 75  y .that is uniqu
7920: 65 20 77 69 74 68 69 6e 20 74 68 65 20 73 61 6d  e within the sam
7930: 65 20 74 61 62 6c 65 2e 0a 54 68 69 73 20 69 6e  e table..This in
7940: 74 65 67 65 72 20 69 73 20 75 73 75 61 6c 6c 79  teger is usually
7950: 20 63 61 6c 6c 65 64 20 74 68 65 20 22 72 6f 77   called the "row
7960: 69 64 22 2e 20 20 5e 54 68 65 20 72 6f 77 69 64  id".  ^The rowid
7970: 20 69 73 20 74 68 65 20 61 63 74 75 61 6c 20 6b   is the actual k
7980: 65 79 20 75 73 65 64 0a 69 6e 20 74 68 65 20 42  ey used.in the B
7990: 2d 54 72 65 65 20 74 68 61 74 20 69 6d 70 6c 65  -Tree that imple
79a0: 6d 65 6e 74 73 20 61 6e 20 53 51 4c 69 74 65 20  ments an SQLite 
79b0: 74 61 62 6c 65 2e 20 20 5e 52 6f 77 73 20 61 72  table.  ^Rows ar
79c0: 65 20 73 74 6f 72 65 64 20 69 6e 0a 72 6f 77 69  e stored in.rowi
79d0: 64 20 6f 72 64 65 72 2e 20 5e 54 68 65 0a 72 6f  d order. ^The.ro
79e0: 77 69 64 20 76 61 6c 75 65 20 63 61 6e 20 62 65  wid value can be
79f0: 20 61 63 63 65 73 73 65 64 20 75 73 69 6e 67 20   accessed using 
7a00: 6f 6e 65 20 6f 66 20 74 68 65 20 73 70 65 63 69  one of the speci
7a10: 61 6c 20 6e 61 6d 65 73 0a 22 3c 62 3e 52 4f 57  al names."<b>ROW
7a20: 49 44 3c 2f 62 3e 22 2c 20 22 3c 62 3e 4f 49 44  ID</b>", "<b>OID
7a30: 3c 2f 62 3e 22 2c 20 6f 72 20 22 3c 62 3e 5f 52  </b>", or "<b>_R
7a40: 4f 57 49 44 5f 3c 2f 62 3e 22 20 61 73 73 75 6d  OWID_</b>" assum
7a50: 69 6e 67 20 74 68 6f 73 65 20 6e 61 6d 65 73 0a  ing those names.
7a60: 61 72 65 20 6e 6f 20 75 73 65 64 20 62 79 20 6f  are no used by o
7a70: 74 68 65 72 20 63 6f 6e 76 65 6e 74 69 6f 6e 61  ther conventiona
7a80: 6c 20 74 61 62 6c 65 20 63 6f 6c 75 6d 6e 73 2e  l table columns.
7a90: 3c 2f 70 3e 0a 0a 3c 70 3e 0a 5e 49 66 20 61 20  </p>..<p>.^If a 
7aa0: 63 6f 6c 75 6d 6e 20 69 73 20 64 65 63 6c 61 72  column is declar
7ab0: 65 64 20 74 6f 20 62 65 20 61 6e 20 49 4e 54 45  ed to be an INTE
7ac0: 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 2c  GER PRIMARY KEY,
7ad0: 20 74 68 65 6e 20 74 68 61 74 20 63 6f 6c 75 6d   then that colum
7ae0: 6e 20 69 73 20 6e 6f 74 0a 61 20 22 72 65 61 6c  n is not.a "real
7af0: 22 20 64 61 74 61 62 61 73 65 20 63 6f 6c 75 6d  " database colum
7b00: 6e 20 62 75 74 20 69 6e 73 74 65 61 64 20 62 65  n but instead be
7b10: 63 6f 6d 65 73 0a 61 6e 20 61 6c 69 61 73 20 66  comes.an alias f
7b20: 6f 72 20 74 68 65 20 72 6f 77 69 64 2e 20 20 5e  or the rowid.  ^
7b30: 55 6e 6c 69 6b 65 20 6e 6f 72 6d 61 6c 20 53 51  Unlike normal SQ
7b40: 4c 69 74 65 20 63 6f 6c 75 6d 6e 73 2c 20 74 68  Lite columns, th
7b50: 65 20 72 6f 77 69 64 0a 6d 75 73 74 20 62 65 20  e rowid.must be 
7b60: 61 20 6e 6f 6e 2d 4e 55 4c 4c 20 69 6e 74 65 67  a non-NULL integ
7b70: 65 72 20 76 61 6c 75 65 2e 20 20 5e 54 68 65 20  er value.  ^The 
7b80: 72 6f 77 69 64 20 69 73 20 6e 6f 74 20 61 62 6c  rowid is not abl
7b90: 65 20 74 6f 20 68 6f 6c 64 0a 66 6c 6f 61 74 69  e to hold.floati
7ba0: 6e 67 20 70 6f 69 6e 74 20 76 61 6c 75 65 73 2c  ng point values,
7bb0: 20 73 74 72 69 6e 67 73 2c 20 42 4c 4f 42 73 2c   strings, BLOBs,
7bc0: 20 6f 72 20 4e 55 4c 4c 73 2e 3c 2f 70 3e 0a 0a   or NULLs.</p>..
7bd0: 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 69 3e 0a  <blockquote><i>.
7be0: 5e 41 6e 20 49 4e 54 45 47 45 52 20 50 52 49 4d  ^An INTEGER PRIM
7bf0: 41 52 59 20 4b 45 59 20 63 6f 6c 75 6d 6e 20 69  ARY KEY column i
7c00: 73 20 61 6e 20 61 6c 69 61 73 20 66 6f 72 20 74  s an alias for t
7c10: 68 65 20 36 34 2d 62 69 74 20 73 69 67 6e 65 64  he 64-bit signed
7c20: 20 69 6e 74 65 67 65 72 20 72 6f 77 69 64 2e 0a   integer rowid..
7c30: 3c 2f 69 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65  </i></blockquote
7c40: 3e 0a 0a 3c 70 3e 5e 41 6e 20 49 4e 54 45 47 45  >..<p>^An INTEGE
7c50: 52 20 50 52 49 4d 41 52 59 20 4b 45 59 20 63 6f  R PRIMARY KEY co
7c60: 6c 75 6d 6e 20 63 61 6e 20 61 6c 73 6f 20 69 6e  lumn can also in
7c70: 63 6c 75 64 65 20 74 68 65 0a 6b 65 79 77 6f 72  clude the.keywor
7c80: 64 20 5b 41 55 54 4f 49 4e 43 52 45 4d 45 4e 54  d [AUTOINCREMENT
7c90: 5d 2e 20 20 5e 54 68 65 20 5b 41 55 54 4f 49 4e  ].  ^The [AUTOIN
7ca0: 43 52 45 4d 45 4e 54 5d 20 6b 65 79 77 6f 72 64  CREMENT] keyword
7cb0: 20 6d 6f 64 69 66 69 65 64 20 74 68 65 20 77 61   modified the wa
7cc0: 79 0a 74 68 61 74 20 42 2d 54 72 65 65 20 6b 65  y.that B-Tree ke
7cd0: 79 73 20 61 72 65 20 61 75 74 6f 6d 61 74 69 63  ys are automatic
7ce0: 61 6c 6c 79 20 67 65 6e 65 72 61 74 65 64 2e 20  ally generated. 
7cf0: 20 41 64 64 69 74 69 6f 6e 61 6c 20 64 65 74 61   Additional deta
7d00: 69 6c 0a 6f 6e 20 61 75 74 6f 6d 61 74 69 63 20  il.on automatic 
7d10: 42 2d 54 72 65 65 20 6b 65 79 20 67 65 6e 65 72  B-Tree key gener
7d20: 61 74 69 6f 6e 20 69 73 20 61 76 61 69 6c 61 62  ation is availab
7d30: 6c 65 0a 3c 61 20 68 72 65 66 3d 22 61 75 74 6f  le.<a href="auto
7d40: 69 6e 63 2e 68 74 6d 6c 22 3e 73 65 70 61 72 61  inc.html">separa
7d50: 74 65 6c 79 3c 2f 61 3e 2e 3c 2f 70 3e 0a 0a 3c  tely</a>.</p>..<
7d60: 70 3e 5e 54 68 65 20 73 70 65 63 69 61 6c 20 62  p>^The special b
7d70: 65 68 61 76 69 6f 72 20 6f 66 20 49 4e 54 45 47  ehavior of INTEG
7d80: 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 0a 69  ER PRIMARY KEY.i
7d90: 73 20 6f 6e 6c 79 20 61 76 61 69 6c 61 62 6c 65  s only available
7da0: 20 69 66 20 74 68 65 20 74 79 70 65 20 6e 61 6d   if the type nam
7db0: 65 20 69 73 20 65 78 61 63 74 6c 79 20 22 49 4e  e is exactly "IN
7dc0: 54 45 47 45 52 22 20 69 6e 20 61 6e 79 20 6d 69  TEGER" in any mi
7dd0: 78 74 75 72 65 0a 6f 66 20 75 70 70 65 72 20 61  xture.of upper a
7de0: 6e 64 20 6c 6f 77 65 72 20 63 61 73 65 2e 20 20  nd lower case.  
7df0: 5e 4f 74 68 65 72 20 69 6e 74 65 67 65 72 20 74  ^Other integer t
7e00: 79 70 65 20 6e 61 6d 65 73 0a 6c 69 6b 65 20 22  ype names.like "
7e10: 49 4e 54 22 20 6f 72 20 22 42 49 47 49 4e 54 22  INT" or "BIGINT"
7e20: 20 6f 72 20 22 53 48 4f 52 54 20 49 4e 54 45 47   or "SHORT INTEG
7e30: 45 52 22 20 6f 72 20 22 55 4e 53 49 47 4e 45 44  ER" or "UNSIGNED
7e40: 20 49 4e 54 45 47 45 52 22 0a 63 61 75 73 65 73   INTEGER".causes
7e50: 20 74 68 65 20 70 72 69 6d 61 72 79 20 6b 65 79   the primary key
7e60: 20 63 6f 6c 75 6d 6e 20 74 6f 20 62 65 68 61 76   column to behav
7e70: 65 20 61 73 20 61 6e 20 6f 72 64 69 6e 61 72 79  e as an ordinary
7e80: 20 74 61 62 6c 65 20 63 6f 6c 75 6d 6e 20 77 69   table column wi
7e90: 74 68 0a 69 6e 74 65 67 65 72 20 5b 61 66 66 69  th.integer [affi
7ea0: 6e 69 74 79 5d 20 61 6e 64 20 61 20 75 6e 69 71  nity] and a uniq
7eb0: 75 65 20 69 6e 64 65 78 2c 20 6e 6f 74 20 61 73  ue index, not as
7ec0: 20 61 6e 20 61 6c 69 61 73 20 66 6f 72 20 74 68   an alias for th
7ed0: 65 20 72 6f 77 69 64 2e 0a 5e 28 54 68 65 20 73  e rowid..^(The s
7ee0: 70 65 63 69 61 6c 20 62 65 68 61 76 69 6f 72 20  pecial behavior 
7ef0: 6f 66 20 49 4e 54 45 47 45 52 20 50 52 49 4d 41  of INTEGER PRIMA
7f00: 52 59 20 4b 45 59 20 69 73 20 6f 6e 6c 79 20 61  RY KEY is only a
7f10: 76 61 69 6c 61 62 6c 65 20 69 66 20 74 68 65 0a  vailable if the.
7f20: 70 72 69 6d 61 72 79 20 6b 65 79 20 69 73 20 61  primary key is a
7f30: 20 73 69 6e 67 6c 65 20 63 6f 6c 75 6d 6e 2e 20   single column. 
7f40: 20 4d 75 6c 74 69 2d 63 6f 6c 75 6d 6e 20 70 72   Multi-column pr
7f50: 69 6d 61 72 79 20 6b 65 79 73 20 64 6f 20 6e 6f  imary keys do no
7f60: 74 20 62 65 63 6f 6d 65 0a 61 6c 69 61 73 65 73  t become.aliases
7f70: 20 66 6f 72 20 74 68 65 20 72 6f 77 69 64 2e 29   for the rowid.)
7f80: 5e 0a 5e 54 68 65 20 41 55 54 4f 49 4e 43 52 45  ^.^The AUTOINCRE
7f90: 4d 45 4e 54 20 6b 65 79 77 6f 72 64 20 6f 6e 6c  MENT keyword onl
7fa0: 79 20 77 6f 72 6b 73 20 6f 6e 20 61 20 63 6f 6c  y works on a col
7fb0: 75 6d 6e 20 74 68 61 74 20 69 73 20 61 6e 20 61  umn that is an a
7fc0: 6c 69 61 73 0a 66 6f 72 20 74 68 65 20 72 6f 77  lias.for the row
7fd0: 69 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 4e 6f 74 65  id.</p>..<p>Note
7fe0: 20 74 68 61 74 20 73 65 61 72 63 68 65 73 20 61   that searches a
7ff0: 67 61 69 6e 73 74 20 61 20 72 6f 77 69 64 20 61  gainst a rowid a
8000: 72 65 20 67 65 6e 65 72 61 6c 6c 79 20 61 62 6f  re generally abo
8010: 75 74 20 74 77 69 63 65 20 61 73 0a 66 61 73 74  ut twice as.fast
8020: 20 61 73 20 73 65 61 72 63 68 65 73 20 61 67 61   as searches aga
8030: 69 6e 73 74 20 61 6e 79 20 6f 74 68 65 72 20 50  inst any other P
8040: 52 49 4d 41 52 59 20 4b 45 59 20 6f 72 20 69 6e  RIMARY KEY or in
8050: 64 65 78 65 64 20 76 61 6c 75 65 2e 0a 3c 2f 70  dexed value..</p
8060: 3e 0a 0a 3c 70 3e 3c 62 3e 47 6f 6f 66 79 20 62  >..<p><b>Goofy b
8070: 65 68 61 76 69 6f 72 20 61 6c 65 72 74 3a 3c 2f  ehavior alert:</
8080: 62 3e 20 20 5e 28 54 68 65 20 66 6f 6c 6c 6f 77  b>  ^(The follow
8090: 69 6e 67 20 74 68 72 65 65 20 64 65 63 6c 61 72  ing three declar
80a0: 61 74 69 6f 6e 73 20 61 6c 6c 20 63 61 75 73 65  ations all cause
80b0: 0a 74 68 65 20 63 6f 6c 75 6d 6e 20 22 78 22 20  .the column "x" 
80c0: 62 65 20 61 6e 20 61 6c 69 61 73 20 66 6f 72 20  be an alias for 
80d0: 74 68 65 20 72 6f 77 69 64 3a 3c 2f 70 3e 0a 0a  the rowid:</p>..
80e0: 3c 75 6c 3e 0a 3c 6c 69 3e 3c 74 74 3e 43 52 45  <ul>.<li><tt>CRE
80f0: 41 54 45 20 54 41 42 4c 45 20 74 28 78 20 49 4e  ATE TABLE t(x IN
8100: 54 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45  TEGER PRIMARY KE
8110: 59 20 41 53 43 2c 20 79 2c 20 7a 29 3b 3c 2f 74  Y ASC, y, z);</t
8120: 74 3e 0a 3c 6c 69 3e 3c 74 74 3e 43 52 45 41 54  t>.<li><tt>CREAT
8130: 45 20 54 41 42 4c 45 20 74 28 78 20 49 4e 54 45  E TABLE t(x INTE
8140: 47 45 52 2c 20 79 2c 20 7a 2c 20 50 52 49 4d 41  GER, y, z, PRIMA
8150: 52 59 20 4b 45 59 28 78 20 41 53 43 29 29 3b 3c  RY KEY(x ASC));<
8160: 2f 74 74 3e 0a 3c 6c 69 3e 3c 74 74 3e 43 52 45  /tt>.<li><tt>CRE
8170: 41 54 45 20 54 41 42 4c 45 20 74 28 78 20 49 4e  ATE TABLE t(x IN
8180: 54 45 47 45 52 2c 20 79 2c 20 7a 2c 20 50 52 49  TEGER, y, z, PRI
8190: 4d 41 52 59 20 4b 45 59 28 78 20 44 45 53 43 29  MARY KEY(x DESC)
81a0: 29 3b 3c 2f 74 74 3e 0a 3c 2f 75 6c 3e 29 5e 0a  );</tt>.</ul>)^.
81b0: 0a 3c 70 3e 42 75 74 2c 20 69 6e 20 63 6f 6e 74  .<p>But, in cont
81c0: 72 61 73 74 2c 20 5e 28 74 68 65 20 66 6f 6c 6c  rast, ^(the foll
81d0: 6f 77 69 6e 67 20 64 65 63 6c 61 72 61 74 69 6f  owing declaratio
81e0: 6e 20 64 6f 65 73 20 3c 75 3e 6e 6f 74 3c 2f 75  n does <u>not</u
81f0: 3e 20 72 65 73 75 6c 74 20 69 6e 0a 22 78 22 20  > result in."x" 
8200: 62 65 69 6e 67 20 61 6e 20 61 6c 69 61 73 20 66  being an alias f
8210: 6f 72 20 74 68 65 20 72 6f 77 69 64 3a 3c 2f 70  or the rowid:</p
8220: 3e 0a 0a 3c 75 6c 3e 0a 3c 6c 69 3e 3c 74 74 3e  >..<ul>.<li><tt>
8230: 43 52 45 41 54 45 20 54 41 42 4c 45 20 74 28 78  CREATE TABLE t(x
8240: 20 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59   INTEGER PRIMARY
8250: 20 4b 45 59 20 44 45 53 43 2c 20 79 2c 20 7a 29   KEY DESC, y, z)
8260: 3b 3c 2f 74 74 3e 0a 3c 2f 75 6c 3e 29 5e 0a 0a  ;</tt>.</ul>)^..
8270: 3c 70 3e 54 68 69 73 20 61 73 79 6d 6d 65 74 72  <p>This asymmetr
8280: 69 63 61 6c 20 62 65 68 61 76 69 6f 72 20 69 73  ical behavior is
8290: 20 75 6e 66 6f 72 74 75 6e 61 74 65 20 61 6e 64   unfortunate and
82a0: 20 69 73 20 72 65 61 6c 6c 79 20 64 75 65 20 74   is really due t
82b0: 6f 20 61 20 62 75 67 0a 69 6e 20 74 68 65 20 70  o a bug.in the p
82c0: 61 72 73 65 72 20 69 6e 20 65 61 72 6c 79 20 76  arser in early v
82d0: 65 72 73 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74  ersions of SQLit
82e0: 65 2e 20 20 42 75 74 20 66 69 78 69 6e 67 20 74  e.  But fixing t
82f0: 68 65 20 62 75 67 20 77 6f 75 6c 64 0a 72 65 73  he bug would.res
8300: 75 6c 74 20 69 6e 20 76 65 72 79 20 73 65 72 69  ult in very seri
8310: 6f 75 73 20 62 61 63 6b 77 61 72 64 73 20 69 6e  ous backwards in
8320: 63 6f 6d 70 61 74 69 62 69 6c 69 74 69 65 73 2e  compatibilities.
8330: 20 20 54 68 65 20 53 51 4c 69 74 65 20 64 65 76    The SQLite dev
8340: 65 6c 6f 70 65 72 73 0a 66 65 65 6c 20 74 68 61  elopers.feel tha
8350: 74 20 67 6f 6f 66 79 20 62 65 68 61 76 69 6f 72  t goofy behavior
8360: 20 69 6e 20 61 6e 20 63 6f 72 6e 65 72 20 63 61   in an corner ca
8370: 73 65 20 69 73 20 66 61 72 20 62 65 74 74 65 72  se is far better
8380: 20 74 68 61 6e 0a 61 20 63 6f 6d 70 61 74 69 62   than.a compatib
8390: 69 6c 69 74 79 20 62 72 65 61 6b 2c 20 73 6f 20  ility break, so 
83a0: 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 62 65 68  the original beh
83b0: 61 76 69 6f 72 20 69 73 20 72 65 74 61 69 6e 65  avior is retaine
83c0: 64 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23  d.</p>..<tcl>.##
83d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
83e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
83f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8400: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8410: 23 23 23 23 23 23 23 23 23 23 23 23 0a 53 65 63  ############.Sec
8420: 74 69 6f 6e 20 7b 43 52 45 41 54 45 20 54 52 49  tion {CREATE TRI
8430: 47 47 45 52 7d 20 63 72 65 61 74 65 74 72 69 67  GGER} createtrig
8440: 67 65 72 20 7b 7b 43 52 45 41 54 45 20 54 52 49  ger {{CREATE TRI
8450: 47 47 45 52 7d 7d 0a 0a 42 75 62 62 6c 65 44 69  GGER}}..BubbleDi
8460: 61 67 72 61 6d 20 63 72 65 61 74 65 2d 74 72 69  agram create-tri
8470: 67 67 65 72 2d 73 74 6d 74 20 31 0a 3c 2f 74 63  gger-stmt 1.</tc
8480: 6c 3e 0a 0a 3c 70 3e 5e 54 68 65 20 43 52 45 41  l>..<p>^The CREA
8490: 54 45 20 54 52 49 47 47 45 52 20 73 74 61 74 65  TE TRIGGER state
84a0: 6d 65 6e 74 20 69 73 20 75 73 65 64 20 74 6f 20  ment is used to 
84b0: 61 64 64 20 74 72 69 67 67 65 72 73 20 74 6f 20  add triggers to 
84c0: 74 68 65 20 0a 64 61 74 61 62 61 73 65 20 73 63  the .database sc
84d0: 68 65 6d 61 2e 20 5e 54 72 69 67 67 65 72 73 20  hema. ^Triggers 
84e0: 61 72 65 20 64 61 74 61 62 61 73 65 20 6f 70 65  are database ope
84f0: 72 61 74 69 6f 6e 73 20 0a 74 68 61 74 20 61 72  rations .that ar
8500: 65 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20  e automatically 
8510: 70 65 72 66 6f 72 6d 65 64 20 77 68 65 6e 20 61  performed when a
8520: 20 73 70 65 63 69 66 69 65 64 20 64 61 74 61 62   specified datab
8530: 61 73 65 20 65 76 65 6e 74 0a 6f 63 63 75 72 73  ase event.occurs
8540: 2e 20 20 3c 2f 70 3e 0a 0a 3c 70 3e 5e 41 20 74  .  </p>..<p>^A t
8550: 72 69 67 67 65 72 20 6d 61 79 20 62 65 20 73 70  rigger may be sp
8560: 65 63 69 66 69 65 64 20 74 6f 20 66 69 72 65 20  ecified to fire 
8570: 77 68 65 6e 65 76 65 72 20 61 20 5b 44 45 4c 45  whenever a [DELE
8580: 54 45 5d 2c 20 5b 49 4e 53 45 52 54 5d 2c 0a 6f  TE], [INSERT],.o
8590: 72 20 5b 55 50 44 41 54 45 5d 20 6f 66 20 61 0a  r [UPDATE] of a.
85a0: 70 61 72 74 69 63 75 6c 61 72 20 64 61 74 61 62  particular datab
85b0: 61 73 65 20 74 61 62 6c 65 20 6f 63 63 75 72 73  ase table occurs
85c0: 2c 20 6f 72 20 77 68 65 6e 65 76 65 72 20 61 6e  , or whenever an
85d0: 20 5b 55 50 44 41 54 45 5d 20 6f 63 63 75 72 73   [UPDATE] occurs
85e0: 20 6f 6e 0a 6f 6e 20 6f 6e 65 20 6f 72 20 6d 6f   on.on one or mo
85f0: 72 65 20 73 70 65 63 69 66 69 65 64 20 63 6f 6c  re specified col
8600: 75 6d 6e 73 20 6f 66 20 61 20 74 61 62 6c 65 2e  umns of a table.
8610: 3c 2f 70 3e 0a 0a 3c 70 3e 5e 41 74 20 74 68 69  </p>..<p>^At thi
8620: 73 20 74 69 6d 65 20 53 51 4c 69 74 65 20 73 75  s time SQLite su
8630: 70 70 6f 72 74 73 20 6f 6e 6c 79 20 46 4f 52 20  pports only FOR 
8640: 45 41 43 48 20 52 4f 57 20 74 72 69 67 67 65 72  EACH ROW trigger
8650: 73 2c 20 6e 6f 74 20 46 4f 52 20 45 41 43 48 0a  s, not FOR EACH.
8660: 53 54 41 54 45 4d 45 4e 54 20 74 72 69 67 67 65  STATEMENT trigge
8670: 72 73 2e 20 5e 48 65 6e 63 65 20 65 78 70 6c 69  rs. ^Hence expli
8680: 63 69 74 6c 79 20 73 70 65 63 69 66 79 69 6e 67  citly specifying
8690: 20 46 4f 52 20 45 41 43 48 20 52 4f 57 20 69 73   FOR EACH ROW is
86a0: 20 6f 70 74 69 6f 6e 61 6c 2e 0a 5e 46 4f 52 20   optional..^FOR 
86b0: 45 41 43 48 20 52 4f 57 20 69 6d 70 6c 69 65 73  EACH ROW implies
86c0: 20 74 68 61 74 20 74 68 65 20 53 51 4c 20 73 74   that the SQL st
86d0: 61 74 65 6d 65 6e 74 73 20 73 70 65 63 69 66 69  atements specifi
86e0: 65 64 20 69 6e 20 74 68 65 20 74 72 69 67 67 65  ed in the trigge
86f0: 72 0a 6d 61 79 20 62 65 20 65 78 65 63 75 74 65  r.may be execute
8700: 64 20 28 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20  d (depending on 
8710: 74 68 65 20 57 48 45 4e 20 63 6c 61 75 73 65 29  the WHEN clause)
8720: 20 66 6f 72 20 65 61 63 68 20 64 61 74 61 62 61   for each databa
8730: 73 65 20 72 6f 77 20 62 65 69 6e 67 0a 69 6e 73  se row being.ins
8740: 65 72 74 65 64 2c 20 75 70 64 61 74 65 64 20 6f  erted, updated o
8750: 72 20 64 65 6c 65 74 65 64 20 62 79 20 74 68 65  r deleted by the
8760: 20 73 74 61 74 65 6d 65 6e 74 20 63 61 75 73 69   statement causi
8770: 6e 67 20 74 68 65 20 74 72 69 67 67 65 72 20 74  ng the trigger t
8780: 6f 20 66 69 72 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e  o fire.</p>..<p>
8790: 5e 28 42 6f 74 68 20 74 68 65 20 57 48 45 4e 20  ^(Both the WHEN 
87a0: 63 6c 61 75 73 65 20 61 6e 64 20 74 68 65 20 74  clause and the t
87b0: 72 69 67 67 65 72 20 61 63 74 69 6f 6e 73 20 6d  rigger actions m
87c0: 61 79 20 61 63 63 65 73 73 20 65 6c 65 6d 65 6e  ay access elemen
87d0: 74 73 20 6f 66 20 0a 74 68 65 20 72 6f 77 20 62  ts of .the row b
87e0: 65 69 6e 67 20 69 6e 73 65 72 74 65 64 2c 20 64  eing inserted, d
87f0: 65 6c 65 74 65 64 20 6f 72 20 75 70 64 61 74 65  eleted or update
8800: 64 20 75 73 69 6e 67 20 72 65 66 65 72 65 6e 63  d using referenc
8810: 65 73 20 6f 66 20 74 68 65 20 66 6f 72 6d 20 0a  es of the form .
8820: 22 4e 45 57 2e 3c 69 3e 63 6f 6c 75 6d 6e 2d 6e  "NEW.<i>column-n
8830: 61 6d 65 3c 2f 69 3e 22 20 61 6e 64 20 22 4f 4c  ame</i>" and "OL
8840: 44 2e 3c 69 3e 63 6f 6c 75 6d 6e 2d 6e 61 6d 65  D.<i>column-name
8850: 3c 2f 69 3e 22 2c 20 77 68 65 72 65 0a 3c 69 3e  </i>", where.<i>
8860: 63 6f 6c 75 6d 6e 2d 6e 61 6d 65 3c 2f 69 3e 20  column-name</i> 
8870: 69 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 61  is the name of a
8880: 20 63 6f 6c 75 6d 6e 20 66 72 6f 6d 20 74 68 65   column from the
8890: 20 74 61 62 6c 65 20 74 68 61 74 20 74 68 65 20   table that the 
88a0: 74 72 69 67 67 65 72 0a 69 73 20 61 73 73 6f 63  trigger.is assoc
88b0: 69 61 74 65 64 20 77 69 74 68 2e 29 5e 20 5e 28  iated with.)^ ^(
88c0: 4f 4c 44 20 61 6e 64 20 4e 45 57 20 72 65 66 65  OLD and NEW refe
88d0: 72 65 6e 63 65 73 20 6d 61 79 20 6f 6e 6c 79 20  rences may only 
88e0: 62 65 20 75 73 65 64 20 69 6e 20 74 72 69 67 67  be used in trigg
88f0: 65 72 73 20 6f 6e 0a 65 76 65 6e 74 73 20 66 6f  ers on.events fo
8900: 72 20 77 68 69 63 68 20 74 68 65 79 20 61 72 65  r which they are
8910: 20 72 65 6c 65 76 61 6e 74 2c 20 61 73 20 66 6f   relevant, as fo
8920: 6c 6c 6f 77 73 3a 3c 2f 70 3e 0a 0a 3c 74 61 62  llows:</p>..<tab
8930: 6c 65 20 62 6f 72 64 65 72 3d 30 20 63 65 6c 6c  le border=0 cell
8940: 70 61 64 64 69 6e 67 3d 31 30 3e 0a 3c 74 72 3e  padding=10>.<tr>
8950: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
8960: 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 20  " align="right" 
8970: 77 69 64 74 68 3d 31 32 30 3e 3c 69 3e 49 4e 53  width=120><i>INS
8980: 45 52 54 3c 2f 69 3e 3c 2f 74 64 3e 0a 3c 74 64  ERT</i></td>.<td
8990: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 4e 45   valign="top">NE
89a0: 57 20 72 65 66 65 72 65 6e 63 65 73 20 61 72 65  W references are
89b0: 20 76 61 6c 69 64 3c 2f 74 64 3e 0a 3c 2f 74 72   valid</td>.</tr
89c0: 3e 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67  >.<tr>.<td valig
89d0: 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72  n="top" align="r
89e0: 69 67 68 74 22 20 77 69 64 74 68 3d 31 32 30 3e  ight" width=120>
89f0: 3c 69 3e 55 50 44 41 54 45 3c 2f 69 3e 3c 2f 74  <i>UPDATE</i></t
8a00: 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  d>.<td valign="t
8a10: 6f 70 22 3e 4e 45 57 20 61 6e 64 20 4f 4c 44 20  op">NEW and OLD 
8a20: 72 65 66 65 72 65 6e 63 65 73 20 61 72 65 20 76  references are v
8a30: 61 6c 69 64 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a  alid</td>.</tr>.
8a40: 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  <tr>.<td valign=
8a50: 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67  "top" align="rig
8a60: 68 74 22 20 77 69 64 74 68 3d 31 32 30 3e 3c 69  ht" width=120><i
8a70: 3e 44 45 4c 45 54 45 3c 2f 69 3e 3c 2f 74 64 3e  >DELETE</i></td>
8a80: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
8a90: 22 3e 4f 4c 44 20 72 65 66 65 72 65 6e 63 65 73  ">OLD references
8aa0: 20 61 72 65 20 76 61 6c 69 64 3c 2f 74 64 3e 0a   are valid</td>.
8ab0: 3c 2f 74 72 3e 0a 3c 2f 74 61 62 6c 65 3e 0a 3c  </tr>.</table>.<
8ac0: 2f 70 3e 29 5e 0a 0a 3c 70 3e 5e 49 66 20 61 20  /p>)^..<p>^If a 
8ad0: 57 48 45 4e 20 63 6c 61 75 73 65 20 69 73 20 73  WHEN clause is s
8ae0: 75 70 70 6c 69 65 64 2c 20 74 68 65 20 53 51 4c  upplied, the SQL
8af0: 20 73 74 61 74 65 6d 65 6e 74 73 20 73 70 65 63   statements spec
8b00: 69 66 69 65 64 0a 61 72 65 20 6f 6e 6c 79 20 65  ified.are only e
8b10: 78 65 63 75 74 65 64 20 66 6f 72 20 72 6f 77 73  xecuted for rows
8b20: 20 66 6f 72 20 77 68 69 63 68 20 74 68 65 20 57   for which the W
8b30: 48 45 4e 0a 63 6c 61 75 73 65 20 69 73 20 74 72  HEN.clause is tr
8b40: 75 65 2e 20 5e 49 66 20 6e 6f 20 57 48 45 4e 20  ue. ^If no WHEN 
8b50: 63 6c 61 75 73 65 20 69 73 20 73 75 70 70 6c 69  clause is suppli
8b60: 65 64 2c 20 74 68 65 20 53 51 4c 20 73 74 61 74  ed, the SQL stat
8b70: 65 6d 65 6e 74 73 0a 61 72 65 20 65 78 65 63 75  ements.are execu
8b80: 74 65 64 20 66 6f 72 20 61 6c 6c 20 72 6f 77 73  ted for all rows
8b90: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20 42  .</p>..<p>^The B
8ba0: 45 46 4f 52 45 20 6f 72 20 41 46 54 45 52 20 6b  EFORE or AFTER k
8bb0: 65 79 77 6f 72 64 20 64 65 74 65 72 6d 69 6e 65  eyword determine
8bc0: 73 20 77 68 65 6e 20 74 68 65 20 74 72 69 67 67  s when the trigg
8bd0: 65 72 20 61 63 74 69 6f 6e 73 0a 77 69 6c 6c 20  er actions.will 
8be0: 62 65 20 65 78 65 63 75 74 65 64 20 72 65 6c 61  be executed rela
8bf0: 74 69 76 65 20 74 6f 20 74 68 65 20 69 6e 73 65  tive to the inse
8c00: 72 74 69 6f 6e 2c 20 6d 6f 64 69 66 69 63 61 74  rtion, modificat
8c10: 69 6f 6e 20 6f 72 20 72 65 6d 6f 76 61 6c 20 6f  ion or removal o
8c20: 66 20 74 68 65 0a 61 73 73 6f 63 69 61 74 65 64  f the.associated
8c30: 20 72 6f 77 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 41   row.</p>..<p>^A
8c40: 6e 20 5b 4f 4e 20 43 4f 4e 46 4c 49 43 54 5d 20  n [ON CONFLICT] 
8c50: 63 6c 61 75 73 65 20 6d 61 79 20 62 65 20 73 70  clause may be sp
8c60: 65 63 69 66 69 65 64 20 61 73 20 70 61 72 74 20  ecified as part 
8c70: 6f 66 20 61 6e 20 5b 55 50 44 41 54 45 5d 20 6f  of an [UPDATE] o
8c80: 72 20 5b 49 4e 53 45 52 54 5d 0a 61 63 74 69 6f  r [INSERT].actio
8c90: 6e 20 77 69 74 68 69 6e 20 74 68 65 20 62 6f 64  n within the bod
8ca0: 79 20 6f 66 20 74 68 65 20 74 72 69 67 67 65 72  y of the trigger
8cb0: 2e 0a 5e 48 6f 77 65 76 65 72 20 69 66 20 61 6e  ..^However if an
8cc0: 20 5b 4f 4e 20 43 4f 4e 46 4c 49 43 54 5d 20 63   [ON CONFLICT] c
8cd0: 6c 61 75 73 65 20 69 73 20 73 70 65 63 69 66 69  lause is specifi
8ce0: 65 64 20 61 73 20 70 61 72 74 20 6f 66 20 0a 74  ed as part of .t
8cf0: 68 65 20 73 74 61 74 65 6d 65 6e 74 20 63 61 75  he statement cau
8d00: 73 69 6e 67 20 74 68 65 20 74 72 69 67 67 65 72  sing the trigger
8d10: 20 74 6f 20 66 69 72 65 2c 20 74 68 65 6e 20 63   to fire, then c
8d20: 6f 6e 66 6c 69 63 74 20 68 61 6e 64 6c 69 6e 67  onflict handling
8d30: 0a 70 6f 6c 69 63 79 20 6f 66 20 74 68 65 20 6f  .policy of the o
8d40: 75 74 65 72 20 73 74 61 74 65 6d 65 6e 74 20 69  uter statement i
8d50: 73 20 75 73 65 64 20 69 6e 73 74 65 61 64 2e 3c  s used instead.<
8d60: 2f 70 3e 0a 0a 3c 70 3e 5e 54 72 69 67 67 65 72  /p>..<p>^Trigger
8d70: 73 20 61 72 65 20 61 75 74 6f 6d 61 74 69 63 61  s are automatica
8d80: 6c 6c 79 20 5b 44 52 4f 50 20 54 52 49 47 47 45  lly [DROP TRIGGE
8d90: 52 20 7c 20 64 72 6f 70 70 65 64 5d 0a 77 68 65  R | dropped].whe
8da0: 6e 20 74 68 65 20 74 61 62 6c 65 20 74 68 61 74  n the table that
8db0: 20 74 68 65 79 20 61 72 65 20 0a 61 73 73 6f 63   they are .assoc
8dc0: 69 61 74 65 64 20 77 69 74 68 20 28 74 68 65 20  iated with (the 
8dd0: 3c 69 3e 74 61 62 6c 65 2d 6e 61 6d 65 3c 2f 69  <i>table-name</i
8de0: 3e 20 74 61 62 6c 65 29 20 69 73 20 0a 5b 44 52  > table) is .[DR
8df0: 4f 50 20 54 41 42 4c 45 20 7c 20 64 72 6f 70 70  OP TABLE | dropp
8e00: 65 64 5d 2e 20 20 5e 48 6f 77 65 76 65 72 20 69  ed].  ^However i
8e10: 66 20 74 68 65 20 74 68 65 20 74 72 69 67 67 65  f the the trigge
8e20: 72 20 61 63 74 69 6f 6e 73 20 72 65 66 65 72 65  r actions refere
8e30: 6e 63 65 0a 6f 74 68 65 72 20 74 61 62 6c 65 73  nce.other tables
8e40: 2c 20 74 68 65 20 74 72 69 67 67 65 72 20 69 73  , the trigger is
8e50: 20 6e 6f 74 20 64 72 6f 70 70 65 64 20 6f 72 20   not dropped or 
8e60: 6d 6f 64 69 66 69 65 64 20 69 66 20 74 68 6f 73  modified if thos
8e70: 65 20 6f 74 68 65 72 0a 74 61 62 6c 65 73 20 61  e other.tables a
8e80: 72 65 20 5b 44 52 4f 50 20 54 41 42 4c 45 20 7c  re [DROP TABLE |
8e90: 20 64 72 6f 70 70 65 64 5d 20 6f 72 20 5b 41 4c   dropped] or [AL
8ea0: 54 45 52 20 54 41 42 4c 45 20 7c 20 6d 6f 64 69  TER TABLE | modi
8eb0: 66 69 65 64 5d 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e  fied].</p>..<p>^
8ec0: 54 72 69 67 67 65 72 73 20 61 72 65 20 72 65 6d  Triggers are rem
8ed0: 6f 76 65 64 20 75 73 69 6e 67 20 74 68 65 20 5b  oved using the [
8ee0: 44 52 4f 50 20 54 52 49 47 47 45 52 5d 20 73 74  DROP TRIGGER] st
8ef0: 61 74 65 6d 65 6e 74 2e 3c 2f 70 3e 0a 0a 3c 68  atement.</p>..<h
8f00: 33 3e 53 79 6e 74 61 78 20 52 65 73 74 72 69 63  3>Syntax Restric
8f10: 74 69 6f 6e 73 20 4f 6e 20 55 50 44 41 54 45 2c  tions On UPDATE,
8f20: 20 44 45 4c 45 54 45 2c 20 61 6e 64 20 49 4e 53   DELETE, and INS
8f30: 45 52 54 20 53 74 61 74 65 6d 65 6e 74 73 20 57  ERT Statements W
8f40: 69 74 68 69 6e 0a 20 20 20 20 54 72 69 67 67 65  ithin.    Trigge
8f50: 72 73 3c 2f 68 33 3e 0a 0a 3c 70 3e 5e 54 68 65  rs</h3>..<p>^The
8f60: 20 5b 55 50 44 41 54 45 5d 2c 20 5b 44 45 4c 45   [UPDATE], [DELE
8f70: 54 45 5d 2c 20 61 6e 64 20 5b 49 4e 53 45 52 54  TE], and [INSERT
8f80: 5d 0a 73 74 61 74 65 6d 65 6e 74 73 20 77 69 74  ].statements wit
8f90: 68 69 6e 20 74 72 69 67 67 65 72 73 20 64 6f 20  hin triggers do 
8fa0: 6e 6f 74 20 73 75 70 70 6f 72 74 0a 74 68 65 20  not support.the 
8fb0: 66 75 6c 6c 20 73 79 6e 74 61 78 20 66 6f 72 20  full syntax for 
8fc0: 5b 55 50 44 41 54 45 5d 2c 20 5b 44 45 4c 45 54  [UPDATE], [DELET
8fd0: 45 5d 2c 20 61 6e 64 20 5b 49 4e 53 45 52 54 5d  E], and [INSERT]
8fe0: 20 73 74 61 74 65 6d 65 6e 74 73 2e 20 20 54 68   statements.  Th
8ff0: 65 20 66 6f 6c 6c 6f 77 69 6e 67 0a 72 65 73 74  e following.rest
9000: 72 69 63 74 69 6f 6e 73 20 61 70 70 6c 79 3a 3c  rictions apply:<
9010: 2f 70 3e 0a 0a 3c 75 6c 3e 0a 3c 6c 69 3e 3c 70  /p>..<ul>.<li><p
9020: 3e 0a 20 20 5e 28 54 68 65 20 6e 61 6d 65 20 6f  >.  ^(The name o
9030: 66 20 74 68 65 20 74 61 62 6c 65 20 74 6f 20 62  f the table to b
9040: 65 20 6d 6f 64 69 66 69 65 64 20 69 6e 20 61 6e  e modified in an
9050: 20 5b 55 50 44 41 54 45 5d 2c 20 5b 44 45 4c 45   [UPDATE], [DELE
9060: 54 45 5d 2c 20 6f 72 20 5b 49 4e 53 45 52 54 5d  TE], or [INSERT]
9070: 0a 20 20 73 74 61 74 65 6d 65 6e 74 20 6d 75 73  .  statement mus
9080: 74 20 62 65 20 61 6e 20 75 6e 71 75 61 6c 69 66  t be an unqualif
9090: 69 65 64 20 74 61 62 6c 65 20 6e 61 6d 65 2e 20  ied table name. 
90a0: 20 49 6e 20 6f 74 68 65 72 20 77 6f 72 64 73 2c   In other words,
90b0: 20 6f 6e 65 20 6d 75 73 74 0a 20 20 75 73 65 20   one must.  use 
90c0: 6a 75 73 74 20 22 3c 69 3e 74 61 62 6c 65 6e 61  just "<i>tablena
90d0: 6d 65 3c 2f 69 3e 22 20 6e 6f 74 20 22 3c 69 3e  me</i>" not "<i>
90e0: 64 61 74 61 62 61 73 65 3c 2f 69 3e 3c 62 3e 2e  database</i><b>.
90f0: 3c 2f 62 3e 3c 69 3e 74 61 62 6c 65 6e 61 6d 65  </b><i>tablename
9100: 3c 2f 69 3e 22 0a 20 20 77 68 65 6e 20 73 70 65  </i>".  when spe
9110: 63 69 66 79 69 6e 67 20 74 68 65 20 74 61 62 6c  cifying the tabl
9120: 65 2e 29 5e 20 20 5e 54 68 65 20 74 61 62 6c 65  e.)^  ^The table
9130: 20 74 6f 20 62 65 20 6d 6f 64 69 66 69 65 64 20   to be modified 
9140: 6d 75 73 74 20 65 78 69 73 74 20 69 6e 20 74 68  must exist in th
9150: 65 0a 20 20 73 61 6d 65 20 64 61 74 61 62 61 73  e.  same databas
9160: 65 20 61 73 20 74 68 65 20 74 61 62 6c 65 20 6f  e as the table o
9170: 72 20 76 69 65 77 20 74 6f 20 77 68 69 63 68 20  r view to which 
9180: 74 68 65 20 74 72 69 67 67 65 72 20 69 73 20 61  the trigger is a
9190: 74 74 61 63 68 65 64 2e 0a 20 20 3c 2f 70 3e 3c  ttached..  </p><
91a0: 2f 6c 69 3e 0a 0a 3c 6c 69 3e 3c 70 3e 0a 20 20  /li>..<li><p>.  
91b0: 5e 54 68 65 20 22 49 4e 53 45 52 54 20 49 4e 54  ^The "INSERT INT
91c0: 4f 20 3c 69 3e 74 61 62 6c 65 3c 2f 69 3e 20 44  O <i>table</i> D
91d0: 45 46 41 55 4c 54 20 56 41 4c 55 45 53 22 20 66  EFAULT VALUES" f
91e0: 6f 72 6d 20 6f 66 20 74 68 65 20 5b 49 4e 53 45  orm of the [INSE
91f0: 52 54 5d 20 73 74 61 74 65 6d 65 6e 74 0a 20 20  RT] statement.  
9200: 69 73 20 6e 6f 74 20 73 75 70 70 6f 72 74 65 64  is not supported
9210: 2e 0a 20 20 3c 2f 70 3e 3c 2f 6c 69 3e 0a 0a 3c  ..  </p></li>..<
9220: 6c 69 3e 3c 70 3e 0a 20 20 5e 54 68 65 20 49 4e  li><p>.  ^The IN
9230: 44 45 58 45 44 20 42 59 20 61 6e 64 20 4e 4f 54  DEXED BY and NOT
9240: 20 49 4e 44 45 58 45 44 20 63 6c 61 75 73 65 73   INDEXED clauses
9250: 20 61 72 65 20 6e 6f 74 20 73 75 70 70 6f 72 74   are not support
9260: 65 64 20 66 6f 72 20 5b 55 50 44 41 54 45 5d 20  ed for [UPDATE] 
9270: 61 6e 64 0a 20 20 5b 44 45 4c 45 54 45 5d 20 73  and.  [DELETE] s
9280: 74 61 74 65 6d 65 6e 74 73 2e 0a 20 20 3c 2f 70  tatements..  </p
9290: 3e 3c 2f 6c 69 3e 0a 0a 3c 6c 69 3e 3c 70 3e 0a  ></li>..<li><p>.
92a0: 20 20 5e 28 54 68 65 20 4f 52 44 45 52 20 42 59    ^(The ORDER BY
92b0: 20 61 6e 64 20 4c 49 4d 49 54 20 63 6c 61 75 73   and LIMIT claus
92c0: 65 73 20 6f 6e 20 5b 55 50 44 41 54 45 5d 20 61  es on [UPDATE] a
92d0: 6e 64 20 5b 44 45 4c 45 54 45 5d 20 73 74 61 74  nd [DELETE] stat
92e0: 65 6d 65 6e 74 73 20 61 72 65 20 6e 6f 74 0a 20  ements are not. 
92f0: 20 73 75 70 70 6f 72 74 65 64 2e 20 20 4f 52 44   supported.  ORD
9300: 45 52 20 42 59 20 61 6e 64 20 4c 49 4d 49 54 20  ER BY and LIMIT 
9310: 61 72 65 20 6e 6f 74 20 6e 6f 72 6d 61 6c 6c 79  are not normally
9320: 20 73 75 70 70 6f 72 74 65 64 20 66 6f 72 20 5b   supported for [
9330: 55 50 44 41 54 45 5d 20 6f 72 0a 20 20 5b 44 45  UPDATE] or.  [DE
9340: 4c 45 54 45 5d 20 69 6e 20 61 6e 79 20 63 6f 6e  LETE] in any con
9350: 74 65 78 74 20 62 75 74 20 63 61 6e 20 62 65 20  text but can be 
9360: 65 6e 61 62 6c 65 64 20 66 6f 72 20 74 6f 70 2d  enabled for top-
9370: 6c 65 76 65 6c 20 73 74 61 74 65 6d 65 6e 74 73  level statements
9380: 0a 20 20 75 73 69 6e 67 20 74 68 65 20 5b 53 51  .  using the [SQ
9390: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 55 50 44 41  LITE_ENABLE_UPDA
93a0: 54 45 5f 44 45 4c 45 54 45 5f 4c 49 4d 49 54 5d  TE_DELETE_LIMIT]
93b0: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70   compile-time op
93c0: 74 69 6f 6e 2e 20 20 48 6f 77 65 76 65 72 2c 0a  tion.  However,.
93d0: 20 20 74 68 61 74 20 63 6f 6d 70 69 6c 65 2d 74    that compile-t
93e0: 69 6d 65 20 6f 70 74 69 6f 6e 20 6f 6e 6c 79 20  ime option only 
93f0: 61 70 70 6c 69 65 73 20 74 6f 20 74 6f 70 2d 6c  applies to top-l
9400: 65 76 65 6c 20 5b 55 50 44 41 54 45 5d 20 61 6e  evel [UPDATE] an
9410: 64 20 5b 44 45 4c 45 54 45 5d 0a 20 20 73 74 61  d [DELETE].  sta
9420: 74 65 6d 65 6e 74 73 2c 20 6e 6f 74 20 5b 55 50  tements, not [UP
9430: 44 41 54 45 5d 20 61 6e 64 20 5b 44 45 4c 45 54  DATE] and [DELET
9440: 45 5d 20 73 74 61 74 65 6d 65 6e 74 73 20 77 69  E] statements wi
9450: 74 68 69 6e 20 74 72 69 67 67 65 72 73 2e 29 5e  thin triggers.)^
9460: 0a 20 20 3c 2f 70 3e 3c 2f 6c 69 3e 0a 3c 2f 75  .  </p></li>.</u
9470: 6c 3e 0a 0a 3c 74 63 6c 3e 68 64 5f 66 72 61 67  l>..<tcl>hd_frag
9480: 6d 65 6e 74 20 69 6e 73 74 65 61 64 5f 6f 66 5f  ment instead_of_
9490: 74 72 69 67 67 65 72 20 7b 49 4e 53 54 45 41 44  trigger {INSTEAD
94a0: 20 4f 46 7d 20 7b 49 4e 53 54 45 41 44 20 4f 46   OF} {INSTEAD OF
94b0: 20 74 72 69 67 67 65 72 7d 3c 2f 74 63 6c 3e 0a   trigger}</tcl>.
94c0: 3c 68 33 3e 49 4e 53 54 45 41 44 20 4f 46 20 74  <h3>INSTEAD OF t
94d0: 72 69 67 67 65 72 3c 2f 68 33 3e 0a 0a 3c 70 3e  rigger</h3>..<p>
94e0: 5e 54 72 69 67 67 65 72 73 20 6d 61 79 20 62 65  ^Triggers may be
94f0: 20 63 72 65 61 74 65 64 20 6f 6e 20 5b 76 69 65   created on [vie
9500: 77 73 5d 2c 20 61 73 20 77 65 6c 6c 20 61 73 20  ws], as well as 
9510: 6f 72 64 69 6e 61 72 79 20 74 61 62 6c 65 73 2c  ordinary tables,
9520: 20 62 79 0a 73 70 65 63 69 66 79 69 6e 67 20 49   by.specifying I
9530: 4e 53 54 45 41 44 20 4f 46 20 69 6e 20 74 68 65  NSTEAD OF in the
9540: 20 43 52 45 41 54 45 20 54 52 49 47 47 45 52 20   CREATE TRIGGER 
9550: 73 74 61 74 65 6d 65 6e 74 2e 20 0a 5e 49 66 20  statement. .^If 
9560: 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 4f 4e 20 49  one or more ON I
9570: 4e 53 45 52 54 2c 20 4f 4e 20 44 45 4c 45 54 45  NSERT, ON DELETE
9580: 0a 6f 72 20 4f 4e 20 55 50 44 41 54 45 20 74 72  .or ON UPDATE tr
9590: 69 67 67 65 72 73 20 61 72 65 20 64 65 66 69 6e  iggers are defin
95a0: 65 64 20 6f 6e 20 61 20 76 69 65 77 2c 20 74 68  ed on a view, th
95b0: 65 6e 20 69 74 20 69 73 20 6e 6f 74 20 61 6e 0a  en it is not an.
95c0: 65 72 72 6f 72 20 74 6f 20 65 78 65 63 75 74 65  error to execute
95d0: 20 61 6e 20 49 4e 53 45 52 54 2c 20 44 45 4c 45   an INSERT, DELE
95e0: 54 45 20 6f 72 20 55 50 44 41 54 45 20 73 74 61  TE or UPDATE sta
95f0: 74 65 6d 65 6e 74 20 6f 6e 20 74 68 65 20 76 69  tement on the vi
9600: 65 77 2c 20 0a 72 65 73 70 65 63 74 69 76 65 6c  ew, .respectivel
9610: 79 2e 20 20 5e 49 6e 73 74 65 61 64 2c 0a 65 78  y.  ^Instead,.ex
9620: 65 63 75 74 69 6e 67 20 61 6e 20 49 4e 53 45 52  ecuting an INSER
9630: 54 2c 20 44 45 4c 45 54 45 20 6f 72 20 55 50 44  T, DELETE or UPD
9640: 41 54 45 20 6f 6e 20 74 68 65 20 76 69 65 77 20  ATE on the view 
9650: 63 61 75 73 65 73 20 74 68 65 20 61 73 73 6f 63  causes the assoc
9660: 69 61 74 65 64 0a 74 72 69 67 67 65 72 73 20 74  iated.triggers t
9670: 6f 20 66 69 72 65 2e 20 5e 54 68 65 20 72 65 61  o fire. ^The rea
9680: 6c 20 74 61 62 6c 65 73 20 75 6e 64 65 72 6c 79  l tables underly
9690: 69 6e 67 20 74 68 65 20 76 69 65 77 20 61 72 65  ing the view are
96a0: 20 6e 6f 74 20 6d 6f 64 69 66 69 65 64 0a 28 65   not modified.(e
96b0: 78 63 65 70 74 20 70 6f 73 73 69 62 6c 79 20 65  xcept possibly e
96c0: 78 70 6c 69 63 69 74 6c 79 2c 20 62 79 20 61 20  xplicitly, by a 
96d0: 74 72 69 67 67 65 72 20 70 72 6f 67 72 61 6d 29  trigger program)
96e0: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 4e 6f 74 65 20  .</p>..<p>^Note 
96f0: 74 68 61 74 20 74 68 65 20 5b 73 71 6c 69 74 65  that the [sqlite
9700: 33 5f 63 68 61 6e 67 65 73 28 29 5d 20 61 6e 64  3_changes()] and
9710: 20 5b 73 71 6c 69 74 65 33 5f 74 6f 74 61 6c 5f   [sqlite3_total_
9720: 63 68 61 6e 67 65 73 28 29 5d 20 69 6e 74 65 72  changes()] inter
9730: 66 61 63 65 73 0a 64 6f 20 6e 6f 74 20 63 6f 75  faces.do not cou
9740: 6e 74 20 49 4e 53 54 45 41 44 20 4f 46 20 74 72  nt INSTEAD OF tr
9750: 69 67 67 65 72 20 66 69 72 69 6e 67 73 2c 20 62  igger firings, b
9760: 75 74 20 74 68 65 0a 5b 63 6f 75 6e 74 5f 63 68  ut the.[count_ch
9770: 61 6e 67 65 73 20 70 72 61 67 6d 61 5d 20 64 6f  anges pragma] do
9780: 65 73 20 63 6f 75 6e 74 20 49 4e 53 54 45 41 44  es count INSTEAD
9790: 20 4f 46 20 74 72 69 67 67 65 72 20 66 69 72 69   OF trigger firi
97a0: 6e 67 2e 3c 2f 70 3e 0a 0a 3c 68 33 3e 45 78 61  ng.</p>..<h3>Exa
97b0: 6d 70 6c 65 73 3c 2f 68 33 3e 0a 0a 3c 70 3e 5e  mples</h3>..<p>^
97c0: 28 41 73 73 75 6d 69 6e 67 20 74 68 61 74 20 63  (Assuming that c
97d0: 75 73 74 6f 6d 65 72 20 72 65 63 6f 72 64 73 20  ustomer records 
97e0: 61 72 65 20 73 74 6f 72 65 64 20 69 6e 20 74 68  are stored in th
97f0: 65 20 22 63 75 73 74 6f 6d 65 72 73 22 20 74 61  e "customers" ta
9800: 62 6c 65 2c 20 61 6e 64 0a 74 68 61 74 20 6f 72  ble, and.that or
9810: 64 65 72 20 72 65 63 6f 72 64 73 20 61 72 65 20  der records are 
9820: 73 74 6f 72 65 64 20 69 6e 20 74 68 65 20 22 6f  stored in the "o
9830: 72 64 65 72 73 22 20 74 61 62 6c 65 2c 20 74 68  rders" table, th
9840: 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 72 69 67  e following trig
9850: 67 65 72 0a 65 6e 73 75 72 65 73 20 74 68 61 74  ger.ensures that
9860: 20 61 6c 6c 20 61 73 73 6f 63 69 61 74 65 64 20   all associated 
9870: 6f 72 64 65 72 73 20 61 72 65 20 72 65 64 69 72  orders are redir
9880: 65 63 74 65 64 20 77 68 65 6e 20 61 20 63 75 73  ected when a cus
9890: 74 6f 6d 65 72 20 63 68 61 6e 67 65 73 0a 68 69  tomer changes.hi
98a0: 73 20 6f 72 20 68 65 72 20 61 64 64 72 65 73 73  s or her address
98b0: 3a 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 45 78 61 6d  :</p>..<tcl>Exam
98c0: 70 6c 65 20 7b 0a 43 52 45 41 54 45 20 54 52 49  ple {.CREATE TRI
98d0: 47 47 45 52 20 75 70 64 61 74 65 5f 63 75 73 74  GGER update_cust
98e0: 6f 6d 65 72 5f 61 64 64 72 65 73 73 20 55 50 44  omer_address UPD
98f0: 41 54 45 20 4f 46 20 61 64 64 72 65 73 73 20 4f  ATE OF address O
9900: 4e 20 63 75 73 74 6f 6d 65 72 73 20 0a 20 20 42  N customers .  B
9910: 45 47 49 4e 0a 20 20 20 20 55 50 44 41 54 45 20  EGIN.    UPDATE 
9920: 6f 72 64 65 72 73 20 53 45 54 20 61 64 64 72 65  orders SET addre
9930: 73 73 20 3d 20 6e 65 77 2e 61 64 64 72 65 73 73  ss = new.address
9940: 20 57 48 45 52 45 20 63 75 73 74 6f 6d 65 72 5f   WHERE customer_
9950: 6e 61 6d 65 20 3d 20 6f 6c 64 2e 6e 61 6d 65 3b  name = old.name;
9960: 0a 20 20 45 4e 44 3b 0a 7d 3c 2f 74 63 6c 3e 0a  .  END;.}</tcl>.
9970: 0a 3c 70 3e 57 69 74 68 20 74 68 69 73 20 74 72  .<p>With this tr
9980: 69 67 67 65 72 20 69 6e 73 74 61 6c 6c 65 64 2c  igger installed,
9990: 20 65 78 65 63 75 74 69 6e 67 20 74 68 65 20 73   executing the s
99a0: 74 61 74 65 6d 65 6e 74 3a 3c 2f 70 3e 0a 0a 3c  tatement:</p>..<
99b0: 74 63 6c 3e 45 78 61 6d 70 6c 65 20 7b 0a 55 50  tcl>Example {.UP
99c0: 44 41 54 45 20 63 75 73 74 6f 6d 65 72 73 20 53  DATE customers S
99d0: 45 54 20 61 64 64 72 65 73 73 20 3d 20 27 31 20  ET address = '1 
99e0: 4d 61 69 6e 20 53 74 2e 27 20 57 48 45 52 45 20  Main St.' WHERE 
99f0: 6e 61 6d 65 20 3d 20 27 4a 61 63 6b 20 4a 6f 6e  name = 'Jack Jon
9a00: 65 73 27 3b 0a 7d 3c 2f 74 63 6c 3e 0a 0a 3c 70  es';.}</tcl>..<p
9a10: 3e 63 61 75 73 65 73 20 74 68 65 20 66 6f 6c 6c  >causes the foll
9a20: 6f 77 69 6e 67 20 74 6f 20 62 65 20 61 75 74 6f  owing to be auto
9a30: 6d 61 74 69 63 61 6c 6c 79 20 65 78 65 63 75 74  matically execut
9a40: 65 64 3a 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 45 78  ed:</p>..<tcl>Ex
9a50: 61 6d 70 6c 65 20 7b 0a 55 50 44 41 54 45 20 6f  ample {.UPDATE o
9a60: 72 64 65 72 73 20 53 45 54 20 61 64 64 72 65 73  rders SET addres
9a70: 73 20 3d 20 27 31 20 4d 61 69 6e 20 53 74 2e 27  s = '1 Main St.'
9a80: 20 57 48 45 52 45 20 63 75 73 74 6f 6d 65 72 5f   WHERE customer_
9a90: 6e 61 6d 65 20 3d 20 27 4a 61 63 6b 20 4a 6f 6e  name = 'Jack Jon
9aa0: 65 73 27 3b 0a 7d 3c 2f 74 63 6c 3e 29 5e 0a 0a  es';.}</tcl>)^..
9ab0: 3c 74 63 6c 3e 68 64 5f 66 72 61 67 6d 65 6e 74  <tcl>hd_fragment
9ac0: 20 75 6e 64 65 66 5f 62 65 66 6f 72 65 20 7b 75   undef_before {u
9ad0: 6e 64 65 66 69 6e 65 64 20 42 45 46 4f 52 45 20  ndefined BEFORE 
9ae0: 74 72 69 67 67 65 72 20 62 65 68 61 76 69 6f 72  trigger behavior
9af0: 7d 3c 2f 74 63 6c 3e 0a 3c 68 33 3e 43 61 75 74  }</tcl>.<h3>Caut
9b00: 69 6f 6e 73 20 4f 6e 20 54 68 65 20 55 73 65 20  ions On The Use 
9b10: 4f 66 20 42 45 46 4f 52 45 20 74 72 69 67 67 65  Of BEFORE trigge
9b20: 72 73 3c 2f 68 33 3e 0a 0a 3c 70 3e 49 66 20 61  rs</h3>..<p>If a
9b30: 20 42 45 46 4f 52 45 20 55 50 44 41 54 45 20 6f   BEFORE UPDATE o
9b40: 72 20 42 45 46 4f 52 45 20 44 45 4c 45 54 45 20  r BEFORE DELETE 
9b50: 74 72 69 67 67 65 72 20 6d 6f 64 69 66 69 65 73  trigger modifies
9b60: 20 6f 72 20 64 65 6c 65 74 65 73 20 61 20 72 6f   or deletes a ro
9b70: 77 0a 74 68 61 74 20 77 61 73 20 74 6f 20 68 61  w.that was to ha
9b80: 76 65 20 62 65 65 6e 20 75 70 64 61 74 65 64 20  ve been updated 
9b90: 6f 72 20 64 65 6c 65 74 65 64 2c 20 74 68 65 6e  or deleted, then
9ba0: 20 74 68 65 20 72 65 73 75 6c 74 20 6f 66 20 74   the result of t
9bb0: 68 65 20 73 75 62 73 65 71 75 65 6e 74 0a 75 70  he subsequent.up
9bc0: 64 61 74 65 20 6f 72 20 64 65 6c 65 74 65 20 6f  date or delete o
9bd0: 70 65 72 61 74 69 6f 6e 20 69 73 20 75 6e 64 65  peration is unde
9be0: 66 69 6e 65 64 2e 20 20 46 75 72 74 68 65 72 6d  fined.  Furtherm
9bf0: 6f 72 65 2c 20 69 66 20 61 20 42 45 46 4f 52 45  ore, if a BEFORE
9c00: 20 74 72 69 67 67 65 72 0a 6d 6f 64 69 66 69 65   trigger.modifie
9c10: 73 20 6f 72 20 64 65 6c 65 74 65 73 20 61 20 72  s or deletes a r
9c20: 6f 77 2c 20 74 68 65 6e 20 69 74 20 69 73 20 75  ow, then it is u
9c30: 6e 64 65 66 69 6e 65 64 20 77 68 65 74 68 65 72  ndefined whether
9c40: 20 6f 72 20 6e 6f 74 20 41 46 54 45 52 20 74 72   or not AFTER tr
9c50: 69 67 67 65 72 73 0a 74 68 61 74 20 77 6f 75 6c  iggers.that woul
9c60: 64 20 68 61 76 65 20 6f 74 68 65 72 77 69 73 65  d have otherwise
9c70: 20 72 75 6e 20 6f 6e 20 74 68 6f 73 65 20 72 6f   run on those ro
9c80: 77 73 20 77 69 6c 6c 20 69 6e 20 66 61 63 74 20  ws will in fact 
9c90: 72 75 6e 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 54 68  run..</p>..<p>Th
9ca0: 65 20 76 61 6c 75 65 20 6f 66 20 4e 45 57 2e 72  e value of NEW.r
9cb0: 6f 77 69 64 20 69 73 20 75 6e 64 65 66 69 6e 65  owid is undefine
9cc0: 64 20 69 6e 20 61 20 42 45 46 4f 52 45 20 49 4e  d in a BEFORE IN
9cd0: 53 45 52 54 20 74 72 69 67 67 65 72 20 69 6e 20  SERT trigger in 
9ce0: 77 68 69 63 68 0a 74 68 65 20 72 6f 77 69 64 20  which.the rowid 
9cf0: 69 73 20 6e 6f 74 20 65 78 70 6c 69 63 69 74 6c  is not explicitl
9d00: 79 20 73 65 74 20 74 6f 20 61 6e 20 69 6e 74 65  y set to an inte
9d10: 67 65 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 42 65 63  ger.</p>..<p>Bec
9d20: 61 75 73 65 20 6f 66 20 74 68 65 20 62 65 68 61  ause of the beha
9d30: 76 69 6f 72 73 20 64 65 73 63 72 69 62 65 64 20  viors described 
9d40: 61 62 6f 76 65 2c 20 70 72 6f 67 72 61 6d 6d 65  above, programme
9d50: 72 73 20 61 72 65 20 65 6e 63 6f 75 72 61 67 65  rs are encourage
9d60: 64 20 74 6f 0a 70 72 65 66 65 72 20 41 46 54 45  d to.prefer AFTE
9d70: 52 20 74 72 69 67 67 65 72 73 20 6f 76 65 72 20  R triggers over 
9d80: 42 45 46 4f 52 45 20 74 72 69 67 67 65 72 73 2e  BEFORE triggers.
9d90: 3c 2f 70 3e 0a 0a 3c 68 33 3e 54 68 65 20 52 41  </p>..<h3>The RA
9da0: 49 53 45 28 29 20 66 75 6e 63 74 69 6f 6e 3c 2f  ISE() function</
9db0: 68 33 3e 0a 0a 3c 70 3e 5e 28 41 20 73 70 65 63  h3>..<p>^(A spec
9dc0: 69 61 6c 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e  ial SQL function
9dd0: 20 52 41 49 53 45 28 29 20 6d 61 79 20 62 65 20   RAISE() may be 
9de0: 75 73 65 64 20 77 69 74 68 69 6e 20 61 20 74 72  used within a tr
9df0: 69 67 67 65 72 2d 70 72 6f 67 72 61 6d 2c 29 5e  igger-program,)^
9e00: 0a 77 69 74 68 20 74 68 65 20 66 6f 6c 6c 6f 77  .with the follow
9e10: 69 6e 67 20 73 79 6e 74 61 78 3c 2f 70 3e 20 0a  ing syntax</p> .
9e20: 0a 3c 74 63 6c 3e 42 75 62 62 6c 65 44 69 61 67  .<tcl>BubbleDiag
9e30: 72 61 6d 20 72 61 69 73 65 2d 66 75 6e 63 74 69  ram raise-functi
9e40: 6f 6e 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 5e 57 68  on</tcl>..<p>^Wh
9e50: 65 6e 20 6f 6e 65 20 6f 66 20 74 68 65 20 66 69  en one of the fi
9e60: 72 73 74 20 74 68 72 65 65 20 66 6f 72 6d 73 20  rst three forms 
9e70: 69 73 20 63 61 6c 6c 65 64 20 64 75 72 69 6e 67  is called during
9e80: 20 74 72 69 67 67 65 72 2d 70 72 6f 67 72 61 6d   trigger-program
9e90: 0a 65 78 65 63 75 74 69 6f 6e 2c 20 74 68 65 20  .execution, the 
9ea0: 73 70 65 63 69 66 69 65 64 20 5b 4f 4e 20 43 4f  specified [ON CO
9eb0: 4e 46 4c 49 43 54 5d 20 70 72 6f 63 65 73 73 69  NFLICT] processi
9ec0: 6e 67 20 69 73 20 70 65 72 66 6f 72 6d 65 64 0a  ng is performed.
9ed0: 28 65 69 74 68 65 72 20 41 42 4f 52 54 2c 20 46  (either ABORT, F
9ee0: 41 49 4c 20 6f 72 20 52 4f 4c 4c 42 41 43 4b 29  AIL or ROLLBACK)
9ef0: 20 61 6e 64 20 74 68 65 20 63 75 72 72 65 6e 74   and the current
9f00: 20 71 75 65 72 79 20 74 65 72 6d 69 6e 61 74 65   query terminate
9f10: 73 2e 0a 41 6e 20 65 72 72 6f 72 20 63 6f 64 65  s..An error code
9f20: 20 6f 66 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 53   of [SQLITE_CONS
9f30: 54 52 41 49 4e 54 5d 20 69 73 20 72 65 74 75 72  TRAINT] is retur
9f40: 6e 65 64 20 74 6f 20 74 68 65 20 61 70 70 6c 69  ned to the appli
9f50: 63 61 74 69 6f 6e 2c 0a 61 6c 6f 6e 67 20 77 69  cation,.along wi
9f60: 74 68 20 74 68 65 20 73 70 65 63 69 66 69 65 64  th the specified
9f70: 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 2e 3c   error message.<
9f80: 2f 70 3e 0a 0a 3c 70 3e 5e 57 68 65 6e 20 52 41  /p>..<p>^When RA
9f90: 49 53 45 28 49 47 4e 4f 52 45 29 20 69 73 20 63  ISE(IGNORE) is c
9fa0: 61 6c 6c 65 64 2c 20 74 68 65 20 72 65 6d 61 69  alled, the remai
9fb0: 6e 64 65 72 20 6f 66 20 74 68 65 20 63 75 72 72  nder of the curr
9fc0: 65 6e 74 20 74 72 69 67 67 65 72 20 70 72 6f 67  ent trigger prog
9fd0: 72 61 6d 2c 0a 74 68 65 20 73 74 61 74 65 6d 65  ram,.the stateme
9fe0: 6e 74 20 74 68 61 74 20 63 61 75 73 65 64 20 74  nt that caused t
9ff0: 68 65 20 74 72 69 67 67 65 72 20 70 72 6f 67 72  he trigger progr
a000: 61 6d 20 74 6f 20 65 78 65 63 75 74 65 20 61 6e  am to execute an
a010: 64 20 61 6e 79 20 73 75 62 73 65 71 75 65 6e 74  d any subsequent
a020: 0a 74 72 69 67 67 65 72 20 70 72 6f 67 72 61 6d  .trigger program
a030: 73 20 74 68 61 74 20 77 6f 75 6c 64 20 6f 66 20  s that would of 
a040: 62 65 65 6e 20 65 78 65 63 75 74 65 64 20 61 72  been executed ar
a050: 65 20 61 62 61 6e 64 6f 6e 65 64 2e 20 5e 4e 6f  e abandoned. ^No
a060: 20 64 61 74 61 62 61 73 65 0a 63 68 61 6e 67 65   database.change
a070: 73 20 61 72 65 20 72 6f 6c 6c 65 64 20 62 61 63  s are rolled bac
a080: 6b 2e 20 20 5e 49 66 20 74 68 65 20 73 74 61 74  k.  ^If the stat
a090: 65 6d 65 6e 74 20 74 68 61 74 20 63 61 75 73 65  ement that cause
a0a0: 64 20 74 68 65 20 74 72 69 67 67 65 72 20 70 72  d the trigger pr
a0b0: 6f 67 72 61 6d 0a 74 6f 20 65 78 65 63 75 74 65  ogram.to execute
a0c0: 20 69 73 20 69 74 73 65 6c 66 20 70 61 72 74 20   is itself part 
a0d0: 6f 66 20 61 20 74 72 69 67 67 65 72 20 70 72 6f  of a trigger pro
a0e0: 67 72 61 6d 2c 20 74 68 65 6e 20 74 68 61 74 20  gram, then that 
a0f0: 74 72 69 67 67 65 72 20 70 72 6f 67 72 61 6d 0a  trigger program.
a100: 72 65 73 75 6d 65 73 20 65 78 65 63 75 74 69 6f  resumes executio
a110: 6e 20 61 74 20 74 68 65 20 62 65 67 69 6e 6e 69  n at the beginni
a120: 6e 67 20 6f 66 20 74 68 65 20 6e 65 78 74 20 73  ng of the next s
a130: 74 65 70 2e 0a 3c 2f 70 3e 0a 0a 0a 3c 74 63 6c  tep..</p>...<tcl
a140: 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23  >.##############
a150: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a160: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a170: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a180: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a190: 23 0a 53 65 63 74 69 6f 6e 20 7b 43 52 45 41 54  #.Section {CREAT
a1a0: 45 20 56 49 45 57 7d 20 7b 63 72 65 61 74 65 76  E VIEW} {createv
a1b0: 69 65 77 7d 20 7b 7b 43 52 45 41 54 45 20 56 49  iew} {{CREATE VI
a1c0: 45 57 7d 20 76 69 65 77 20 2a 76 69 65 77 73 7d  EW} view *views}
a1d0: 0a 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20  ..BubbleDiagram 
a1e0: 63 72 65 61 74 65 2d 76 69 65 77 2d 73 74 6d 74  create-view-stmt
a1f0: 20 31 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 5e 54   1.</tcl>..<p>^T
a200: 68 65 20 43 52 45 41 54 45 20 56 49 45 57 20 63  he CREATE VIEW c
a210: 6f 6d 6d 61 6e 64 20 61 73 73 69 67 6e 73 20 61  ommand assigns a
a220: 20 6e 61 6d 65 20 74 6f 20 61 20 70 72 65 2d 70   name to a pre-p
a230: 61 63 6b 61 67 65 64 20 0a 5b 53 45 4c 45 43 54  ackaged .[SELECT
a240: 5d 20 73 74 61 74 65 6d 65 6e 74 2e 20 0a 5e 4f  ] statement. .^O
a250: 6e 63 65 20 74 68 65 20 76 69 65 77 20 69 73 20  nce the view is 
a260: 63 72 65 61 74 65 64 2c 20 69 74 20 63 61 6e 20  created, it can 
a270: 62 65 20 75 73 65 64 20 69 6e 20 74 68 65 20 46  be used in the F
a280: 52 4f 4d 20 63 6c 61 75 73 65 0a 6f 66 20 61 6e  ROM clause.of an
a290: 6f 74 68 65 72 20 5b 53 45 4c 45 43 54 5d 20 69  other [SELECT] i
a2a0: 6e 20 70 6c 61 63 65 20 6f 66 20 61 20 74 61 62  n place of a tab
a2b0: 6c 65 20 6e 61 6d 65 2e 0a 3c 2f 70 3e 0a 0a 3c  le name..</p>..<
a2c0: 70 3e 5e 49 66 20 74 68 65 20 22 54 45 4d 50 22  p>^If the "TEMP"
a2d0: 20 6f 72 20 22 54 45 4d 50 4f 52 41 52 59 22 20   or "TEMPORARY" 
a2e0: 6b 65 79 77 6f 72 64 20 6f 63 63 75 72 73 20 69  keyword occurs i
a2f0: 6e 20 62 65 74 77 65 65 6e 20 22 43 52 45 41 54  n between "CREAT
a300: 45 22 0a 61 6e 64 20 22 56 49 45 57 22 20 74 68  E".and "VIEW" th
a310: 65 6e 20 74 68 65 20 76 69 65 77 20 74 68 61 74  en the view that
a320: 20 69 73 20 63 72 65 61 74 65 64 20 69 73 20 6f   is created is o
a330: 6e 6c 79 20 76 69 73 69 62 6c 65 20 74 6f 20 74  nly visible to t
a340: 68 65 0a 70 72 6f 63 65 73 73 20 74 68 61 74 20  he.process that 
a350: 6f 70 65 6e 65 64 20 74 68 65 20 64 61 74 61 62  opened the datab
a360: 61 73 65 20 61 6e 64 20 69 73 20 61 75 74 6f 6d  ase and is autom
a370: 61 74 69 63 61 6c 6c 79 20 64 65 6c 65 74 65 64  atically deleted
a380: 20 77 68 65 6e 0a 74 68 65 20 64 61 74 61 62 61   when.the databa
a390: 73 65 20 69 73 20 63 6c 6f 73 65 64 2e 3c 2f 70  se is closed.</p
a3a0: 3e 0a 0a 3c 70 3e 20 5e 49 66 20 61 20 26 6c 74  >..<p> ^If a &lt
a3b0: 3b 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 26 67  ;database-name&g
a3c0: 74 3b 20 69 73 20 73 70 65 63 69 66 69 65 64 2c  t; is specified,
a3d0: 20 74 68 65 6e 20 74 68 65 20 76 69 65 77 20 69   then the view i
a3e0: 73 20 63 72 65 61 74 65 64 20 69 6e 20 0a 74 68  s created in .th
a3f0: 65 20 6e 61 6d 65 64 20 64 61 74 61 62 61 73 65  e named database
a400: 2e 20 5e 49 74 20 69 73 20 61 6e 20 65 72 72 6f  . ^It is an erro
a410: 72 20 74 6f 20 73 70 65 63 69 66 79 20 62 6f 74  r to specify bot
a420: 68 20 61 20 26 6c 74 3b 64 61 74 61 62 61 73 65  h a &lt;database
a430: 2d 6e 61 6d 65 26 67 74 3b 0a 61 6e 64 20 74 68  -name&gt;.and th
a440: 65 20 54 45 4d 50 20 6b 65 79 77 6f 72 64 20 6f  e TEMP keyword o
a450: 6e 20 61 20 56 49 45 57 2c 20 75 6e 6c 65 73 73  n a VIEW, unless
a460: 20 74 68 65 20 26 6c 74 3b 64 61 74 61 62 61 73   the &lt;databas
a470: 65 2d 6e 61 6d 65 26 67 74 3b 20 69 73 20 22 74  e-name&gt; is "t
a480: 65 6d 70 22 2e 0a 5e 49 66 20 6e 6f 20 64 61 74  emp"..^If no dat
a490: 61 62 61 73 65 20 6e 61 6d 65 20 69 73 20 73 70  abase name is sp
a4a0: 65 63 69 66 69 65 64 2c 20 61 6e 64 20 74 68 65  ecified, and the
a4b0: 20 54 45 4d 50 20 6b 65 79 77 6f 72 64 20 69 73   TEMP keyword is
a4c0: 20 6e 6f 74 20 70 72 65 73 65 6e 74 2c 0a 74 68   not present,.th
a4d0: 65 20 56 49 45 57 20 69 73 20 63 72 65 61 74 65  e VIEW is create
a4e0: 64 20 69 6e 20 74 68 65 20 6d 61 69 6e 20 64 61  d in the main da
a4f0: 74 61 62 61 73 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e  tabase.</p>..<p>
a500: 5e 59 6f 75 20 63 61 6e 6e 6f 74 20 5b 44 45 4c  ^You cannot [DEL
a510: 45 54 45 5d 2c 20 5b 49 4e 53 45 52 54 5d 2c 20  ETE], [INSERT], 
a520: 6f 72 20 5b 55 50 44 41 54 45 5d 20 61 20 76 69  or [UPDATE] a vi
a530: 65 77 2e 20 20 5e 56 69 65 77 73 20 61 72 65 20  ew.  ^Views are 
a540: 72 65 61 64 2d 6f 6e 6c 79 20 0a 69 6e 20 53 51  read-only .in SQ
a550: 4c 69 74 65 2e 20 20 5e 48 6f 77 65 76 65 72 2c  Lite.  ^However,
a560: 20 69 6e 20 6d 61 6e 79 20 63 61 73 65 73 20 79   in many cases y
a570: 6f 75 20 63 61 6e 20 75 73 65 20 61 6e 0a 5b 49  ou can use an.[I
a580: 4e 53 54 45 41 44 20 4f 46 20 74 72 69 67 67 65  NSTEAD OF trigge
a590: 72 5d 20 6f 6e 20 74 68 65 20 76 69 65 77 20 74  r] on the view t
a5a0: 6f 20 61 63 63 6f 6d 70 6c 69 73 68 20 0a 74 68  o accomplish .th
a5b0: 65 20 73 61 6d 65 20 74 68 69 6e 67 2e 20 20 5e  e same thing.  ^
a5c0: 56 69 65 77 73 20 61 72 65 20 72 65 6d 6f 76 65  Views are remove
a5d0: 64 20 0a 77 69 74 68 20 74 68 65 20 5b 44 52 4f  d .with the [DRO
a5e0: 50 20 56 49 45 57 5d 20 63 6f 6d 6d 61 6e 64 2e  P VIEW] command.
a5f0: 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23  </p>..<tcl>.####
a600: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a610: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a620: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a630: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a640: 23 23 23 23 23 23 23 23 23 23 0a 53 65 63 74 69  ##########.Secti
a650: 6f 6e 20 7b 43 52 45 41 54 45 20 56 49 52 54 55  on {CREATE VIRTU
a660: 41 4c 20 54 41 42 4c 45 7d 20 7b 63 72 65 61 74  AL TABLE} {creat
a670: 65 76 74 61 62 7d 20 7b 7b 43 52 45 41 54 45 20  evtab} {{CREATE 
a680: 56 49 52 54 55 41 4c 20 54 41 42 4c 45 7d 7d 0a  VIRTUAL TABLE}}.
a690: 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 63  .BubbleDiagram c
a6a0: 72 65 61 74 65 2d 76 69 72 74 75 61 6c 2d 74 61  reate-virtual-ta
a6b0: 62 6c 65 2d 73 74 6d 74 20 31 0a 3c 2f 74 63 6c  ble-stmt 1.</tcl
a6c0: 3e 0a 0a 3c 70 3e 41 20 5b 76 69 72 74 75 61 6c  >..<p>A [virtual
a6d0: 20 74 61 62 6c 65 5d 20 69 73 20 61 6e 20 69 6e   table] is an in
a6e0: 74 65 72 66 61 63 65 20 74 6f 20 61 6e 20 65 78  terface to an ex
a6f0: 74 65 72 6e 61 6c 20 73 74 6f 72 61 67 65 20 6f  ternal storage o
a700: 72 20 63 6f 6d 70 75 74 61 74 69 6f 6e 0a 65 6e  r computation.en
a710: 67 69 6e 65 20 74 68 61 74 20 61 70 70 65 61 72  gine that appear
a720: 73 20 74 6f 20 62 65 20 61 20 74 61 62 6c 65 20  s to be a table 
a730: 62 75 74 20 64 6f 65 73 20 6e 6f 74 20 61 63 74  but does not act
a740: 75 61 6c 6c 79 20 73 74 6f 72 65 20 69 6e 66 6f  ually store info
a750: 72 6d 61 74 69 6f 6e 0a 69 6e 20 74 68 65 20 64  rmation.in the d
a760: 61 74 61 62 61 73 65 20 66 69 6c 65 2e 3c 2f 70  atabase file.</p
a770: 3e 0a 0a 3c 70 3e 49 6e 20 67 65 6e 65 72 61 6c  >..<p>In general
a780: 2c 20 79 6f 75 20 63 61 6e 20 64 6f 20 61 6e 79  , you can do any
a790: 74 68 69 6e 67 20 77 69 74 68 20 61 20 5b 76 69  thing with a [vi
a7a0: 72 74 75 61 6c 20 74 61 62 6c 65 5d 20 74 68 61  rtual table] tha
a7b0: 74 20 63 61 6e 20 62 65 20 64 6f 6e 65 0a 77 69  t can be done.wi
a7c0: 74 68 20 61 6e 20 6f 72 64 69 6e 61 72 79 20 74  th an ordinary t
a7d0: 61 62 6c 65 2c 20 65 78 63 65 70 74 20 74 68 61  able, except tha
a7e0: 74 20 5e 79 6f 75 20 63 61 6e 6e 6f 74 20 63 72  t ^you cannot cr
a7f0: 65 61 74 65 20 69 6e 64 69 63 65 73 20 6f 72 20  eate indices or 
a800: 74 72 69 67 67 65 72 73 20 6f 6e 20 61 0a 76 69  triggers on a.vi
a810: 72 74 75 61 6c 20 74 61 62 6c 65 2e 20 20 5e 53  rtual table.  ^S
a820: 6f 6d 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c  ome virtual tabl
a830: 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  e implementation
a840: 73 20 6d 69 67 68 74 20 69 6d 70 6f 73 65 20 61  s might impose a
a850: 64 64 69 74 69 6f 6e 61 6c 0a 72 65 73 74 72 69  dditional.restri
a860: 63 74 69 6f 6e 73 2e 20 20 46 6f 72 20 65 78 61  ctions.  For exa
a870: 6d 70 6c 65 2c 20 6d 61 6e 79 20 76 69 72 74 75  mple, many virtu
a880: 61 6c 20 74 61 62 6c 65 73 20 61 72 65 20 72 65  al tables are re
a890: 61 64 2d 6f 6e 6c 79 2e 3c 2f 70 3e 0a 0a 3c 70  ad-only.</p>..<p
a8a0: 3e 54 68 65 20 26 6c 74 3b 6d 6f 64 75 6c 65 2d  >The &lt;module-
a8b0: 6e 61 6d 65 26 67 74 3b 20 69 73 20 74 68 65 20  name&gt; is the 
a8c0: 6e 61 6d 65 20 6f 66 20 61 6e 20 6f 62 6a 65 63  name of an objec
a8d0: 74 20 74 68 61 74 20 69 6d 70 6c 65 6d 65 6e 74  t that implement
a8e0: 73 0a 74 68 65 20 76 69 72 74 75 61 6c 20 74 61  s.the virtual ta
a8f0: 62 6c 65 2e 20 20 5e 54 68 65 20 26 6c 74 3b 6d  ble.  ^The &lt;m
a900: 6f 64 75 6c 65 2d 6e 61 6d 65 26 67 74 3b 20 6d  odule-name&gt; m
a910: 75 73 74 20 62 65 20 72 65 67 69 73 74 65 72 65  ust be registere
a920: 64 20 77 69 74 68 0a 74 68 65 20 53 51 4c 69 74  d with.the SQLit
a930: 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  e database conne
a940: 63 74 69 6f 6e 20 75 73 69 6e 67 0a 5b 73 71 6c  ction using.[sql
a950: 69 74 65 33 5f 63 72 65 61 74 65 5f 6d 6f 64 75  ite3_create_modu
a960: 6c 65 28 29 5d 20 6f 72 20 5b 73 71 6c 69 74 65  le()] or [sqlite
a970: 33 5f 63 72 65 61 74 65 5f 6d 6f 64 75 6c 65 5f  3_create_module_
a980: 76 32 28 29 5d 0a 70 72 69 6f 72 20 74 6f 20 69  v2()].prior to i
a990: 73 73 75 69 6e 67 20 74 68 65 20 43 52 45 41 54  ssuing the CREAT
a9a0: 45 20 56 49 52 54 55 41 4c 20 54 41 42 4c 45 20  E VIRTUAL TABLE 
a9b0: 73 74 61 74 65 6d 65 6e 74 2e 0a 5e 54 68 65 20  statement..^The 
a9c0: 6d 6f 64 75 6c 65 20 74 61 6b 65 73 20 7a 65 72  module takes zer
a9d0: 6f 20 6f 72 20 6d 6f 72 65 20 63 6f 6d 6d 61 2d  o or more comma-
a9e0: 73 65 70 61 72 61 74 65 64 20 61 72 67 75 6d 65  separated argume
a9f0: 6e 74 73 2e 0a 5e 54 68 65 20 61 72 67 75 6d 65  nts..^The argume
aa00: 6e 74 73 20 63 61 6e 20 62 65 20 6a 75 73 74 20  nts can be just 
aa10: 61 62 6f 75 74 20 61 6e 79 20 74 65 78 74 20 61  about any text a
aa20: 73 20 6c 6f 6e 67 20 61 73 20 69 74 20 68 61 73  s long as it has
aa30: 20 62 61 6c 61 6e 63 65 64 0a 70 61 72 65 6e 74   balanced.parent
aa40: 68 65 73 65 73 2e 20 20 54 68 65 20 61 72 67 75  heses.  The argu
aa50: 6d 65 6e 74 20 73 79 6e 74 61 78 20 69 73 20 73  ment syntax is s
aa60: 75 66 66 69 63 69 65 6e 74 6c 79 20 67 65 6e 65  ufficiently gene
aa70: 72 61 6c 20 74 68 61 74 20 74 68 65 0a 61 72 67  ral that the.arg
aa80: 75 6d 65 6e 74 73 20 63 61 6e 20 62 65 20 6d 61  uments can be ma
aa90: 64 65 20 74 6f 20 61 70 70 65 61 72 20 61 73 20  de to appear as 
aaa0: 63 6f 6c 75 6d 6e 20 64 65 66 69 6e 69 74 69 6f  column definitio
aab0: 6e 73 20 69 6e 20 61 20 74 72 61 64 69 74 69 6f  ns in a traditio
aac0: 6e 61 6c 0a 5b 43 52 45 41 54 45 20 54 41 42 4c  nal.[CREATE TABL
aad0: 45 5d 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 0a  E] statement.  .
aae0: 5e 53 51 4c 69 74 65 20 70 61 73 73 65 73 20 74  ^SQLite passes t
aaf0: 68 65 20 6d 6f 64 75 6c 65 20 61 72 67 75 6d 65  he module argume
ab00: 6e 74 73 20 64 69 72 65 63 74 6c 79 0a 74 6f 20  nts directly.to 
ab10: 74 68 65 20 5b 78 43 72 65 61 74 65 5d 20 61 6e  the [xCreate] an
ab20: 64 20 5b 78 43 6f 6e 6e 65 63 74 5d 20 6d 65 74  d [xConnect] met
ab30: 68 6f 64 73 20 6f 66 20 74 68 65 20 6d 6f 64 75  hods of the modu
ab40: 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  le implementatio
ab50: 6e 0a 77 69 74 68 6f 75 74 20 61 6e 79 20 69 6e  n.without any in
ab60: 74 65 72 70 72 65 74 61 74 69 6f 6e 2e 20 20 49  terpretation.  I
ab70: 74 20 69 73 20 74 68 65 20 72 65 73 70 6f 6e 73  t is the respons
ab80: 69 62 69 6c 69 74 79 0a 6f 66 20 74 68 65 20 6d  ibility.of the m
ab90: 6f 64 75 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61  odule implementa
aba0: 74 69 6f 6e 20 74 6f 20 70 61 72 73 65 20 61 6e  tion to parse an
abb0: 64 20 69 6e 74 65 72 70 72 65 74 20 69 74 73 20  d interpret its 
abc0: 6f 77 6e 20 61 72 67 75 6d 65 6e 74 73 2e 3c 2f  own arguments.</
abd0: 70 3e 0a 0a 3c 70 3e 5e 41 20 76 69 72 74 75 61  p>..<p>^A virtua
abe0: 6c 20 74 61 62 6c 65 20 69 73 20 64 65 73 74 72  l table is destr
abf0: 6f 79 65 64 20 75 73 69 6e 67 20 74 68 65 20 6f  oyed using the o
ac00: 72 64 69 6e 61 72 79 0a 5b 44 52 4f 50 20 54 41  rdinary.[DROP TA
ac10: 42 4c 45 5d 20 73 74 61 74 65 6d 65 6e 74 2e 20  BLE] statement. 
ac20: 20 54 68 65 72 65 20 69 73 20 6e 6f 0a 44 52 4f   There is no.DRO
ac30: 50 20 56 49 52 54 55 41 4c 20 54 41 42 4c 45 20  P VIRTUAL TABLE 
ac40: 73 74 61 74 65 6d 65 6e 74 2e 3c 2f 70 3e 0a 0a  statement.</p>..
ac50: 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23  <tcl>.##########
ac60: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
ac70: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
ac80: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
ac90: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
aca0: 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 44 45 4c  ####.Section DEL
acb0: 45 54 45 20 64 65 6c 65 74 65 20 7b 44 45 4c 45  ETE delete {DELE
acc0: 54 45 20 2a 44 45 4c 45 54 45 73 7d 0a 0a 42 75  TE *DELETEs}..Bu
acd0: 62 62 6c 65 44 69 61 67 72 61 6d 20 64 65 6c 65  bbleDiagram dele
ace0: 74 65 2d 73 74 6d 74 20 31 0a 42 75 62 62 6c 65  te-stmt 1.Bubble
acf0: 44 69 61 67 72 61 6d 20 71 75 61 6c 69 66 69 65  Diagram qualifie
ad00: 64 2d 74 61 62 6c 65 2d 6e 61 6d 65 0a 3c 2f 74  d-table-name.</t
ad10: 63 6c 3e 0a 0a 3c 70 3e 5e 54 68 65 20 44 45 4c  cl>..<p>^The DEL
ad20: 45 54 45 20 63 6f 6d 6d 61 6e 64 20 69 73 20 75  ETE command is u
ad30: 73 65 64 20 74 6f 20 72 65 6d 6f 76 65 20 72 65  sed to remove re
ad40: 63 6f 72 64 73 20 66 72 6f 6d 20 61 20 74 61 62  cords from a tab
ad50: 6c 65 2e 0a 5e 54 68 65 20 63 6f 6d 6d 61 6e 64  le..^The command
ad60: 20 63 6f 6e 73 69 73 74 73 20 6f 66 20 74 68 65   consists of the
ad70: 20 22 44 45 4c 45 54 45 20 46 52 4f 4d 22 20 6b   "DELETE FROM" k
ad80: 65 79 77 6f 72 64 73 20 66 6f 6c 6c 6f 77 65 64  eywords followed
ad90: 20 62 79 0a 74 68 65 20 6e 61 6d 65 20 6f 66 20   by.the name of 
ada0: 74 68 65 20 74 61 62 6c 65 20 66 72 6f 6d 20 77  the table from w
adb0: 68 69 63 68 20 72 65 63 6f 72 64 73 20 61 72 65  hich records are
adc0: 20 74 6f 20 62 65 20 72 65 6d 6f 76 65 64 2e 0a   to be removed..
add0: 3c 2f 70 3e 0a 0a 3c 70 3e 5e 57 69 74 68 6f 75  </p>..<p>^Withou
ade0: 74 20 61 20 57 48 45 52 45 20 63 6c 61 75 73 65  t a WHERE clause
adf0: 2c 20 61 6c 6c 20 72 6f 77 73 20 6f 66 20 74 68  , all rows of th
ae00: 65 20 74 61 62 6c 65 20 61 72 65 20 72 65 6d 6f  e table are remo
ae10: 76 65 64 2e 0a 5e 49 66 20 61 20 57 48 45 52 45  ved..^If a WHERE
ae20: 20 63 6c 61 75 73 65 20 69 73 20 73 75 70 70 6c   clause is suppl
ae30: 69 65 64 2c 20 74 68 65 6e 20 6f 6e 6c 79 20 74  ied, then only t
ae40: 68 6f 73 65 20 72 6f 77 73 20 74 68 61 74 20 6d  hose rows that m
ae50: 61 74 63 68 0a 74 68 65 20 65 78 70 72 65 73 73  atch.the express
ae60: 69 6f 6e 20 61 72 65 20 72 65 6d 6f 76 65 64 2e  ion are removed.
ae70: 3c 2f 70 3e 0a 0a 3c 68 33 3e 52 65 73 74 72 69  </p>..<h3>Restri
ae80: 63 74 69 6f 6e 73 20 6f 6e 20 44 45 4c 45 54 45  ctions on DELETE
ae90: 20 53 74 61 74 65 6d 65 6e 74 73 20 57 69 74 68   Statements With
aea0: 69 6e 20 43 52 45 41 54 45 20 54 52 49 47 47 45  in CREATE TRIGGE
aeb0: 52 3c 2f 68 33 3e 0a 0a 3c 70 3e 5e 54 68 65 72  R</h3>..<p>^Ther
aec0: 65 20 61 72 65 20 61 64 64 69 74 69 6f 6e 61 6c  e are additional
aed0: 20 73 79 6e 74 61 78 20 72 65 73 74 72 69 63 74   syntax restrict
aee0: 69 6f 6e 73 20 6f 6e 20 44 45 4c 45 54 45 20 73  ions on DELETE s
aef0: 74 61 74 65 6d 65 6e 74 73 20 74 68 61 74 0a 6f  tatements that.o
af00: 63 63 75 72 20 77 69 74 68 69 6e 20 74 68 65 20  ccur within the 
af10: 62 6f 64 79 20 6f 66 20 61 20 5b 43 52 45 41 54  body of a [CREAT
af20: 45 20 54 52 49 47 47 45 52 5d 20 73 74 61 74 65  E TRIGGER] state
af30: 6d 65 6e 74 2e 20 20 5e 54 68 65 20 3c 69 3e 74  ment.  ^The <i>t
af40: 61 62 6c 65 2d 6e 61 6d 65 3c 2f 69 3e 0a 6d 75  able-name</i>.mu
af50: 73 74 20 62 65 20 75 6e 71 75 61 6c 69 66 69 65  st be unqualifie
af60: 64 2e 20 0a 5e 28 49 6e 20 6f 74 68 65 72 20 77  d. .^(In other w
af70: 6f 72 64 73 2c 20 74 68 65 20 3c 69 3e 64 61 74  ords, the <i>dat
af80: 61 62 61 73 65 2d 6e 61 6d 65 3c 2f 69 3e 3c 62  abase-name</i><b
af90: 3e 2e 3c 2f 62 3e 20 70 72 65 66 69 78 0a 6f 6e  >.</b> prefix.on
afa0: 20 74 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 20   the table name 
afb0: 69 73 20 6e 6f 74 20 61 6c 6c 6f 77 65 64 20 77  is not allowed w
afc0: 69 74 68 69 6e 20 74 72 69 67 67 65 72 73 2e 20  ithin triggers. 
afd0: 29 5e 0a 5e 54 68 65 20 74 61 62 6c 65 20 66 72  )^.^The table fr
afe0: 6f 6d 20 77 68 69 63 68 20 74 6f 20 64 65 6c 65  om which to dele
aff0: 74 65 20 6d 75 73 74 20 62 65 20 69 6e 20 74 68  te must be in th
b000: 65 20 73 61 6d 65 0a 64 61 74 61 62 61 73 65 20  e same.database 
b010: 61 73 20 74 68 65 20 74 61 62 6c 65 20 74 6f 20  as the table to 
b020: 77 68 69 63 68 20 74 68 65 20 74 72 69 67 67 65  which the trigge
b030: 72 20 69 73 20 61 74 74 61 63 68 65 64 2e 3c 2f  r is attached.</
b040: 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20 49 4e 44 45  p>..<p>^The INDE
b050: 58 45 44 20 42 59 20 61 6e 64 20 4e 4f 54 20 49  XED BY and NOT I
b060: 4e 44 45 58 45 44 20 63 6c 61 75 73 65 73 20 61  NDEXED clauses a
b070: 72 65 20 6e 6f 74 20 61 6c 6c 6f 77 65 64 20 6f  re not allowed o
b080: 6e 20 44 45 4c 45 54 45 0a 73 74 61 74 65 6d 65  n DELETE.stateme
b090: 6e 74 73 20 77 69 74 68 69 6e 20 74 72 69 67 67  nts within trigg
b0a0: 65 72 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68  ers.</p>..<p>^Th
b0b0: 65 20 4c 49 4d 49 54 20 63 6c 61 75 73 65 20 28  e LIMIT clause (
b0c0: 64 65 73 63 72 69 62 65 64 20 62 65 6c 6f 77 29  described below)
b0d0: 20 69 73 20 75 6e 73 75 70 70 6f 72 74 65 64 20   is unsupported 
b0e0: 77 69 74 68 69 6e 20 74 72 69 67 67 65 72 73 2e  within triggers.
b0f0: 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 68 64 5f 66 72  </p>..<tcl>hd_fr
b100: 61 67 6d 65 6e 74 20 74 72 75 63 61 74 65 6f 70  agment trucateop
b110: 74 20 7b 74 72 75 6e 63 61 74 65 20 6f 70 74 69  t {truncate opti
b120: 6d 69 7a 61 74 69 6f 6e 7d 3c 2f 74 63 6c 3e 0a  mization}</tcl>.
b130: 3c 68 33 3e 54 68 65 20 54 72 75 6e 63 61 74 65  <h3>The Truncate
b140: 20 4f 70 74 69 6d 69 7a 61 74 69 6f 6e 3c 2f 68   Optimization</h
b150: 33 3e 0a 0a 3c 70 3e 5e 57 68 65 6e 20 74 68 65  3>..<p>^When the
b160: 20 57 48 45 52 45 20 69 73 20 6f 6d 69 74 74 65   WHERE is omitte
b170: 64 20 66 72 6f 6d 20 61 20 44 45 4c 45 54 45 20  d from a DELETE 
b180: 73 74 61 74 65 6d 65 6e 74 20 61 6e 64 20 74 68  statement and th
b190: 65 20 74 61 62 6c 65 0a 62 65 69 6e 67 20 64 65  e table.being de
b1a0: 6c 65 74 65 64 20 68 61 73 20 6e 6f 20 74 72 69  leted has no tri
b1b0: 67 67 65 72 73 2c 0a 53 51 4c 69 74 65 20 75 73  ggers,.SQLite us
b1c0: 65 73 20 61 6e 20 6f 70 74 69 6d 69 7a 61 74 69  es an optimizati
b1d0: 6f 6e 20 74 6f 20 65 72 61 73 65 20 74 68 65 20  on to erase the 
b1e0: 65 6e 74 69 72 65 20 74 61 62 6c 65 20 63 6f 6e  entire table con
b1f0: 74 65 6e 74 0a 77 69 74 68 6f 75 74 20 68 61 76  tent.without hav
b200: 69 6e 67 20 74 6f 20 76 69 73 69 74 20 65 61 63  ing to visit eac
b210: 68 20 72 6f 77 20 6f 66 20 74 68 65 20 74 61 62  h row of the tab
b220: 6c 65 20 69 6e 64 69 76 69 64 75 61 6c 6c 79 2e  le individually.
b230: 0a 54 68 69 73 20 22 74 72 75 6e 63 61 74 65 22  .This "truncate"
b240: 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20 6d 61   optimization ma
b250: 6b 65 73 20 74 68 65 20 64 65 6c 65 74 65 20 72  kes the delete r
b260: 75 6e 20 6d 75 63 68 20 66 61 73 74 65 72 2e 0a  un much faster..
b270: 50 72 69 6f 72 20 74 6f 20 53 51 4c 69 74 65 20  Prior to SQLite 
b280: 5b 76 65 72 73 69 6f 6e 20 33 2e 36 2e 35 5d 2c  [version 3.6.5],
b290: 20 74 68 65 20 74 72 75 6e 63 61 74 65 20 6f 70   the truncate op
b2a0: 74 69 6d 69 7a 61 74 69 6f 6e 0a 61 6c 73 6f 20  timization.also 
b2b0: 6d 65 61 6e 74 20 74 68 61 74 20 74 68 65 20 5b  meant that the [
b2c0: 73 71 6c 69 74 65 33 5f 63 68 61 6e 67 65 73 28  sqlite3_changes(
b2d0: 29 5d 20 61 6e 64 0a 5b 73 71 6c 69 74 65 33 5f  )] and.[sqlite3_
b2e0: 74 6f 74 61 6c 5f 63 68 61 6e 67 65 73 28 29 5d  total_changes()]
b2f0: 20 69 6e 74 65 72 66 61 63 65 73 0a 61 6e 64 20   interfaces.and 
b300: 74 68 65 20 5b 63 6f 75 6e 74 5f 63 68 61 6e 67  the [count_chang
b310: 65 73 20 70 72 61 67 6d 61 5d 0a 77 69 6c 6c 20  es pragma].will 
b320: 6e 6f 74 20 61 63 74 75 61 6c 6c 79 20 72 65 74  not actually ret
b330: 75 72 6e 20 74 68 65 20 6e 75 6d 62 65 72 20 6f  urn the number o
b340: 66 20 64 65 6c 65 74 65 64 20 72 6f 77 73 2e 20  f deleted rows. 
b350: 20 0a 54 68 61 74 20 70 72 6f 62 6c 65 6d 20 68   .That problem h
b360: 61 73 20 62 65 65 6e 20 66 69 78 65 64 20 61 73  as been fixed as
b370: 20 6f 66 20 5b 76 65 72 73 69 6f 6e 20 33 2e 36   of [version 3.6
b380: 2e 35 5d 2e 0a 0a 3c 70 3e 5e 54 68 65 20 74 72  .5]...<p>^The tr
b390: 75 6e 63 61 74 65 20 6f 70 74 69 6d 69 7a 61 74  uncate optimizat
b3a0: 69 6f 6e 20 63 61 6e 20 62 65 20 70 65 72 6d 61  ion can be perma
b3b0: 6e 65 6e 74 6c 79 20 64 69 73 61 62 6c 65 64 20  nently disabled 
b3c0: 66 6f 72 20 61 6c 6c 20 71 75 65 72 69 65 73 0a  for all queries.
b3d0: 62 79 20 72 65 63 6f 6d 70 69 6c 69 6e 67 0a 53  by recompiling.S
b3e0: 51 4c 69 74 65 20 77 69 74 68 20 74 68 65 20 5b  QLite with the [
b3f0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 54 52 55 4e  SQLITE_OMIT_TRUN
b400: 43 41 54 45 5f 4f 50 54 49 4d 49 5a 41 54 49 4f  CATE_OPTIMIZATIO
b410: 4e 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  N] compile-time 
b420: 73 77 69 74 63 68 2e 3c 2f 70 3e 0a 0a 3c 70 3e  switch.</p>..<p>
b430: 54 68 65 20 74 72 75 6e 63 61 74 65 20 6f 70 74  The truncate opt
b440: 69 6d 69 7a 61 74 69 6f 6e 20 63 61 6e 20 61 6c  imization can al
b450: 73 6f 20 62 65 20 64 69 73 61 62 6c 65 64 20 61  so be disabled a
b460: 74 20 72 75 6e 74 69 6d 65 20 75 73 69 6e 67 0a  t runtime using.
b470: 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 73 65 74  the [sqlite3_set
b480: 5f 61 75 74 68 6f 72 69 7a 65 72 28 29 5d 20 69  _authorizer()] i
b490: 6e 74 65 72 66 61 63 65 2e 20 20 5e 49 66 20 61  nterface.  ^If a
b4a0: 6e 20 61 75 74 68 6f 72 69 7a 65 72 20 63 61 6c  n authorizer cal
b4b0: 6c 62 61 63 6b 0a 72 65 74 75 72 6e 73 20 5b 53  lback.returns [S
b4c0: 51 4c 49 54 45 5f 49 47 4e 4f 52 45 5d 20 66 6f  QLITE_IGNORE] fo
b4d0: 72 20 61 6e 20 5b 53 51 4c 49 54 45 5f 44 45 4c  r an [SQLITE_DEL
b4e0: 45 54 45 5d 20 61 63 74 69 6f 6e 20 63 6f 64 65  ETE] action code
b4f0: 2c 20 74 68 65 6e 0a 74 68 65 20 44 45 4c 45 54  , then.the DELET
b500: 45 20 6f 70 65 72 61 74 69 6f 6e 20 77 69 6c 6c  E operation will
b510: 20 70 72 6f 63 65 65 64 20 62 75 74 20 74 68 65   proceed but the
b520: 20 74 72 75 6e 63 61 74 65 20 6f 70 74 69 6d 69   truncate optimi
b530: 7a 61 74 69 6f 6e 20 77 69 6c 6c 0a 62 65 20 62  zation will.be b
b540: 79 70 61 73 73 65 64 20 61 6e 64 20 72 6f 77 73  ypassed and rows
b550: 20 77 69 6c 6c 20 62 65 20 64 65 6c 65 74 65 64   will be deleted
b560: 20 6f 6e 65 20 62 79 20 6f 6e 65 2e 3c 2f 70 3e   one by one.</p>
b570: 0a 0a 3c 68 33 3e 55 73 65 20 4f 66 20 4c 49 4d  ..<h3>Use Of LIM
b580: 49 54 3c 2f 68 33 3e 0a 0a 3c 70 3e 5e 28 49 66  IT</h3>..<p>^(If
b590: 20 53 51 4c 69 74 65 20 69 73 20 63 6f 6d 70 69   SQLite is compi
b5a0: 6c 65 64 20 77 69 74 68 20 74 68 65 20 5b 53 51  led with the [SQ
b5b0: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 55 50 44 41  LITE_ENABLE_UPDA
b5c0: 54 45 5f 44 45 4c 45 54 45 5f 4c 49 4d 49 54 5d  TE_DELETE_LIMIT]
b5d0: 0a 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70  .compile-time op
b5e0: 74 69 6f 6e 2c 20 74 68 65 6e 20 74 68 65 20 73  tion, then the s
b5f0: 79 6e 74 61 78 20 6f 66 20 74 68 65 20 44 45 4c  yntax of the DEL
b600: 45 54 45 20 73 74 61 74 65 6d 65 6e 74 20 69 73  ETE statement is
b610: 0a 65 78 74 65 6e 64 65 64 20 62 79 20 74 68 65  .extended by the
b620: 20 61 64 64 69 74 69 6f 6e 20 6f 66 20 6f 70 74   addition of opt
b630: 69 6f 6e 61 6c 20 4f 52 44 45 52 20 42 59 20 61  ional ORDER BY a
b640: 6e 64 20 4c 49 4d 49 54 20 63 6c 61 75 73 65 73  nd LIMIT clauses
b650: 3a 29 5e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 42 75  :)^</p>..<tcl>Bu
b660: 62 62 6c 65 44 69 61 67 72 61 6d 20 64 65 6c 65  bbleDiagram dele
b670: 74 65 2d 73 74 6d 74 2d 6c 69 6d 69 74 65 64 3c  te-stmt-limited<
b680: 2f 74 63 6c 3e 0a 0a 3c 70 3e 5e 54 68 65 20 6f  /tcl>..<p>^The o
b690: 70 74 69 6f 6e 61 6c 20 4c 49 4d 49 54 20 63 6c  ptional LIMIT cl
b6a0: 61 75 73 65 20 63 61 6e 20 62 65 20 75 73 65 64  ause can be used
b6b0: 20 74 6f 20 6c 69 6d 69 74 20 74 68 65 20 6e 75   to limit the nu
b6c0: 6d 62 65 72 20 6f 66 0a 72 6f 77 73 20 64 65 6c  mber of.rows del
b6d0: 65 74 65 64 2c 20 61 6e 64 20 74 68 65 72 65 62  eted, and thereb
b6e0: 79 20 6c 69 6d 69 74 20 74 68 65 20 73 69 7a 65  y limit the size
b6f0: 20 6f 66 20 74 68 65 20 74 72 61 6e 73 61 63 74   of the transact
b700: 69 6f 6e 2e 0a 5e 54 68 65 20 4f 52 44 45 52 20  ion..^The ORDER 
b710: 42 59 20 63 6c 61 75 73 65 20 6f 6e 20 61 20 44  BY clause on a D
b720: 45 4c 45 54 45 20 73 74 61 74 65 6d 65 6e 74 0a  ELETE statement.
b730: 69 73 20 75 73 65 64 20 6f 6e 6c 79 20 74 6f 20  is used only to 
b740: 64 65 74 65 72 6d 69 6e 65 20 77 68 69 63 68 20  determine which 
b750: 72 6f 77 73 20 66 61 6c 6c 0a 77 69 74 68 69 6e  rows fall.within
b760: 20 74 68 65 20 4c 49 4d 49 54 2e 20 20 5e 54 68   the LIMIT.  ^Th
b770: 65 20 6f 72 64 65 72 20 69 6e 20 77 68 69 63 68  e order in which
b780: 20 72 6f 77 73 20 61 72 65 20 64 65 6c 65 74 65   rows are delete
b790: 64 20 69 73 20 61 72 62 69 74 72 61 72 79 0a 61  d is arbitrary.a
b7a0: 6e 64 20 69 73 20 6e 6f 74 20 64 65 74 65 72 6d  nd is not determ
b7b0: 69 6e 65 64 20 62 79 20 74 68 65 20 4f 52 44 45  ined by the ORDE
b7c0: 52 20 42 59 20 63 6c 61 75 73 65 2e 3c 2f 70 3e  R BY clause.</p>
b7d0: 0a 0a 3c 70 3e 5e 54 68 65 20 70 72 65 73 65 6e  ..<p>^The presen
b7e0: 63 65 20 6f 66 20 61 20 4c 49 4d 49 54 20 63 6c  ce of a LIMIT cl
b7f0: 61 75 73 65 20 64 65 66 65 61 74 73 20 74 68 65  ause defeats the
b800: 20 74 72 75 6e 63 61 74 65 20 6f 70 74 69 6d 69   truncate optimi
b810: 7a 61 74 69 6f 6e 0a 63 61 75 73 69 6e 67 20 61  zation.causing a
b820: 6c 6c 20 72 6f 77 73 20 62 65 69 6e 67 20 64 65  ll rows being de
b830: 6c 65 74 65 64 20 74 6f 20 62 65 20 76 69 73 69  leted to be visi
b840: 74 65 64 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a  ted.</p>..<tcl>.
b850: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
b860: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
b870: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
b880: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
b890: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a  ###############.
b8a0: 53 65 63 74 69 6f 6e 20 7b 44 45 54 41 43 48 20  Section {DETACH 
b8b0: 44 41 54 41 42 41 53 45 7d 20 64 65 74 61 63 68  DATABASE} detach
b8c0: 20 2a 44 45 54 41 43 48 0a 0a 42 75 62 62 6c 65   *DETACH..Bubble
b8d0: 44 69 61 67 72 61 6d 20 64 65 74 61 63 68 2d 73  Diagram detach-s
b8e0: 74 6d 74 20 31 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70  tmt 1.</tcl>..<p
b8f0: 3e 5e 54 68 69 73 20 73 74 61 74 65 6d 65 6e 74  >^This statement
b900: 20 64 65 74 61 63 68 65 73 20 61 6e 20 61 64 64   detaches an add
b910: 69 74 69 6f 6e 61 6c 20 64 61 74 61 62 61 73 65  itional database
b920: 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 70 72 65 76   connection prev
b930: 69 6f 75 73 6c 79 20 0a 61 74 74 61 63 68 65 64  iously .attached
b940: 20 75 73 69 6e 67 20 74 68 65 20 5b 41 54 54 41   using the [ATTA
b950: 43 48 5d 20 73 74 61 74 65 6d 65 6e 74 2e 20 20  CH] statement.  
b960: 0a 5e 49 74 20 69 73 20 70 6f 73 73 69 62 6c 65  .^It is possible
b970: 20 74 6f 20 68 61 76 65 20 74 68 65 20 73 61 6d   to have the sam
b980: 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20  e database file 
b990: 61 74 74 61 63 68 65 64 20 6d 75 6c 74 69 70 6c  attached multipl
b9a0: 65 20 74 69 6d 65 73 20 75 73 69 6e 67 20 0a 64  e times using .d
b9b0: 69 66 66 65 72 65 6e 74 20 6e 61 6d 65 73 2c 20  ifferent names, 
b9c0: 61 6e 64 20 64 65 74 61 63 68 69 6e 67 20 6f 6e  and detaching on
b9d0: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 6f 20  e connection to 
b9e0: 61 20 66 69 6c 65 20 77 69 6c 6c 20 6c 65 61 76  a file will leav
b9f0: 65 20 74 68 65 20 0a 6f 74 68 65 72 73 20 69 6e  e the .others in
ba00: 74 61 63 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54  tact.</p>..<p>^T
ba10: 68 69 73 20 73 74 61 74 65 6d 65 6e 74 20 77 69  his statement wi
ba20: 6c 6c 20 66 61 69 6c 20 69 66 20 53 51 4c 69 74  ll fail if SQLit
ba30: 65 20 69 73 20 69 6e 20 74 68 65 20 6d 69 64 64  e is in the midd
ba40: 6c 65 20 6f 66 20 61 20 74 72 61 6e 73 61 63 74  le of a transact
ba50: 69 6f 6e 2e 3c 2f 70 3e 0a 0a 0a 3c 74 63 6c 3e  ion.</p>...<tcl>
ba60: 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  .###############
ba70: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
ba80: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
ba90: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
baa0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a  ###############.
bab0: 53 65 63 74 69 6f 6e 20 7b 44 52 4f 50 20 49 4e  Section {DROP IN
bac0: 44 45 58 7d 20 64 72 6f 70 69 6e 64 65 78 20 7b  DEX} dropindex {
bad0: 7b 44 52 4f 50 20 49 4e 44 45 58 7d 7d 0a 0a 42  {DROP INDEX}}..B
bae0: 75 62 62 6c 65 44 69 61 67 72 61 6d 20 64 72 6f  ubbleDiagram dro
baf0: 70 2d 69 6e 64 65 78 2d 73 74 6d 74 20 31 0a 3c  p-index-stmt 1.<
bb00: 2f 74 63 6c 3e 0a 0a 3c 70 3e 5e 54 68 65 20 44  /tcl>..<p>^The D
bb10: 52 4f 50 20 49 4e 44 45 58 20 73 74 61 74 65 6d  ROP INDEX statem
bb20: 65 6e 74 20 72 65 6d 6f 76 65 73 20 61 6e 20 69  ent removes an i
bb30: 6e 64 65 78 20 61 64 64 65 64 0a 77 69 74 68 20  ndex added.with 
bb40: 74 68 65 20 5b 43 52 45 41 54 45 20 49 4e 44 45  the [CREATE INDE
bb50: 58 5d 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 54  X] statement.  T
bb60: 68 65 20 69 6e 64 65 78 20 69 73 20 63 6f 6d 70  he index is comp
bb70: 6c 65 74 65 6c 79 20 72 65 6d 6f 76 65 64 20 66  letely removed f
bb80: 72 6f 6d 0a 74 68 65 20 64 69 73 6b 2e 20 20 54  rom.the disk.  T
bb90: 68 65 20 6f 6e 6c 79 20 77 61 79 20 74 6f 20 72  he only way to r
bba0: 65 63 6f 76 65 72 20 74 68 65 20 69 6e 64 65 78  ecover the index
bbb0: 20 69 73 20 74 6f 20 72 65 65 6e 74 65 72 20 74   is to reenter t
bbc0: 68 65 0a 61 70 70 72 6f 70 72 69 61 74 65 20 5b  he.appropriate [
bbd0: 43 52 45 41 54 45 20 49 4e 44 45 58 5d 20 63 6f  CREATE INDEX] co
bbe0: 6d 6d 61 6e 64 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c  mmand.</p>..<tcl
bbf0: 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23  >.##############
bc00: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
bc10: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
bc20: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
bc30: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
bc40: 0a 53 65 63 74 69 6f 6e 20 7b 44 52 4f 50 20 54  .Section {DROP T
bc50: 41 42 4c 45 7d 20 64 72 6f 70 74 61 62 6c 65 20  ABLE} droptable 
bc60: 7b 7b 44 52 4f 50 20 54 41 42 4c 45 7d 7d 0a 0a  {{DROP TABLE}}..
bc70: 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 64 72  BubbleDiagram dr
bc80: 6f 70 2d 74 61 62 6c 65 2d 73 74 6d 74 20 31 0a  op-table-stmt 1.
bc90: 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 5e 54 68 65 20  </tcl>..<p>^The 
bca0: 44 52 4f 50 20 54 41 42 4c 45 20 73 74 61 74 65  DROP TABLE state
bcb0: 6d 65 6e 74 20 72 65 6d 6f 76 65 73 20 61 20 74  ment removes a t
bcc0: 61 62 6c 65 20 61 64 64 65 64 20 77 69 74 68 20  able added with 
bcd0: 74 68 65 0a 5b 43 52 45 41 54 45 20 54 41 42 4c  the.[CREATE TABL
bce0: 45 5d 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 54  E] statement.  T
bcf0: 68 65 20 6e 61 6d 65 20 73 70 65 63 69 66 69 65  he name specifie
bd00: 64 20 69 73 20 74 68 65 0a 74 61 62 6c 65 20 6e  d is the.table n
bd10: 61 6d 65 2e 20 20 5e 54 68 65 20 64 72 6f 70 70  ame.  ^The dropp
bd20: 65 64 20 74 61 62 6c 65 20 69 73 20 63 6f 6d 70  ed table is comp
bd30: 6c 65 74 65 6c 79 20 72 65 6d 6f 76 65 64 20 66  letely removed f
bd40: 72 6f 6d 20 74 68 65 20 64 61 74 61 62 61 73 65  rom the database
bd50: 20 0a 73 63 68 65 6d 61 20 61 6e 64 20 74 68 65   .schema and the
bd60: 20 64 69 73 6b 20 66 69 6c 65 2e 20 20 54 68 65   disk file.  The
bd70: 20 74 61 62 6c 65 20 63 61 6e 20 6e 6f 74 20 62   table can not b
bd80: 65 20 72 65 63 6f 76 65 72 65 64 2e 20 20 0a 5e  e recovered.  .^
bd90: 41 6c 6c 20 69 6e 64 69 63 65 73 20 61 6e 64 20  All indices and 
bda0: 74 72 69 67 67 65 72 73 0a 61 73 73 6f 63 69 61  triggers.associa
bdb0: 74 65 64 20 77 69 74 68 20 74 68 65 20 74 61 62  ted with the tab
bdc0: 6c 65 20 61 72 65 20 61 6c 73 6f 20 64 65 6c 65  le are also dele
bdd0: 74 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68  ted.</p>..<p>^Th
bde0: 65 20 6f 70 74 69 6f 6e 61 6c 20 49 46 20 45 58  e optional IF EX
bdf0: 49 53 54 53 20 63 6c 61 75 73 65 20 73 75 70 70  ISTS clause supp
be00: 72 65 73 73 65 73 20 74 68 65 20 65 72 72 6f 72  resses the error
be10: 20 74 68 61 74 20 77 6f 75 6c 64 20 6e 6f 72 6d   that would norm
be20: 61 6c 6c 79 0a 72 65 73 75 6c 74 20 69 66 20 74  ally.result if t
be30: 68 65 20 74 61 62 6c 65 20 64 6f 65 73 20 6e 6f  he table does no
be40: 74 20 65 78 69 73 74 2e 3c 2f 70 3e 0a 0a 3c 70  t exist.</p>..<p
be50: 3e 5e 49 66 20 5b 66 6f 72 65 69 67 6e 20 6b 65  >^If [foreign ke
be60: 79 20 63 6f 6e 73 74 72 61 69 6e 74 73 5d 20 61  y constraints] a
be70: 72 65 20 65 6e 61 62 6c 65 64 2c 20 61 20 44 52  re enabled, a DR
be80: 4f 50 20 54 41 42 4c 45 20 63 6f 6d 6d 61 6e 64  OP TABLE command
be90: 20 70 65 72 66 6f 72 6d 73 20 61 6e 0a 69 6d 70   performs an.imp
bea0: 6c 69 63 69 74 20 5b 44 45 4c 45 54 45 20 7c 20  licit [DELETE | 
beb0: 44 45 4c 45 54 45 20 46 52 4f 4d 20 26 6c 74 3b  DELETE FROM &lt;
bec0: 74 62 6c 26 67 74 3b 5d 20 63 6f 6d 6d 61 6e 64  tbl&gt;] command
bed0: 20 62 65 66 6f 72 65 20 72 65 6d 6f 76 69 6e 67   before removing
bee0: 20 74 68 65 0a 74 61 62 6c 65 20 66 72 6f 6d 20   the.table from 
bef0: 74 68 65 20 64 61 74 61 62 61 73 65 20 73 63 68  the database sch
bf00: 65 6d 61 2e 20 5e 41 6e 79 20 74 72 69 67 67 65  ema. ^Any trigge
bf10: 72 73 20 61 74 74 61 63 68 65 64 20 74 6f 20 74  rs attached to t
bf20: 68 65 20 74 61 62 6c 65 20 61 72 65 0a 64 72 6f  he table are.dro
bf30: 70 70 65 64 20 66 72 6f 6d 20 74 68 65 20 64 61  pped from the da
bf40: 74 61 62 61 73 65 20 73 63 68 65 6d 61 20 62 65  tabase schema be
bf50: 66 6f 72 65 20 74 68 65 20 69 6d 70 6c 69 63 69  fore the implici
bf60: 74 20 44 45 4c 45 54 45 20 46 52 4f 4d 20 26 6c  t DELETE FROM &l
bf70: 74 3b 74 62 6c 26 67 74 3b 20 0a 69 73 20 65 78  t;tbl&gt; .is ex
bf80: 65 63 75 74 65 64 2c 20 73 6f 20 74 68 69 73 20  ecuted, so this 
bf90: 63 61 6e 6e 6f 74 20 63 61 75 73 65 20 61 6e 79  cannot cause any
bfa0: 20 74 72 69 67 67 65 72 73 20 74 6f 20 66 69 72   triggers to fir
bfb0: 65 2e 20 42 79 20 63 6f 6e 74 72 61 73 74 2c 20  e. By contrast, 
bfc0: 5e 61 6e 0a 69 6d 70 6c 69 63 69 74 20 44 45 4c  ^an.implicit DEL
bfd0: 45 54 45 20 46 52 4f 4d 20 26 6c 74 3b 74 62 6c  ETE FROM &lt;tbl
bfe0: 26 67 74 3b 20 64 6f 65 73 20 63 61 75 73 65 20  &gt; does cause 
bff0: 61 6e 79 20 63 6f 6e 66 69 67 75 72 65 64 0a 5b  any configured.[
c000: 66 6f 72 65 69 67 6e 20 6b 65 79 20 61 63 74 69  foreign key acti
c010: 6f 6e 73 5d 20 74 6f 20 74 61 6b 65 20 70 6c 61  ons] to take pla
c020: 63 65 2e 20 0a 5e 49 66 20 74 68 65 20 69 6d 70  ce. .^If the imp
c030: 6c 69 63 69 74 20 44 45 4c 45 54 45 20 46 52 4f  licit DELETE FRO
c040: 4d 20 26 6c 74 3b 74 62 6c 26 67 74 3b 20 65 78  M &lt;tbl&gt; ex
c050: 65 63 75 74 65 64 0a 61 73 20 70 61 72 74 20 6f  ecuted.as part o
c060: 66 20 61 20 44 52 4f 50 20 54 41 42 4c 45 20 63  f a DROP TABLE c
c070: 6f 6d 6d 61 6e 64 20 76 69 6f 6c 61 74 65 73 20  ommand violates 
c080: 61 6e 79 20 69 6d 6d 65 64 69 61 74 65 20 66 6f  any immediate fo
c090: 72 65 69 67 6e 20 6b 65 79 20 63 6f 6e 73 74 72  reign key constr
c0a0: 61 69 6e 74 73 2c 0a 61 6e 20 65 72 72 6f 72 20  aints,.an error 
c0b0: 69 73 20 72 65 74 75 72 6e 65 64 20 61 6e 64 20  is returned and 
c0c0: 74 68 65 20 74 61 62 6c 65 20 69 73 20 6e 6f 74  the table is not
c0d0: 20 64 72 6f 70 70 65 64 2e 20 5e 49 66 20 0a 74   dropped. ^If .t
c0e0: 68 65 20 69 6d 70 6c 69 63 69 74 20 44 45 4c 45  he implicit DELE
c0f0: 54 45 20 46 52 4f 4d 20 26 6c 74 3b 74 62 6c 26  TE FROM &lt;tbl&
c100: 67 74 3b 20 63 61 75 73 65 73 20 61 6e 79 20 0a  gt; causes any .
c110: 64 65 66 65 72 72 65 64 20 66 6f 72 65 69 67 6e  deferred foreign
c120: 20 6b 65 79 20 63 6f 6e 73 74 72 61 69 6e 74 73   key constraints
c130: 20 74 6f 20 62 65 20 76 69 6f 6c 61 74 65 64 2c   to be violated,
c140: 20 61 6e 64 20 74 68 65 20 76 69 6f 6c 61 74 69   and the violati
c150: 6f 6e 73 20 73 74 69 6c 6c 0a 65 78 69 73 74 20  ons still.exist 
c160: 77 68 65 6e 20 74 68 65 20 74 72 61 6e 73 61 63  when the transac
c170: 74 69 6f 6e 20 69 73 20 63 6f 6d 6d 69 74 74 65  tion is committe
c180: 64 2c 20 61 6e 20 65 72 72 6f 72 20 69 73 20 72  d, an error is r
c190: 65 74 75 72 6e 65 64 20 61 74 20 74 68 65 20 74  eturned at the t
c1a0: 69 6d 65 0a 6f 66 20 63 6f 6d 6d 69 74 2e 0a 0a  ime.of commit...
c1b0: 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23  <tcl>.##########
c1c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c1d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c1e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c1f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c200: 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b 44 52  ####.Section {DR
c210: 4f 50 20 54 52 49 47 47 45 52 7d 20 64 72 6f 70  OP TRIGGER} drop
c220: 74 72 69 67 67 65 72 20 7b 7b 44 52 4f 50 20 54  trigger {{DROP T
c230: 52 49 47 47 45 52 7d 7d 0a 0a 42 75 62 62 6c 65  RIGGER}}..Bubble
c240: 44 69 61 67 72 61 6d 20 64 72 6f 70 2d 74 72 69  Diagram drop-tri
c250: 67 67 65 72 2d 73 74 6d 74 20 31 0a 3c 2f 74 63  gger-stmt 1.</tc
c260: 6c 3e 0a 0a 3c 70 3e 5e 54 68 65 20 44 52 4f 50  l>..<p>^The DROP
c270: 20 54 52 49 47 47 45 52 20 73 74 61 74 65 6d 65   TRIGGER stateme
c280: 6e 74 20 72 65 6d 6f 76 65 73 20 61 20 74 72 69  nt removes a tri
c290: 67 67 65 72 20 63 72 65 61 74 65 64 20 62 79 20  gger created by 
c2a0: 74 68 65 20 0a 5b 43 52 45 41 54 45 20 54 52 49  the .[CREATE TRI
c2b0: 47 47 45 52 5d 20 73 74 61 74 65 6d 65 6e 74 2e  GGER] statement.
c2c0: 20 20 5e 54 68 65 20 74 72 69 67 67 65 72 20 69    ^The trigger i
c2d0: 73 20 0a 64 65 6c 65 74 65 64 20 66 72 6f 6d 20  s .deleted from 
c2e0: 74 68 65 20 64 61 74 61 62 61 73 65 20 73 63 68  the database sch
c2f0: 65 6d 61 2e 20 5e 4e 6f 74 65 20 74 68 61 74 20  ema. ^Note that 
c300: 74 72 69 67 67 65 72 73 20 61 72 65 20 61 75 74  triggers are aut
c310: 6f 6d 61 74 69 63 61 6c 6c 79 20 0a 64 72 6f 70  omatically .drop
c320: 70 65 64 20 77 68 65 6e 20 74 68 65 20 61 73 73  ped when the ass
c330: 6f 63 69 61 74 65 64 20 74 61 62 6c 65 20 69 73  ociated table is
c340: 20 64 72 6f 70 70 65 64 2e 3c 2f 70 3e 0a 0a 3c   dropped.</p>..<
c350: 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23  tcl>.###########
c360: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c370: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c380: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c390: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c3a0: 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b 44 52 4f  ###.Section {DRO
c3b0: 50 20 56 49 45 57 7d 20 64 72 6f 70 76 69 65 77  P VIEW} dropview
c3c0: 20 7b 7b 44 52 4f 50 20 56 49 45 57 7d 7d 0a 0a   {{DROP VIEW}}..
c3d0: 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 64 72  BubbleDiagram dr
c3e0: 6f 70 2d 76 69 65 77 2d 73 74 6d 74 20 31 0a 3c  op-view-stmt 1.<
c3f0: 2f 74 63 6c 3e 0a 0a 3c 70 3e 5e 54 68 65 20 44  /tcl>..<p>^The D
c400: 52 4f 50 20 56 49 45 57 20 73 74 61 74 65 6d 65  ROP VIEW stateme
c410: 6e 74 20 72 65 6d 6f 76 65 73 20 61 20 76 69 65  nt removes a vie
c420: 77 20 63 72 65 61 74 65 64 20 62 79 20 74 68 65  w created by the
c430: 0a 5b 43 52 45 41 54 45 20 56 49 45 57 5d 20 73  .[CREATE VIEW] s
c440: 74 61 74 65 6d 65 6e 74 2e 20 20 5e 54 68 65 20  tatement.  ^The 
c450: 6e 61 6d 65 20 73 70 65 63 69 66 69 65 64 20 69  name specified i
c460: 73 20 74 68 65 20 0a 76 69 65 77 20 6e 61 6d 65  s the .view name
c470: 2e 20 20 5e 49 74 20 69 73 20 72 65 6d 6f 76 65  .  ^It is remove
c480: 64 20 66 72 6f 6d 20 74 68 65 20 64 61 74 61 62  d from the datab
c490: 61 73 65 20 73 63 68 65 6d 61 2c 20 62 75 74 20  ase schema, but 
c4a0: 6e 6f 20 61 63 74 75 61 6c 20 64 61 74 61 20 0a  no actual data .
c4b0: 69 6e 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e  in the underlyin
c4c0: 67 20 62 61 73 65 20 74 61 62 6c 65 73 20 69 73  g base tables is
c4d0: 20 6d 6f 64 69 66 69 65 64 2e 3c 2f 70 3e 0a 0a   modified.</p>..
c4e0: 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23  <tcl>.##########
c4f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c500: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c510: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c520: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c530: 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 45 58 50  ####.Section EXP
c540: 4c 41 49 4e 20 65 78 70 6c 61 69 6e 20 45 58 50  LAIN explain EXP
c550: 4c 41 49 4e 0a 0a 42 75 62 62 6c 65 44 69 61 67  LAIN..BubbleDiag
c560: 72 61 6d 20 73 71 6c 2d 73 74 6d 74 0a 3c 2f 74  ram sql-stmt.</t
c570: 63 6c 3e 0a 0a 3c 70 3e 5e 41 6e 20 53 51 4c 20  cl>..<p>^An SQL 
c580: 73 74 61 74 65 6d 65 6e 74 20 63 61 6e 20 62 65  statement can be
c590: 20 70 72 65 63 65 64 65 64 20 62 79 20 74 68 65   preceded by the
c5a0: 20 6b 65 79 77 6f 72 64 20 22 45 58 50 4c 41 49   keyword "EXPLAI
c5b0: 4e 22 20 6f 72 0a 62 79 20 74 68 65 20 70 68 72  N" or.by the phr
c5c0: 61 73 65 20 22 45 58 50 4c 41 49 4e 20 51 55 45  ase "EXPLAIN QUE
c5d0: 52 59 20 50 4c 41 4e 22 2e 20 20 5e 45 69 74 68  RY PLAN".  ^Eith
c5e0: 65 72 20 6d 6f 64 69 66 69 63 61 74 69 6f 6e 20  er modification 
c5f0: 63 61 75 73 65 73 20 74 68 65 0a 53 51 4c 20 73  causes the.SQL s
c600: 74 61 74 65 6d 65 6e 74 20 74 6f 20 62 65 68 61  tatement to beha
c610: 76 65 20 61 73 20 61 20 71 75 65 72 79 20 61 6e  ve as a query an
c620: 64 20 74 6f 20 72 65 74 75 72 6e 20 69 6e 66 6f  d to return info
c630: 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 0a 68 6f  rmation about.ho
c640: 77 20 74 68 65 20 53 51 4c 20 73 74 61 74 65 6d  w the SQL statem
c650: 65 6e 74 20 77 6f 75 6c 64 20 68 61 76 65 20 6f  ent would have o
c660: 70 65 72 61 74 65 64 20 69 66 20 74 68 65 20 45  perated if the E
c670: 58 50 4c 41 49 4e 20 6b 65 79 77 6f 72 64 20 6f  XPLAIN keyword o
c680: 72 0a 70 68 72 61 73 65 20 68 61 64 20 62 65 65  r.phrase had bee
c690: 6e 20 6f 6d 69 74 74 65 64 2e 3c 2f 70 3e 0a 0a  n omitted.</p>..
c6a0: 3c 70 3e 5e 57 68 65 6e 20 74 68 65 20 45 58 50  <p>^When the EXP
c6b0: 4c 41 49 4e 20 6b 65 79 77 6f 72 64 20 61 70 70  LAIN keyword app
c6c0: 65 61 72 73 20 62 79 20 69 74 73 65 6c 66 20 69  ears by itself i
c6d0: 74 20 63 61 75 73 65 73 20 74 68 65 20 73 74 61  t causes the sta
c6e0: 74 65 6d 65 6e 74 0a 74 6f 20 62 65 68 61 76 65  tement.to behave
c6f0: 20 61 73 20 61 20 71 75 65 72 79 20 74 68 61 74   as a query that
c700: 20 72 65 74 75 72 6e 73 20 74 68 65 20 73 65 71   returns the seq
c710: 75 65 6e 63 65 20 6f 66 20 0a 5b 76 69 72 74 75  uence of .[virtu
c720: 61 6c 20 6d 61 63 68 69 6e 65 20 69 6e 73 74 72  al machine instr
c730: 75 63 74 69 6f 6e 73 5d 20 69 74 20 77 6f 75 6c  uctions] it woul
c740: 64 20 68 61 76 65 0a 75 73 65 64 20 74 6f 20 65  d have.used to e
c750: 78 65 63 75 74 65 20 74 68 65 20 63 6f 6d 6d 61  xecute the comma
c760: 6e 64 20 68 61 64 20 74 68 65 20 45 58 50 4c 41  nd had the EXPLA
c770: 49 4e 20 6b 65 79 77 6f 72 64 20 6e 6f 74 20 62  IN keyword not b
c780: 65 65 6e 20 70 72 65 73 65 6e 74 2e 0a 5e 57 68  een present..^Wh
c790: 65 6e 20 74 68 65 20 45 58 50 4c 41 49 4e 20 51  en the EXPLAIN Q
c7a0: 55 45 52 59 20 50 4c 41 4e 20 70 68 72 61 73 65  UERY PLAN phrase
c7b0: 20 61 70 70 65 61 72 73 2c 20 74 68 65 20 73 74   appears, the st
c7c0: 61 74 65 6d 65 6e 74 20 72 65 74 75 72 6e 73 0a  atement returns.
c7d0: 68 69 67 68 2d 6c 65 76 65 6c 20 69 6e 66 6f 72  high-level infor
c7e0: 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 77 68 61  mation about wha
c7f0: 74 20 69 6e 64 69 63 65 73 20 77 6f 75 6c 64 20  t indices would 
c800: 68 61 76 65 20 62 65 65 6e 20 75 73 65 64 2e 3c  have been used.<
c810: 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 6f 75 74 70  /p>..<p>The outp
c820: 75 74 20 66 72 6f 6d 20 45 58 50 4c 41 49 4e 20  ut from EXPLAIN 
c830: 61 6e 64 20 45 58 50 4c 41 49 4e 20 51 55 45 52  and EXPLAIN QUER
c840: 59 20 50 4c 41 4e 20 69 73 20 69 6e 74 65 6e 64  Y PLAN is intend
c850: 65 64 20 66 6f 72 0a 69 6e 74 65 72 61 63 74 69  ed for.interacti
c860: 76 65 20 61 6e 61 6c 79 73 69 73 20 61 6e 64 20  ve analysis and 
c870: 74 72 6f 75 62 6c 65 73 68 6f 6f 74 69 6e 67 20  troubleshooting 
c880: 6f 6e 6c 79 2e 20 20 54 68 65 20 64 65 74 61 69  only.  The detai
c890: 6c 73 20 6f 66 20 74 68 65 20 0a 6f 75 74 70 75  ls of the .outpu
c8a0: 74 20 66 6f 72 6d 61 74 20 61 72 65 20 73 75 62  t format are sub
c8b0: 6a 65 63 74 20 74 6f 20 63 68 61 6e 67 65 20 66  ject to change f
c8c0: 72 6f 6d 20 6f 6e 65 20 72 65 6c 65 61 73 65 20  rom one release 
c8d0: 6f 66 20 53 51 4c 69 74 65 20 74 6f 20 74 68 65  of SQLite to the
c8e0: 20 6e 65 78 74 2e 0a 41 70 70 6c 69 63 61 74 69   next..Applicati
c8f0: 6f 6e 73 20 73 68 6f 75 6c 64 20 6e 6f 74 20 75  ons should not u
c900: 73 65 20 45 58 50 4c 41 49 4e 20 6f 72 20 45 58  se EXPLAIN or EX
c910: 50 4c 41 49 4e 20 51 55 45 52 59 20 50 4c 41 4e  PLAIN QUERY PLAN
c920: 20 73 69 6e 63 65 0a 74 68 65 69 72 20 65 78 61   since.their exa
c930: 63 74 20 62 65 68 61 76 69 6f 72 20 69 73 20 75  ct behavior is u
c940: 6e 64 6f 63 75 6d 65 6e 74 65 64 2c 20 75 6e 73  ndocumented, uns
c950: 70 65 63 69 66 69 65 64 2c 20 61 6e 64 20 76 61  pecified, and va
c960: 72 69 61 62 6c 65 2e 3c 2f 70 3e 0a 0a 3c 74 63  riable.</p>..<tc
c970: 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23 23  l>.#############
c980: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c990: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c9a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c9b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c9c0: 23 0a 53 65 63 74 69 6f 6e 20 65 78 70 72 65 73  #.Section expres
c9d0: 73 69 6f 6e 20 65 78 70 72 20 7b 2a 65 78 70 72  sion expr {*expr
c9e0: 65 73 73 69 6f 6e 20 7b 65 78 70 72 65 73 73 69  ession {expressi
c9f0: 6f 6e 20 73 79 6e 74 61 78 7d 7d 0a 0a 42 75 62  on syntax}}..Bub
ca00: 62 6c 65 44 69 61 67 72 61 6d 20 65 78 70 72 20  bleDiagram expr 
ca10: 31 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20  1.BubbleDiagram 
ca20: 6c 69 74 65 72 61 6c 2d 76 61 6c 75 65 0a 42 75  literal-value.Bu
ca30: 62 62 6c 65 44 69 61 67 72 61 6d 20 73 69 67 6e  bbleDiagram sign
ca40: 65 64 2d 6e 75 6d 62 65 72 0a 42 75 62 62 6c 65  ed-number.Bubble
ca50: 44 69 61 67 72 61 6d 20 72 61 69 73 65 2d 66 75  Diagram raise-fu
ca60: 6e 63 74 69 6f 6e 0a 3c 2f 74 63 6c 3e 0a 0a 3c  nction.</tcl>..<
ca70: 70 3e 54 68 69 73 20 73 65 63 74 69 6f 6e 20 69  p>This section i
ca80: 73 20 64 69 66 66 65 72 65 6e 74 20 66 72 6f 6d  s different from
ca90: 20 74 68 65 20 6f 74 68 65 72 73 2e 20 20 4d 6f   the others.  Mo
caa0: 73 74 20 6f 74 68 65 72 20 73 65 63 74 69 6f 6e  st other section
cab0: 73 20 6f 66 0a 74 68 69 73 20 64 6f 63 75 6d 65  s of.this docume
cac0: 6e 74 20 74 61 6c 6b 73 20 61 62 6f 75 74 20 61  nt talks about a
cad0: 20 70 61 72 74 69 63 75 6c 61 72 20 53 51 4c 20   particular SQL 
cae0: 63 6f 6d 6d 61 6e 64 2e 20 20 54 68 69 73 20 73  command.  This s
caf0: 65 63 74 69 6f 6e 20 64 6f 65 73 0a 6e 6f 74 20  ection does.not 
cb00: 74 61 6c 6b 20 61 62 6f 75 74 20 61 20 73 74 61  talk about a sta
cb10: 6e 64 61 6c 6f 6e 65 20 63 6f 6d 6d 61 6e 64 20  ndalone command 
cb20: 62 75 74 20 61 62 6f 75 74 20 22 65 78 70 72 65  but about "expre
cb30: 73 73 69 6f 6e 73 22 20 77 68 69 63 68 20 61 72  ssions" which ar
cb40: 65 20 0a 73 75 62 63 6f 6d 70 6f 6e 65 6e 74 73  e .subcomponents
cb50: 20 6f 66 20 6d 6f 73 74 20 6f 74 68 65 72 20 63   of most other c
cb60: 6f 6d 6d 61 6e 64 73 2e 3c 2f 70 3e 0a 0a 3c 74  ommands.</p>..<t
cb70: 63 6c 3e 68 64 5f 66 72 61 67 6d 65 6e 74 20 62  cl>hd_fragment b
cb80: 69 6e 61 72 79 6f 70 73 20 7b 62 69 6e 61 72 79  inaryops {binary
cb90: 20 6f 70 65 72 61 74 6f 72 73 7d 3c 2f 74 63 6c   operators}</tcl
cba0: 3e 0a 3c 68 33 3e 4f 70 65 72 61 74 6f 72 73 3c  >.<h3>Operators<
cbb0: 2f 68 33 3e 0a 3c 70 3e 5e 28 53 51 4c 69 74 65  /h3>.<p>^(SQLite
cbc0: 20 75 6e 64 65 72 73 74 61 6e 64 73 20 74 68 65   understands the
cbd0: 20 66 6f 6c 6c 6f 77 69 6e 67 20 62 69 6e 61 72   following binar
cbe0: 79 20 6f 70 65 72 61 74 6f 72 73 2c 20 69 6e 20  y operators, in 
cbf0: 6f 72 64 65 72 20 66 72 6f 6d 0a 68 69 67 68 65  order from.highe
cc00: 73 74 20 74 6f 20 6c 6f 77 65 73 74 20 70 72 65  st to lowest pre
cc10: 63 65 64 65 6e 63 65 3a 3c 2f 70 3e 0a 0a 3c 62  cedence:</p>..<b
cc20: 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70 72 65 3e 0a  lockquote><pre>.
cc30: 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 22 23 32 63  <font color="#2c
cc40: 32 63 66 30 22 3e 3c 62 69 67 3e 7c 7c 0a 2a 20  2cf0"><big>||.* 
cc50: 20 20 20 2f 20 20 20 20 25 0a 2b 20 20 20 20 2d     /    %.+    -
cc60: 0a 26 6c 74 3b 26 6c 74 3b 20 20 20 26 67 74 3b  .&lt;&lt;   &gt;
cc70: 26 67 74 3b 20 20 20 26 61 6d 70 3b 20 20 20 20  &gt;   &amp;    
cc80: 7c 0a 26 6c 74 3b 20 20 20 20 26 6c 74 3b 3d 20  |.&lt;    &lt;= 
cc90: 20 20 26 67 74 3b 20 20 20 20 26 67 74 3b 3d 0a    &gt;    &gt;=.
cca0: 3d 20 20 20 20 3d 3d 20 20 20 21 3d 20 20 20 26  =    ==   !=   &
ccb0: 6c 74 3b 26 67 74 3b 20 20 20 3c 2f 62 69 67 3e  lt;&gt;   </big>
ccc0: 49 53 20 20 49 4e 20 20 4c 49 4b 45 20 20 47 4c  IS  IN  LIKE  GL
ccd0: 4f 42 20 20 4d 41 54 43 48 20 20 52 45 47 45 58  OB  MATCH  REGEX
cce0: 50 0a 41 4e 44 20 20 20 0a 4f 52 3c 2f 66 6f 6e  P.AND   .OR</fon
ccf0: 74 3e 0a 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b  t>.</pre></block
cd00: 71 75 6f 74 65 3e 29 5e 0a 0a 3c 70 3e 5e 28 53  quote>)^..<p>^(S
cd10: 75 70 70 6f 72 74 65 64 20 75 6e 61 72 79 20 70  upported unary p
cd20: 72 65 66 69 78 20 6f 70 65 72 61 74 6f 72 73 20  refix operators 
cd30: 61 72 65 20 74 68 65 73 65 3a 3c 2f 70 3e 0a 0a  are these:</p>..
cd40: 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70 72 65  <blockquote><pre
cd50: 3e 0a 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 22 23  >.<font color="#
cd60: 32 63 32 63 66 30 22 3e 3c 62 69 67 3e 2d 20 20  2c2cf0"><big>-  
cd70: 20 20 2b 20 20 20 20 7e 20 20 20 20 4e 4f 54 3c    +    ~    NOT<
cd80: 2f 62 69 67 3e 3c 2f 66 6f 6e 74 3e 0a 3c 2f 70  /big></font>.</p
cd90: 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e  re></blockquote>
cda0: 29 5e 0a 0a 3c 74 63 6c 3e 68 64 5f 66 72 61 67  )^..<tcl>hd_frag
cdb0: 6d 65 6e 74 20 63 6f 6c 6c 61 74 65 6f 70 20 7b  ment collateop {
cdc0: 43 4f 4c 4c 41 54 45 20 6f 70 65 72 61 74 6f 72  COLLATE operator
cdd0: 7d 3c 2f 74 63 6c 3e 0a 3c 70 3e 5e 54 68 65 20  }</tcl>.<p>^The 
cde0: 43 4f 4c 4c 41 54 45 20 6f 70 65 72 61 74 6f 72  COLLATE operator
cdf0: 20 63 61 6e 20 62 65 20 74 68 6f 75 67 68 74 20   can be thought 
ce00: 6f 66 20 61 73 20 61 20 75 6e 61 72 79 20 70 6f  of as a unary po
ce10: 73 74 66 69 78 0a 6f 70 65 72 61 74 6f 72 2e 20  stfix.operator. 
ce20: 20 5e 54 68 65 20 43 4f 4c 4c 41 54 45 20 6f 70   ^The COLLATE op
ce30: 65 72 61 74 6f 72 20 68 61 73 20 74 68 65 20 68  erator has the h
ce40: 69 67 68 65 73 74 20 70 72 65 63 65 64 65 6e 63  ighest precedenc
ce50: 65 2e 0a 5e 49 74 20 61 6c 77 61 79 73 20 62 69  e..^It always bi
ce60: 6e 64 73 20 6d 6f 72 65 20 74 69 67 68 74 6c 79  nds more tightly
ce70: 20 74 68 61 6e 20 61 6e 79 20 70 72 65 66 69 78   than any prefix
ce80: 20 75 6e 61 72 79 20 6f 70 65 72 61 74 6f 72 20   unary operator 
ce90: 6f 72 0a 61 6e 79 20 62 69 6e 61 72 79 20 6f 70  or.any binary op
cea0: 65 72 61 74 6f 72 2e 3c 2f 70 3e 0a 0a 3c 74 63  erator.</p>..<tc
ceb0: 6c 3e 68 64 5f 70 75 74 73 20 22 0a 3c 70 3e 5e  l>hd_puts ".<p>^
cec0: 54 68 65 20 75 6e 61 72 79 20 6f 70 65 72 61 74  The unary operat
ced0: 6f 72 20 5b 4f 70 65 72 61 74 6f 72 20 2b 5d 20  or [Operator +] 
cee0: 69 73 20 61 20 6e 6f 2d 6f 70 2e 20 20 5e 49 74  is a no-op.  ^It
cef0: 20 63 61 6e 20 62 65 20 61 70 70 6c 69 65 64 0a   can be applied.
cf00: 74 6f 20 73 74 72 69 6e 67 73 2c 20 6e 75 6d 62  to strings, numb
cf10: 65 72 73 2c 20 6f 72 20 62 6c 6f 62 73 20 61 6e  ers, or blobs an
cf20: 64 20 69 74 20 61 6c 77 61 79 73 20 67 69 76 65  d it always give
cf30: 73 20 61 73 20 69 74 73 20 72 65 73 75 6c 74 20  s as its result 
cf40: 74 68 65 0a 76 61 6c 75 65 20 6f 66 20 74 68 65  the.value of the
cf50: 20 6f 70 65 72 61 6e 64 2e 3c 2f 70 3e 22 3c 2f   operand.</p>"</
cf60: 74 63 6c 3e 0a 0a 3c 70 3e 4e 6f 74 65 20 74 68  tcl>..<p>Note th
cf70: 61 74 20 74 68 65 72 65 20 61 72 65 20 74 77 6f  at there are two
cf80: 20 76 61 72 69 61 74 69 6f 6e 73 20 6f 66 20 74   variations of t
cf90: 68 65 20 65 71 75 61 6c 73 20 61 6e 64 20 6e 6f  he equals and no
cfa0: 74 20 65 71 75 61 6c 73 0a 6f 70 65 72 61 74 6f  t equals.operato
cfb0: 72 73 2e 20 20 5e 45 71 75 61 6c 73 20 63 61 6e  rs.  ^Equals can
cfc0: 20 62 65 20 65 69 74 68 65 72 0a 0a 3c 74 63 6c   be either..<tcl
cfd0: 3e 0a 68 64 5f 70 75 74 73 20 22 5b 4f 70 65 72  >.hd_puts "[Oper
cfe0: 61 74 6f 72 20 3d 5d 20 6f 72 20 5b 4f 70 65 72  ator =] or [Oper
cff0: 61 74 6f 72 20 3d 3d 5d 2e 0a 5e 54 68 65 20 6e  ator ==]..^The n
d000: 6f 6e 2d 65 71 75 61 6c 73 20 6f 70 65 72 61 74  on-equals operat
d010: 6f 72 20 63 61 6e 20 62 65 20 65 69 74 68 65 72  or can be either
d020: 0a 5b 4f 70 65 72 61 74 6f 72 20 21 3d 5d 20 6f  .[Operator !=] o
d030: 72 20 5b 4f 70 65 72 61 74 6f 72 20 7b 26 6c 74  r [Operator {&lt
d040: 3b 26 67 74 3b 7d 5d 2e 0a 5e 54 68 65 20 5b 4f  ;&gt;}]..^The [O
d050: 70 65 72 61 74 6f 72 20 7c 7c 5d 20 6f 70 65 72  perator ||] oper
d060: 61 74 6f 72 20 69 73 20 5c 22 63 6f 6e 63 61 74  ator is \"concat
d070: 65 6e 61 74 65 5c 22 20 2d 20 69 74 20 6a 6f 69  enate\" - it joi
d080: 6e 73 20 74 6f 67 65 74 68 65 72 0a 74 68 65 20  ns together.the 
d090: 74 77 6f 20 73 74 72 69 6e 67 73 20 6f 66 20 69  two strings of i
d0a0: 74 73 20 6f 70 65 72 61 6e 64 73 2e 0a 5e 54 68  ts operands..^Th
d0b0: 65 20 6f 70 65 72 61 74 6f 72 20 5b 4f 70 65 72  e operator [Oper
d0c0: 61 74 6f 72 20 25 5d 20 6f 75 74 70 75 74 73 20  ator %] outputs 
d0d0: 74 68 65 20 72 65 6d 61 69 6e 64 65 72 20 6f 66  the remainder of
d0e0: 20 69 74 73 20 6c 65 66 74 20 0a 6f 70 65 72 61   its left .opera
d0f0: 6e 64 20 6d 6f 64 75 6c 6f 20 69 74 73 20 72 69  nd modulo its ri
d100: 67 68 74 20 6f 70 65 72 61 6e 64 2e 3c 2f 70 3e  ght operand.</p>
d110: 0a 0a 3c 70 3e 5e 54 68 65 20 72 65 73 75 6c 74  ..<p>^The result
d120: 20 6f 66 20 61 6e 79 20 62 69 6e 61 72 79 20 6f   of any binary o
d130: 70 65 72 61 74 6f 72 20 69 73 20 61 20 6e 75 6d  perator is a num
d140: 65 72 69 63 20 76 61 6c 75 65 2c 20 65 78 63 65  eric value, exce
d150: 70 74 0a 66 6f 72 20 74 68 65 20 5b 4f 70 65 72  pt.for the [Oper
d160: 61 74 6f 72 20 7c 7c 5d 20 63 6f 6e 63 61 74 65  ator ||] concate
d170: 6e 61 74 69 6f 6e 20 6f 70 65 72 61 74 6f 72 20  nation operator 
d180: 77 68 69 63 68 20 67 69 76 65 73 20 61 20 73 74  which gives a st
d190: 72 69 6e 67 0a 72 65 73 75 6c 74 2e 3c 2f 70 3e  ring.result.</p>
d1a0: 22 0a 0a 68 64 5f 66 72 61 67 6d 65 6e 74 20 7b  "..hd_fragment {
d1b0: 69 73 69 73 6e 6f 74 7d 20 7b 49 53 20 6f 70 65  isisnot} {IS ope
d1c0: 72 61 74 6f 72 7d 20 7b 49 53 20 4e 4f 54 20 6f  rator} {IS NOT o
d1d0: 70 65 72 61 74 6f 72 7d 0a 0a 68 64 5f 70 75 74  perator}..hd_put
d1e0: 73 20 22 3c 70 3e 5e 54 68 65 20 5b 4f 70 65 72  s "<p>^The [Oper
d1f0: 61 74 6f 72 20 49 53 5d 20 61 6e 64 20 5b 4f 70  ator IS] and [Op
d200: 65 72 61 74 6f 72 20 7b 49 53 20 4e 4f 54 7d 5d  erator {IS NOT}]
d210: 20 6f 70 65 72 61 74 6f 72 73 20 77 6f 72 6b 0a   operators work.
d220: 6c 69 6b 65 20 5b 4f 70 65 72 61 74 6f 72 20 3d  like [Operator =
d230: 5d 20 61 6e 64 20 5b 4f 70 65 72 61 74 6f 72 20  ] and [Operator 
d240: 21 3d 5d 20 65 78 63 65 70 74 20 74 68 61 74 20  !=] except that 
d250: 4e 55 4c 4c 20 76 61 6c 75 65 73 20 63 6f 6d 70  NULL values comp
d260: 61 72 65 0a 65 71 75 61 6c 20 74 6f 20 6f 6e 65  are.equal to one
d270: 20 61 6e 6f 74 68 65 72 2e 20 20 5e 5b 4f 70 65   another.  ^[Ope
d280: 72 61 74 6f 72 20 49 53 5d 20 61 6e 64 20 5b 4f  rator IS] and [O
d290: 70 65 72 61 74 6f 72 20 7b 49 53 20 4e 4f 54 7d  perator {IS NOT}
d2a0: 5d 0a 68 61 76 65 20 74 68 65 20 73 61 6d 65 20  ].have the same 
d2b0: 70 72 65 63 65 64 65 6e 63 65 20 61 73 20 5b 4f  precedence as [O
d2c0: 70 65 72 61 74 6f 72 20 3d 5d 2e 22 0a 0a 3c 74  perator =]."..<t
d2d0: 63 6c 3e 68 64 5f 66 72 61 67 6d 65 6e 74 20 6c  cl>hd_fragment l
d2e0: 69 74 76 61 6c 75 65 20 7b 6c 69 74 65 72 61 6c  itvalue {literal
d2f0: 20 76 61 6c 75 65 7d 3c 2f 74 63 6c 3e 0a 3c 68   value}</tcl>.<h
d300: 33 3e 4c 69 74 65 72 61 6c 20 56 61 6c 75 65 73  3>Literal Values
d310: 3c 2f 68 33 3e 0a 3c 70 3e 0a 5e 41 20 6c 69 74  </h3>.<p>.^A lit
d320: 65 72 61 6c 20 76 61 6c 75 65 20 69 73 20 61 20  eral value is a 
d330: 63 6f 6e 73 74 61 6e 74 20 6f 66 20 73 6f 6d 65  constant of some
d340: 20 6b 69 6e 64 2e 0a 5e 4c 69 74 65 72 61 6c 20   kind..^Literal 
d350: 76 61 6c 75 65 73 20 6d 61 79 20 62 65 20 69 6e  values may be in
d360: 74 65 67 65 72 73 2c 20 66 6c 6f 61 74 69 6e 67  tegers, floating
d370: 20 70 6f 69 6e 74 20 6e 75 6d 62 65 72 73 2c 20   point numbers, 
d380: 73 74 72 69 6e 67 73 2c 0a 42 4c 4f 42 73 2c 20  strings,.BLOBs, 
d390: 6f 72 20 4e 55 4c 4c 73 2e 0a 5e 53 63 69 65 6e  or NULLs..^Scien
d3a0: 74 69 66 69 63 20 6e 6f 74 61 74 69 6f 6e 20 69  tific notation i
d3b0: 73 20 73 75 70 70 6f 72 74 65 64 20 66 6f 72 20  s supported for 
d3c0: 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20 6c  floating point l
d3d0: 69 74 65 72 61 6c 20 76 61 6c 75 65 73 2e 0a 5e  iteral values..^
d3e0: 28 54 68 65 20 22 2e 22 20 63 68 61 72 61 63 74  (The "." charact
d3f0: 65 72 20 69 73 20 61 6c 77 61 79 73 20 75 73 65  er is always use
d400: 64 20 0a 61 73 20 74 68 65 20 64 65 63 69 6d 61  d .as the decima
d410: 6c 20 70 6f 69 6e 74 20 65 76 65 6e 20 69 66 20  l point even if 
d420: 74 68 65 20 6c 6f 63 61 6c 65 20 73 65 74 74 69  the locale setti
d430: 6e 67 20 73 70 65 63 69 66 69 65 73 20 22 2c 22  ng specifies ","
d440: 20 66 6f 72 0a 74 68 69 73 20 72 6f 6c 65 20 2d   for.this role -
d450: 20 74 68 65 20 75 73 65 20 6f 66 20 22 2c 22 20   the use of "," 
d460: 66 6f 72 20 74 68 65 20 64 65 63 69 6d 61 6c 20  for the decimal 
d470: 70 6f 69 6e 74 20 77 6f 75 6c 64 20 72 65 73 75  point would resu
d480: 6c 74 20 69 6e 0a 73 79 6e 74 61 63 74 69 63 20  lt in.syntactic 
d490: 61 6d 62 69 67 75 69 74 79 2e 29 5e 20 20 5e 41  ambiguity.)^  ^A
d4a0: 20 73 74 72 69 6e 67 20 63 6f 6e 73 74 61 6e 74   string constant
d4b0: 20 69 73 20 66 6f 72 6d 65 64 20 62 79 20 65 6e   is formed by en
d4c0: 63 6c 6f 73 69 6e 67 20 74 68 65 0a 73 74 72 69  closing the.stri
d4d0: 6e 67 20 69 6e 20 73 69 6e 67 6c 65 20 71 75 6f  ng in single quo
d4e0: 74 65 73 20 28 27 29 2e 20 20 5e 41 20 73 69 6e  tes (').  ^A sin
d4f0: 67 6c 65 20 71 75 6f 74 65 20 77 69 74 68 69 6e  gle quote within
d500: 20 74 68 65 20 73 74 72 69 6e 67 20 63 61 6e 0a   the string can.
d510: 62 65 20 65 6e 63 6f 64 65 64 20 62 79 20 70 75  be encoded by pu
d520: 74 74 69 6e 67 20 74 77 6f 20 73 69 6e 67 6c 65  tting two single
d530: 20 71 75 6f 74 65 73 20 69 6e 20 61 20 72 6f 77   quotes in a row
d540: 20 2d 20 61 73 20 69 6e 20 50 61 73 63 61 6c 2e   - as in Pascal.
d550: 0a 43 2d 73 74 79 6c 65 20 65 73 63 61 70 65 73  .C-style escapes
d560: 20 75 73 69 6e 67 20 74 68 65 20 62 61 63 6b 73   using the backs
d570: 6c 61 73 68 20 63 68 61 72 61 63 74 65 72 20 61  lash character a
d580: 72 65 20 6e 6f 74 20 73 75 70 70 6f 72 74 65 64  re not supported
d590: 20 62 65 63 61 75 73 65 0a 74 68 65 79 20 61 72   because.they ar
d5a0: 65 20 6e 6f 74 20 73 74 61 6e 64 61 72 64 20 53  e not standard S
d5b0: 51 4c 2e 0a 5e 42 4c 4f 42 20 6c 69 74 65 72 61  QL..^BLOB litera
d5c0: 6c 73 20 61 72 65 20 73 74 72 69 6e 67 20 6c 69  ls are string li
d5d0: 74 65 72 61 6c 73 20 63 6f 6e 74 61 69 6e 69 6e  terals containin
d5e0: 67 20 68 65 78 61 64 65 63 69 6d 61 6c 20 64 61  g hexadecimal da
d5f0: 74 61 20 61 6e 64 0a 70 72 65 63 65 64 65 64 20  ta and.preceded 
d600: 62 79 20 61 20 73 69 6e 67 6c 65 20 22 78 22 20  by a single "x" 
d610: 6f 72 20 22 58 22 20 63 68 61 72 61 63 74 65 72  or "X" character
d620: 2e 20 20 5e 28 46 6f 72 20 65 78 61 6d 70 6c 65  .  ^(For example
d630: 3a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f  :</p>..<blockquo
d640: 74 65 3e 3c 70 72 65 3e 0a 58 27 35 33 35 31 34  te><pre>.X'53514
d650: 43 36 39 37 34 36 35 27 0a 3c 2f 70 72 65 3e 3c  C697465'.</pre><
d660: 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 29 5e 0a 0a  /blockquote>)^..
d670: 3c 70 3e 0a 5e 41 20 6c 69 74 65 72 61 6c 20 76  <p>.^A literal v
d680: 61 6c 75 65 20 63 61 6e 20 61 6c 73 6f 20 62 65  alue can also be
d690: 20 74 68 65 20 74 6f 6b 65 6e 20 22 4e 55 4c 4c   the token "NULL
d6a0: 22 2e 0a 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 68 64  "..</p>..<tcl>hd
d6b0: 5f 66 72 61 67 6d 65 6e 74 20 76 61 72 70 61 72  _fragment varpar
d6c0: 61 6d 20 70 61 72 61 6d 65 74 65 72 20 70 61 72  am parameter par
d6d0: 61 6d 65 74 65 72 73 20 7b 62 6f 75 6e 64 20 70  ameters {bound p
d6e0: 61 72 61 6d 65 74 65 72 7d 20 7b 62 6f 75 6e 64  arameter} {bound
d6f0: 20 70 61 72 61 6d 65 74 65 72 73 7d 3c 2f 74 63   parameters}</tc
d700: 6c 3e 0a 3c 68 33 3e 50 61 72 61 6d 65 74 65 72  l>.<h3>Parameter
d710: 73 3c 2f 68 33 3e 0a 3c 70 3e 0a 41 20 22 76 61  s</h3>.<p>.A "va
d720: 72 69 61 62 6c 65 22 20 6f 72 20 22 70 61 72 61  riable" or "para
d730: 6d 65 74 65 72 22 20 74 6f 6b 65 6e 0a 73 70 65  meter" token.spe
d740: 63 69 66 69 65 73 20 61 20 70 6c 61 63 65 68 6f  cifies a placeho
d750: 6c 64 65 72 20 69 6e 20 74 68 65 20 65 78 70 72  lder in the expr
d760: 65 73 73 69 6f 6e 20 66 6f 72 20 61 20 6c 69 74  ession for a lit
d770: 65 72 61 6c 0a 76 61 6c 75 65 20 74 68 61 74 20  eral.value that 
d780: 69 73 20 66 69 6c 6c 65 64 20 69 6e 20 61 74 20  is filled in at 
d790: 72 75 6e 74 69 6d 65 20 75 73 69 6e 67 20 74 68  runtime using th
d7a0: 65 0a 5b 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  e.[sqlite3_bind_
d7b0: 62 6c 6f 62 28 29 20 7c 20 73 71 6c 69 74 65 33  blob() | sqlite3
d7c0: 5f 62 69 6e 64 28 29 5d 20 66 61 6d 69 6c 79 20  _bind()] family 
d7d0: 6f 66 20 43 2f 43 2b 2b 20 69 6e 74 65 72 66 61  of C/C++ interfa
d7e0: 63 65 73 2e 0a 5e 28 50 61 72 61 6d 65 74 65 72  ces..^(Parameter
d7f0: 73 20 63 61 6e 20 74 61 6b 65 20 73 65 76 65 72  s can take sever
d800: 61 6c 20 66 6f 72 6d 73 3a 0a 3c 2f 70 3e 0a 0a  al forms:.</p>..
d810: 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 3c 74 61  <blockquote>.<ta
d820: 62 6c 65 3e 0a 3c 74 72 3e 0a 3c 74 64 20 61 6c  ble>.<tr>.<td al
d830: 69 67 6e 3d 22 72 69 67 68 74 22 20 76 61 6c 69  ign="right" vali
d840: 67 6e 3d 22 74 6f 70 22 3e 3c 62 3e 3f 3c 2f 62  gn="top"><b>?</b
d850: 3e 3c 69 3e 4e 4e 4e 3c 2f 69 3e 3c 2f 74 64 3e  ><i>NNN</i></td>
d860: 3c 74 64 20 77 69 64 74 68 3d 22 32 30 22 3e 3c  <td width="20"><
d870: 2f 74 64 3e 0a 3c 74 64 3e 41 20 71 75 65 73 74  /td>.<td>A quest
d880: 69 6f 6e 20 6d 61 72 6b 20 66 6f 6c 6c 6f 77 65  ion mark followe
d890: 64 20 62 79 20 61 20 6e 75 6d 62 65 72 20 3c 69  d by a number <i
d8a0: 3e 4e 4e 4e 3c 2f 69 3e 20 68 6f 6c 64 73 20 61  >NNN</i> holds a
d8b0: 20 73 70 6f 74 20 66 6f 72 20 74 68 65 0a 4e 4e   spot for the.NN
d8c0: 4e 2d 74 68 20 70 61 72 61 6d 65 74 65 72 2e 20  N-th parameter. 
d8d0: 20 4e 4e 4e 20 6d 75 73 74 20 62 65 20 62 65 74   NNN must be bet
d8e0: 77 65 65 6e 20 31 20 61 6e 64 20 5b 53 51 4c 49  ween 1 and [SQLI
d8f0: 54 45 5f 4d 41 58 5f 56 41 52 49 41 42 4c 45 5f  TE_MAX_VARIABLE_
d900: 4e 55 4d 42 45 52 5d 2e 3c 2f 74 64 3e 0a 3c 2f  NUMBER].</td>.</
d910: 74 72 3e 0a 3c 74 72 3e 0a 3c 74 64 20 61 6c 69  tr>.<tr>.<td ali
d920: 67 6e 3d 22 72 69 67 68 74 22 20 76 61 6c 69 67  gn="right" valig
d930: 6e 3d 22 74 6f 70 22 3e 3c 62 3e 3f 3c 2f 62 3e  n="top"><b>?</b>
d940: 3c 2f 74 64 3e 3c 74 64 20 77 69 64 74 68 3d 22  </td><td width="
d950: 32 30 22 3e 3c 2f 74 64 3e 0a 3c 74 64 3e 41 20  20"></td>.<td>A 
d960: 71 75 65 73 74 69 6f 6e 20 6d 61 72 6b 20 74 68  question mark th
d970: 61 74 20 69 73 20 6e 6f 74 20 66 6f 6c 6c 6f 77  at is not follow
d980: 65 64 20 62 79 20 61 20 6e 75 6d 62 65 72 20 68  ed by a number h
d990: 6f 6c 64 73 20 61 20 73 70 6f 74 20 66 6f 72 0a  olds a spot for.
d9a0: 74 68 65 20 6e 65 78 74 20 75 6e 75 73 65 64 20  the next unused 
d9b0: 70 61 72 61 6d 65 74 65 72 2e 3c 2f 74 64 3e 0a  parameter.</td>.
d9c0: 3c 2f 74 72 3e 0a 3c 74 72 3e 0a 3c 74 64 20 61  </tr>.<tr>.<td a
d9d0: 6c 69 67 6e 3d 22 72 69 67 68 74 22 20 76 61 6c  lign="right" val
d9e0: 69 67 6e 3d 22 74 6f 70 22 3e 3c 62 3e 3a 3c 2f  ign="top"><b>:</
d9f0: 62 3e 3c 69 3e 41 41 41 41 3c 2f 69 3e 3c 2f 74  b><i>AAAA</i></t
da00: 64 3e 3c 74 64 20 77 69 64 74 68 3d 22 32 30 22  d><td width="20"
da10: 3e 3c 2f 74 64 3e 0a 3c 74 64 3e 41 20 63 6f 6c  ></td>.<td>A col
da20: 6f 6e 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 61  on followed by a
da30: 6e 20 69 64 65 6e 74 69 66 69 65 72 20 6e 61 6d  n identifier nam
da40: 65 20 68 6f 6c 64 73 20 61 20 73 70 6f 74 20 66  e holds a spot f
da50: 6f 72 20 61 20 6e 61 6d 65 64 0a 70 61 72 61 6d  or a named.param
da60: 65 74 65 72 20 77 69 74 68 20 74 68 65 20 6e 61  eter with the na
da70: 6d 65 20 41 41 41 41 2e 20 20 4e 61 6d 65 64 20  me AAAA.  Named 
da80: 70 61 72 61 6d 65 74 65 72 73 20 61 72 65 20 61  parameters are a
da90: 6c 73 6f 20 6e 75 6d 62 65 72 65 64 2e 0a 54 68  lso numbered..Th
daa0: 65 20 6e 75 6d 62 65 72 20 61 73 73 69 67 6e 65  e number assigne
dab0: 64 20 69 73 20 74 68 65 20 6e 65 78 74 20 75 6e  d is the next un
dac0: 75 73 65 64 20 6e 75 6d 62 65 72 2e 20 20 54 6f  used number.  To
dad0: 20 61 76 6f 69 64 20 63 6f 6e 66 75 73 69 6f 6e   avoid confusion
dae0: 2c 0a 69 74 20 69 73 20 62 65 73 74 20 74 6f 20  ,.it is best to 
daf0: 61 76 6f 69 64 20 6d 69 78 69 6e 67 20 6e 61 6d  avoid mixing nam
db00: 65 64 20 61 6e 64 20 6e 75 6d 62 65 72 65 64 20  ed and numbered 
db10: 70 61 72 61 6d 65 74 65 72 73 2e 3c 2f 74 64 3e  parameters.</td>
db20: 0a 3c 2f 74 72 3e 0a 3c 74 72 3e 0a 3c 74 64 20  .</tr>.<tr>.<td 
db30: 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 20 76 61  align="right" va
db40: 6c 69 67 6e 3d 22 74 6f 70 22 3e 3c 62 3e 40 3c  lign="top"><b>@<
db50: 2f 62 3e 3c 69 3e 41 41 41 41 3c 2f 69 3e 3c 2f  /b><i>AAAA</i></
db60: 74 64 3e 3c 74 64 20 77 69 64 74 68 3d 22 32 30  td><td width="20
db70: 22 3e 3c 2f 74 64 3e 0a 3c 74 64 3e 41 6e 20 22  "></td>.<td>An "
db80: 61 74 22 20 73 69 67 6e 20 77 6f 72 6b 73 20 65  at" sign works e
db90: 78 61 63 74 6c 79 20 6c 69 6b 65 20 61 20 63 6f  xactly like a co
dba0: 6c 6f 6e 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a  lon.</td>.</tr>.
dbb0: 3c 74 72 3e 0a 3c 74 64 20 61 6c 69 67 6e 3d 22  <tr>.<td align="
dbc0: 72 69 67 68 74 22 20 76 61 6c 69 67 6e 3d 22 74  right" valign="t
dbd0: 6f 70 22 3e 3c 62 3e 24 3c 2f 62 3e 3c 69 3e 41  op"><b>$</b><i>A
dbe0: 41 41 41 3c 2f 69 3e 3c 2f 74 64 3e 3c 74 64 20  AAA</i></td><td 
dbf0: 77 69 64 74 68 3d 22 32 30 22 3e 3c 2f 74 64 3e  width="20"></td>
dc00: 0a 3c 74 64 3e 41 20 64 6f 6c 6c 61 72 2d 73 69  .<td>A dollar-si
dc10: 67 6e 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 61  gn followed by a
dc20: 6e 20 69 64 65 6e 74 69 66 69 65 72 20 6e 61 6d  n identifier nam
dc30: 65 20 61 6c 73 6f 20 68 6f 6c 64 73 20 61 20 73  e also holds a s
dc40: 70 6f 74 20 66 6f 72 20 61 20 6e 61 6d 65 64 0a  pot for a named.
dc50: 70 61 72 61 6d 65 74 65 72 20 77 69 74 68 20 74  parameter with t
dc60: 68 65 20 6e 61 6d 65 20 41 41 41 41 2e 20 20 54  he name AAAA.  T
dc70: 68 65 20 69 64 65 6e 74 69 66 69 65 72 20 6e 61  he identifier na
dc80: 6d 65 20 69 6e 20 74 68 69 73 20 63 61 73 65 20  me in this case 
dc90: 63 61 6e 20 69 6e 63 6c 75 64 65 0a 6f 6e 65 20  can include.one 
dca0: 6f 72 20 6d 6f 72 65 20 6f 63 63 75 72 61 6e 63  or more occuranc
dcb0: 65 73 20 6f 66 20 22 3a 3a 22 20 61 6e 64 20 61  es of "::" and a
dcc0: 20 73 75 66 66 69 78 20 65 6e 63 6c 6f 73 65 64   suffix enclosed
dcd0: 20 69 6e 20 22 28 2e 2e 2e 29 22 20 63 6f 6e 74   in "(...)" cont
dce0: 61 69 6e 69 6e 67 0a 61 6e 79 20 74 65 78 74 20  aining.any text 
dcf0: 61 74 20 61 6c 6c 2e 20 20 54 68 69 73 20 73 79  at all.  This sy
dd00: 6e 74 61 78 20 69 73 20 74 68 65 20 66 6f 72 6d  ntax is the form
dd10: 20 6f 66 20 61 20 76 61 72 69 61 62 6c 65 20 6e   of a variable n
dd20: 61 6d 65 20 69 6e 20 74 68 65 0a 5b 68 74 74 70  ame in the.[http
dd30: 3a 2f 2f 77 77 77 2e 74 63 6c 2e 74 6b 2f 20 7c  ://www.tcl.tk/ |
dd40: 20 54 63 6c 20 70 72 6f 67 72 61 6d 6d 69 6e 67   Tcl programming
dd50: 20 6c 61 6e 67 75 61 67 65 5d 2e 20 20 54 68 65   language].  The
dd60: 20 70 72 65 73 65 6e 63 65 0a 6f 66 20 74 68 69   presence.of thi
dd70: 73 20 73 79 6e 74 61 78 20 72 65 73 75 6c 74 73  s syntax results
dd80: 20 66 72 6f 6d 20 74 68 65 20 66 61 63 74 20 74   from the fact t
dd90: 68 61 74 20 53 51 4c 69 74 65 20 69 73 20 72 65  hat SQLite is re
dda0: 61 6c 6c 79 20 61 20 0a 5b 54 63 6c 20 65 78 74  ally a .[Tcl ext
ddb0: 65 6e 73 69 6f 6e 5d 20 74 68 61 74 20 68 61 73  ension] that has
ddc0: 20 65 73 63 61 70 65 64 20 69 6e 74 6f 20 74 68   escaped into th
ddd0: 65 20 77 69 6c 64 2e 3c 2f 74 64 3e 0a 3c 2f 74  e wild.</td>.</t
dde0: 72 3e 0a 3c 2f 74 61 62 6c 65 3e 0a 3c 2f 62 6c  r>.</table>.</bl
ddf0: 6f 63 6b 71 75 6f 74 65 3e 29 5e 0a 0a 3c 70 3e  ockquote>)^..<p>
de00: 5e 50 61 72 61 6d 65 74 65 72 73 20 74 68 61 74  ^Parameters that
de10: 20 61 72 65 20 6e 6f 74 20 61 73 73 69 67 6e 65   are not assigne
de20: 64 20 76 61 6c 75 65 73 20 75 73 69 6e 67 0a 5b  d values using.[
de30: 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 62 6c 6f  sqlite3_bind_blo
de40: 62 28 29 20 7c 20 73 71 6c 69 74 65 33 5f 62 69  b() | sqlite3_bi
de50: 6e 64 28 29 5d 20 61 72 65 20 74 72 65 61 74 65  nd()] are treate
de60: 64 0a 61 73 20 4e 55 4c 4c 2e 3c 2f 70 3e 0a 0a  d.as NULL.</p>..
de70: 3c 74 63 6c 3e 68 64 5f 66 72 61 67 6d 65 6e 74  <tcl>hd_fragment
de80: 20 6c 69 6b 65 20 4c 49 4b 45 20 45 53 43 41 50   like LIKE ESCAP
de90: 45 3c 2f 74 63 6c 3e 0a 3c 68 33 3e 54 68 65 20  E</tcl>.<h3>The 
dea0: 4c 49 4b 45 20 61 6e 64 20 47 4c 4f 42 20 6f 70  LIKE and GLOB op
deb0: 65 72 61 74 6f 72 73 3c 2f 68 33 3e 0a 3c 70 3e  erators</h3>.<p>
dec0: 5e 54 68 65 20 4c 49 4b 45 20 6f 70 65 72 61 74  ^The LIKE operat
ded0: 6f 72 20 64 6f 65 73 20 61 20 70 61 74 74 65 72  or does a patter
dee0: 6e 20 6d 61 74 63 68 69 6e 67 20 63 6f 6d 70 61  n matching compa
def0: 72 69 73 6f 6e 2e 20 5e 54 68 65 20 6f 70 65 72  rison. ^The oper
df00: 61 6e 64 0a 74 6f 20 74 68 65 20 72 69 67 68 74  and.to the right
df10: 20 6f 66 20 74 68 65 20 4c 49 4b 45 20 6f 70 65   of the LIKE ope
df20: 72 61 74 6f 72 20 63 6f 6e 74 61 69 6e 73 20 74  rator contains t
df30: 68 65 20 70 61 74 74 65 72 6e 20 61 6e 64 20 74  he pattern and t
df40: 68 65 20 6c 65 66 74 20 68 61 6e 64 0a 6f 70 65  he left hand.ope
df50: 72 61 6e 64 20 63 6f 6e 74 61 69 6e 73 20 74 68  rand contains th
df60: 65 20 73 74 72 69 6e 67 20 74 6f 20 6d 61 74 63  e string to matc
df70: 68 20 61 67 61 69 6e 73 74 20 74 68 65 20 70 61  h against the pa
df80: 74 74 65 72 6e 2e 0a 0a 3c 74 63 6c 3e 68 64 5f  ttern...<tcl>hd_
df90: 70 75 74 73 20 22 5e 41 20 70 65 72 63 65 6e 74  puts "^A percent
dfa0: 20 73 79 6d 62 6f 6c 20 28 5c 22 25 5c 22 29 20   symbol (\"%\") 
dfb0: 69 6e 20 74 68 65 20 4c 49 4b 45 20 70 61 74 74  in the LIKE patt
dfc0: 65 72 6e 20 6d 61 74 63 68 65 73 20 61 6e 79 0a  ern matches any.
dfd0: 73 65 71 75 65 6e 63 65 20 6f 66 20 7a 65 72 6f  sequence of zero
dfe0: 20 6f 72 20 6d 6f 72 65 20 63 68 61 72 61 63 74   or more charact
dff0: 65 72 73 20 69 6e 20 74 68 65 20 73 74 72 69 6e  ers in the strin
e000: 67 2e 20 20 5e 41 6e 20 75 6e 64 65 72 73 63 6f  g.  ^An undersco
e010: 72 65 0a 28 5c 22 5f 5c 22 29 20 69 6e 20 74 68  re.(\"_\") in th
e020: 65 20 4c 49 4b 45 20 70 61 74 74 65 72 6e 20 6d  e LIKE pattern m
e030: 61 74 63 68 65 73 20 61 6e 79 20 73 69 6e 67 6c  atches any singl
e040: 65 20 63 68 61 72 61 63 74 65 72 20 69 6e 20 74  e character in t
e050: 68 65 0a 73 74 72 69 6e 67 2e 20 20 5e 28 41 6e  he.string.  ^(An
e060: 79 20 6f 74 68 65 72 20 63 68 61 72 61 63 74 65  y other characte
e070: 72 20 6d 61 74 63 68 65 73 20 69 74 73 65 6c 66  r matches itself
e080: 20 6f 72 20 69 74 73 20 6c 6f 77 65 72 2f 75 70   or its lower/up
e090: 70 65 72 20 63 61 73 65 0a 65 71 75 69 76 61 6c  per case.equival
e0a0: 65 6e 74 20 28 69 2e 65 2e 20 63 61 73 65 2d 69  ent (i.e. case-i
e0b0: 6e 73 65 6e 73 69 74 69 76 65 20 6d 61 74 63 68  nsensitive match
e0c0: 69 6e 67 29 2e 29 5e 20 20 28 41 20 62 75 67 3a  ing).)^  (A bug:
e0d0: 20 5e 53 51 4c 69 74 65 20 6f 6e 6c 79 0a 75 6e   ^SQLite only.un
e0e0: 64 65 72 73 74 61 6e 64 73 20 75 70 70 65 72 2f  derstands upper/
e0f0: 6c 6f 77 65 72 20 63 61 73 65 20 66 6f 72 20 41  lower case for A
e100: 53 43 49 49 20 63 68 61 72 61 63 74 65 72 73 20  SCII characters 
e110: 62 79 20 64 65 66 61 75 6c 74 2e 20 20 5e 54 68  by default.  ^Th
e120: 65 0a 4c 49 4b 45 20 6f 70 65 72 61 74 6f 72 20  e.LIKE operator 
e130: 69 73 20 63 61 73 65 20 73 65 6e 73 69 74 69 76  is case sensitiv
e140: 65 20 62 79 20 64 65 66 61 75 6c 74 20 66 6f 72  e by default for
e150: 20 75 6e 69 63 6f 64 65 20 63 68 61 72 61 63 74   unicode charact
e160: 65 72 73 20 74 68 61 74 20 61 72 65 0a 62 65 79  ers that are.bey
e170: 6f 6e 64 20 74 68 65 20 41 53 43 49 49 20 72 61  ond the ASCII ra
e180: 6e 67 65 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c  nge.  For exampl
e190: 65 2c 0a 5e 74 68 65 20 65 78 70 72 65 73 73 69  e,.^the expressi
e1a0: 6f 6e 20 3c 62 3e 27 61 27 26 6e 62 73 70 3b 4c  on <b>'a'&nbsp;L
e1b0: 49 4b 45 26 6e 62 73 70 3b 27 41 27 3c 2f 62 3e  IKE&nbsp;'A'</b>
e1c0: 0a 69 73 20 54 52 55 45 20 62 75 74 20 3c 62 3e  .is TRUE but <b>
e1d0: 27 26 61 65 6c 69 67 3b 27 26 6e 62 73 70 3b 4c  '&aelig;'&nbsp;L
e1e0: 49 4b 45 26 6e 62 73 70 3b 27 26 41 45 6c 69 67  IKE&nbsp;'&AElig
e1f0: 3b 27 3c 2f 62 3e 20 69 73 20 46 41 4c 53 45 2e  ;'</b> is FALSE.
e200: 29 3c 70 3e 22 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e  )<p>"</tcl>..<p>
e210: 5e 49 66 20 74 68 65 20 6f 70 74 69 6f 6e 61 6c  ^If the optional
e220: 20 45 53 43 41 50 45 20 63 6c 61 75 73 65 20 69   ESCAPE clause i
e230: 73 20 70 72 65 73 65 6e 74 2c 20 74 68 65 6e 20  s present, then 
e240: 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 0a 66  the expression.f
e250: 6f 6c 6c 6f 77 69 6e 67 20 74 68 65 20 45 53 43  ollowing the ESC
e260: 41 50 45 20 6b 65 79 77 6f 72 64 20 6d 75 73 74  APE keyword must
e270: 20 65 76 61 6c 75 61 74 65 20 74 6f 20 61 20 73   evaluate to a s
e280: 74 72 69 6e 67 20 63 6f 6e 73 69 73 74 69 6e 67  tring consisting
e290: 20 6f 66 0a 61 20 73 69 6e 67 6c 65 20 63 68 61   of.a single cha
e2a0: 72 61 63 74 65 72 2e 20 5e 54 68 69 73 20 63 68  racter. ^This ch
e2b0: 61 72 61 63 74 65 72 20 6d 61 79 20 62 65 20 75  aracter may be u
e2c0: 73 65 64 20 69 6e 20 74 68 65 20 4c 49 4b 45 20  sed in the LIKE 
e2d0: 70 61 74 74 65 72 6e 0a 74 6f 20 69 6e 63 6c 75  pattern.to inclu
e2e0: 64 65 20 6c 69 74 65 72 61 6c 20 70 65 72 63 65  de literal perce
e2f0: 6e 74 20 6f 72 20 75 6e 64 65 72 73 63 6f 72 65  nt or underscore
e300: 20 63 68 61 72 61 63 74 65 72 73 2e 20 5e 54 68   characters. ^Th
e310: 65 20 65 73 63 61 70 65 0a 63 68 61 72 61 63 74  e escape.charact
e320: 65 72 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 61  er followed by a
e330: 20 70 65 72 63 65 6e 74 20 73 79 6d 62 6f 6c 20   percent symbol 
e340: 28 25 29 2c 20 75 6e 64 65 72 73 63 6f 72 65 20  (%), underscore 
e350: 28 5f 29 2c 20 6f 72 20 61 20 73 65 63 6f 6e 64  (_), or a second
e360: 0a 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 65  .instance of the
e370: 20 65 73 63 61 70 65 20 63 68 61 72 61 63 74 65   escape characte
e380: 72 20 69 74 73 65 6c 66 20 6d 61 74 63 68 65 73  r itself matches
e390: 20 61 0a 6c 69 74 65 72 61 6c 20 70 65 72 63 65   a.literal perce
e3a0: 6e 74 20 73 79 6d 62 6f 6c 2c 20 75 6e 64 65 72  nt symbol, under
e3b0: 73 63 6f 72 65 2c 20 6f 72 20 61 20 73 69 6e 67  score, or a sing
e3c0: 6c 65 20 65 73 63 61 70 65 20 63 68 61 72 61 63  le escape charac
e3d0: 74 65 72 2c 0a 72 65 73 70 65 63 74 69 76 65 6c  ter,.respectivel
e3e0: 79 2e 0a 0a 3c 70 3e 5e 54 68 65 20 69 6e 66 69  y...<p>^The infi
e3f0: 78 20 4c 49 4b 45 20 6f 70 65 72 61 74 6f 72 20  x LIKE operator 
e400: 69 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 62  is implemented b
e410: 79 20 63 61 6c 6c 69 6e 67 20 74 68 65 0a 61 70  y calling the.ap
e420: 70 6c 69 63 61 74 69 6f 6e 2d 64 65 66 69 6e 65  plication-define
e430: 64 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 73 20  d SQL functions 
e440: 5b 6c 69 6b 65 28 3c 69 3e 59 3c 2f 69 3e 2c 3c  [like(<i>Y</i>,<
e450: 69 3e 58 3c 2f 69 3e 29 5d 20 6f 72 0a 5b 6c 69  i>X</i>)] or.[li
e460: 6b 65 28 3c 69 3e 59 3c 2f 69 3e 2c 3c 69 3e 58  ke(<i>Y</i>,<i>X
e470: 3c 2f 69 3e 2c 3c 69 3e 5a 3c 2f 69 3e 29 5d 3c  </i>,<i>Z</i>)]<
e480: 2f 61 3e 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68  /a>.</p>..<p>^Th
e490: 65 20 4c 49 4b 45 20 6f 70 65 72 61 74 6f 72 20  e LIKE operator 
e4a0: 63 61 6e 20 62 65 20 6d 61 64 65 20 63 61 73 65  can be made case
e4b0: 20 73 65 6e 73 69 74 69 76 65 20 75 73 69 6e 67   sensitive using
e4c0: 20 74 68 65 0a 5b 63 61 73 65 5f 73 65 6e 73 69   the.[case_sensi
e4d0: 74 69 76 65 5f 6c 69 6b 65 20 70 72 61 67 6d 61  tive_like pragma
e4e0: 5d 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 68 64 5f  ].</p>..<tcl>hd_
e4f0: 66 72 61 67 6d 65 6e 74 20 67 6c 6f 62 20 47 4c  fragment glob GL
e500: 4f 42 3c 2f 74 63 6c 3e 0a 3c 70 3e 5e 54 68 65  OB</tcl>.<p>^The
e510: 20 47 4c 4f 42 20 6f 70 65 72 61 74 6f 72 20 69   GLOB operator i
e520: 73 20 73 69 6d 69 6c 61 72 20 74 6f 20 4c 49 4b  s similar to LIK
e530: 45 20 62 75 74 20 75 73 65 73 20 74 68 65 20 55  E but uses the U
e540: 6e 69 78 0a 66 69 6c 65 20 67 6c 6f 62 62 69 6e  nix.file globbin
e550: 67 20 73 79 6e 74 61 78 20 66 6f 72 20 69 74 73  g syntax for its
e560: 20 77 69 6c 64 63 61 72 64 73 2e 20 20 5e 41 6c   wildcards.  ^Al
e570: 73 6f 2c 20 47 4c 4f 42 20 69 73 20 63 61 73 65  so, GLOB is case
e580: 0a 73 65 6e 73 69 74 69 76 65 2c 20 75 6e 6c 69  .sensitive, unli
e590: 6b 65 20 4c 49 4b 45 2e 20 20 5e 42 6f 74 68 20  ke LIKE.  ^Both 
e5a0: 47 4c 4f 42 20 61 6e 64 20 4c 49 4b 45 20 6d 61  GLOB and LIKE ma
e5b0: 79 20 62 65 20 70 72 65 63 65 64 65 64 20 62 79  y be preceded by
e5c0: 0a 74 68 65 20 4e 4f 54 20 6b 65 79 77 6f 72 64  .the NOT keyword
e5d0: 20 74 6f 20 69 6e 76 65 72 74 20 74 68 65 20 73   to invert the s
e5e0: 65 6e 73 65 20 6f 66 20 74 68 65 20 74 65 73 74  ense of the test
e5f0: 2e 20 20 5e 54 68 65 20 69 6e 66 69 78 20 47 4c  .  ^The infix GL
e600: 4f 42 20 0a 6f 70 65 72 61 74 6f 72 20 69 73 20  OB .operator is 
e610: 69 6d 70 6c 65 6d 65 6e 74 65 64 20 62 79 20 63  implemented by c
e620: 61 6c 6c 69 6e 67 20 74 68 65 20 66 75 6e 63 74  alling the funct
e630: 69 6f 6e 0a 5b 67 6c 6f 62 28 3c 69 3e 59 3c 2f  ion.[glob(<i>Y</
e640: 69 3e 2c 3c 69 3e 58 3c 2f 69 3e 29 5d 20 61 6e  i>,<i>X</i>)] an
e650: 64 20 63 61 6e 20 62 65 20 6d 6f 64 69 66 69 65  d can be modifie
e660: 64 20 62 79 20 6f 76 65 72 72 69 64 69 6e 67 0a  d by overriding.
e670: 74 68 61 74 20 66 75 6e 63 74 69 6f 6e 2e 3c 2f  that function.</
e680: 70 3e 0a 0a 3c 74 63 6c 3e 68 64 5f 66 72 61 67  p>..<tcl>hd_frag
e690: 6d 65 6e 74 20 72 65 67 65 78 70 20 52 45 47 45  ment regexp REGE
e6a0: 58 50 3c 2f 74 63 6c 3e 0a 3c 70 3e 5e 54 68 65  XP</tcl>.<p>^The
e6b0: 20 52 45 47 45 58 50 20 6f 70 65 72 61 74 6f 72   REGEXP operator
e6c0: 20 69 73 20 61 20 73 70 65 63 69 61 6c 20 73 79   is a special sy
e6d0: 6e 74 61 78 20 66 6f 72 20 74 68 65 20 72 65 67  ntax for the reg
e6e0: 65 78 70 28 29 0a 75 73 65 72 20 66 75 6e 63 74  exp().user funct
e6f0: 69 6f 6e 2e 20 20 5e 4e 6f 20 72 65 67 65 78 70  ion.  ^No regexp
e700: 28 29 20 75 73 65 72 20 66 75 6e 63 74 69 6f 6e  () user function
e710: 20 69 73 20 64 65 66 69 6e 65 64 20 62 79 20 64   is defined by d
e720: 65 66 61 75 6c 74 0a 61 6e 64 20 73 6f 20 75 73  efault.and so us
e730: 65 20 6f 66 20 74 68 65 20 52 45 47 45 58 50 20  e of the REGEXP 
e740: 6f 70 65 72 61 74 6f 72 20 77 69 6c 6c 20 6e 6f  operator will no
e750: 72 6d 61 6c 6c 79 20 72 65 73 75 6c 74 20 69 6e  rmally result in
e760: 20 61 6e 0a 65 72 72 6f 72 20 6d 65 73 73 61 67   an.error messag
e770: 65 2e 20 20 5e 49 66 20 61 20 5b 61 70 70 6c 69  e.  ^If a [appli
e780: 63 61 74 69 6f 6e 2d 64 65 66 69 6e 65 64 20 53  cation-defined S
e790: 51 4c 20 66 75 6e 63 74 69 6f 6e 5d 20 6e 61 6d  QL function] nam
e7a0: 65 64 20 22 72 65 67 65 78 70 22 0a 69 73 20 61  ed "regexp".is a
e7b0: 64 64 65 64 20 61 74 20 72 75 6e 2d 74 69 6d 65  dded at run-time
e7c0: 2c 20 74 68 61 74 20 66 75 6e 63 74 69 6f 6e 20  , that function 
e7d0: 77 69 6c 6c 20 62 65 20 63 61 6c 6c 65 64 20 69  will be called i
e7e0: 6e 20 6f 72 64 65 72 0a 74 6f 20 69 6d 70 6c 65  n order.to imple
e7f0: 6d 65 6e 74 20 74 68 65 20 52 45 47 45 58 50 20  ment the REGEXP 
e800: 6f 70 65 72 61 74 6f 72 2e 3c 2f 70 3e 0a 0a 3c  operator.</p>..<
e810: 74 63 6c 3e 68 64 5f 66 72 61 67 6d 65 6e 74 20  tcl>hd_fragment 
e820: 6d 61 74 63 68 20 4d 41 54 43 48 3c 2f 74 63 6c  match MATCH</tcl
e830: 3e 0a 3c 70 3e 5e 54 68 65 20 4d 41 54 43 48 20  >.<p>^The MATCH 
e840: 6f 70 65 72 61 74 6f 72 20 69 73 20 61 20 73 70  operator is a sp
e850: 65 63 69 61 6c 20 73 79 6e 74 61 78 20 66 6f 72  ecial syntax for
e860: 20 74 68 65 20 6d 61 74 63 68 28 29 0a 61 70 70   the match().app
e870: 6c 69 63 61 74 69 6f 6e 2d 64 65 66 69 6e 65 64  lication-defined
e880: 20 66 75 6e 63 74 69 6f 6e 2e 20 20 5e 54 68 65   function.  ^The
e890: 20 64 65 66 61 75 6c 74 20 6d 61 74 63 68 28 29   default match()
e8a0: 20 66 75 6e 63 74 69 6f 6e 20 69 6d 70 6c 65 6d   function implem
e8b0: 65 6e 74 61 74 69 6f 6e 0a 72 61 69 73 65 73 20  entation.raises 
e8c0: 61 6e 20 65 78 63 65 70 74 69 6f 6e 20 61 6e 64  an exception and
e8d0: 20 69 73 20 6e 6f 74 20 72 65 61 6c 6c 79 20 75   is not really u
e8e0: 73 65 66 75 6c 20 66 6f 72 20 61 6e 79 74 68 69  seful for anythi
e8f0: 6e 67 2e 0a 5e 42 75 74 20 65 78 74 65 6e 73 69  ng..^But extensi
e900: 6f 6e 73 20 63 61 6e 20 6f 76 65 72 72 69 64 65  ons can override
e910: 20 74 68 65 20 6d 61 74 63 68 28 29 20 66 75 6e   the match() fun
e920: 63 74 69 6f 6e 20 77 69 74 68 20 6d 6f 72 65 0a  ction with more.
e930: 68 65 6c 70 66 75 6c 20 6c 6f 67 69 63 2e 3c 2f  helpful logic.</
e940: 70 3e 0a 0a 3c 74 63 6c 3e 68 64 5f 66 72 61 67  p>..<tcl>hd_frag
e950: 6d 65 6e 74 20 62 65 74 77 65 65 6e 20 42 45 54  ment between BET
e960: 57 45 45 4e 3c 2f 74 63 6c 3e 0a 3c 68 33 3e 54  WEEN</tcl>.<h3>T
e970: 68 65 20 42 45 54 57 45 45 4e 20 6f 70 65 72 61  he BETWEEN opera
e980: 74 6f 72 3c 2f 68 33 3e 0a 3c 70 3e 5e 28 54 68  tor</h3>.<p>^(Th
e990: 65 20 42 45 54 57 45 45 4e 20 6f 70 65 72 61 74  e BETWEEN operat
e9a0: 6f 72 20 69 73 20 6c 6f 67 69 63 61 6c 6c 79 20  or is logically 
e9b0: 65 71 75 69 76 61 6c 65 6e 74 20 74 6f 20 61 20  equivalent to a 
e9c0: 70 61 69 72 20 6f 66 20 63 6f 6d 70 61 72 69 73  pair of comparis
e9d0: 6f 6e 73 2e 0a 22 3c 69 3e 78 3c 2f 69 3e 20 3c  ons.."<i>x</i> <
e9e0: 62 3e 42 45 54 57 45 45 4e 3c 2f 62 3e 20 3c 69  b>BETWEEN</b> <i
e9f0: 3e 79 3c 2f 69 3e 20 3c 62 3e 41 4e 44 3c 2f 62  >y</i> <b>AND</b
ea00: 3e 20 3c 69 3e 7a 3c 2f 69 3e 22 20 69 73 20 0a  > <i>z</i>" is .
ea10: 65 71 75 69 76 61 6c 65 6e 74 20 74 6f 20 0a 22  equivalent to ."
ea20: 3c 69 3e 78 3c 2f 69 3e 3c 62 3e 26 67 74 3b 3d  <i>x</i><b>&gt;=
ea30: 3c 2f 62 3e 3c 69 3e 79 3c 2f 69 3e 20 3c 62 3e  </b><i>y</i> <b>
ea40: 41 4e 44 3c 2f 62 3e 20 3c 69 3e 78 3c 2f 69 3e  AND</b> <i>x</i>
ea50: 3c 62 3e 26 6c 74 3b 3d 3c 2f 62 3e 3c 69 3e 7a  <b>&lt;=</b><i>z
ea60: 3c 2f 69 3e 22 20 65 78 63 65 70 74 0a 74 68 61  </i>" except.tha
ea70: 74 20 77 69 74 68 20 42 45 54 57 45 45 4e 2c 20  t with BETWEEN, 
ea80: 74 68 65 20 3c 69 3e 78 3c 2f 69 3e 20 65 78 70  the <i>x</i> exp
ea90: 72 65 73 73 69 6f 6e 20 69 73 20 6f 6e 6c 79 20  ression is only 
eaa0: 65 76 61 6c 75 61 74 65 64 20 6f 6e 63 65 2e 29  evaluated once.)
eab0: 5e 0a 5e 54 68 65 20 70 72 65 63 65 64 65 6e 63  ^.^The precedenc
eac0: 65 20 6f 66 20 74 68 65 20 42 45 54 57 45 45 4e  e of the BETWEEN
ead0: 20 6f 70 65 72 61 74 6f 72 20 69 73 20 74 68 65   operator is the
eae0: 20 73 61 6d 65 20 61 73 20 74 68 65 20 70 72 65   same as the pre
eaf0: 63 65 64 65 6e 63 65 0a 61 73 20 6f 70 65 72 61  cedence.as opera
eb00: 74 6f 72 73 20 3c 62 3e 3d 3d 3c 2f 62 3e 20 61  tors <b>==</b> a
eb10: 6e 64 20 3c 62 3e 21 3d 3c 2f 62 3e 20 61 6e 64  nd <b>!=</b> and
eb20: 20 3c 62 3e 4c 49 4b 45 3c 2f 62 3e 20 61 6e 64   <b>LIKE</b> and
eb30: 20 67 72 6f 75 70 73 20 6c 65 66 74 20 74 6f 20   groups left to 
eb40: 72 69 67 68 74 2e 0a 0a 3c 74 63 6c 3e 68 64 5f  right...<tcl>hd_
eb50: 66 72 61 67 6d 65 6e 74 20 63 61 73 65 20 7b 43  fragment case {C
eb60: 41 53 45 20 65 78 70 72 65 73 73 69 6f 6e 7d 3c  ASE expression}<
eb70: 2f 74 63 6c 3e 0a 3c 68 33 3e 54 68 65 20 43 41  /tcl>.<h3>The CA
eb80: 53 45 20 65 78 70 72 65 73 73 69 6f 6e 3c 2f 68  SE expression</h
eb90: 33 3e 0a 3c 70 3e 41 20 43 41 53 45 20 65 78 70  3>.<p>A CASE exp
eba0: 72 65 73 73 69 6f 6e 20 73 65 72 76 65 73 20 61  ression serves a
ebb0: 20 72 6f 6c 65 20 73 69 6d 69 6c 61 72 20 74 6f   role similar to
ebc0: 20 49 46 2d 54 48 45 4e 2d 45 4c 53 45 20 69 6e   IF-THEN-ELSE in
ebd0: 20 6f 74 68 65 72 0a 70 72 6f 67 72 61 6d 6d 69   other.programmi
ebe0: 6e 67 20 6c 61 6e 67 75 61 67 65 73 2e 20 20 5e  ng languages.  ^
ebf0: 57 48 45 4e 20 65 78 70 72 65 73 73 69 6f 6e 73  WHEN expressions
ec00: 20 61 72 65 20 65 76 61 6c 75 61 74 65 64 20 66   are evaluated f
ec10: 72 6f 6d 20 6c 65 66 74 20 74 6f 0a 72 69 67 68  rom left to.righ
ec20: 74 20 75 6e 74 69 6c 20 6f 6e 65 20 69 73 20 66  t until one is f
ec30: 6f 75 6e 64 20 74 68 61 74 20 69 73 20 74 72 75  ound that is tru
ec40: 65 2c 20 61 74 20 77 68 69 63 68 20 70 6f 69 6e  e, at which poin
ec50: 74 20 74 68 65 20 63 6f 72 72 65 73 70 6f 6e 64  t the correspond
ec60: 69 6e 67 0a 54 48 45 4e 20 74 65 72 6d 20 62 65  ing.THEN term be
ec70: 63 6f 6d 65 73 20 74 68 65 20 72 65 73 75 6c 74  comes the result
ec80: 2e 20 20 5e 49 66 20 6e 6f 20 57 48 45 4e 20 65  .  ^If no WHEN e
ec90: 78 70 72 65 73 73 69 6f 6e 20 69 73 20 74 72 75  xpression is tru
eca0: 65 20 74 68 65 6e 20 74 68 65 20 45 4c 53 45 20  e then the ELSE 
ecb0: 0a 63 6c 61 75 73 65 20 64 65 74 65 72 6d 69 6e  .clause determin
ecc0: 65 73 20 74 68 65 20 72 65 73 75 6c 74 20 6f 72  es the result or
ecd0: 20 74 68 65 20 72 65 73 75 6c 74 20 69 73 20 4e   the result is N
ece0: 55 4c 4c 20 69 66 20 74 68 65 72 65 20 69 73 20  ULL if there is 
ecf0: 6e 6f 20 45 4c 53 45 20 63 6c 61 73 65 2e 0a 3c  no ELSE clase..<
ed00: 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 6f 70 74 69  /p>..<p>The opti
ed10: 6f 6e 61 6c 20 65 78 70 72 65 73 73 69 6f 6e 20  onal expression 
ed20: 74 68 61 74 20 6f 63 63 75 72 73 20 69 6e 20 62  that occurs in b
ed30: 65 74 77 65 65 6e 20 74 68 65 20 43 41 53 45 20  etween the CASE 
ed40: 6b 65 79 77 6f 72 64 20 61 6e 64 20 74 68 65 0a  keyword and the.
ed50: 66 69 72 73 74 20 57 48 45 4e 20 6b 65 79 77 6f  first WHEN keywo
ed60: 72 64 20 69 73 20 74 68 65 20 22 62 61 73 65 22  rd is the "base"
ed70: 20 65 78 70 72 65 73 73 69 6f 6e 2e 20 20 5e 54   expression.  ^T
ed80: 68 65 72 65 20 61 72 65 20 74 77 6f 20 62 61 73  here are two bas
ed90: 69 63 20 66 6f 72 6d 73 0a 6f 66 20 61 20 43 41  ic forms.of a CA
eda0: 53 45 20 65 78 70 72 65 73 73 69 6f 6e 3a 20 74  SE expression: t
edb0: 68 6f 73 65 20 77 69 74 68 20 61 6e 64 20 77 69  hose with and wi
edc0: 74 68 6f 75 74 20 61 20 62 61 73 65 20 65 78 70  thout a base exp
edd0: 72 65 73 73 69 6f 6e 2e 0a 5e 49 6e 20 61 20 43  ression..^In a C
ede0: 41 53 45 20 77 69 74 68 6f 75 74 20 61 20 62 61  ASE without a ba
edf0: 73 65 20 65 78 70 72 65 73 73 69 6f 6e 2c 20 65  se expression, e
ee00: 61 63 68 20 57 48 45 4e 20 65 78 70 72 65 73 73  ach WHEN express
ee10: 69 6f 6e 20 69 73 20 65 76 61 6c 75 74 65 64 0a  ion is evaluted.
ee20: 61 73 20 61 20 62 6f 6f 6c 65 61 6e 20 61 6e 64  as a boolean and
ee30: 20 74 68 65 20 6f 76 65 72 61 6c 6c 20 72 65 73   the overall res
ee40: 75 6c 74 20 69 73 20 64 65 74 65 72 6d 69 6e 65  ult is determine
ee50: 64 20 62 79 20 66 69 72 73 74 20 57 48 45 4e 20  d by first WHEN 
ee60: 65 78 70 72 65 73 73 69 6f 6e 0a 74 68 61 74 20  expression.that 
ee70: 69 73 20 74 72 75 65 2e 0a 5e 49 6e 20 61 20 43  is true..^In a C
ee80: 41 53 45 20 77 69 74 68 20 61 20 62 61 73 65 20  ASE with a base 
ee90: 65 78 70 72 65 73 73 69 6f 6e 2c 20 74 68 65 20  expression, the 
eea0: 62 61 73 65 20 65 78 70 72 65 73 73 69 6f 6e 20  base expression 
eeb0: 69 73 20 65 76 61 6c 75 74 65 64 20 6a 75 73 74  is evaluted just
eec0: 0a 6f 6e 63 65 20 61 6e 64 20 74 68 65 20 72 65  .once and the re
eed0: 73 75 6c 74 20 69 73 20 63 6f 6d 70 61 72 65 64  sult is compared
eee0: 20 61 67 61 69 6e 73 74 20 65 61 63 68 20 57 48   against each WH
eef0: 45 4e 20 65 78 70 72 65 73 73 69 6f 6e 20 75 6e  EN expression un
ef00: 74 69 6c 20 61 20 0a 6d 61 74 63 68 20 69 73 20  til a .match is 
ef10: 66 6f 75 6e 64 2e 0a 5e 57 68 65 6e 20 63 6f 6d  found..^When com
ef20: 70 61 72 69 6e 67 20 61 20 62 61 73 65 20 65 78  paring a base ex
ef30: 70 72 65 73 73 69 6f 6e 20 61 67 61 69 6e 73 74  pression against
ef40: 20 61 20 57 48 45 4e 20 65 78 70 72 65 73 73 69   a WHEN expressi
ef50: 6f 6e 2c 20 74 68 65 20 73 61 6d 65 0a 63 6f 6c  on, the same.col
ef60: 6c 61 74 69 6e 67 20 73 65 71 75 65 6e 63 65 2c  lating sequence,
ef70: 20 61 66 66 69 6e 69 74 79 2c 20 61 6e 64 20 4e   affinity, and N
ef80: 55 4c 4c 2d 68 61 6e 64 6c 69 6e 67 20 72 75 6c  ULL-handling rul
ef90: 65 73 20 61 70 70 6c 79 20 61 73 20 69 66 20 74  es apply as if t
efa0: 68 65 0a 62 61 73 65 20 65 78 70 72 65 73 73 69  he.base expressi
efb0: 6f 6e 20 61 6e 64 20 57 48 45 4e 20 65 78 70 72  on and WHEN expr
efc0: 65 73 73 69 6f 6e 20 61 72 65 20 72 65 73 70 65  ession are respe
efd0: 63 74 69 76 65 6c 79 20 74 68 65 20 6c 65 66 74  ctively the left
efe0: 2d 20 61 6e 64 0a 72 69 67 68 74 2d 68 61 6e 64  - and.right-hand
eff0: 20 6f 70 65 72 61 6e 64 73 20 6f 66 20 61 6e 20   operands of an 
f000: 3c 62 69 67 3e 3c 62 3e 3d 3c 2f 62 3e 3c 2f 62  <big><b>=</b></b
f010: 69 67 3e 20 6f 70 65 72 61 74 6f 72 2e 3c 2f 70  ig> operator.</p
f020: 3e 0a 0a 3c 70 3e 5e 28 41 73 73 75 6d 69 6e 67  >..<p>^(Assuming
f030: 20 74 68 65 20 73 75 62 65 78 70 72 65 73 73 69   the subexpressi
f040: 6f 6e 73 20 68 61 76 65 20 6e 6f 20 73 69 64 65  ons have no side
f050: 2d 65 66 66 65 63 74 73 2c 20 74 68 65 20 66 6f  -effects, the fo
f060: 6c 6c 6f 77 69 6e 67 0a 74 77 6f 20 65 78 70 72  llowing.two expr
f070: 65 73 73 69 6f 6e 73 20 61 72 65 20 65 71 75 69  essions are equi
f080: 76 61 6c 65 6e 74 3a 3c 2f 70 3e 0a 0a 3c 75 6c  valent:</p>..<ul
f090: 3e 0a 3c 6c 69 3e 43 41 53 45 20 78 20 57 48 45  >.<li>CASE x WHE
f0a0: 4e 20 77 31 20 54 48 45 4e 20 72 31 20 57 48 45  N w1 THEN r1 WHE
f0b0: 4e 20 77 32 20 54 48 45 4e 20 72 32 20 45 4c 53  N w2 THEN r2 ELS
f0c0: 45 20 72 33 20 45 4e 44 0a 3c 6c 69 3e 43 41 53  E r3 END.<li>CAS
f0d0: 45 20 57 48 45 4e 20 78 3d 77 31 20 54 48 45 4e  E WHEN x=w1 THEN
f0e0: 20 72 31 20 57 48 45 4e 20 78 3d 77 32 20 54 48   r1 WHEN x=w2 TH
f0f0: 45 4e 20 72 32 20 45 4c 53 45 20 72 33 20 45 4e  EN r2 ELSE r3 EN
f100: 44 0a 3c 2f 75 6c 3e 29 5e 0a 0a 3c 70 3e 5e 54  D.</ul>)^..<p>^T
f110: 68 65 20 6f 6e 6c 79 20 64 69 66 66 65 72 65 6e  he only differen
f120: 63 65 20 62 65 74 77 65 65 6e 20 74 68 65 20 74  ce between the t
f130: 77 6f 20 43 41 53 45 20 65 78 70 72 65 73 73 69  wo CASE expressi
f140: 6f 6e 73 20 73 68 6f 77 6e 20 61 62 6f 76 65 0a  ons shown above.
f150: 69 73 20 74 68 61 74 20 74 68 65 20 3c 69 3e 78  is that the <i>x
f160: 3c 2f 69 3e 20 65 78 70 72 65 73 73 69 6f 6e 20  </i> expression 
f170: 69 73 20 65 76 61 6c 75 61 74 65 64 0a 65 78 61  is evaluated.exa
f180: 63 74 6c 79 20 6f 6e 63 65 20 69 6e 20 74 68 65  ctly once in the
f190: 20 66 69 72 73 74 20 65 78 61 6d 70 6c 65 20 62   first example b
f1a0: 75 74 20 6d 69 67 68 74 20 62 65 20 65 76 61 6c  ut might be eval
f1b0: 75 61 74 65 64 20 6d 75 6c 74 69 70 6c 65 20 74  uated multiple t
f1c0: 69 6d 65 73 0a 69 6e 20 74 68 65 20 73 65 63 6f  imes.in the seco
f1d0: 6e 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 41 20 4e  nd.</p>..<p>^A N
f1e0: 55 4c 4c 20 72 65 73 75 6c 74 20 69 73 20 63 6f  ULL result is co
f1f0: 6e 73 69 64 65 72 65 64 20 66 61 6c 73 65 20 77  nsidered false w
f200: 68 65 6e 20 65 76 61 6c 75 61 74 69 6e 67 20 57  hen evaluating W
f210: 48 45 4e 20 74 65 72 6d 73 2e 0a 5e 49 66 20 74  HEN terms..^If t
f220: 68 65 20 62 61 73 65 20 65 78 70 72 65 73 73 69  he base expressi
f230: 6f 6e 20 69 73 20 4e 55 4c 4c 20 74 68 65 6e 20  on is NULL then 
f240: 74 68 65 20 72 65 73 75 6c 74 20 6f 66 20 74 68  the result of th
f250: 65 20 43 41 53 45 20 69 73 20 74 68 65 0a 72 65  e CASE is the.re
f260: 73 75 6c 74 20 6f 66 20 74 68 65 20 45 4c 53 45  sult of the ELSE
f270: 20 65 78 70 72 65 73 73 69 6f 6e 20 69 66 20 69   expression if i
f280: 74 20 65 78 69 73 74 73 2c 20 6f 72 20 4e 55 4c  t exists, or NUL
f290: 4c 20 69 66 20 74 68 65 20 45 4c 53 45 20 63 6c  L if the ELSE cl
f2a0: 61 75 73 65 0a 69 73 20 6f 6d 69 74 74 65 64 2e  ause.is omitted.
f2b0: 3c 2f 70 3e 0a 0a 0a 3c 68 33 3e 54 61 62 6c 65  </p>...<h3>Table
f2c0: 20 43 6f 6c 75 6d 6e 20 4e 61 6d 65 73 3c 2f 68   Column Names</h
f2d0: 33 3e 0a 3c 70 3e 5e 41 20 63 6f 6c 75 6d 6e 20  3>.<p>^A column 
f2e0: 6e 61 6d 65 20 63 61 6e 20 62 65 20 61 6e 79 20  name can be any 
f2f0: 6f 66 20 74 68 65 20 6e 61 6d 65 73 20 64 65 66  of the names def
f300: 69 6e 65 64 20 69 6e 20 74 68 65 20 5b 43 52 45  ined in the [CRE
f310: 41 54 45 20 54 41 42 4c 45 5d 0a 73 74 61 74 65  ATE TABLE].state
f320: 6d 65 6e 74 20 6f 72 20 6f 6e 65 20 6f 66 20 74  ment or one of t
f330: 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 73 70 65  he following spe
f340: 63 69 61 6c 20 69 64 65 6e 74 69 66 69 65 72 73  cial identifiers
f350: 3a 20 22 3c 62 3e 52 4f 57 49 44 3c 2f 62 3e 22  : "<b>ROWID</b>"
f360: 2c 0a 22 3c 62 3e 4f 49 44 3c 2f 62 3e 22 2c 20  ,."<b>OID</b>", 
f370: 6f 72 20 22 3c 62 3e 5f 52 4f 57 49 44 5f 3c 2f  or "<b>_ROWID_</
f380: 62 3e 22 2e 0a 5e 54 68 65 73 65 20 73 70 65 63  b>"..^These spec
f390: 69 61 6c 20 69 64 65 6e 74 69 66 69 65 72 73 20  ial identifiers 
f3a0: 61 6c 6c 20 64 65 73 63 72 69 62 65 20 74 68 65  all describe the
f3b0: 0a 75 6e 69 71 75 65 20 69 6e 74 65 67 65 72 20  .unique integer 
f3c0: 6b 65 79 20 28 74 68 65 20 5b 72 6f 77 69 64 5d  key (the [rowid]
f3d0: 29 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  ) associated wit
f3e0: 68 20 65 76 65 72 79 20 0a 72 6f 77 20 6f 66 20  h every .row of 
f3f0: 65 76 65 72 79 20 74 61 62 6c 65 2e 0a 5e 54 68  every table..^Th
f400: 65 20 73 70 65 63 69 61 6c 20 69 64 65 6e 74 69  e special identi
f410: 66 69 65 72 73 20 6f 6e 6c 79 20 72 65 66 65 72  fiers only refer
f420: 20 74 6f 20 74 68 65 20 72 6f 77 20 6b 65 79 20   to the row key 
f430: 69 66 20 74 68 65 20 5b 43 52 45 41 54 45 20 54  if the [CREATE T
f440: 41 42 4c 45 5d 0a 73 74 61 74 65 6d 65 6e 74 20  ABLE].statement 
f450: 64 6f 65 73 20 6e 6f 74 20 64 65 66 69 6e 65 20  does not define 
f460: 61 20 72 65 61 6c 20 63 6f 6c 75 6d 6e 20 77 69  a real column wi
f470: 74 68 20 74 68 65 20 73 61 6d 65 20 6e 61 6d 65  th the same name
f480: 2e 0a 5e 54 68 65 20 72 6f 77 69 64 20 63 61 6e  ..^The rowid can
f490: 20 62 65 20 75 73 65 64 20 61 6e 79 77 68 65 72   be used anywher
f4a0: 65 20 61 20 72 65 67 75 6c 61 72 0a 63 6f 6c 75  e a regular.colu
f4b0: 6d 6e 20 63 61 6e 20 62 65 20 75 73 65 64 2e 3c  mn can be used.<
f4c0: 2f 70 3e 0a 0a 3c 68 33 3e 53 75 62 71 75 65 72  /p>..<h3>Subquer
f4d0: 69 65 73 3c 2f 68 33 3e 0a 3c 70 3e 5e 5b 53 45  ies</h3>.<p>^[SE
f4e0: 4c 45 43 54 5d 20 73 74 61 74 65 6d 65 6e 74 73  LECT] statements
f4f0: 20 63 61 6e 20 61 70 70 65 61 72 20 69 6e 20 65   can appear in e
f500: 78 70 72 65 73 73 69 6f 6e 73 20 61 73 20 65 69  xpressions as ei
f510: 74 68 65 72 20 74 68 65 0a 72 69 67 68 74 2d 68  ther the.right-h
f520: 61 6e 64 20 6f 70 65 72 61 6e 64 20 6f 66 20 74  and operand of t
f530: 68 65 20 49 4e 20 6f 70 65 72 61 74 6f 72 2c 20  he IN operator, 
f540: 61 73 20 61 20 73 63 61 6c 61 72 20 71 75 61 6e  as a scalar quan
f550: 74 69 74 79 2c 20 6f 72 0a 61 73 20 74 68 65 20  tity, or.as the 
f560: 6f 70 65 72 61 6e 64 20 6f 66 20 61 6e 20 45 58  operand of an EX
f570: 49 53 54 53 20 6f 70 65 72 61 74 6f 72 2e 0a 5e  ISTS operator..^
f580: 41 73 20 61 20 73 63 61 6c 61 72 20 71 75 61 6e  As a scalar quan
f590: 74 69 74 79 20 6f 72 20 74 68 65 20 6f 70 65 72  tity or the oper
f5a0: 61 6e 64 20 6f 66 20 61 6e 20 49 4e 20 6f 70 65  and of an IN ope
f5b0: 72 61 74 6f 72 2c 0a 74 68 65 20 53 45 4c 45 43  rator,.the SELEC
f5c0: 54 20 73 68 6f 75 6c 64 20 68 61 76 65 20 6f 6e  T should have on
f5d0: 6c 79 20 61 20 73 69 6e 67 6c 65 20 63 6f 6c 75  ly a single colu
f5e0: 6d 6e 20 69 6e 20 69 74 73 0a 72 65 73 75 6c 74  mn in its.result
f5f0: 2e 20 20 5e 43 6f 6d 70 6f 75 6e 64 20 53 45 4c  .  ^Compound SEL
f600: 45 43 54 73 20 28 63 6f 6e 6e 65 63 74 65 64 20  ECTs (connected 
f610: 77 69 74 68 20 6b 65 79 77 6f 72 64 73 20 6c 69  with keywords li
f620: 6b 65 20 55 4e 49 4f 4e 20 6f 72 0a 45 58 43 45  ke UNION or.EXCE
f630: 50 54 29 20 61 72 65 20 61 6c 6c 6f 77 65 64 2e  PT) are allowed.
f640: 0a 5e 57 69 74 68 20 74 68 65 20 45 58 49 53 54  .^With the EXIST
f650: 53 20 6f 70 65 72 61 74 6f 72 2c 20 74 68 65 20  S operator, the 
f660: 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65 20 72  columns in the r
f670: 65 73 75 6c 74 20 73 65 74 20 6f 66 20 74 68 65  esult set of the
f680: 20 5b 53 45 4c 45 43 54 5d 20 61 72 65 0a 69 67   [SELECT] are.ig
f690: 6e 6f 72 65 64 20 61 6e 64 20 74 68 65 20 65 78  nored and the ex
f6a0: 70 72 65 73 73 69 6f 6e 20 72 65 74 75 72 6e 73  pression returns
f6b0: 20 54 52 55 45 20 69 66 20 6f 6e 65 20 6f 72 20   TRUE if one or 
f6c0: 6d 6f 72 65 20 72 6f 77 73 20 65 78 69 73 74 0a  more rows exist.
f6d0: 61 6e 64 20 46 41 4c 53 45 20 69 66 20 74 68 65  and FALSE if the
f6e0: 20 72 65 73 75 6c 74 20 73 65 74 20 69 73 20 65   result set is e
f6f0: 6d 70 74 79 2e 0a 5e 49 66 20 6e 6f 20 74 65 72  mpty..^If no ter
f700: 6d 73 20 69 6e 20 74 68 65 20 5b 53 45 4c 45 43  ms in the [SELEC
f710: 54 5d 20 65 78 70 72 65 73 73 69 6f 6e 20 72 65  T] expression re
f720: 66 65 72 20 74 6f 20 76 61 6c 75 65 73 20 69 6e  fer to values in
f730: 20 74 68 65 20 63 6f 6e 74 61 69 6e 69 6e 67 0a   the containing.
f740: 71 75 65 72 79 2c 20 74 68 65 6e 20 74 68 65 20  query, then the 
f750: 65 78 70 72 65 73 73 69 6f 6e 20 69 73 20 65 76  expression is ev
f760: 61 6c 75 61 74 65 64 20 6f 6e 63 65 20 70 72 69  aluated once pri
f770: 6f 72 20 74 6f 20 61 6e 79 20 6f 74 68 65 72 0a  or to any other.
f780: 70 72 6f 63 65 73 73 69 6e 67 20 61 6e 64 20 74  processing and t
f790: 68 65 20 72 65 73 75 6c 74 20 69 73 20 72 65 75  he result is reu
f7a0: 73 65 64 20 61 73 20 6e 65 63 65 73 73 61 72 79  sed as necessary
f7b0: 2e 20 20 5e 49 66 20 74 68 65 20 5b 53 45 4c 45  .  ^If the [SELE
f7c0: 43 54 5d 20 65 78 70 72 65 73 73 69 6f 6e 0a 64  CT] expression.d
f7d0: 6f 65 73 20 63 6f 6e 74 61 69 6e 20 76 61 72 69  oes contain vari
f7e0: 61 62 6c 65 73 20 66 72 6f 6d 20 74 68 65 20 6f  ables from the o
f7f0: 75 74 65 72 20 71 75 65 72 79 2c 20 74 68 65 6e  uter query, then
f800: 20 74 68 65 20 5b 53 45 4c 45 43 54 5d 20 69 73   the [SELECT] is
f810: 20 72 65 65 76 61 6c 75 61 74 65 64 0a 65 76 65   reevaluated.eve
f820: 72 79 20 74 69 6d 65 20 69 74 20 69 73 20 6e 65  ry time it is ne
f830: 65 64 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 57  eded.</p>..<p>^W
f840: 68 65 6e 20 61 20 53 45 4c 45 43 54 20 69 73 20  hen a SELECT is 
f850: 74 68 65 20 72 69 67 68 74 20 6f 70 65 72 61 6e  the right operan
f860: 64 20 6f 66 20 74 68 65 20 49 4e 20 6f 70 65 72  d of the IN oper
f870: 61 74 6f 72 2c 20 74 68 65 20 49 4e 0a 6f 70 65  ator, the IN.ope
f880: 72 61 74 6f 72 20 72 65 74 75 72 6e 73 20 54 52  rator returns TR
f890: 55 45 20 69 66 20 74 68 65 20 53 45 4c 45 43 54  UE if the SELECT
f8a0: 20 72 65 73 75 6c 74 20 63 6f 6e 74 61 69 6e 73   result contains
f8b0: 20 6e 6f 20 4e 55 4c 4c 73 20 61 6e 64 20 69 66   no NULLs and if
f8c0: 0a 74 68 65 20 6c 65 66 74 20 6f 70 65 72 61 6e  .the left operan
f8d0: 64 20 6d 61 74 63 68 65 73 20 61 6e 79 20 6f 66  d matches any of
f8e0: 20 74 68 65 20 76 61 6c 75 65 73 20 69 6e 20 74   the values in t
f8f0: 68 65 20 53 45 4c 45 43 54 20 72 65 73 75 6c 74  he SELECT result
f900: 2e 0a 5e 54 68 65 20 49 4e 20 6f 70 65 72 61 74  ..^The IN operat
f910: 6f 72 20 6d 61 79 20 62 65 20 70 72 65 63 65 64  or may be preced
f920: 65 64 0a 62 79 20 74 68 65 20 4e 4f 54 20 6b 65  ed.by the NOT ke
f930: 79 77 6f 72 64 20 74 6f 20 69 6e 76 65 72 74 20  yword to invert 
f940: 74 68 65 20 73 65 6e 73 65 20 6f 66 20 74 68 65  the sense of the
f950: 20 74 65 73 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e   test.</p>..<p>^
f960: 57 68 65 6e 20 61 20 53 45 4c 45 43 54 20 61 70  When a SELECT ap
f970: 70 65 61 72 73 20 77 69 74 68 69 6e 20 61 6e 20  pears within an 
f980: 65 78 70 72 65 73 73 69 6f 6e 20 62 75 74 20 69  expression but i
f990: 73 20 6e 6f 74 20 74 68 65 20 72 69 67 68 74 0a  s not the right.
f9a0: 6f 70 65 72 61 6e 64 20 6f 66 20 61 6e 20 49 4e  operand of an IN
f9b0: 20 6f 70 65 72 61 74 6f 72 2c 20 74 68 65 6e 20   operator, then 
f9c0: 74 68 65 20 66 69 72 73 74 20 72 6f 77 20 6f 66  the first row of
f9d0: 20 74 68 65 20 72 65 73 75 6c 74 20 6f 66 20 74   the result of t
f9e0: 68 65 0a 53 45 4c 45 43 54 20 62 65 63 6f 6d 65  he.SELECT become
f9f0: 73 20 74 68 65 20 76 61 6c 75 65 20 75 73 65 64  s the value used
fa00: 20 69 6e 20 74 68 65 20 65 78 70 72 65 73 73 69   in the expressi
fa10: 6f 6e 2e 20 20 5e 49 66 20 74 68 65 20 53 45 4c  on.  ^If the SEL
fa20: 45 43 54 20 79 69 65 6c 64 73 0a 6d 6f 72 65 20  ECT yields.more 
fa30: 74 68 61 6e 20 6f 6e 65 20 72 65 73 75 6c 74 20  than one result 
fa40: 72 6f 77 2c 20 61 6c 6c 20 72 6f 77 73 20 61 66  row, all rows af
fa50: 74 65 72 20 74 68 65 20 66 69 72 73 74 20 61 72  ter the first ar
fa60: 65 20 69 67 6e 6f 72 65 64 2e 20 20 5e 49 66 0a  e ignored.  ^If.
fa70: 74 68 65 20 53 45 4c 45 43 54 20 79 69 65 6c 64  the SELECT yield
fa80: 73 20 6e 6f 20 72 6f 77 73 2c 20 74 68 65 6e 20  s no rows, then 
fa90: 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65  the value of the
faa0: 20 53 45 4c 45 43 54 20 69 73 20 4e 55 4c 4c 2e   SELECT is NULL.
fab0: 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 68 64 5f 66 72  </p>..<tcl>hd_fr
fac0: 61 67 6d 65 6e 74 20 63 61 73 74 65 78 70 72 20  agment castexpr 
fad0: 7b 43 41 53 54 20 65 78 70 72 65 73 73 69 6f 6e  {CAST expression
fae0: 7d 3c 2f 74 63 6c 3e 0a 3c 68 33 3e 43 41 53 54  }</tcl>.<h3>CAST
faf0: 20 65 78 70 72 65 73 73 69 6f 6e 73 3c 2f 68 33   expressions</h3
fb00: 3e 0a 0a 3c 70 3e 5e 41 20 43 41 53 54 20 65 78  >..<p>^A CAST ex
fb10: 70 72 65 73 73 69 6f 6e 20 63 68 61 6e 67 65 73  pression changes
fb20: 20 74 68 65 20 5b 64 61 74 61 74 79 70 65 5d 20   the [datatype] 
fb30: 6f 66 20 74 68 65 20 3c 65 78 70 72 3e 20 69 6e  of the <expr> in
fb40: 74 6f 20 74 68 65 0a 74 79 70 65 20 73 70 65 63  to the.type spec
fb50: 69 66 69 65 64 20 62 79 20 26 6c 74 3b 74 79 70  ified by &lt;typ
fb60: 65 26 67 74 3b 2e 20 0a 5e 28 26 6c 74 3b 74 79  e&gt;. .^(&lt;ty
fb70: 70 65 26 67 74 3b 20 63 61 6e 20 62 65 20 61 6e  pe&gt; can be an
fb80: 79 20 6e 6f 6e 2d 65 6d 70 74 79 20 74 79 70 65  y non-empty type
fb90: 20 6e 61 6d 65 20 74 68 61 74 20 69 73 20 76 61   name that is va
fba0: 6c 69 64 0a 66 6f 72 20 74 68 65 20 74 79 70 65  lid.for the type
fbb0: 20 69 6e 20 61 20 63 6f 6c 75 6d 6e 20 64 65 66   in a column def
fbc0: 69 6e 69 74 69 6f 6e 20 6f 66 20 61 20 5b 43 52  inition of a [CR
fbd0: 45 41 54 45 20 54 41 42 4c 45 5d 20 73 74 61 74  EATE TABLE] stat
fbe0: 65 6d 65 6e 74 2e 29 5e 0a 5e 54 68 65 20 26 6c  ement.)^.^The &l
fbf0: 74 3b 74 79 70 65 26 67 74 3b 20 6e 61 6d 65 20  t;type&gt; name 
fc00: 69 73 20 69 6e 74 65 72 70 72 65 74 65 64 20 61  is interpreted a
fc10: 63 63 6f 72 64 69 6e 67 20 74 6f 20 74 68 65 20  ccording to the 
fc20: 0a 5b 72 75 6c 65 73 20 66 6f 72 20 64 65 74 65  .[rules for dete
fc30: 72 6d 69 6e 69 6e 67 20 63 6f 6c 75 6d 6e 20 61  rmining column a
fc40: 66 66 69 6e 69 74 79 5d 2e 0a 0a 3c 70 3e 5e 41  ffinity]...<p>^A
fc50: 6e 20 65 78 70 6c 69 63 69 74 20 63 61 73 74 20  n explicit cast 
fc60: 69 73 20 73 74 72 6f 6e 67 20 74 68 61 6e 20 61  is strong than a
fc70: 66 66 69 6e 69 74 79 3b 20 77 69 74 68 20 74 68  ffinity; with th
fc80: 65 20 43 41 53 54 20 65 78 70 72 65 73 73 69 6f  e CAST expressio
fc90: 6e 0a 74 68 65 20 64 61 74 61 74 79 70 65 20 63  n.the datatype c
fca0: 6f 6e 76 65 72 73 69 6f 6e 20 69 73 20 66 6f 72  onversion is for
fcb0: 63 65 64 20 65 76 65 6e 20 69 66 20 69 74 20 69  ced even if it i
fcc0: 73 20 6c 6f 73 73 79 20 61 6e 64 20 69 72 72 72  s lossy and irrr
fcd0: 65 76 65 72 73 69 62 6c 65 2e 0a 3c 75 6c 3e 0a  eversible..<ul>.
fce0: 3c 6c 69 3e 3c 70 3e 0a 20 20 5e 41 20 63 61 73  <li><p>.  ^A cas
fcf0: 74 20 6f 66 20 61 20 52 45 41 4c 20 76 61 6c 75  t of a REAL valu
fd00: 65 20 69 6e 74 6f 20 61 6e 20 49 4e 54 45 47 45  e into an INTEGE
fd10: 52 20 77 69 6c 6c 20 74 72 75 6e 63 61 74 65 20  R will truncate 
fd20: 74 68 65 0a 20 20 66 72 61 63 74 69 6f 6e 61 6c  the.  fractional
fd30: 20 70 61 72 74 20 6f 66 20 74 68 65 20 52 45 41   part of the REA
fd40: 4c 2e 20 20 5e 49 66 20 61 6e 20 52 45 41 4c 20  L.  ^If an REAL 
fd50: 69 73 20 74 6f 6f 20 6c 61 72 67 65 20 74 6f 20  is too large to 
fd60: 62 65 0a 20 20 72 65 70 72 65 73 65 6e 74 65 64  be.  represented
fd70: 20 61 73 20 61 6e 20 49 4e 54 45 47 45 52 20 74   as an INTEGER t
fd80: 68 65 6e 20 74 68 65 20 72 65 73 75 6c 74 20 6f  hen the result o
fd90: 66 20 74 68 65 20 63 61 73 74 20 69 73 0a 20 20  f the cast is.  
fda0: 74 68 65 20 6c 61 72 67 65 73 74 20 6e 65 67 61  the largest nega
fdb0: 74 69 76 65 20 69 6e 74 65 67 65 72 3a 20 2d 39  tive integer: -9
fdc0: 32 32 33 33 37 32 30 33 36 38 35 34 37 37 35 38  2233720368547758
fdd0: 30 38 2e 0a 0a 3c 6c 69 3e 3c 70 3e 0a 20 5e 41  08...<li><p>. ^A
fde0: 20 63 61 73 74 20 6f 66 20 61 20 54 45 58 54 20   cast of a TEXT 
fdf0: 76 61 6c 75 65 20 69 6e 74 6f 20 61 6e 20 49 4e  value into an IN
fe00: 54 45 47 45 52 20 6f 72 20 52 45 41 4c 20 77 69  TEGER or REAL wi
fe10: 6c 6c 20 72 65 61 64 20 61 20 70 72 65 66 69 78  ll read a prefix
fe20: 0a 20 6f 66 20 74 68 65 20 54 45 58 54 20 76 61  . of the TEXT va
fe30: 6c 75 65 20 74 68 61 74 20 6c 6f 6f 6b 73 20 6c  lue that looks l
fe40: 69 6b 65 20 61 6e 20 69 6e 74 65 67 65 72 20 6f  ike an integer o
fe50: 72 20 72 65 61 6c 20 76 61 6c 75 65 2c 20 72 65  r real value, re
fe60: 73 70 65 63 74 69 76 65 6c 79 2c 0a 20 61 6e 64  spectively,. and
fe70: 20 69 67 6e 6f 72 65 20 74 68 65 20 72 65 73 74   ignore the rest
fe80: 2e 20 20 5e 57 68 65 6e 20 63 61 73 74 69 6e 67  .  ^When casting
fe90: 20 66 72 6f 6d 20 54 45 58 54 20 69 6e 74 6f 20   from TEXT into 
fea0: 49 4e 54 45 47 45 52 20 6f 72 20 52 45 41 4c 2c  INTEGER or REAL,
feb0: 0a 20 6c 65 61 64 69 6e 67 20 73 70 61 63 65 73  . leading spaces
fec0: 20 69 6e 20 74 68 65 20 54 45 58 54 20 76 61 6c   in the TEXT val
fed0: 75 65 20 61 72 65 20 69 67 6e 6f 72 65 64 2e 20  ue are ignored. 
fee0: 20 5e 28 41 20 63 61 73 74 20 6f 66 20 61 20 54   ^(A cast of a T
fef0: 45 58 54 20 76 61 6c 75 65 0a 20 74 68 61 74 20  EXT value. that 
ff00: 6c 6f 6f 6b 73 20 6e 6f 74 68 69 6e 67 20 6c 69  looks nothing li
ff10: 6b 65 20 61 20 6e 75 6d 62 65 72 20 69 6e 74 6f  ke a number into
ff20: 20 49 4e 54 45 47 45 52 20 6f 72 20 52 45 41 4c   INTEGER or REAL
ff30: 20 72 65 73 75 6c 74 73 20 69 6e 20 30 20 6f 72   results in 0 or
ff40: 20 30 2e 30 2c 0a 20 72 65 73 70 65 63 74 69 76   0.0,. respectiv
ff50: 65 6c 79 2e 29 5e 0a 0a 3c 6c 69 3e 3c 70 3e 0a  ely.)^..<li><p>.
ff60: 20 5e 43 61 73 74 69 6e 67 20 61 20 76 61 6c 75   ^Casting a valu
ff70: 65 20 69 6e 74 6f 20 4e 55 4d 45 52 49 43 20 66  e into NUMERIC f
ff80: 69 72 73 74 20 64 6f 65 73 20 61 20 66 6f 72 63  irst does a forc
ff90: 65 64 20 63 6f 6e 76 65 72 73 69 6f 6e 20 69 6e  ed conversion in
ffa0: 74 6f 20 52 45 41 4c 0a 20 20 62 75 74 20 77 69  to REAL.  but wi
ffb0: 6c 6c 20 74 68 65 6e 20 66 75 72 74 68 65 72 20  ll then further 
ffc0: 63 6f 6e 76 65 72 74 73 20 74 68 65 20 72 65 73  converts the res
ffd0: 75 6c 74 20 69 6e 74 6f 20 49 4e 54 45 47 45 52  ult into INTEGER
ffe0: 20 69 66 20 61 6e 64 20 6f 6e 6c 79 20 69 66 0a   if and only if.
fff0: 20 20 74 68 65 20 63 6f 6e 76 65 72 73 69 6f 6e    the conversion
10000 20 66 72 6f 6d 20 52 45 41 4c 20 74 6f 20 49 4e   from REAL to IN
10010 54 45 47 45 52 20 69 73 20 6c 6f 73 73 6c 65 73  TEGER is lossles
10020 73 20 61 6e 64 20 72 65 76 65 72 73 69 62 6c 65  s and reversible
10030 2e 0a 20 20 54 68 69 73 20 69 73 20 74 68 65 20  ..  This is the 
10040 6f 6e 6c 79 20 63 6f 6e 74 65 78 74 20 69 6e 20  only context in 
10050 53 51 4c 69 74 65 20 77 68 65 72 65 20 74 68 65  SQLite where the
10060 20 4e 55 4d 45 52 49 43 20 61 6e 64 20 49 4e 54   NUMERIC and INT
10070 45 47 45 52 0a 20 20 5b 61 66 66 69 6e 69 74 69  EGER.  [affiniti
10080 65 73 5d 20 62 65 68 61 76 65 20 64 69 66 66 65  es] behave diffe
10090 72 65 6e 74 6c 79 2e 0a 0a 3c 6c 69 3e 3c 70 3e  rently...<li><p>
100a0 0a 20 5e 43 61 73 74 69 6e 67 20 61 20 76 61 6c  . ^Casting a val
100b0 75 65 20 69 6e 74 6f 20 54 45 58 54 20 72 65 6e  ue into TEXT ren
100c0 64 65 72 73 20 74 68 65 20 76 61 6c 75 65 20 61  ders the value a
100d0 73 20 69 66 20 76 69 61 20 5b 73 71 6c 69 74 65  s if via [sqlite
100e0 33 5f 73 6e 70 72 69 6e 74 66 28 29 5d 0a 20 20  3_snprintf()].  
100f0 65 78 63 65 70 74 20 74 68 61 74 20 74 68 65 20  except that the 
10100 72 65 73 75 6c 74 69 6e 67 20 54 45 58 54 20 75  resulting TEXT u
10110 73 65 73 20 74 68 65 20 5b 65 6e 63 6f 64 69 6e  ses the [encodin
10120 67 5d 20 6f 66 20 74 68 65 20 64 61 74 61 62 61  g] of the databa
10130 73 65 0a 20 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e  se.  connection.
10140 0a 0a 3c 6c 69 3e 3c 70 3e 0a 20 5e 43 61 73 74  ..<li><p>. ^Cast
10150 69 6e 67 20 61 20 76 61 6c 75 65 20 74 6f 20 61  ing a value to a
10160 20 26 6c 74 3b 74 79 70 65 26 67 74 3b 20 77 69   &lt;type&gt; wi
10170 74 68 20 6e 6f 20 61 66 66 69 6e 69 74 79 20 63  th no affinity c
10180 61 75 73 65 73 20 74 68 65 20 76 61 6c 75 65 20  auses the value 
10190 74 6f 0a 20 20 62 65 20 63 6f 6e 76 65 72 74 65  to.  be converte
101a0 64 20 69 6e 74 6f 20 61 20 42 4c 4f 42 2e 20 20  d into a BLOB.  
101b0 5e 43 61 73 74 69 6e 67 20 74 6f 20 61 20 42 4c  ^Casting to a BL
101c0 4f 42 20 63 6f 6e 73 69 73 74 73 20 6f 66 20 66  OB consists of f
101d0 69 72 73 74 20 63 61 73 74 69 6e 67 0a 20 20 74  irst casting.  t
101e0 68 65 20 76 61 6c 75 65 20 74 6f 20 54 45 58 54  he value to TEXT
101f0 20 69 6e 20 74 68 65 20 5b 65 6e 63 6f 64 69 6e   in the [encodin
10200 67 5d 20 6f 66 20 74 68 65 20 64 61 74 61 62 61  g] of the databa
10210 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c 20 74  se connection, t
10220 68 65 6e 0a 20 20 69 6e 74 65 72 70 72 65 74 69  hen.  interpreti
10230 6e 67 20 74 68 65 20 72 65 73 75 6c 74 69 6e 67  ng the resulting
10240 20 62 79 74 65 20 73 65 71 75 65 6e 63 65 20 61   byte sequence a
10250 73 20 61 20 42 4c 4f 42 20 69 6e 73 74 65 61 64  s a BLOB instead
10260 20 6f 66 20 61 73 20 54 45 58 54 2e 0a 0a 3c 6c   of as TEXT...<l
10270 69 3e 3c 70 3e 0a 20 5e 43 61 73 74 69 6e 67 20  i><p>. ^Casting 
10280 61 20 42 4c 4f 42 20 76 61 6c 75 65 20 69 6e 74  a BLOB value int
10290 6f 20 61 6e 79 20 74 79 70 65 20 6f 74 68 65 72  o any type other
102a0 20 74 68 61 6e 20 61 20 42 4c 4f 42 20 63 6f 6e   than a BLOB con
102b0 73 69 73 74 73 20 6f 66 20 66 69 72 73 74 0a 20  sists of first. 
102c0 20 69 6e 74 65 72 70 72 65 74 69 6e 67 20 74 68   interpreting th
102d0 65 20 62 79 74 65 20 73 65 71 75 65 6e 63 65 20  e byte sequence 
102e0 6f 66 20 74 68 65 20 42 4c 4f 42 20 61 73 20 61  of the BLOB as a
102f0 20 54 45 58 54 20 73 74 72 69 6e 67 20 69 6e 20   TEXT string in 
10300 74 68 65 0a 20 20 64 61 74 61 62 61 73 65 20 65  the.  database e
10310 6e 63 6f 64 69 6e 67 20 74 68 65 6e 20 63 6f 6e  ncoding then con
10320 74 69 6e 75 69 6e 67 20 61 73 20 69 66 20 74 68  tinuing as if th
10330 65 20 76 61 6c 75 65 20 77 68 65 72 65 20 6f 72  e value where or
10340 69 67 69 6e 61 6c 6c 79 20 6f 66 0a 20 20 74 79  iginally of.  ty
10350 70 65 20 54 45 58 54 2e 0a 0a 3c 6c 69 3e 3c 70  pe TEXT...<li><p
10360 3e 0a 20 5e 41 6e 79 20 63 61 73 74 20 6f 66 20  >. ^Any cast of 
10370 61 20 4e 55 4c 4c 20 76 61 6c 75 65 20 79 69 65  a NULL value yie
10380 6c 64 73 20 61 20 4e 55 4c 4c 20 72 65 73 75 6c  lds a NULL resul
10390 74 2e 0a 3c 2f 75 6c 3e 0a 0a 3c 70 3e 5e 4e 6f  t..</ul>..<p>^No
103a0 74 65 20 74 68 61 74 20 74 68 65 20 72 65 73 75  te that the resu
103b0 6c 74 20 66 72 6f 6d 20 63 61 73 74 69 6e 67 20  lt from casting 
103c0 61 6e 79 20 6e 6f 6e 2d 42 4c 4f 42 20 76 61 6c  any non-BLOB val
103d0 75 65 20 69 6e 74 6f 20 61 20 0a 42 4c 4f 42 20  ue into a .BLOB 
103e0 61 6e 64 20 74 68 65 20 72 65 73 75 6c 74 20 66  and the result f
103f0 72 6f 6d 20 63 61 73 74 69 6e 67 20 61 6e 79 20  rom casting any 
10400 42 4c 4f 42 20 76 61 6c 75 65 20 69 6e 74 6f 20  BLOB value into 
10410 61 20 6e 6f 6e 2d 42 4c 4f 42 20 76 61 6c 75 65  a non-BLOB value
10420 0a 77 69 6c 6c 20 62 65 20 64 69 66 66 65 72 65  .will be differe
10430 6e 74 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20  nt depending on 
10440 77 68 65 74 68 65 72 20 74 68 65 20 64 61 74 61  whether the data
10450 62 61 73 65 20 5b 65 6e 63 6f 64 69 6e 67 5d 20  base [encoding] 
10460 69 73 20 55 54 46 2d 38 2c 0a 55 54 46 2d 31 36  is UTF-8,.UTF-16
10470 62 65 2c 20 6f 72 20 55 54 46 2d 31 36 6c 65 2e  be, or UTF-16le.
10480 0a 0a 3c 68 33 3e 46 75 6e 63 74 69 6f 6e 73 3c  ..<h3>Functions<
10490 2f 68 33 3e 0a 3c 70 3e 5e 42 6f 74 68 20 5b 63  /h3>.<p>^Both [c
104a0 6f 72 65 66 75 6e 63 7c 73 69 6d 70 6c 65 5d 20  orefunc|simple] 
104b0 61 6e 64 20 5b 61 67 67 66 75 6e 63 7c 61 67 67  and [aggfunc|agg
104c0 72 65 67 61 74 65 5d 20 66 75 6e 63 74 69 6f 6e  regate] function
104d0 73 20 61 72 65 20 73 75 70 70 6f 72 74 65 64 2e  s are supported.
104e0 0a 28 46 6f 72 20 70 72 65 73 65 6e 74 61 74 69  .(For presentati
104f0 6f 6e 20 70 75 72 70 6f 73 65 73 2c 20 73 69 6d  on purposes, sim
10500 70 6c 65 20 66 75 6e 63 74 69 6f 6e 73 20 61 72  ple functions ar
10510 65 20 66 75 72 74 68 65 72 20 73 75 62 64 69 76  e further subdiv
10520 69 64 65 64 20 69 6e 74 6f 0a 5b 63 6f 72 65 66  ided into.[coref
10530 75 6e 63 20 7c 20 63 6f 72 65 20 66 75 6e 63 74  unc | core funct
10540 69 6f 6e 73 5d 20 61 6e 64 20 5b 64 61 74 65 66  ions] and [datef
10550 75 6e 63 20 7c 20 64 61 74 65 2d 74 69 6d 65 20  unc | date-time 
10560 66 75 6e 63 74 69 6f 6e 73 5d 2e 29 0a 5e 41 20  functions].).^A 
10570 73 69 6d 70 6c 65 20 66 75 6e 63 74 69 6f 6e 20  simple function 
10580 63 61 6e 20 62 65 20 75 73 65 64 20 69 6e 20 61  can be used in a
10590 6e 79 20 65 78 70 72 65 73 73 69 6f 6e 2e 20 20  ny expression.  
105a0 5e 53 69 6d 70 6c 65 20 66 75 6e 63 74 69 6f 6e  ^Simple function
105b0 73 20 72 65 74 75 72 6e 0a 61 20 72 65 73 75 6c  s return.a resul
105c0 74 20 69 6d 6d 65 64 69 61 74 65 6c 79 20 62 61  t immediately ba
105d0 73 65 64 20 6f 6e 20 74 68 65 69 72 20 69 6e 70  sed on their inp
105e0 75 74 73 2e 20 20 5e 41 67 67 72 65 67 61 74 65  uts.  ^Aggregate
105f0 20 66 75 6e 63 74 69 6f 6e 73 0a 6d 61 79 20 6f   functions.may o
10600 6e 6c 79 20 62 65 20 75 73 65 64 20 69 6e 20 61  nly be used in a
10610 20 53 45 4c 45 43 54 20 73 74 61 74 65 6d 65 6e   SELECT statemen
10620 74 2e 20 20 5e 41 67 67 72 65 67 61 74 65 20 66  t.  ^Aggregate f
10630 75 6e 63 74 69 6f 6e 73 20 63 6f 6d 70 75 74 65  unctions compute
10640 0a 74 68 65 69 72 20 72 65 73 75 6c 74 20 61 63  .their result ac
10650 72 6f 73 73 20 61 6c 6c 20 72 6f 77 73 20 6f 66  ross all rows of
10660 20 74 68 65 20 72 65 73 75 6c 74 20 73 65 74 2e   the result set.
10670 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23  </p>..<tcl>.####
10680 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
10690 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
106a0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
106b0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
106c0 23 23 23 23 23 23 23 23 23 23 0a 53 65 63 74 69  ##########.Secti
106d0 6f 6e 20 7b 43 6f 72 65 20 46 75 6e 63 74 69 6f  on {Core Functio
106e0 6e 73 7d 20 63 6f 72 65 66 75 6e 63 20 7b 2a 63  ns} corefunc {*c
106f0 6f 72 65 66 75 6e 63 7d 0a 70 72 6f 63 20 66 75  orefunc}.proc fu
10700 6e 63 64 65 66 20 7b 73 79 6e 74 61 78 20 6b 65  ncdef {syntax ke
10710 79 77 6f 72 64 73 20 64 65 73 63 7d 20 7b 0a 20  ywords desc} {. 
10720 20 68 64 5f 70 75 74 73 20 7b 3c 74 72 3e 7d 0a   hd_puts {<tr>}.
10730 20 20 72 65 67 73 75 62 20 2d 61 6c 6c 20 7b 5c    regsub -all {\
10740 73 2b 7d 20 5b 73 74 72 69 6e 67 20 74 72 69 6d  s+} [string trim
10750 20 24 73 79 6e 74 61 78 5d 20 7b 3c 62 72 3e 3c   $syntax] {<br><
10760 2f 62 72 3e 7d 20 73 79 6e 74 61 78 0a 20 20 72  /br>} syntax.  r
10770 65 67 73 75 62 20 2d 61 6c 6c 20 7b 5c 28 28 5b  egsub -all {\(([
10780 5e 2a 29 5d 2b 29 5c 29 7d 20 24 73 79 6e 74 61  ^*)]+)\)} $synta
10790 78 20 7b 28 3c 69 3e 5c 31 3c 2f 69 3e 29 7d 20  x {(<i>\1</i>)} 
107a0 73 79 6e 74 61 78 0a 20 20 72 65 67 73 75 62 20  syntax.  regsub 
107b0 2d 61 6c 6c 20 7b 2c 7d 20 24 73 79 6e 74 61 78  -all {,} $syntax
107c0 20 7b 3c 2f 69 3e 2c 3c 69 3e 7d 20 73 79 6e 74   {</i>,<i>} synt
107d0 61 78 0a 20 20 72 65 67 73 75 62 20 2d 61 6c 6c  ax.  regsub -all
107e0 20 7b 3c 69 3e 5c 2e 5c 2e 5c 2e 3c 2f 69 3e 7d   {<i>\.\.\.</i>}
107f0 20 24 73 79 6e 74 61 78 20 7b 2e 2e 2e 7d 20 73   $syntax {...} s
10800 79 6e 74 61 78 0a 20 20 68 64 5f 70 75 74 73 20  yntax.  hd_puts 
10810 22 3c 74 64 20 76 61 6c 69 67 6e 3d 5c 22 74 6f  "<td valign=\"to
10820 70 5c 22 20 61 6c 69 67 6e 3d 5c 22 72 69 67 68  p\" align=\"righ
10830 74 5c 22 20 77 69 64 74 68 3d 5c 22 31 32 30 5c  t\" width=\"120\
10840 22 3e 22 0a 20 20 69 66 20 7b 5b 6c 6c 65 6e 67  ">".  if {[lleng
10850 74 68 20 24 6b 65 79 77 6f 72 64 73 5d 3d 3d 30  th $keywords]==0
10860 7d 20 7b 0a 20 20 20 20 72 65 67 65 78 70 20 7b  } {.    regexp {
10870 5b 61 2d 7a 5f 5d 2b 7d 20 24 73 79 6e 74 61 78  [a-z_]+} $syntax
10880 20 6e 61 6d 65 0a 20 20 20 20 68 64 5f 66 72 61   name.    hd_fra
10890 67 6d 65 6e 74 20 24 6e 61 6d 65 20 2a 24 6e 61  gment $name *$na
108a0 6d 65 20 22 24 7b 6e 61 6d 65 7d 28 29 20 53 51  me "${name}() SQ
108b0 4c 20 66 75 6e 63 74 69 6f 6e 22 0a 20 20 7d 20  L function".  } 
108c0 65 6c 73 65 20 7b 0a 20 20 20 20 73 65 74 20 66  else {.    set f
108d0 72 61 67 6e 61 6d 65 20 5b 6c 69 6e 64 65 78 20  ragname [lindex 
108e0 24 6b 65 79 77 6f 72 64 73 20 30 5d 0a 20 20 20  $keywords 0].   
108f0 20 72 65 67 73 75 62 20 2d 61 6c 6c 20 7b 5b 5e   regsub -all {[^
10900 61 2d 7a 5d 7d 20 24 66 72 61 67 6e 61 6d 65 20  a-z]} $fragname 
10910 7b 7d 20 66 72 61 67 6e 61 6d 65 0a 20 20 20 20  {} fragname.    
10920 68 64 5f 66 72 61 67 6d 65 6e 74 20 24 66 72 61  hd_fragment $fra
10930 67 6e 61 6d 65 0a 20 20 20 20 65 76 61 6c 20 68  gname.    eval h
10940 64 5f 6b 65 79 77 6f 72 64 73 20 5b 73 74 72 69  d_keywords [stri
10950 6e 67 20 6d 61 70 20 7b 5c 6e 20 7b 20 7d 7d 20  ng map {\n { }} 
10960 24 6b 65 79 77 6f 72 64 73 5d 0a 20 20 7d 0a 20  $keywords].  }. 
10970 20 68 64 5f 70 75 74 73 20 22 24 73 79 6e 74 61   hd_puts "$synta
10980 78 3c 2f 74 64 3e 22 0a 20 20 68 64 5f 70 75 74  x</td>".  hd_put
10990 73 20 7b 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  s {<td valign="t
109a0 6f 70 22 3e 7d 0a 20 20 68 64 5f 72 65 73 6f 6c  op">}.  hd_resol
109b0 76 65 20 24 64 65 73 63 0a 20 20 68 64 5f 70 75  ve $desc.  hd_pu
109c0 74 73 20 7b 3c 2f 74 64 3e 3c 2f 74 72 3e 7d 0a  ts {</td></tr>}.
109d0 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 65  }.</tcl>..<p>The
109e0 20 63 6f 72 65 20 66 75 6e 63 74 69 6f 6e 73 20   core functions 
109f0 73 68 6f 77 6e 20 62 65 6c 6f 77 20 61 72 65 20  shown below are 
10a00 61 76 61 69 6c 61 62 6c 65 20 62 79 20 64 65 66  available by def
10a10 61 75 6c 74 2e 20 0a 5b 64 61 74 65 66 75 6e 63  ault. .[datefunc
10a20 20 7c 20 44 61 74 65 20 26 61 6d 70 3b 20 54 69   | Date &amp; Ti
10a30 6d 65 20 66 75 6e 63 74 69 6f 6e 73 5d 20 61 6e  me functions] an
10a40 64 0a 5b 61 67 67 66 75 6e 63 20 7c 20 61 67 67  d.[aggfunc | agg
10a50 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 73  regate functions
10a60 5d 20 61 72 65 20 64 6f 63 75 6d 65 6e 74 65 64  ] are documented
10a70 20 73 65 70 61 72 61 74 65 6c 79 2e 20 20 41 6e   separately.  An
10a80 0a 61 70 70 6c 69 63 61 74 69 6f 6e 20 6d 61 79  .application may
10a90 20 64 65 66 69 6e 65 20 61 64 64 69 74 69 6f 6e   define addition
10aa0 61 6c 0a 66 75 6e 63 74 69 6f 6e 73 20 77 72 69  al.functions wri
10ab0 74 74 65 6e 20 69 6e 20 43 20 61 6e 64 20 61 64  tten in C and ad
10ac0 64 65 64 20 74 6f 20 74 68 65 20 64 61 74 61 62  ded to the datab
10ad0 61 73 65 20 65 6e 67 69 6e 65 20 75 73 69 6e 67  ase engine using
10ae0 0a 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 63 72  .the [sqlite3_cr
10af0 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 28 29 5d  eate_function()]
10b00 20 41 50 49 2e 3c 2f 70 3e 0a 0a 3c 74 61 62 6c   API.</p>..<tabl
10b10 65 20 62 6f 72 64 65 72 3d 30 20 63 65 6c 6c 70  e border=0 cellp
10b20 61 64 64 69 6e 67 3d 31 30 3e 0a 3c 74 63 6c 3e  adding=10>.<tcl>
10b30 0a 66 75 6e 63 64 65 66 20 7b 61 62 73 28 58 29  .funcdef {abs(X)
10b40 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20 61 62  } {} {.  ^The ab
10b50 73 28 58 29 20 66 75 6e 63 74 69 6f 6e 20 72 65  s(X) function re
10b60 74 75 72 6e 73 20 74 68 65 20 61 62 73 6f 6c 75  turns the absolu
10b70 74 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20  te value of the 
10b80 6e 75 6d 65 72 69 63 0a 20 20 61 72 67 75 6d 65  numeric.  argume
10b90 6e 74 20 58 2e 20 20 5e 41 62 73 28 58 29 20 72  nt X.  ^Abs(X) r
10ba0 65 74 75 72 6e 73 20 4e 55 4c 4c 20 69 66 20 58  eturns NULL if X
10bb0 20 69 73 20 4e 55 4c 4c 2e 20 0a 20 20 5e 28 41   is NULL. .  ^(A
10bc0 62 73 28 58 29 20 72 65 74 75 72 6e 20 30 2e 30  bs(X) return 0.0
10bd0 20 69 66 20 58 20 69 73 20 61 20 73 74 72 69 6e   if X is a strin
10be0 67 20 6f 72 20 62 6c 6f 62 0a 20 20 74 68 61 74  g or blob.  that
10bf0 20 63 61 6e 6e 6f 74 20 62 65 20 63 6f 6e 76 65   cannot be conve
10c00 72 74 65 64 20 74 6f 20 61 20 6e 75 6d 65 72 69  rted to a numeri
10c10 63 20 76 61 6c 75 65 2e 29 5e 20 20 5e 49 66 20  c value.)^  ^If 
10c20 58 20 69 73 20 74 68 65 20 0a 20 20 69 6e 74 65  X is the .  inte
10c30 67 65 72 20 2d 39 32 32 33 33 37 32 30 33 36 38  ger -92233720368
10c40 35 34 37 37 35 38 30 37 20 74 68 65 6e 20 61 62  54775807 then ab
10c50 73 28 58 29 20 74 68 72 6f 77 73 20 61 6e 20 69  s(X) throws an i
10c60 6e 74 65 67 65 72 20 6f 76 65 72 66 6c 6f 77 0a  nteger overflow.
10c70 20 20 65 72 72 6f 72 20 73 69 6e 63 65 20 74 68    error since th
10c80 65 72 65 20 69 73 20 6e 6f 20 65 71 75 69 76 61  ere is no equiva
10c90 6c 65 6e 74 20 70 6f 73 69 74 69 76 65 20 36 34  lent positive 64
10ca0 2d 62 69 74 20 74 77 6f 20 63 6f 6d 70 6c 65 6d  -bit two complem
10cb0 65 6e 74 20 76 61 6c 75 65 2e 0a 7d 0a 0a 66 75  ent value..}..fu
10cc0 6e 63 64 65 66 20 7b 63 68 61 6e 67 65 73 28 29  ncdef {changes()
10cd0 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20 63 68  } {} {.  ^The ch
10ce0 61 6e 67 65 73 28 29 20 66 75 6e 63 74 69 6f 6e  anges() function
10cf0 20 72 65 74 75 72 6e 73 20 74 68 65 20 6e 75 6d   returns the num
10d00 62 65 72 20 6f 66 20 64 61 74 61 62 61 73 65 20  ber of database 
10d10 72 6f 77 73 20 74 68 61 74 20 77 65 72 65 20 63  rows that were c
10d20 68 61 6e 67 65 64 0a 20 20 6f 72 20 69 6e 73 65  hanged.  or inse
10d30 72 74 65 64 20 6f 72 20 64 65 6c 65 74 65 64 20  rted or deleted 
10d40 62 79 20 74 68 65 20 6d 6f 73 74 20 72 65 63 65  by the most rece
10d50 6e 74 6c 79 20 63 6f 6d 70 6c 65 74 65 64 20 49  ntly completed I
10d60 4e 53 45 52 54 2c 20 44 45 4c 45 54 45 2c 0a 20  NSERT, DELETE,. 
10d70 20 6f 72 20 55 50 44 41 54 45 20 73 74 61 74 65   or UPDATE state
10d80 6d 65 6e 74 2c 20 65 78 63 6c 75 73 69 76 65 20  ment, exclusive 
10d90 6f 66 20 73 74 61 74 65 6d 65 6e 74 73 20 69 6e  of statements in
10da0 20 6c 6f 77 65 72 2d 6c 65 76 65 6c 20 74 72 69   lower-level tri
10db0 67 67 65 72 73 2e 0a 20 20 5e 54 68 65 20 63 68  ggers..  ^The ch
10dc0 61 6e 67 65 73 28 29 20 53 51 4c 20 66 75 6e 63  anges() SQL func
10dd0 74 69 6f 6e 20 69 73 20 61 20 77 72 61 70 70 65  tion is a wrappe
10de0 72 20 61 72 6f 75 6e 64 20 74 68 65 20 5b 73 71  r around the [sq
10df0 6c 69 74 65 33 5f 63 68 61 6e 67 65 73 28 29 5d  lite3_changes()]
10e00 0a 20 20 43 2f 43 2b 2b 20 66 75 6e 63 74 69 6f  .  C/C++ functio
10e10 6e 20 61 6e 64 20 68 65 6e 63 65 20 66 6f 6c 6c  n and hence foll
10e20 6f 77 73 20 74 68 65 20 73 61 6d 65 20 72 75 6c  ows the same rul
10e30 65 73 20 66 6f 72 20 63 6f 75 6e 74 69 6e 67 20  es for counting 
10e40 63 68 61 6e 67 65 73 2e 0a 7d 0a 0a 66 75 6e 63  changes..}..func
10e50 64 65 66 20 7b 63 6f 61 6c 65 73 63 65 28 58 2c  def {coalesce(X,
10e60 59 2c 2e 2e 2e 29 7d 20 7b 7d 20 7b 0a 20 20 5e  Y,...)} {} {.  ^
10e70 54 68 65 20 63 6f 61 6c 65 73 63 65 28 29 20 66  The coalesce() f
10e80 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20  unction returns 
10e90 61 20 63 6f 70 79 20 6f 66 20 69 74 73 20 66 69  a copy of its fi
10ea0 72 73 74 20 6e 6f 6e 2d 4e 55 4c 4c 20 61 72 67  rst non-NULL arg
10eb0 75 6d 65 6e 74 2c 20 6f 72 0a 20 20 4e 55 4c 4c  ument, or.  NULL
10ec0 20 69 66 20 61 6c 6c 20 61 72 67 75 6d 65 6e 74   if all argument
10ed0 73 20 61 72 65 20 4e 55 4c 4c 2e 20 20 5e 43 6f  s are NULL.  ^Co
10ee0 61 6c 65 73 63 65 28 29 20 6d 75 73 74 20 62 65  alesce() must be
10ef0 20 61 74 20 6c 65 61 73 74 20 0a 20 20 32 20 61   at least .  2 a
10f00 72 67 75 6d 65 6e 74 73 2e 0a 7d 0a 0a 66 75 6e  rguments..}..fun
10f10 63 64 65 66 20 7b 67 6c 6f 62 28 58 2c 59 29 7d  cdef {glob(X,Y)}
10f20 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20 67 6c 6f   {} {.  ^The glo
10f30 62 28 58 2c 59 29 20 66 75 6e 63 74 69 6f 6e 20  b(X,Y) function 
10f40 69 73 20 65 71 75 69 76 61 6c 65 6e 74 20 74 6f  is equivalent to
10f50 20 74 68 65 0a 20 20 65 78 70 72 65 73 73 69 6f   the.  expressio
10f60 6e 20 22 3c 62 3e 59 20 47 4c 4f 42 20 58 3c 2f  n "<b>Y GLOB X</
10f70 62 3e 22 2e 0a 20 20 4e 6f 74 65 20 74 68 61 74  b>"..  Note that
10f80 20 74 68 65 20 58 20 61 6e 64 20 59 20 61 72 67   the X and Y arg
10f90 75 6d 65 6e 74 73 20 61 72 65 20 72 65 76 65 72  uments are rever
10fa0 73 65 64 20 69 6e 20 74 68 65 20 67 6c 6f 62 28  sed in the glob(
10fb0 29 20 66 75 6e 63 74 69 6f 6e 0a 20 20 72 65 6c  ) function.  rel
10fc0 61 74 69 76 65 20 74 6f 20 74 68 65 20 69 6e 66  ative to the inf
10fd0 69 78 20 5b 47 4c 4f 42 5d 20 6f 70 65 72 61 74  ix [GLOB] operat
10fe0 6f 72 2e 0a 20 20 5e 49 66 20 74 68 65 20 5b 73  or..  ^If the [s
10ff0 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 66 75  qlite3_create_fu
11000 6e 63 74 69 6f 6e 28 29 5d 20 69 6e 74 65 72 66  nction()] interf
11010 61 63 65 20 69 73 20 75 73 65 64 20 74 6f 0a 20  ace is used to. 
11020 20 6f 76 65 72 72 69 64 65 20 74 68 65 20 67 6c   override the gl
11030 6f 62 28 58 2c 59 29 20 66 75 6e 63 74 69 6f 6e  ob(X,Y) function
11040 20 77 69 74 68 20 61 6e 20 61 6c 74 65 72 6e 61   with an alterna
11050 74 69 76 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74  tive implementat
11060 69 6f 6e 20 74 68 65 6e 0a 20 20 74 68 65 20 5b  ion then.  the [
11070 47 4c 4f 42 5d 20 6f 70 65 72 61 74 6f 72 20 77  GLOB] operator w
11080 69 6c 6c 20 69 6e 76 6f 6b 65 20 74 68 65 20 61  ill invoke the a
11090 6c 74 65 72 6e 61 74 69 76 65 20 69 6d 70 6c 65  lternative imple
110a0 6d 65 6e 74 61 74 69 6f 6e 2e 0a 7d 0a 0a 66 75  mentation..}..fu
110b0 6e 63 64 65 66 20 7b 69 66 6e 75 6c 6c 28 58 2c  ncdef {ifnull(X,
110c0 59 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20  Y)} {} {.  ^The 
110d0 69 66 6e 75 6c 6c 28 29 20 66 75 6e 63 74 69 6f  ifnull() functio
110e0 6e 20 72 65 74 75 72 6e 73 20 61 20 63 6f 70 79  n returns a copy
110f0 20 6f 66 20 69 74 73 20 66 69 72 73 74 20 6e 6f   of its first no
11100 6e 2d 4e 55 4c 4c 20 61 72 67 75 6d 65 6e 74 2c  n-NULL argument,
11110 20 6f 72 0a 20 20 4e 55 4c 4c 20 69 66 20 62 6f   or.  NULL if bo
11120 74 68 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65  th arguments are
11130 20 4e 55 4c 4c 2e 20 20 5e 49 66 6e 75 6c 6c 28   NULL.  ^Ifnull(
11140 29 20 6d 75 73 74 20 68 61 76 65 20 65 78 61 63  ) must have exac
11150 74 6c 79 20 32 20 61 72 67 75 6d 65 6e 74 73 2e  tly 2 arguments.
11160 0a 20 20 5e 54 68 65 20 69 66 6e 75 6c 6c 28 29  .  ^The ifnull()
11170 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 65 71 75   function is equ
11180 69 76 61 6c 65 6e 74 20 74 6f 20 5b 63 6f 61 6c  ivalent to [coal
11190 65 73 63 65 28 29 5d 20 77 69 74 68 20 74 77 6f  esce()] with two
111a0 20 61 72 67 75 6d 65 6e 74 73 2e 0a 7d 0a 0a 66   arguments..}..f
111b0 75 6e 63 64 65 66 20 7b 68 65 78 28 58 29 7d 20  uncdef {hex(X)} 
111c0 7b 7d 20 7b 0a 20 20 5e 54 68 65 20 68 65 78 28  {} {.  ^The hex(
111d0 29 20 66 75 6e 63 74 69 6f 6e 20 69 6e 74 65 72  ) function inter
111e0 70 72 65 74 73 20 69 74 73 20 61 72 67 75 6d 65  prets its argume
111f0 6e 74 20 61 73 20 61 20 42 4c 4f 42 20 61 6e 64  nt as a BLOB and
11200 20 72 65 74 75 72 6e 73 0a 20 20 61 20 73 74 72   returns.  a str
11210 69 6e 67 20 77 68 69 63 68 20 69 73 20 74 68 65  ing which is the
11220 20 75 70 70 65 72 2d 63 61 73 65 20 68 65 78 61   upper-case hexa
11230 64 65 63 69 6d 61 6c 20 72 65 6e 64 65 72 69 6e  decimal renderin
11240 67 20 6f 66 20 74 68 65 20 63 6f 6e 74 65 6e 74  g of the content
11250 20 6f 66 0a 20 20 74 68 61 74 20 62 6c 6f 62 2e   of.  that blob.
11260 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 6c 61 73  .}..funcdef {las
11270 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 28 29  t_insert_rowid()
11280 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20 6c 61  } {} {.  ^The la
11290 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 28  st_insert_rowid(
112a0 29 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72  ) function retur
112b0 6e 73 20 74 68 65 20 5b 52 4f 57 49 44 5d 0a 20  ns the [ROWID]. 
112c0 20 6f 66 20 74 68 65 20 6c 61 73 74 20 72 6f 77   of the last row
112d0 20 69 6e 73 65 72 74 20 66 72 6f 6d 20 74 68 65   insert from the
112e0 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
112f0 74 69 6f 6e 20 77 68 69 63 68 20 69 6e 76 6f 6b  tion which invok
11300 65 64 20 74 68 65 0a 20 20 66 75 6e 63 74 69 6f  ed the.  functio
11310 6e 2e 0a 20 20 5e 54 68 65 20 6c 61 73 74 5f 69  n..  ^The last_i
11320 6e 73 65 72 74 5f 72 6f 77 69 64 28 29 20 53 51  nsert_rowid() SQ
11330 4c 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 61 20  L function is a 
11340 77 72 61 70 70 65 72 20 61 72 6f 75 6e 64 20 74  wrapper around t
11350 68 65 0a 20 20 5b 73 71 6c 69 74 65 33 5f 6c 61  he.  [sqlite3_la
11360 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 28  st_insert_rowid(
11370 29 5d 20 43 2f 43 2b 2b 20 69 6e 74 65 72 66 61  )] C/C++ interfa
11380 63 65 20 66 75 6e 63 74 69 6f 6e 2e 0a 7d 0a 0a  ce function..}..
11390 66 75 6e 63 64 65 66 20 7b 6c 65 6e 67 74 68 28  funcdef {length(
113a0 58 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20  X)} {} {.  ^The 
113b0 6c 65 6e 67 74 68 28 58 29 20 66 75 6e 63 74 69  length(X) functi
113c0 6f 6e 20 72 65 74 75 72 6e 73 20 74 68 65 20 6c  on returns the l
113d0 65 6e 67 74 68 20 6f 66 20 58 20 69 6e 20 0a 20  ength of X in . 
113e0 20 63 68 61 72 61 63 74 65 72 73 20 69 66 20 58   characters if X
113f0 20 69 73 20 61 20 73 74 72 69 6e 67 2c 20 6f 72   is a string, or
11400 20 69 6e 20 62 79 74 65 73 20 69 66 20 58 20 69   in bytes if X i
11410 73 20 61 20 62 6c 6f 62 2e 0a 20 20 5e 49 66 20  s a blob..  ^If 
11420 58 20 69 73 20 4e 55 4c 4c 20 74 68 65 6e 20 6c  X is NULL then l
11430 65 6e 67 74 68 28 58 29 20 69 73 20 4e 55 4c 4c  ength(X) is NULL
11440 2e 0a 20 20 5e 49 66 20 58 20 69 73 20 6e 75 6d  ..  ^If X is num
11450 65 72 69 63 20 74 68 65 6e 20 6c 65 6e 67 74 68  eric then length
11460 28 58 29 20 72 65 74 75 72 6e 73 20 74 68 65 20  (X) returns the 
11470 6c 65 6e 67 74 68 20 6f 66 20 61 20 73 74 72 69  length of a stri
11480 6e 67 0a 20 20 72 65 70 72 65 73 65 6e 74 61 74  ng.  representat
11490 69 6f 6e 20 6f 66 20 58 2e 0a 7d 0a 0a 66 75 6e  ion of X..}..fun
114a0 63 64 65 66 20 7b 6c 69 6b 65 28 58 2c 59 29 20  cdef {like(X,Y) 
114b0 6c 69 6b 65 28 58 2c 59 2c 5a 29 7d 20 7b 7d 20  like(X,Y,Z)} {} 
114c0 7b 0a 20 20 5e 54 68 65 20 6c 69 6b 65 28 29 20  {.  ^The like() 
114d0 66 75 6e 63 74 69 6f 6e 20 69 73 20 75 73 65 64  function is used
114e0 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 74 68   to implement th
114f0 65 0a 20 20 22 3c 62 3e 59 20 4c 49 4b 45 20 58  e.  "<b>Y LIKE X
11500 20 26 23 39 31 3b 45 53 43 41 50 45 20 5a 26 23   &#91;ESCAPE Z&#
11510 39 33 3b 3c 2f 62 3e 22 20 65 78 70 72 65 73 73  93;</b>" express
11520 69 6f 6e 2e 20 0a 20 20 5e 49 66 20 74 68 65 20  ion. .  ^If the 
11530 6f 70 74 69 6f 6e 61 6c 20 45 53 43 41 50 45 20  optional ESCAPE 
11540 63 6c 61 75 73 65 20 69 73 20 70 72 65 73 65 6e  clause is presen
11550 74 2c 20 74 68 65 6e 20 74 68 65 0a 20 20 6c 69  t, then the.  li
11560 6b 65 28 29 20 66 75 6e 63 74 69 6f 6e 20 69 73  ke() function is
11570 20 69 6e 76 6f 6b 65 64 20 77 69 74 68 20 74 68   invoked with th
11580 72 65 65 20 61 72 67 75 6d 65 6e 74 73 2e 20 20  ree arguments.  
11590 5e 4f 74 68 65 72 77 69 73 65 2c 20 69 74 20 69  ^Otherwise, it i
115a0 73 0a 20 20 69 6e 76 6f 6b 65 64 20 77 69 74 68  s.  invoked with
115b0 20 74 77 6f 20 61 72 67 75 6d 65 6e 74 73 20 6f   two arguments o
115c0 6e 6c 79 2e 20 4e 6f 74 65 20 74 68 61 74 20 74  nly. Note that t
115d0 68 65 20 58 20 61 6e 64 20 59 20 70 61 72 61 6d  he X and Y param
115e0 65 74 65 72 73 20 61 72 65 0a 20 20 72 65 76 65  eters are.  reve
115f0 72 73 65 64 20 69 6e 20 74 68 65 20 6c 69 6b 65  rsed in the like
11600 28 29 20 66 75 6e 63 74 69 6f 6e 20 72 65 6c 61  () function rela
11610 74 69 76 65 20 74 6f 20 74 68 65 20 69 6e 66 69  tive to the infi
11620 78 20 5b 4c 49 4b 45 5d 20 6f 70 65 72 61 74 6f  x [LIKE] operato
11630 72 2e 0a 20 20 5e 54 68 65 20 5b 73 71 6c 69 74  r..  ^The [sqlit
11640 65 33 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69  e3_create_functi
11650 6f 6e 28 29 5d 20 69 6e 74 65 72 66 61 63 65 20  on()] interface 
11660 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 6f  can be used to o
11670 76 65 72 72 69 64 65 20 74 68 65 0a 20 20 6c 69  verride the.  li
11680 6b 65 28 29 20 66 75 6e 63 74 69 6f 6e 20 61 6e  ke() function an
11690 64 20 74 68 65 72 65 62 79 20 63 68 61 6e 67 65  d thereby change
116a0 20 74 68 65 20 6f 70 65 72 61 74 69 6f 6e 20 6f   the operation o
116b0 66 20 74 68 65 0a 20 20 5b 4c 49 4b 45 5d 20 6f  f the.  [LIKE] o
116c0 70 65 72 61 74 6f 72 2e 20 20 57 68 65 6e 20 6f  perator.  When o
116d0 76 65 72 72 69 64 69 6e 67 20 74 68 65 20 6c 69  verriding the li
116e0 6b 65 28 29 20 66 75 6e 63 74 69 6f 6e 2c 20 69  ke() function, i
116f0 74 20 6d 61 79 20 62 65 20 69 6d 70 6f 72 74 61  t may be importa
11700 6e 74 0a 20 20 74 6f 20 6f 76 65 72 72 69 64 65  nt.  to override
11710 20 62 6f 74 68 20 74 68 65 20 74 77 6f 20 61 6e   both the two an
11720 64 20 74 68 72 65 65 20 61 72 67 75 6d 65 6e 74  d three argument
11730 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 74 68 65   versions of the
11740 20 6c 69 6b 65 28 29 20 0a 20 20 66 75 6e 63 74   like() .  funct
11750 69 6f 6e 2e 20 4f 74 68 65 72 77 69 73 65 2c 20  ion. Otherwise, 
11760 64 69 66 66 65 72 65 6e 74 20 63 6f 64 65 20 6d  different code m
11770 61 79 20 62 65 20 63 61 6c 6c 65 64 20 74 6f 20  ay be called to 
11780 69 6d 70 6c 65 6d 65 6e 74 20 74 68 65 0a 20 20  implement the.  
11790 5b 4c 49 4b 45 5d 20 6f 70 65 72 61 74 6f 72 20  [LIKE] operator 
117a0 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 77 68 65  depending on whe
117b0 74 68 65 72 20 6f 72 20 6e 6f 74 20 61 6e 20 45  ther or not an E
117c0 53 43 41 50 45 20 63 6c 61 75 73 65 20 77 61 73  SCAPE clause was
117d0 20 0a 20 20 73 70 65 63 69 66 69 65 64 2e 0a 7d   .  specified..}
117e0 0a 0a 66 75 6e 63 64 65 66 20 7b 6c 6f 61 64 5f  ..funcdef {load_
117f0 65 78 74 65 6e 73 69 6f 6e 28 58 29 20 6c 6f 61  extension(X) loa
11800 64 5f 65 78 74 65 6e 73 69 6f 6e 28 58 2c 59 29  d_extension(X,Y)
11810 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20 6c 6f  } {} {.  ^The lo
11820 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28 58 2c 59  ad_extension(X,Y
11830 29 20 66 75 6e 63 74 69 6f 6e 20 6c 6f 61 64 73  ) function loads
11840 20 53 51 4c 69 74 65 20 65 78 74 65 6e 73 69 6f   SQLite extensio
11850 6e 73 20 6f 75 74 20 6f 66 20 74 68 65 20 73 68  ns out of the sh
11860 61 72 65 64 0a 20 20 6c 69 62 72 61 72 79 20 66  ared.  library f
11870 69 6c 65 20 6e 61 6d 65 64 20 58 20 75 73 69 6e  ile named X usin
11880 67 20 74 68 65 20 65 6e 74 72 79 20 70 6f 69 6e  g the entry poin
11890 74 20 59 2e 20 20 5e 54 68 65 20 72 65 73 75 6c  t Y.  ^The resul
118a0 74 20 6f 66 20 6c 6f 61 64 5f 65 78 74 65 6e 73  t of load_extens
118b0 69 6f 6e 28 29 0a 20 20 69 73 20 61 6c 77 61 79  ion().  is alway
118c0 73 20 61 20 4e 55 4c 4c 2e 20 20 5e 49 66 20 59  s a NULL.  ^If Y
118d0 20 69 73 20 6f 6d 69 74 74 65 64 20 74 68 65 6e   is omitted then
118e0 20 74 68 65 20 64 65 66 61 75 6c 74 20 65 6e 74   the default ent
118f0 72 79 20 70 6f 69 6e 74 0a 20 20 6f 66 20 3c 62  ry point.  of <b
11900 3e 73 71 6c 69 74 65 33 5f 65 78 74 65 6e 73 69  >sqlite3_extensi
11910 6f 6e 5f 69 6e 69 74 3c 2f 62 3e 20 69 73 20 75  on_init</b> is u
11920 73 65 64 2e 20 20 5e 54 68 65 20 6c 6f 61 64 5f  sed.  ^The load_
11930 65 78 74 65 6e 73 69 6f 6e 28 29 20 66 75 6e 63  extension() func
11940 74 69 6f 6e 0a 20 20 72 61 69 73 65 73 20 61 6e  tion.  raises an
11950 20 65 78 63 65 70 74 69 6f 6e 20 69 66 20 74 68   exception if th
11960 65 20 65 78 74 65 6e 73 69 6f 6e 20 66 61 69 6c  e extension fail
11970 73 20 74 6f 20 6c 6f 61 64 20 6f 72 20 69 6e 69  s to load or ini
11980 74 69 61 6c 69 7a 65 20 63 6f 72 72 65 63 74 6c  tialize correctl
11990 79 2e 0a 0a 20 20 3c 70 3e 5e 54 68 65 20 6c 6f  y...  <p>^The lo
119a0 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28 29 20 66  ad_extension() f
119b0 75 6e 63 74 69 6f 6e 20 77 69 6c 6c 20 66 61 69  unction will fai
119c0 6c 20 69 66 20 74 68 65 20 65 78 74 65 6e 73 69  l if the extensi
119d0 6f 6e 20 61 74 74 65 6d 70 74 73 20 74 6f 20 0a  on attempts to .
119e0 20 20 6d 6f 64 69 66 79 20 6f 72 20 64 65 6c 65    modify or dele
119f0 74 65 20 61 20 53 51 4c 20 66 75 6e 63 74 69 6f  te a SQL functio
11a00 6e 20 6f 72 20 63 6f 6c 6c 61 74 69 6e 67 20 73  n or collating s
11a10 65 71 75 65 6e 63 65 2e 20 20 5e 54 68 65 0a 20  equence.  ^The. 
11a20 20 65 78 74 65 6e 73 69 6f 6e 20 63 61 6e 20 61   extension can a
11a30 64 64 20 6e 65 77 20 66 75 6e 63 74 69 6f 6e 73  dd new functions
11a40 20 6f 72 20 63 6f 6c 6c 61 74 69 6e 67 20 73 65   or collating se
11a50 71 75 65 6e 63 65 73 2c 20 62 75 74 20 63 61 6e  quences, but can
11a60 6e 6f 74 0a 20 20 6d 6f 64 69 66 79 20 6f 72 20  not.  modify or 
11a70 64 65 6c 65 74 65 20 65 78 69 73 74 69 6e 67 20  delete existing 
11a80 66 75 6e 63 74 69 6f 6e 73 20 6f 72 20 63 6f 6c  functions or col
11a90 6c 61 74 69 6e 67 20 73 65 71 75 65 6e 63 65 73  lating sequences
11aa0 20 62 65 63 61 75 73 65 0a 20 20 74 68 6f 73 65   because.  those
11ab0 20 66 75 6e 63 74 69 6f 6e 73 20 61 6e 64 2f 6f   functions and/o
11ac0 72 20 63 6f 6c 6c 61 74 69 6e 67 20 73 65 71 75  r collating sequ
11ad0 65 6e 63 65 73 20 6d 69 67 68 74 20 62 65 20 75  ences might be u
11ae0 73 65 64 20 65 6c 73 65 77 68 65 72 65 0a 20 20  sed elsewhere.  
11af0 69 6e 20 74 68 65 20 63 75 72 72 65 6e 74 6c 79  in the currently
11b00 20 72 75 6e 6e 69 6e 67 20 53 51 4c 20 73 74 61   running SQL sta
11b10 74 65 6d 65 6e 74 2e 20 20 54 6f 20 6c 6f 61 64  tement.  To load
11b20 20 61 6e 20 65 78 74 65 6e 73 69 6f 6e 20 74 68   an extension th
11b30 61 74 0a 20 20 63 68 61 6e 67 65 73 20 6f 72 20  at.  changes or 
11b40 64 65 6c 65 74 65 73 20 66 75 6e 63 74 69 6f 6e  deletes function
11b50 73 20 6f 72 20 63 6f 6c 6c 61 74 69 6e 67 20 73  s or collating s
11b60 65 71 75 65 6e 63 65 73 2c 20 75 73 65 20 74 68  equences, use th
11b70 65 0a 20 20 5b 73 71 6c 69 74 65 33 5f 6c 6f 61  e.  [sqlite3_loa
11b80 64 5f 65 78 74 65 6e 73 69 6f 6e 28 29 5d 20 43  d_extension()] C
11b90 2d 6c 61 6e 67 75 61 67 65 20 41 50 49 2e 3c 2f  -language API.</
11ba0 70 3e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 6c  p>.}..funcdef {l
11bb0 6f 77 65 72 28 58 29 7d 20 7b 7d 20 7b 0a 20 20  ower(X)} {} {.  
11bc0 5e 54 68 65 20 6c 6f 77 65 72 28 58 29 20 66 75  ^The lower(X) fu
11bd0 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 61  nction returns a
11be0 20 63 6f 70 79 20 6f 66 20 73 74 72 69 6e 67 20   copy of string 
11bf0 58 20 77 69 74 68 20 61 6c 6c 20 41 53 43 49 49  X with all ASCII
11c00 20 63 68 61 72 61 63 74 65 72 73 0a 20 20 63 6f   characters.  co
11c10 6e 76 65 72 74 65 64 20 74 6f 20 6c 6f 77 65 72  nverted to lower
11c20 20 63 61 73 65 2e 20 20 5e 54 68 65 20 64 65 66   case.  ^The def
11c30 61 75 6c 74 20 62 75 69 6c 74 2d 69 6e 20 6c 6f  ault built-in lo
11c40 77 65 72 28 29 20 66 75 6e 63 74 69 6f 6e 20 77  wer() function w
11c50 6f 72 6b 73 0a 20 20 66 6f 72 20 41 53 43 49 49  orks.  for ASCII
11c60 20 63 68 61 72 61 63 74 65 72 73 20 6f 6e 6c 79   characters only
11c70 2e 20 20 54 6f 20 64 6f 20 63 61 73 65 20 63 6f  .  To do case co
11c80 6e 76 65 72 73 69 6f 6e 73 20 6f 6e 20 6e 6f 6e  nversions on non
11c90 2d 41 53 43 49 49 0a 20 20 63 68 61 72 61 63 74  -ASCII.  charact
11ca0 65 72 73 2c 20 6c 6f 61 64 20 74 68 65 20 49 43  ers, load the IC
11cb0 55 20 65 78 74 65 6e 73 69 6f 6e 2e 0a 7d 0a 0a  U extension..}..
11cc0 66 75 6e 63 64 65 66 20 7b 6c 74 72 69 6d 28 58  funcdef {ltrim(X
11cd0 29 20 6c 74 72 69 6d 28 58 2c 59 29 7d 20 7b 7d  ) ltrim(X,Y)} {}
11ce0 20 7b 0a 20 20 5e 54 68 65 20 6c 74 72 69 6d 28   {.  ^The ltrim(
11cf0 58 2c 59 29 20 66 75 6e 63 74 69 6f 6e 20 72 65  X,Y) function re
11d00 74 75 72 6e 73 20 61 20 73 74 72 69 6e 67 20 66  turns a string f
11d10 6f 72 6d 65 64 20 62 79 20 72 65 6d 6f 76 69 6e  ormed by removin
11d20 67 20 61 6e 79 20 61 6e 64 20 61 6c 6c 0a 20 20  g any and all.  
11d30 63 68 61 72 61 63 74 65 72 73 20 74 68 61 74 20  characters that 
11d40 61 70 70 65 61 72 20 69 6e 20 59 20 66 72 6f 6d  appear in Y from
11d50 20 74 68 65 20 6c 65 66 74 20 73 69 64 65 20 6f   the left side o
11d60 66 20 58 2e 0a 20 20 5e 49 66 20 74 68 65 20 59  f X..  ^If the Y
11d70 20 61 72 67 75 6d 65 6e 74 20 69 73 20 6f 6d 69   argument is omi
11d80 74 74 65 64 2c 20 6c 74 72 69 6d 28 58 29 20 72  tted, ltrim(X) r
11d90 65 6d 6f 76 65 73 20 73 70 61 63 65 73 20 66 72  emoves spaces fr
11da0 6f 6d 20 74 68 65 20 6c 65 66 74 20 73 69 64 65  om the left side
11db0 0a 20 20 6f 66 20 58 2e 0a 7d 0a 0a 66 75 6e 63  .  of X..}..func
11dc0 64 65 66 20 7b 6d 61 78 28 58 2c 59 2c 2e 2e 2e  def {max(X,Y,...
11dd0 29 7d 20 7b 2a 6d 61 78 43 6f 72 65 46 75 6e 63  )} {*maxCoreFunc
11de0 20 2a 6d 61 78 20 7b 6d 61 78 28 29 20 53 51 4c   *max {max() SQL
11df0 20 66 75 6e 63 74 69 6f 6e 7d 7d 20 7b 0a 20 20   function}} {.  
11e00 5e 54 68 65 20 6d 75 6c 74 69 2d 61 72 67 75 6d  ^The multi-argum
11e10 65 6e 74 20 6d 61 78 28 29 20 66 75 6e 63 74 69  ent max() functi
11e20 6f 6e 20 72 65 74 75 72 6e 73 20 74 68 65 20 61  on returns the a
11e30 72 67 75 6d 65 6e 74 20 77 69 74 68 20 74 68 65  rgument with the
11e40 20 0a 20 20 6d 61 78 69 6d 75 6d 20 76 61 6c 75   .  maximum valu
11e50 65 2c 20 6f 72 20 72 65 74 75 72 6e 20 4e 55 4c  e, or return NUL
11e60 4c 20 69 66 20 61 6e 79 20 61 72 67 75 6d 65 6e  L if any argumen
11e70 74 20 69 73 20 4e 55 4c 4c 2e 20 0a 20 20 5e 54  t is NULL. .  ^T
11e80 68 65 20 6d 75 6c 74 69 2d 61 72 67 75 6d 65 6e  he multi-argumen
11e90 74 20 6d 61 78 28 29 20 66 75 6e 63 74 69 6f 6e  t max() function
11ea0 20 73 65 61 72 63 68 65 73 20 69 74 73 20 61 72   searches its ar
11eb0 67 75 6d 65 6e 74 73 20 66 72 6f 6d 20 6c 65 66  guments from lef
11ec0 74 20 74 6f 20 72 69 67 68 74 0a 20 20 66 6f 72  t to right.  for
11ed0 20 61 6e 20 61 72 67 75 6d 65 6e 74 20 74 68 61   an argument tha
11ee0 74 20 64 65 66 69 6e 65 73 20 61 20 63 6f 6c 6c  t defines a coll
11ef0 61 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e 20 61  ating function a
11f00 6e 64 20 75 73 65 73 20 74 68 61 74 20 63 6f 6c  nd uses that col
11f10 6c 61 74 69 6e 67 0a 20 20 66 75 6e 63 74 69 6f  lating.  functio
11f20 6e 20 66 6f 72 20 61 6c 6c 20 73 74 72 69 6e 67  n for all string
11f30 20 63 6f 6d 70 61 72 69 73 6f 6e 73 2e 20 20 5e   comparisons.  ^
11f40 49 66 20 6e 6f 6e 65 20 6f 66 20 74 68 65 20 61  If none of the a
11f50 72 67 75 6d 65 6e 74 73 20 74 6f 20 6d 61 78 28  rguments to max(
11f60 29 0a 20 20 64 65 66 69 6e 65 20 61 20 63 6f 6c  ).  define a col
11f70 6c 61 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e 2c  lating function,
11f80 20 74 68 65 6e 20 74 68 65 20 42 49 4e 41 52 59   then the BINARY
11f90 20 63 6f 6c 6c 61 74 69 6e 67 20 66 75 6e 63 74   collating funct
11fa0 69 6f 6e 20 69 73 20 75 73 65 64 2e 0a 20 20 4e  ion is used..  N
11fb0 6f 74 65 20 74 68 61 74 20 3c 62 3e 6d 61 78 28  ote that <b>max(
11fc0 29 3c 2f 62 3e 20 69 73 20 61 20 73 69 6d 70 6c  )</b> is a simpl
11fd0 65 20 66 75 6e 63 74 69 6f 6e 20 77 68 65 6e 0a  e function when.
11fe0 20 20 69 74 20 68 61 73 20 32 20 6f 72 20 6d 6f    it has 2 or mo
11ff0 72 65 20 61 72 67 75 6d 65 6e 74 73 20 62 75 74  re arguments but
12000 20 6f 70 65 72 61 74 65 73 20 61 73 20 61 6e 0a   operates as an.
12010 20 20 5b 6d 69 6e 41 67 67 46 75 6e 63 20 7c 20    [minAggFunc | 
12020 61 67 67 72 65 67 61 74 65 20 66 75 6e 63 74 69  aggregate functi
12030 6f 6e 5d 20 69 66 20 67 69 76 65 6e 20 6f 6e 6c  on] if given onl
12040 79 20 61 20 73 69 6e 67 6c 65 20 61 72 67 75 6d  y a single argum
12050 65 6e 74 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20  ent..}..funcdef 
12060 7b 6d 69 6e 28 58 2c 59 2c 2e 2e 2e 29 7d 20 7b  {min(X,Y,...)} {
12070 2a 6d 69 6e 43 6f 72 65 46 75 6e 63 20 2a 6d 69  *minCoreFunc *mi
12080 6e 20 7b 6d 69 6e 28 29 20 53 51 4c 20 66 75 6e  n {min() SQL fun
12090 63 74 69 6f 6e 7d 7d 20 7b 0a 20 20 5e 54 68 65  ction}} {.  ^The
120a0 20 6d 75 6c 74 69 2d 61 72 67 75 6d 65 6e 74 20   multi-argument 
120b0 6d 69 6e 28 29 20 66 75 6e 63 74 69 6f 6e 20 72  min() function r
120c0 65 74 75 72 6e 73 20 74 68 65 20 61 72 67 75 6d  eturns the argum
120d0 65 6e 74 20 77 69 74 68 20 74 68 65 0a 20 20 6d  ent with the.  m
120e0 69 6e 69 6d 75 6d 20 76 61 6c 75 65 2e 0a 20 20  inimum value..  
120f0 5e 54 68 65 20 6d 75 6c 74 69 2d 61 72 67 75 6d  ^The multi-argum
12100 65 6e 74 20 6d 69 6e 28 29 20 66 75 6e 63 74 69  ent min() functi
12110 6f 6e 20 73 65 61 72 63 68 65 73 20 69 74 73 20  on searches its 
12120 61 72 67 75 6d 65 6e 74 73 20 66 72 6f 6d 20 6c  arguments from l
12130 65 66 74 20 74 6f 20 72 69 67 68 74 0a 20 20 66  eft to right.  f
12140 6f 72 20 61 6e 20 61 72 67 75 6d 65 6e 74 20 74  or an argument t
12150 68 61 74 20 64 65 66 69 6e 65 73 20 61 20 63 6f  hat defines a co
12160 6c 6c 61 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e  llating function
12170 20 61 6e 64 20 75 73 65 73 20 74 68 61 74 20 63   and uses that c
12180 6f 6c 6c 61 74 69 6e 67 0a 20 20 66 75 6e 63 74  ollating.  funct
12190 69 6f 6e 20 66 6f 72 20 61 6c 6c 20 73 74 72 69  ion for all stri
121a0 6e 67 20 63 6f 6d 70 61 72 69 73 6f 6e 73 2e 20  ng comparisons. 
121b0 20 5e 49 66 20 6e 6f 6e 65 20 6f 66 20 74 68 65   ^If none of the
121c0 20 61 72 67 75 6d 65 6e 74 73 20 74 6f 20 6d 69   arguments to mi
121d0 6e 28 29 0a 20 20 64 65 66 69 6e 65 20 61 20 63  n().  define a c
121e0 6f 6c 6c 61 74 69 6e 67 20 66 75 6e 63 74 69 6f  ollating functio
121f0 6e 2c 20 74 68 65 6e 20 74 68 65 20 42 49 4e 41  n, then the BINA
12200 52 59 20 63 6f 6c 6c 61 74 69 6e 67 20 66 75 6e  RY collating fun
12210 63 74 69 6f 6e 20 69 73 20 75 73 65 64 2e 0a 20  ction is used.. 
12220 20 4e 6f 74 65 20 74 68 61 74 20 3c 62 3e 6d 69   Note that <b>mi
12230 6e 28 29 3c 2f 62 3e 20 69 73 20 61 20 73 69 6d  n()</b> is a sim
12240 70 6c 65 20 66 75 6e 63 74 69 6f 6e 20 77 68 65  ple function whe
12250 6e 0a 20 20 69 74 20 68 61 73 20 32 20 6f 72 20  n.  it has 2 or 
12260 6d 6f 72 65 20 61 72 67 75 6d 65 6e 74 73 20 62  more arguments b
12270 75 74 20 6f 70 65 72 61 74 65 73 20 61 73 20 61  ut operates as a
12280 6e 20 0a 20 20 5b 6d 61 78 41 67 67 46 75 6e 63  n .  [maxAggFunc
12290 20 7c 20 61 67 67 72 65 67 61 74 65 20 66 75 6e   | aggregate fun
122a0 63 74 69 6f 6e 5d 20 69 66 20 67 69 76 65 6e 0a  ction] if given.
122b0 20 20 6f 6e 6c 79 20 61 20 73 69 6e 67 6c 65 20    only a single 
122c0 61 72 67 75 6d 65 6e 74 2e 0a 7d 0a 0a 66 75 6e  argument..}..fun
122d0 63 64 65 66 20 7b 6e 75 6c 6c 69 66 28 58 2c 59  cdef {nullif(X,Y
122e0 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20 6e  )} {} {.  ^The n
122f0 75 6c 6c 69 66 28 58 2c 59 29 20 66 75 6e 63 74  ullif(X,Y) funct
12300 69 6f 6e 20 72 65 74 75 72 6e 73 20 69 74 73 20  ion returns its 
12310 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74 20 69  first argument i
12320 66 20 74 68 65 20 61 72 67 75 6d 65 6e 74 73 20  f the arguments 
12330 61 72 65 0a 20 20 64 69 66 66 65 72 65 6e 74 20  are.  different 
12340 61 6e 64 20 4e 55 4c 4c 20 69 66 20 74 68 65 20  and NULL if the 
12350 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20 74 68  arguments are th
12360 65 20 73 61 6d 65 2e 20 20 5e 54 68 65 20 6e 75  e same.  ^The nu
12370 6c 6c 69 66 28 58 2c 59 29 20 66 75 6e 63 74 69  llif(X,Y) functi
12380 6f 6e 0a 20 20 73 65 61 72 63 68 65 73 20 69 74  on.  searches it
12390 73 20 61 72 67 75 6d 65 6e 74 73 20 66 72 6f 6d  s arguments from
123a0 20 6c 65 66 74 20 74 6f 20 72 69 67 68 74 20 66   left to right f
123b0 6f 72 20 61 6e 20 61 72 67 75 6d 65 6e 74 20 74  or an argument t
123c0 68 61 74 20 64 65 66 69 6e 65 73 20 61 0a 20 20  hat defines a.  
123d0 63 6f 6c 6c 61 74 69 6e 67 20 66 75 6e 63 74 69  collating functi
123e0 6f 6e 20 61 6e 64 20 75 73 65 73 20 74 68 61 74  on and uses that
123f0 20 63 6f 6c 6c 61 74 69 6e 67 20 66 75 6e 63 74   collating funct
12400 69 6f 6e 20 66 6f 72 20 61 6c 6c 20 73 74 72 69  ion for all stri
12410 6e 67 0a 20 20 63 6f 6d 70 61 72 69 73 6f 6e 73  ng.  comparisons
12420 2e 20 20 5e 49 66 20 6e 65 69 74 68 65 72 20 61  .  ^If neither a
12430 72 67 75 6d 65 6e 74 20 74 6f 20 6e 75 6c 6c 69  rgument to nulli
12440 66 28 29 20 64 65 66 69 6e 65 73 20 61 20 63 6f  f() defines a co
12450 6c 6c 61 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e  llating function
12460 0a 20 20 74 68 65 6e 20 74 68 65 20 42 49 4e 41  .  then the BINA
12470 52 59 20 69 73 20 75 73 65 64 2e 0a 7d 0a 0a 66  RY is used..}..f
12480 75 6e 63 64 65 66 20 7b 71 75 6f 74 65 28 58 29  uncdef {quote(X)
12490 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20 71 75  } {} {.  ^The qu
124a0 6f 74 65 28 58 29 20 66 75 6e 63 74 69 6f 6e 20  ote(X) function 
124b0 72 65 74 75 72 6e 73 20 61 20 73 74 72 69 6e 67  returns a string
124c0 20 77 68 69 63 68 20 69 73 20 74 68 65 20 76 61   which is the va
124d0 6c 75 65 20 6f 66 0a 20 20 69 74 73 20 61 72 67  lue of.  its arg
124e0 75 6d 65 6e 74 20 73 75 69 74 61 62 6c 65 20 66  ument suitable f
124f0 6f 72 20 69 6e 63 6c 75 73 69 6f 6e 20 69 6e 74  or inclusion int
12500 6f 20 61 6e 6f 74 68 65 72 20 53 51 4c 20 73 74  o another SQL st
12510 61 74 65 6d 65 6e 74 2e 0a 20 20 5e 53 74 72 69  atement..  ^Stri
12520 6e 67 73 20 61 72 65 20 73 75 72 72 6f 75 6e 64  ngs are surround
12530 65 64 20 62 79 20 73 69 6e 67 6c 65 2d 71 75 6f  ed by single-quo
12540 74 65 73 20 77 69 74 68 20 65 73 63 61 70 65 73  tes with escapes
12550 20 6f 6e 20 69 6e 74 65 72 69 6f 72 20 71 75 6f   on interior quo
12560 74 65 73 0a 20 20 61 73 20 6e 65 65 64 65 64 2e  tes.  as needed.
12570 20 20 5e 42 4c 4f 42 73 20 61 72 65 20 65 6e 63    ^BLOBs are enc
12580 6f 64 65 64 20 61 73 20 68 65 78 61 64 65 63 69  oded as hexadeci
12590 6d 61 6c 20 6c 69 74 65 72 61 6c 73 2e 0a 7d 0a  mal literals..}.
125a0 0a 66 75 6e 63 64 65 66 20 7b 72 61 6e 64 6f 6d  .funcdef {random
125b0 28 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20  ()} {} {.  ^The 
125c0 72 61 6e 64 6f 6d 28 29 20 66 75 6e 63 74 69 6f  random() functio
125d0 6e 20 72 65 74 75 72 6e 73 20 61 20 70 73 65 75  n returns a pseu
125e0 64 6f 2d 72 61 6e 64 6f 6d 20 69 6e 74 65 67 65  do-random intege
125f0 72 0a 20 20 62 65 74 77 65 65 6e 20 2d 39 32 32  r.  between -922
12600 33 33 37 32 30 33 36 38 35 34 37 37 35 38 30 38  3372036854775808
12610 20 61 6e 64 20 2b 39 32 32 33 33 37 32 30 33 36   and +9223372036
12620 38 35 34 37 37 35 38 30 37 2e 0a 7d 0a 0a 66 75  854775807..}..fu
12630 6e 63 64 65 66 20 7b 72 61 6e 64 6f 6d 62 6c 6f  ncdef {randomblo
12640 62 28 4e 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68  b(N)} {} {.  ^Th
12650 65 20 72 61 6e 64 6f 6d 62 6c 6f 62 28 4e 29 20  e randomblob(N) 
12660 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 20  function return 
12670 61 6e 20 4e 2d 62 79 74 65 20 62 6c 6f 62 20 63  an N-byte blob c
12680 6f 6e 74 61 69 6e 69 6e 67 20 70 73 65 75 64 6f  ontaining pseudo
12690 2d 72 61 6e 64 6f 6d 0a 20 20 62 79 74 65 73 2e  -random.  bytes.
126a0 20 5e 49 66 20 4e 20 69 73 20 6c 65 73 73 20 74   ^If N is less t
126b0 68 61 6e 20 31 20 74 68 65 6e 20 61 20 31 2d 62  han 1 then a 1-b
126c0 79 74 65 20 72 61 6e 64 6f 6d 20 62 6c 6f 62 20  yte random blob 
126d0 69 73 20 72 65 74 75 72 6e 65 64 2e 0a 0a 20 20  is returned...  
126e0 3c 70 3e 48 69 6e 74 3a 20 20 61 70 70 6c 69 63  <p>Hint:  applic
126f0 61 74 69 6f 6e 73 20 63 61 6e 20 67 65 6e 65 72  ations can gener
12700 61 74 65 20 67 6c 6f 62 61 6c 6c 79 20 75 6e 69  ate globally uni
12710 71 75 65 20 69 64 65 6e 74 69 66 69 65 72 73 0a  que identifiers.
12720 20 20 75 73 69 6e 67 20 74 68 69 73 20 66 75 6e    using this fun
12730 63 74 69 6f 6e 20 74 6f 67 65 74 68 65 72 20 77  ction together w
12740 69 74 68 20 5b 68 65 78 28 29 5d 20 61 6e 64 2f  ith [hex()] and/
12750 6f 72 0a 20 20 5b 6c 6f 77 65 72 28 29 5d 20 6c  or.  [lower()] l
12760 69 6b 65 20 74 68 69 73 3a 3c 2f 70 3e 0a 0a 20  ike this:</p>.. 
12770 20 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 20 20   <blockquote>.  
12780 68 65 78 28 72 61 6e 64 6f 6d 62 6c 6f 62 28 31  hex(randomblob(1
12790 36 29 29 3c 62 72 3e 3c 2f 62 72 3e 0a 20 20 6c  6))<br></br>.  l
127a0 6f 77 65 72 28 68 65 78 28 72 61 6e 64 6f 6d 62  ower(hex(randomb
127b0 6c 6f 62 28 31 36 29 29 29 0a 20 20 3c 2f 62 6c  lob(16))).  </bl
127c0 6f 63 6b 71 75 6f 74 65 3e 0a 7d 0a 0a 66 75 6e  ockquote>.}..fun
127d0 63 64 65 66 20 7b 72 65 70 6c 61 63 65 28 58 2c  cdef {replace(X,
127e0 59 2c 5a 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68  Y,Z)} {} {.  ^Th
127f0 65 20 72 65 70 6c 61 63 65 28 58 2c 59 2c 5a 29  e replace(X,Y,Z)
12800 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e   function return
12810 73 20 61 20 73 74 72 69 6e 67 20 66 6f 72 6d 65  s a string forme
12820 64 20 62 79 20 73 75 62 73 74 69 74 75 74 69 6e  d by substitutin
12830 67 0a 20 20 73 74 72 69 6e 67 20 5a 20 66 6f 72  g.  string Z for
12840 20 65 76 65 72 79 20 6f 63 63 75 72 72 61 6e 63   every occurranc
12850 65 20 6f 66 20 73 74 72 69 6e 67 20 59 20 69 6e  e of string Y in
12860 20 73 74 72 69 6e 67 20 58 2e 20 20 5e 54 68 65   string X.  ^The
12870 20 5b 42 49 4e 41 52 59 5d 0a 20 20 63 6f 6c 6c   [BINARY].  coll
12880 61 74 69 6e 67 20 73 65 71 75 65 6e 63 65 20 69  ating sequence i
12890 73 20 75 73 65 64 20 66 6f 72 20 63 6f 6d 70 61  s used for compa
128a0 72 69 73 6f 6e 73 2e 20 20 5e 49 66 20 59 20 69  risons.  ^If Y i
128b0 73 20 61 6e 20 65 6d 70 74 79 0a 20 20 73 74 72  s an empty.  str
128c0 69 6e 67 20 74 68 65 6e 20 72 65 74 75 72 6e 20  ing then return 
128d0 58 20 75 6e 63 68 61 6e 67 65 64 2e 20 20 5e 49  X unchanged.  ^I
128e0 66 20 5a 20 69 73 20 6e 6f 74 20 69 6e 69 74 69  f Z is not initi
128f0 61 6c 6c 79 0a 20 20 61 20 73 74 72 69 6e 67 2c  ally.  a string,
12900 20 69 74 20 69 73 20 63 61 73 74 20 74 6f 20 61   it is cast to a
12910 20 55 54 46 2d 38 20 73 74 72 69 6e 67 20 70 72   UTF-8 string pr
12920 69 6f 72 20 74 6f 20 70 72 6f 63 65 73 73 69 6e  ior to processin
12930 67 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 72  g..}..funcdef {r
12940 6f 75 6e 64 28 58 29 20 72 6f 75 6e 64 28 58 2c  ound(X) round(X,
12950 59 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20  Y)} {} {.  ^The 
12960 72 6f 75 6e 64 28 58 2c 59 29 20 66 75 6e 63 74  round(X,Y) funct
12970 69 6f 6e 20 72 65 74 75 72 6e 73 20 61 20 73 74  ion returns a st
12980 72 69 6e 67 20 72 65 70 72 65 73 65 6e 74 61 74  ring representat
12990 69 6f 6e 20 6f 66 20 74 68 65 20 66 6c 6f 61 74  ion of the float
129a0 69 6e 67 2d 70 6f 69 6e 74 0a 20 20 76 61 6c 75  ing-point.  valu
129b0 65 20 58 20 72 6f 75 6e 64 65 64 20 74 6f 20 59  e X rounded to Y
129c0 20 64 69 67 69 74 73 20 74 6f 20 74 68 65 20 72   digits to the r
129d0 69 67 68 74 20 6f 66 20 74 68 65 20 64 65 63 69  ight of the deci
129e0 6d 61 6c 20 70 6f 69 6e 74 2e 0a 20 20 5e 49 66  mal point..  ^If
129f0 20 74 68 65 20 59 20 61 72 67 75 6d 65 6e 74 20   the Y argument 
12a00 69 73 20 6f 6d 69 74 74 65 64 2c 20 74 68 65 20  is omitted, the 
12a10 58 20 76 61 6c 75 65 20 69 73 20 74 72 75 6e 63  X value is trunc
12a20 61 74 65 64 20 74 6f 20 61 6e 20 69 6e 74 65 67  ated to an integ
12a30 65 72 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b  er..}..funcdef {
12a40 72 74 72 69 6d 28 58 29 20 72 74 72 69 6d 28 58  rtrim(X) rtrim(X
12a50 2c 59 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68 65  ,Y)} {} {.  ^The
12a60 20 72 74 72 69 6d 28 58 2c 59 29 20 66 75 6e 63   rtrim(X,Y) func
12a70 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 61 20 73  tion returns a s
12a80 74 72 69 6e 67 20 66 6f 72 6d 65 64 20 62 79 20  tring formed by 
12a90 72 65 6d 6f 76 69 6e 67 20 61 6e 79 20 61 6e 64  removing any and
12aa0 20 61 6c 6c 0a 20 20 63 68 61 72 61 63 74 65 72   all.  character
12ab0 73 20 74 68 61 74 20 61 70 70 65 61 72 20 69 6e  s that appear in
12ac0 20 59 20 66 72 6f 6d 20 74 68 65 20 72 69 67 68   Y from the righ
12ad0 74 20 73 69 64 65 20 6f 66 20 58 2e 0a 20 20 5e  t side of X..  ^
12ae0 49 66 20 74 68 65 20 59 20 61 72 67 75 6d 65 6e  If the Y argumen
12af0 74 20 69 73 20 6f 6d 69 74 74 65 64 2c 20 72 74  t is omitted, rt
12b00 72 69 6d 28 58 29 20 72 65 6d 6f 76 65 73 20 73  rim(X) removes s
12b10 70 61 63 65 73 20 66 72 6f 6d 20 74 68 65 20 72  paces from the r
12b20 69 67 68 74 0a 20 20 73 69 64 65 20 6f 66 20 58  ight.  side of X
12b30 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 73 6f  ..}..funcdef {so
12b40 75 6e 64 65 78 28 58 29 7d 20 7b 7d 20 7b 0a 20  undex(X)} {} {. 
12b50 20 5e 54 68 65 20 73 6f 75 6e 64 65 78 28 58 29   ^The soundex(X)
12b60 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e   function return
12b70 73 20 61 20 73 74 72 69 6e 67 20 74 68 61 74 20  s a string that 
12b80 69 73 20 74 68 65 20 73 6f 75 6e 64 65 78 20 65  is the soundex e
12b90 6e 63 6f 64 69 6e 67 20 0a 20 20 6f 66 20 74 68  ncoding .  of th
12ba0 65 20 73 74 72 69 6e 67 20 58 2e 0a 20 20 5e 54  e string X..  ^T
12bb0 68 65 20 73 74 72 69 6e 67 20 22 3f 30 30 30 22  he string "?000"
12bc0 20 69 73 20 72 65 74 75 72 6e 65 64 20 69 66 20   is returned if 
12bd0 74 68 65 20 61 72 67 75 6d 65 6e 74 20 69 73 20  the argument is 
12be0 4e 55 4c 4c 20 6f 72 20 63 6f 6e 74 61 69 6e 73  NULL or contains
12bf0 0a 20 20 6e 6f 20 41 53 43 49 49 20 61 6c 70 68  .  no ASCII alph
12c00 61 62 65 74 69 63 20 63 68 61 72 61 63 74 65 72  abetic character
12c10 73 2e 0a 20 20 5e 28 54 68 69 73 20 66 75 6e 63  s..  ^(This func
12c20 74 69 6f 6e 20 69 73 20 6f 6d 69 74 74 65 64 20  tion is omitted 
12c30 66 72 6f 6d 20 53 51 4c 69 74 65 20 62 79 20 64  from SQLite by d
12c40 65 66 61 75 6c 74 2e 0a 20 20 49 74 20 69 73 20  efault..  It is 
12c50 6f 6e 6c 79 20 61 76 61 69 6c 61 62 6c 65 20 69  only available i
12c60 66 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 53 4f  f the [SQLITE_SO
12c70 55 4e 44 45 58 5d 20 63 6f 6d 70 69 6c 65 2d 74  UNDEX] compile-t
12c80 69 6d 65 20 6f 70 74 69 6f 6e 0a 20 20 69 73 20  ime option.  is 
12c90 75 73 65 64 20 77 68 65 6e 20 53 51 4c 69 74 65  used when SQLite
12ca0 20 69 73 20 62 75 69 6c 74 2e 29 5e 0a 7d 0a 0a   is built.)^.}..
12cb0 66 75 6e 63 64 65 66 20 7b 73 71 6c 69 74 65 5f  funcdef {sqlite_
12cc0 73 6f 75 72 63 65 5f 69 64 28 29 7d 20 7b 7d 20  source_id()} {} 
12cd0 7b 0a 20 20 5e 54 68 65 20 73 71 6c 69 74 65 5f  {.  ^The sqlite_
12ce0 73 6f 75 72 63 65 5f 69 64 28 29 20 66 75 6e 63  source_id() func
12cf0 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 61 20 73  tion returns a s
12d00 74 72 69 6e 67 20 74 68 61 74 20 69 64 65 6e 74  tring that ident
12d10 69 66 69 65 73 20 74 68 65 0a 20 20 73 70 65 63  ifies the.  spec
12d20 69 66 69 63 20 76 65 72 73 69 6f 6e 20 6f 66 20  ific version of 
12d30 74 68 65 20 73 6f 75 72 63 65 20 63 6f 64 65 20  the source code 
12d40 74 68 61 74 20 77 61 73 20 75 73 65 64 20 74 6f  that was used to
12d50 20 62 75 69 6c 64 20 74 68 65 20 53 51 4c 69 74   build the SQLit
12d60 65 0a 20 20 6c 69 62 72 61 72 79 2e 20 20 5e 54  e.  library.  ^T
12d70 68 65 20 73 74 72 69 6e 67 20 72 65 74 75 72 6e  he string return
12d80 65 64 20 62 79 20 73 71 6c 69 74 65 5f 73 6f 75  ed by sqlite_sou
12d90 72 63 65 5f 69 64 28 29 20 62 65 67 69 6e 73 20  rce_id() begins 
12da0 77 69 74 68 0a 20 20 74 68 65 20 64 61 74 65 20  with.  the date 
12db0 61 6e 64 20 74 69 6d 65 20 74 68 61 74 20 74 68  and time that th
12dc0 65 20 73 6f 75 72 63 65 20 63 6f 64 65 20 77 61  e source code wa
12dd0 73 20 63 68 65 63 6b 65 64 20 69 6e 20 61 6e 64  s checked in and
12de0 20 69 73 20 66 6f 6c 6c 6f 77 73 20 62 79 0a 20   is follows by. 
12df0 20 61 6e 20 53 48 41 31 20 68 61 73 68 20 74 68   an SHA1 hash th
12e00 61 74 20 75 6e 69 71 75 65 6c 79 20 69 64 65 6e  at uniquely iden
12e10 74 69 66 69 65 73 20 74 68 65 20 73 6f 75 72 63  tifies the sourc
12e20 65 20 74 72 65 65 2e 20 20 5e 54 68 69 73 20 66  e tree.  ^This f
12e30 75 6e 63 74 69 6f 6e 20 69 73 0a 20 20 61 6e 20  unction is.  an 
12e40 53 51 4c 20 77 72 61 70 70 65 72 20 61 72 6f 75  SQL wrapper arou
12e50 6e 64 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  nd the [sqlite3_
12e60 73 6f 75 72 63 65 69 64 28 29 5d 20 43 20 69 6e  sourceid()] C in
12e70 74 65 72 66 61 63 65 2e 0a 7d 0a 0a 66 75 6e 63  terface..}..func
12e80 64 65 66 20 7b 73 71 6c 69 74 65 5f 76 65 72 73  def {sqlite_vers
12e90 69 6f 6e 28 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54  ion()} {} {.  ^T
12ea0 68 65 20 73 71 6c 69 74 65 5f 76 65 72 73 69 6f  he sqlite_versio
12eb0 6e 28 29 20 66 75 6e 63 74 69 6f 6e 20 72 65 74  n() function ret
12ec0 75 72 6e 73 20 74 68 65 20 76 65 72 73 69 6f 6e  urns the version
12ed0 20 73 74 72 69 6e 67 20 66 6f 72 20 74 68 65 20   string for the 
12ee0 53 51 4c 69 74 65 0a 20 20 6c 69 62 72 61 72 79  SQLite.  library
12ef0 20 74 68 61 74 20 69 73 20 72 75 6e 6e 69 6e 67   that is running
12f00 2e 20 20 5e 54 68 69 73 20 66 75 6e 63 74 69 6f  .  ^This functio
12f10 6e 20 69 73 20 61 6e 20 53 51 4c 0a 20 20 77 72  n is an SQL.  wr
12f20 61 70 70 65 72 20 61 72 6f 75 6e 64 20 74 68 65  apper around the
12f30 20 5b 73 71 6c 69 74 65 33 5f 6c 69 62 76 65 72   [sqlite3_libver
12f40 73 69 6f 6e 28 29 5d 20 43 2d 69 6e 74 65 72 66  sion()] C-interf
12f50 61 63 65 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20  ace..}..funcdef 
12f60 7b 73 75 62 73 74 72 28 58 2c 59 2c 5a 29 20 73  {substr(X,Y,Z) s
12f70 75 62 73 74 72 28 58 2c 59 29 7d 20 7b 7d 20 7b  ubstr(X,Y)} {} {
12f80 0a 20 20 5e 54 68 65 20 73 75 62 73 74 72 28 58  .  ^The substr(X
12f90 2c 59 2c 5a 29 20 66 75 6e 63 74 69 6f 6e 20 72  ,Y,Z) function r
12fa0 65 74 75 72 6e 73 20 61 20 73 75 62 73 74 72 69  eturns a substri
12fb0 6e 67 20 6f 66 20 69 6e 70 75 74 20 73 74 72 69  ng of input stri
12fc0 6e 67 20 58 20 74 68 61 74 20 62 65 67 69 6e 73  ng X that begins
12fd0 0a 20 20 77 69 74 68 20 74 68 65 20 59 2d 74 68  .  with the Y-th
12fe0 20 63 68 61 72 61 63 74 65 72 20 61 6e 64 20 77   character and w
12ff0 68 69 63 68 20 69 73 20 5a 20 63 68 61 72 61 63  hich is Z charac
13000 74 65 72 73 20 6c 6f 6e 67 2e 0a 20 20 5e 49 66  ters long..  ^If
13010 20 5a 20 69 73 20 6f 6d 69 74 74 65 64 20 74 68   Z is omitted th
13020 65 6e 20 73 75 62 73 74 72 28 58 2c 59 29 20 72  en substr(X,Y) r
13030 65 74 75 72 6e 73 20 61 6c 6c 20 63 68 61 72 61  eturns all chara
13040 63 74 65 72 73 20 74 68 72 6f 75 67 68 20 74 68  cters through th
13050 65 20 65 6e 64 0a 20 20 6f 66 20 74 68 65 20 73  e end.  of the s
13060 74 72 69 6e 67 20 58 20 62 65 67 69 6e 6e 69 6e  tring X beginnin
13070 67 20 77 69 74 68 20 74 68 65 20 59 2d 74 68 2e  g with the Y-th.
13080 0a 20 20 5e 54 68 65 20 6c 65 66 74 2d 6d 6f 73  .  ^The left-mos
13090 74 20 63 68 61 72 61 63 74 65 72 20 6f 66 20 58  t character of X
130a0 20 69 73 20 6e 75 6d 62 65 72 20 31 2e 20 20 5e   is number 1.  ^
130b0 49 66 20 59 20 69 73 20 6e 65 67 61 74 69 76 65  If Y is negative
130c0 0a 20 20 74 68 65 6e 20 74 68 65 20 66 69 72 73  .  then the firs
130d0 74 20 63 68 61 72 61 63 74 65 72 20 6f 66 20 74  t character of t
130e0 68 65 20 73 75 62 73 74 72 69 6e 67 20 69 73 20  he substring is 
130f0 66 6f 75 6e 64 20 62 79 20 63 6f 75 6e 74 69 6e  found by countin
13100 67 20 66 72 6f 6d 20 74 68 65 0a 20 20 72 69 67  g from the.  rig
13110 68 74 20 72 61 74 68 65 72 20 74 68 61 6e 20 74  ht rather than t
13120 68 65 20 6c 65 66 74 2e 20 20 5e 49 66 20 5a 20  he left.  ^If Z 
13130 69 73 20 6e 65 67 61 74 69 76 65 20 74 68 65 6e  is negative then
13140 0a 20 20 74 68 65 20 61 62 73 28 5a 29 20 63 68  .  the abs(Z) ch
13150 61 72 61 63 74 65 72 73 20 70 72 65 63 65 65 64  aracters preceed
13160 69 6e 67 20 74 68 65 20 59 2d 74 68 20 63 68 61  ing the Y-th cha
13170 72 61 63 74 65 72 20 61 72 65 20 72 65 74 75 72  racter are retur
13180 6e 65 64 2e 0a 20 20 5e 49 66 20 58 20 69 73 20  ned..  ^If X is 
13190 61 20 73 74 72 69 6e 67 20 74 68 65 6e 20 63 68  a string then ch
131a0 61 72 61 63 74 65 72 73 20 69 6e 64 69 63 65 73  aracters indices
131b0 20 72 65 66 65 72 20 74 6f 20 61 63 74 75 61 6c   refer to actual
131c0 20 55 54 46 2d 38 20 0a 20 20 63 68 61 72 61 63   UTF-8 .  charac
131d0 74 65 72 73 2e 20 20 5e 49 66 20 58 20 69 73 20  ters.  ^If X is 
131e0 61 20 42 4c 4f 42 20 74 68 65 6e 20 74 68 65 20  a BLOB then the 
131f0 69 6e 64 69 63 65 73 20 72 65 66 65 72 20 74 6f  indices refer to
13200 20 62 79 74 65 73 2e 0a 7d 0a 0a 66 75 6e 63 64   bytes..}..funcd
13210 65 66 20 7b 74 6f 74 61 6c 5f 63 68 61 6e 67 65  ef {total_change
13220 73 28 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68 65  s()} {} {.  ^The
13230 20 74 6f 74 61 6c 5f 63 68 61 6e 67 65 73 28 29   total_changes()
13240 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e   function return
13250 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  s the number of 
13260 72 6f 77 20 63 68 61 6e 67 65 73 0a 20 20 63 61  row changes.  ca
13270 75 73 65 64 20 62 79 20 49 4e 53 45 52 54 2c 20  used by INSERT, 
13280 55 50 44 41 54 45 20 6f 72 20 44 45 4c 45 54 45  UPDATE or DELETE
13290 0a 20 20 73 74 61 74 65 6d 65 6e 74 73 20 73 69  .  statements si
132a0 6e 63 65 20 74 68 65 20 63 75 72 72 65 6e 74 20  nce the current 
132b0 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
132c0 69 6f 6e 20 77 61 73 20 6f 70 65 6e 65 64 2e 0a  ion was opened..
132d0 20 20 5e 54 68 69 73 20 66 75 6e 63 74 69 6f 6e    ^This function
132e0 20 69 73 20 61 20 77 72 61 70 70 65 72 20 61 72   is a wrapper ar
132f0 6f 75 6e 64 20 74 68 65 20 5b 73 71 6c 69 74 65  ound the [sqlite
13300 33 5f 74 6f 74 61 6c 5f 63 68 61 6e 67 65 73 28  3_total_changes(
13310 29 5d 0a 20 20 43 2f 43 2b 2b 20 69 6e 74 65 72  )].  C/C++ inter
13320 66 61 63 65 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66  face..}..funcdef
13330 20 7b 74 72 69 6d 28 58 29 20 74 72 69 6d 28 58   {trim(X) trim(X
13340 2c 59 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68 65  ,Y)} {} {.  ^The
13350 20 74 72 69 6d 28 58 2c 59 29 20 66 75 6e 63 74   trim(X,Y) funct
13360 69 6f 6e 20 72 65 74 75 72 6e 73 20 61 20 73 74  ion returns a st
13370 72 69 6e 67 20 66 6f 72 6d 65 64 20 62 79 20 72  ring formed by r
13380 65 6d 6f 76 69 6e 67 20 61 6e 79 20 61 6e 64 20  emoving any and 
13390 61 6c 6c 0a 20 20 63 68 61 72 61 63 74 65 72 73  all.  characters
133a0 20 74 68 61 74 20 61 70 70 65 61 72 20 69 6e 20   that appear in 
133b0 59 20 66 72 6f 6d 20 62 6f 74 68 20 65 6e 64 73  Y from both ends
133c0 20 6f 66 20 58 2e 0a 20 20 5e 49 66 20 74 68 65   of X..  ^If the
133d0 20 59 20 61 72 67 75 6d 65 6e 74 20 69 73 20 6f   Y argument is o
133e0 6d 69 74 74 65 64 2c 20 74 72 69 6d 28 58 29 20  mitted, trim(X) 
133f0 72 65 6d 6f 76 65 73 20 73 70 61 63 65 73 20 66  removes spaces f
13400 72 6f 6d 20 62 6f 74 68 20 65 6e 64 73 20 6f 66  rom both ends of
13410 20 58 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b   X..}..funcdef {
13420 74 79 70 65 6f 66 28 58 29 7d 20 7b 7d 20 7b 0a  typeof(X)} {} {.
13430 20 20 5e 54 68 65 20 74 79 70 65 6f 66 28 58 29    ^The typeof(X)
13440 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e   function return
13450 73 20 61 20 73 74 72 69 6e 67 20 74 68 61 74 20  s a string that 
13460 69 6e 64 69 63 61 74 65 73 20 74 68 65 20 5b 64  indicates the [d
13470 61 74 61 74 79 70 65 5d 20 6f 66 0a 20 20 74 68  atatype] of.  th
13480 65 20 65 78 70 72 65 73 73 69 6f 6e 20 58 3a 20  e expression X: 
13490 22 6e 75 6c 6c 22 2c 20 22 69 6e 74 65 67 65 72  "null", "integer
134a0 22 2c 20 22 72 65 61 6c 22 2c 20 22 74 65 78 74  ", "real", "text
134b0 22 2c 20 6f 72 20 22 62 6c 6f 62 22 2e 0a 7d 0a  ", or "blob"..}.
134c0 0a 66 75 6e 63 64 65 66 20 7b 75 70 70 65 72 28  .funcdef {upper(
134d0 58 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20  X)} {} {.  ^The 
134e0 75 70 70 65 72 28 58 29 20 66 75 6e 63 74 69 6f  upper(X) functio
134f0 6e 20 72 65 74 75 72 6e 73 20 61 20 63 6f 70 79  n returns a copy
13500 20 6f 66 20 69 6e 70 75 74 20 73 74 72 69 6e 67   of input string
13510 20 58 20 69 6e 20 77 68 69 63 68 20 61 6c 6c 20   X in which all 
13520 0a 20 20 6c 6f 77 65 72 2d 63 61 73 65 20 41 53  .  lower-case AS
13530 43 49 49 20 63 68 61 72 61 63 74 65 72 73 20 61  CII characters a
13540 72 65 20 63 6f 6e 76 65 72 74 65 64 20 74 6f 20  re converted to 
13550 74 68 65 69 72 20 75 70 70 65 72 2d 63 61 73 65  their upper-case
13560 20 65 71 75 69 76 61 6c 65 6e 74 2e 0a 7d 0a 0a   equivalent..}..
13570 66 75 6e 63 64 65 66 20 7b 7a 65 72 6f 62 6c 6f  funcdef {zeroblo
13580 62 28 4e 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68  b(N)} {} {.  ^Th
13590 65 20 7a 65 72 6f 62 6c 6f 62 28 4e 29 20 66 75  e zeroblob(N) fu
135a0 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 61  nction returns a
135b0 20 42 4c 4f 42 20 63 6f 6e 73 69 73 74 69 6e 67   BLOB consisting
135c0 20 6f 66 20 4e 20 62 79 74 65 73 20 6f 66 20 30   of N bytes of 0
135d0 78 30 30 2e 0a 20 20 53 51 4c 69 74 65 20 6d 61  x00..  SQLite ma
135e0 6e 61 67 65 73 20 74 68 65 73 65 20 7a 65 72 6f  nages these zero
135f0 62 6c 6f 62 73 20 76 65 72 79 20 65 66 66 69 63  blobs very effic
13600 69 65 6e 74 6c 79 2e 20 20 5a 65 72 6f 62 6c 6f  iently.  Zeroblo
13610 62 73 20 63 61 6e 20 62 65 20 75 73 65 64 20 74  bs can be used t
13620 6f 0a 20 20 72 65 73 65 72 76 65 20 73 70 61 63  o.  reserve spac
13630 65 20 66 6f 72 20 61 20 42 4c 4f 42 20 74 68 61  e for a BLOB tha
13640 74 20 69 73 20 6c 61 74 65 72 20 77 72 69 74 74  t is later writt
13650 65 6e 20 75 73 69 6e 67 20 0a 20 20 5b 73 71 6c  en using .  [sql
13660 69 74 65 33 5f 62 6c 6f 62 5f 6f 70 65 6e 28 29  ite3_blob_open()
13670 20 7c 20 69 6e 63 72 65 6d 65 6e 74 61 6c 20 42   | incremental B
13680 4c 4f 42 20 49 2f 4f 5d 2e 0a 20 20 5e 54 68 69  LOB I/O]..  ^Thi
13690 73 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 20 69  s SQL function i
136a0 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 75 73  s implemented us
136b0 69 6e 67 20 74 68 65 20 5b 73 71 6c 69 74 65 33  ing the [sqlite3
136c0 5f 72 65 73 75 6c 74 5f 7a 65 72 6f 62 6c 6f 62  _result_zeroblob
136d0 28 29 5d 0a 20 20 72 6f 75 74 69 6e 65 20 66 72  ()].  routine fr
136e0 6f 6d 20 74 68 65 20 43 2f 43 2b 2b 20 69 6e 74  om the C/C++ int
136f0 65 72 66 61 63 65 2e 0a 7d 0a 3c 2f 74 63 6c 3e  erface..}.</tcl>
13700 0a 3c 2f 74 61 62 6c 65 3e 0a 0a 3c 74 63 6c 3e  .</table>..<tcl>
13710 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  .###############
13720 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
13730 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
13740 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
13750 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a  ###############.
13760 53 65 63 74 69 6f 6e 20 7b 44 61 74 65 20 41 6e  Section {Date An
13770 64 20 54 69 6d 65 20 46 75 6e 63 74 69 6f 6e 73  d Time Functions
13780 7d 20 64 61 74 65 66 75 6e 63 20 7b 2a 64 61 74  } datefunc {*dat
13790 65 66 75 6e 63 7d 0a 68 64 5f 6b 65 79 77 6f 72  efunc}.hd_keywor
137a0 64 73 20 7b 64 61 74 65 28 29 20 53 51 4c 20 66  ds {date() SQL f
137b0 75 6e 63 74 69 6f 6e 7d 20 7b 74 69 6d 65 28 29  unction} {time()
137c0 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 7d 0a 68   SQL function}.h
137d0 64 5f 6b 65 79 77 6f 72 64 73 20 7b 64 61 74 65  d_keywords {date
137e0 74 69 6d 65 28 29 20 53 51 4c 20 66 75 6e 63 74  time() SQL funct
137f0 69 6f 6e 7d 20 7b 6a 75 6c 69 61 6e 64 61 79 28  ion} {julianday(
13800 29 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 7d 0a  ) SQL function}.
13810 68 64 5f 6b 65 79 77 6f 72 64 73 20 7b 73 74 72  hd_keywords {str
13820 66 74 69 6d 65 28 29 20 53 51 4c 20 66 75 6e 63  ftime() SQL func
13830 74 69 6f 6e 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70  tion}.</tcl>..<p
13840 3e 0a 53 51 4c 69 74 65 20 73 75 70 70 6f 72 74  >.SQLite support
13850 73 20 66 69 76 65 20 64 61 74 65 20 61 6e 64 20  s five date and 
13860 74 69 6d 65 20 66 75 6e 63 74 69 6f 6e 73 20 61  time functions a
13870 73 20 66 6f 6c 6c 6f 77 73 3a 0a 3c 2f 70 3e 0a  s follows:.</p>.
13880 0a 3c 70 3e 0a 3c 6f 6c 3e 0a 3c 6c 69 3e 20 5e  .<p>.<ol>.<li> ^
13890 28 3c 62 3e 64 61 74 65 28 3c 2f 62 3e 3c 69 3e  (<b>date(</b><i>
138a0 74 69 6d 65 73 74 72 69 6e 67 2c 20 6d 6f 64 69  timestring, modi
138b0 66 69 65 72 2c 20 6d 6f 64 69 66 69 65 72 2c 20  fier, modifier, 
138c0 2e 2e 2e 3c 2f 69 3e 3c 62 3e 29 3c 2f 62 3e 29  ...</i><b>)</b>)
138d0 5e 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5e 28 3c  ^ </li>.<li> ^(<
138e0 62 3e 74 69 6d 65 28 3c 2f 62 3e 3c 69 3e 74 69  b>time(</b><i>ti
138f0 6d 65 73 74 72 69 6e 67 2c 20 6d 6f 64 69 66 69  mestring, modifi
13900 65 72 2c 20 6d 6f 64 69 66 69 65 72 2c 20 2e 2e  er, modifier, ..
13910 2e 3c 2f 69 3e 3c 62 3e 29 3c 2f 62 3e 29 5e 20  .</i><b>)</b>)^ 
13920 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5e 28 3c 62 3e  </li>.<li> ^(<b>
13930 64 61 74 65 74 69 6d 65 28 3c 2f 62 3e 3c 69 3e  datetime(</b><i>
13940 74 69 6d 65 73 74 72 69 6e 67 2c 20 6d 6f 64 69  timestring, modi
13950 66 69 65 72 2c 20 6d 6f 64 69 66 69 65 72 2c 20  fier, modifier, 
13960 2e 2e 2e 3c 2f 69 3e 3c 62 3e 29 3c 2f 62 3e 29  ...</i><b>)</b>)
13970 5e 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 5e 28 3c  ^ </li>.<li> ^(<
13980 62 3e 6a 75 6c 69 61 6e 64 61 79 28 3c 2f 62 3e  b>julianday(</b>
13990 3c 69 3e 74 69 6d 65 73 74 72 69 6e 67 2c 20 6d  <i>timestring, m
139a0 6f 64 69 66 69 65 72 2c 20 6d 6f 64 69 66 69 65  odifier, modifie
139b0 72 2c 20 2e 2e 2e 3c 2f 69 3e 3c 62 3e 29 3c 2f  r, ...</i><b>)</
139c0 62 3e 29 5e 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20  b>)^ </li>.<li> 
139d0 5e 28 3c 62 3e 73 74 72 66 74 69 6d 65 28 3c 2f  ^(<b>strftime(</
139e0 62 3e 3c 69 3e 66 6f 72 6d 61 74 2c 20 74 69 6d  b><i>format, tim
139f0 65 73 74 72 69 6e 67 2c 20 6d 6f 64 69 66 69 65  estring, modifie
13a00 72 2c 20 6d 6f 64 69 66 69 65 72 2c 20 2e 2e 2e  r, modifier, ...
13a10 3c 2f 69 3e 3c 62 3e 29 3c 2f 62 3e 29 5e 20 3c  </i><b>)</b>)^ <
13a20 2f 6c 69 3e 0a 3c 2f 6f 6c 3e 0a 0a 3c 70 3e 0a  /li>.</ol>..<p>.
13a30 5e 41 6c 6c 20 66 69 76 65 20 64 61 74 65 20 61  ^All five date a
13a40 6e 64 20 74 69 6d 65 20 66 75 6e 63 74 69 6f 6e  nd time function
13a50 73 20 74 61 6b 65 20 61 20 74 69 6d 65 20 73 74  s take a time st
13a60 72 69 6e 67 20 61 73 20 61 6e 20 61 72 67 75 6d  ring as an argum
13a70 65 6e 74 2e 20 0a 5e 54 68 65 20 74 69 6d 65 20  ent. .^The time 
13a80 73 74 72 69 6e 67 20 69 73 20 66 6f 6c 6c 6f 77  string is follow
13a90 65 64 20 62 79 20 7a 65 72 6f 20 6f 72 20 6d 6f  ed by zero or mo
13aa0 72 65 20 6d 6f 64 69 66 69 65 72 73 2e 20 0a 5e  re modifiers. .^
13ab0 54 68 65 20 73 74 72 66 74 69 6d 65 28 29 20 66  The strftime() f
13ac0 75 6e 63 74 69 6f 6e 20 61 6c 73 6f 20 74 61 6b  unction also tak
13ad0 65 73 20 61 20 66 6f 72 6d 61 74 20 73 74 72 69  es a format stri
13ae0 6e 67 20 61 73 20 69 74 73 20 66 69 72 73 74 20  ng as its first 
13af0 61 72 67 75 6d 65 6e 74 2e 0a 3c 2f 70 3e 0a 0a  argument..</p>..
13b00 3c 70 3e 0a 54 68 65 20 64 61 74 65 20 61 6e 64  <p>.The date and
13b10 20 74 69 6d 65 20 66 75 6e 63 74 69 6f 6e 73 20   time functions 
13b20 75 73 65 20 61 20 73 75 62 73 65 74 20 6f 66 0a  use a subset of.
13b30 5b 68 74 74 70 3a 2f 2f 65 6e 2e 77 69 6b 69 70  [http://en.wikip
13b40 65 64 69 61 2e 6f 72 67 2f 77 69 6b 69 2f 49 53  edia.org/wiki/IS
13b50 4f 5f 38 36 30 31 20 7c 20 49 53 30 2d 38 36 30  O_8601 | IS0-860
13b60 31 5d 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65  1] date and time
13b70 0a 66 6f 72 6d 61 74 73 2e 0a 5e 54 68 65 20 64  .formats..^The d
13b80 61 74 65 28 29 20 66 75 6e 63 74 69 6f 6e 20 72  ate() function r
13b90 65 74 75 72 6e 73 20 74 68 65 20 64 61 74 65 20  eturns the date 
13ba0 69 6e 20 74 68 69 73 20 66 6f 72 6d 61 74 3a 20  in this format: 
13bb0 59 59 59 59 2d 4d 4d 2d 44 44 2e 20 0a 5e 54 68  YYYY-MM-DD. .^Th
13bc0 65 20 74 69 6d 65 28 29 20 66 75 6e 63 74 69 6f  e time() functio
13bd0 6e 20 72 65 74 75 72 6e 73 20 74 68 65 20 74 69  n returns the ti
13be0 6d 65 20 61 73 20 48 48 3a 4d 4d 3a 53 53 2e 20  me as HH:MM:SS. 
13bf0 0a 5e 54 68 65 20 64 61 74 65 74 69 6d 65 28 29  .^The datetime()
13c00 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e   function return
13c10 73 20 22 59 59 59 59 2d 4d 4d 2d 44 44 20 48 48  s "YYYY-MM-DD HH
13c20 3a 4d 4d 3a 53 53 22 2e 20 0a 5e 28 54 68 65 20  :MM:SS". .^(The 
13c30 6a 75 6c 69 61 6e 64 61 79 28 29 20 66 75 6e 63  julianday() func
13c40 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 74 68 65  tion returns the
13c50 20 0a 5b 68 74 74 70 3a 2f 2f 65 6e 2e 77 69 6b   .[http://en.wik
13c60 69 70 65 64 69 61 2e 6f 72 67 2f 77 69 6b 69 2f  ipedia.org/wiki/
13c70 4a 75 6c 69 61 6e 5f 64 61 79 20 7c 20 4a 75 6c  Julian_day | Jul
13c80 69 61 6e 20 64 61 79 5d 20 2d 20 74 68 65 0a 6e  ian day] - the.n
13c90 75 6d 62 65 72 20 6f 66 20 64 61 79 73 20 73 69  umber of days si
13ca0 6e 63 65 20 6e 6f 6f 6e 20 69 6e 20 47 72 65 65  nce noon in Gree
13cb0 6e 77 69 63 68 20 6f 6e 20 4e 6f 76 65 6d 62 65  nwich on Novembe
13cc0 72 20 32 34 2c 20 34 37 31 34 20 42 2e 43 2e 20  r 24, 4714 B.C. 
13cd0 0a 28 5b 68 74 74 70 3a 2f 2f 65 6e 2e 77 69 6b  .([http://en.wik
13ce0 69 70 65 64 69 61 2e 6f 72 67 2f 77 69 6b 69 2f  ipedia.org/wiki/
13cf0 50 72 6f 6c 65 70 74 69 63 5f 47 72 65 67 6f 72  Proleptic_Gregor
13d00 69 61 6e 5f 63 61 6c 65 6e 64 61 72 20 7c 20 50  ian_calendar | P
13d10 72 6f 6c 65 70 74 69 63 20 47 72 65 67 6f 72 69  roleptic Gregori
13d20 61 6e 20 63 61 6c 65 6e 64 61 72 5d 29 2e 29 5e  an calendar]).)^
13d30 0a 5e 54 68 65 20 73 74 72 66 74 69 6d 65 28 29  .^The strftime()
13d40 20 72 6f 75 74 69 6e 65 20 72 65 74 75 72 6e 73   routine returns
13d50 20 74 68 65 20 64 61 74 65 20 66 6f 72 6d 61 74   the date format
13d60 74 65 64 20 61 63 63 6f 72 64 69 6e 67 20 74 6f  ted according to
13d70 20 0a 74 68 65 20 66 6f 72 6d 61 74 20 73 74 72   .the format str
13d80 69 6e 67 20 73 70 65 63 69 66 69 65 64 20 61 73  ing specified as
13d90 20 74 68 65 20 66 69 72 73 74 20 61 72 67 75 6d   the first argum
13da0 65 6e 74 2e 0a 5e 54 68 65 20 66 6f 72 6d 61 74  ent..^The format
13db0 20 73 74 72 69 6e 67 20 73 75 70 70 6f 72 74 73   string supports
13dc0 20 74 68 65 20 6d 6f 73 74 20 63 6f 6d 6d 6f 6e   the most common
13dd0 20 73 75 62 73 74 69 74 75 74 69 6f 6e 73 20 66   substitutions f
13de0 6f 75 6e 64 20 69 6e 20 74 68 65 20 0a 5b 68 74  ound in the .[ht
13df0 74 70 3a 2f 2f 6f 70 65 6e 67 72 6f 75 70 2e 6f  tp://opengroup.o
13e00 72 67 2f 6f 6e 6c 69 6e 65 70 75 62 73 2f 30 30  rg/onlinepubs/00
13e10 37 39 30 38 37 39 39 2f 78 73 68 2f 73 74 72 66  7908799/xsh/strf
13e20 74 69 6d 65 2e 68 74 6d 6c 20 7c 20 73 74 72 66  time.html | strf
13e30 74 69 6d 65 28 29 20 66 75 6e 63 74 69 6f 6e 5d  time() function]
13e40 0a 66 72 6f 6d 20 74 68 65 20 73 74 61 6e 64 61  .from the standa
13e50 72 64 20 43 20 6c 69 62 72 61 72 79 20 70 6c 75  rd C library plu
13e60 73 20 74 77 6f 20 6e 65 77 20 73 75 62 73 74 69  s two new substi
13e70 74 75 74 69 6f 6e 73 2c 20 25 66 20 61 6e 64 20  tutions, %f and 
13e80 25 4a 2e 0a 5e 28 54 68 65 20 66 6f 6c 6c 6f 77  %J..^(The follow
13e90 69 6e 67 20 69 73 20 61 20 63 6f 6d 70 6c 65 74  ing is a complet
13ea0 65 20 6c 69 73 74 20 6f 66 20 76 61 6c 69 64 20  e list of valid 
13eb0 73 74 72 66 74 69 6d 65 28 29 20 73 75 62 73 74  strftime() subst
13ec0 69 74 75 74 69 6f 6e 73 3a 0a 3c 2f 70 3e 0a 0a  itutions:.</p>..
13ed0 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 3c 74 61  <blockquote>.<ta
13ee0 62 6c 65 20 62 6f 72 64 65 72 3d 22 30 22 20 63  ble border="0" c
13ef0 65 6c 6c 70 61 64 64 69 6e 67 3d 22 30 22 20 63  ellpadding="0" c
13f00 65 6c 6c 73 70 61 63 69 6e 67 3d 22 30 22 3e 0a  ellspacing="0">.
13f10 3c 74 72 3e 3c 74 64 3e 3c 74 64 20 77 69 64 74  <tr><td><td widt
13f20 68 3d 22 31 30 22 3e 3c 74 64 3e 3c 2f 74 72 3e  h="10"><td></tr>
13f30 0a 0a 3c 74 72 3e 3c 74 64 3e 20 25 64 20 3c 74  ..<tr><td> %d <t
13f40 64 3e 3c 74 64 3e 20 64 61 79 20 6f 66 20 6d 6f  d><td> day of mo
13f50 6e 74 68 3a 20 30 30 0a 3c 74 72 3e 3c 74 64 3e  nth: 00.<tr><td>
13f60 20 25 66 20 3c 74 64 3e 3c 74 64 3e 20 66 72 61   %f <td><td> fra
13f70 63 74 69 6f 6e 61 6c 20 73 65 63 6f 6e 64 73 3a  ctional seconds:
13f80 20 53 53 2e 53 53 53 0a 3c 74 72 3e 3c 74 64 3e   SS.SSS.<tr><td>
13f90 20 25 48 20 3c 74 64 3e 3c 74 64 3e 20 68 6f 75   %H <td><td> hou
13fa0 72 3a 20 30 30 2d 32 34 20 0a 3c 74 72 3e 3c 74  r: 00-24 .<tr><t
13fb0 64 3e 20 25 6a 20 3c 74 64 3e 3c 74 64 3e 20 64  d> %j <td><td> d
13fc0 61 79 20 6f 66 20 79 65 61 72 3a 20 30 30 31 2d  ay of year: 001-
13fd0 33 36 36 0a 3c 74 72 3e 3c 74 64 3e 20 25 4a 20  366.<tr><td> %J 
13fe0 3c 74 64 3e 3c 74 64 3e 20 4a 75 6c 69 61 6e 20  <td><td> Julian 
13ff0 64 61 79 20 6e 75 6d 62 65 72 0a 3c 74 72 3e 3c  day number.<tr><
14000 74 64 3e 20 25 6d 20 3c 74 64 3e 3c 74 64 3e 20  td> %m <td><td> 
14010 6d 6f 6e 74 68 3a 20 30 31 2d 31 32 0a 3c 74 72  month: 01-12.<tr
14020 3e 3c 74 64 3e 20 25 4d 20 3c 74 64 3e 3c 74 64  ><td> %M <td><td
14030 3e 20 6d 69 6e 75 74 65 3a 20 30 30 2d 35 39 0a  > minute: 00-59.
14040 3c 74 72 3e 3c 74 64 3e 20 25 73 20 3c 74 64 3e  <tr><td> %s <td>
14050 3c 74 64 3e 20 73 65 63 6f 6e 64 73 20 73 69 6e  <td> seconds sin
14060 63 65 20 31 39 37 30 2d 30 31 2d 30 31 0a 3c 74  ce 1970-01-01.<t
14070 72 3e 3c 74 64 3e 20 25 53 20 3c 74 64 3e 3c 74  r><td> %S <td><t
14080 64 3e 20 73 65 63 6f 6e 64 73 3a 20 30 30 2d 35  d> seconds: 00-5
14090 39 0a 3c 74 72 3e 3c 74 64 3e 20 25 77 20 3c 74  9.<tr><td> %w <t
140a0 64 3e 3c 74 64 3e 20 64 61 79 20 6f 66 20 77 65  d><td> day of we
140b0 65 6b 20 30 2d 36 20 77 69 74 68 20 73 75 6e 64  ek 0-6 with sund
140c0 61 79 3d 3d 30 0a 3c 74 72 3e 3c 74 64 3e 20 25  ay==0.<tr><td> %
140d0 57 20 3c 74 64 3e 3c 74 64 3e 20 77 65 65 6b 20  W <td><td> week 
140e0 6f 66 20 79 65 61 72 3a 20 30 30 2d 35 33 0a 3c  of year: 00-53.<
140f0 74 72 3e 3c 74 64 3e 20 25 59 20 3c 74 64 3e 3c  tr><td> %Y <td><
14100 74 64 3e 20 79 65 61 72 3a 20 30 30 30 30 2d 39  td> year: 0000-9
14110 39 39 39 0a 3c 74 72 3e 3c 74 64 3e 20 25 25 20  999.<tr><td> %% 
14120 3c 74 64 3e 3c 74 64 3e 20 25 0a 3c 2f 74 61 62  <td><td> %.</tab
14130 6c 65 3e 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65  le>.</blockquote
14140 3e 29 5e 0a 0a 3c 70 3e 0a 5e 28 4e 6f 74 69 63  >)^..<p>.^(Notic
14150 65 20 74 68 61 74 20 61 6c 6c 20 6f 74 68 65 72  e that all other
14160 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20 66   date and time f
14170 75 6e 63 74 69 6f 6e 73 20 63 61 6e 20 62 65 20  unctions can be 
14180 65 78 70 72 65 73 73 65 64 0a 69 6e 20 74 65 72  expressed.in ter
14190 6d 73 20 6f 66 20 73 74 72 66 74 69 6d 65 28 29  ms of strftime()
141a0 3a 0a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75  :.</p>..<blockqu
141b0 6f 74 65 3e 0a 3c 74 61 62 6c 65 20 62 6f 72 64  ote>.<table bord
141c0 65 72 3d 22 30 22 20 63 65 6c 6c 70 61 64 64 69  er="0" cellpaddi
141d0 6e 67 3d 22 30 22 20 63 65 6c 6c 73 70 61 63 69  ng="0" cellspaci
141e0 6e 67 3d 22 30 22 3e 0a 3c 74 72 3e 3c 74 64 3e  ng="0">.<tr><td>
141f0 3c 62 3e 46 75 6e 63 74 69 6f 6e 3c 2f 62 3e 3c  <b>Function</b><
14200 74 64 20 77 69 64 74 68 3d 22 33 30 22 3e 3c 74  td width="30"><t
14210 64 3e 3c 62 3e 45 71 75 69 76 61 6c 65 6e 74 20  d><b>Equivalent 
14220 73 74 72 66 74 69 6d 65 28 29 3c 2f 62 3e 0a 3c  strftime()</b>.<
14230 74 72 3e 3c 74 64 3e 20 20 20 64 61 74 65 28 2e  tr><td>   date(.
14240 2e 2e 29 20 20 20 20 20 20 3c 74 64 3e 3c 74 64  ..)      <td><td
14250 3e 20 20 73 74 72 66 74 69 6d 65 28 27 25 59 2d  >  strftime('%Y-
14260 25 6d 2d 25 64 27 2c 20 2e 2e 2e 29 0a 3c 74 72  %m-%d', ...).<tr
14270 3e 3c 74 64 3e 20 20 20 74 69 6d 65 28 2e 2e 2e  ><td>   time(...
14280 29 20 20 20 20 20 20 3c 74 64 3e 3c 74 64 3e 20  )      <td><td> 
14290 20 73 74 72 66 74 69 6d 65 28 27 25 48 3a 25 4d   strftime('%H:%M
142a0 3a 25 53 27 2c 20 2e 2e 2e 29 0a 3c 74 72 3e 3c  :%S', ...).<tr><
142b0 74 64 3e 20 20 20 64 61 74 65 74 69 6d 65 28 2e  td>   datetime(.
142c0 2e 2e 29 20 20 3c 74 64 3e 3c 74 64 3e 20 20 73  ..)  <td><td>  s
142d0 74 72 66 74 69 6d 65 28 27 25 59 2d 25 6d 2d 25  trftime('%Y-%m-%
142e0 64 20 25 48 3a 25 4d 3a 25 53 27 2c 20 2e 2e 2e  d %H:%M:%S', ...
142f0 29 0a 3c 74 72 3e 3c 74 64 3e 20 20 20 6a 75 6c  ).<tr><td>   jul
14300 69 61 6e 64 61 79 28 2e 2e 2e 29 20 3c 74 64 3e  ianday(...) <td>
14310 3c 74 64 3e 20 20 73 74 72 66 74 69 6d 65 28 27  <td>  strftime('
14320 25 4a 27 2c 20 2e 2e 2e 29 0a 3c 2f 74 61 62 6c  %J', ...).</tabl
14330 65 3e 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e  e>.</blockquote>
14340 29 5e 0a 0a 3c 70 3e 0a 54 68 65 20 6f 6e 6c 79  )^..<p>.The only
14350 20 72 65 61 73 6f 6e 73 20 66 6f 72 20 70 72 6f   reasons for pro
14360 76 69 64 69 6e 67 20 66 75 6e 63 74 69 6f 6e 73  viding functions
14370 20 6f 74 68 65 72 20 74 68 61 6e 20 73 74 72 66   other than strf
14380 74 69 6d 65 28 29 20 69 73 0a 66 6f 72 20 63 6f  time() is.for co
14390 6e 76 65 6e 69 65 6e 63 65 20 61 6e 64 20 66 6f  nvenience and fo
143a0 72 20 65 66 66 69 63 69 65 6e 63 79 2e 0a 3c 2f  r efficiency..</
143b0 70 3e 0a 0a 3c 68 33 3e 54 69 6d 65 20 53 74 72  p>..<h3>Time Str
143c0 69 6e 67 73 3c 2f 68 33 3e 0a 0a 3c 70 3e 5e 28  ings</h3>..<p>^(
143d0 41 20 74 69 6d 65 20 73 74 72 69 6e 67 20 63 61  A time string ca
143e0 6e 20 62 65 20 69 6e 20 61 6e 79 20 6f 66 20 74  n be in any of t
143f0 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 66 6f 72  he following for
14400 6d 61 74 73 3a 3c 2f 70 3e 0a 0a 3c 6f 6c 3e 0a  mats:</p>..<ol>.
14410 3c 6c 69 3e 20 3c 69 3e 59 59 59 59 2d 4d 4d 2d  <li> <i>YYYY-MM-
14420 44 44 3c 2f 69 3e 0a 3c 6c 69 3e 20 3c 69 3e 59  DD</i>.<li> <i>Y
14430 59 59 59 2d 4d 4d 2d 44 44 20 48 48 3a 4d 4d 3c  YYY-MM-DD HH:MM<
14440 2f 69 3e 0a 3c 6c 69 3e 20 3c 69 3e 59 59 59 59  /i>.<li> <i>YYYY
14450 2d 4d 4d 2d 44 44 20 48 48 3a 4d 4d 3a 53 53 3c  -MM-DD HH:MM:SS<
14460 2f 69 3e 0a 3c 6c 69 3e 20 3c 69 3e 59 59 59 59  /i>.<li> <i>YYYY
14470 2d 4d 4d 2d 44 44 20 48 48 3a 4d 4d 3a 53 53 2e  -MM-DD HH:MM:SS.
14480 53 53 53 3c 2f 69 3e 0a 3c 6c 69 3e 20 3c 69 3e  SSS</i>.<li> <i>
14490 59 59 59 59 2d 4d 4d 2d 44 44 3c 2f 69 3e 3c 62  YYYY-MM-DD</i><b
144a0 3e 54 3c 2f 62 3e 3c 69 3e 48 48 3a 4d 4d 3c 2f  >T</b><i>HH:MM</
144b0 69 3e 0a 3c 6c 69 3e 20 3c 69 3e 59 59 59 59 2d  i>.<li> <i>YYYY-
144c0 4d 4d 2d 44 44 3c 2f 69 3e 3c 62 3e 54 3c 2f 62  MM-DD</i><b>T</b
144d0 3e 3c 69 3e 48 48 3a 4d 4d 3a 53 53 3c 2f 69 3e  ><i>HH:MM:SS</i>
144e0 0a 3c 6c 69 3e 20 3c 69 3e 59 59 59 59 2d 4d 4d  .<li> <i>YYYY-MM
144f0 2d 44 44 3c 2f 69 3e 3c 62 3e 54 3c 2f 62 3e 3c  -DD</i><b>T</b><
14500 69 3e 48 48 3a 4d 4d 3a 53 53 2e 53 53 53 3c 2f  i>HH:MM:SS.SSS</
14510 69 3e 0a 3c 6c 69 3e 20 3c 69 3e 48 48 3a 4d 4d  i>.<li> <i>HH:MM
14520 3c 2f 69 3e 0a 3c 6c 69 3e 20 3c 69 3e 48 48 3a  </i>.<li> <i>HH:
14530 4d 4d 3a 53 53 3c 2f 69 3e 0a 3c 6c 69 3e 20 3c  MM:SS</i>.<li> <
14540 69 3e 48 48 3a 4d 4d 3a 53 53 2e 53 53 53 3c 2f  i>HH:MM:SS.SSS</
14550 69 3e 0a 3c 6c 69 3e 20 3c 62 3e 6e 6f 77 3c 2f  i>.<li> <b>now</
14560 62 3e 0a 3c 6c 69 3e 20 3c 69 3e 44 44 44 44 44  b>.<li> <i>DDDDD
14570 44 44 44 44 44 3c 2f 69 3e 0a 3c 2f 6f 6c 3e 29  DDDDD</i>.</ol>)
14580 5e 0a 0a 3c 70 3e 0a 5e 49 6e 20 66 6f 72 6d 61  ^..<p>.^In forma
14590 74 73 20 35 20 74 68 72 6f 75 67 68 20 37 2c 20  ts 5 through 7, 
145a0 74 68 65 20 22 54 22 20 69 73 20 61 20 6c 69 74  the "T" is a lit
145b0 65 72 61 6c 20 63 68 61 72 61 63 74 65 72 20 73  eral character s
145c0 65 70 61 72 61 74 69 6e 67 20 0a 74 68 65 20 64  eparating .the d
145d0 61 74 65 20 61 6e 64 20 74 68 65 20 74 69 6d 65  ate and the time
145e0 2c 20 61 73 20 72 65 71 75 69 72 65 64 20 62 79  , as required by
145f0 20 0a 5b 68 74 74 70 3a 2f 2f 77 77 77 2e 77 33   .[http://www.w3
14600 63 2e 6f 72 67 2f 54 52 2f 4e 4f 54 45 2d 64 61  c.org/TR/NOTE-da
14610 74 65 74 69 6d 65 20 7c 20 49 53 4f 2d 38 36 30  tetime | ISO-860
14620 31 5d 2e 20 0a 5e 46 6f 72 6d 61 74 73 20 38 20  1]. .^Formats 8 
14630 74 68 72 6f 75 67 68 20 31 30 20 74 68 61 74 20  through 10 that 
14640 73 70 65 63 69 66 79 20 6f 6e 6c 79 20 61 20 74  specify only a t
14650 69 6d 65 20 61 73 73 75 6d 65 20 61 20 64 61 74  ime assume a dat
14660 65 20 6f 66 20 0a 32 30 30 30 2d 30 31 2d 30 31  e of .2000-01-01
14670 2e 20 46 6f 72 6d 61 74 20 31 31 2c 20 74 68 65  . Format 11, the
14680 20 73 74 72 69 6e 67 20 27 6e 6f 77 27 2c 20 69   string 'now', i
14690 73 20 63 6f 6e 76 65 72 74 65 64 20 69 6e 74 6f  s converted into
146a0 20 74 68 65 20 0a 63 75 72 72 65 6e 74 20 64 61   the .current da
146b0 74 65 20 61 6e 64 20 74 69 6d 65 20 61 73 20 6f  te and time as o
146c0 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 74 68 65  btained from the
146d0 20 78 43 75 72 72 65 6e 74 54 69 6d 65 20 6d 65   xCurrentTime me
146e0 74 68 6f 64 0a 6f 66 20 74 68 65 20 5b 73 71 6c  thod.of the [sql
146f0 69 74 65 33 5f 76 66 73 5d 20 6f 62 6a 65 63 74  ite3_vfs] object
14700 20 69 6e 20 75 73 65 2e 0a 5e 5b 68 74 74 70 3a   in use..^[http:
14710 2f 2f 65 6e 2e 77 69 6b 69 70 65 64 69 61 2e 6f  //en.wikipedia.o
14720 72 67 2f 77 69 6b 69 2f 43 6f 6f 72 64 69 6e 61  rg/wiki/Coordina
14730 74 65 64 5f 55 6e 69 76 65 72 73 61 6c 5f 54 69  ted_Universal_Ti
14740 6d 65 20 7c 20 55 6e 69 76 65 72 73 61 6c 20 43  me | Universal C
14750 6f 6f 72 64 69 6e 61 74 65 64 20 54 69 6d 65 20  oordinated Time 
14760 28 55 54 43 29 5d 20 69 73 20 75 73 65 64 2e 20  (UTC)] is used. 
14770 0a 5e 46 6f 72 6d 61 74 20 31 32 20 69 73 20 74  .^Format 12 is t
14780 68 65 20 0a 5b 68 74 74 70 3a 2f 2f 65 6e 2e 77  he .[http://en.w
14790 69 6b 69 70 65 64 69 61 2e 6f 72 67 2f 77 69 6b  ikipedia.org/wik
147a0 69 2f 4a 75 6c 69 61 6e 5f 64 61 79 20 7c 20 4a  i/Julian_day | J
147b0 75 6c 69 61 6e 20 64 61 79 20 6e 75 6d 62 65 72  ulian day number
147c0 5d 0a 65 78 70 72 65 73 73 65 64 20 61 73 20 61  ].expressed as a
147d0 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20   floating point 
147e0 76 61 6c 75 65 2e 0a 3c 2f 70 3e 0a 0a 3c 68 33  value..</p>..<h3
147f0 3e 4d 6f 64 69 66 69 65 72 73 3c 2f 68 33 3e 0a  >Modifiers</h3>.
14800 0a 3c 70 3e 5e 54 68 65 20 74 69 6d 65 20 73 74  .<p>^The time st
14810 72 69 6e 67 20 63 61 6e 20 62 65 20 66 6f 6c 6c  ring can be foll
14820 6f 77 65 64 20 62 79 20 7a 65 72 6f 20 6f 72 20  owed by zero or 
14830 6d 6f 72 65 20 6d 6f 64 69 66 69 65 72 73 20 74  more modifiers t
14840 68 61 74 20 0a 61 6c 74 65 72 20 74 68 65 20 64  hat .alter the d
14850 61 74 65 20 61 6e 64 20 74 69 6d 65 20 73 74 72  ate and time str
14860 69 6e 67 2e 20 5e 45 61 63 68 20 6d 6f 64 69 66  ing. ^Each modif
14870 69 65 72 0a 69 73 20 61 20 74 72 61 6e 73 66 6f  ier.is a transfo
14880 72 6d 61 74 69 6f 6e 20 74 68 61 74 20 69 73 20  rmation that is 
14890 61 70 70 6c 69 65 64 20 74 6f 20 74 68 65 20 74  applied to the t
148a0 69 6d 65 20 76 61 6c 75 65 20 74 6f 20 69 74 73  ime value to its
148b0 20 6c 65 66 74 2e 0a 5e 4d 6f 64 69 66 69 65 72   left..^Modifier
148c0 73 20 61 72 65 20 61 70 70 6c 69 65 64 20 66 72  s are applied fr
148d0 6f 6d 20 6c 65 66 74 20 74 6f 20 72 69 67 68 74  om left to right
148e0 3b 20 6f 72 64 65 72 20 69 73 20 69 6d 70 6f 72  ; order is impor
148f0 74 61 6e 74 2e 0a 5e 28 54 68 65 20 61 76 61 69  tant..^(The avai
14900 6c 61 62 6c 65 20 6d 6f 64 69 66 69 65 72 73 20  lable modifiers 
14910 61 72 65 20 61 73 20 66 6f 6c 6c 6f 77 73 2e 3c  are as follows.<
14920 2f 70 3e 0a 0a 3c 6f 6c 3e 0a 3c 6c 69 3e 20 4e  /p>..<ol>.<li> N
14930 4e 4e 20 64 61 79 73 0a 3c 6c 69 3e 20 4e 4e 4e  NN days.<li> NNN
14940 20 68 6f 75 72 73 0a 3c 6c 69 3e 20 4e 4e 4e 20   hours.<li> NNN 
14950 6d 69 6e 75 74 65 73 0a 3c 6c 69 3e 20 4e 4e 4e  minutes.<li> NNN
14960 2e 4e 4e 4e 4e 20 73 65 63 6f 6e 64 73 0a 3c 6c  .NNNN seconds.<l
14970 69 3e 20 4e 4e 4e 20 6d 6f 6e 74 68 73 0a 3c 6c  i> NNN months.<l
14980 69 3e 20 4e 4e 4e 20 79 65 61 72 73 0a 3c 6c 69  i> NNN years.<li
14990 3e 20 73 74 61 72 74 20 6f 66 20 6d 6f 6e 74 68  > start of month
149a0 0a 3c 6c 69 3e 20 73 74 61 72 74 20 6f 66 20 79  .<li> start of y
149b0 65 61 72 0a 3c 6c 69 3e 20 73 74 61 72 74 20 6f  ear.<li> start o
149c0 66 20 64 61 79 0a 3c 6c 69 3e 20 77 65 65 6b 64  f day.<li> weekd
149d0 61 79 20 4e 0a 3c 6c 69 3e 20 75 6e 69 78 65 70  ay N.<li> unixep
149e0 6f 63 68 0a 3c 6c 69 3e 20 6c 6f 63 61 6c 74 69  och.<li> localti
149f0 6d 65 0a 3c 6c 69 3e 20 75 74 63 20 0a 3c 2f 6f  me.<li> utc .</o
14a00 6c 3e 29 5e 0a 0a 3c 70 3e 5e 54 68 65 20 66 69  l>)^..<p>^The fi
14a10 72 73 74 20 73 69 78 20 6d 6f 64 69 66 69 65 72  rst six modifier
14a20 73 20 28 31 20 74 68 72 6f 75 67 68 20 36 29 20  s (1 through 6) 
14a30 0a 73 69 6d 70 6c 79 20 61 64 64 20 74 68 65 20  .simply add the 
14a40 73 70 65 63 69 66 69 65 64 20 61 6d 6f 75 6e 74  specified amount
14a50 20 6f 66 20 74 69 6d 65 20 74 6f 20 74 68 65 20   of time to the 
14a60 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20 0a 73  date and time .s
14a70 70 65 63 69 66 69 65 64 20 62 79 20 74 68 65 20  pecified by the 
14a80 70 72 65 63 65 64 69 6e 67 20 74 69 6d 65 73 74  preceding timest
14a90 72 69 6e 67 20 61 6e 64 20 6d 6f 64 69 66 69 65  ring and modifie
14aa0 72 73 2e 0a 5e 4e 6f 74 65 20 74 68 61 74 20 22  rs..^Note that "
14ab0 26 70 6c 75 73 6d 6e 3b 4e 4e 4e 20 6d 6f 6e 74  &plusmn;NNN mont
14ac0 68 73 22 20 77 6f 72 6b 73 20 62 79 20 72 65 6e  hs" works by ren
14ad0 64 65 72 69 6e 67 20 74 68 65 20 6f 72 69 67 69  dering the origi
14ae0 6e 61 6c 20 64 61 74 65 20 69 6e 74 6f 0a 74 68  nal date into.th
14af0 65 20 59 59 59 59 2d 4d 4d 2d 44 44 20 66 6f 72  e YYYY-MM-DD for
14b00 6d 61 74 2c 20 61 64 64 69 6e 67 20 74 68 65 20  mat, adding the 
14b10 26 70 6c 75 73 6d 6e 3b 4e 4e 4e 20 74 6f 20 74  &plusmn;NNN to t
14b20 68 65 20 4d 4d 20 6d 6f 6e 74 68 20 76 61 6c 75  he MM month valu
14b30 65 2c 20 74 68 65 6e 0a 6e 6f 72 6d 61 6c 69 7a  e, then.normaliz
14b40 69 6e 67 20 74 68 65 20 72 65 73 75 6c 74 2e 20  ing the result. 
14b50 20 5e 54 68 75 73 2c 20 66 6f 72 20 65 78 61 6d   ^Thus, for exam
14b60 70 6c 65 2c 20 74 68 65 20 64 61 74 61 20 32 30  ple, the data 20
14b70 30 31 2d 30 33 2d 33 31 20 6d 6f 64 69 66 69 65  01-03-31 modifie
14b80 64 0a 62 79 20 27 2b 31 20 6d 6f 6e 74 68 27 20  d.by '+1 month' 
14b90 69 6e 69 74 69 61 6c 6c 79 20 79 69 65 6c 64 73  initially yields
14ba0 20 32 30 30 31 2d 30 34 2d 33 31 2c 20 62 75 74   2001-04-31, but
14bb0 20 41 70 72 69 6c 20 6f 6e 6c 79 20 68 61 73 20   April only has 
14bc0 33 30 20 64 61 79 73 0a 73 6f 20 74 68 65 20 64  30 days.so the d
14bd0 61 74 65 20 69 73 20 6e 6f 72 6d 61 6c 69 7a 65  ate is normalize
14be0 64 20 74 6f 20 32 30 30 31 2d 30 35 2d 30 31 2e  d to 2001-05-01.
14bf0 20 20 5e 41 20 73 69 6d 69 6c 61 72 20 65 66 66    ^A similar eff
14c00 65 63 74 20 6f 63 63 75 72 73 20 77 68 65 6e 0a  ect occurs when.
14c10 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 64 61 74  the original dat
14c20 65 20 69 73 20 46 65 62 72 75 61 72 79 20 32 39  e is February 29
14c30 20 6f 66 20 61 20 6c 65 61 70 79 65 61 72 20 61   of a leapyear a
14c40 6e 64 20 74 68 65 20 6d 6f 64 69 66 69 65 72 20  nd the modifier 
14c50 69 73 0a 26 70 6c 75 73 6d 6e 3b 4e 20 79 65 61  is.&plusmn;N yea
14c60 72 73 20 77 68 65 72 65 20 4e 20 69 73 20 6e 6f  rs where N is no
14c70 74 20 61 20 6d 75 6c 74 69 70 6c 65 20 6f 66 20  t a multiple of 
14c80 66 6f 75 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54  four.</p>..<p>^T
14c90 68 65 20 22 73 74 61 72 74 20 6f 66 22 20 6d 6f  he "start of" mo
14ca0 64 69 66 69 65 72 73 20 28 37 20 74 68 72 6f 75  difiers (7 throu
14cb0 67 68 20 39 29 20 73 68 69 66 74 20 74 68 65 20  gh 9) shift the 
14cc0 64 61 74 65 20 62 61 63 6b 77 61 72 64 73 20 0a  date backwards .
14cd0 74 6f 20 74 68 65 20 62 65 67 69 6e 6e 69 6e 67  to the beginning
14ce0 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20   of the current 
14cf0 6d 6f 6e 74 68 2c 20 79 65 61 72 20 6f 72 20 64  month, year or d
14d00 61 79 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65  ay.</p>..<p>^The
14d10 20 22 77 65 65 6b 64 61 79 22 20 6d 6f 64 69 66   "weekday" modif
14d20 69 65 72 20 61 64 76 61 6e 63 65 73 20 74 68 65  ier advances the
14d30 20 64 61 74 65 20 66 6f 72 77 61 72 64 20 74 6f   date forward to
14d40 20 74 68 65 20 6e 65 78 74 20 64 61 74 65 20 0a   the next date .
14d50 77 68 65 72 65 20 74 68 65 20 77 65 65 6b 64 61  where the weekda
14d60 79 20 6e 75 6d 62 65 72 20 69 73 20 4e 2e 20 53  y number is N. S
14d70 75 6e 64 61 79 20 69 73 20 30 2c 20 4d 6f 6e 64  unday is 0, Mond
14d80 61 79 20 69 73 20 31 2c 20 61 6e 64 20 73 6f 20  ay is 1, and so 
14d90 66 6f 72 74 68 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e  forth.</p>..<p>^
14da0 54 68 65 20 22 75 6e 69 78 65 70 6f 63 68 22 20  The "unixepoch" 
14db0 6d 6f 64 69 66 69 65 72 20 28 31 31 29 20 6f 6e  modifier (11) on
14dc0 6c 79 20 77 6f 72 6b 73 20 69 66 20 69 74 20 69  ly works if it i
14dd0 6d 6d 65 64 69 61 74 65 6c 79 20 66 6f 6c 6c 6f  mmediately follo
14de0 77 73 20 0a 61 20 74 69 6d 65 73 74 72 69 6e 67  ws .a timestring
14df0 20 69 6e 20 74 68 65 20 44 44 44 44 44 44 44 44   in the DDDDDDDD
14e00 44 44 20 66 6f 72 6d 61 74 2e 20 0a 5e 54 68 69  DD format. .^Thi
14e10 73 20 6d 6f 64 69 66 69 65 72 20 63 61 75 73 65  s modifier cause
14e20 73 20 74 68 65 20 44 44 44 44 44 44 44 44 44 44  s the DDDDDDDDDD
14e30 20 74 6f 20 62 65 20 69 6e 74 65 72 70 72 65 74   to be interpret
14e40 65 64 20 6e 6f 74 20 0a 61 73 20 61 20 4a 75 6c  ed not .as a Jul
14e50 69 61 6e 20 64 61 79 20 6e 75 6d 62 65 72 20 61  ian day number a
14e60 73 20 69 74 20 6e 6f 72 6d 61 6c 6c 79 20 77 6f  s it normally wo
14e70 75 6c 64 20 62 65 2c 20 62 75 74 20 61 73 0a 5b  uld be, but as.[
14e80 68 74 74 70 3a 2f 2f 65 6e 2e 77 69 6b 69 70 65  http://en.wikipe
14e90 64 69 61 2e 6f 72 67 2f 77 69 6b 69 2f 55 6e 69  dia.org/wiki/Uni
14ea0 78 5f 74 69 6d 65 20 7c 20 55 6e 69 78 20 54 69  x_time | Unix Ti
14eb0 6d 65 5d 20 2d 20 74 68 65 20 0a 6e 75 6d 62 65  me] - the .numbe
14ec0 72 20 6f 66 20 73 65 63 6f 6e 64 73 20 73 69 6e  r of seconds sin
14ed0 63 65 20 31 39 37 30 2e 20 20 49 66 20 74 68 65  ce 1970.  If the
14ee0 20 22 75 6e 69 78 65 70 6f 63 68 22 20 6d 6f 64   "unixepoch" mod
14ef0 69 66 69 65 72 20 64 6f 65 73 20 6e 6f 74 0a 66  ifier does not.f
14f00 6f 6c 6c 6f 77 20 61 20 74 69 6d 65 73 74 72 69  ollow a timestri
14f10 6e 67 20 6f 66 20 74 68 65 20 66 6f 72 6d 20 44  ng of the form D
14f20 44 44 44 44 44 44 44 44 44 20 77 68 69 63 68 20  DDDDDDDDD which 
14f30 65 78 70 72 65 73 73 65 73 20 74 68 65 20 6e 75  expresses the nu
14f40 6d 62 65 72 0a 6f 66 20 73 65 63 6f 6e 64 73 20  mber.of seconds 
14f50 73 69 6e 63 65 20 31 39 37 30 20 6f 72 20 69 66  since 1970 or if
14f60 20 6f 74 68 65 72 20 6d 6f 64 69 66 69 65 72 73   other modifiers
14f70 0a 73 65 70 61 72 61 74 65 20 74 68 65 20 22 75  .separate the "u
14f80 6e 69 78 65 70 6f 63 68 22 20 6d 6f 64 69 66 69  nixepoch" modifi
14f90 65 72 20 66 72 6f 6d 20 70 72 69 6f 72 20 44 44  er from prior DD
14fa0 44 44 44 44 44 44 44 44 20 74 68 65 6e 20 74 68  DDDDDDDD then th
14fb0 65 0a 62 65 68 61 76 69 6f 72 20 69 73 20 75 6e  e.behavior is un
14fc0 64 65 66 69 6e 65 64 2e 0a 44 75 65 20 74 6f 20  defined..Due to 
14fd0 70 72 65 63 69 73 69 6f 6e 20 6c 69 6d 69 74 61  precision limita
14fe0 74 69 6f 6e 73 20 69 6d 70 6f 73 65 64 20 62 79  tions imposed by
14ff0 20 74 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74   the implementat
15000 69 6f 6e 73 20 75 73 65 0a 6f 66 20 36 34 2d 62  ions use.of 64-b
15010 69 74 20 69 6e 74 65 67 65 72 73 2c 20 74 68 65  it integers, the
15020 20 22 75 6e 69 78 65 70 6f 63 68 22 20 6d 6f 64   "unixepoch" mod
15030 69 66 69 65 72 20 6f 6e 6c 79 20 77 6f 72 6b 73  ifier only works
15040 20 66 6f 72 0a 64 61 74 65 73 20 62 65 74 77 65   for.dates betwe
15050 65 6e 20 30 30 30 30 2d 30 31 2d 30 31 20 30 30  en 0000-01-01 00
15060 3a 30 30 3a 30 30 20 61 6e 64 20 35 33 35 32 2d  :00:00 and 5352-
15070 31 31 2d 30 31 20 31 30 3a 35 32 3a 34 37 20 28  11-01 10:52:47 (
15080 75 6e 69 78 20 74 69 6d 65 73 0a 6f 66 20 2d 36  unix times.of -6
15090 32 31 36 37 32 31 39 32 30 30 20 74 68 72 6f 75  2167219200 throu
150a0 67 68 20 31 30 36 37 35 31 39 39 31 36 37 29 2e  gh 10675199167).
150b0 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20 22 6c  </p>..<p>^The "l
150c0 6f 63 61 6c 74 69 6d 65 22 20 6d 6f 64 69 66 69  ocaltime" modifi
150d0 65 72 20 28 31 32 29 20 61 73 73 75 6d 65 73 20  er (12) assumes 
150e0 74 68 65 20 74 69 6d 65 20 73 74 72 69 6e 67 20  the time string 
150f0 74 6f 20 69 74 73 20 6c 65 66 74 20 69 73 20 69  to its left is i
15100 6e 0a 55 6e 69 76 65 72 73 61 6c 20 43 6f 6f 72  n.Universal Coor
15110 64 69 6e 61 74 65 64 20 54 69 6d 65 20 28 55 54  dinated Time (UT
15120 43 29 20 61 6e 64 20 61 64 6a 75 73 74 73 20 74  C) and adjusts t
15130 68 65 20 74 69 6d 65 0a 73 74 72 69 6e 67 20 73  he time.string s
15140 6f 20 74 68 61 74 20 69 74 20 64 69 73 70 6c 61  o that it displa
15150 79 73 20 6c 6f 63 61 6c 74 69 6d 65 2e 20 20 49  ys localtime.  I
15160 66 20 22 6c 6f 63 61 6c 74 69 6d 65 22 0a 66 6f  f "localtime".fo
15170 6c 6c 6f 77 73 20 61 20 74 69 6d 65 20 74 68 61  llows a time tha
15180 74 20 69 73 20 6e 6f 74 20 55 54 43 2c 20 74 68  t is not UTC, th
15190 65 6e 20 74 68 65 20 62 65 68 61 76 69 6f 72 20  en the behavior 
151a0 69 73 20 75 6e 64 65 66 69 6e 65 64 2e 0a 5e 28  is undefined..^(
151b0 54 68 65 20 22 75 74 63 22 20 69 73 20 74 68 65  The "utc" is the
151c0 20 6f 70 70 6f 73 69 74 65 20 6f 66 20 22 6c 6f   opposite of "lo
151d0 63 61 6c 74 69 6d 65 22 2e 20 20 22 75 74 63 22  caltime".  "utc"
151e0 20 61 73 73 75 6d 65 73 20 74 68 61 74 20 74 68   assumes that th
151f0 65 20 73 74 72 69 6e 67 0a 74 6f 20 69 74 73 20  e string.to its 
15200 6c 65 66 74 20 69 73 20 69 6e 20 74 68 65 20 6c  left is in the l
15210 6f 63 61 6c 20 74 69 6d 65 7a 6f 6e 65 20 61 6e  ocal timezone an
15220 64 20 61 64 6a 75 73 74 73 20 74 68 61 74 20 73  d adjusts that s
15230 74 72 69 6e 67 20 74 6f 20 62 65 20 69 6e 20 55  tring to be in U
15240 54 43 2e 29 5e 0a 49 66 20 74 68 65 20 70 72 69  TC.)^.If the pri
15250 6f 72 20 73 74 72 69 6e 67 20 69 73 20 6e 6f 74  or string is not
15260 20 69 6e 20 6c 6f 63 61 6c 74 69 6d 65 2c 20 74   in localtime, t
15270 68 65 6e 20 74 68 65 20 72 65 73 75 6c 74 20 6f  hen the result o
15280 66 20 22 75 74 63 22 20 69 73 0a 75 6e 64 65 66  f "utc" is.undef
15290 69 6e 65 64 2e 3c 2f 70 3e 0a 0a 3c 68 33 3e 45  ined.</p>..<h3>E
152a0 78 61 6d 70 6c 65 73 3c 2f 68 33 3e 0a 0a 5e 28  xamples</h3>..^(
152b0 3c 70 3e 43 6f 6d 70 75 74 65 20 74 68 65 20 63  <p>Compute the c
152c0 75 72 72 65 6e 74 20 64 61 74 65 2e 3c 70 3e 0a  urrent date.<p>.
152d0 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 53 45 4c  .<blockquote>SEL
152e0 45 43 54 20 64 61 74 65 28 27 6e 6f 77 27 29 3b  ECT date('now');
152f0 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 29 5e 0a  </blockquote>)^.
15300 0a 5e 28 3c 70 3e 43 6f 6d 70 75 74 65 20 74 68  .^(<p>Compute th
15310 65 20 6c 61 73 74 20 64 61 79 20 6f 66 20 74 68  e last day of th
15320 65 20 63 75 72 72 65 6e 74 20 6d 6f 6e 74 68 2e  e current month.
15330 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74  </p>..<blockquot
15340 65 3e 53 45 4c 45 43 54 20 64 61 74 65 28 27 6e  e>SELECT date('n
15350 6f 77 27 2c 27 73 74 61 72 74 20 6f 66 20 6d 6f  ow','start of mo
15360 6e 74 68 27 2c 27 2b 31 20 6d 6f 6e 74 68 27 2c  nth','+1 month',
15370 27 2d 31 20 64 61 79 27 29 3b 0a 3c 2f 62 6c 6f  '-1 day');.</blo
15380 63 6b 71 75 6f 74 65 3e 29 5e 0a 0a 5e 28 3c 70  ckquote>)^..^(<p
15390 3e 43 6f 6d 70 75 74 65 20 74 68 65 20 64 61 74  >Compute the dat
153a0 65 20 61 6e 64 20 74 69 6d 65 20 67 69 76 65 6e  e and time given
153b0 20 61 20 75 6e 69 78 20 74 69 6d 65 73 74 61 6d   a unix timestam
153c0 70 20 31 30 39 32 39 34 31 34 36 36 2e 3c 2f 70  p 1092941466.</p
153d0 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a  >..<blockquote>.
153e0 20 20 20 20 53 45 4c 45 43 54 20 64 61 74 65 74      SELECT datet
153f0 69 6d 65 28 31 30 39 32 39 34 31 34 36 36 2c 20  ime(1092941466, 
15400 27 75 6e 69 78 65 70 6f 63 68 27 29 3b 0a 3c 2f  'unixepoch');.</
15410 62 6c 6f 63 6b 71 75 6f 74 65 3e 29 5e 0a 0a 5e  blockquote>)^..^
15420 28 3c 70 3e 43 6f 6d 70 75 74 65 20 74 68 65 20  (<p>Compute the 
15430 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20 67 69  date and time gi
15440 76 65 6e 20 61 20 75 6e 69 78 20 74 69 6d 65 73  ven a unix times
15450 74 61 6d 70 20 31 30 39 32 39 34 31 34 36 36 2c  tamp 1092941466,
15460 20 61 6e 64 20 0a 63 6f 6d 70 65 6e 73 61 74 65   and .compensate
15470 20 66 6f 72 20 79 6f 75 72 20 6c 6f 63 61 6c 20   for your local 
15480 74 69 6d 65 7a 6f 6e 65 2e 3c 2f 70 3e 0a 0a 3c  timezone.</p>..<
15490 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 20 20 53 45  blockquote>.  SE
154a0 4c 45 43 54 20 64 61 74 65 74 69 6d 65 28 31 30  LECT datetime(10
154b0 39 32 39 34 31 34 36 36 2c 20 27 75 6e 69 78 65  92941466, 'unixe
154c0 70 6f 63 68 27 2c 20 27 6c 6f 63 61 6c 74 69 6d  poch', 'localtim
154d0 65 27 29 3b 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74  e');.</blockquot
154e0 65 3e 29 5e 0a 0a 5e 28 3c 70 3e 43 6f 6d 70 75  e>)^..^(<p>Compu
154f0 74 65 20 74 68 65 20 63 75 72 72 65 6e 74 20 75  te the current u
15500 6e 69 78 20 74 69 6d 65 73 74 61 6d 70 2e 3c 2f  nix timestamp.</
15510 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e  p>..<blockquote>
15520 0a 20 20 53 45 4c 45 43 54 20 73 74 72 66 74 69  .  SELECT strfti
15530 6d 65 28 27 25 73 27 2c 27 6e 6f 77 27 29 3b 0a  me('%s','now');.
15540 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 29 5e 0a  </blockquote>)^.
15550 0a 5e 28 3c 70 3e 43 6f 6d 70 75 74 65 20 74 68  .^(<p>Compute th
15560 65 20 6e 75 6d 62 65 72 20 6f 66 20 64 61 79 73  e number of days
15570 20 73 69 6e 63 65 20 74 68 65 20 73 69 67 6e 69   since the signi
15580 6e 67 20 6f 66 20 74 68 65 20 55 53 20 44 65 63  ng of the US Dec
15590 6c 61 72 61 74 69 6f 6e 0a 6f 66 20 49 6e 64 65  laration.of Inde
155a0 70 65 6e 64 65 6e 74 2e 3c 2f 70 3e 0a 0a 3c 62  pendent.</p>..<b
155b0 6c 6f 63 6b 71 75 6f 74 65 3e 0a 20 20 53 45 4c  lockquote>.  SEL
155c0 45 43 54 20 6a 75 6c 69 61 6e 64 61 79 28 27 6e  ECT julianday('n
155d0 6f 77 27 29 20 2d 20 6a 75 6c 69 61 6e 64 61 79  ow') - julianday
155e0 28 27 31 37 37 36 2d 30 37 2d 30 34 27 29 3b 0a  ('1776-07-04');.
155f0 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 29 5e 0a  </blockquote>)^.
15600 0a 5e 28 3c 70 3e 43 6f 6d 70 75 74 65 20 74 68  .^(<p>Compute th
15610 65 20 6e 75 6d 62 65 72 20 6f 66 20 73 65 63 6f  e number of seco
15620 6e 64 73 20 73 69 6e 63 65 20 61 20 70 61 72 74  nds since a part
15630 69 63 75 6c 61 72 20 6d 6f 6d 65 6e 74 20 69 6e  icular moment in
15640 20 32 30 30 34 3a 3c 2f 70 3e 0a 0a 3c 62 6c 6f   2004:</p>..<blo
15650 63 6b 71 75 6f 74 65 3e 0a 20 20 53 45 4c 45 43  ckquote>.  SELEC
15660 54 20 73 74 72 66 74 69 6d 65 28 27 25 73 27 2c  T strftime('%s',
15670 27 6e 6f 77 27 29 20 2d 20 73 74 72 66 74 69 6d  'now') - strftim
15680 65 28 27 25 73 27 2c 27 32 30 30 34 2d 30 31 2d  e('%s','2004-01-
15690 30 31 20 30 32 3a 33 34 3a 35 36 27 29 3b 0a 3c  01 02:34:56');.<
156a0 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 29 5e 0a 0a  /blockquote>)^..
156b0 5e 28 3c 70 3e 0a 43 6f 6d 70 75 74 65 20 74 68  ^(<p>.Compute th
156c0 65 20 64 61 74 65 20 6f 66 20 74 68 65 20 66 69  e date of the fi
156d0 72 73 74 20 54 75 65 73 64 61 79 20 69 6e 20 4f  rst Tuesday in O
156e0 63 74 6f 62 65 72 0a 66 6f 72 20 74 68 65 20 63  ctober.for the c
156f0 75 72 72 65 6e 74 20 79 65 61 72 2e 0a 3c 2f 70  urrent year..</p
15700 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a  >..<blockquote>.
15710 20 20 53 45 4c 45 43 54 20 64 61 74 65 28 27 6e    SELECT date('n
15720 6f 77 27 2c 27 73 74 61 72 74 20 6f 66 20 79 65  ow','start of ye
15730 61 72 27 2c 27 2b 39 20 6d 6f 6e 74 68 73 27 2c  ar','+9 months',
15740 27 77 65 65 6b 64 61 79 20 32 27 29 3b 0a 3c 2f  'weekday 2');.</
15750 62 6c 6f 63 6b 71 75 6f 74 65 3e 29 5e 0a 0a 5e  blockquote>)^..^
15760 28 3c 70 3e 43 6f 6d 70 75 74 65 20 74 68 65 20  (<p>Compute the 
15770 74 69 6d 65 20 73 69 6e 63 65 20 74 68 65 20 75  time since the u
15780 6e 69 78 20 65 70 6f 63 68 20 69 6e 20 73 65 63  nix epoch in sec
15790 6f 6e 64 73 20 0a 28 6c 69 6b 65 20 73 74 72 66  onds .(like strf
157a0 74 69 6d 65 28 27 25 73 27 2c 27 6e 6f 77 27 29  time('%s','now')
157b0 20 65 78 63 65 70 74 20 69 6e 63 6c 75 64 65 73   except includes
157c0 20 66 72 61 63 74 69 6f 6e 61 6c 20 70 61 72 74   fractional part
157d0 29 3a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75  ):</p>..<blockqu
157e0 6f 74 65 3e 0a 20 20 53 45 4c 45 43 54 20 28 6a  ote>.  SELECT (j
157f0 75 6c 69 61 6e 64 61 79 28 27 6e 6f 77 27 29 20  ulianday('now') 
15800 2d 20 32 34 34 30 35 38 37 2e 35 29 2a 38 36 34  - 2440587.5)*864
15810 30 30 2e 30 3b 0a 3c 2f 62 6c 6f 63 6b 71 75 6f  00.0;.</blockquo
15820 74 65 3e 29 5e 0a 0a 3c 68 33 3e 43 61 76 65 61  te>)^..<h3>Cavea
15830 74 73 20 41 6e 64 20 42 75 67 73 3c 2f 68 33 3e  ts And Bugs</h3>
15840 0a 0a 3c 70 3e 54 68 65 20 63 6f 6d 70 75 74 61  ..<p>The computa
15850 74 69 6f 6e 20 6f 66 20 6c 6f 63 61 6c 20 74 69  tion of local ti
15860 6d 65 20 64 65 70 65 6e 64 73 20 68 65 61 76 69  me depends heavi
15870 6c 79 20 6f 6e 20 74 68 65 20 77 68 69 6d 20 0a  ly on the whim .
15880 6f 66 20 70 6f 6c 69 74 69 63 69 61 6e 73 20 61  of politicians a
15890 6e 64 20 69 73 20 74 68 75 73 20 64 69 66 66 69  nd is thus diffi
158a0 63 75 6c 74 20 74 6f 20 67 65 74 20 63 6f 72 72  cult to get corr
158b0 65 63 74 20 66 6f 72 20 0a 61 6c 6c 20 6c 6f 63  ect for .all loc
158c0 61 6c 65 73 2e 20 5e 49 6e 20 74 68 69 73 20 69  ales. ^In this i
158d0 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2c 20 74  mplementation, t
158e0 68 65 20 73 74 61 6e 64 61 72 64 20 43 20 6c 69  he standard C li
158f0 62 72 61 72 79 20 0a 66 75 6e 63 74 69 6f 6e 20  brary .function 
15900 6c 6f 63 61 6c 74 69 6d 65 5f 72 28 29 20 69 73  localtime_r() is
15910 20 75 73 65 64 20 74 6f 20 61 73 73 69 73 74 20   used to assist 
15920 69 6e 20 74 68 65 20 63 61 6c 63 75 6c 61 74 69  in the calculati
15930 6f 6e 20 6f 66 20 0a 6c 6f 63 61 6c 20 74 69 6d  on of .local tim
15940 65 2e 20 20 5e 28 54 68 65 20 0a 6c 6f 63 61 6c  e.  ^(The .local
15950 74 69 6d 65 5f 72 28 29 20 43 20 66 75 6e 63 74  time_r() C funct
15960 69 6f 6e 20 6e 6f 72 6d 61 6c 6c 79 20 6f 6e 6c  ion normally onl
15970 79 20 77 6f 72 6b 73 20 66 6f 72 20 79 65 61 72  y works for year
15980 73 0a 62 65 74 77 65 65 6e 20 31 39 37 30 20 61  s.between 1970 a
15990 6e 64 20 32 30 33 37 2e 20 46 6f 72 20 64 61 74  nd 2037. For dat
159a0 65 73 20 6f 75 74 73 69 64 65 20 74 68 69 73 20  es outside this 
159b0 72 61 6e 67 65 2c 20 53 51 4c 69 74 65 20 0a 61  range, SQLite .a
159c0 74 74 65 6d 70 74 73 20 74 6f 20 6d 61 70 20 74  ttempts to map t
159d0 68 65 20 79 65 61 72 20 69 6e 74 6f 20 61 6e 20  he year into an 
159e0 65 71 75 69 76 61 6c 65 6e 74 20 79 65 61 72 20  equivalent year 
159f0 77 69 74 68 69 6e 20 0a 74 68 69 73 20 72 61 6e  within .this ran
15a00 67 65 2c 20 64 6f 20 74 68 65 20 63 61 6c 63 75  ge, do the calcu
15a10 6c 61 74 69 6f 6e 2c 20 74 68 65 6e 20 6d 61 70  lation, then map
15a20 20 74 68 65 20 79 65 61 72 20 62 61 63 6b 2e 29   the year back.)
15a30 5e 3c 2f 70 3e 0a 0a 0a 3c 70 3e 5e 28 54 68 65  ^</p>...<p>^(The
15a40 73 65 20 66 75 6e 63 74 69 6f 6e 73 20 6f 6e 6c  se functions onl
15a50 79 20 77 6f 72 6b 20 66 6f 72 20 64 61 74 65 73  y work for dates
15a60 20 62 65 74 77 65 65 6e 20 30 30 30 30 2d 30 31   between 0000-01
15a70 2d 30 31 20 30 30 3a 30 30 3a 30 30 0a 61 6e 64  -01 00:00:00.and
15a80 20 39 39 39 39 2d 31 32 2d 33 31 20 32 33 3a 35   9999-12-31 23:5
15a90 39 3a 35 39 20 28 6a 75 6c 69 64 61 6e 20 64 61  9:59 (julidan da
15aa0 79 20 6e 75 6d 62 65 72 73 20 31 37 32 31 30 35  y numbers 172105
15ab0 39 2e 35 20 74 68 72 6f 75 67 68 20 35 33 37 33  9.5 through 5373
15ac0 34 38 34 2e 35 29 2e 29 5e 0a 46 6f 72 20 64 61  484.5).)^.For da
15ad0 74 65 73 20 6f 75 74 73 69 64 65 20 74 68 61 74  tes outside that
15ae0 20 72 61 6e 67 65 2c 20 74 68 65 20 72 65 73 75   range, the resu
15af0 6c 74 73 20 6f 66 20 74 68 65 73 65 0a 66 75 6e  lts of these.fun
15b00 63 74 69 6f 6e 73 20 61 72 65 20 75 6e 64 65 66  ctions are undef
15b10 69 6e 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 4e 6f  ined.</p>..<p>No
15b20 6e 2d 56 69 73 74 61 20 57 69 6e 64 6f 77 73 20  n-Vista Windows 
15b30 70 6c 61 74 66 6f 72 6d 73 20 6f 6e 6c 79 20 73  platforms only s
15b40 75 70 70 6f 72 74 20 6f 6e 65 20 73 65 74 20 6f  upport one set o
15b50 66 20 44 53 54 20 72 75 6c 65 73 2e 20 0a 56 69  f DST rules. .Vi
15b60 73 74 61 20 6f 6e 6c 79 20 73 75 70 70 6f 72 74  sta only support
15b70 73 20 74 77 6f 2e 20 54 68 65 72 65 66 6f 72 65  s two. Therefore
15b80 2c 20 6f 6e 20 74 68 65 73 65 20 70 6c 61 74 66  , on these platf
15b90 6f 72 6d 73 2c 20 0a 68 69 73 74 6f 72 69 63 61  orms, .historica
15ba0 6c 20 44 53 54 20 63 61 6c 63 75 6c 61 74 69 6f  l DST calculatio
15bb0 6e 73 20 77 69 6c 6c 20 62 65 20 69 6e 63 6f 72  ns will be incor
15bc0 72 65 63 74 2e 20 0a 46 6f 72 20 65 78 61 6d 70  rect. .For examp
15bd0 6c 65 2c 20 69 6e 20 74 68 65 20 55 53 2c 20 69  le, in the US, i
15be0 6e 20 32 30 30 37 20 74 68 65 20 44 53 54 20 72  n 2007 the DST r
15bf0 75 6c 65 73 20 63 68 61 6e 67 65 64 2e 20 0a 4e  ules changed. .N
15c00 6f 6e 2d 56 69 73 74 61 20 57 69 6e 64 6f 77 73  on-Vista Windows
15c10 20 70 6c 61 74 66 6f 72 6d 73 20 61 70 70 6c 79   platforms apply
15c20 20 74 68 65 20 6e 65 77 20 32 30 30 37 20 44 53   the new 2007 DS
15c30 54 20 72 75 6c 65 73 20 0a 74 6f 20 61 6c 6c 20  T rules .to all 
15c40 70 72 65 76 69 6f 75 73 20 79 65 61 72 73 20 61  previous years a
15c50 73 20 77 65 6c 6c 2e 20 56 69 73 74 61 20 64 6f  s well. Vista do
15c60 65 73 20 73 6f 6d 65 77 68 61 74 20 62 65 74 74  es somewhat bett
15c70 65 72 0a 67 65 74 74 69 6e 67 20 72 65 73 75 6c  er.getting resul
15c80 74 73 20 63 6f 72 72 65 63 74 20 62 61 63 6b 20  ts correct back 
15c90 74 6f 20 31 39 38 36 2c 20 77 68 65 6e 20 74 68  to 1986, when th
15ca0 65 20 72 75 6c 65 73 20 77 65 72 65 20 61 6c 73  e rules were als
15cb0 6f 20 63 68 61 6e 67 65 64 2e 3c 2f 70 3e 0a 0a  o changed.</p>..
15cc0 3c 70 3e 41 6c 6c 20 69 6e 74 65 72 6e 61 6c 20  <p>All internal 
15cd0 63 6f 6d 70 75 74 61 74 69 6f 6e 73 20 61 73 73  computations ass
15ce0 75 6d 65 20 74 68 65 20 0a 5b 68 74 74 70 3a 2f  ume the .[http:/
15cf0 2f 65 6e 2e 77 69 6b 69 70 65 64 69 61 2e 6f 72  /en.wikipedia.or
15d00 67 2f 77 69 6b 69 2f 47 72 65 67 6f 72 69 61 6e  g/wiki/Gregorian
15d10 5f 63 61 6c 65 6e 64 61 72 20 7c 20 47 72 65 67  _calendar | Greg
15d20 6f 72 69 61 6e 20 63 61 6c 65 6e 64 61 72 5d 0a  orian calendar].
15d30 73 79 73 74 65 6d 2e 20 20 49 74 20 69 73 20 61  system.  It is a
15d40 6c 73 6f 20 61 73 73 75 6d 65 64 20 74 68 61 74  lso assumed that
15d50 20 65 76 65 72 79 0a 64 61 79 20 69 73 20 65 78   every.day is ex
15d60 61 63 74 6c 79 20 38 36 34 30 30 20 73 65 63 6f  actly 86400 seco
15d70 6e 64 73 20 69 6e 20 64 75 72 61 74 69 6f 6e 2e  nds in duration.
15d80 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23  </p>..<tcl>.####
15d90 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15da0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15db0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15dc0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15dd0 23 23 23 23 23 23 23 23 23 23 0a 53 65 63 74 69  ##########.Secti
15de0 6f 6e 20 7b 41 67 67 72 65 67 61 74 65 20 46 75  on {Aggregate Fu
15df0 6e 63 74 69 6f 6e 73 7d 20 61 67 67 66 75 6e 63  nctions} aggfunc
15e00 20 7b 2a 61 67 67 66 75 6e 63 7d 0a 3c 2f 74 63   {*aggfunc}.</tc
15e10 6c 3e 0a 0a 3c 70 3e 0a 54 68 65 20 61 67 67 72  l>..<p>.The aggr
15e20 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 73 20  egate functions 
15e30 73 68 6f 77 6e 20 62 65 6c 6f 77 20 61 72 65 20  shown below are 
15e40 61 76 61 69 6c 61 62 6c 65 20 62 79 20 64 65 66  available by def
15e50 61 75 6c 74 2e 20 20 41 64 64 69 74 69 6f 6e 61  ault.  Additiona
15e60 6c 0a 61 67 67 72 65 67 61 74 65 20 66 75 6e 63  l.aggregate func
15e70 74 69 6f 6e 73 20 77 72 69 74 74 65 6e 20 69 6e  tions written in
15e80 20 43 20 6d 61 79 20 62 65 20 61 64 64 65 64 20   C may be added 
15e90 75 73 69 6e 67 20 74 68 65 20 0a 5b 73 71 6c 69  using the .[sqli
15ea0 74 65 33 5f 63 72 65 61 74 65 5f 66 75 6e 63 74  te3_create_funct
15eb0 69 6f 6e 28 29 5d 3c 2f 61 3e 0a 41 50 49 2e 3c  ion()]</a>.API.<
15ec0 2f 70 3e 0a 0a 3c 70 3e 0a 5e 49 6e 20 61 6e 79  /p>..<p>.^In any
15ed0 20 61 67 67 72 65 67 61 74 65 20 66 75 6e 63 74   aggregate funct
15ee0 69 6f 6e 20 74 68 61 74 20 74 61 6b 65 73 20 61  ion that takes a
15ef0 20 73 69 6e 67 6c 65 20 61 72 67 75 6d 65 6e 74   single argument
15f00 2c 20 74 68 61 74 20 61 72 67 75 6d 65 6e 74 0a  , that argument.
15f10 63 61 6e 20 62 65 20 70 72 65 63 65 64 65 64 20  can be preceded 
15f20 62 79 20 74 68 65 20 6b 65 79 77 6f 72 64 20 44  by the keyword D
15f30 49 53 54 49 4e 43 54 2e 20 20 5e 49 6e 20 73 75  ISTINCT.  ^In su
15f40 63 68 20 63 61 73 65 73 2c 20 64 75 70 6c 69 63  ch cases, duplic
15f50 61 74 65 0a 65 6c 65 6d 65 6e 74 73 20 61 72 65  ate.elements are
15f60 20 66 69 6c 74 65 72 65 64 20 62 65 66 6f 72 65   filtered before
15f70 20 62 65 69 6e 67 20 70 61 73 73 65 64 20 69 6e   being passed in
15f80 74 6f 20 74 68 65 20 61 67 67 72 65 67 61 74 65  to the aggregate
15f90 20 66 75 6e 63 74 69 6f 6e 2e 0a 5e 46 6f 72 20   function..^For 
15fa0 65 78 61 6d 70 6c 65 2c 20 74 68 65 20 66 75 6e  example, the fun
15fb0 63 74 69 6f 6e 20 22 63 6f 75 6e 74 28 64 69 73  ction "count(dis
15fc0 74 69 6e 63 74 20 58 29 22 20 77 69 6c 6c 20 72  tinct X)" will r
15fd0 65 74 75 72 6e 20 74 68 65 20 6e 75 6d 62 65 72  eturn the number
15fe0 0a 6f 66 20 64 69 73 74 69 6e 63 74 20 76 61 6c  .of distinct val
15ff0 75 65 73 20 6f 66 20 63 6f 6c 75 6d 6e 20 58 20  ues of column X 
16000 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20 74  instead of the t
16010 6f 74 61 6c 20 6e 75 6d 62 65 72 20 6f 66 20 6e  otal number of n
16020 6f 6e 2d 6e 75 6c 6c 0a 76 61 6c 75 65 73 20 69  on-null.values i
16030 6e 20 63 6f 6c 75 6d 6e 20 58 2e 0a 3c 2f 70 3e  n column X..</p>
16040 0a 0a 3c 74 61 62 6c 65 20 62 6f 72 64 65 72 3d  ..<table border=
16050 30 20 63 65 6c 6c 70 61 64 64 69 6e 67 3d 31 30  0 cellpadding=10
16060 3e 0a 3c 74 63 6c 3e 0a 66 75 6e 63 64 65 66 20  >.<tcl>.funcdef 
16070 7b 61 76 67 28 58 29 7d 20 7b 2a 61 76 67 20 7b  {avg(X)} {*avg {
16080 61 76 67 28 29 20 61 67 67 72 65 67 61 74 65 20  avg() aggregate 
16090 66 75 6e 63 74 69 6f 6e 7d 7d 20 7b 0a 20 20 5e  function}} {.  ^
160a0 54 68 65 20 61 76 67 28 29 20 66 75 6e 63 74 69  The avg() functi
160b0 6f 6e 0a 20 20 72 65 74 75 72 6e 73 20 74 68 65  on.  returns the
160c0 20 61 76 65 72 61 67 65 20 76 61 6c 75 65 20 6f   average value o
160d0 66 20 61 6c 6c 20 6e 6f 6e 2d 4e 55 4c 4c 20 3c  f all non-NULL <
160e0 69 3e 58 3c 2f 69 3e 20 77 69 74 68 69 6e 20 61  i>X</i> within a
160f0 0a 20 20 67 72 6f 75 70 2e 20 20 5e 53 74 72 69  .  group.  ^Stri
16100 6e 67 20 61 6e 64 20 42 4c 4f 42 20 76 61 6c 75  ng and BLOB valu
16110 65 73 20 74 68 61 74 20 64 6f 20 6e 6f 74 20 6c  es that do not l
16120 6f 6f 6b 20 6c 69 6b 65 20 6e 75 6d 62 65 72 73  ook like numbers
16130 20 61 72 65 0a 20 20 69 6e 74 65 72 70 72 65 74   are.  interpret
16140 65 64 20 61 73 20 30 2e 0a 20 20 5e 54 68 65 20  ed as 0..  ^The 
16150 72 65 73 75 6c 74 20 6f 66 20 61 76 67 28 29 20  result of avg() 
16160 69 73 20 61 6c 77 61 79 73 20 61 20 66 6c 6f 61  is always a floa
16170 74 69 6e 67 20 70 6f 69 6e 74 20 76 61 6c 75 65  ting point value
16180 20 61 73 20 6c 6f 6e 67 20 61 73 0a 20 20 61 74   as long as.  at
16190 20 74 68 65 72 65 20 69 73 20 61 74 20 6c 65 61   there is at lea
161a0 73 74 20 6f 6e 65 20 6e 6f 6e 2d 4e 55 4c 4c 20  st one non-NULL 
161b0 69 6e 70 75 74 20 65 76 65 6e 20 69 66 20 61 6c  input even if al
161c0 6c 0a 20 20 69 6e 70 75 74 73 20 61 72 65 20 69  l.  inputs are i
161d0 6e 74 65 67 65 72 73 2e 20 20 5e 54 68 65 20 72  ntegers.  ^The r
161e0 65 73 75 6c 74 20 6f 66 20 61 76 67 28 29 20 69  esult of avg() i
161f0 73 20 4e 55 4c 4c 20 69 66 20 61 6e 64 20 6f 6e  s NULL if and on
16200 6c 79 20 69 66 0a 20 20 74 68 65 72 65 20 61 72  ly if.  there ar
16210 65 20 6e 6f 20 6e 6f 6e 2d 4e 55 4c 4c 20 69 6e  e no non-NULL in
16220 70 75 74 73 2e 20 20 0a 7d 0a 0a 66 75 6e 63 64  puts.  .}..funcd
16230 65 66 20 7b 63 6f 75 6e 74 28 58 29 20 63 6f 75  ef {count(X) cou
16240 6e 74 28 2a 29 7d 20 7b 2a 63 6f 75 6e 74 20 7b  nt(*)} {*count {
16250 63 6f 75 6e 74 28 29 20 61 67 67 72 65 67 61 74  count() aggregat
16260 65 20 66 75 6e 63 74 69 6f 6e 7d 7d 20 7b 0a 20  e function}} {. 
16270 20 5e 54 68 65 20 63 6f 75 6e 74 28 58 29 20 66   ^The count(X) f
16280 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 0a  unction returns.
16290 20 20 61 20 63 6f 75 6e 74 20 6f 66 20 74 68 65    a count of the
162a0 20 6e 75 6d 62 65 72 20 6f 66 20 74 69 6d 65 73   number of times
162b0 0a 20 20 74 68 61 74 20 3c 69 3e 58 3c 2f 69 3e  .  that <i>X</i>
162c0 20 69 73 20 6e 6f 74 20 4e 55 4c 4c 20 69 6e 20   is not NULL in 
162d0 61 20 67 72 6f 75 70 2e 20 20 5e 54 68 65 20 63  a group.  ^The c
162e0 6f 75 6e 74 28 2a 29 20 66 75 6e 63 74 69 6f 6e  ount(*) function
162f0 0a 20 20 28 77 69 74 68 20 6e 6f 20 61 72 67 75  .  (with no argu
16300 6d 65 6e 74 73 29 20 72 65 74 75 72 6e 73 20 74  ments) returns t
16310 68 65 20 74 6f 74 61 6c 20 6e 75 6d 62 65 72 20  he total number 
16320 6f 66 20 72 6f 77 73 20 69 6e 20 74 68 65 20 67  of rows in the g
16330 72 6f 75 70 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66  roup..}..funcdef
16340 20 7b 67 72 6f 75 70 5f 63 6f 6e 63 61 74 28 58   {group_concat(X
16350 29 20 67 72 6f 75 70 5f 63 6f 6e 63 61 74 28 58  ) group_concat(X
16360 2c 59 29 7d 20 7b 0a 20 20 2a 67 72 6f 75 70 5f  ,Y)} {.  *group_
16370 63 6f 6e 63 61 74 20 7b 67 72 6f 75 70 5f 63 6f  concat {group_co
16380 6e 63 61 74 28 29 20 61 67 67 72 65 67 61 74 65  ncat() aggregate
16390 20 66 75 6e 63 74 69 6f 6e 7d 0a 7d 20 7b 0a 20   function}.} {. 
163a0 20 5e 54 68 65 20 67 72 6f 75 70 5f 63 6f 6e 63   ^The group_conc
163b0 61 74 28 29 20 66 75 6e 63 74 69 6f 6e 20 72 65  at() function re
163c0 74 75 72 6e 73 0a 20 20 61 20 73 74 72 69 6e 67  turns.  a string
163d0 20 77 68 69 63 68 20 69 73 20 74 68 65 20 63 6f   which is the co
163e0 6e 63 61 74 65 6e 61 74 69 6f 6e 20 6f 66 0a 20  ncatenation of. 
163f0 20 61 6c 6c 20 6e 6f 6e 2d 4e 55 4c 4c 20 76 61   all non-NULL va
16400 6c 75 65 73 20 6f 66 20 3c 69 3e 58 3c 2f 69 3e  lues of <i>X</i>
16410 2e 20 20 5e 49 66 20 70 61 72 61 6d 65 74 65 72  .  ^If parameter
16420 20 3c 69 3e 59 3c 2f 69 3e 20 69 73 20 70 72 65   <i>Y</i> is pre
16430 73 65 6e 74 20 74 68 65 6e 0a 20 20 69 73 20 69  sent then.  is i
16440 73 20 75 73 65 64 20 61 73 20 74 68 65 20 73 65  s used as the se
16450 70 61 72 61 74 6f 72 0a 20 20 62 65 74 77 65 65  parator.  betwee
16460 6e 20 69 6e 73 74 61 6e 63 65 73 20 6f 66 20 3c  n instances of <
16470 69 3e 58 3c 2f 69 3e 2e 20 20 5e 41 20 63 6f 6d  i>X</i>.  ^A com
16480 6d 61 20 28 22 2c 22 29 20 69 73 20 75 73 65 64  ma (",") is used
16490 20 61 73 20 74 68 65 20 73 65 70 61 72 61 74 6f   as the separato
164a0 72 0a 20 20 69 66 20 3c 69 3e 59 3c 2f 69 3e 20  r.  if <i>Y</i> 
164b0 69 73 20 6f 6d 69 74 74 65 64 2e 20 20 54 68 65  is omitted.  The
164c0 20 6f 72 64 65 72 20 6f 66 20 74 68 65 20 63 6f   order of the co
164d0 6e 63 61 74 65 6e 61 74 65 64 20 65 6c 65 6d 65  ncatenated eleme
164e0 6e 74 73 20 69 73 0a 20 20 61 72 62 69 74 72 61  nts is.  arbitra
164f0 72 79 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b  ry..}..funcdef {
16500 6d 61 78 28 58 29 7d 20 7b 2a 6d 61 78 41 67 67  max(X)} {*maxAgg
16510 46 75 6e 63 20 2a 61 67 67 5f 6d 61 78 20 7b 6d  Func *agg_max {m
16520 61 78 28 29 20 61 67 67 72 65 67 61 74 65 20 66  ax() aggregate f
16530 75 6e 63 74 69 6f 6e 7d 7d 20 7b 0a 20 20 5e 54  unction}} {.  ^T
16540 68 65 20 6d 61 78 28 29 20 61 67 67 72 65 67 61  he max() aggrega
16550 74 65 20 66 75 6e 63 74 69 6f 6e 0a 20 20 72 65  te function.  re
16560 74 75 72 6e 73 20 74 68 65 20 6d 61 78 69 6d 75  turns the maximu
16570 6d 20 76 61 6c 75 65 20 6f 66 20 61 6c 6c 20 76  m value of all v
16580 61 6c 75 65 73 20 69 6e 20 74 68 65 20 67 72 6f  alues in the gro
16590 75 70 2e 0a 20 20 5e 54 68 65 20 6d 61 78 69 6d  up..  ^The maxim
165a0 75 6d 20 76 61 6c 75 65 20 69 73 20 74 68 65 20  um value is the 
165b0 76 61 6c 75 65 20 74 68 61 74 20 77 6f 75 6c 64  value that would
165c0 20 62 65 20 72 65 74 75 72 6e 65 64 20 6c 61 73   be returned las
165d0 74 20 69 6e 20 61 6e 0a 20 20 4f 52 44 45 52 20  t in an.  ORDER 
165e0 42 59 20 6f 6e 20 74 68 65 20 73 61 6d 65 20 63  BY on the same c
165f0 6f 6c 75 6d 6e 2e 20 20 5e 41 67 67 72 65 67 61  olumn.  ^Aggrega
16600 74 65 20 6d 61 78 28 29 20 72 65 74 75 72 6e 73  te max() returns
16610 20 4e 55 4c 4c 20 0a 20 20 69 66 20 61 6e 64 20   NULL .  if and 
16620 6f 6e 6c 79 20 69 66 20 74 68 65 72 65 20 61 72  only if there ar
16630 65 20 6e 6f 20 6e 6f 6e 2d 4e 55 4c 4c 20 76 61  e no non-NULL va
16640 6c 75 65 73 20 69 6e 20 74 68 65 20 67 72 6f 75  lues in the grou
16650 70 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 6d  p..}..funcdef {m
16660 69 6e 28 58 29 7d 20 7b 2a 6d 69 6e 41 67 67 46  in(X)} {*minAggF
16670 75 6e 63 20 2a 61 67 67 5f 6d 69 6e 20 7b 6d 69  unc *agg_min {mi
16680 6e 28 29 20 61 67 67 72 65 67 61 74 65 20 66 75  n() aggregate fu
16690 6e 63 74 69 6f 6e 7d 7d 20 7b 0a 20 20 5e 54 68  nction}} {.  ^Th
166a0 65 20 6d 69 6e 28 29 20 61 67 67 72 65 67 61 74  e min() aggregat
166b0 65 20 66 75 6e 63 74 69 6f 6e 0a 20 20 72 65 74  e function.  ret
166c0 75 72 6e 73 20 74 68 65 20 6d 69 6e 69 6d 75 6d  urns the minimum
166d0 20 6e 6f 6e 2d 4e 55 4c 4c 20 76 61 6c 75 65 20   non-NULL value 
166e0 6f 66 20 61 6c 6c 20 76 61 6c 75 65 73 20 69 6e  of all values in
166f0 20 74 68 65 20 67 72 6f 75 70 2e 0a 20 20 5e 54   the group..  ^T
16700 68 65 20 6d 69 6e 69 6d 75 6d 20 76 61 6c 75 65  he minimum value
16710 20 69 73 20 74 68 65 20 66 69 72 73 74 20 6e 6f   is the first no
16720 6e 2d 4e 55 4c 4c 20 76 61 6c 75 65 20 74 68 61  n-NULL value tha
16730 74 20 77 6f 75 6c 64 20 61 70 70 65 61 72 0a 20  t would appear. 
16740 20 69 6e 20 61 6e 20 4f 52 44 45 52 20 42 59 20   in an ORDER BY 
16750 6f 66 20 74 68 65 20 63 6f 6c 75 6d 6e 2e 0a 20  of the column.. 
16760 20 5e 41 67 67 72 65 67 61 74 65 20 6d 69 6e 28   ^Aggregate min(
16770 29 20 72 65 74 75 72 6e 73 20 4e 55 4c 4c 20 69  ) returns NULL i
16780 66 20 61 6e 64 20 6f 6e 6c 79 20 69 66 20 74 68  f and only if th
16790 65 72 65 20 61 72 65 20 6e 6f 20 6e 6f 6e 2d 4e  ere are no non-N
167a0 55 4c 4c 0a 20 20 76 61 6c 75 65 73 20 69 6e 20  ULL.  values in 
167b0 74 68 65 20 67 72 6f 75 70 2e 0a 7d 0a 0a 66 75  the group..}..fu
167c0 6e 63 64 65 66 20 7b 73 75 6d 28 58 29 20 74 6f  ncdef {sum(X) to
167d0 74 61 6c 28 58 29 7d 20 7b 0a 20 20 2a 73 75 6d  tal(X)} {.  *sum
167e0 46 75 6e 63 20 2a 73 75 6d 20 2a 74 6f 74 61 6c  Func *sum *total
167f0 0a 20 20 7b 73 75 6d 28 29 20 61 67 67 72 65 67  .  {sum() aggreg
16800 61 74 65 20 66 75 6e 63 74 69 6f 6e 7d 0a 20 20  ate function}.  
16810 7b 74 6f 74 61 6c 28 29 20 61 67 67 72 65 67 61  {total() aggrega
16820 74 65 20 66 75 6e 63 74 69 6f 6e 7d 0a 7d 20 7b  te function}.} {
16830 0a 20 20 5e 54 68 65 20 73 75 6d 28 29 20 61 6e  .  ^The sum() an
16840 64 20 74 6f 74 61 6c 28 29 20 61 67 67 72 65 67  d total() aggreg
16850 61 74 65 20 66 75 6e 63 74 69 6f 6e 73 0a 20 20  ate functions.  
16860 72 65 74 75 72 6e 20 73 75 6d 20 6f 66 20 61 6c  return sum of al
16870 6c 20 6e 6f 6e 2d 4e 55 4c 4c 20 76 61 6c 75 65  l non-NULL value
16880 73 20 69 6e 20 74 68 65 20 67 72 6f 75 70 2e 0a  s in the group..
16890 20 20 5e 49 66 20 74 68 65 72 65 20 61 72 65 20    ^If there are 
168a0 6e 6f 20 6e 6f 6e 2d 4e 55 4c 4c 20 69 6e 70 75  no non-NULL inpu
168b0 74 20 72 6f 77 73 20 74 68 65 6e 20 73 75 6d 28  t rows then sum(
168c0 29 20 72 65 74 75 72 6e 73 0a 20 20 4e 55 4c 4c  ) returns.  NULL
168d0 20 62 75 74 20 74 6f 74 61 6c 28 29 20 72 65 74   but total() ret
168e0 75 72 6e 73 20 30 2e 30 2e 0a 20 20 4e 55 4c 4c  urns 0.0..  NULL
168f0 20 69 73 20 6e 6f 74 20 6e 6f 72 6d 61 6c 6c 79   is not normally
16900 20 61 20 68 65 6c 70 66 75 6c 20 72 65 73 75 6c   a helpful resul
16910 74 20 66 6f 72 20 74 68 65 20 73 75 6d 20 6f 66  t for the sum of
16920 20 6e 6f 20 72 6f 77 73 0a 20 20 62 75 74 20 74   no rows.  but t
16930 68 65 20 53 51 4c 20 73 74 61 6e 64 61 72 64 20  he SQL standard 
16940 72 65 71 75 69 72 65 73 20 69 74 20 61 6e 64 20  requires it and 
16950 6d 6f 73 74 20 6f 74 68 65 72 0a 20 20 53 51 4c  most other.  SQL
16960 20 64 61 74 61 62 61 73 65 20 65 6e 67 69 6e 65   database engine
16970 73 20 69 6d 70 6c 65 6d 65 6e 74 20 73 75 6d 28  s implement sum(
16980 29 20 74 68 61 74 20 77 61 79 20 73 6f 20 53 51  ) that way so SQ
16990 4c 69 74 65 20 64 6f 65 73 20 69 74 20 69 6e 20  Lite does it in 
169a0 74 68 65 0a 20 20 73 61 6d 65 20 77 61 79 20 69  the.  same way i
169b0 6e 20 6f 72 64 65 72 20 74 6f 20 62 65 20 63 6f  n order to be co
169c0 6d 70 61 74 69 62 6c 65 2e 20 20 20 54 68 65 20  mpatible.   The 
169d0 6e 6f 6e 2d 73 74 61 6e 64 61 72 64 20 74 6f 74  non-standard tot
169e0 61 6c 28 29 20 66 75 6e 63 74 69 6f 6e 0a 20 20  al() function.  
169f0 69 73 20 70 72 6f 76 69 64 65 64 20 61 73 20 61  is provided as a
16a00 20 63 6f 6e 76 65 6e 69 65 6e 74 20 77 61 79 20   convenient way 
16a10 74 6f 20 77 6f 72 6b 20 61 72 6f 75 6e 64 20 74  to work around t
16a20 68 69 73 20 64 65 73 69 67 6e 20 70 72 6f 62 6c  his design probl
16a30 65 6d 0a 20 20 69 6e 20 74 68 65 20 53 51 4c 20  em.  in the SQL 
16a40 6c 61 6e 67 75 61 67 65 2e 3c 2f 70 3e 0a 0a 20  language.</p>.. 
16a50 20 3c 70 3e 5e 54 68 65 20 72 65 73 75 6c 74 20   <p>^The result 
16a60 6f 66 20 74 6f 74 61 6c 28 29 20 69 73 20 61 6c  of total() is al
16a70 77 61 79 73 20 61 20 66 6c 6f 61 74 69 6e 67 20  ways a floating 
16a80 70 6f 69 6e 74 20 76 61 6c 75 65 2e 0a 20 20 5e  point value..  ^
16a90 54 68 65 20 72 65 73 75 6c 74 20 6f 66 20 73 75  The result of su
16aa0 6d 28 29 20 69 73 20 61 6e 20 69 6e 74 65 67 65  m() is an intege
16ab0 72 20 76 61 6c 75 65 20 69 66 20 61 6c 6c 20 6e  r value if all n
16ac0 6f 6e 2d 4e 55 4c 4c 20 69 6e 70 75 74 73 20 61  on-NULL inputs a
16ad0 72 65 20 69 6e 74 65 67 65 72 73 2e 0a 20 20 5e  re integers..  ^
16ae0 49 66 20 61 6e 79 20 69 6e 70 75 74 20 74 6f 20  If any input to 
16af0 73 75 6d 28 29 20 69 73 20 6e 65 69 74 68 65 72  sum() is neither
16b00 20 61 6e 20 69 6e 74 65 67 65 72 20 6f 72 20 61   an integer or a
16b10 20 4e 55 4c 4c 0a 20 20 74 68 65 6e 20 73 75 6d   NULL.  then sum
16b20 28 29 20 72 65 74 75 72 6e 73 20 61 20 66 6c 6f  () returns a flo
16b30 61 74 69 6e 67 20 70 6f 69 6e 74 20 76 61 6c 75  ating point valu
16b40 65 0a 20 20 77 68 69 63 68 20 6d 69 67 68 74 20  e.  which might 
16b50 62 65 20 61 6e 20 61 70 70 72 6f 78 69 6d 61 74  be an approximat
16b60 69 6f 6e 20 74 6f 20 74 68 65 20 74 72 75 65 20  ion to the true 
16b70 73 75 6d 2e 3c 2f 70 3e 0a 0a 20 20 3c 70 3e 5e  sum.</p>..  <p>^
16b80 53 75 6d 28 29 20 77 69 6c 6c 20 74 68 72 6f 77  Sum() will throw
16b90 20 61 6e 20 22 69 6e 74 65 67 65 72 20 6f 76 65   an "integer ove
16ba0 72 66 6c 6f 77 22 20 65 78 63 65 70 74 69 6f 6e  rflow" exception
16bb0 20 69 66 20 61 6c 6c 20 69 6e 70 75 74 73 0a 20   if all inputs. 
16bc0 20 61 72 65 20 69 6e 74 65 67 65 72 73 20 6f 72   are integers or
16bd0 20 4e 55 4c 4c 0a 20 20 61 6e 64 20 61 6e 20 69   NULL.  and an i
16be0 6e 74 65 67 65 72 20 6f 76 65 72 66 6c 6f 77 20  nteger overflow 
16bf0 6f 63 63 75 72 73 20 61 74 20 61 6e 79 20 70 6f  occurs at any po
16c00 69 6e 74 20 64 75 72 69 6e 67 20 74 68 65 20 63  int during the c
16c10 6f 6d 70 75 74 61 74 69 6f 6e 2e 0a 20 20 5e 54  omputation..  ^T
16c20 6f 74 61 6c 28 29 20 6e 65 76 65 72 20 74 68 72  otal() never thr
16c30 6f 77 73 20 61 6e 20 69 6e 74 65 67 65 72 20 6f  ows an integer o
16c40 76 65 72 66 6c 6f 77 2e 0a 7d 0a 3c 2f 74 63 6c  verflow..}.</tcl
16c50 3e 0a 3c 2f 74 61 62 6c 65 3e 0a 0a 3c 74 63 6c  >.</table>..<tcl
16c60 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23  >.##############
16c70 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
16c80 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
16c90 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
16ca0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
16cb0 0a 53 65 63 74 69 6f 6e 20 49 4e 53 45 52 54 20  .Section INSERT 
16cc0 69 6e 73 65 72 74 20 7b 49 4e 53 45 52 54 20 2a  insert {INSERT *
16cd0 49 4e 53 45 52 54 73 7d 0a 0a 42 75 62 62 6c 65  INSERTs}..Bubble
16ce0 44 69 61 67 72 61 6d 20 69 6e 73 65 72 74 2d 73  Diagram insert-s
16cf0 74 6d 74 20 31 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70  tmt 1.</tcl>..<p
16d00 3e 54 68 65 20 49 4e 53 45 52 54 20 73 74 61 74  >The INSERT stat
16d10 65 6d 65 6e 74 20 63 6f 6d 65 73 20 69 6e 20 74  ement comes in t
16d20 68 72 65 65 20 62 61 73 69 63 20 66 6f 72 6d 73  hree basic forms
16d30 2e 20 20 5e 54 68 65 20 66 69 72 73 74 20 66 6f  .  ^The first fo
16d40 72 6d 0a 28 77 69 74 68 20 74 68 65 20 22 56 41  rm.(with the "VA
16d50 4c 55 45 53 22 20 6b 65 79 77 6f 72 64 29 20 63  LUES" keyword) c
16d60 72 65 61 74 65 73 20 61 20 73 69 6e 67 6c 65 20  reates a single 
16d70 6e 65 77 20 72 6f 77 20 69 6e 20 61 6e 20 65 78  new row in an ex
16d80 69 73 74 69 6e 67 20 74 61 62 6c 65 2e 0a 5e 49  isting table..^I
16d90 66 20 6e 6f 20 63 6f 6c 75 6d 6e 2d 6c 69 73 74  f no column-list
16da0 20 69 73 20 73 70 65 63 69 66 69 65 64 20 74 68   is specified th
16db0 65 6e 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  en the number of
16dc0 20 76 61 6c 75 65 73 20 6d 75 73 74 0a 62 65 20   values must.be 
16dd0 74 68 65 20 73 61 6d 65 20 61 73 20 74 68 65 20  the same as the 
16de0 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e  number of column
16df0 73 20 69 6e 20 74 68 65 20 74 61 62 6c 65 2e 20  s in the table. 
16e00 20 5e 49 66 20 61 20 63 6f 6c 75 6d 6e 2d 6c 69   ^If a column-li
16e10 73 74 0a 69 73 20 73 70 65 63 69 66 69 65 64 2c  st.is specified,
16e20 20 74 68 65 6e 20 74 68 65 20 6e 75 6d 62 65 72   then the number
16e30 20 6f 66 20 76 61 6c 75 65 73 20 6d 75 73 74 20   of values must 
16e40 6d 61 74 63 68 20 74 68 65 20 6e 75 6d 62 65 72  match the number
16e50 20 6f 66 0a 73 70 65 63 69 66 69 65 64 20 63 6f   of.specified co
16e60 6c 75 6d 6e 73 2e 20 20 5e 43 6f 6c 75 6d 6e 73  lumns.  ^Columns
16e70 20 6f 66 20 74 68 65 20 74 61 62 6c 65 20 74 68   of the table th
16e80 61 74 20 64 6f 20 6e 6f 74 20 61 70 70 65 61 72  at do not appear
16e90 20 69 6e 20 74 68 65 0a 63 6f 6c 75 6d 6e 20 6c   in the.column l
16ea0 69 73 74 20 61 72 65 20 66 69 6c 6c 65 64 20 77  ist are filled w
16eb0 69 74 68 20 74 68 65 20 64 65 66 61 75 6c 74 20  ith the default 
16ec0 76 61 6c 75 65 2c 20 6f 72 20 77 69 74 68 20 4e  value, or with N
16ed0 55 4c 4c 20 69 66 20 6e 6f 0a 64 65 66 61 75 6c  ULL if no.defaul
16ee0 74 20 76 61 6c 75 65 20 69 73 20 73 70 65 63 69  t value is speci
16ef0 66 69 65 64 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 5e  fied..</p>..<p>^
16f00 54 68 65 20 73 65 63 6f 6e 64 20 66 6f 72 6d 20  The second form 
16f10 6f 66 20 74 68 65 20 49 4e 53 45 52 54 20 73 74  of the INSERT st
16f20 61 74 65 6d 65 6e 74 20 74 61 6b 65 73 20 69 74  atement takes it
16f30 73 20 64 61 74 61 20 66 72 6f 6d 20 61 0a 53 45  s data from a.SE
16f40 4c 45 43 54 20 73 74 61 74 65 6d 65 6e 74 2e 20  LECT statement. 
16f50 20 5e 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20   ^The number of 
16f60 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65 20 72  columns in the r
16f70 65 73 75 6c 74 20 6f 66 20 74 68 65 0a 53 45 4c  esult of the.SEL
16f80 45 43 54 20 6d 75 73 74 20 65 78 61 63 74 6c 79  ECT must exactly
16f90 20 6d 61 74 63 68 20 74 68 65 20 6e 75 6d 62 65   match the numbe
16fa0 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20  r of columns in 
16fb0 74 68 65 20 74 61 62 6c 65 20 69 66 0a 6e 6f 20  the table if.no 
16fc0 63 6f 6c 75 6d 6e 20 6c 69 73 74 20 69 73 20 73  column list is s
16fd0 70 65 63 69 66 69 65 64 2c 20 6f 72 20 69 74 20  pecified, or it 
16fe0 6d 75 73 74 20 6d 61 74 63 68 20 74 68 65 20 6e  must match the n
16ff0 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73  umber of columns
17000 0a 6e 61 6d 65 64 20 69 6e 20 74 68 65 20 63 6f  .named in the co
17010 6c 75 6d 6e 20 6c 69 73 74 2e 20 20 5e 41 20 6e  lumn list.  ^A n
17020 65 77 20 65 6e 74 72 79 20 69 73 20 6d 61 64 65  ew entry is made
17030 20 69 6e 20 74 68 65 20 74 61 62 6c 65 0a 66 6f   in the table.fo
17040 72 20 65 76 65 72 79 20 72 6f 77 20 6f 66 20 74  r every row of t
17050 68 65 20 53 45 4c 45 43 54 20 72 65 73 75 6c 74  he SELECT result
17060 2e 20 20 5e 54 68 65 20 53 45 4c 45 43 54 20 6d  .  ^The SELECT m
17070 61 79 20 62 65 20 73 69 6d 70 6c 65 0a 6f 72 20  ay be simple.or 
17080 63 6f 6d 70 6f 75 6e 64 2e 3c 2f 70 3e 0a 0a 3c  compound.</p>..<
17090 70 3e 5e 54 68 65 20 74 68 69 72 64 20 66 6f 72  p>^The third for
170a0 6d 20 6f 66 20 61 6e 20 49 4e 53 45 52 54 20 73  m of an INSERT s
170b0 74 61 74 65 6d 65 6e 74 20 69 73 20 77 69 74 68  tatement is with
170c0 20 44 45 46 41 55 4c 54 20 56 41 4c 55 45 53 2e   DEFAULT VALUES.
170d0 0a 5e 28 54 68 65 20 49 4e 53 45 52 54 20 2e 2e  .^(The INSERT ..
170e0 2e 20 44 45 46 41 55 4c 54 20 56 41 4c 55 45 53  . DEFAULT VALUES
170f0 20 73 74 61 74 65 6d 65 6e 74 20 73 69 6d 70 6c   statement simpl
17100 79 20 63 72 65 61 74 65 73 20 61 20 73 69 6e 67  y creates a sing
17110 6c 65 20 6e 65 77 0a 72 6f 77 20 69 6e 20 74 68  le new.row in th
17120 65 20 74 61 62 6c 65 20 69 6e 20 77 68 69 63 68  e table in which
17130 20 65 61 63 68 20 63 6f 6c 75 6d 6e 20 69 73 20   each column is 
17140 66 69 6c 6c 65 64 20 77 69 74 68 20 69 74 73 20  filled with its 
17150 64 65 66 61 75 6c 74 20 76 61 6c 75 65 2e 29 5e  default value.)^
17160 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20 6f 70  </p>..<p>^The op
17170 74 69 6f 6e 61 6c 20 63 6f 6e 66 6c 69 63 74 2d  tional conflict-
17180 63 6c 61 75 73 65 20 61 6c 6c 6f 77 73 20 74 68  clause allows th
17190 65 20 73 70 65 63 69 66 69 63 61 74 69 6f 6e 20  e specification 
171a0 6f 66 20 61 6e 20 61 6c 74 65 72 6e 61 74 69 76  of an alternativ
171b0 65 0a 63 6f 6e 73 74 72 61 69 6e 74 20 63 6f 6e  e.constraint con
171c0 66 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e  flict resolution
171d0 20 61 6c 67 6f 72 69 74 68 6d 20 74 6f 20 75 73   algorithm to us
171e0 65 20 64 75 72 69 6e 67 20 74 68 69 73 20 6f 6e  e during this on
171f0 65 20 49 4e 53 45 52 54 20 63 6f 6d 6d 61 6e 64  e INSERT command
17200 2e 0a 53 65 65 20 74 68 65 20 73 65 63 74 69 6f  ..See the sectio
17210 6e 20 74 69 74 6c 65 64 0a 5b 4f 4e 20 43 4f 4e  n titled.[ON CON
17220 46 4c 49 43 54 5d 20 66 6f 72 20 61 64 64 69 74  FLICT] for addit
17230 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f  ional informatio
17240 6e 2e 0a 5e 46 6f 72 20 63 6f 6d 70 61 74 69 62  n..^For compatib
17250 69 6c 69 74 79 20 77 69 74 68 20 4d 79 53 51 4c  ility with MySQL
17260 2c 20 74 68 65 20 70 61 72 73 65 72 20 61 6c 6c  , the parser all
17270 6f 77 73 20 74 68 65 20 75 73 65 20 6f 66 20 74  ows the use of t
17280 68 65 0a 73 69 6e 67 6c 65 20 6b 65 79 77 6f 72  he.single keywor
17290 64 20 3c 61 20 68 72 65 66 3d 22 6c 61 6e 67 5f  d <a href="lang_
172a0 72 65 70 6c 61 63 65 2e 68 74 6d 6c 22 3e 52 45  replace.html">RE
172b0 50 4c 41 43 45 3c 2f 61 3e 20 61 73 20 61 6e 20  PLACE</a> as an 
172c0 0a 61 6c 69 61 73 20 66 6f 72 20 22 49 4e 53 45  .alias for "INSE
172d0 52 54 20 4f 52 20 52 45 50 4c 41 43 45 22 2e 0a  RT OR REPLACE"..
172e0 3c 2f 70 3e 0a 0a 3c 70 3e 5e 28 54 68 65 20 6f  </p>..<p>^(The o
172f0 70 74 69 6f 6e 61 6c 20 22 3c 69 3e 64 61 74 61  ptional "<i>data
17300 62 61 73 65 2d 6e 61 6d 65 3c 2f 69 3e 3c 62 3e  base-name</i><b>
17310 2e 3c 2f 62 3e 22 20 70 72 65 66 69 78 20 6f 6e  .</b>" prefix on
17320 20 74 68 65 20 3c 69 3e 74 61 62 6c 65 2d 6e 61   the <i>table-na
17330 6d 65 3c 2f 69 3e 0a 69 73 20 73 75 70 70 6f 72  me</i>.is suppor
17340 74 20 66 6f 72 20 74 6f 70 2d 6c 65 76 65 6c 20  t for top-level 
17350 49 4e 53 45 52 54 20 73 74 61 74 65 6d 65 6e 74  INSERT statement
17360 73 20 6f 6e 6c 79 2e 29 5e 20 20 5e 54 68 65 20  s only.)^  ^The 
17370 74 61 62 6c 65 20 6e 61 6d 65 20 6d 75 73 74 20  table name must 
17380 62 65 0a 75 6e 71 75 61 6c 69 66 69 65 64 20 66  be.unqualified f
17390 6f 72 20 49 4e 53 45 52 54 20 73 74 61 74 65 6d  or INSERT statem
173a0 65 6e 74 73 20 74 68 61 74 20 6f 63 63 75 72 20  ents that occur 
173b0 77 69 74 68 69 6e 20 5b 43 52 45 41 54 45 20 54  within [CREATE T
173c0 52 49 47 47 45 52 5d 20 73 74 61 74 65 6d 65 6e  RIGGER] statemen
173d0 74 73 2e 0a 5e 53 69 6d 69 6c 61 72 6c 79 2c 20  ts..^Similarly, 
173e0 74 68 65 20 22 44 45 46 41 55 4c 54 20 56 41 4c  the "DEFAULT VAL
173f0 55 45 53 22 20 66 6f 72 6d 20 6f 66 20 74 68 65  UES" form of the
17400 20 49 4e 53 45 52 54 20 73 74 61 74 65 6d 65 6e   INSERT statemen
17410 74 20 69 73 20 73 75 70 70 6f 72 74 65 64 20 66  t is supported f
17420 6f 72 0a 74 6f 70 2d 6c 65 76 65 6c 20 49 4e 53  or.top-level INS
17430 45 52 54 20 73 74 61 74 65 6d 65 6e 74 73 20 6f  ERT statements o
17440 6e 6c 79 20 61 6e 64 20 6e 6f 74 20 66 6f 72 20  nly and not for 
17450 49 4e 53 45 52 54 20 73 74 61 74 65 6d 65 6e 74  INSERT statement
17460 73 20 77 69 74 68 69 6e 0a 74 72 69 67 67 65 72  s within.trigger
17470 73 2e 0a 3c 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23  s..<p>..<tcl>.##
17480 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17490 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
174a0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
174b0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
174c0 23 23 23 23 23 23 23 23 23 23 23 23 0a 53 65 63  ############.Sec
174d0 74 69 6f 6e 20 7b 4f 4e 20 43 4f 4e 46 4c 49 43  tion {ON CONFLIC
174e0 54 20 63 6c 61 75 73 65 7d 20 63 6f 6e 66 6c 69  T clause} confli
174f0 63 74 20 7b 7b 63 6f 6e 66 6c 69 63 74 20 63 6c  ct {{conflict cl
17500 61 75 73 65 7d 20 7b 4f 4e 20 43 4f 4e 46 4c 49  ause} {ON CONFLI
17510 43 54 7d 7d 0a 0a 42 75 62 62 6c 65 44 69 61 67  CT}}..BubbleDiag
17520 72 61 6d 20 63 6f 6e 66 6c 69 63 74 2d 63 6c 61  ram conflict-cla
17530 75 73 65 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54  use.</tcl>..<p>T
17540 68 65 20 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 63  he ON CONFLICT c
17550 6c 61 75 73 65 20 69 73 20 6e 6f 74 20 61 20 73  lause is not a s
17560 65 70 61 72 61 74 65 20 53 51 4c 20 63 6f 6d 6d  eparate SQL comm
17570 61 6e 64 2e 20 20 49 74 20 69 73 20 61 0a 6e 6f  and.  It is a.no
17580 6e 2d 73 74 61 6e 64 61 72 64 20 63 6c 61 75 73  n-standard claus
17590 65 20 74 68 61 74 20 63 61 6e 20 61 70 70 65 61  e that can appea
175a0 72 20 69 6e 20 6d 61 6e 79 20 6f 74 68 65 72 20  r in many other 
175b0 53 51 4c 20 63 6f 6d 6d 61 6e 64 73 2e 0a 49 74  SQL commands..It
175c0 20 69 73 20 67 69 76 65 6e 20 69 74 73 20 6f 77   is given its ow
175d0 6e 20 73 65 63 74 69 6f 6e 20 69 6e 20 74 68 69  n section in thi
175e0 73 20 64 6f 63 75 6d 65 6e 74 20 62 65 63 61 75  s document becau
175f0 73 65 20 69 74 20 69 73 20 6e 6f 74 0a 70 61 72  se it is not.par
17600 74 20 6f 66 20 73 74 61 6e 64 61 72 64 20 53 51  t of standard SQ
17610 4c 20 61 6e 64 20 74 68 65 72 65 66 6f 72 65 20  L and therefore 
17620 6d 69 67 68 74 20 6e 6f 74 20 62 65 20 66 61 6d  might not be fam
17630 69 6c 69 61 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e  iliar.</p>..<p>^
17640 54 68 65 20 73 79 6e 74 61 78 20 66 6f 72 20 74  The syntax for t
17650 68 65 20 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 63  he ON CONFLICT c
17660 6c 61 75 73 65 20 69 73 20 61 73 20 73 68 6f 77  lause is as show
17670 6e 20 61 62 6f 76 65 20 66 6f 72 0a 74 68 65 20  n above for.the 
17680 43 52 45 41 54 45 20 54 41 42 4c 45 20 63 6f 6d  CREATE TABLE com
17690 6d 61 6e 64 2e 20 20 5e 46 6f 72 20 74 68 65 20  mand.  ^For the 
176a0 49 4e 53 45 52 54 20 61 6e 64 0a 55 50 44 41 54  INSERT and.UPDAT
176b0 45 20 63 6f 6d 6d 61 6e 64 73 2c 20 74 68 65 20  E commands, the 
176c0 6b 65 79 77 6f 72 64 73 20 22 4f 4e 20 43 4f 4e  keywords "ON CON
176d0 46 4c 49 43 54 22 20 61 72 65 20 72 65 70 6c 61  FLICT" are repla
176e0 63 65 64 20 62 79 20 22 4f 52 22 2c 20 74 6f 20  ced by "OR", to 
176f0 6d 61 6b 65 0a 74 68 65 20 73 79 6e 74 61 78 20  make.the syntax 
17700 73 65 65 6d 20 6d 6f 72 65 20 6e 61 74 75 72 61  seem more natura
17710 6c 2e 20 20 5e 46 6f 72 20 65 78 61 6d 70 6c 65  l.  ^For example
17720 2c 20 69 6e 73 74 65 61 64 20 6f 66 0a 22 49 4e  , instead of."IN
17730 53 45 52 54 20 4f 4e 20 43 4f 4e 46 4c 49 43 54  SERT ON CONFLICT
17740 20 49 47 4e 4f 52 45 22 20 77 65 20 68 61 76 65   IGNORE" we have
17750 20 22 49 4e 53 45 52 54 20 4f 52 20 49 47 4e 4f   "INSERT OR IGNO
17760 52 45 22 2e 0a 54 68 65 20 6b 65 79 77 6f 72 64  RE"..The keyword
17770 73 20 63 68 61 6e 67 65 20 62 75 74 20 74 68 65  s change but the
17780 20 6d 65 61 6e 69 6e 67 20 6f 66 20 74 68 65 20   meaning of the 
17790 63 6c 61 75 73 65 20 69 73 20 74 68 65 20 73 61  clause is the sa
177a0 6d 65 0a 65 69 74 68 65 72 20 77 61 79 2e 3c 2f  me.either way.</
177b0 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20 4f 4e 20 43  p>..<p>^The ON C
177c0 4f 4e 46 4c 49 43 54 20 63 6c 61 75 73 65 20 73  ONFLICT clause s
177d0 70 65 63 69 66 69 65 73 20 61 6e 20 61 6c 67 6f  pecifies an algo
177e0 72 69 74 68 6d 20 75 73 65 64 20 74 6f 20 72 65  rithm used to re
177f0 73 6f 6c 76 65 0a 63 6f 6e 73 74 72 61 69 6e 74  solve.constraint
17800 20 63 6f 6e 66 6c 69 63 74 73 2e 20 20 5e 54 68   conflicts.  ^Th
17810 65 72 65 20 61 72 65 20 66 69 76 65 20 63 6f 6e  ere are five con
17820 66 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e  flict resolution
17830 20 61 6c 67 6f 72 69 74 68 6d 20 63 68 6f 69 63   algorithm choic
17840 65 73 3a 0a 52 4f 4c 4c 42 41 43 4b 2c 20 41 42  es:.ROLLBACK, AB
17850 4f 52 54 2c 20 46 41 49 4c 2c 20 49 47 4e 4f 52  ORT, FAIL, IGNOR
17860 45 2c 20 61 6e 64 20 52 45 50 4c 41 43 45 2e 0a  E, and REPLACE..
17870 5e 54 68 65 20 64 65 66 61 75 6c 74 20 63 6f 6e  ^The default con
17880 66 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e  flict resolution
17890 20 61 6c 67 6f 72 69 74 68 6d 20 69 73 20 41 42   algorithm is AB
178a0 4f 52 54 2e 20 20 54 68 69 73 0a 69 73 20 77 68  ORT.  This.is wh
178b0 61 74 20 74 68 65 79 20 6d 65 61 6e 3a 3c 2f 70  at they mean:</p
178c0 3e 0a 0a 3c 64 6c 3e 0a 3c 64 74 3e 3c 62 3e 52  >..<dl>.<dt><b>R
178d0 4f 4c 4c 42 41 43 4b 3c 2f 62 3e 3c 2f 64 74 3e  OLLBACK</b></dt>
178e0 0a 3c 64 64 3e 3c 70 3e 5e 57 68 65 6e 20 61 20  .<dd><p>^When a 
178f0 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61  constraint viola
17900 74 69 6f 6e 20 6f 63 63 75 72 73 2c 20 61 6e 20  tion occurs, an 
17910 69 6d 6d 65 64 69 61 74 65 20 52 4f 4c 4c 42 41  immediate ROLLBA
17920 43 4b 0a 6f 63 63 75 72 73 2c 20 74 68 75 73 20  CK.occurs, thus 
17930 65 6e 64 69 6e 67 20 74 68 65 20 63 75 72 72 65  ending the curre
17940 6e 74 20 74 72 61 6e 73 61 63 74 69 6f 6e 2c 20  nt transaction, 
17950 61 6e 64 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20  and the command 
17960 61 62 6f 72 74 73 0a 77 69 74 68 20 61 20 72 65  aborts.with a re
17970 74 75 72 6e 20 63 6f 64 65 20 6f 66 20 53 51 4c  turn code of SQL
17980 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 2e 20  ITE_CONSTRAINT. 
17990 20 5e 49 66 20 6e 6f 20 74 72 61 6e 73 61 63 74   ^If no transact
179a0 69 6f 6e 20 69 73 0a 61 63 74 69 76 65 20 28 6f  ion is.active (o
179b0 74 68 65 72 20 74 68 61 6e 20 74 68 65 20 69 6d  ther than the im
179c0 70 6c 69 65 64 20 74 72 61 6e 73 61 63 74 69 6f  plied transactio
179d0 6e 20 74 68 61 74 20 69 73 20 63 72 65 61 74 65  n that is create
179e0 64 20 6f 6e 20 65 76 65 72 79 0a 63 6f 6d 6d 61  d on every.comma
179f0 6e 64 29 20 74 68 65 6e 20 74 68 69 73 20 61 6c  nd) then this al
17a00 67 6f 72 69 74 68 6d 20 77 6f 72 6b 73 20 74 68  gorithm works th
17a10 65 20 73 61 6d 65 20 61 73 20 41 42 4f 52 54 2e  e same as ABORT.
17a20 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a 3c 64 74 3e 3c  </p></dd>..<dt><
17a30 62 3e 41 42 4f 52 54 3c 2f 62 3e 3c 2f 64 74 3e  b>ABORT</b></dt>
17a40 0a 3c 64 64 3e 3c 70 3e 5e 57 68 65 6e 20 61 20  .<dd><p>^When a 
17a50 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61  constraint viola
17a60 74 69 6f 6e 20 6f 63 63 75 72 73 2c 20 74 68 65  tion occurs, the
17a70 20 63 6f 6d 6d 61 6e 64 20 62 61 63 6b 73 20 6f   command backs o
17a80 75 74 0a 61 6e 79 20 70 72 69 6f 72 20 63 68 61  ut.any prior cha
17a90 6e 67 65 73 20 69 74 20 6d 69 67 68 74 20 68 61  nges it might ha
17aa0 76 65 20 6d 61 64 65 20 61 6e 64 20 61 62 6f 72  ve made and abor
17ab0 74 73 20 77 69 74 68 20 61 20 72 65 74 75 72 6e  ts with a return
17ac0 20 63 6f 64 65 0a 6f 66 20 53 51 4c 49 54 45 5f   code.of SQLITE_
17ad0 43 4f 4e 53 54 52 41 49 4e 54 2e 20 20 5e 42 75  CONSTRAINT.  ^Bu
17ae0 74 20 6e 6f 20 52 4f 4c 4c 42 41 43 4b 20 69 73  t no ROLLBACK is
17af0 20 65 78 65 63 75 74 65 64 20 73 6f 20 63 68 61   executed so cha
17b00 6e 67 65 73 0a 66 72 6f 6d 20 70 72 69 6f 72 20  nges.from prior 
17b10 63 6f 6d 6d 61 6e 64 73 20 77 69 74 68 69 6e 20  commands within 
17b20 74 68 65 20 73 61 6d 65 20 74 72 61 6e 73 61 63  the same transac
17b30 74 69 6f 6e 0a 61 72 65 20 70 72 65 73 65 72 76  tion.are preserv
17b40 65 64 2e 20 20 54 68 69 73 20 69 73 20 74 68 65  ed.  This is the
17b50 20 64 65 66 61 75 6c 74 20 62 65 68 61 76 69 6f   default behavio
17b60 72 2e 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a 3c 64 74  r.</p></dd>..<dt
17b70 3e 3c 62 3e 46 41 49 4c 3c 2f 62 3e 3c 2f 64 74  ><b>FAIL</b></dt
17b80 3e 0a 3c 64 64 3e 3c 70 3e 5e 57 68 65 6e 20 61  >.<dd><p>^When a
17b90 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c   constraint viol
17ba0 61 74 69 6f 6e 20 6f 63 63 75 72 73 2c 20 74 68  ation occurs, th
17bb0 65 20 63 6f 6d 6d 61 6e 64 20 61 62 6f 72 74 73  e command aborts
17bc0 20 77 69 74 68 20 61 0a 72 65 74 75 72 6e 20 63   with a.return c
17bd0 6f 64 65 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54  ode SQLITE_CONST
17be0 52 41 49 4e 54 2e 20 20 5e 42 75 74 20 61 6e 79  RAINT.  ^But any
17bf0 20 63 68 61 6e 67 65 73 20 74 6f 20 74 68 65 20   changes to the 
17c00 64 61 74 61 62 61 73 65 20 74 68 61 74 0a 74 68  database that.th
17c10 65 20 63 6f 6d 6d 61 6e 64 20 6d 61 64 65 20 70  e command made p
17c20 72 69 6f 72 20 74 6f 20 65 6e 63 6f 75 6e 74 65  rior to encounte
17c30 72 69 6e 67 20 74 68 65 20 63 6f 6e 73 74 72 61  ring the constra
17c40 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 0a 61 72  int violation.ar
17c50 65 20 70 72 65 73 65 72 76 65 64 20 61 6e 64 20  e preserved and 
17c60 61 72 65 20 6e 6f 74 20 62 61 63 6b 65 64 20 6f  are not backed o
17c70 75 74 2e 20 20 5e 46 6f 72 20 65 78 61 6d 70 6c  ut.  ^For exampl
17c80 65 2c 20 69 66 20 61 6e 20 55 50 44 41 54 45 0a  e, if an UPDATE.
17c90 73 74 61 74 65 6d 65 6e 74 20 65 6e 63 6f 75 6e  statement encoun
17ca0 74 65 72 65 64 20 61 20 63 6f 6e 73 74 72 61 69  tered a constrai
17cb0 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 6e 20  nt violation on 
17cc0 74 68 65 20 31 30 30 74 68 20 72 6f 77 20 74 68  the 100th row th
17cd0 61 74 0a 69 74 20 61 74 74 65 6d 70 74 73 20 74  at.it attempts t
17ce0 6f 20 75 70 64 61 74 65 2c 20 74 68 65 6e 20 74  o update, then t
17cf0 68 65 20 66 69 72 73 74 20 39 39 20 72 6f 77 20  he first 99 row 
17d00 63 68 61 6e 67 65 73 20 61 72 65 20 70 72 65 73  changes are pres
17d10 65 72 76 65 64 0a 62 75 74 20 63 68 61 6e 67 65  erved.but change
17d20 73 20 74 6f 20 72 6f 77 73 20 31 30 30 20 61 6e  s to rows 100 an
17d30 64 20 62 65 79 6f 6e 64 20 6e 65 76 65 72 20 6f  d beyond never o
17d40 63 63 75 72 2e 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a  ccur.</p></dd>..
17d50 3c 64 74 3e 3c 62 3e 49 47 4e 4f 52 45 3c 2f 62  <dt><b>IGNORE</b
17d60 3e 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 5e 57  ></dt>.<dd><p>^W
17d70 68 65 6e 20 61 20 63 6f 6e 73 74 72 61 69 6e 74  hen a constraint
17d80 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72   violation occur
17d90 73 2c 20 74 68 65 20 6f 6e 65 20 72 6f 77 20 74  s, the one row t
17da0 68 61 74 20 63 6f 6e 74 61 69 6e 73 0a 74 68 65  hat contains.the
17db0 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c   constraint viol
17dc0 61 74 69 6f 6e 20 69 73 20 6e 6f 74 20 69 6e 73  ation is not ins
17dd0 65 72 74 65 64 20 6f 72 20 63 68 61 6e 67 65 64  erted or changed
17de0 2e 20 20 5e 42 75 74 20 74 68 65 20 63 6f 6d 6d  .  ^But the comm
17df0 61 6e 64 0a 63 6f 6e 74 69 6e 75 65 73 20 65 78  and.continues ex
17e00 65 63 75 74 69 6e 67 20 6e 6f 72 6d 61 6c 6c 79  ecuting normally
17e10 2e 20 20 5e 4f 74 68 65 72 20 72 6f 77 73 20 62  .  ^Other rows b
17e20 65 66 6f 72 65 20 61 6e 64 20 61 66 74 65 72 20  efore and after 
17e30 74 68 65 20 72 6f 77 20 74 68 61 74 0a 63 6f 6e  the row that.con
17e40 74 61 69 6e 65 64 20 74 68 65 20 63 6f 6e 73 74  tained the const
17e50 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20  raint violation 
17e60 63 6f 6e 74 69 6e 75 65 20 74 6f 20 62 65 20 69  continue to be i
17e70 6e 73 65 72 74 65 64 20 6f 72 20 75 70 64 61 74  nserted or updat
17e80 65 64 0a 6e 6f 72 6d 61 6c 6c 79 2e 20 20 5e 4e  ed.normally.  ^N
17e90 6f 20 65 72 72 6f 72 20 69 73 20 72 65 74 75 72  o error is retur
17ea0 6e 65 64 20 77 68 65 6e 20 74 68 65 20 49 47 4e  ned when the IGN
17eb0 4f 52 45 20 63 6f 6e 66 6c 69 63 74 20 72 65 73  ORE conflict res
17ec0 6f 6c 75 74 69 6f 6e 0a 61 6c 67 6f 72 69 74 68  olution.algorith
17ed0 6d 20 69 73 20 75 73 65 64 2e 3c 2f 70 3e 3c 2f  m is used.</p></
17ee0 64 64 3e 0a 0a 3c 64 74 3e 3c 62 3e 52 45 50 4c  dd>..<dt><b>REPL
17ef0 41 43 45 3c 2f 62 3e 3c 2f 64 74 3e 0a 3c 64 64  ACE</b></dt>.<dd
17f00 3e 3c 70 3e 5e 57 68 65 6e 20 61 20 55 4e 49 51  ><p>^When a UNIQ
17f10 55 45 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69  UE constraint vi
17f20 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72 73 2c 20  olation occurs, 
17f30 74 68 65 20 70 72 65 2d 65 78 69 73 74 69 6e 67  the pre-existing
17f40 20 72 6f 77 73 0a 74 68 61 74 20 61 72 65 20 63   rows.that are c
17f50 61 75 73 69 6e 67 20 74 68 65 20 63 6f 6e 73 74  ausing the const
17f60 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20  raint violation 
17f70 61 72 65 20 72 65 6d 6f 76 65 64 20 70 72 69 6f  are removed prio
17f80 72 20 74 6f 20 69 6e 73 65 72 74 69 6e 67 0a 6f  r to inserting.o
17f90 72 20 75 70 64 61 74 69 6e 67 20 74 68 65 20 63  r updating the c
17fa0 75 72 72 65 6e 74 20 72 6f 77 2e 20 20 5e 54 68  urrent row.  ^Th
17fb0 75 73 20 74 68 65 20 69 6e 73 65 72 74 20 6f 72  us the insert or
17fc0 20 75 70 64 61 74 65 20 61 6c 77 61 79 73 20 6f   update always o
17fd0 63 63 75 72 73 2e 0a 5e 54 68 65 20 63 6f 6d 6d  ccurs..^The comm
17fe0 61 6e 64 20 63 6f 6e 74 69 6e 75 65 73 20 65 78  and continues ex
17ff0 65 63 75 74 69 6e 67 20 6e 6f 72 6d 61 6c 6c 79  ecuting normally
18000 20 66 6f 6c 6c 6f 77 69 6e 67 20 52 45 50 4c 41   following REPLA
18010 43 45 2e 20 20 0a 5e 4e 6f 20 65 72 72 6f 72 20  CE.  .^No error 
18020 69 73 20 72 65 74 75 72 6e 65 64 20 62 79 20 74  is returned by t
18030 68 65 20 52 45 50 4c 41 43 45 20 63 6f 6e 66 6c  he REPLACE confl
18040 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 2e 0a  ict resolution..
18050 5e 49 66 20 61 20 4e 4f 54 20 4e 55 4c 4c 20 63  ^If a NOT NULL c
18060 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74  onstraint violat
18070 69 6f 6e 20 6f 63 63 75 72 73 2c 20 74 68 65 20  ion occurs, the 
18080 4e 55 4c 4c 20 76 61 6c 75 65 20 69 73 20 72 65  NULL value is re
18090 70 6c 61 63 65 64 0a 62 79 20 74 68 65 20 64 65  placed.by the de
180a0 66 61 75 6c 74 20 76 61 6c 75 65 20 66 6f 72 20  fault value for 
180b0 74 68 61 74 20 63 6f 6c 75 6d 6e 2e 20 20 5e 49  that column.  ^I
180c0 66 20 74 68 65 20 63 6f 6c 75 6d 6e 20 68 61 73  f the column has
180d0 20 6e 6f 20 64 65 66 61 75 6c 74 0a 76 61 6c 75   no default.valu
180e0 65 2c 20 74 68 65 6e 20 74 68 65 20 41 42 4f 52  e, then the ABOR
180f0 54 20 61 6c 67 6f 72 69 74 68 6d 20 69 73 20 75  T algorithm is u
18100 73 65 64 2e 20 20 5e 49 66 20 61 20 43 48 45 43  sed.  ^If a CHEC
18110 4b 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f  K constraint vio
18120 6c 61 74 69 6f 6e 0a 6f 63 63 75 72 73 20 74 68  lation.occurs th
18130 65 6e 20 74 68 65 20 49 47 4e 4f 52 45 20 61 6c  en the IGNORE al
18140 67 6f 72 69 74 68 6d 20 69 73 20 75 73 65 64 2e  gorithm is used.
18150 3c 2f 70 3e 0a 0a 3c 70 3e 5e 57 68 65 6e 20 74  </p>..<p>^When t
18160 68 69 73 20 63 6f 6e 66 6c 69 63 74 20 72 65 73  his conflict res
18170 6f 6c 75 74 69 6f 6e 20 73 74 72 61 74 65 67 79  olution strategy
18180 20 64 65 6c 65 74 65 73 20 72 6f 77 73 20 69 6e   deletes rows in
18190 20 6f 72 64 65 72 20 74 6f 0a 73 61 74 69 73 66   order to.satisf
181a0 79 20 61 20 63 6f 6e 73 74 72 61 69 6e 74 2c 20  y a constraint, 
181b0 5b 43 52 45 41 54 45 20 54 52 49 47 47 45 52 20  [CREATE TRIGGER 
181c0 7c 20 64 65 6c 65 74 65 20 74 72 69 67 67 65 72  | delete trigger
181d0 73 5d 20 6f 6e 6c 79 20 66 69 72 65 20 69 66 0a  s] only fire if.
181e0 5b 72 65 63 75 72 73 69 76 65 5f 74 72 69 67 67  [recursive_trigg
181f0 65 72 73 20 70 72 61 67 6d 61 20 7c 20 72 65 63  ers pragma | rec
18200 75 72 73 69 76 65 20 74 72 69 67 67 65 72 73 5d  ursive triggers]
18210 20 61 72 65 20 65 6e 61 62 6c 65 64 2e 3c 2f 70   are enabled.</p
18220 3e 0a 0a 3c 70 3e 5e 54 68 65 20 5b 73 71 6c 69  >..<p>^The [sqli
18230 74 65 33 5f 75 70 64 61 74 65 5f 68 6f 6f 6b 20  te3_update_hook 
18240 7c 20 75 70 64 61 74 65 20 68 6f 6f 6b 5d 20 69  | update hook] i
18250 73 20 6e 6f 74 20 69 6e 76 6f 6b 65 64 20 66 6f  s not invoked fo
18260 72 20 72 6f 77 73 20 74 68 61 74 0a 61 72 65 20  r rows that.are 
18270 64 65 6c 65 74 65 64 20 62 79 20 61 6e 20 4f 52  deleted by an OR
18280 20 52 45 50 4c 41 43 45 20 72 65 73 6f 6c 75 74   REPLACE resolut
18290 69 6f 6e 2e 20 20 5e 4e 6f 72 20 69 73 20 74 68  ion.  ^Nor is th
182a0 65 20 0a 5b 73 71 6c 69 74 65 33 5f 63 68 61 6e  e .[sqlite3_chan
182b0 67 65 73 20 7c 20 63 68 61 6e 67 65 20 63 6f 75  ges | change cou
182c0 6e 74 65 72 5d 20 69 6e 63 72 65 6d 65 6e 74 65  nter] incremente
182d0 64 2e 0a 54 68 65 20 65 78 63 65 70 74 69 6f 6e  d..The exception
182e0 61 6c 20 62 65 68 61 76 69 6f 72 73 20 64 65 66  al behaviors def
182f0 69 6e 65 64 20 69 6e 20 74 68 69 73 20 70 61 72  ined in this par
18300 61 67 72 61 70 68 20 6d 69 67 68 74 20 63 68 61  agraph might cha
18310 6e 67 65 20 0a 69 6e 20 61 20 66 75 74 75 72 65  nge .in a future
18320 20 72 65 6c 65 61 73 65 2e 3c 2f 70 3e 0a 3c 2f   release.</p>.</
18330 64 6c 3e 0a 0a 3c 70 3e 5e 54 68 65 20 61 6c 67  dl>..<p>^The alg
18340 6f 72 69 74 68 6d 20 73 70 65 63 69 66 69 65 64  orithm specified
18350 20 69 6e 20 74 68 65 20 4f 52 20 63 6c 61 75 73   in the OR claus
18360 65 20 6f 66 20 61 20 49 4e 53 45 52 54 20 6f 72  e of a INSERT or
18370 20 55 50 44 41 54 45 0a 6f 76 65 72 72 69 64 65   UPDATE.override
18380 73 20 61 6e 79 20 61 6c 67 6f 72 69 74 68 6d 20  s any algorithm 
18390 73 70 65 63 69 66 69 65 64 20 69 6e 20 61 20 43  specified in a C
183a0 52 45 41 54 45 20 54 41 42 4c 45 2e 0a 5e 49 66  REATE TABLE..^If
183b0 20 6e 6f 20 61 6c 67 6f 72 69 74 68 6d 20 69 73   no algorithm is
183c0 20 73 70 65 63 69 66 69 65 64 20 61 6e 79 77 68   specified anywh
183d0 65 72 65 2c 20 74 68 65 20 41 42 4f 52 54 20 61  ere, the ABORT a
183e0 6c 67 6f 72 69 74 68 6d 20 69 73 20 75 73 65 64  lgorithm is used
183f0 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23  .</p>..<tcl>.###
18400 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18410 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18420 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18430 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18440 23 23 23 23 23 23 23 23 23 23 23 0a 53 65 63 74  ###########.Sect
18450 69 6f 6e 20 52 45 49 4e 44 45 58 20 72 65 69 6e  ion REINDEX rein
18460 64 65 78 20 52 45 49 4e 44 45 58 0a 0a 42 75 62  dex REINDEX..Bub
18470 62 6c 65 44 69 61 67 72 61 6d 20 72 65 69 6e 64  bleDiagram reind
18480 65 78 2d 73 74 6d 74 20 31 0a 3c 2f 74 63 6c 3e  ex-stmt 1.</tcl>
18490 0a 0a 3c 70 3e 5e 54 68 65 20 52 45 49 4e 44 45  ..<p>^The REINDE
184a0 58 20 63 6f 6d 6d 61 6e 64 20 69 73 20 75 73 65  X command is use
184b0 64 20 74 6f 20 64 65 6c 65 74 65 20 61 6e 64 20  d to delete and 
184c0 72 65 63 72 65 61 74 65 20 69 6e 64 69 63 65 73  recreate indices
184d0 20 66 72 6f 6d 20 73 63 72 61 74 63 68 2e 0a 54   from scratch..T
184e0 68 69 73 20 69 73 20 75 73 65 66 75 6c 20 77 68  his is useful wh
184f0 65 6e 20 74 68 65 20 64 65 66 69 6e 69 74 69 6f  en the definitio
18500 6e 20 6f 66 20 61 20 63 6f 6c 6c 61 74 69 6f 6e  n of a collation
18510 20 73 65 71 75 65 6e 63 65 20 68 61 73 20 63 68   sequence has ch
18520 61 6e 67 65 64 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e  anged..</p>..<p>
18530 5e 49 6e 20 74 68 65 20 66 69 72 73 74 20 66 6f  ^In the first fo
18540 72 6d 2c 20 61 6c 6c 20 69 6e 64 69 63 65 73 20  rm, all indices 
18550 69 6e 20 61 6c 6c 20 61 74 74 61 63 68 65 64 20  in all attached 
18560 64 61 74 61 62 61 73 65 73 20 74 68 61 74 20 75  databases that u
18570 73 65 20 74 68 65 0a 6e 61 6d 65 64 20 63 6f 6c  se the.named col
18580 6c 61 74 69 6f 6e 20 73 65 71 75 65 6e 63 65 20  lation sequence 
18590 61 72 65 20 72 65 63 72 65 61 74 65 64 2e 20 5e  are recreated. ^
185a0 28 49 6e 20 74 68 65 20 73 65 63 6f 6e 64 20 66  (In the second f
185b0 6f 72 6d 2c 20 69 66 20 0a 3c 69 3e 26 23 39 31  orm, if .<i>&#91
185c0 3b 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 2e 26  ;database-name.&
185d0 23 39 33 3b 74 61 62 6c 65 2f 69 6e 64 65 78 2d  #93;table/index-
185e0 6e 61 6d 65 3c 2f 69 3e 20 69 64 65 6e 74 69 66  name</i> identif
185f0 69 65 73 20 61 20 74 61 62 6c 65 2c 0a 74 68 65  ies a table,.the
18600 6e 20 61 6c 6c 20 69 6e 64 69 63 65 73 0a 61 73  n all indices.as
18610 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
18620 65 20 74 61 62 6c 65 20 61 72 65 20 72 65 62 75  e table are rebu
18630 69 6c 74 2e 29 5e 20 5e 49 66 20 61 6e 20 69 6e  ilt.)^ ^If an in
18640 64 65 78 20 69 73 20 69 64 65 6e 74 69 66 69 65  dex is identifie
18650 64 2c 20 74 68 65 6e 20 6f 6e 6c 79 0a 74 68 69  d, then only.thi
18660 73 20 73 70 65 63 69 66 69 63 20 69 6e 64 65 78  s specific index
18670 20 69 73 20 64 65 6c 65 74 65 64 20 61 6e 64 20   is deleted and 
18680 72 65 63 72 65 61 74 65 64 2e 0a 3c 2f 70 3e 0a  recreated..</p>.
18690 0a 3c 70 3e 5e 49 66 20 6e 6f 20 3c 69 3e 64 61  .<p>^If no <i>da
186a0 74 61 62 61 73 65 2d 6e 61 6d 65 3c 2f 69 3e 20  tabase-name</i> 
186b0 69 73 20 73 70 65 63 69 66 69 65 64 20 61 6e 64  is specified and
186c0 20 74 68 65 72 65 20 65 78 69 73 74 73 20 62 6f   there exists bo
186d0 74 68 20 61 20 74 61 62 6c 65 20 6f 72 0a 69 6e  th a table or.in
186e0 64 65 78 20 61 6e 64 20 61 20 63 6f 6c 6c 61 74  dex and a collat
186f0 69 6f 6e 20 73 65 71 75 65 6e 63 65 20 6f 66 20  ion sequence of 
18700 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6e 61  the specified na
18710 6d 65 2c 20 74 68 65 6e 20 69 6e 64 69 63 65 73  me, then indices
18720 20 61 73 73 6f 63 69 61 74 65 64 0a 77 69 74 68   associated.with
18730 20 74 68 65 20 63 6f 6c 6c 61 74 69 6f 6e 20 73   the collation s
18740 65 71 75 65 6e 63 65 20 6f 6e 6c 79 20 61 72 65  equence only are
18750 20 72 65 63 6f 6e 73 74 72 75 63 74 65 64 2e 20   reconstructed. 
18760 54 68 69 73 20 61 6d 62 69 67 75 69 74 79 20 6d  This ambiguity m
18770 61 79 20 62 65 0a 64 69 73 70 65 6c 6c 65 64 20  ay be.dispelled 
18780 62 79 20 61 6c 77 61 79 73 20 73 70 65 63 69 66  by always specif
18790 79 69 6e 67 20 61 20 3c 69 3e 64 61 74 61 62 61  ying a <i>databa
187a0 73 65 2d 6e 61 6d 65 3c 2f 69 3e 20 77 68 65 6e  se-name</i> when
187b0 20 72 65 69 6e 64 65 78 69 6e 67 20 61 0a 73 70   reindexing a.sp
187c0 65 63 69 66 69 63 20 74 61 62 6c 65 20 6f 72 20  ecific table or 
187d0 69 6e 64 65 78 2e 0a 0a 3c 74 63 6c 3e 0a 23 23  index...<tcl>.##
187e0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
187f0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18800 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18810 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18820 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 53 65  #############.Se
18830 63 74 69 6f 6e 20 52 45 50 4c 41 43 45 20 72 65  ction REPLACE re
18840 70 6c 61 63 65 20 52 45 50 4c 41 43 45 0a 0a 3c  place REPLACE..<
18850 2f 74 63 6c 3e 0a 0a 3c 70 3e 5e 54 68 65 20 52  /tcl>..<p>^The R
18860 45 50 4c 41 43 45 20 63 6f 6d 6d 61 6e 64 20 69  EPLACE command i
18870 73 20 61 6e 20 61 6c 69 61 73 20 66 6f 72 20 74  s an alias for t
18880 68 65 20 22 5b 4f 4e 20 43 4f 4e 46 4c 49 43 54  he "[ON CONFLICT
18890 20 7c 20 49 4e 53 45 52 54 20 4f 52 20 52 45 50   | INSERT OR REP
188a0 4c 41 43 45 5d 22 0a 76 61 72 69 61 6e 74 20 6f  LACE]".variant o
188b0 66 20 74 68 65 20 5b 49 4e 53 45 52 54 5d 20 63  f the [INSERT] c
188c0 6f 6d 6d 61 6e 64 2e 20 20 0a 54 68 69 73 20 61  ommand.  .This a
188d0 6c 69 61 73 20 69 73 20 70 72 6f 76 69 64 65 64  lias is provided
188e0 20 66 6f 72 20 63 6f 6d 70 61 74 69 62 69 6c 69   for compatibili
188f0 74 79 20 6f 74 68 65 72 20 53 51 4c 20 64 61 74  ty other SQL dat
18900 61 62 61 73 65 20 65 6e 67 69 6e 65 73 2e 20 20  abase engines.  
18910 53 65 65 20 74 68 65 20 0a 5b 49 4e 53 45 52 54  See the .[INSERT
18920 5d 20 63 6f 6d 6d 61 6e 64 20 64 6f 63 75 6d 65  ] command docume
18930 6e 74 61 74 69 6f 6e 20 66 6f 72 20 61 64 64 69  ntation for addi
18940 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69  tional informati
18950 6f 6e 2e 3c 2f 70 3e 20 20 0a 0a 3c 74 63 6c 3e  on.</p>  ..<tcl>
18960 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  .###############
18970 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18980 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18990 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
189a0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
189b0 0a 53 65 63 74 69 6f 6e 20 53 45 4c 45 43 54 20  .Section SELECT 
189c0 73 65 6c 65 63 74 20 7b 53 45 4c 45 43 54 20 71  select {SELECT q
189d0 75 65 72 79 7d 0a 0a 42 75 62 62 6c 65 44 69 61  uery}..BubbleDia
189e0 67 72 61 6d 20 73 65 6c 65 63 74 2d 73 74 6d 74  gram select-stmt
189f0 20 31 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d   1.BubbleDiagram
18a00 20 73 65 6c 65 63 74 2d 63 6f 72 65 0a 42 75 62   select-core.Bub
18a10 62 6c 65 44 69 61 67 72 61 6d 20 72 65 73 75 6c  bleDiagram resul
18a20 74 2d 63 6f 6c 75 6d 6e 0a 42 75 62 62 6c 65 44  t-column.BubbleD
18a30 69 61 67 72 61 6d 20 6a 6f 69 6e 2d 73 6f 75 72  iagram join-sour
18a40 63 65 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d  ce.BubbleDiagram
18a50 20 73 69 6e 67 6c 65 2d 73 6f 75 72 63 65 0a 42   single-source.B
18a60 75 62 62 6c 65 44 69 61 67 72 61 6d 20 6a 6f 69  ubbleDiagram joi
18a70 6e 2d 6f 70 0a 42 75 62 62 6c 65 44 69 61 67 72  n-op.BubbleDiagr
18a80 61 6d 20 6a 6f 69 6e 2d 63 6f 6e 73 74 72 61 69  am join-constrai
18a90 6e 74 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d  nt.BubbleDiagram
18aa0 20 6f 72 64 65 72 69 6e 67 2d 74 65 72 6d 0a 42   ordering-term.B
18ab0 75 62 62 6c 65 44 69 61 67 72 61 6d 20 63 6f 6d  ubbleDiagram com
18ac0 70 6f 75 6e 64 2d 6f 70 65 72 61 74 6f 72 0a 3c  pound-operator.<
18ad0 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20 53 45  /tcl>..<p>The SE
18ae0 4c 45 43 54 20 73 74 61 74 65 6d 65 6e 74 20 69  LECT statement i
18af0 73 20 75 73 65 64 20 74 6f 20 71 75 65 72 79 20  s used to query 
18b00 74 68 65 20 64 61 74 61 62 61 73 65 2e 20 20 5e  the database.  ^
18b10 54 68 65 0a 72 65 73 75 6c 74 20 6f 66 20 61 20  The.result of a 
18b20 53 45 4c 45 43 54 20 69 73 20 7a 65 72 6f 20 6f  SELECT is zero o
18b30 72 20 6d 6f 72 65 20 72 6f 77 73 20 6f 66 20 64  r more rows of d
18b40 61 74 61 20 77 68 65 72 65 20 65 61 63 68 20 72  ata where each r
18b50 6f 77 0a 68 61 73 20 61 20 66 69 78 65 64 20 6e  ow.has a fixed n
18b60 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73  umber of columns
18b70 2e 20 20 5e 54 68 65 20 6e 75 6d 62 65 72 20 6f  .  ^The number o
18b80 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65  f columns in the
18b90 0a 72 65 73 75 6c 74 20 69 73 20 73 70 65 63 69  .result is speci
18ba0 66 69 65 64 20 62 79 20 74 68 65 20 65 78 70 72  fied by the expr
18bb0 65 73 73 69 6f 6e 20 6c 69 73 74 20 69 6e 20 62  ession list in b
18bc0 65 74 77 65 65 6e 20 74 68 65 0a 53 45 4c 45 43  etween the.SELEC
18bd0 54 20 61 6e 64 20 46 52 4f 4d 20 6b 65 79 77 6f  T and FROM keywo
18be0 72 64 73 2e 20 20 5e 41 6e 79 20 61 72 62 69 74  rds.  ^Any arbit
18bf0 72 61 72 79 20 65 78 70 72 65 73 73 69 6f 6e 20  rary expression 
18c00 63 61 6e 20 62 65 20 75 73 65 64 0a 61 73 20 61  can be used.as a
18c10 20 72 65 73 75 6c 74 2e 20 20 5e 49 66 20 61 20   result.  ^If a 
18c20 72 65 73 75 6c 74 20 65 78 70 72 65 73 73 69 6f  result expressio
18c30 6e 20 69 73 20 7d 0a 68 64 5f 70 75 74 73 20 22  n is }.hd_puts "
18c40 5b 4f 70 65 72 61 74 6f 72 20 2a 5d 20 74 68 65  [Operator *] the
18c50 6e 20 61 6c 6c 20 63 6f 6c 75 6d 6e 73 20 6f 66  n all columns of
18c60 20 61 6c 6c 20 74 61 62 6c 65 73 20 61 72 65 20   all tables are 
18c70 73 75 62 73 74 69 74 75 74 65 64 5c 6e 22 0a 68  substituted\n".h
18c80 64 5f 70 75 74 73 20 22 66 6f 72 20 74 68 61 74  d_puts "for that
18c90 20 6f 6e 65 20 65 78 70 72 65 73 73 69 6f 6e 2e   one expression.
18ca0 20 20 5e 28 49 66 20 74 68 65 20 65 78 70 72 65    ^(If the expre
18cb0 73 73 69 6f 6e 20 69 73 20 74 68 65 20 6e 61 6d  ssion is the nam
18cc0 65 20 6f 66 5c 6e 22 0a 68 64 5f 70 75 74 73 20  e of\n".hd_puts 
18cd0 22 61 20 74 61 62 6c 65 20 66 6f 6c 6c 6f 77 65  "a table followe
18ce0 64 20 62 79 20 5b 4f 70 65 72 61 74 6f 72 20 2e  d by [Operator .
18cf0 2a 5d 20 74 68 65 6e 20 74 68 65 20 72 65 73 75  *] then the resu
18d00 6c 74 20 69 73 20 61 6c 6c 20 63 6f 6c 75 6d 6e  lt is all column
18d10 73 5c 6e 22 0a 68 64 5f 70 75 74 73 20 7b 69 6e  s\n".hd_puts {in
18d20 20 74 68 61 74 20 6f 6e 65 20 74 61 62 6c 65 2e   that one table.
18d30 3c 2f 70 3e 29 5e 0a 0a 3c 70 3e 5e 54 68 65 20  </p>)^..<p>^The 
18d40 44 49 53 54 49 4e 43 54 20 6b 65 79 77 6f 72 64  DISTINCT keyword
18d50 20 63 61 75 73 65 73 20 61 20 73 75 62 73 65 74   causes a subset
18d60 20 6f 66 20 72 65 73 75 6c 74 20 72 6f 77 73 20   of result rows 
18d70 74 6f 20 62 65 20 72 65 74 75 72 6e 65 64 2c 20  to be returned, 
18d80 0a 69 6e 20 77 68 69 63 68 20 65 61 63 68 20 72  .in which each r
18d90 65 73 75 6c 74 20 72 6f 77 20 69 73 20 64 69 66  esult row is dif
18da0 66 65 72 65 6e 74 2e 20 20 5e 4e 55 4c 4c 20 76  ferent.  ^NULL v
18db0 61 6c 75 65 73 20 61 72 65 20 6e 6f 74 20 74 72  alues are not tr
18dc0 65 61 74 65 64 20 61 73 20 0a 64 69 73 74 69 6e  eated as .distin
18dd0 63 74 20 66 72 6f 6d 20 65 61 63 68 20 6f 74 68  ct from each oth
18de0 65 72 2e 20 20 5e 54 68 65 20 64 65 66 61 75 6c  er.  ^The defaul
18df0 74 20 62 65 68 61 76 69 6f 72 20 69 73 20 74 68  t behavior is th
18e00 61 74 20 61 6c 6c 20 72 65 73 75 6c 74 20 72 6f  at all result ro
18e10 77 73 20 0a 62 65 20 72 65 74 75 72 6e 65 64 2c  ws .be returned,
18e20 20 77 68 69 63 68 20 63 61 6e 20 62 65 20 6d 61   which can be ma
18e30 64 65 20 65 78 70 6c 69 63 69 74 20 77 69 74 68  de explicit with
18e40 20 74 68 65 20 6b 65 79 77 6f 72 64 20 41 4c 4c   the keyword ALL
18e50 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20 71  .</p>..<p>^The q
18e60 75 65 72 79 20 69 73 20 65 78 65 63 75 74 65 64  uery is executed
18e70 20 61 67 61 69 6e 73 74 20 6f 6e 65 20 6f 72 20   against one or 
18e80 6d 6f 72 65 20 74 61 62 6c 65 73 20 73 70 65 63  more tables spec
18e90 69 66 69 65 64 20 61 66 74 65 72 0a 74 68 65 20  ified after.the 
18ea0 46 52 4f 4d 20 6b 65 79 77 6f 72 64 2e 20 20 5e  FROM keyword.  ^
18eb0 49 66 20 6d 75 6c 74 69 70 6c 65 20 74 61 62 6c  If multiple tabl
18ec0 65 73 20 6e 61 6d 65 73 20 61 72 65 20 73 65 70  es names are sep
18ed0 61 72 61 74 65 64 20 62 79 20 63 6f 6d 6d 61 73  arated by commas
18ee0 2c 0a 74 68 65 6e 20 74 68 65 20 71 75 65 72 79  ,.then the query
18ef0 20 69 73 20 61 67 61 69 6e 73 74 20 74 68 65 20   is against the 
18f00 63 72 6f 73 73 20 6a 6f 69 6e 20 6f 66 20 74 68  cross join of th
18f10 65 20 76 61 72 69 6f 75 73 20 74 61 62 6c 65 73  e various tables
18f20 2e 0a 5e 54 68 65 20 66 75 6c 6c 20 53 51 4c 2d  ..^The full SQL-
18f30 39 32 20 6a 6f 69 6e 20 73 79 6e 74 61 78 20 63  92 join syntax c
18f40 61 6e 20 61 6c 73 6f 20 62 65 20 75 73 65 64 20  an also be used 
18f50 74 6f 20 73 70 65 63 69 66 79 20 6a 6f 69 6e 73  to specify joins
18f60 2e 0a 5e 41 20 73 75 62 2d 71 75 65 72 79 0a 69  ..^A sub-query.i
18f70 6e 20 70 61 72 65 6e 74 68 65 73 65 73 20 6d 61  n parentheses ma
18f80 79 20 62 65 20 73 75 62 73 74 69 74 75 74 65 64  y be substituted
18f90 20 66 6f 72 20 61 6e 79 20 74 61 62 6c 65 20 6e   for any table n
18fa0 61 6d 65 20 69 6e 20 74 68 65 20 46 52 4f 4d 20  ame in the FROM 
18fb0 63 6c 61 75 73 65 2e 0a 5e 54 68 65 20 65 6e 74  clause..^The ent
18fc0 69 72 65 20 46 52 4f 4d 20 63 6c 61 75 73 65 20  ire FROM clause 
18fd0 6d 61 79 20 62 65 20 6f 6d 69 74 74 65 64 2c 20  may be omitted, 
18fe0 69 6e 20 77 68 69 63 68 20 63 61 73 65 20 74 68  in which case th
18ff0 65 20 72 65 73 75 6c 74 20 69 73 20 61 0a 73 69  e result is a.si
19000 6e 67 6c 65 20 72 6f 77 20 63 6f 6e 73 69 73 74  ngle row consist
19010 69 6e 67 20 6f 66 20 74 68 65 20 76 61 6c 75 65  ing of the value
19020 73 20 6f 66 20 74 68 65 20 65 78 70 72 65 73 73  s of the express
19030 69 6f 6e 20 6c 69 73 74 2e 0a 3c 2f 70 3e 0a 0a  ion list..</p>..
19040 3c 70 3e 5e 54 68 65 20 57 48 45 52 45 20 63 6c  <p>^The WHERE cl
19050 61 75 73 65 20 63 61 6e 20 62 65 20 75 73 65 64  ause can be used
19060 20 74 6f 20 6c 69 6d 69 74 20 74 68 65 20 6e 75   to limit the nu
19070 6d 62 65 72 20 6f 66 20 72 6f 77 73 20 6f 76 65  mber of rows ove
19080 72 0a 77 68 69 63 68 20 74 68 65 20 71 75 65 72  r.which the quer
19090 79 20 6f 70 65 72 61 74 65 73 2e 3c 2f 70 3e 0a  y operates.</p>.
190a0 0a 3c 70 3e 5e 54 68 65 20 47 52 4f 55 50 20 42  .<p>^The GROUP B
190b0 59 20 63 6c 61 75 73 65 20 63 61 75 73 65 73 20  Y clause causes 
190c0 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 72 6f 77 73  one or more rows
190d0 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74 20 74   of the result t
190e0 6f 0a 62 65 20 63 6f 6d 62 69 6e 65 64 20 69 6e  o.be combined in
190f0 74 6f 20 61 20 73 69 6e 67 6c 65 20 72 6f 77 20  to a single row 
19100 6f 66 20 6f 75 74 70 75 74 2e 20 20 54 68 69 73  of output.  This
19110 20 69 73 20 65 73 70 65 63 69 61 6c 6c 79 20 75   is especially u
19120 73 65 66 75 6c 0a 77 68 65 6e 20 74 68 65 20 72  seful.when the r
19130 65 73 75 6c 74 20 63 6f 6e 74 61 69 6e 73 20 61  esult contains a
19140 67 67 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f  ggregate functio
19150 6e 73 2e 20 20 5e 54 68 65 20 65 78 70 72 65 73  ns.  ^The expres
19160 73 69 6f 6e 73 20 69 6e 0a 74 68 65 20 47 52 4f  sions in.the GRO
19170 55 50 20 42 59 20 63 6c 61 75 73 65 20 64 6f 20  UP BY clause do 
19180 3c 65 6d 3e 6e 6f 74 3c 2f 65 6d 3e 20 68 61 76  <em>not</em> hav
19190 65 20 74 6f 20 62 65 20 65 78 70 72 65 73 73 69  e to be expressi
191a0 6f 6e 73 20 74 68 61 74 0a 61 70 70 65 61 72 20  ons that.appear 
191b0 69 6e 20 74 68 65 20 72 65 73 75 6c 74 2e 20 20  in the result.  
191c0 5e 54 68 65 20 48 41 56 49 4e 47 20 63 6c 61 75  ^The HAVING clau
191d0 73 65 20 69 73 20 73 69 6d 69 6c 61 72 20 74 6f  se is similar to
191e0 20 57 48 45 52 45 20 65 78 63 65 70 74 0a 74 68   WHERE except.th
191f0 61 74 20 48 41 56 49 4e 47 20 61 70 70 6c 69 65  at HAVING applie
19200 73 20 61 66 74 65 72 20 67 72 6f 75 70 69 6e 67  s after grouping
19210 20 68 61 73 20 6f 63 63 75 72 72 65 64 2e 20 20   has occurred.  
19220 5e 54 68 65 20 48 41 56 49 4e 47 20 65 78 70 72  ^The HAVING expr
19230 65 73 73 69 6f 6e 0a 6d 61 79 20 72 65 66 65 72  ession.may refer
19240 20 74 6f 20 76 61 6c 75 65 73 2c 20 65 76 65 6e   to values, even
19250 20 61 67 67 72 65 67 61 74 65 20 66 75 6e 63 74   aggregate funct
19260 69 6f 6e 73 2c 20 74 68 61 74 20 61 72 65 20 6e  ions, that are n
19270 6f 74 20 69 6e 20 74 68 65 20 72 65 73 75 6c 74  ot in the result
19280 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20 4f  .</p>..<p>^The O
19290 52 44 45 52 20 42 59 20 63 6c 61 75 73 65 20 63  RDER BY clause c
192a0 61 75 73 65 73 20 74 68 65 20 6f 75 74 70 75 74  auses the output
192b0 20 72 6f 77 73 20 74 6f 20 62 65 20 73 6f 72 74   rows to be sort
192c0 65 64 2e 20 20 0a 5e 54 68 65 20 61 72 67 75 6d  ed.  .^The argum
192d0 65 6e 74 20 74 6f 20 4f 52 44 45 52 20 42 59 20  ent to ORDER BY 
192e0 69 73 20 61 20 6c 69 73 74 20 6f 66 20 65 78 70  is a list of exp
192f0 72 65 73 73 69 6f 6e 73 20 74 68 61 74 20 61 72  ressions that ar
19300 65 20 75 73 65 64 20 61 73 20 74 68 65 0a 6b 65  e used as the.ke
19310 79 20 66 6f 72 20 74 68 65 20 73 6f 72 74 2e 20  y for the sort. 
19320 20 5e 54 68 65 20 65 78 70 72 65 73 73 69 6f 6e   ^The expression
19330 73 20 64 6f 20 6e 6f 74 20 68 61 76 65 20 74 6f  s do not have to
19340 20 62 65 20 70 61 72 74 20 6f 66 20 74 68 65 0a   be part of the.
19350 72 65 73 75 6c 74 20 66 6f 72 20 61 20 73 69 6d  result for a sim
19360 70 6c 65 20 53 45 4c 45 43 54 2c 20 62 75 74 20  ple SELECT, but 
19370 69 6e 20 61 20 63 6f 6d 70 6f 75 6e 64 20 53 45  in a compound SE
19380 4c 45 43 54 20 65 61 63 68 20 73 6f 72 74 0a 65  LECT each sort.e
19390 78 70 72 65 73 73 69 6f 6e 20 6d 75 73 74 20 65  xpression must e
193a0 78 61 63 74 6c 79 20 6d 61 74 63 68 20 6f 6e 65  xactly match one
193b0 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74 20 63   of the result c
193c0 6f 6c 75 6d 6e 73 2e 20 20 5e 45 61 63 68 0a 73  olumns.  ^Each.s
193d0 6f 72 74 20 65 78 70 72 65 73 73 69 6f 6e 20 6d  ort expression m
193e0 61 79 20 62 65 20 6f 70 74 69 6f 6e 61 6c 6c 79  ay be optionally
193f0 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 61 20 43   followed by a C
19400 4f 4c 4c 41 54 45 20 6b 65 79 77 6f 72 64 20 61  OLLATE keyword a
19410 6e 64 0a 74 68 65 20 6e 61 6d 65 20 6f 66 20 61  nd.the name of a
19420 20 63 6f 6c 6c 61 74 69 6e 67 20 66 75 6e 63 74   collating funct
19430 69 6f 6e 20 75 73 65 64 20 66 6f 72 20 6f 72 64  ion used for ord
19440 65 72 69 6e 67 20 74 65 78 74 20 61 6e 64 2f 6f  ering text and/o
19450 72 0a 6b 65 79 77 6f 72 64 73 20 41 53 43 20 6f  r.keywords ASC o
19460 72 20 44 45 53 43 20 74 6f 20 73 70 65 63 69 66  r DESC to specif
19470 79 20 74 68 65 20 73 6f 72 74 20 6f 72 64 65 72  y the sort order
19480 2e 3c 2f 70 3e 0a 0a 3c 70 3e 45 61 63 68 20 74  .</p>..<p>Each t
19490 65 72 6d 20 6f 66 20 61 6e 20 4f 52 44 45 52 20  erm of an ORDER 
194a0 42 59 20 65 78 70 72 65 73 73 69 6f 6e 20 69 73  BY expression is
194b0 20 70 72 6f 63 65 73 73 65 64 20 61 73 20 66 6f   processed as fo
194c0 6c 6c 6f 77 73 3a 3c 2f 70 3e 0a 0a 3c 6f 6c 3e  llows:</p>..<ol>
194d0 0a 3c 6c 69 3e 3c 70 3e 5e 49 66 20 74 68 65 20  .<li><p>^If the 
194e0 4f 52 44 45 52 20 42 59 20 65 78 70 72 65 73 73  ORDER BY express
194f0 69 6f 6e 20 69 73 20 61 20 63 6f 6e 73 74 61 6e  ion is a constan
19500 74 20 69 6e 74 65 67 65 72 20 4b 20 74 68 65 6e  t integer K then
19510 20 74 68 65 0a 6f 75 74 70 75 74 20 69 73 20 6f   the.output is o
19520 72 64 65 72 65 64 20 62 79 20 74 68 65 20 4b 2d  rdered by the K-
19530 74 68 20 63 6f 6c 75 6d 6e 20 6f 66 20 74 68 65  th column of the
19540 20 72 65 73 75 6c 74 20 73 65 74 2e 3c 2f 70 3e   result set.</p>
19550 3c 2f 6c 69 3e 0a 3c 6c 69 3e 3c 70 3e 5e 49 66  </li>.<li><p>^If
19560 20 74 68 65 20 4f 52 44 45 52 20 42 59 20 65 78   the ORDER BY ex
19570 70 72 65 73 73 69 6f 6e 20 69 73 20 61 6e 20 69  pression is an i
19580 64 65 6e 74 69 66 69 65 72 20 61 6e 64 20 6f 6e  dentifier and on
19590 65 20 6f 66 20 74 68 65 0a 6f 75 74 70 75 74 20  e of the.output 
195a0 63 6f 6c 75 6d 6e 73 20 68 61 73 20 61 6e 20 61  columns has an a
195b0 6c 69 61 73 20 62 79 20 74 68 65 20 73 61 6d 65  lias by the same
195c0 20 6e 61 6d 65 2c 20 74 68 65 6e 20 74 68 65 20   name, then the 
195d0 6f 75 74 70 75 74 20 69 73 0a 6f 72 64 65 72 65  output is.ordere
195e0 64 20 62 79 20 74 68 65 20 69 64 65 6e 74 69 66  d by the identif
195f0 69 65 64 20 63 6f 6c 75 6d 6e 2e 3c 2f 70 3e 3c  ied column.</p><
19600 2f 6c 69 3e 0a 3c 6c 69 3e 3c 70 3e 5e 4f 74 68  /li>.<li><p>^Oth
19610 65 72 77 69 73 65 2c 20 74 68 65 20 4f 52 44 45  erwise, the ORDE
19620 52 20 42 59 20 65 78 70 72 65 73 73 69 6f 6e 20  R BY expression 
19630 69 73 20 65 76 61 6c 75 61 74 65 64 20 61 6e 64  is evaluated and
19640 20 74 68 65 20 6f 75 74 70 75 74 20 0a 69 73 20   the output .is 
19650 6f 72 64 65 72 65 64 20 62 79 20 74 68 65 20 76  ordered by the v
19660 61 6c 75 65 20 6f 66 20 74 68 61 74 20 65 78 70  alue of that exp
19670 72 65 73 73 69 6f 6e 2e 3c 2f 70 3e 3c 2f 6c 69  ression.</p></li
19680 3e 0a 3c 2f 6f 6c 3e 0a 0a 3c 70 3e 5e 49 6e 20  >.</ol>..<p>^In 
19690 61 20 63 6f 6d 70 6f 75 6e 64 20 53 45 4c 45 43  a compound SELEC
196a0 54 20 73 74 61 74 65 6d 65 6e 74 2c 20 74 68 65  T statement, the
196b0 20 74 68 69 72 64 20 4f 52 44 45 52 20 42 59 20   third ORDER BY 
196c0 6d 61 74 63 68 69 6e 67 20 72 75 6c 65 0a 72 65  matching rule.re
196d0 71 75 69 72 65 73 20 74 68 61 74 20 74 68 65 20  quires that the 
196e0 65 78 70 72 65 73 73 69 6f 6e 20 62 65 20 69 64  expression be id
196f0 65 6e 74 69 63 61 6c 20 74 6f 20 6f 6e 65 20 6f  entical to one o
19700 66 20 74 68 65 20 63 6f 6c 75 6d 6e 73 20 69 6e  f the columns in
19710 0a 74 68 65 20 72 65 73 75 6c 74 20 73 65 74 2e  .the result set.
19720 20 20 5e 28 54 68 65 20 74 68 72 65 65 20 72 75    ^(The three ru
19730 6c 65 73 20 61 72 65 20 66 69 72 73 74 20 61 70  les are first ap
19740 70 6c 69 65 64 20 74 6f 20 74 68 65 20 6c 65 66  plied to the lef
19750 74 2d 6d 6f 73 74 0a 53 45 4c 45 43 54 20 69 6e  t-most.SELECT in
19760 20 74 68 65 20 63 6f 6d 70 6f 75 6e 64 2e 20 20   the compound.  
19770 49 66 20 61 20 6d 61 74 63 68 20 69 73 20 66 6f  If a match is fo
19780 75 6e 64 2c 20 74 68 65 20 73 65 61 72 63 68 20  und, the search 
19790 73 74 6f 70 73 2e 20 20 4f 74 68 65 72 77 69 73  stops.  Otherwis
197a0 65 2c 0a 74 68 65 20 6e 65 78 74 20 53 45 4c 45  e,.the next SELE
197b0 43 54 20 74 6f 20 74 68 65 20 72 69 67 68 74 20  CT to the right 
197c0 69 73 20 74 72 69 65 64 2e 20 20 54 68 69 73 20  is tried.  This 
197d0 63 6f 6e 74 69 6e 75 65 73 20 75 6e 74 69 6c 20  continues until 
197e0 61 20 6d 61 74 63 68 0a 69 73 20 66 6f 75 6e 64  a match.is found
197f0 2e 29 5e 20 20 5e 45 61 63 68 20 74 65 72 6d 20  .)^  ^Each term 
19800 6f 66 20 74 68 65 20 4f 52 44 45 52 20 42 59 20  of the ORDER BY 
19810 63 6c 61 75 73 65 20 69 73 20 70 72 6f 63 65 73  clause is proces
19820 73 65 64 20 73 65 70 61 72 61 74 65 6c 79 20 0a  sed separately .
19830 61 6e 64 20 6d 61 79 20 63 6f 6d 65 20 66 72 6f  and may come fro
19840 6d 20 64 69 66 66 65 72 65 6e 74 20 53 45 4c 45  m different SELE
19850 43 54 20 73 74 61 74 65 6d 65 6e 74 73 20 69 6e  CT statements in
19860 20 74 68 65 20 63 6f 6d 70 6f 75 6e 64 2e 3c 2f   the compound.</
19870 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20 4c 49 4d 49  p>..<p>^The LIMI
19880 54 20 63 6c 61 75 73 65 20 70 6c 61 63 65 73 20  T clause places 
19890 61 6e 20 75 70 70 65 72 20 62 6f 75 6e 64 20 6f  an upper bound o
198a0 6e 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  n the number of 
198b0 72 6f 77 73 0a 72 65 74 75 72 6e 65 64 20 69 6e  rows.returned in
198c0 20 74 68 65 20 72 65 73 75 6c 74 2e 20 20 5e 41   the result.  ^A
198d0 20 6e 65 67 61 74 69 76 65 20 4c 49 4d 49 54 20   negative LIMIT 
198e0 69 6e 64 69 63 61 74 65 73 20 6e 6f 20 75 70 70  indicates no upp
198f0 65 72 20 62 6f 75 6e 64 2e 0a 5e 54 68 65 20 6f  er bound..^The o
19900 70 74 69 6f 6e 61 6c 20 4f 46 46 53 45 54 20 66  ptional OFFSET f
19910 6f 6c 6c 6f 77 69 6e 67 20 4c 49 4d 49 54 20 73  ollowing LIMIT s
19920 70 65 63 69 66 69 65 73 20 68 6f 77 20 6d 61 6e  pecifies how man
19930 79 0a 72 6f 77 73 20 74 6f 20 73 6b 69 70 20 61  y.rows to skip a
19940 74 20 74 68 65 20 62 65 67 69 6e 6e 69 6e 67 20  t the beginning 
19950 6f 66 20 74 68 65 20 72 65 73 75 6c 74 20 73 65  of the result se
19960 74 2e 0a 5e 49 6e 20 61 20 63 6f 6d 70 6f 75 6e  t..^In a compoun
19970 64 20 71 75 65 72 79 2c 20 74 68 65 20 4c 49 4d  d query, the LIM
19980 49 54 20 63 6c 61 75 73 65 20 6d 61 79 20 6f 6e  IT clause may on
19990 6c 79 20 61 70 70 65 61 72 20 6f 6e 20 74 68 65  ly appear on the
199a0 0a 66 69 6e 61 6c 20 53 45 4c 45 43 54 20 73 74  .final SELECT st
199b0 61 74 65 6d 65 6e 74 2e 0a 5e 54 68 65 20 6c 69  atement..^The li
199c0 6d 69 74 20 69 73 20 61 70 70 6c 69 65 64 20 74  mit is applied t
199d0 6f 20 74 68 65 20 65 6e 74 69 72 65 20 71 75 65  o the entire que
199e0 72 79 20 6e 6f 74 0a 74 6f 20 74 68 65 20 69 6e  ry not.to the in
199f0 64 69 76 69 64 75 61 6c 20 53 45 4c 45 43 54 20  dividual SELECT 
19a00 73 74 61 74 65 6d 65 6e 74 20 74 6f 20 77 68 69  statement to whi
19a10 63 68 20 69 74 20 69 73 20 61 74 74 61 63 68 65  ch it is attache
19a20 64 2e 0a 5e 4e 6f 74 65 20 74 68 61 74 20 69 66  d..^Note that if
19a30 20 74 68 65 20 4f 46 46 53 45 54 20 6b 65 79 77   the OFFSET keyw
19a40 6f 72 64 20 69 73 20 75 73 65 64 20 69 6e 20 74  ord is used in t
19a50 68 65 20 4c 49 4d 49 54 20 63 6c 61 75 73 65 2c  he LIMIT clause,
19a60 20 74 68 65 6e 20 74 68 65 0a 6c 69 6d 69 74 20   then the.limit 
19a70 69 73 20 74 68 65 20 66 69 72 73 74 20 6e 75 6d  is the first num
19a80 62 65 72 20 61 6e 64 20 74 68 65 20 6f 66 66 73  ber and the offs
19a90 65 74 20 69 73 20 74 68 65 20 73 65 63 6f 6e 64  et is the second
19aa0 20 6e 75 6d 62 65 72 2e 20 20 5e 49 66 20 61 0a   number.  ^If a.
19ab0 63 6f 6d 6d 61 20 69 73 20 75 73 65 64 20 69 6e  comma is used in
19ac0 73 74 65 61 64 20 6f 66 20 74 68 65 20 4f 46 46  stead of the OFF
19ad0 53 45 54 20 6b 65 79 77 6f 72 64 2c 20 74 68 65  SET keyword, the
19ae0 6e 20 74 68 65 20 6f 66 66 73 65 74 20 69 73 20  n the offset is 
19af0 74 68 65 0a 66 69 72 73 74 20 6e 75 6d 62 65 72  the.first number
19b00 20 61 6e 64 20 74 68 65 20 6c 69 6d 69 74 20 69   and the limit i
19b10 73 20 74 68 65 20 73 65 63 6f 6e 64 20 6e 75 6d  s the second num
19b20 62 65 72 2e 20 20 54 68 69 73 20 73 65 65 6d 69  ber.  This seemi
19b30 6e 67 0a 63 6f 6e 74 72 61 64 69 74 69 6f 6e 20  ng.contradition 
19b40 69 73 20 69 6e 74 65 6e 74 69 6f 6e 61 6c 20 2d  is intentional -
19b50 20 69 74 20 6d 61 78 69 6d 69 7a 65 73 20 63 6f   it maximizes co
19b60 6d 70 61 74 69 62 69 6c 69 74 79 20 77 69 74 68  mpatibility with
19b70 20 6c 65 67 61 63 79 0a 53 51 4c 20 64 61 74 61   legacy.SQL data
19b80 62 61 73 65 20 73 79 73 74 65 6d 73 2e 0a 3c 2f  base systems..</
19b90 70 3e 0a 0a 3c 70 3e 5e 41 20 63 6f 6d 70 6f 75  p>..<p>^A compou
19ba0 6e 64 20 53 45 4c 45 43 54 20 69 73 20 66 6f 72  nd SELECT is for
19bb0 6d 65 64 20 66 72 6f 6d 20 74 77 6f 20 6f 72 20  med from two or 
19bc0 6d 6f 72 65 20 73 69 6d 70 6c 65 20 53 45 4c 45  more simple SELE
19bd0 43 54 73 20 63 6f 6e 6e 65 63 74 65 64 0a 62 79  CTs connected.by
19be0 20 6f 6e 65 20 6f 66 20 74 68 65 20 6f 70 65 72   one of the oper
19bf0 61 74 6f 72 73 20 55 4e 49 4f 4e 2c 20 55 4e 49  ators UNION, UNI
19c00 4f 4e 20 41 4c 4c 2c 20 49 4e 54 45 52 53 45 43  ON ALL, INTERSEC
19c10 54 2c 20 6f 72 20 45 58 43 45 50 54 2e 20 20 5e  T, or EXCEPT.  ^
19c20 49 6e 0a 61 20 63 6f 6d 70 6f 75 6e 64 20 53 45  In.a compound SE
19c30 4c 45 43 54 2c 20 61 6c 6c 20 74 68 65 20 63 6f  LECT, all the co
19c40 6e 73 74 69 74 75 65 6e 74 20 53 45 4c 45 43 54  nstituent SELECT
19c50 73 20 6d 75 73 74 20 73 70 65 63 69 66 79 20 74  s must specify t
19c60 68 65 0a 73 61 6d 65 20 6e 75 6d 62 65 72 20 6f  he.same number o
19c70 66 20 72 65 73 75 6c 74 20 63 6f 6c 75 6d 6e 73  f result columns
19c80 2e 20 20 5e 54 68 65 72 65 20 6d 61 79 20 62 65  .  ^There may be
19c90 20 6f 6e 6c 79 20 61 20 73 69 6e 67 6c 65 20 4f   only a single O
19ca0 52 44 45 52 20 42 59 0a 63 6c 61 75 73 65 20 61  RDER BY.clause a
19cb0 74 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65  t the end of the
19cc0 20 63 6f 6d 70 6f 75 6e 64 20 53 45 4c 45 43 54   compound SELECT
19cd0 2e 20 20 5e 54 68 65 20 55 4e 49 4f 4e 20 61 6e  .  ^The UNION an
19ce0 64 20 55 4e 49 4f 4e 20 41 4c 4c 0a 6f 70 65 72  d UNION ALL.oper
19cf0 61 74 6f 72 73 20 63 6f 6d 62 69 6e 65 20 74 68  ators combine th
19d00 65 20 72 65 73 75 6c 74 73 20 6f 66 20 74 68 65  e results of the
19d10 20 53 45 4c 45 43 54 73 20 74 6f 20 74 68 65 20   SELECTs to the 
19d20 72 69 67 68 74 20 61 6e 64 20 6c 65 66 74 20 69  right and left i
19d30 6e 74 6f 0a 61 20 73 69 6e 67 6c 65 20 62 69 67  nto.a single big
19d40 20 74 61 62 6c 65 2e 20 20 5e 54 68 65 20 64 69   table.  ^The di
19d50 66 66 65 72 65 6e 63 65 20 69 73 20 74 68 61 74  fference is that
19d60 20 69 6e 20 55 4e 49 4f 4e 20 61 6c 6c 20 72 65   in UNION all re
19d70 73 75 6c 74 20 72 6f 77 73 0a 61 72 65 20 64 69  sult rows.are di
19d80 73 74 69 6e 63 74 20 77 68 65 72 65 20 69 6e 20  stinct where in 
19d90 55 4e 49 4f 4e 20 41 4c 4c 20 74 68 65 72 65 20  UNION ALL there 
19da0 6d 61 79 20 62 65 20 64 75 70 6c 69 63 61 74 65  may be duplicate
19db0 73 2e 0a 5e 54 68 65 20 49 4e 54 45 52 53 45 43  s..^The INTERSEC
19dc0 54 20 6f 70 65 72 61 74 6f 72 20 74 61 6b 65 73  T operator takes
19dd0 20 74 68 65 20 69 6e 74 65 72 73 65 63 74 69 6f   the intersectio
19de0 6e 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74 73  n of the results
19df0 20 6f 66 20 74 68 65 0a 6c 65 66 74 20 61 6e 64   of the.left and
19e00 20 72 69 67 68 74 20 53 45 4c 45 43 54 73 2e 20   right SELECTs. 
19e10 20 5e 45 58 43 45 50 54 20 74 61 6b 65 73 20 74   ^EXCEPT takes t
19e20 68 65 20 72 65 73 75 6c 74 20 6f 66 20 6c 65 66  he result of lef
19e30 74 20 53 45 4c 45 43 54 20 61 66 74 65 72 0a 72  t SELECT after.r
19e40 65 6d 6f 76 69 6e 67 20 74 68 65 20 72 65 73 75  emoving the resu
19e50 6c 74 73 20 6f 66 20 74 68 65 20 72 69 67 68 74  lts of the right
19e60 20 53 45 4c 45 43 54 2e 20 20 5e 57 68 65 6e 20   SELECT.  ^When 
19e70 74 68 72 65 65 20 6f 72 20 6d 6f 72 65 20 53 45  three or more SE
19e80 4c 45 43 54 73 0a 61 72 65 20 63 6f 6e 6e 65 63  LECTs.are connec
19e90 74 65 64 20 69 6e 74 6f 20 61 20 63 6f 6d 70 6f  ted into a compo
19ea0 75 6e 64 2c 20 74 68 65 79 20 67 72 6f 75 70 20  und, they group 
19eb0 66 72 6f 6d 20 6c 65 66 74 20 74 6f 20 72 69 67  from left to rig
19ec0 68 74 2e 3c 2f 70 3e 0a 0a 0a 3c 74 63 6c 3e 0a  ht.</p>...<tcl>.
19ed0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
19ee0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
19ef0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
19f00 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
19f10 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 53  ##############.S
19f20 65 63 74 69 6f 6e 20 55 50 44 41 54 45 20 75 70  ection UPDATE up
19f30 64 61 74 65 20 7b 55 50 44 41 54 45 20 2a 55 50  date {UPDATE *UP
19f40 44 41 54 45 73 7d 0a 0a 42 75 62 62 6c 65 44 69  DATEs}..BubbleDi
19f50 61 67 72 61 6d 20 75 70 64 61 74 65 2d 73 74 6d  agram update-stm
19f60 74 20 31 0a 42 75 62 62 6c 65 44 69 61 67 72 61  t 1.BubbleDiagra
19f70 6d 20 71 75 61 6c 69 66 69 65 64 2d 74 61 62 6c  m qualified-tabl
19f80 65 2d 6e 61 6d 65 0a 3c 2f 74 63 6c 3e 0a 0a 3c  e-name.</tcl>..<
19f90 70 3e 5e 54 68 65 20 55 50 44 41 54 45 20 73 74  p>^The UPDATE st
19fa0 61 74 65 6d 65 6e 74 20 69 73 20 75 73 65 64 20  atement is used 
19fb0 74 6f 20 63 68 61 6e 67 65 20 74 68 65 20 76 61  to change the va
19fc0 6c 75 65 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69  lue of columns i
19fd0 6e 20 0a 73 65 6c 65 63 74 65 64 20 72 6f 77 73  n .selected rows
19fe0 20 6f 66 20 61 20 74 61 62 6c 65 2e 20 20 5e 45   of a table.  ^E
19ff0 61 63 68 20 61 73 73 69 67 6e 6d 65 6e 74 20 69  ach assignment i
1a000 6e 20 61 6e 20 55 50 44 41 54 45 20 73 70 65 63  n an UPDATE spec
1a010 69 66 69 65 73 0a 61 20 63 6f 6c 75 6d 6e 20 6e  ifies.a column n
1a020 61 6d 65 20 74 6f 20 74 68 65 20 6c 65 66 74 20  ame to the left 
1a030 6f 66 20 74 68 65 20 65 71 75 61 6c 73 20 73 69  of the equals si
1a040 67 6e 20 61 6e 64 20 61 6e 20 61 72 62 69 74 72  gn and an arbitr
1a050 61 72 79 20 65 78 70 72 65 73 73 69 6f 6e 0a 74  ary expression.t
1a060 6f 20 74 68 65 20 72 69 67 68 74 2e 20 20 5e 54  o the right.  ^T
1a070 68 65 20 65 78 70 72 65 73 73 69 6f 6e 73 20 6d  he expressions m
1a080 61 79 20 75 73 65 20 74 68 65 20 76 61 6c 75 65  ay use the value
1a090 73 20 6f 66 20 6f 74 68 65 72 20 63 6f 6c 75 6d  s of other colum
1a0a0 6e 73 2e 0a 5e 41 6c 6c 20 65 78 70 72 65 73 73  ns..^All express
1a0b0 69 6f 6e 73 20 61 72 65 20 65 76 61 6c 75 61 74  ions are evaluat
1a0c0 65 64 20 62 65 66 6f 72 65 20 61 6e 79 20 61 73  ed before any as
1a0d0 73 69 67 6e 6d 65 6e 74 73 20 61 72 65 20 6d 61  signments are ma
1a0e0 64 65 2e 0a 5e 41 20 57 48 45 52 45 20 63 6c 61  de..^A WHERE cla
1a0f0 75 73 65 20 63 61 6e 20 62 65 20 75 73 65 64 20  use can be used 
1a100 74 6f 20 72 65 73 74 72 69 63 74 20 77 68 69 63  to restrict whic
1a110 68 20 72 6f 77 73 20 61 72 65 20 75 70 64 61 74  h rows are updat
1a120 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65  ed.</p>..<p>^The
1a130 20 6f 70 74 69 6f 6e 61 6c 20 63 6f 6e 66 6c 69   optional confli
1a140 63 74 2d 63 6c 61 75 73 65 20 61 6c 6c 6f 77 73  ct-clause allows
1a150 20 74 68 65 20 73 70 65 63 69 66 69 63 61 74 69   the specificati
1a160 6f 6e 20 6f 66 20 61 6e 20 61 6c 74 65 72 6e 61  on of an alterna
1a170 74 69 76 65 0a 63 6f 6e 73 74 72 61 69 6e 74 20  tive.constraint 
1a180 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75 74  conflict resolut
1a190 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 20 74 6f  ion algorithm to
1a1a0 20 75 73 65 20 64 75 72 69 6e 67 20 74 68 69 73   use during this
1a1b0 20 6f 6e 65 20 55 50 44 41 54 45 20 63 6f 6d 6d   one UPDATE comm
1a1c0 61 6e 64 2e 0a 53 65 65 20 74 68 65 20 73 65 63  and..See the sec
1a1d0 74 69 6f 6e 20 74 69 74 6c 65 64 0a 5b 4f 4e 20  tion titled.[ON 
1a1e0 43 4f 4e 46 4c 49 43 54 5d 20 66 6f 72 20 61 64  CONFLICT] for ad
1a1f0 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61  ditional informa
1a200 74 69 6f 6e 2e 3c 2f 70 3e 0a 0a 3c 68 33 3e 52  tion.</p>..<h3>R
1a210 65 73 74 72 69 63 74 69 6f 6e 73 20 6f 6e 20 55  estrictions on U
1a220 50 44 41 54 45 20 53 74 61 74 65 6d 65 6e 74 73  PDATE Statements
1a230 20 57 69 74 68 69 6e 20 43 52 45 41 54 45 20 54   Within CREATE T
1a240 52 49 47 47 45 52 3c 2f 68 33 3e 0a 0a 3c 70 3e  RIGGER</h3>..<p>
1a250 5e 54 68 65 72 65 20 61 72 65 20 61 64 64 69 74  ^There are addit
1a260 69 6f 6e 61 6c 20 73 79 6e 74 61 78 20 72 65 73  ional syntax res
1a270 74 72 69 63 74 69 6f 6e 73 20 6f 6e 20 55 50 44  trictions on UPD
1a280 41 54 45 20 73 74 61 74 65 6d 65 6e 74 73 20 74  ATE statements t
1a290 68 61 74 0a 6f 63 63 75 72 20 77 69 74 68 69 6e  hat.occur within
1a2a0 20 74 68 65 20 62 6f 64 79 20 6f 66 20 61 20 5b   the body of a [
1a2b0 43 52 45 41 54 45 20 54 52 49 47 47 45 52 5d 20  CREATE TRIGGER] 
1a2c0 73 74 61 74 65 6d 65 6e 74 2e 20 20 5e 54 68 65  statement.  ^The
1a2d0 20 3c 69 3e 74 61 62 6c 65 2d 6e 61 6d 65 3c 2f   <i>table-name</
1a2e0 69 3e 0a 6f 66 20 74 68 65 20 55 50 44 41 54 45  i>.of the UPDATE
1a2f0 20 6d 75 73 74 20 62 65 20 75 6e 71 75 61 6c 69   must be unquali
1a300 66 69 65 64 2e 20 0a 5e 28 49 6e 20 6f 74 68 65  fied. .^(In othe
1a310 72 20 77 6f 72 64 73 2c 20 74 68 65 20 3c 69 3e  r words, the <i>
1a320 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3c 2f 69  database-name</i
1a330 3e 3c 62 3e 2e 3c 2f 62 3e 20 70 72 65 66 69 78  ><b>.</b> prefix
1a340 20 0a 6f 6e 20 74 68 65 20 74 61 62 6c 65 20 6e   .on the table n
1a350 61 6d 65 20 6f 66 20 74 68 65 20 55 50 44 41 54  ame of the UPDAT
1a360 45 20 69 73 20 6e 6f 74 20 61 6c 6c 6f 77 65 64  E is not allowed
1a370 20 77 69 74 68 69 6e 20 74 72 69 67 67 65 72 73   within triggers
1a380 2e 29 5e 0a 5e 54 68 65 20 74 61 62 6c 65 20 74  .)^.^The table t
1a390 6f 20 62 65 20 75 70 64 61 74 65 64 20 6d 75 73  o be updated mus
1a3a0 74 20 62 65 20 69 6e 20 74 68 65 20 73 61 6d 65  t be in the same
1a3b0 0a 64 61 74 61 62 61 73 65 20 61 73 20 74 68 65  .database as the
1a3c0 20 74 61 62 6c 65 20 74 6f 20 77 68 69 63 68 20   table to which 
1a3d0 74 68 65 20 74 72 69 67 67 65 72 20 69 73 20 61  the trigger is a
1a3e0 74 74 61 63 68 65 64 2e 3c 2f 70 3e 0a 0a 3c 70  ttached.</p>..<p
1a3f0 3e 5e 54 68 65 20 49 4e 44 45 58 45 44 20 42 59  >^The INDEXED BY
1a400 20 61 6e 64 20 4e 4f 54 20 49 4e 44 45 58 45 44   and NOT INDEXED
1a410 20 63 6c 61 75 73 65 73 20 61 72 65 20 6e 6f 74   clauses are not
1a420 20 61 6c 6c 6f 77 65 64 20 6f 6e 20 55 50 44 41   allowed on UPDA
1a430 54 45 0a 73 74 61 74 65 6d 65 6e 74 73 20 77 69  TE.statements wi
1a440 74 68 69 6e 20 74 72 69 67 67 65 72 73 2e 3c 2f  thin triggers.</
1a450 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20 4c 49 4d 49  p>..<p>^The LIMI
1a460 54 20 63 6c 61 75 73 65 20 66 6f 72 20 55 50 44  T clause for UPD
1a470 41 54 45 20 69 73 20 75 6e 73 75 70 70 6f 72 74  ATE is unsupport
1a480 65 64 20 77 69 74 68 69 6e 20 74 72 69 67 67 65  ed within trigge
1a490 72 73 2e 3c 2f 70 3e 0a 0a 3c 68 33 3e 4f 70 74  rs.</p>..<h3>Opt
1a4a0 69 6f 6e 61 6c 20 4c 49 4d 49 54 20 61 6e 64 20  ional LIMIT and 
1a4b0 4f 52 44 45 52 20 42 59 20 43 6c 61 75 73 65 73  ORDER BY Clauses
1a4c0 3c 2f 68 33 3e 0a 0a 3c 70 3e 5e 28 49 66 20 53  </h3>..<p>^(If S
1a4d0 51 4c 69 74 65 20 69 73 20 62 75 69 6c 74 20 77  QLite is built w
1a4e0 69 74 68 20 74 68 65 20 5b 53 51 4c 49 54 45 5f  ith the [SQLITE_
1a4f0 45 4e 41 42 4c 45 5f 55 50 44 41 54 45 5f 44 45  ENABLE_UPDATE_DE
1a500 4c 45 54 45 5f 4c 49 4d 49 54 5d 0a 63 6f 6d 70  LETE_LIMIT].comp
1a510 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20  ile-time option 
1a520 74 68 65 6e 20 74 68 65 20 73 79 6e 74 61 78 20  then the syntax 
1a530 6f 66 20 74 68 65 20 55 50 44 41 54 45 20 73 74  of the UPDATE st
1a540 61 74 65 6d 65 6e 74 20 69 73 20 65 78 74 65 6e  atement is exten
1a550 64 65 64 0a 77 69 74 68 20 6f 70 74 69 6f 6e 61  ded.with optiona
1a560 6c 20 4f 52 44 45 52 20 42 59 20 61 6e 64 20 4c  l ORDER BY and L
1a570 49 4d 49 54 20 63 6c 61 75 73 65 73 29 5e 20 61  IMIT clauses)^ a
1a580 73 20 66 6f 6c 6c 6f 77 73 3a 3c 2f 70 3e 0a 0a  s follows:</p>..
1a590 3c 74 63 6c 3e 42 75 62 62 6c 65 44 69 61 67 72  <tcl>BubbleDiagr
1a5a0 61 6d 20 75 70 64 61 74 65 2d 73 74 6d 74 2d 6c  am update-stmt-l
1a5b0 69 6d 69 74 65 64 3c 2f 74 63 6c 3e 0a 0a 3c 70  imited</tcl>..<p
1a5c0 3e 5e 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20 4c  >^The optional L
1a5d0 49 4d 49 54 20 63 6c 61 75 73 65 20 63 61 6e 20  IMIT clause can 
1a5e0 62 65 20 75 73 65 64 20 74 6f 20 6c 69 6d 69 74  be used to limit
1a5f0 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 0a 72   the number of.r
1a600 6f 77 73 20 6d 6f 64 69 66 65 64 2c 20 61 6e 64  ows modifed, and
1a610 20 74 68 65 72 65 62 79 20 6c 69 6d 69 74 20 74   thereby limit t
1a620 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20 74  he size of the t
1a630 72 61 6e 73 61 63 74 69 6f 6e 2e 0a 5e 54 68 65  ransaction..^The
1a640 20 4f 52 44 45 52 20 42 59 20 63 6c 61 75 73 65   ORDER BY clause
1a650 20 6f 6e 20 61 6e 20 55 50 44 41 54 45 20 73 74   on an UPDATE st
1a660 61 74 65 6d 65 6e 74 0a 69 73 20 75 73 65 64 20  atement.is used 
1a670 6f 6e 6c 79 20 74 6f 20 64 65 74 65 72 6d 69 6e  only to determin
1a680 65 20 77 68 69 63 68 20 72 6f 77 73 20 66 61 6c  e which rows fal
1a690 6c 0a 77 69 74 68 69 6e 20 74 68 65 20 4c 49 4d  l.within the LIM
1a6a0 49 54 2e 20 20 5e 54 68 65 20 6f 72 64 65 72 20  IT.  ^The order 
1a6b0 69 6e 20 77 68 69 63 68 20 72 6f 77 73 20 61 72  in which rows ar
1a6c0 65 20 6d 6f 64 69 66 69 65 64 20 69 73 20 61 72  e modified is ar
1a6d0 62 69 74 72 61 72 79 0a 61 6e 64 20 69 73 20 6e  bitrary.and is n
1a6e0 6f 74 20 64 65 74 65 72 6d 69 6e 65 64 20 62 79  ot determined by
1a6f0 20 74 68 65 20 4f 52 44 45 52 20 42 59 20 63 6c   the ORDER BY cl
1a700 61 75 73 65 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e  ause.</p>..<tcl>
1a710 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  .###############
1a720 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1a730 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1a740 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1a750 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a  ###############.
1a760 53 65 63 74 69 6f 6e 20 56 41 43 55 55 4d 20 76  Section VACUUM v
1a770 61 63 75 75 6d 20 56 41 43 55 55 4d 0a 0a 42 75  acuum VACUUM..Bu
1a780 62 62 6c 65 44 69 61 67 72 61 6d 20 76 61 63 75  bbleDiagram vacu
1a790 75 6d 2d 73 74 6d 74 20 31 0a 3c 2f 74 63 6c 3e  um-stmt 1.</tcl>
1a7a0 0a 0a 3c 70 3e 5e 57 68 65 6e 20 61 6e 20 6f 62  ..<p>^When an ob
1a7b0 6a 65 63 74 20 28 74 61 62 6c 65 2c 20 69 6e 64  ject (table, ind
1a7c0 65 78 2c 20 74 72 69 67 67 65 72 2c 20 6f 72 20  ex, trigger, or 
1a7d0 76 69 65 77 29 20 69 73 20 64 72 6f 70 70 65 64  view) is dropped
1a7e0 20 66 72 6f 6d 20 74 68 65 20 0a 64 61 74 61 62   from the .datab
1a7f0 61 73 65 2c 20 69 74 20 6c 65 61 76 65 73 20 62  ase, it leaves b
1a800 65 68 69 6e 64 20 65 6d 70 74 79 20 73 70 61 63  ehind empty spac
1a810 65 2e 20 0a 5e 54 68 69 73 20 65 6d 70 74 79 20  e. .^This empty 
1a820 73 70 61 63 65 20 77 69 6c 6c 20 62 65 20 72 65  space will be re
1a830 75 73 65 64 20 74 68 65 20 6e 65 78 74 20 74 69  used the next ti
1a840 6d 65 20 6e 65 77 20 69 6e 66 6f 72 6d 61 74 69  me new informati
1a850 6f 6e 20 69 73 0a 61 64 64 65 64 20 74 6f 20 74  on is.added to t
1a860 68 65 20 64 61 74 61 62 61 73 65 2e 20 20 42 75  he database.  Bu
1a870 74 20 69 6e 20 74 68 65 20 6d 65 61 6e 74 69 6d  t in the meantim
1a880 65 2c 20 74 68 65 20 64 61 74 61 62 61 73 65 20  e, the database 
1a890 66 69 6c 65 20 6d 69 67 68 74 0a 62 65 20 6c 61  file might.be la
1a8a0 72 67 65 72 20 74 68 61 6e 20 73 74 72 69 63 74  rger than strict
1a8b0 6c 79 20 6e 65 63 65 73 73 61 72 79 2e 20 20 41  ly necessary.  A
1a8c0 6c 73 6f 2c 20 66 72 65 71 75 65 6e 74 20 69 6e  lso, frequent in
1a8d0 73 65 72 74 73 2c 20 75 70 64 61 74 65 73 2c 0a  serts, updates,.
1a8e0 61 6e 64 20 64 65 6c 65 74 65 73 20 63 61 6e 20  and deletes can 
1a8f0 63 61 75 73 65 20 74 68 65 20 69 6e 66 6f 72 6d  cause the inform
1a900 61 74 69 6f 6e 20 69 6e 20 74 68 65 20 64 61 74  ation in the dat
1a910 61 62 61 73 65 20 74 6f 20 62 65 63 6f 6d 65 0a  abase to become.
1a920 66 72 61 67 6d 65 6e 74 65 64 20 2d 20 73 63 72  fragmented - scr
1a930 61 74 74 65 72 65 64 20 6f 75 74 20 61 6c 6c 20  attered out all 
1a940 61 63 72 6f 73 73 20 74 68 65 20 64 61 74 61 62  across the datab
1a950 61 73 65 20 66 69 6c 65 20 72 61 74 68 65 72 0a  ase file rather.
1a960 74 68 61 6e 20 63 6c 75 73 74 65 72 65 64 20 74  than clustered t
1a970 6f 67 65 74 68 65 72 20 69 6e 20 6f 6e 65 20 70  ogether in one p
1a980 6c 61 63 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54  lace.</p>..<p>^T
1a990 68 65 20 56 41 43 55 55 4d 20 63 6f 6d 6d 61 6e  he VACUUM comman
1a9a0 64 20 63 6c 65 61 6e 73 0a 74 68 65 20 6d 61 69  d cleans.the mai
1a9b0 6e 20 64 61 74 61 62 61 73 65 20 62 79 20 63 6f  n database by co
1a9c0 70 79 69 6e 67 20 69 74 73 20 63 6f 6e 74 65 6e  pying its conten
1a9d0 74 73 20 74 6f 20 61 20 74 65 6d 70 6f 72 61 72  ts to a temporar
1a9e0 79 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20  y database file 
1a9f0 61 6e 64 20 0a 72 65 6c 6f 61 64 69 6e 67 20 74  and .reloading t
1aa00 68 65 20 6f 72 69 67 69 6e 61 6c 20 64 61 74 61  he original data
1aa10 62 61 73 65 20 66 69 6c 65 20 66 72 6f 6d 20 74  base file from t
1aa20 68 65 20 63 6f 70 79 2e 20 20 54 68 69 73 20 65  he copy.  This e
1aa30 6c 69 6d 69 6e 61 74 65 73 20 0a 66 72 65 65 20  liminates .free 
1aa40 70 61 67 65 73 2c 20 20 61 6c 69 67 6e 73 20 74  pages,  aligns t
1aa50 61 62 6c 65 20 64 61 74 61 20 74 6f 20 62 65 20  able data to be 
1aa60 63 6f 6e 74 69 67 75 6f 75 73 2c 20 61 6e 64 20  contiguous, and 
1aa70 6f 74 68 65 72 77 69 73 65 20 63 6c 65 61 6e 73  otherwise cleans
1aa80 20 0a 75 70 20 74 68 65 20 64 61 74 61 62 61 73   .up the databas
1aa90 65 20 66 69 6c 65 20 73 74 72 75 63 74 75 72 65  e file structure
1aaa0 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20 56  .</p>..<p>^The V
1aab0 41 43 55 55 4d 20 63 6f 6d 6d 61 6e 64 20 6d 61  ACUUM command ma
1aac0 79 20 63 68 61 6e 67 65 20 74 68 65 20 0a 5b 52  y change the .[R
1aad0 4f 57 49 44 20 7c 20 52 4f 57 49 44 73 5d 20 6f  OWID | ROWIDs] o
1aae0 66 20 65 6e 74 72 69 65 73 20 69 6e 20 74 61 62  f entries in tab
1aaf0 6c 65 73 20 74 68 61 74 20 64 6f 0a 6e 6f 74 20  les that do.not 
1ab00 68 61 76 65 20 61 6e 20 65 78 70 6c 69 63 69 74  have an explicit
1ab10 20 5b 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52   [INTEGER PRIMAR
1ab20 59 20 4b 45 59 5d 2e 3c 2f 70 3e 0a 0a 3c 70 3e  Y KEY].</p>..<p>
1ab30 5e 56 41 43 55 55 4d 20 6f 6e 6c 79 20 77 6f 72  ^VACUUM only wor
1ab40 6b 73 20 6f 6e 20 74 68 65 20 6d 61 69 6e 20 64  ks on the main d
1ab50 61 74 61 62 61 73 65 2e 0a 49 74 20 69 73 20 6e  atabase..It is n
1ab60 6f 74 20 70 6f 73 73 69 62 6c 65 20 74 6f 20 56  ot possible to V
1ab70 41 43 55 55 4d 20 61 6e 20 61 74 74 61 63 68 65  ACUUM an attache
1ab80 64 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 2e  d database file.
1ab90 3c 2f 70 3e 0a 0a 3c 70 3e 5e 54 68 65 20 56 41  </p>..<p>^The VA
1aba0 43 55 55 4d 20 63 6f 6d 6d 61 6e 64 20 77 69 6c  CUUM command wil
1abb0 6c 20 66 61 69 6c 20 69 66 20 74 68 65 72 65 20  l fail if there 
1abc0 69 73 20 61 6e 20 61 63 74 69 76 65 20 74 72 61  is an active tra
1abd0 6e 73 61 63 74 69 6f 6e 2e 0a 5e 54 68 65 20 56  nsaction..^The V
1abe0 41 43 55 55 4d 20 63 6f 6d 6d 61 6e 64 20 69 73  ACUUM command is
1abf0 20 61 20 6e 6f 2d 6f 70 20 66 6f 72 20 69 6e 2d   a no-op for in-
1ac00 6d 65 6d 6f 72 79 20 64 61 74 61 62 61 73 65 73  memory databases
1ac10 2e 3c 2f 70 3e 0a 0a 3c 70 3e 5e 28 41 73 20 6f  .</p>..<p>^(As o
1ac20 66 20 53 51 4c 69 74 65 20 76 65 72 73 69 6f 6e  f SQLite version
1ac30 20 33 2e 31 2c 20 61 6e 20 61 6c 74 65 72 6e 61   3.1, an alterna
1ac40 74 69 76 65 20 74 6f 20 75 73 69 6e 67 20 74 68  tive to using th
1ac50 65 20 56 41 43 55 55 4d 20 63 6f 6d 6d 61 6e 64  e VACUUM command
1ac60 0a 69 73 20 61 75 74 6f 2d 76 61 63 75 75 6d 20  .is auto-vacuum 
1ac70 6d 6f 64 65 2c 20 65 6e 61 62 6c 65 64 20 75 73  mode, enabled us
1ac80 69 6e 67 20 74 68 65 20 0a 5b 61 75 74 6f 5f 76  ing the .[auto_v
1ac90 61 63 75 75 6d 5d 20 70 72 61 67 6d 61 2e 29 5e  acuum] pragma.)^
1aca0 20 20 5e 57 68 65 6e 20 5b 61 75 74 6f 5f 76 61    ^When [auto_va
1acb0 63 75 75 6d 5d 20 69 73 20 65 6e 61 62 6c 65 64  cuum] is enabled
1acc0 20 66 6f 72 20 61 20 64 61 74 61 62 61 73 65 2c   for a database,
1acd0 20 0a 6c 61 72 67 65 20 64 65 6c 65 74 65 73 20   .large deletes 
1ace0 63 61 75 73 65 0a 74 68 65 20 73 69 7a 65 20 6f  cause.the size o
1acf0 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66  f the database f
1ad00 69 6c 65 20 74 6f 20 73 68 72 69 6e 6b 2e 20 20  ile to shrink.  
1ad10 48 6f 77 65 76 65 72 2c 20 5b 61 75 74 6f 5f 76  However, [auto_v
1ad20 61 63 75 75 6d 5d 0a 61 6c 73 6f 20 63 61 75 73  acuum].also caus
1ad30 65 73 20 65 78 63 65 73 73 20 66 72 61 67 6d 65  es excess fragme
1ad40 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 64  ntation of the d
1ad50 61 74 61 62 61 73 65 20 66 69 6c 65 2e 20 20 5e  atabase file.  ^
1ad60 41 6e 64 20 5b 61 75 74 6f 5f 76 61 63 75 75 6d  And [auto_vacuum
1ad70 5d 0a 64 6f 65 73 20 6e 6f 74 20 63 6f 6d 70 61  ].does not compa
1ad80 63 74 20 70 61 72 74 69 61 6c 6c 79 20 66 69 6c  ct partially fil
1ad90 6c 65 64 20 70 61 67 65 73 20 6f 66 20 74 68 65  led pages of the
1ada0 20 64 61 74 61 62 61 73 65 20 61 73 20 56 41 43   database as VAC
1adb0 55 55 4d 0a 64 6f 65 73 2e 3c 2f 70 3e 0a 0a 3c  UUM.does.</p>..<
1adc0 70 3e 5e 54 68 65 20 5b 70 61 67 65 5f 73 69 7a  p>^The [page_siz
1add0 65 5d 20 61 6e 64 2f 6f 72 20 5b 61 75 74 6f 5f  e] and/or [auto_
1ade0 76 61 63 75 75 6d 5d 20 6d 6f 64 65 20 6f 66 20  vacuum] mode of 
1adf0 61 20 64 61 74 61 62 61 73 65 20 63 61 6e 20 62  a database can b
1ae00 65 20 63 68 61 6e 67 65 64 0a 62 79 20 69 6e 76  e changed.by inv
1ae10 6f 6b 69 6e 67 20 74 68 65 20 5b 70 61 67 65 5f  oking the [page_
1ae20 73 69 7a 65 20 70 72 61 67 6d 61 5d 20 61 6e 64  size pragma] and
1ae30 2f 6f 72 20 5b 61 75 74 6f 5f 76 61 63 75 75 6d  /or [auto_vacuum
1ae40 20 70 72 61 67 6d 61 5d 20 61 6e 64 20 74 68 65   pragma] and the
1ae50 6e 0a 69 6d 6d 65 64 69 61 74 65 6c 79 20 56 41  n.immediately VA
1ae60 43 55 55 4d 69 6e 67 20 74 68 65 20 64 61 74 61  CUUMing the data
1ae70 62 61 73 65 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e  base.</p>..<tcl>
1ae80 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  .###############
1ae90 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1aea0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1aeb0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1aec0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a  ###############.
1aed0 53 65 63 74 69 6f 6e 20 7b 49 4e 44 45 58 45 44  Section {INDEXED
1aee0 20 42 59 7d 20 69 6e 64 65 78 65 64 62 79 20 7b   BY} indexedby {
1aef0 7b 49 4e 44 45 58 45 44 20 42 59 7d 20 7b 4e 4f  {INDEXED BY} {NO
1af00 54 20 49 4e 44 45 58 45 44 7d 7d 0a 0a 3c 2f 74  T INDEXED}}..</t
1af10 63 6c 3e 0a 3c 70 3e 5e 54 68 65 20 49 4e 44 45  cl>.<p>^The INDE
1af20 58 45 44 20 42 59 20 70 68 72 61 73 65 20 69 73  XED BY phrase is
1af30 20 61 20 53 51 4c 20 65 78 74 65 6e 73 69 6f 6e   a SQL extension
1af40 20 66 6f 75 6e 64 20 6f 6e 6c 79 20 69 6e 20 53   found only in S
1af50 51 4c 69 74 65 20 77 68 69 63 68 20 63 61 6e 0a  QLite which can.
1af60 62 65 20 75 73 65 64 20 74 6f 20 76 65 72 69 66  be used to verif
1af70 79 20 74 68 61 74 20 74 68 65 20 63 6f 72 72 65  y that the corre
1af80 63 74 20 69 6e 64 69 63 65 73 20 61 72 65 20 62  ct indices are b
1af90 65 69 6e 67 20 75 73 65 64 20 6f 6e 20 61 20 5b  eing used on a [
1afa0 44 45 4c 45 54 45 5d 2c 0a 5b 53 45 4c 45 43 54  DELETE],.[SELECT
1afb0 5d 2c 20 6f 72 20 5b 55 50 44 41 54 45 5d 20 73  ], or [UPDATE] s
1afc0 74 61 74 65 6d 65 6e 74 2e 0a 5e 54 68 65 20 49  tatement..^The I
1afd0 4e 44 45 58 45 44 20 42 59 20 70 68 72 61 73 65  NDEXED BY phrase
1afe0 20 61 6c 77 61 79 73 20 66 6f 6c 6c 6f 77 73 20   always follows 
1aff0 74 68 65 20 6e 61 6d 65 20 6f 66 20 61 20 74 61  the name of a ta
1b000 62 6c 65 20 74 68 61 74 20 53 51 4c 69 74 65 20  ble that SQLite 
1b010 77 69 6c 6c 0a 62 65 20 72 65 61 64 69 6e 67 2e  will.be reading.
1b020 20 20 54 68 65 20 49 4e 44 45 58 45 44 20 42 59    The INDEXED BY
1b030 20 70 68 72 61 73 65 20 63 61 6e 20 62 65 20 73   phrase can be s
1b040 65 65 6e 20 69 6e 20 74 68 65 20 66 6f 6c 6c 6f  een in the follo
1b050 77 69 6e 67 20 73 79 6e 74 61 78 0a 64 69 61 67  wing syntax.diag
1b060 72 61 6d 73 3a 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e  rams:</p>..<tcl>
1b070 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 71  .BubbleDiagram q
1b080 75 61 6c 69 66 69 65 64 2d 74 61 62 6c 65 2d 6e  ualified-table-n
1b090 61 6d 65 0a 42 75 62 62 6c 65 44 69 61 67 72 61  ame.BubbleDiagra
1b0a0 6d 20 73 69 6e 67 6c 65 2d 73 6f 75 72 63 65 0a  m single-source.
1b0b0 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 5e 54 68 65 20  </tcl>..<p>^The 
1b0c0 22 49 4e 44 45 58 45 44 20 42 59 20 69 6e 64 65  "INDEXED BY inde
1b0d0 78 2d 6e 61 6d 65 22 20 63 6c 61 75 73 65 20 73  x-name" clause s
1b0e0 70 65 63 69 66 69 65 73 20 74 68 61 74 20 74 68  pecifies that th
1b0f0 65 20 6e 61 6d 65 64 20 69 6e 64 65 78 0a 6d 75  e named index.mu
1b100 73 74 20 62 65 20 75 73 65 64 20 69 6e 20 6f 72  st be used in or
1b110 64 65 72 20 74 6f 20 6c 6f 6f 6b 20 75 70 20 76  der to look up v
1b120 61 6c 75 65 73 20 6f 6e 20 74 68 65 20 70 72 65  alues on the pre
1b130 63 65 64 69 6e 67 20 74 61 62 6c 65 2e 0a 5e 49  ceding table..^I
1b140 66 20 69 6e 64 65 78 2d 6e 61 6d 65 20 64 6f 65  f index-name doe
1b150 73 20 6e 6f 74 20 65 78 69 73 74 20 6f 72 20 63  s not exist or c
1b160 61 6e 6e 6f 74 20 62 65 20 75 73 65 64 20 66 6f  annot be used fo
1b170 72 20 74 68 65 20 71 75 65 72 79 2c 20 74 68 65  r the query, the
1b180 6e 0a 74 68 65 20 70 72 65 70 61 72 61 74 69 6f  n.the preparatio
1b190 6e 20 6f 66 20 74 68 65 20 53 51 4c 20 73 74 61  n of the SQL sta
1b1a0 74 65 6d 65 6e 74 20 66 61 69 6c 73 2e 0a 5e 28  tement fails..^(
1b1b0 54 68 65 20 22 4e 4f 54 20 49 4e 44 45 58 45 44  The "NOT INDEXED
1b1c0 22 20 63 6c 61 75 73 65 20 73 70 65 63 69 66 69  " clause specifi
1b1d0 65 73 20 74 68 61 74 20 6e 6f 20 69 6e 64 65 78  es that no index
1b1e0 20 73 68 61 6c 6c 20 62 65 20 75 73 65 64 20 77   shall be used w
1b1f0 68 65 6e 0a 61 63 63 65 73 73 69 6e 67 20 74 68  hen.accessing th
1b200 65 20 70 72 65 63 65 64 69 6e 67 20 74 61 62 6c  e preceding tabl
1b210 65 2c 20 69 6e 63 6c 75 64 69 6e 67 20 69 6d 70  e, including imp
1b220 6c 69 65 64 20 69 6e 64 69 63 65 73 20 63 72 65  lied indices cre
1b230 61 74 65 20 62 79 0a 55 4e 49 51 55 45 20 61 6e  ate by.UNIQUE an
1b240 64 20 50 52 49 4d 41 52 59 20 4b 45 59 20 63 6f  d PRIMARY KEY co
1b250 6e 73 74 72 61 69 6e 74 73 2e 20 20 48 6f 77 65  nstraints.  Howe
1b260 76 65 72 2c 20 74 68 65 20 49 4e 54 45 47 45 52  ver, the INTEGER
1b270 20 50 52 49 4d 41 52 59 20 4b 45 59 0a 63 61 6e   PRIMARY KEY.can
1b280 20 73 74 69 6c 6c 20 62 65 20 75 73 65 64 20 74   still be used t
1b290 6f 20 6c 6f 6f 6b 20 75 70 20 65 6e 74 72 69 65  o look up entrie
1b2a0 73 20 65 76 65 6e 20 77 68 65 6e 20 22 4e 4f 54  s even when "NOT
1b2b0 20 49 4e 44 45 58 45 44 22 20 69 73 20 73 70 65   INDEXED" is spe
1b2c0 63 69 66 69 65 64 2e 29 5e 3c 2f 70 3e 0a 0a 3c  cified.)^</p>..<
1b2d0 70 3e 53 6f 6d 65 20 53 51 4c 20 64 61 74 61 62  p>Some SQL datab
1b2e0 61 73 65 20 65 6e 67 69 6e 65 73 20 70 72 6f 76  ase engines prov
1b2f0 69 64 65 20 6e 6f 6e 2d 73 74 61 6e 64 61 72 64  ide non-standard
1b300 20 22 68 69 6e 74 22 20 6d 65 63 68 61 6e 69 73   "hint" mechanis
1b310 6d 73 20 77 68 69 63 68 0a 63 61 6e 20 62 65 20  ms which.can be 
1b320 75 73 65 64 20 74 6f 20 67 69 76 65 20 74 68 65  used to give the
1b330 20 71 75 65 72 79 20 6f 70 74 69 6d 69 7a 65 72   query optimizer
1b340 20 63 6c 75 65 73 20 61 62 6f 75 74 20 77 68 61   clues about wha
1b350 74 20 69 6e 64 69 63 65 73 20 69 74 20 73 68 6f  t indices it sho
1b360 75 6c 64 0a 75 73 65 20 66 6f 72 20 61 20 70 61  uld.use for a pa
1b370 72 74 69 63 75 6c 61 72 20 73 74 61 74 65 6d 65  rticular stateme
1b380 6e 74 2e 20 20 54 68 65 20 49 4e 44 45 58 20 42  nt.  The INDEX B
1b390 59 20 63 6c 61 75 73 65 20 6f 66 20 53 51 4c 69  Y clause of SQLi
1b3a0 74 65 20 69 73 20 0a 3c 65 6d 3e 6e 6f 74 3c 2f  te is .<em>not</
1b3b0 65 6d 3e 20 61 20 68 69 6e 74 69 6e 67 20 6d 65  em> a hinting me
1b3c0 63 68 61 6e 69 73 6d 20 61 6e 64 20 69 74 20 73  chanism and it s
1b3d0 68 6f 75 6c 64 20 6e 6f 74 20 62 65 20 75 73 65  hould not be use
1b3e0 64 20 61 73 20 73 75 63 68 2e 0a 5e 54 68 65 20  d as such..^The 
1b3f0 49 4e 44 45 58 45 44 20 42 59 20 63 6c 61 75 73  INDEXED BY claus
1b400 65 20 64 6f 65 73 20 6e 6f 74 20 67 69 76 65 20  e does not give 
1b410 74 68 65 20 6f 70 74 69 6d 69 7a 65 72 20 68 69  the optimizer hi
1b420 6e 74 73 20 61 62 6f 75 74 20 77 68 69 63 68 20  nts about which 
1b430 69 6e 64 65 78 0a 74 6f 20 75 73 65 3b 20 69 74  index.to use; it
1b440 20 67 69 76 65 73 20 74 68 65 20 6f 70 74 69 6d   gives the optim
1b450 69 7a 65 72 20 61 20 72 65 71 75 69 72 65 6d 65  izer a requireme
1b460 6e 74 20 6f 66 20 77 68 69 63 68 20 69 6e 64 65  nt of which inde
1b470 78 20 74 6f 20 75 73 65 2e 0a 5e 49 66 20 74 68  x to use..^If th
1b480 65 20 71 75 65 72 79 20 6f 70 74 69 6d 69 7a 65  e query optimize
1b490 72 20 69 73 20 75 6e 61 62 6c 65 20 74 6f 20 75  r is unable to u
1b4a0 73 65 20 74 68 65 20 69 6e 64 65 78 20 73 70 65  se the index spe
1b4b0 63 69 66 69 65 64 20 62 79 20 74 68 65 0a 49 4e  cified by the.IN
1b4c0 44 45 58 20 42 59 20 63 6c 61 75 73 65 2c 20 74  DEX BY clause, t
1b4d0 68 65 6e 20 74 68 65 20 71 75 65 72 79 20 77 69  hen the query wi
1b4e0 6c 6c 20 66 61 69 6c 20 77 69 74 68 20 61 6e 20  ll fail with an 
1b4f0 65 72 72 6f 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54  error.</p>..<p>T
1b500 68 65 20 49 4e 44 45 58 45 44 20 42 59 20 63 6c  he INDEXED BY cl
1b510 61 75 73 65 20 69 73 20 3c 65 6d 3e 6e 6f 74 3c  ause is <em>not<
1b520 2f 65 6d 3e 20 69 6e 74 65 6e 64 65 64 20 66 6f  /em> intended fo
1b530 72 20 75 73 65 20 69 6e 20 74 75 6e 69 6e 67 0a  r use in tuning.
1b540 74 68 65 20 70 72 65 66 6f 72 6d 61 6e 63 65 20  the preformance 
1b550 6f 66 20 61 20 71 75 65 72 79 2e 20 20 54 68 65  of a query.  The
1b560 20 69 6e 74 65 6e 74 20 6f 66 20 74 68 65 20 49   intent of the I
1b570 4e 44 45 58 45 44 20 42 59 20 63 6c 61 75 73 65  NDEXED BY clause
1b580 20 69 73 0a 74 6f 20 72 61 69 73 65 20 61 20 72   is.to raise a r
1b590 75 6e 2d 74 69 6d 65 20 65 72 72 6f 72 20 69 66  un-time error if
1b5a0 20 61 20 73 63 68 65 6d 61 20 63 68 61 6e 67 65   a schema change
1b5b0 2c 20 73 75 63 68 20 61 73 20 64 72 6f 70 70 69  , such as droppi
1b5c0 6e 67 20 6f 72 0a 63 72 65 61 74 69 6e 67 20 61  ng or.creating a
1b5d0 6e 20 69 6e 64 65 78 2c 20 63 61 75 73 65 73 20  n index, causes 
1b5e0 74 68 65 20 71 75 65 72 79 20 70 6c 61 6e 20 66  the query plan f
1b5f0 6f 72 20 61 20 74 69 6d 65 2d 73 65 6e 73 69 74  or a time-sensit
1b600 69 76 65 20 71 75 65 72 79 0a 74 6f 20 63 68 61  ive query.to cha
1b610 6e 67 65 2e 20 20 54 68 65 20 49 4e 44 45 58 45  nge.  The INDEXE
1b620 44 20 42 59 20 63 6c 61 75 73 65 20 69 73 20 64  D BY clause is d
1b630 65 73 69 67 6e 65 64 20 74 6f 20 68 65 6c 70 20  esigned to help 
1b640 64 65 74 65 63 74 0a 75 6e 64 65 73 69 72 61 62  detect.undesirab
1b650 6c 65 20 71 75 65 72 79 20 70 6c 61 6e 20 63 68  le query plan ch
1b660 61 6e 67 65 73 20 64 75 72 69 6e 67 20 72 65 67  anges during reg
1b670 72 65 73 73 69 6f 6e 20 74 65 73 74 69 6e 67 2e  ression testing.
1b680 0a 44 65 76 65 6c 6f 70 65 72 73 20 61 72 65 20  .Developers are 
1b690 61 64 6d 6f 6e 69 73 68 65 64 20 74 6f 20 6f 6d  admonished to om
1b6a0 69 74 20 61 6c 6c 20 75 73 65 20 6f 66 20 49 4e  it all use of IN
1b6b0 44 45 58 45 44 20 42 59 20 64 75 72 69 6e 67 0a  DEXED BY during.
1b6c0 61 70 70 6c 69 63 61 74 69 6f 6e 20 64 65 73 69  application desi
1b6d0 67 6e 2c 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  gn, implementati
1b6e0 6f 6e 2c 20 74 65 73 74 69 6e 67 2c 20 61 6e 64  on, testing, and
1b6f0 20 74 75 6e 69 6e 67 2e 20 20 49 66 0a 49 4e 44   tuning.  If.IND
1b700 45 58 45 44 20 42 59 20 69 73 20 74 6f 20 62 65  EXED BY is to be
1b710 20 75 73 65 64 20 61 74 20 61 6c 6c 2c 20 69 74   used at all, it
1b720 20 73 68 6f 75 6c 64 20 62 65 20 69 6e 73 65 72   should be inser
1b730 74 65 64 20 61 74 20 74 68 65 20 76 65 72 79 0a  ted at the very.
1b740 65 6e 64 20 6f 66 20 74 68 65 20 64 65 76 65 6c  end of the devel
1b750 6f 70 6d 65 6e 74 20 70 72 6f 63 65 73 73 20 77  opment process w
1b760 68 65 6e 20 22 6c 6f 63 6b 69 6e 67 20 64 6f 77  hen "locking dow
1b770 6e 22 20 61 20 64 65 73 69 67 6e 2e 3c 2f 70 3e  n" a design.</p>
1b780 0a 0a 3c 68 33 3e 53 65 65 20 41 6c 73 6f 3a 3c  ..<h3>See Also:<
1b790 2f 68 33 3e 0a 0a 3c 70 3e 54 68 65 20 5b 73 71  /h3>..<p>The [sq
1b7a0 6c 69 74 65 33 5f 73 74 6d 74 5f 73 74 61 74 75  lite3_stmt_statu
1b7b0 73 28 29 5d 20 43 2f 43 2b 2b 20 69 6e 74 65 72  s()] C/C++ inter
1b7c0 66 61 63 65 20 74 6f 67 65 74 68 65 72 20 77 69  face together wi
1b7d0 74 68 20 74 68 65 0a 5b 53 51 4c 49 54 45 5f 53  th the.[SQLITE_S
1b7e0 54 4d 54 53 54 41 54 55 53 5f 46 55 4c 4c 53 43  TMTSTATUS_FULLSC
1b7f0 41 4e 5f 53 54 45 50 5d 20 61 6e 64 20 5b 53 51  AN_STEP] and [SQ
1b800 4c 49 54 45 5f 53 54 4d 54 53 54 41 54 55 53 5f  LITE_STMTSTATUS_
1b810 53 4f 52 54 5d 20 76 65 72 62 73 0a 63 61 6e 20  SORT] verbs.can 
1b820 62 65 20 75 73 65 64 20 74 6f 20 64 65 74 65 63  be used to detec
1b830 74 20 61 74 20 72 75 6e 2d 74 69 6d 65 20 77 68  t at run-time wh
1b840 65 6e 20 61 6e 20 53 51 4c 20 73 74 61 74 65 6d  en an SQL statem
1b850 65 6e 74 20 69 73 20 6e 6f 74 0a 6d 61 6b 69 6e  ent is not.makin
1b860 67 20 65 66 66 65 63 74 69 76 65 20 75 73 65 20  g effective use 
1b870 6f 66 20 69 6e 64 69 63 65 73 2e 20 20 4d 61 6e  of indices.  Man
1b880 79 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 6d  y applications m
1b890 61 79 20 70 72 65 66 65 72 20 74 6f 0a 75 73 65  ay prefer to.use
1b8a0 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 73 74   the [sqlite3_st
1b8b0 6d 74 5f 73 74 61 74 75 73 28 29 5d 20 69 6e 74  mt_status()] int
1b8c0 65 72 66 61 63 65 20 74 6f 20 64 65 74 65 63 74  erface to detect
1b8d0 20 69 6e 64 65 78 20 6d 69 73 75 73 65 0a 72 61   index misuse.ra
1b8e0 74 68 65 72 20 74 68 61 6e 20 74 68 65 20 49 4e  ther than the IN
1b8f0 44 45 58 45 44 20 42 59 20 70 68 72 61 73 65 20  DEXED BY phrase 
1b900 64 65 73 63 72 69 62 65 64 20 68 65 72 65 2e 3c  described here.<
1b910 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23  /p>..<tcl>.#####
1b920 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1b930 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1b940 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1b950 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1b960 23 23 23 23 23 23 23 23 0a 23 20 41 20 6c 69 73  ########.# A lis
1b970 74 20 6f 66 20 6b 65 79 77 6f 72 64 73 2e 20 20  t of keywords.  
1b980 41 20 61 73 74 65 72 69 73 6b 20 6f 63 63 75 72  A asterisk occur
1b990 73 20 61 66 74 65 72 20 74 68 65 20 6b 65 79 77  s after the keyw
1b9a0 6f 72 64 20 69 66 20 69 74 20 69 73 20 6f 6e 0a  ord if it is on.
1b9b0 23 20 74 68 65 20 66 61 6c 6c 62 61 63 6b 20 6c  # the fallback l
1b9c0 69 73 74 2e 0a 23 0a 73 65 74 20 6b 65 79 77 6f  ist..#.set keywo
1b9d0 72 64 5f 6c 69 73 74 20 5b 6c 73 6f 72 74 20 7b  rd_list [lsort {
1b9e0 0a 20 20 20 41 42 4f 52 54 0a 20 20 20 41 43 54  .   ABORT.   ACT
1b9f0 49 4f 4e 0a 20 20 20 41 44 44 0a 20 20 20 41 46  ION.   ADD.   AF
1ba00 54 45 52 0a 20 20 20 41 4c 4c 0a 20 20 20 41 4c  TER.   ALL.   AL
1ba10 54 45 52 0a 20 20 20 41 4e 41 4c 59 5a 45 0a 20  TER.   ANALYZE. 
1ba20 20 20 41 4e 44 0a 20 20 20 41 53 0a 20 20 20 41    AND.   AS.   A
1ba30 53 43 0a 20 20 20 41 54 54 41 43 48 0a 20 20 20  SC.   ATTACH.   
1ba40 41 55 54 4f 49 4e 43 52 45 4d 45 4e 54 0a 20 20  AUTOINCREMENT.  
1ba50 20 42 45 46 4f 52 45 0a 20 20 20 42 45 47 49 4e   BEFORE.   BEGIN
1ba60 0a 20 20 20 42 45 54 57 45 45 4e 0a 20 20 20 42  .   BETWEEN.   B
1ba70 59 0a 20 20 20 43 41 53 43 41 44 45 0a 20 20 20  Y.   CASCADE.   
1ba80 43 41 53 45 0a 20 20 20 43 41 53 54 0a 20 20 20  CASE.   CAST.   
1ba90 43 48 45 43 4b 0a 20 20 20 43 4f 4c 4c 41 54 45  CHECK.   COLLATE
1baa0 0a 20 20 20 43 4f 4c 55 4d 4e 0a 20 20 20 43 4f  .   COLUMN.   CO
1bab0 4d 4d 49 54 0a 20 20 20 43 4f 4e 46 4c 49 43 54  MMIT.   CONFLICT
1bac0 0a 20 20 20 43 4f 4e 53 54 52 41 49 4e 54 0a 20  .   CONSTRAINT. 
1bad0 20 20 43 52 45 41 54 45 0a 20 20 20 43 52 4f 53    CREATE.   CROS
1bae0 53 0a 20 20 20 43 55 52 52 45 4e 54 5f 44 41 54  S.   CURRENT_DAT
1baf0 45 0a 20 20 20 43 55 52 52 45 4e 54 5f 54 49 4d  E.   CURRENT_TIM
1bb00 45 0a 20 20 20 43 55 52 52 45 4e 54 5f 54 49 4d  E.   CURRENT_TIM
1bb10 45 53 54 41 4d 50 0a 20 20 20 44 41 54 41 42 41  ESTAMP.   DATABA
1bb20 53 45 0a 20 20 20 44 45 46 41 55 4c 54 0a 20 20  SE.   DEFAULT.  
1bb30 20 44 45 46 45 52 52 45 44 0a 20 20 20 44 45 46   DEFERRED.   DEF
1bb40 45 52 52 41 42 4c 45 0a 20 20 20 44 45 4c 45 54  ERRABLE.   DELET
1bb50 45 0a 20 20 20 44 45 53 43 0a 20 20 20 44 45 54  E.   DESC.   DET
1bb60 41 43 48 0a 20 20 20 44 49 53 54 49 4e 43 54 0a  ACH.   DISTINCT.
1bb70 20 20 20 44 52 4f 50 0a 20 20 20 45 4e 44 0a 20     DROP.   END. 
1bb80 20 20 45 41 43 48 0a 20 20 20 45 4c 53 45 0a 20    EACH.   ELSE. 
1bb90 20 20 45 53 43 41 50 45 0a 20 20 20 45 58 43 45    ESCAPE.   EXCE
1bba0 50 54 0a 20 20 20 45 58 43 4c 55 53 49 56 45 0a  PT.   EXCLUSIVE.
1bbb0 20 20 20 45 58 49 53 54 53 0a 20 20 20 45 58 50     EXISTS.   EXP
1bbc0 4c 41 49 4e 0a 20 20 20 46 41 49 4c 0a 20 20 20  LAIN.   FAIL.   
1bbd0 46 4f 52 0a 20 20 20 46 4f 52 45 49 47 4e 0a 20  FOR.   FOREIGN. 
1bbe0 20 20 46 52 4f 4d 0a 20 20 20 46 55 4c 4c 0a 20    FROM.   FULL. 
1bbf0 20 20 47 4c 4f 42 0a 20 20 20 47 52 4f 55 50 0a    GLOB.   GROUP.
1bc00 20 20 20 48 41 56 49 4e 47 0a 20 20 20 49 46 0a     HAVING.   IF.
1bc10 20 20 20 49 47 4e 4f 52 45 0a 20 20 20 49 4d 4d     IGNORE.   IMM
1bc20 45 44 49 41 54 45 0a 20 20 20 49 4e 0a 20 20 20  EDIATE.   IN.   
1bc30 49 4e 44 45 58 0a 20 20 20 49 4e 44 45 58 45 44  INDEX.   INDEXED
1bc40 0a 20 20 20 49 4e 49 54 49 41 4c 4c 59 0a 20 20  .   INITIALLY.  
1bc50 20 49 4e 4e 45 52 0a 20 20 20 49 4e 53 45 52 54   INNER.   INSERT
1bc60 0a 20 20 20 49 4e 53 54 45 41 44 0a 20 20 20 49  .   INSTEAD.   I
1bc70 4e 54 45 52 53 45 43 54 0a 20 20 20 49 4e 54 4f  NTERSECT.   INTO
1bc80 0a 20 20 20 49 53 0a 20 20 20 49 53 4e 55 4c 4c  .   IS.   ISNULL
1bc90 0a 20 20 20 4a 4f 49 4e 0a 20 20 20 4b 45 59 0a  .   JOIN.   KEY.
1bca0 20 20 20 4c 45 46 54 0a 20 20 20 4c 49 4b 45 0a     LEFT.   LIKE.
1bcb0 20 20 20 4c 49 4d 49 54 0a 20 20 20 4d 41 54 43     LIMIT.   MATC
1bcc0 48 0a 20 20 20 4e 41 54 55 52 41 4c 0a 20 20 20  H.   NATURAL.   
1bcd0 4e 4f 0a 20 20 20 4e 4f 54 0a 20 20 20 4e 4f 54  NO.   NOT.   NOT
1bce0 4e 55 4c 4c 0a 20 20 20 4e 55 4c 4c 0a 20 20 20  NULL.   NULL.   
1bcf0 4f 46 0a 20 20 20 4f 46 46 53 45 54 0a 20 20 20  OF.   OFFSET.   
1bd00 4f 4e 0a 20 20 20 4f 52 0a 20 20 20 4f 52 44 45  ON.   OR.   ORDE
1bd10 52 0a 20 20 20 4f 55 54 45 52 0a 20 20 20 50 4c  R.   OUTER.   PL
1bd20 41 4e 0a 20 20 20 50 52 41 47 4d 41 0a 20 20 20  AN.   PRAGMA.   
1bd30 50 52 49 4d 41 52 59 0a 20 20 20 51 55 45 52 59  PRIMARY.   QUERY
1bd40 0a 20 20 20 52 41 49 53 45 0a 20 20 20 52 45 46  .   RAISE.   REF
1bd50 45 52 45 4e 43 45 53 0a 20 20 20 52 45 47 45 58  ERENCES.   REGEX
1bd60 50 0a 20 20 20 52 45 49 4e 44 45 58 0a 20 20 20  P.   REINDEX.   
1bd70 52 45 4c 45 41 53 45 0a 20 20 20 52 45 4e 41 4d  RELEASE.   RENAM
1bd80 45 0a 20 20 20 52 45 50 4c 41 43 45 0a 20 20 20  E.   REPLACE.   
1bd90 52 45 53 54 52 49 43 54 0a 20 20 20 52 49 47 48  RESTRICT.   RIGH
1bda0 54 0a 20 20 20 52 4f 4c 4c 42 41 43 4b 0a 20 20  T.   ROLLBACK.  
1bdb0 20 52 4f 57 0a 20 20 20 53 41 56 45 50 4f 49 4e   ROW.   SAVEPOIN
1bdc0 54 0a 20 20 20 53 45 4c 45 43 54 0a 20 20 20 53  T.   SELECT.   S
1bdd0 45 54 0a 20 20 20 54 41 42 4c 45 0a 20 20 20 54  ET.   TABLE.   T
1bde0 45 4d 50 0a 20 20 20 54 45 4d 50 4f 52 41 52 59  EMP.   TEMPORARY
1bdf0 0a 20 20 20 54 48 45 4e 0a 20 20 20 54 4f 0a 20  .   THEN.   TO. 
1be00 20 20 54 52 41 4e 53 41 43 54 49 4f 4e 0a 20 20    TRANSACTION.  
1be10 20 54 52 49 47 47 45 52 0a 20 20 20 55 4e 49 4f   TRIGGER.   UNIO
1be20 4e 0a 20 20 20 55 4e 49 51 55 45 0a 20 20 20 55  N.   UNIQUE.   U
1be30 50 44 41 54 45 0a 20 20 20 55 53 49 4e 47 0a 20  PDATE.   USING. 
1be40 20 20 56 41 43 55 55 4d 0a 20 20 20 56 41 4c 55    VACUUM.   VALU
1be50 45 53 0a 20 20 20 56 49 45 57 0a 20 20 20 56 49  ES.   VIEW.   VI
1be60 52 54 55 41 4c 0a 20 20 20 57 48 45 4e 0a 20 20  RTUAL.   WHEN.  
1be70 20 57 48 45 52 45 0a 7d 5d 0a 0a 68 64 5f 70 75   WHERE.}]..hd_pu
1be80 74 73 20 7b 3c 44 49 56 20 63 6c 61 73 73 3d 22  ts {<DIV class="
1be90 70 64 66 5f 73 65 63 74 69 6f 6e 22 3e 7d 0a 53  pdf_section">}.S
1bea0 65 63 74 69 6f 6e 20 7b 53 51 4c 69 74 65 20 4b  ection {SQLite K
1beb0 65 79 77 6f 72 64 73 7d 20 6b 65 79 77 6f 72 64  eywords} keyword
1bec0 73 20 7b 7b 2a 53 51 4c 20 6b 65 79 77 6f 72 64  s {{*SQL keyword
1bed0 7d 20 7b 53 51 4c 20 6b 65 79 77 6f 72 64 73 7d  } {SQL keywords}
1bee0 7d 0a 68 64 5f 70 75 74 73 20 7b 3c 2f 44 49 56  }.hd_puts {</DIV
1bef0 3e 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68  >}.</tcl>..<p>Th
1bf00 65 20 53 51 4c 20 73 74 61 6e 64 61 72 64 20 73  e SQL standard s
1bf10 70 65 63 69 66 69 65 73 20 61 20 68 75 67 65 20  pecifies a huge 
1bf20 6e 75 6d 62 65 72 20 6f 66 20 6b 65 79 77 6f 72  number of keywor
1bf30 64 73 20 77 68 69 63 68 20 6d 61 79 20 6e 6f 74  ds which may not
1bf40 0a 62 65 20 75 73 65 64 20 61 73 20 74 68 65 20  .be used as the 
1bf50 6e 61 6d 65 73 20 6f 66 20 74 61 62 6c 65 73 2c  names of tables,
1bf60 20 69 6e 64 69 63 65 73 2c 20 63 6f 6c 75 6d 6e   indices, column
1bf70 73 2c 20 64 61 74 61 62 61 73 65 73 2c 20 75 73  s, databases, us
1bf80 65 72 2d 64 65 66 69 6e 65 64 0a 66 75 6e 63 74  er-defined.funct
1bf90 69 6f 6e 73 2c 20 63 6f 6c 6c 61 74 69 6f 6e 73  ions, collations
1bfa0 2c 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20  , virtual table 
1bfb0 6d 6f 64 75 6c 65 73 2c 20 6f 72 20 61 6e 79 20  modules, or any 
1bfc0 6f 74 68 65 72 20 6e 61 6d 65 64 20 6f 62 6a 65  other named obje
1bfd0 63 74 2e 0a 54 68 65 20 6c 69 73 74 20 6f 66 20  ct..The list of 
1bfe0 6b 65 79 77 6f 72 64 73 20 69 73 20 73 6f 20 6c  keywords is so l
1bff0 6f 6e 67 20 74 68 61 74 20 66 65 77 20 70 65 6f  ong that few peo
1c000 70 6c 65 20 63 61 6e 20 72 65 6d 65 6d 62 65 72  ple can remember
1c010 20 74 68 65 6d 20 61 6c 6c 2e 0a 46 6f 72 20 6d   them all..For m
1c020 6f 73 74 20 53 51 4c 20 63 6f 64 65 2c 20 79 6f  ost SQL code, yo
1c030 75 72 20 73 61 66 65 73 74 20 62 65 74 20 69 73  ur safest bet is
1c040 20 74 6f 20 6e 65 76 65 72 20 75 73 65 20 61 6e   to never use an
1c050 79 20 45 6e 67 6c 69 73 68 20 6c 61 6e 67 75 61  y English langua
1c060 67 65 0a 77 6f 72 64 20 61 73 20 74 68 65 20 6e  ge.word as the n
1c070 61 6d 65 20 6f 66 20 61 20 75 73 65 72 2d 64 65  ame of a user-de
1c080 66 69 6e 65 64 20 6f 62 6a 65 63 74 2e 3c 2f 70  fined object.</p
1c090 3e 0a 0a 3c 70 3e 49 66 20 79 6f 75 20 77 61 6e  >..<p>If you wan
1c0a0 74 20 74 6f 20 75 73 65 20 61 20 6b 65 79 77 6f  t to use a keywo
1c0b0 72 64 20 61 73 20 61 20 6e 61 6d 65 2c 20 79 6f  rd as a name, yo
1c0c0 75 20 6e 65 65 64 20 74 6f 20 71 75 6f 74 65 20  u need to quote 
1c0d0 69 74 2e 20 20 54 68 65 72 65 0a 61 72 65 20 74  it.  There.are t
1c0e0 68 72 65 65 20 77 61 79 73 20 6f 66 20 71 75 6f  hree ways of quo
1c0f0 74 69 6e 67 20 6b 65 79 77 6f 72 64 73 20 69 6e  ting keywords in
1c100 20 53 51 4c 69 74 65 3a 3c 2f 70 3e 0a 0a 3c 70   SQLite:</p>..<p
1c110 3e 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 3c  >.<blockquote>.<
1c120 74 61 62 6c 65 3e 0a 3c 74 72 3e 09 3c 74 64 20  table>.<tr>.<td 
1c130 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 3c 62 3e  valign="top"><b>
1c140 27 6b 65 79 77 6f 72 64 27 3c 2f 62 3e 3c 2f 74  'keyword'</b></t
1c150 64 3e 3c 74 64 20 77 69 64 74 68 3d 22 32 30 22  d><td width="20"
1c160 3e 3c 2f 74 64 3e 0a 09 3c 74 64 3e 5e 41 20 6b  ></td>..<td>^A k
1c170 65 79 77 6f 72 64 20 69 6e 20 73 69 6e 67 6c 65  eyword in single
1c180 20 71 75 6f 74 65 73 20 69 73 20 61 20 73 74 72   quotes is a str
1c190 69 6e 67 20 6c 69 74 65 72 61 6c 2e 3c 2f 74 64  ing literal.</td
1c1a0 3e 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 09 3c 74 64  ></tr>..<tr>.<td
1c1b0 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 3c 62   valign="top"><b
1c1c0 3e 22 6b 65 79 77 6f 72 64 22 3c 2f 62 3e 3c 2f  >"keyword"</b></
1c1d0 74 64 3e 3c 74 64 3e 3c 2f 74 64 3e 0a 09 3c 74  td><td></td>..<t
1c1e0 64 3e 5e 41 20 6b 65 79 77 6f 72 64 20 69 6e 20  d>^A keyword in 
1c1f0 64 6f 75 62 6c 65 2d 71 75 6f 74 65 73 20 69 73  double-quotes is
1c200 20 61 6e 20 69 64 65 6e 74 69 66 69 65 72 2e 3c   an identifier.<
1c210 2f 74 64 3e 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 09  /td></tr>..<tr>.
1c220 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  <td valign="top"
1c230 3e 3c 62 3e 26 23 39 31 3b 6b 65 79 77 6f 72 64  ><b>&#91;keyword
1c240 26 23 39 33 3b 3c 2f 62 3e 3c 2f 74 64 3e 3c 74  &#93;</b></td><t
1c250 64 3e 3c 2f 74 64 3e 0a 09 3c 74 64 3e 5e 41 20  d></td>..<td>^A 
1c260 6b 65 79 77 6f 72 64 20 65 6e 63 6c 6f 73 65 64  keyword enclosed
1c270 20 69 6e 20 73 71 75 61 72 65 20 62 72 61 63 6b   in square brack
1c280 65 74 73 20 69 73 20 0a 20 20 20 20 20 20 20 20  ets is .        
1c290 61 6e 20 69 64 65 6e 74 69 66 69 65 72 2e 20 20  an identifier.  
1c2a0 54 68 69 73 20 69 73 20 6e 6f 74 20 73 74 61 6e  This is not stan
1c2b0 64 61 72 64 20 53 51 4c 2e 20 20 54 68 69 73 20  dard SQL.  This 
1c2c0 71 75 6f 74 69 6e 67 20 6d 65 63 68 61 6e 69 73  quoting mechanis
1c2d0 6d 0a 20 20 20 20 20 20 20 20 69 73 20 75 73 65  m.        is use
1c2e0 64 20 62 79 20 4d 53 20 41 63 63 65 73 73 20 61  d by MS Access a
1c2f0 6e 64 20 53 51 4c 20 53 65 72 76 65 72 20 61 6e  nd SQL Server an
1c300 64 20 69 73 20 69 6e 63 6c 75 64 65 64 20 69 6e  d is included in
1c310 20 53 51 4c 69 74 65 20 66 6f 72 0a 20 20 20 20   SQLite for.    
1c320 20 20 20 20 63 6f 6d 70 61 74 69 62 69 6c 69 74      compatibilit
1c330 79 2e 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 0a 3c 74  y.</td></tr>..<t
1c340 72 3e 09 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  r>.<td valign="t
1c350 6f 70 22 3e 3c 62 3e 26 23 39 36 3b 6b 65 79 77  op"><b>&#96;keyw
1c360 6f 72 64 26 23 39 36 3b 3c 2f 62 3e 3c 2f 74 64  ord&#96;</b></td
1c370 3e 3c 74 64 3e 3c 2f 74 64 3e 0a 09 3c 74 64 3e  ><td></td>..<td>
1c380 5e 41 20 6b 65 79 77 6f 72 64 20 65 6e 63 6c 6f  ^A keyword enclo
1c390 73 65 64 20 69 6e 20 67 72 61 76 65 20 61 63 63  sed in grave acc
1c3a0 65 6e 74 73 20 28 41 53 43 49 49 20 63 6f 64 65  ents (ASCII code
1c3b0 20 39 36 29 20 69 73 20 0a 20 20 20 20 20 20 20   96) is .       
1c3c0 20 61 6e 20 69 64 65 6e 74 69 66 69 65 72 2e 20   an identifier. 
1c3d0 20 54 68 69 73 20 69 73 20 6e 6f 74 20 73 74 61   This is not sta
1c3e0 6e 64 61 72 64 20 53 51 4c 2e 20 20 54 68 69 73  ndard SQL.  This
1c3f0 20 71 75 6f 74 69 6e 67 20 6d 65 63 68 61 6e 69   quoting mechani
1c400 73 6d 0a 20 20 20 20 20 20 20 20 69 73 20 75 73  sm.        is us
1c410 65 64 20 62 79 20 4d 79 53 51 4c 20 61 6e 64 20  ed by MySQL and 
1c420 69 73 20 69 6e 63 6c 75 64 65 64 20 69 6e 20 53  is included in S
1c430 51 4c 69 74 65 20 66 6f 72 0a 20 20 20 20 20 20  QLite for.      
1c440 20 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 2e    compatibility.
1c450 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 3c 2f 74 61 62  </td></tr>.</tab
1c460 6c 65 3e 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65  le>.</blockquote
1c470 3e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 46 6f 72 20 72  >.</p>..<p>For r
1c480 65 73 69 6c 69 65 6e 63 65 20 77 68 65 6e 20 63  esilience when c
1c490 6f 6e 66 72 6f 6e 74 65 64 20 77 69 74 68 20 68  onfronted with h
1c4a0 69 73 74 6f 72 69 63 61 6c 20 53 51 4c 20 73 74  istorical SQL st
1c4b0 61 74 65 6d 65 6e 74 73 2c 20 53 51 4c 69 74 65  atements, SQLite
1c4c0 0a 77 69 6c 6c 20 73 6f 6d 65 74 69 6d 65 73 20  .will sometimes 
1c4d0 62 65 6e 64 20 74 68 65 20 71 75 6f 74 69 6e 67  bend the quoting
1c4e0 20 72 75 6c 65 73 20 61 62 6f 76 65 3a 3c 2f 70   rules above:</p
1c4f0 3e 0a 0a 3c 75 6c 3e 0a 3c 6c 69 3e 3c 70 3e 5e  >..<ul>.<li><p>^
1c500 49 66 20 61 20 6b 65 79 77 6f 72 64 20 69 6e 20  If a keyword in 
1c510 73 69 6e 67 6c 65 0a 71 75 6f 74 65 73 20 28 65  single.quotes (e
1c520 78 3a 20 3c 62 3e 27 6b 65 79 27 3c 2f 62 3e 20  x: <b>'key'</b> 
1c530 6f 72 20 3c 62 3e 27 67 6c 6f 62 27 3c 2f 62 3e  or <b>'glob'</b>
1c540 29 20 69 73 20 75 73 65 64 20 69 6e 20 61 20 63  ) is used in a c
1c550 6f 6e 74 65 78 74 20 77 68 65 72 65 0a 61 6e 20  ontext where.an 
1c560 69 64 65 6e 74 69 66 69 65 72 20 69 73 20 61 6c  identifier is al
1c570 6c 6f 77 65 64 20 62 75 74 20 77 68 65 72 65 20  lowed but where 
1c580 61 20 73 74 72 69 6e 67 20 6c 69 74 65 72 61 6c  a string literal
1c590 20 69 73 20 6e 6f 74 20 61 6c 6c 6f 77 65 64 2c   is not allowed,
1c5a0 20 74 68 65 6e 0a 74 68 65 20 74 6f 6b 65 6e 20   then.the token 
1c5b0 69 73 20 75 6e 64 65 72 73 74 6f 6f 64 20 74 6f  is understood to
1c5c0 20 62 65 20 61 6e 20 69 64 65 6e 74 69 66 69 65   be an identifie
1c5d0 72 20 69 6e 73 74 65 61 64 20 6f 66 20 61 20 73  r instead of a s
1c5e0 74 72 69 6e 67 20 6c 69 74 65 72 61 6c 2e 0a 3c  tring literal..<
1c5f0 2f 70 3e 3c 2f 6c 69 3e 0a 0a 3c 6c 69 3e 3c 70  /p></li>..<li><p
1c600 3e 5e 49 66 20 61 20 6b 65 79 77 6f 72 64 20 69  >^If a keyword i
1c610 6e 20 64 6f 75 62 6c 65 0a 71 75 6f 74 65 73 20  n double.quotes 
1c620 28 65 78 3a 20 3c 62 3e 22 6b 65 79 22 3c 2f 62  (ex: <b>"key"</b
1c630 3e 20 6f 72 20 3c 62 3e 22 67 6c 6f 62 22 3c 2f  > or <b>"glob"</
1c640 62 3e 29 20 69 73 20 75 73 65 64 20 69 6e 20 61  b>) is used in a
1c650 20 63 6f 6e 74 65 78 74 20 77 68 65 72 65 0a 69   context where.i
1c660 74 20 63 61 6e 6e 6f 74 20 62 65 20 72 65 73 6f  t cannot be reso
1c670 6c 76 65 64 20 74 6f 20 61 6e 20 69 64 65 6e 74  lved to an ident
1c680 69 66 69 65 72 20 62 75 74 20 77 68 65 72 65 20  ifier but where 
1c690 61 20 73 74 72 69 6e 67 20 6c 69 74 65 72 61 6c  a string literal
1c6a0 0a 69 73 20 61 6c 6c 6f 77 65 64 2c 20 74 68 65  .is allowed, the
1c6b0 6e 20 74 68 65 20 74 6f 6b 65 6e 20 69 73 20 75  n the token is u
1c6c0 6e 64 65 72 73 74 6f 6f 64 20 74 6f 20 62 65 20  nderstood to be 
1c6d0 61 20 73 74 72 69 6e 67 20 6c 69 74 65 72 61 6c  a string literal
1c6e0 20 69 6e 73 74 65 61 64 0a 6f 66 20 61 6e 20 69   instead.of an i
1c6f0 64 65 6e 74 69 66 65 72 2e 3c 2f 70 3e 3c 2f 6c  dentifer.</p></l
1c700 69 3e 0a 3c 2f 75 6c 3e 0a 0a 3c 70 3e 50 72 6f  i>.</ul>..<p>Pro
1c710 67 72 61 6d 6d 65 72 73 20 61 72 65 20 63 61 75  grammers are cau
1c720 74 69 6f 6e 65 64 20 6e 6f 74 20 74 6f 20 75 73  tioned not to us
1c730 65 20 74 68 65 20 74 77 6f 20 65 78 63 65 70 74  e the two except
1c740 69 6f 6e 73 20 64 65 73 63 72 69 62 65 64 20 69  ions described i
1c750 6e 0a 74 68 65 20 70 72 65 76 69 6f 75 73 20 62  n.the previous b
1c760 75 6c 6c 65 74 73 2e 20 20 57 65 20 65 6d 70 68  ullets.  We emph
1c770 61 73 69 7a 65 20 74 68 61 74 20 74 68 65 79 20  asize that they 
1c780 65 78 69 73 74 20 6f 6e 6c 79 20 73 6f 20 74 68  exist only so th
1c790 61 74 20 6f 6c 64 0a 61 6e 64 20 69 6c 6c 2d 66  at old.and ill-f
1c7a0 6f 72 6d 65 64 20 53 51 4c 20 73 74 61 74 65 6d  ormed SQL statem
1c7b0 65 6e 74 73 20 77 69 6c 6c 20 72 75 6e 20 63 6f  ents will run co
1c7c0 72 72 65 63 74 6c 79 2e 20 20 46 75 74 75 72 65  rrectly.  Future
1c7d0 20 76 65 72 73 69 6f 6e 73 20 6f 66 0a 53 51 4c   versions of.SQL
1c7e0 69 74 65 20 6d 69 67 68 74 20 63 68 61 6e 67 65  ite might change
1c7f0 20 74 6f 20 72 61 69 73 65 20 65 72 72 6f 72 73   to raise errors
1c800 20 69 6e 73 74 65 61 64 20 6f 66 20 61 63 63 65   instead of acce
1c810 70 74 69 6e 67 20 74 68 65 20 6d 61 6c 66 6f 72  pting the malfor
1c820 6d 65 64 0a 73 74 61 74 65 6d 65 6e 74 73 20 63  med.statements c
1c830 6f 76 65 72 65 64 20 62 79 20 74 68 65 20 65 78  overed by the ex
1c840 63 65 70 74 69 6f 6e 73 20 61 62 6f 76 65 2e 3c  ceptions above.<
1c850 2f 70 3e 0a 0a 3c 70 3e 0a 53 51 4c 69 74 65 20  /p>..<p>.SQLite 
1c860 61 64 64 73 20 6e 65 77 20 6b 65 79 77 6f 72 64  adds new keyword
1c870 73 20 66 72 6f 6d 20 74 69 6d 65 20 74 6f 20 74  s from time to t
1c880 69 6d 65 20 77 68 65 6e 20 69 74 20 74 61 6b 65  ime when it take
1c890 73 20 6f 6e 20 6e 65 77 20 66 65 61 74 75 72 65  s on new feature
1c8a0 73 2e 0a 53 6f 20 74 6f 20 70 72 65 76 65 6e 74  s..So to prevent
1c8b0 20 79 6f 75 72 20 63 6f 64 65 20 66 72 6f 6d 20   your code from 
1c8c0 62 65 69 6e 67 20 62 72 6f 6b 65 6e 20 62 79 20  being broken by 
1c8d0 66 75 74 75 72 65 20 65 6e 68 61 6e 63 65 6d 65  future enhanceme
1c8e0 6e 74 73 2c 20 79 6f 75 20 73 68 6f 75 6c 64 0a  nts, you should.
1c8f0 6e 6f 72 6d 61 6c 6c 79 20 71 75 6f 74 65 20 61  normally quote a
1c900 6e 79 20 69 64 65 6e 74 69 66 69 65 72 20 74 68  ny identifier th
1c910 61 74 20 69 73 20 61 6e 20 45 6e 67 6c 69 73 68  at is an English
1c920 20 6c 61 6e 67 75 61 67 65 20 77 6f 72 64 2c 20   language word, 
1c930 65 76 65 6e 20 69 66 0a 79 6f 75 20 64 6f 20 6e  even if.you do n
1c940 6f 74 20 68 61 76 65 20 74 6f 2e 0a 3c 2f 70 3e  ot have to..</p>
1c950 0a 0a 3c 70 3e 0a 54 68 65 20 6c 69 73 74 20 62  ..<p>.The list b
1c960 65 6c 6f 77 20 73 68 6f 77 73 20 61 6c 6c 20 70  elow shows all p
1c970 6f 73 73 69 62 6c 65 20 6b 65 79 77 6f 72 64 73  ossible keywords
1c980 20 75 73 65 64 20 62 79 20 61 6e 79 20 62 75 69   used by any bui
1c990 6c 64 20 6f 66 0a 53 51 4c 69 74 65 20 72 65 67  ld of.SQLite reg
1c9a0 61 72 64 6c 65 73 73 20 6f 66 20 5b 63 6f 6d 70  ardless of [comp
1c9b0 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 73  ile-time options
1c9c0 5d 2e 20 20 0a 4d 6f 73 74 20 72 65 61 73 6f 6e  ].  .Most reason
1c9d0 61 62 6c 65 20 63 6f 6e 66 69 67 75 72 61 74 69  able configurati
1c9e0 6f 6e 73 20 75 73 65 20 6d 6f 72 65 20 6f 72 20  ons use more or 
1c9f0 61 6c 6c 20 6f 66 20 74 68 65 73 65 20 6b 65 79  all of these key
1ca00 77 6f 72 64 73 2c 0a 62 75 74 20 73 6f 6d 65 20  words,.but some 
1ca10 6b 65 79 77 6f 72 64 73 20 6d 61 79 20 62 65 20  keywords may be 
1ca20 6f 6d 69 74 74 65 64 20 77 68 65 6e 20 53 51 4c  omitted when SQL
1ca30 20 6c 61 6e 67 75 61 67 65 20 66 65 61 74 75 72   language featur
1ca40 65 73 20 61 72 65 0a 64 69 73 61 62 6c 65 64 2e  es are.disabled.
1ca50 0a 5e 28 52 65 67 61 72 64 6c 65 73 73 20 6f 66  .^(Regardless of
1ca60 20 74 68 65 20 63 6f 6d 70 69 6c 65 2d 74 69 6d   the compile-tim
1ca70 65 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2c  e configuration,
1ca80 20 61 6e 79 20 69 64 65 6e 74 69 66 69 65 72 20   any identifier 
1ca90 74 68 61 74 20 69 73 20 6e 6f 74 20 6f 6e 0a 74  that is not on.t
1caa0 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 3c 74 63  he following <tc
1cab0 6c 3e 68 64 5f 70 75 74 73 20 5b 6c 6c 65 6e 67  l>hd_puts [lleng
1cac0 74 68 20 24 6b 65 79 77 6f 72 64 5f 6c 69 73 74  th $keyword_list
1cad0 5d 3c 2f 74 63 6c 3e 20 65 6c 65 6d 65 6e 74 0a  ]</tcl> element.
1cae0 6c 69 73 74 20 69 73 20 6e 6f 74 20 61 20 6b 65  list is not a ke
1caf0 79 77 6f 72 64 20 74 6f 20 74 68 65 20 53 51 4c  yword to the SQL
1cb00 20 70 61 72 73 65 72 20 69 6e 20 53 51 4c 69 74   parser in SQLit
1cb10 65 3a 0a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71  e:.</p>..<blockq
1cb20 75 6f 74 65 3e 0a 3c 74 61 62 6c 65 20 77 69 64  uote>.<table wid
1cb30 74 68 3d 22 31 30 30 25 22 3e 3c 74 72 3e 0a 3c  th="100%"><tr>.<
1cb40 74 64 20 61 6c 69 67 6e 3d 22 6c 65 66 74 22 20  td align="left" 
1cb50 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 77 69 64  valign="top" wid
1cb60 74 68 3d 22 32 30 25 22 3e 0a 3c 74 63 6c 3e 0a  th="20%">.<tcl>.
1cb70 73 65 74 20 6e 20 5b 6c 6c 65 6e 67 74 68 20 24  set n [llength $
1cb80 6b 65 79 77 6f 72 64 5f 6c 69 73 74 5d 0a 73 65  keyword_list].se
1cb90 74 20 6e 43 6f 6c 20 35 0a 73 65 74 20 6e 52 6f  t nCol 5.set nRo
1cba0 77 20 5b 65 78 70 72 20 7b 28 24 6e 2b 24 6e 43  w [expr {($n+$nC
1cbb0 6f 6c 2d 31 29 2f 24 6e 43 6f 6c 7d 5d 0a 73 65  ol-1)/$nCol}].se
1cbc0 74 20 69 20 30 0a 66 6f 72 65 61 63 68 20 77 6f  t i 0.foreach wo
1cbd0 72 64 20 24 6b 65 79 77 6f 72 64 5f 6c 69 73 74  rd $keyword_list
1cbe0 20 7b 0a 20 20 69 66 20 7b 24 69 3d 3d 24 6e 52   {.  if {$i==$nR
1cbf0 6f 77 7d 20 7b 0a 20 20 20 20 68 64 5f 70 75 74  ow} {.    hd_put
1cc00 73 20 22 3c 2f 74 64 3e 3c 74 64 20 76 61 6c 69  s "</td><td vali
1cc10 67 6e 3d 5c 22 74 6f 70 5c 22 20 61 6c 69 67 6e  gn=\"top\" align
1cc20 3d 5c 22 6c 65 66 74 5c 22 20 77 69 64 74 68 3d  =\"left\" width=
1cc30 5c 22 32 30 25 5c 22 3e 22 0a 20 20 20 20 73 65  \"20%\">".    se
1cc40 74 20 69 20 31 0a 20 20 7d 20 65 6c 73 65 20 7b  t i 1.  } else {
1cc50 0a 20 20 20 20 69 6e 63 72 20 69 0a 20 20 7d 0a  .    incr i.  }.
1cc60 20 20 68 64 5f 70 75 74 73 20 22 24 77 6f 72 64    hd_puts "$word
1cc70 3c 62 72 3e 5c 6e 22 0a 7d 0a 3c 2f 74 63 6c 3e  <br>\n".}.</tcl>
1cc80 0a 3c 2f 74 64 3e 3c 2f 74 72 3e 3c 2f 74 61 62  .</td></tr></tab
1cc90 6c 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e  le></blockquote>
1cca0 29 5e 0a                                         )^.