Documentation Source Text

Hex Artifact Content
Login

Artifact e9dc24eeea6cc9ae2149bc57d2e050f88cecd0da:


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 3c 61  t.  A list of <a
0190: 20 68 72 65 66 3d 22 6c 61 6e 67 5f 6b 65 79 77   href="lang_keyw
01a0: 6f 72 64 73 2e 68 74 6d 6c 22 3e 6b 65 79 77 6f  ords.html">keywo
01b0: 72 64 73 3c 2f 61 3e 20 69 73 20 0a 61 6c 73 6f  rds</a> is .also
01c0: 20 70 72 6f 76 69 64 65 64 2e 20 20 54 68 65 20   provided.  The 
01d0: 53 51 4c 20 6c 61 6e 67 75 61 67 65 20 73 79 6e  SQL language syn
01e0: 74 61 78 20 69 73 20 64 65 73 63 72 69 62 65 64  tax is described
01f0: 20 62 79 0a 3c 61 20 68 72 65 66 3d 22 73 79 6e   by.<a href="syn
0200: 74 61 78 64 69 61 67 72 61 6d 73 2e 68 74 6d 6c  taxdiagrams.html
0210: 22 3e 73 79 6e 74 61 78 20 64 69 61 67 72 61 6d  ">syntax diagram
0220: 73 3c 2f 61 3e 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49  s</a>.</p>..<p>I
0230: 6e 20 61 6c 6c 20 6f 66 20 74 68 65 20 73 79 6e  n all of the syn
0240: 74 61 78 20 64 69 61 67 72 61 6d 73 20 74 68 61  tax diagrams tha
0250: 74 20 66 6f 6c 6c 6f 77 2c 20 6c 69 74 65 72 61  t follow, litera
0260: 6c 20 74 65 78 74 20 69 73 20 73 68 6f 77 6e 20  l text is shown 
0270: 69 6e 0a 62 6f 6c 64 20 62 6c 75 65 2e 20 20 4e  in.bold blue.  N
0280: 6f 6e 2d 74 65 72 6d 69 6e 61 6c 20 73 79 6d 62  on-terminal symb
0290: 6f 6c 73 20 61 72 65 20 73 68 6f 77 6e 20 69 6e  ols are shown in
02a0: 20 69 74 61 6c 69 63 20 72 65 64 2e 20 20 4f 70   italic red.  Op
02b0: 65 72 61 74 6f 72 73 0a 74 68 61 74 20 61 72 65  erators.that are
02c0: 20 70 61 72 74 20 6f 66 20 74 68 65 20 73 79 6e   part of the syn
02d0: 74 61 63 74 69 63 20 6d 61 72 6b 75 70 20 69 74  tactic markup it
02e0: 73 65 6c 66 20 61 72 65 20 73 68 6f 77 6e 20 69  self are shown i
02f0: 6e 20 62 6c 61 63 6b 20 72 6f 6d 61 6e 2e 3c 2f  n black roman.</
0300: 70 3e 0a 0a 3c 70 3e 54 68 69 73 20 64 6f 63 75  p>..<p>This docu
0310: 6d 65 6e 74 20 69 73 20 6a 75 73 74 20 61 6e 20  ment is just an 
0320: 6f 76 65 72 76 69 65 77 20 6f 66 20 74 68 65 20  overview of the 
0330: 53 51 4c 20 73 79 6e 74 61 78 20 69 6d 70 6c 65  SQL syntax imple
0340: 6d 65 6e 74 65 64 0a 62 79 20 53 51 4c 69 74 65  mented.by SQLite
0350: 2e 20 20 4d 61 6e 79 20 6c 6f 77 2d 6c 65 76 65  .  Many low-leve
0360: 6c 20 70 72 6f 64 75 63 74 69 6f 6e 73 20 61 72  l productions ar
0370: 65 20 6f 6d 69 74 74 65 64 2e 20 20 46 6f 72 20  e omitted.  For 
0380: 64 65 74 61 69 6c 65 64 20 69 6e 66 6f 72 6d 61  detailed informa
0390: 74 69 6f 6e 0a 6f 6e 20 74 68 65 20 6c 61 6e 67  tion.on the lang
03a0: 75 61 67 65 20 74 68 61 74 20 53 51 4c 69 74 65  uage that SQLite
03b0: 20 75 6e 64 65 72 73 74 61 6e 64 73 2c 20 72 65   understands, re
03c0: 66 65 72 20 74 6f 20 74 68 65 20 73 6f 75 72 63  fer to the sourc
03d0: 65 20 63 6f 64 65 20 61 6e 64 0a 74 68 65 20 67  e code and.the g
03e0: 72 61 6d 6d 61 72 20 66 69 6c 65 20 22 70 61 72  rammar file "par
03f0: 73 65 2e 79 22 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54  se.y".</p>..<p>T
0400: 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 73 79 6e  he following syn
0410: 74 61 78 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f  tax documentatio
0420: 6e 20 74 6f 70 69 63 73 20 61 72 65 20 61 76 61  n topics are ava
0430: 69 6c 61 62 6c 65 3a 3c 2f 70 3e 0a 0a 3c 74 61  ilable:</p>..<ta
0440: 62 6c 65 20 77 69 64 74 68 3d 22 31 30 30 25 22  ble width="100%"
0450: 20 63 65 6c 6c 70 61 64 64 69 6e 67 3d 22 35 22   cellpadding="5"
0460: 20 62 6f 72 64 65 72 3d 22 30 22 3e 0a 3c 74 72   border="0">.<tr
0470: 3e 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  ><td valign="top
0480: 22 3e 3c 75 6c 3e 0a 0a 3c 74 63 6c 3e 0a 20 20  "><ul>..<tcl>.  
0490: 73 65 74 20 69 20 30 0a 20 20 73 65 74 20 6c 61  set i 0.  set la
04a0: 6e 67 5f 73 65 63 74 69 6f 6e 5f 6c 69 73 74 20  ng_section_list 
04b0: 7b 0a 20 20 20 20 7b 7b 43 52 45 41 54 45 20 54  {.    {{CREATE T
04c0: 41 42 4c 45 7d 20 63 72 65 61 74 65 74 61 62 6c  ABLE} createtabl
04d0: 65 7d 0a 20 20 20 20 7b 7b 43 52 45 41 54 45 20  e}.    {{CREATE 
04e0: 56 49 52 54 55 41 4c 20 54 41 42 4c 45 7d 20 63  VIRTUAL TABLE} c
04f0: 72 65 61 74 65 76 74 61 62 7d 0a 20 20 20 20 7b  reatevtab}.    {
0500: 7b 43 52 45 41 54 45 20 49 4e 44 45 58 7d 20 63  {CREATE INDEX} c
0510: 72 65 61 74 65 69 6e 64 65 78 7d 0a 20 20 20 20  reateindex}.    
0520: 7b 56 41 43 55 55 4d 20 76 61 63 75 75 6d 7d 0a  {VACUUM vacuum}.
0530: 20 20 20 20 7b 7b 44 52 4f 50 20 54 41 42 4c 45      {{DROP TABLE
0540: 7d 20 64 72 6f 70 74 61 62 6c 65 7d 0a 20 20 20  } droptable}.   
0550: 20 7b 7b 44 52 4f 50 20 49 4e 44 45 58 7d 20 64   {{DROP INDEX} d
0560: 72 6f 70 69 6e 64 65 78 7d 0a 20 20 20 20 7b 49  ropindex}.    {I
0570: 4e 53 45 52 54 20 69 6e 73 65 72 74 7d 0a 20 20  NSERT insert}.  
0580: 20 20 7b 52 45 50 4c 41 43 45 20 72 65 70 6c 61    {REPLACE repla
0590: 63 65 7d 0a 20 20 20 20 7b 44 45 4c 45 54 45 20  ce}.    {DELETE 
05a0: 64 65 6c 65 74 65 7d 0a 20 20 20 20 7b 55 50 44  delete}.    {UPD
05b0: 41 54 45 20 75 70 64 61 74 65 7d 0a 20 20 20 20  ATE update}.    
05c0: 7b 53 45 4c 45 43 54 20 73 65 6c 65 63 74 7d 0a  {SELECT select}.
05d0: 20 20 20 20 7b 63 6f 6d 6d 65 6e 74 20 63 6f 6d      {comment com
05e0: 6d 65 6e 74 7d 0a 20 20 20 20 7b 45 58 50 4c 41  ment}.    {EXPLA
05f0: 49 4e 20 65 78 70 6c 61 69 6e 7d 0a 20 20 20 20  IN explain}.    
0600: 7b 65 78 70 72 65 73 73 69 6f 6e 20 65 78 70 72  {expression expr
0610: 7d 0a 20 20 20 20 7b 7b 42 45 47 49 4e 20 54 52  }.    {{BEGIN TR
0620: 41 4e 53 41 43 54 49 4f 4e 7d 20 74 72 61 6e 73  ANSACTION} trans
0630: 61 63 74 69 6f 6e 7d 0a 20 20 20 20 7b 7b 43 4f  action}.    {{CO
0640: 4d 4d 49 54 20 54 52 41 4e 53 41 43 54 49 4f 4e  MMIT TRANSACTION
0650: 7d 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 43 4f  } transaction CO
0660: 4d 4d 49 54 7d 0a 20 20 20 20 7b 7b 45 4e 44 20  MMIT}.    {{END 
0670: 54 52 41 4e 53 41 43 54 49 4f 4e 7d 20 74 72 61  TRANSACTION} tra
0680: 6e 73 61 63 74 69 6f 6e 20 43 4f 4d 4d 49 54 7d  nsaction COMMIT}
0690: 0a 20 20 20 20 7b 7b 52 4f 4c 4c 42 41 43 4b 20  .    {{ROLLBACK 
06a0: 54 52 41 4e 53 41 43 54 49 4f 4e 7d 20 74 72 61  TRANSACTION} tra
06b0: 6e 73 61 63 74 69 6f 6e 20 52 4f 4c 4c 42 41 43  nsaction ROLLBAC
06c0: 4b 7d 0a 20 20 20 20 7b 53 41 56 45 50 4f 49 4e  K}.    {SAVEPOIN
06d0: 54 20 73 61 76 65 70 6f 69 6e 74 7d 0a 20 20 20  T savepoint}.   
06e0: 20 7b 7b 52 45 4c 45 41 53 45 20 53 41 56 45 50   {{RELEASE SAVEP
06f0: 4f 49 4e 54 7d 20 73 61 76 65 70 6f 69 6e 74 20  OINT} savepoint 
0700: 53 41 56 45 50 4f 49 4e 54 7d 0a 20 20 20 20 7b  SAVEPOINT}.    {
0710: 50 52 41 47 4d 41 20 70 72 61 67 6d 61 2e 68 74  PRAGMA pragma.ht
0720: 6d 6c 7d 0a 20 20 20 20 7b 7b 4f 4e 20 43 4f 4e  ml}.    {{ON CON
0730: 46 4c 49 43 54 20 63 6c 61 75 73 65 7d 20 63 6f  FLICT clause} co
0740: 6e 66 6c 69 63 74 7d 0a 20 20 20 20 7b 7b 43 52  nflict}.    {{CR
0750: 45 41 54 45 20 56 49 45 57 7d 20 63 72 65 61 74  EATE VIEW} creat
0760: 65 76 69 65 77 7d 0a 20 20 20 20 7b 7b 44 52 4f  eview}.    {{DRO
0770: 50 20 56 49 45 57 7d 20 64 72 6f 70 76 69 65 77  P VIEW} dropview
0780: 7d 0a 20 20 20 20 7b 7b 43 52 45 41 54 45 20 54  }.    {{CREATE T
0790: 52 49 47 47 45 52 7d 20 63 72 65 61 74 65 74 72  RIGGER} createtr
07a0: 69 67 67 65 72 7d 0a 20 20 20 20 7b 7b 44 52 4f  igger}.    {{DRO
07b0: 50 20 54 52 49 47 47 45 52 7d 20 64 72 6f 70 74  P TRIGGER} dropt
07c0: 72 69 67 67 65 72 7d 0a 20 20 20 20 7b 7b 41 54  rigger}.    {{AT
07d0: 54 41 43 48 20 44 41 54 41 42 41 53 45 7d 20 61  TACH DATABASE} a
07e0: 74 74 61 63 68 7d 0a 20 20 20 20 7b 7b 44 45 54  ttach}.    {{DET
07f0: 41 43 48 20 44 41 54 41 42 41 53 45 7d 20 64 65  ACH DATABASE} de
0800: 74 61 63 68 7d 0a 20 20 20 20 7b 52 45 49 4e 44  tach}.    {REIND
0810: 45 58 20 72 65 69 6e 64 65 78 7d 0a 20 20 20 20  EX reindex}.    
0820: 7b 7b 41 4c 54 45 52 20 54 41 42 4c 45 7d 20 61  {{ALTER TABLE} a
0830: 6c 74 65 72 74 61 62 6c 65 7d 0a 20 20 20 20 7b  ltertable}.    {
0840: 7b 41 4e 41 4c 59 5a 45 7d 20 61 6e 61 6c 79 7a  {ANALYZE} analyz
0850: 65 7d 0a 20 20 20 20 7b 7b 49 4e 44 45 58 45 44  e}.    {{INDEXED
0860: 20 42 59 7d 20 69 6e 64 65 78 65 64 62 79 7d 0a   BY} indexedby}.
0870: 20 20 20 20 7b 7b 61 67 67 72 65 67 61 74 65 20      {{aggregate 
0880: 66 75 6e 63 74 69 6f 6e 73 7d 20 61 67 67 66 75  functions} aggfu
0890: 6e 63 20 61 67 67 66 75 6e 63 7d 0a 20 20 20 20  nc aggfunc}.    
08a0: 7b 7b 63 6f 72 65 20 66 75 6e 63 74 69 6f 6e 73  {{core functions
08b0: 7d 20 63 6f 72 65 66 75 6e 63 20 63 6f 72 65 66  } corefunc coref
08c0: 75 6e 63 7d 0a 20 20 20 20 7b 7b 64 61 74 65 20  unc}.    {{date 
08d0: 61 6e 64 20 74 69 6d 65 20 66 75 6e 63 74 69 6f  and time functio
08e0: 6e 73 7d 20 64 61 74 65 66 75 6e 63 20 64 61 74  ns} datefunc dat
08f0: 65 66 75 6e 63 7d 0a 20 20 20 20 7b 6b 65 79 77  efunc}.    {keyw
0900: 6f 72 64 73 20 6b 65 79 77 6f 72 64 73 20 7b 53  ords keywords {S
0910: 51 4c 20 6b 65 79 77 6f 72 64 73 7d 7d 0a 20 20  QL keywords}}.  
0920: 7d 0a 20 20 73 65 74 20 6c 61 6e 67 5f 73 65 63  }.  set lang_sec
0930: 74 69 6f 6e 5f 62 72 65 61 6b 20 5b 65 78 70 72  tion_break [expr
0940: 20 7b 28 5b 6c 6c 65 6e 67 74 68 20 24 6c 61 6e   {([llength $lan
0950: 67 5f 73 65 63 74 69 6f 6e 5f 6c 69 73 74 5d 2b  g_section_list]+
0960: 32 29 2f 33 7d 5d 0a 20 20 66 6f 72 65 61 63 68  2)/3}].  foreach
0970: 20 7b 73 65 63 74 69 6f 6e 7d 20 5b 6c 73 6f 72   {section} [lsor
0980: 74 20 2d 69 6e 64 65 78 20 30 20 2d 64 69 63 74  t -index 0 -dict
0990: 69 6f 6e 61 72 79 20 24 6c 61 6e 67 5f 73 65 63  ionary $lang_sec
09a0: 74 69 6f 6e 5f 6c 69 73 74 5d 20 7b 0a 20 20 66  tion_list] {.  f
09b0: 6f 72 65 61 63 68 20 7b 73 5f 74 69 74 6c 65 20  oreach {s_title 
09c0: 73 5f 74 61 67 20 73 5f 6b 77 7d 20 24 73 65 63  s_tag s_kw} $sec
09d0: 74 69 6f 6e 20 7b 7d 0a 20 20 69 66 20 7b 24 73  tion {}.  if {$s
09e0: 5f 6b 77 20 3d 3d 20 22 22 7d 20 7b 0a 20 20 20  _kw == ""} {.   
09f0: 20 73 65 74 20 73 5f 6b 77 20 24 73 5f 74 69 74   set s_kw $s_tit
0a00: 6c 65 0a 20 20 7d 0a 20 20 69 66 20 7b 24 73 5f  le.  }.  if {$s_
0a10: 74 61 67 3d 3d 22 70 72 61 67 6d 61 2e 68 74 6d  tag=="pragma.htm
0a20: 6c 22 7d 20 7b 0a 20 20 20 20 73 65 74 20 75 72  l"} {.    set ur
0a30: 6c 20 24 73 5f 74 61 67 0a 20 20 7d 20 65 6c 73  l $s_tag.  } els
0a40: 65 20 7b 0a 20 20 20 20 73 65 74 20 75 72 6c 20  e {.    set url 
0a50: 6c 61 6e 67 5f 24 73 5f 74 61 67 2e 68 74 6d 6c  lang_$s_tag.html
0a60: 0a 20 20 7d 0a 20 20 68 64 5f 72 65 73 6f 6c 76  .  }.  hd_resolv
0a70: 65 20 22 3c 6c 69 3e 5c 5b 24 73 5f 6b 77 7c 24  e "<li>\[$s_kw|$
0a80: 73 5f 74 69 74 6c 65 5c 5d 3c 2f 6c 69 3e 22 0a  s_title\]</li>".
0a90: 20 20 69 6e 63 72 20 69 0a 20 20 69 66 20 7b 24    incr i.  if {$
0aa0: 69 3d 3d 24 6c 61 6e 67 5f 73 65 63 74 69 6f 6e  i==$lang_section
0ab0: 5f 62 72 65 61 6b 20 7c 7c 20 24 69 3d 3d 32 2a  _break || $i==2*
0ac0: 24 6c 61 6e 67 5f 73 65 63 74 69 6f 6e 5f 62 72  $lang_section_br
0ad0: 65 61 6b 7d 20 7b 0a 20 20 20 20 68 64 5f 70 75  eak} {.    hd_pu
0ae0: 74 73 20 22 3c 2f 75 6c 3e 3c 2f 74 64 3e 3c 74  ts "</ul></td><t
0af0: 64 20 76 61 6c 69 67 6e 3d 5c 22 74 6f 70 5c 22  d valign=\"top\"
0b00: 3e 3c 75 6c 3e 22 0a 20 20 7d 0a 7d 0a 3c 2f 74  ><ul>".  }.}.</t
0b10: 63 6c 3e 0a 3c 2f 75 6c 3e 3c 2f 74 64 3e 3c 2f  cl>.</ul></td></
0b20: 74 72 3e 3c 2f 74 61 62 6c 65 3e 0a 0a 3c 70 3e  tr></table>..<p>
0b30: 54 68 65 20 72 6f 75 74 69 6e 65 73 20 5b 73 71  The routines [sq
0b40: 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76 32  lite3_prepare_v2
0b50: 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 70 72  ()], [sqlite3_pr
0b60: 65 70 61 72 65 28 29 5d 2c 0a 5b 73 71 6c 69 74  epare()],.[sqlit
0b70: 65 33 5f 70 72 65 70 61 72 65 31 36 28 29 5d 2c  e3_prepare16()],
0b80: 20 5b 73 71 6c 69 74 65 33 5f 65 78 65 63 28 29   [sqlite3_exec()
0b90: 5d 2c 20 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f  ], and [sqlite3_
0ba0: 67 65 74 5f 74 61 62 6c 65 28 29 5d 20 61 63 63  get_table()] acc
0bb0: 65 70 74 0a 61 6e 20 53 51 4c 20 73 74 61 74 65  ept.an SQL state
0bc0: 6d 65 6e 74 20 6c 69 73 74 20 28 73 71 6c 2d 73  ment list (sql-s
0bd0: 74 6d 74 2d 6c 69 73 74 29 20 77 68 69 63 68 20  tmt-list) which 
0be0: 69 73 20 61 20 73 65 6d 69 63 6f 6c 6f 6e 2d 73  is a semicolon-s
0bf0: 65 70 61 72 61 74 65 64 0a 6c 69 73 74 20 6f 66  eparated.list of
0c00: 20 73 74 61 74 65 6d 65 6e 74 73 2e 3c 2f 70 3e   statements.</p>
0c10: 0a 0a 3c 74 63 6c 3e 42 75 62 62 6c 65 44 69 61  ..<tcl>BubbleDia
0c20: 67 72 61 6d 20 73 71 6c 2d 73 74 6d 74 2d 6c 69  gram sql-stmt-li
0c30: 73 74 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 45 61 63  st</tcl>..<p>Eac
0c40: 68 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20  h SQL statement 
0c50: 69 6e 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74  in the statement
0c60: 20 6c 69 73 74 20 69 73 20 61 6e 20 69 6e 73 74   list is an inst
0c70: 61 6e 63 65 20 6f 66 20 74 68 65 0a 66 6f 6c 6c  ance of the.foll
0c80: 6f 77 69 6e 67 3a 3c 2f 70 3e 0a 0a 3c 74 63 6c  owing:</p>..<tcl
0c90: 3e 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 73  >BubbleDiagram s
0ca0: 71 6c 2d 73 74 6d 74 3c 2f 74 63 6c 3e 0a 0a 3c  ql-stmt</tcl>..<
0cb0: 74 63 6c 3e 0a 70 72 6f 63 20 4f 70 65 72 61 74  tcl>.proc Operat
0cc0: 6f 72 20 7b 6e 61 6d 65 7d 20 7b 0a 20 20 72 65  or {name} {.  re
0cd0: 74 75 72 6e 20 22 3c 66 6f 6e 74 20 63 6f 6c 6f  turn "<font colo
0ce0: 72 3d 5c 22 23 32 63 32 63 66 30 5c 22 3e 3c 62  r=\"#2c2cf0\"><b
0cf0: 69 67 3e 24 6e 61 6d 65 3c 2f 62 69 67 3e 3c 2f  ig>$name</big></
0d00: 66 6f 6e 74 3e 22 0a 7d 0a 70 72 6f 63 20 4e 6f  font>".}.proc No
0d10: 6e 74 65 72 6d 69 6e 61 6c 20 7b 6e 61 6d 65 7d  nterminal {name}
0d20: 20 7b 0a 20 20 72 65 74 75 72 6e 20 22 3c 69 3e   {.  return "<i>
0d30: 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 5c 22 23 66  <font color=\"#f
0d40: 66 33 34 33 34 5c 22 3e 24 6e 61 6d 65 3c 2f 66  f3434\">$name</f
0d50: 6f 6e 74 3e 3c 2f 69 3e 22 0a 7d 0a 70 72 6f 63  ont></i>".}.proc
0d60: 20 4b 65 79 77 6f 72 64 20 7b 6e 61 6d 65 7d 20   Keyword {name} 
0d70: 7b 0a 20 20 72 65 74 75 72 6e 20 22 3c 66 6f 6e  {.  return "<fon
0d80: 74 20 63 6f 6c 6f 72 3d 5c 22 23 32 63 32 63 66  t color=\"#2c2cf
0d90: 30 5c 22 3e 24 6e 61 6d 65 3c 2f 66 6f 6e 74 3e  0\">$name</font>
0da0: 22 0a 7d 0a 70 72 6f 63 20 45 78 61 6d 70 6c 65  ".}.proc Example
0db0: 20 7b 74 65 78 74 7d 20 7b 0a 20 20 68 64 5f 70   {text} {.  hd_p
0dc0: 75 74 73 20 22 3c 62 6c 6f 63 6b 71 75 6f 74 65  uts "<blockquote
0dd0: 3e 3c 70 72 65 3e 24 74 65 78 74 3c 2f 70 72 65  ><pre>$text</pre
0de0: 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 22 0a  ></blockquote>".
0df0: 7d 0a 0a 70 72 6f 63 20 53 65 63 74 69 6f 6e 20  }..proc Section 
0e00: 7b 6e 61 6d 65 20 6c 61 62 65 6c 20 6b 65 79 77  {name label keyw
0e10: 6f 72 64 73 7d 20 7b 0a 20 20 67 6c 6f 62 61 6c  ords} {.  global
0e20: 20 44 4f 43 0a 20 20 68 64 5f 63 6c 6f 73 65 5f   DOC.  hd_close_
0e30: 6d 61 69 6e 0a 20 20 68 64 5f 6f 70 65 6e 5f 6d  main.  hd_open_m
0e40: 61 69 6e 20 6c 61 6e 67 5f 24 6c 61 62 65 6c 2e  ain lang_$label.
0e50: 68 74 6d 6c 0a 20 20 68 64 5f 68 65 61 64 65 72  html.  hd_header
0e60: 20 22 53 51 4c 69 74 65 20 51 75 65 72 79 20 4c   "SQLite Query L
0e70: 61 6e 67 75 61 67 65 3a 20 24 6e 61 6d 65 22 20  anguage: $name" 
0e80: 24 44 4f 43 2f 70 61 67 65 73 2f 6c 61 6e 67 2e  $DOC/pages/lang.
0e90: 69 6e 0a 20 20 65 76 61 6c 20 68 64 5f 6b 65 79  in.  eval hd_key
0ea0: 77 6f 72 64 73 20 24 6b 65 79 77 6f 72 64 73 0a  words $keywords.
0eb0: 20 20 69 66 20 7b 5b 6c 73 65 61 72 63 68 20 24    if {[lsearch $
0ec0: 6b 65 79 77 6f 72 64 73 20 24 6e 61 6d 65 5d 20  keywords $name] 
0ed0: 3d 3d 20 2d 31 20 26 26 20 5b 6c 73 65 61 72 63  == -1 && [lsearc
0ee0: 68 20 24 6b 65 79 77 6f 72 64 73 20 2a 24 6e 61  h $keywords *$na
0ef0: 6d 65 5d 20 3d 3d 20 2d 31 7d 20 7b 0a 20 20 20  me] == -1} {.   
0f00: 20 65 76 61 6c 20 68 64 5f 6b 65 79 77 6f 72 64   eval hd_keyword
0f10: 73 20 7b 20 24 6e 61 6d 65 20 7d 0a 20 20 7d 0a  s { $name }.  }.
0f20: 20 20 68 64 5f 70 75 74 73 20 7b 3c 68 31 20 61    hd_puts {<h1 a
0f30: 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 53 51  lign="center">SQ
0f40: 4c 20 41 73 20 55 6e 64 65 72 73 74 6f 6f 64 20  L As Understood 
0f50: 42 79 20 53 51 4c 69 74 65 3c 2f 68 31 3e 7d 0a  By SQLite</h1>}.
0f60: 20 20 68 64 5f 70 75 74 73 20 7b 3c 70 3e 3c 61    hd_puts {<p><a
0f70: 20 68 72 65 66 3d 22 6c 61 6e 67 2e 68 74 6d 6c   href="lang.html
0f80: 22 3e 5b 54 6f 70 5d 3c 2f 61 3e 3c 2f 70 3e 7d  ">[Top]</a></p>}
0f90: 0a 20 20 68 64 5f 70 75 74 73 20 22 3c 68 32 3e  .  hd_puts "<h2>
0fa0: 24 6e 61 6d 65 3c 2f 68 32 3e 22 0a 7d 0a 0a 23  $name</h2>".}..#
0fb0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0fc0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0fd0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0fe0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0ff0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 53  ##############.S
1000: 65 63 74 69 6f 6e 20 7b 41 4c 54 45 52 20 54 41  ection {ALTER TA
1010: 42 4c 45 7d 20 61 6c 74 65 72 74 61 62 6c 65 20  BLE} altertable 
1020: 7b 7b 41 4c 54 45 52 20 54 41 42 4c 45 7d 20 7b  {{ALTER TABLE} {
1030: 2a 41 4c 54 45 52 7d 7d 0a 0a 42 75 62 62 6c 65  *ALTER}}..Bubble
1040: 44 69 61 67 72 61 6d 20 61 6c 74 65 72 2d 74 61  Diagram alter-ta
1050: 62 6c 65 2d 73 74 6d 74 20 31 0a 3c 2f 74 63 6c  ble-stmt 1.</tcl
1060: 3e 0a 0a 3c 70 3e 53 51 4c 69 74 65 20 73 75 70  >..<p>SQLite sup
1070: 70 6f 72 74 73 20 61 20 6c 69 6d 69 74 65 64 20  ports a limited 
1080: 73 75 62 73 65 74 20 6f 66 20 41 4c 54 45 52 20  subset of ALTER 
1090: 54 41 42 4c 45 2e 0a 54 68 65 20 41 4c 54 45 52  TABLE..The ALTER
10a0: 20 54 41 42 4c 45 20 63 6f 6d 6d 61 6e 64 20 69   TABLE command i
10b0: 6e 20 53 51 4c 69 74 65 20 61 6c 6c 6f 77 73 20  n SQLite allows 
10c0: 74 68 65 20 75 73 65 72 20 74 6f 20 72 65 6e 61  the user to rena
10d0: 6d 65 20 61 20 74 61 62 6c 65 0a 6f 72 20 74 6f  me a table.or to
10e0: 20 61 64 64 20 61 20 6e 65 77 20 63 6f 6c 75 6d   add a new colum
10f0: 6e 20 74 6f 20 61 6e 20 65 78 69 73 74 69 6e 67  n to an existing
1100: 20 74 61 62 6c 65 2e 20 49 74 20 69 73 20 6e 6f   table. It is no
1110: 74 20 70 6f 73 73 69 62 6c 65 0a 74 6f 20 72 65  t possible.to re
1120: 6e 61 6d 65 20 61 20 63 6f 6c 75 6d 6e 2c 20 72  name a column, r
1130: 65 6d 6f 76 65 20 61 20 63 6f 6c 75 6d 6e 2c 20  emove a column, 
1140: 6f 72 20 61 64 64 20 6f 72 20 72 65 6d 6f 76 65  or add or remove
1150: 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 66 72 6f   constraints fro
1160: 6d 20 61 20 74 61 62 6c 65 2e 0a 3c 2f 70 3e 0a  m a table..</p>.
1170: 0a 3c 70 3e 54 68 65 20 52 45 4e 41 4d 45 20 54  .<p>The RENAME T
1180: 4f 20 73 79 6e 74 61 78 20 69 73 20 75 73 65 64  O syntax is used
1190: 20 74 6f 20 72 65 6e 61 6d 65 20 74 68 65 20 74   to rename the t
11a0: 61 62 6c 65 20 69 64 65 6e 74 69 66 69 65 64 20  able identified 
11b0: 62 79 20 0a 3c 69 3e 26 23 39 31 3b 64 61 74 61  by .<i>&#91;data
11c0: 62 61 73 65 2d 6e 61 6d 65 2e 26 23 39 33 3b 74  base-name.&#93;t
11d0: 61 62 6c 65 2d 6e 61 6d 65 3c 2f 69 3e 20 74 6f  able-name</i> to
11e0: 20 3c 69 3e 6e 65 77 2d 74 61 62 6c 65 2d 6e 61   <i>new-table-na
11f0: 6d 65 3c 2f 69 3e 2e 0a 54 68 69 73 20 63 6f 6d  me</i>..This com
1200: 6d 61 6e 64 20 0a 63 61 6e 6e 6f 74 20 62 65 20  mand .cannot be 
1210: 75 73 65 64 20 74 6f 20 6d 6f 76 65 20 61 20 74  used to move a t
1220: 61 62 6c 65 20 62 65 74 77 65 65 6e 20 61 74 74  able between att
1230: 61 63 68 65 64 20 64 61 74 61 62 61 73 65 73 2c  ached databases,
1240: 20 6f 6e 6c 79 20 74 6f 20 72 65 6e 61 6d 65 20   only to rename 
1250: 0a 61 20 74 61 62 6c 65 20 77 69 74 68 69 6e 20  .a table within 
1260: 74 68 65 20 73 61 6d 65 20 64 61 74 61 62 61 73  the same databas
1270: 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 74 68  e.</p>..<p>If th
1280: 65 20 74 61 62 6c 65 20 62 65 69 6e 67 20 72 65  e table being re
1290: 6e 61 6d 65 64 20 68 61 73 20 74 72 69 67 67 65  named has trigge
12a0: 72 73 20 6f 72 20 69 6e 64 69 63 65 73 2c 20 74  rs or indices, t
12b0: 68 65 6e 20 74 68 65 73 65 20 72 65 6d 61 69 6e  hen these remain
12c0: 0a 61 74 74 61 63 68 65 64 20 74 6f 20 74 68 65  .attached to the
12d0: 20 74 61 62 6c 65 20 61 66 74 65 72 20 69 74 20   table after it 
12e0: 68 61 73 20 62 65 65 6e 20 72 65 6e 61 6d 65 64  has been renamed
12f0: 2e 20 48 6f 77 65 76 65 72 2c 20 69 66 20 74 68  . However, if th
1300: 65 72 65 20 61 72 65 0a 61 6e 79 20 76 69 65 77  ere are.any view
1310: 20 64 65 66 69 6e 69 74 69 6f 6e 73 2c 20 6f 72   definitions, or
1320: 20 73 74 61 74 65 6d 65 6e 74 73 20 65 78 65 63   statements exec
1330: 75 74 65 64 20 62 79 20 74 72 69 67 67 65 72 73  uted by triggers
1340: 20 74 68 61 74 20 72 65 66 65 72 20 74 6f 0a 74   that refer to.t
1350: 68 65 20 74 61 62 6c 65 20 62 65 69 6e 67 20 72  he table being r
1360: 65 6e 61 6d 65 64 2c 20 74 68 65 73 65 20 61 72  enamed, these ar
1370: 65 20 6e 6f 74 20 61 75 74 6f 6d 61 74 69 63 61  e not automatica
1380: 6c 6c 79 20 6d 6f 64 69 66 69 65 64 20 74 6f 20  lly modified to 
1390: 75 73 65 20 74 68 65 20 6e 65 77 0a 74 61 62 6c  use the new.tabl
13a0: 65 20 6e 61 6d 65 2e 20 49 66 20 74 68 69 73 20  e name. If this 
13b0: 69 73 20 72 65 71 75 69 72 65 64 2c 20 74 68 65  is required, the
13c0: 20 74 72 69 67 67 65 72 73 20 6f 72 20 76 69 65   triggers or vie
13d0: 77 20 64 65 66 69 6e 69 74 69 6f 6e 73 20 6d 75  w definitions mu
13e0: 73 74 20 62 65 0a 64 72 6f 70 70 65 64 20 61 6e  st be.dropped an
13f0: 64 20 72 65 63 72 65 61 74 65 64 20 74 6f 20 75  d recreated to u
1400: 73 65 20 74 68 65 20 6e 65 77 20 74 61 62 6c 65  se the new table
1410: 20 6e 61 6d 65 20 62 79 20 68 61 6e 64 2e 0a 3c   name by hand..<
1420: 2f 70 3e 0a 0a 3c 70 3e 5e 49 66 20 5b 66 6f 72  /p>..<p>^If [for
1430: 65 69 67 6e 20 6b 65 79 20 63 6f 6e 73 74 72 61  eign key constra
1440: 69 6e 74 73 5d 20 61 72 65 20 0a 5b 66 6f 72 65  ints] are .[fore
1450: 69 67 6e 5f 6b 65 79 73 20 70 72 61 67 6d 61 20  ign_keys pragma 
1460: 7c 20 65 6e 61 62 6c 65 64 5d 20 77 68 65 6e 20  | enabled] when 
1470: 61 20 74 61 62 6c 65 20 69 73 20 72 65 6e 61 6d  a table is renam
1480: 65 64 2c 20 74 68 65 6e 20 61 6e 79 0a 5b 66 6f  ed, then any.[fo
1490: 72 65 69 67 6e 2d 6b 65 79 2d 63 6c 61 75 73 65  reign-key-clause
14a0: 20 7c 20 52 45 46 45 52 45 4e 43 45 53 20 63 6c   | REFERENCES cl
14b0: 61 75 73 65 73 5d 20 69 6e 20 61 6e 79 20 74 61  auses] in any ta
14c0: 62 6c 65 20 28 65 69 74 68 65 72 20 74 68 65 0a  ble (either the.
14d0: 74 61 62 6c 65 20 62 65 69 6e 67 20 72 65 6e 61  table being rena
14e0: 6d 65 64 20 6f 72 20 73 6f 6d 65 20 6f 74 68 65  med or some othe
14f0: 72 20 74 61 62 6c 65 29 0a 74 68 61 74 20 72 65  r table).that re
1500: 66 65 72 20 74 6f 20 74 68 65 20 74 61 62 6c 65  fer to the table
1510: 20 62 65 69 6e 67 20 72 65 6e 61 6d 65 64 20 61   being renamed a
1520: 72 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 72  re modified to r
1530: 65 66 65 72 20 0a 74 6f 20 74 68 65 20 72 65 6e  efer .to the ren
1540: 61 6d 65 64 20 74 61 62 6c 65 20 62 79 20 69 74  amed table by it
1550: 73 20 6e 65 77 20 6e 61 6d 65 2e 0a 0a 3c 70 3e  s new name...<p>
1560: 54 68 65 20 41 44 44 20 43 4f 4c 55 4d 4e 20 73  The ADD COLUMN s
1570: 79 6e 74 61 78 0a 69 73 20 75 73 65 64 20 74 6f  yntax.is used to
1580: 20 61 64 64 20 61 20 6e 65 77 20 63 6f 6c 75 6d   add a new colum
1590: 6e 20 74 6f 20 61 6e 20 65 78 69 73 74 69 6e 67  n to an existing
15a0: 20 74 61 62 6c 65 2e 0a 54 68 65 20 6e 65 77 20   table..The new 
15b0: 63 6f 6c 75 6d 6e 20 69 73 20 61 6c 77 61 79 73  column is always
15c0: 20 61 70 70 65 6e 64 65 64 20 74 6f 20 74 68 65   appended to the
15d0: 20 65 6e 64 20 6f 66 20 74 68 65 20 6c 69 73 74   end of the list
15e0: 20 6f 66 20 65 78 69 73 74 69 6e 67 20 63 6f 6c   of existing col
15f0: 75 6d 6e 73 2e 0a 54 68 65 20 5b 63 6f 6c 75 6d  umns..The [colum
1600: 6e 2d 64 65 66 5d 20 72 75 6c 65 20 64 65 66 69  n-def] rule defi
1610: 6e 65 73 20 74 68 65 20 63 68 61 72 61 63 74 65  nes the characte
1620: 72 69 73 74 69 63 73 20 6f 66 20 74 68 65 20 6e  ristics of the n
1630: 65 77 20 63 6f 6c 75 6d 6e 2e 0a 54 68 65 20 6e  ew column..The n
1640: 65 77 20 63 6f 6c 75 6d 6e 20 6d 61 79 20 74 61  ew column may ta
1650: 6b 65 20 61 6e 79 20 6f 66 20 74 68 65 20 66 6f  ke any of the fo
1660: 72 6d 73 20 70 65 72 6d 69 73 73 61 62 6c 65 20  rms permissable 
1670: 69 6e 20 61 20 5b 43 52 45 41 54 45 20 54 41 42  in a [CREATE TAB
1680: 4c 45 5d 0a 73 74 61 74 65 6d 65 6e 74 2c 20 77  LE].statement, w
1690: 69 74 68 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e  ith the followin
16a0: 67 20 72 65 73 74 72 69 63 74 69 6f 6e 73 3a 0a  g restrictions:.
16b0: 3c 75 6c 3e 0a 3c 6c 69 3e 54 68 65 20 63 6f 6c  <ul>.<li>The col
16c0: 75 6d 6e 20 6d 61 79 20 6e 6f 74 20 68 61 76 65  umn may not have
16d0: 20 61 20 50 52 49 4d 41 52 59 20 4b 45 59 20 6f   a PRIMARY KEY o
16e0: 72 20 55 4e 49 51 55 45 20 63 6f 6e 73 74 72 61  r UNIQUE constra
16f0: 69 6e 74 2e 3c 2f 6c 69 3e 0a 3c 6c 69 3e 54 68  int.</li>.<li>Th
1700: 65 20 63 6f 6c 75 6d 6e 20 6d 61 79 20 6e 6f 74  e column may not
1710: 20 68 61 76 65 20 61 20 64 65 66 61 75 6c 74 20   have a default 
1720: 76 61 6c 75 65 20 6f 66 20 43 55 52 52 45 4e 54  value of CURRENT
1730: 5f 54 49 4d 45 2c 20 43 55 52 52 45 4e 54 5f 44  _TIME, CURRENT_D
1740: 41 54 45 20 0a 20 20 20 20 6f 72 20 43 55 52 52  ATE .    or CURR
1750: 45 4e 54 5f 54 49 4d 45 53 54 41 4d 50 2e 3c 2f  ENT_TIMESTAMP.</
1760: 6c 69 3e 0a 3c 6c 69 3e 49 66 20 61 20 4e 4f 54  li>.<li>If a NOT
1770: 20 4e 55 4c 4c 20 63 6f 6e 73 74 72 61 69 6e 74   NULL constraint
1780: 20 69 73 20 73 70 65 63 69 66 69 65 64 2c 20 74   is specified, t
1790: 68 65 6e 20 74 68 65 20 63 6f 6c 75 6d 6e 20 6d  hen the column m
17a0: 75 73 74 20 68 61 76 65 20 61 0a 20 20 20 20 64  ust have a.    d
17b0: 65 66 61 75 6c 74 20 76 61 6c 75 65 20 6f 74 68  efault value oth
17c0: 65 72 20 74 68 61 6e 20 4e 55 4c 4c 2e 0a 3c 6c  er than NULL..<l
17d0: 69 3e 5e 49 66 20 5b 66 6f 72 65 69 67 6e 20 6b  i>^If [foreign k
17e0: 65 79 20 63 6f 6e 73 74 72 61 69 6e 74 73 5d 20  ey constraints] 
17f0: 61 72 65 20 5b 66 6f 72 65 69 67 6e 5f 6b 65 79  are [foreign_key
1800: 73 20 70 72 61 67 6d 61 20 7c 20 65 6e 61 62 6c  s pragma | enabl
1810: 65 64 5d 20 61 6e 64 0a 20 20 20 20 61 20 63 6f  ed] and.    a co
1820: 6c 75 6d 6e 20 77 69 74 68 20 61 20 5b 66 6f 72  lumn with a [for
1830: 65 69 67 6e 2d 6b 65 79 2d 63 6c 61 75 73 65 20  eign-key-clause 
1840: 7c 20 52 45 46 45 52 45 4e 43 45 53 20 63 6c 61  | REFERENCES cla
1850: 75 73 65 5d 0a 20 20 20 20 69 73 20 61 64 64 65  use].    is adde
1860: 64 2c 20 74 68 65 20 63 6f 6c 75 6d 6e 20 6d 75  d, the column mu
1870: 73 74 20 68 61 76 65 20 61 20 64 65 66 61 75 6c  st have a defaul
1880: 74 20 76 61 6c 75 65 20 6f 66 20 4e 55 4c 4c 2e  t value of NULL.
1890: 0a 3c 2f 75 6c 3e 0a 0a 3c 70 3e 4e 6f 74 65 20  .</ul>..<p>Note 
18a0: 61 6c 73 6f 20 74 68 61 74 20 77 68 65 6e 20 61  also that when a
18b0: 64 64 69 6e 67 20 61 20 43 48 45 43 4b 20 63 6f  dding a CHECK co
18c0: 6e 73 74 72 61 69 6e 74 2c 20 74 68 65 20 43 48  nstraint, the CH
18d0: 45 43 4b 20 63 6f 6e 73 74 72 61 69 6e 74 0a 69  ECK constraint.i
18e0: 73 20 6e 6f 74 20 74 65 73 74 65 64 20 61 67 61  s not tested aga
18f0: 69 6e 73 74 20 70 72 65 65 78 69 73 74 69 6e 67  inst preexisting
1900: 20 72 6f 77 73 20 6f 66 20 74 68 65 20 74 61 62   rows of the tab
1910: 6c 65 2e 0a 54 68 69 73 20 63 61 6e 20 72 65 73  le..This can res
1920: 75 6c 74 20 69 6e 20 61 20 74 61 62 6c 65 20 74  ult in a table t
1930: 68 61 74 20 63 6f 6e 74 61 69 6e 73 20 64 61 74  hat contains dat
1940: 61 20 74 68 61 74 0a 69 73 20 69 6e 20 76 69 6f  a that.is in vio
1950: 6c 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 43 48  lation of the CH
1960: 45 43 4b 20 63 6f 6e 73 74 72 61 69 6e 74 2e 20  ECK constraint. 
1970: 20 46 75 74 75 72 65 20 76 65 72 73 69 6f 6e 73   Future versions
1980: 20 6f 66 20 53 51 4c 69 74 65 20 6d 69 67 68 74   of SQLite might
1990: 0a 63 68 61 6e 67 65 20 74 6f 20 76 61 6c 69 64  .change to valid
19a0: 61 74 65 20 43 48 45 43 4b 20 63 6f 6e 73 74 72  ate CHECK constr
19b0: 61 69 6e 74 73 20 61 73 20 74 68 65 79 20 61 72  aints as they ar
19c0: 65 20 61 64 64 65 64 2e 3c 2f 70 3e 0a 0a 3c 70  e added.</p>..<p
19d0: 3e 54 68 65 20 65 78 65 63 75 74 69 6f 6e 20 74  >The execution t
19e0: 69 6d 65 20 6f 66 20 74 68 65 20 41 4c 54 45 52  ime of the ALTER
19f0: 20 54 41 42 4c 45 20 63 6f 6d 6d 61 6e 64 20 69   TABLE command i
1a00: 73 20 69 6e 64 65 70 65 6e 64 65 6e 74 20 6f 66  s independent of
1a10: 0a 74 68 65 20 61 6d 6f 75 6e 74 20 6f 66 20 64  .the amount of d
1a20: 61 74 61 20 69 6e 20 74 68 65 20 74 61 62 6c 65  ata in the table
1a30: 2e 20 20 54 68 65 20 41 4c 54 45 52 20 54 41 42  .  The ALTER TAB
1a40: 4c 45 20 63 6f 6d 6d 61 6e 64 20 72 75 6e 73 20  LE command runs 
1a50: 61 73 20 71 75 69 63 6b 6c 79 0a 6f 6e 20 61 20  as quickly.on a 
1a60: 74 61 62 6c 65 20 77 69 74 68 20 31 30 20 6d 69  table with 10 mi
1a70: 6c 6c 69 6f 6e 20 72 6f 77 73 20 61 73 20 69 74  llion rows as it
1a80: 20 64 6f 65 73 20 6f 6e 20 61 20 74 61 62 6c 65   does on a table
1a90: 20 77 69 74 68 20 31 20 72 6f 77 2e 0a 3c 2f 70   with 1 row..</p
1aa0: 3e 0a 0a 3c 70 3e 41 66 74 65 72 20 41 44 44 20  >..<p>After ADD 
1ab0: 43 4f 4c 55 4d 4e 20 68 61 73 20 62 65 65 6e 20  COLUMN has been 
1ac0: 72 75 6e 20 6f 6e 20 61 20 64 61 74 61 62 61 73  run on a databas
1ad0: 65 2c 20 74 68 61 74 20 64 61 74 61 62 61 73 65  e, that database
1ae0: 20 77 69 6c 6c 20 6e 6f 74 0a 62 65 20 72 65 61   will not.be rea
1af0: 64 61 62 6c 65 20 62 79 20 53 51 4c 69 74 65 20  dable by SQLite 
1b00: 76 65 72 73 69 6f 6e 20 33 2e 31 2e 33 20 61 6e  version 3.1.3 an
1b10: 64 20 65 61 72 6c 69 65 72 2e 3c 2f 70 3e 0a 0a  d earlier.</p>..
1b20: 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23  <tcl>.##########
1b30: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1b40: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1b50: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1b60: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1b70: 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b 41 4e  ####.Section {AN
1b80: 41 4c 59 5a 45 7d 20 61 6e 61 6c 79 7a 65 20 41  ALYZE} analyze A
1b90: 4e 41 4c 59 5a 45 0a 0a 42 75 62 62 6c 65 44 69  NALYZE..BubbleDi
1ba0: 61 67 72 61 6d 20 61 6e 61 6c 79 7a 65 2d 73 74  agram analyze-st
1bb0: 6d 74 20 31 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e  mt 1.</tcl>..<p>
1bc0: 54 68 65 20 41 4e 41 4c 59 5a 45 20 63 6f 6d 6d  The ANALYZE comm
1bd0: 61 6e 64 20 67 61 74 68 65 72 73 20 73 74 61 74  and gathers stat
1be0: 69 73 74 69 63 73 20 61 62 6f 75 74 20 69 6e 64  istics about ind
1bf0: 69 63 65 73 20 61 6e 64 20 73 74 6f 72 65 73 20  ices and stores 
1c00: 74 68 65 6d 0a 69 6e 20 61 20 73 70 65 63 69 61  them.in a specia
1c10: 6c 20 74 61 62 6c 65 73 20 69 6e 20 74 68 65 20  l tables in the 
1c20: 64 61 74 61 62 61 73 65 20 77 68 65 72 65 20 74  database where t
1c30: 68 65 20 71 75 65 72 79 20 6f 70 74 69 6d 69 7a  he query optimiz
1c40: 65 72 20 63 61 6e 20 75 73 65 0a 74 68 65 6d 20  er can use.them 
1c50: 74 6f 20 68 65 6c 70 20 6d 61 6b 65 20 62 65 74  to help make bet
1c60: 74 65 72 20 69 6e 64 65 78 20 63 68 6f 69 63 65  ter index choice
1c70: 73 2e 0a 49 66 20 6e 6f 20 61 72 67 75 6d 65 6e  s..If no argumen
1c80: 74 73 20 61 72 65 20 67 69 76 65 6e 2c 20 61 6c  ts are given, al
1c90: 6c 20 69 6e 64 69 63 65 73 20 69 6e 20 61 6c 6c  l indices in all
1ca0: 20 61 74 74 61 63 68 65 64 20 64 61 74 61 62 61   attached databa
1cb0: 73 65 73 20 61 72 65 0a 61 6e 61 6c 79 7a 65 64  ses are.analyzed
1cc0: 2e 20 20 49 66 20 61 20 64 61 74 61 62 61 73 65  .  If a database
1cd0: 20 6e 61 6d 65 20 69 73 20 67 69 76 65 6e 20 61   name is given a
1ce0: 73 20 74 68 65 20 61 72 67 75 6d 65 6e 74 2c 20  s the argument, 
1cf0: 61 6c 6c 20 69 6e 64 69 63 65 73 0a 69 6e 20 74  all indices.in t
1d00: 68 61 74 20 6f 6e 65 20 64 61 74 61 62 61 73 65  hat one database
1d10: 20 61 72 65 20 61 6e 61 6c 79 7a 65 64 2e 20 20   are analyzed.  
1d20: 49 66 20 74 68 65 20 61 72 67 75 6d 65 6e 74 20  If the argument 
1d30: 69 73 20 61 20 74 61 62 6c 65 20 6e 61 6d 65 2c  is a table name,
1d40: 0a 74 68 65 6e 20 6f 6e 6c 79 20 69 6e 64 69 63  .then only indic
1d50: 65 73 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  es associated wi
1d60: 74 68 20 74 68 61 74 20 6f 6e 65 20 74 61 62 6c  th that one tabl
1d70: 65 20 61 72 65 20 61 6e 61 6c 79 7a 65 64 2e 3c  e are analyzed.<
1d80: 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 64 65 66 61  /p>..<p>The defa
1d90: 75 6c 74 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  ult implementati
1da0: 6f 6e 20 73 74 6f 72 65 73 20 61 6c 6c 20 73 74  on stores all st
1db0: 61 74 69 73 74 69 63 73 20 69 6e 20 61 20 73 69  atistics in a si
1dc0: 6e 67 6c 65 0a 74 61 62 6c 65 20 6e 61 6d 65 64  ngle.table named
1dd0: 20 3c 62 3e 73 71 6c 69 74 65 5f 73 74 61 74 31   <b>sqlite_stat1
1de0: 3c 2f 62 3e 2e 20 20 49 66 20 53 51 4c 69 74 65  </b>.  If SQLite
1df0: 20 69 73 20 63 6f 6d 70 69 6c 65 64 20 77 69 74   is compiled wit
1e00: 68 20 74 68 65 0a 5b 53 51 4c 49 54 45 5f 45 4e  h the.[SQLITE_EN
1e10: 41 42 4c 45 5f 53 54 41 54 32 5d 20 6f 70 74 69  ABLE_STAT2] opti
1e20: 6f 6e 2c 20 74 68 65 6e 20 61 64 64 69 74 69 6f  on, then additio
1e30: 6e 61 6c 20 68 69 73 74 6f 67 72 61 6d 20 64 61  nal histogram da
1e40: 74 61 20 69 73 0a 63 6f 6c 6c 65 63 74 65 64 20  ta is.collected 
1e50: 61 6e 64 20 73 74 6f 72 65 64 20 69 6e 20 3c 62  and stored in <b
1e60: 3e 73 71 6c 69 74 65 5f 73 74 61 74 32 3c 2f 62  >sqlite_stat2</b
1e70: 3e 2e 0a 46 75 74 75 72 65 20 65 6e 68 61 6e 63  >..Future enhanc
1e80: 65 6d 65 6e 74 73 20 6d 61 79 20 63 72 65 61 74  ements may creat
1e90: 65 0a 61 64 64 69 74 69 6f 6e 61 6c 20 74 61 62  e.additional tab
1ea0: 6c 65 73 20 77 69 74 68 20 74 68 65 20 73 61 6d  les with the sam
1eb0: 65 20 6e 61 6d 65 20 70 61 74 74 65 72 6e 20 65  e name pattern e
1ec0: 78 63 65 70 74 20 77 69 74 68 20 74 68 65 20 22  xcept with the "
1ed0: 31 22 0a 6f 72 20 22 32 22 20 63 68 61 6e 67 65  1".or "2" change
1ee0: 64 20 74 6f 20 61 20 64 69 66 66 65 72 65 6e 74  d to a different
1ef0: 20 64 69 67 69 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e   digit.</p>..<p>
1f00: 54 68 65 20 5b 44 52 4f 50 20 54 41 42 4c 45 5d  The [DROP TABLE]
1f10: 20 63 6f 6d 6d 61 6e 64 20 64 6f 65 73 0a 6e 6f   command does.no
1f20: 74 20 77 6f 72 6b 20 6f 6e 20 74 68 65 20 3c 62  t work on the <b
1f30: 3e 73 71 6c 69 74 65 5f 73 74 61 74 31 3c 2f 62  >sqlite_stat1</b
1f40: 3e 20 6f 72 20 3c 62 3e 73 71 6c 69 74 65 5f 73  > or <b>sqlite_s
1f50: 74 61 74 32 3c 2f 62 3e 20 74 61 62 6c 65 73 2c  tat2</b> tables,
1f60: 0a 62 75 74 20 61 6c 6c 20 74 68 65 20 63 6f 6e  .but all the con
1f70: 74 65 6e 74 20 6f 66 20 74 68 6f 73 65 20 74 61  tent of those ta
1f80: 62 6c 65 73 20 63 61 6e 20 62 65 20 71 75 65 72  bles can be quer
1f90: 69 65 64 20 75 73 69 6e 67 20 5b 53 45 4c 45 43  ied using [SELEC
1fa0: 54 5d 0a 61 6e 64 20 63 61 6e 20 62 65 20 64 65  T].and can be de
1fb0: 6c 65 74 65 64 2c 20 61 75 67 6d 65 6e 74 65 64  leted, augmented
1fc0: 2c 20 6f 72 20 6d 6f 64 69 66 69 65 64 20 75 73  , or modified us
1fd0: 69 6e 67 20 74 68 65 20 5b 44 45 4c 45 54 45 5d  ing the [DELETE]
1fe0: 2c 0a 5b 49 4e 53 45 52 54 5d 2c 20 61 6e 64 20  ,.[INSERT], and 
1ff0: 5b 55 50 44 41 54 45 5d 20 63 6f 6d 6d 61 6e 64  [UPDATE] command
2000: 73 2e 0a 41 70 70 72 6f 70 72 69 61 74 65 20 63  s..Appropriate c
2010: 61 72 65 20 73 68 6f 75 6c 64 20 62 65 20 75 73  are should be us
2020: 65 64 20 77 68 65 6e 20 63 68 61 6e 67 69 6e 67  ed when changing
2030: 20 74 68 65 20 63 6f 6e 74 65 6e 74 20 6f 66 20   the content of 
2040: 74 68 65 20 73 74 61 74 69 73 74 69 63 73 0a 74  the statistics.t
2050: 61 62 6c 65 73 20 61 73 20 69 6e 76 61 6c 69 64  ables as invalid
2060: 20 63 6f 6e 74 65 6e 74 20 63 61 6e 20 63 61 75   content can cau
2070: 73 65 20 53 51 4c 69 74 65 20 74 6f 20 73 65 6c  se SQLite to sel
2080: 65 63 74 20 69 6e 65 66 66 69 63 69 65 6e 74 0a  ect inefficient.
2090: 71 75 65 72 79 20 70 6c 61 6e 73 2e 20 20 47 65  query plans.  Ge
20a0: 6e 65 72 61 6c 6c 79 20 73 70 65 61 6b 69 6e 67  nerally speaking
20b0: 2c 20 6f 6e 65 20 73 68 6f 75 6c 64 20 6e 6f 74  , one should not
20c0: 20 6d 6f 64 69 66 79 20 74 68 65 20 63 6f 6e 74   modify the cont
20d0: 65 6e 74 20 6f 66 0a 74 68 65 20 73 74 61 74 69  ent of.the stati
20e0: 73 74 69 63 73 20 74 61 62 6c 65 73 20 62 79 20  stics tables by 
20f0: 61 6e 79 20 6d 65 63 68 61 6e 69 73 6d 20 6f 74  any mechanism ot
2100: 68 65 72 20 74 68 61 6e 20 69 6e 76 6f 6b 69 6e  her than invokin
2110: 67 20 74 68 65 0a 41 4e 41 4c 59 5a 45 20 63 6f  g the.ANALYZE co
2120: 6d 6d 61 6e 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 53  mmand.</p>..<p>S
2130: 74 61 74 69 73 74 69 63 73 20 67 61 74 68 65 72  tatistics gather
2140: 65 64 20 62 79 20 41 4e 41 4c 59 5a 45 20 61 72  ed by ANALYZE ar
2150: 65 20 3c 75 3e 6e 6f 74 3c 2f 75 3e 20 61 75 74  e <u>not</u> aut
2160: 6f 6d 61 74 69 63 61 6c 6c 79 20 75 70 64 61 74  omatically updat
2170: 65 64 20 61 73 0a 74 68 65 20 63 6f 6e 74 65 6e  ed as.the conten
2180: 74 20 6f 66 20 74 68 65 20 64 61 74 61 62 61 73  t of the databas
2190: 65 20 63 68 61 6e 67 65 73 2e 20 20 49 66 20 74  e changes.  If t
21a0: 68 65 20 63 6f 6e 74 65 6e 74 20 6f 66 20 74 68  he content of th
21b0: 65 20 64 61 74 61 62 61 73 65 0a 63 68 61 6e 67  e database.chang
21c0: 65 73 20 73 69 67 6e 69 66 69 63 61 6e 74 6c 79  es significantly
21d0: 2c 20 6f 72 20 69 66 20 74 68 65 20 64 61 74 61  , or if the data
21e0: 62 61 73 65 20 73 63 68 65 6d 61 20 63 68 61 6e  base schema chan
21f0: 67 65 73 2c 20 74 68 65 6e 20 6f 6e 65 20 73 68  ges, then one sh
2200: 6f 75 6c 64 0a 63 6f 6e 73 69 64 65 72 20 72 65  ould.consider re
2210: 72 75 6e 6e 69 6e 67 20 74 68 65 20 41 4e 41 4c  running the ANAL
2220: 59 5a 45 20 63 6f 6d 6d 61 6e 64 20 69 6e 20 6f  YZE command in o
2230: 72 64 65 72 20 74 6f 20 75 70 64 61 74 65 20 74  rder to update t
2240: 68 65 20 73 74 61 74 69 73 74 69 63 73 2e 3c 2f  he statistics.</
2250: 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23  p>..<tcl>.######
2260: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2270: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2280: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2290: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
22a0: 23 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e  ########.Section
22b0: 20 7b 41 54 54 41 43 48 20 44 41 54 41 42 41 53   {ATTACH DATABAS
22c0: 45 7d 20 61 74 74 61 63 68 20 2a 41 54 54 41 43  E} attach *ATTAC
22d0: 48 0a 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d  H..BubbleDiagram
22e0: 20 61 74 74 61 63 68 2d 73 74 6d 74 20 31 0a 3c   attach-stmt 1.<
22f0: 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20 41 54  /tcl>..<p>The AT
2300: 54 41 43 48 20 44 41 54 41 42 41 53 45 20 73 74  TACH DATABASE st
2310: 61 74 65 6d 65 6e 74 20 61 64 64 73 20 61 6e 6f  atement adds ano
2320: 74 68 65 72 20 64 61 74 61 62 61 73 65 20 0a 66  ther database .f
2330: 69 6c 65 20 74 6f 20 74 68 65 20 63 75 72 72 65  ile to the curre
2340: 6e 74 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  nt database conn
2350: 65 63 74 69 6f 6e 2e 20 20 49 66 20 74 68 65 20  ection.  If the 
2360: 66 69 6c 65 6e 61 6d 65 20 63 6f 6e 74 61 69 6e  filename contain
2370: 73 20 0a 70 75 6e 63 74 75 61 74 69 6f 6e 20 63  s .punctuation c
2380: 68 61 72 61 63 74 65 72 73 20 69 74 20 6d 75 73  haracters it mus
2390: 74 20 62 65 20 71 75 6f 74 65 64 2e 20 20 54 68  t be quoted.  Th
23a0: 65 20 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 73  e database-names
23b0: 20 27 6d 61 69 6e 27 20 61 6e 64 20 0a 27 74 65   'main' and .'te
23c0: 6d 70 27 20 72 65 66 65 72 20 74 6f 20 74 68 65  mp' refer to the
23d0: 20 6d 61 69 6e 20 64 61 74 61 62 61 73 65 20 61   main database a
23e0: 6e 64 20 74 68 65 20 64 61 74 61 62 61 73 65 20  nd the database 
23f0: 75 73 65 64 20 66 6f 72 20 0a 74 65 6d 70 6f 72  used for .tempor
2400: 61 72 79 20 74 61 62 6c 65 73 2e 20 20 54 68 65  ary tables.  The
2410: 73 65 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74  se cannot be det
2420: 61 63 68 65 64 2e 20 20 41 74 74 61 63 68 65 64  ached.  Attached
2430: 20 64 61 74 61 62 61 73 65 73 20 0a 61 72 65 20   databases .are 
2440: 72 65 6d 6f 76 65 64 20 75 73 69 6e 67 20 74 68  removed using th
2450: 65 20 5b 44 45 54 41 43 48 5d 20 73 74 61 74 65  e [DETACH] state
2460: 6d 65 6e 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 59 6f  ment.</p>..<p>Yo
2470: 75 20 63 61 6e 6e 6f 74 20 63 72 65 61 74 65 20  u cannot create 
2480: 61 20 6e 65 77 20 74 61 62 6c 65 20 77 69 74 68  a new table with
2490: 20 74 68 65 20 73 61 6d 65 20 6e 61 6d 65 20 61   the same name a
24a0: 73 20 61 20 74 61 62 6c 65 20 69 6e 20 0a 61 6e  s a table in .an
24b0: 20 61 74 74 61 63 68 65 64 20 64 61 74 61 62 61   attached databa
24c0: 73 65 2c 20 62 75 74 20 79 6f 75 20 63 61 6e 20  se, but you can 
24d0: 61 74 74 61 63 68 20 61 20 64 61 74 61 62 61 73  attach a databas
24e0: 65 20 77 68 69 63 68 20 63 6f 6e 74 61 69 6e 73  e which contains
24f0: 0a 74 61 62 6c 65 73 20 77 68 6f 73 65 20 6e 61  .tables whose na
2500: 6d 65 73 20 61 72 65 20 64 75 70 6c 69 63 61 74  mes are duplicat
2510: 65 73 20 6f 66 20 74 61 62 6c 65 73 20 69 6e 20  es of tables in 
2520: 74 68 65 20 6d 61 69 6e 20 64 61 74 61 62 61 73  the main databas
2530: 65 2e 20 49 66 0a 74 68 65 20 73 79 73 74 65 6d  e. If.the system
2540: 20 69 73 20 6e 6f 74 20 72 75 6e 6e 69 6e 67 20   is not running 
2550: 69 6e 20 5b 73 68 61 72 65 64 20 63 61 63 68 65  in [shared cache
2560: 20 6d 6f 64 65 5d 2c 20 69 74 20 69 73 20 61 6c   mode], it is al
2570: 73 6f 20 70 65 72 6d 69 73 73 69 62 6c 65 20 0a  so permissible .
2580: 74 6f 20 61 74 74 61 63 68 20 74 68 65 20 73 61  to attach the sa
2590: 6d 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  me database file
25a0: 20 6d 75 6c 74 69 70 6c 65 20 74 69 6d 65 73 2e   multiple times.
25b0: 3c 2f 70 3e 0a 0a 3c 70 3e 54 61 62 6c 65 73 20  </p>..<p>Tables 
25c0: 69 6e 20 61 6e 20 61 74 74 61 63 68 65 64 20 64  in an attached d
25d0: 61 74 61 62 61 73 65 20 63 61 6e 20 62 65 20 72  atabase can be r
25e0: 65 66 65 72 72 65 64 20 74 6f 20 75 73 69 6e 67  eferred to using
25f0: 20 74 68 65 20 73 79 6e 74 61 78 20 0a 3c 69 3e   the syntax .<i>
2600: 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 2e 74 61  database-name.ta
2610: 62 6c 65 2d 6e 61 6d 65 3c 2f 69 3e 2e 20 20 49  ble-name</i>.  I
2620: 66 20 61 6e 20 61 74 74 61 63 68 65 64 20 74 61  f an attached ta
2630: 62 6c 65 20 64 6f 65 73 6e 27 74 20 68 61 76 65  ble doesn't have
2640: 20 0a 61 20 64 75 70 6c 69 63 61 74 65 20 74 61   .a duplicate ta
2650: 62 6c 65 20 6e 61 6d 65 20 69 6e 20 74 68 65 20  ble name in the 
2660: 6d 61 69 6e 20 64 61 74 61 62 61 73 65 2c 20 69  main database, i
2670: 74 20 64 6f 65 73 20 6e 6f 74 20 72 65 71 75 69  t does not requi
2680: 72 65 20 61 20 0a 3c 69 3e 64 61 74 61 62 61 73  re a .<i>databas
2690: 65 2d 6e 61 6d 65 3c 2f 69 3e 20 70 72 65 66 69  e-name</i> prefi
26a0: 78 2e 20 20 57 68 65 6e 20 61 20 64 61 74 61 62  x.  When a datab
26b0: 61 73 65 20 69 73 20 61 74 74 61 63 68 65 64 2c  ase is attached,
26c0: 20 61 6c 6c 20 6f 66 20 69 74 73 20 0a 74 61 62   all of its .tab
26d0: 6c 65 73 20 77 68 69 63 68 20 64 6f 6e 27 74 20  les which don't 
26e0: 68 61 76 65 20 64 75 70 6c 69 63 61 74 65 20 6e  have duplicate n
26f0: 61 6d 65 73 20 62 65 63 6f 6d 65 20 74 68 65 20  ames become the 
2700: 64 65 66 61 75 6c 74 20 74 61 62 6c 65 0a 6f 66  default table.of
2710: 20 74 68 61 74 20 6e 61 6d 65 2e 20 20 41 6e 79   that name.  Any
2720: 20 74 61 62 6c 65 73 20 6f 66 20 74 68 61 74 20   tables of that 
2730: 6e 61 6d 65 20 61 74 74 61 63 68 65 64 20 61 66  name attached af
2740: 74 65 72 77 61 72 64 73 20 72 65 71 75 69 72 65  terwards require
2750: 20 74 68 65 0a 64 61 74 61 62 61 73 65 20 70 72   the.database pr
2760: 65 66 69 78 2e 20 49 66 20 74 68 65 20 64 65 66  efix. If the def
2770: 61 75 6c 74 20 74 61 62 6c 65 20 6f 66 20 61 20  ault table of a 
2780: 67 69 76 65 6e 20 6e 61 6d 65 20 69 73 20 64 65  given name is de
2790: 74 61 63 68 65 64 2c 20 74 68 65 6e 0a 74 68 65  tached, then.the
27a0: 20 6c 61 73 74 20 74 61 62 6c 65 20 6f 66 20 74   last table of t
27b0: 68 61 74 20 6e 61 6d 65 20 61 74 74 61 63 68 65  hat name attache
27c0: 64 20 62 65 63 6f 6d 65 73 20 74 68 65 20 6e 65  d becomes the ne
27d0: 77 20 64 65 66 61 75 6c 74 2e 3c 2f 70 3e 0a 0a  w default.</p>..
27e0: 3c 70 3e 0a 54 72 61 6e 73 61 63 74 69 6f 6e 73  <p>.Transactions
27f0: 20 69 6e 76 6f 6c 76 69 6e 67 20 6d 75 6c 74 69   involving multi
2800: 70 6c 65 20 61 74 74 61 63 68 65 64 20 64 61 74  ple attached dat
2810: 61 62 61 73 65 73 20 61 72 65 20 61 74 6f 6d 69  abases are atomi
2820: 63 2c 0a 61 73 73 75 6d 69 6e 67 20 74 68 61 74  c,.assuming that
2830: 20 74 68 65 20 6d 61 69 6e 20 64 61 74 61 62 61   the main databa
2840: 73 65 20 69 73 20 6e 6f 74 20 22 5b 3a 6d 65 6d  se is not "[:mem
2850: 6f 72 79 3a 5d 22 2e 20 20 49 66 20 74 68 65 20  ory:]".  If the 
2860: 6d 61 69 6e 0a 64 61 74 61 62 61 73 65 20 69 73  main.database is
2870: 20 22 3a 6d 65 6d 6f 72 79 3a 22 20 74 68 65 6e   ":memory:" then
2880: 20 0a 74 72 61 6e 73 61 63 74 69 6f 6e 73 20 63   .transactions c
2890: 6f 6e 74 69 6e 75 65 20 74 6f 20 62 65 20 61 74  ontinue to be at
28a0: 6f 6d 69 63 20 77 69 74 68 69 6e 20 65 61 63 68  omic within each
28b0: 20 69 6e 64 69 76 69 64 75 61 6c 0a 64 61 74 61   individual.data
28c0: 62 61 73 65 20 66 69 6c 65 2e 20 42 75 74 20 69  base file. But i
28d0: 66 20 74 68 65 20 68 6f 73 74 20 63 6f 6d 70 75  f the host compu
28e0: 74 65 72 20 63 72 61 73 68 65 73 20 69 6e 20 74  ter crashes in t
28f0: 68 65 20 6d 69 64 64 6c 65 0a 6f 66 20 61 20 5b  he middle.of a [
2900: 43 4f 4d 4d 49 54 5d 20 77 68 65 72 65 20 74 77  COMMIT] where tw
2910: 6f 20 6f 72 20 6d 6f 72 65 20 64 61 74 61 62 61  o or more databa
2920: 73 65 20 66 69 6c 65 73 20 61 72 65 20 75 70 64  se files are upd
2930: 61 74 65 64 2c 0a 73 6f 6d 65 20 6f 66 20 74 68  ated,.some of th
2940: 6f 73 65 20 66 69 6c 65 73 20 6d 69 67 68 74 20  ose files might 
2950: 67 65 74 20 74 68 65 20 63 68 61 6e 67 65 73 20  get the changes 
2960: 77 68 65 72 65 20 6f 74 68 65 72 73 0a 6d 69 67  where others.mig
2970: 68 74 20 6e 6f 74 2e 0a 3c 2f 70 3e 0a 0a 3c 70  ht not..</p>..<p
2980: 3e 54 68 65 72 65 20 69 73 20 61 20 63 6f 6d 70  >There is a comp
2990: 69 6c 65 2d 74 69 6d 65 20 6c 69 6d 69 74 20 6f  ile-time limit o
29a0: 66 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 41 54  f [SQLITE_MAX_AT
29b0: 54 41 43 48 45 44 5d 0a 61 74 74 61 63 68 65 64  TACHED].attached
29c0: 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 73 2e   database files.
29d0: 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23  </p>..<tcl>.####
29e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
29f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2a00: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2a10: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2a20: 23 23 23 23 23 23 23 23 23 23 23 0a 53 65 63 74  ###########.Sect
2a30: 69 6f 6e 20 7b 42 45 47 49 4e 20 54 52 41 4e 53  ion {BEGIN TRANS
2a40: 41 43 54 49 4f 4e 7d 20 74 72 61 6e 73 61 63 74  ACTION} transact
2a50: 69 6f 6e 20 7b 2a 42 45 47 49 4e 20 43 4f 4d 4d  ion {*BEGIN COMM
2a60: 49 54 20 52 4f 4c 4c 42 41 43 4b 7d 0a 0a 42 75  IT ROLLBACK}..Bu
2a70: 62 62 6c 65 44 69 61 67 72 61 6d 20 62 65 67 69  bbleDiagram begi
2a80: 6e 2d 73 74 6d 74 0a 42 75 62 62 6c 65 44 69 61  n-stmt.BubbleDia
2a90: 67 72 61 6d 20 63 6f 6d 6d 69 74 2d 73 74 6d 74  gram commit-stmt
2aa0: 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 72  .BubbleDiagram r
2ab0: 6f 6c 6c 62 61 63 6b 2d 73 74 6d 74 0a 3c 2f 74  ollback-stmt.</t
2ac0: 63 6c 3e 0a 0a 3c 70 3e 0a 4e 6f 20 63 68 61 6e  cl>..<p>.No chan
2ad0: 67 65 73 20 63 61 6e 20 62 65 20 6d 61 64 65 20  ges can be made 
2ae0: 74 6f 20 74 68 65 20 64 61 74 61 62 61 73 65 20  to the database 
2af0: 65 78 63 65 70 74 20 77 69 74 68 69 6e 20 61 20  except within a 
2b00: 74 72 61 6e 73 61 63 74 69 6f 6e 2e 0a 41 6e 79  transaction..Any
2b10: 20 63 6f 6d 6d 61 6e 64 20 74 68 61 74 20 63 68   command that ch
2b20: 61 6e 67 65 73 20 74 68 65 20 64 61 74 61 62 61  anges the databa
2b30: 73 65 20 28 62 61 73 69 63 61 6c 6c 79 2c 20 61  se (basically, a
2b40: 6e 79 20 53 51 4c 20 63 6f 6d 6d 61 6e 64 0a 6f  ny SQL command.o
2b50: 74 68 65 72 20 74 68 61 6e 20 5b 53 45 4c 45 43  ther than [SELEC
2b60: 54 5d 29 20 77 69 6c 6c 20 61 75 74 6f 6d 61 74  T]) will automat
2b70: 69 63 61 6c 6c 79 20 73 74 61 72 74 20 61 20 74  ically start a t
2b80: 72 61 6e 73 61 63 74 69 6f 6e 20 69 66 0a 6f 6e  ransaction if.on
2b90: 65 20 69 73 20 6e 6f 74 20 61 6c 72 65 61 64 79  e is not already
2ba0: 20 69 6e 20 65 66 66 65 63 74 2e 20 20 41 75 74   in effect.  Aut
2bb0: 6f 6d 61 74 69 63 61 6c 6c 79 20 73 74 61 72 74  omatically start
2bc0: 65 64 20 74 72 61 6e 73 61 63 74 69 6f 6e 73 0a  ed transactions.
2bd0: 61 72 65 20 63 6f 6d 6d 69 74 74 65 64 20 77 68  are committed wh
2be0: 65 6e 20 74 68 65 20 6c 61 73 74 20 71 75 65 72  en the last quer
2bf0: 79 20 66 69 6e 69 73 68 65 73 2e 0a 3c 2f 70 3e  y finishes..</p>
2c00: 0a 0a 3c 70 3e 0a 54 72 61 6e 73 61 63 74 69 6f  ..<p>.Transactio
2c10: 6e 73 20 63 61 6e 20 62 65 20 73 74 61 72 74 65  ns can be starte
2c20: 64 20 6d 61 6e 75 61 6c 6c 79 20 75 73 69 6e 67  d manually using
2c30: 20 74 68 65 20 42 45 47 49 4e 0a 63 6f 6d 6d 61   the BEGIN.comma
2c40: 6e 64 2e 20 20 53 75 63 68 20 74 72 61 6e 73 61  nd.  Such transa
2c50: 63 74 69 6f 6e 73 20 75 73 75 61 6c 6c 79 20 70  ctions usually p
2c60: 65 72 73 69 73 74 20 75 6e 74 69 6c 20 74 68 65  ersist until the
2c70: 20 6e 65 78 74 0a 43 4f 4d 4d 49 54 20 6f 72 20   next.COMMIT or 
2c80: 52 4f 4c 4c 42 41 43 4b 20 63 6f 6d 6d 61 6e 64  ROLLBACK command
2c90: 2e 20 20 42 75 74 20 61 20 74 72 61 6e 73 61 63  .  But a transac
2ca0: 74 69 6f 6e 20 77 69 6c 6c 20 61 6c 73 6f 20 0a  tion will also .
2cb0: 52 4f 4c 4c 42 41 43 4b 20 69 66 20 74 68 65 20  ROLLBACK if the 
2cc0: 64 61 74 61 62 61 73 65 20 69 73 20 63 6c 6f 73  database is clos
2cd0: 65 64 20 6f 72 20 69 66 20 61 6e 20 65 72 72 6f  ed or if an erro
2ce0: 72 20 6f 63 63 75 72 73 0a 61 6e 64 20 74 68 65  r occurs.and the
2cf0: 20 52 4f 4c 4c 42 41 43 4b 20 63 6f 6e 66 6c 69   ROLLBACK confli
2d00: 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c  ct resolution al
2d10: 67 6f 72 69 74 68 6d 20 69 73 20 73 70 65 63 69  gorithm is speci
2d20: 66 69 65 64 2e 0a 53 65 65 20 74 68 65 20 64 6f  fied..See the do
2d30: 63 75 6d 65 6e 74 61 74 69 6f 6e 20 6f 6e 20 74  cumentation on t
2d40: 68 65 20 5b 4f 4e 20 43 4f 4e 46 4c 49 43 54 5d  he [ON CONFLICT]
2d50: 0a 63 6c 61 75 73 65 20 66 6f 72 20 61 64 64 69  .clause for addi
2d60: 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69  tional informati
2d70: 6f 6e 20 61 62 6f 75 74 20 74 68 65 20 52 4f 4c  on about the ROL
2d80: 4c 42 41 43 4b 0a 63 6f 6e 66 6c 69 63 74 20 72  LBACK.conflict r
2d90: 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69  esolution algori
2da0: 74 68 6d 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 45  thm..</p>..<p>.E
2db0: 4e 44 20 54 52 41 4e 53 41 43 54 49 4f 4e 20 69  ND TRANSACTION i
2dc0: 73 20 61 6e 20 61 6c 69 61 73 20 66 6f 72 20 43  s an alias for C
2dd0: 4f 4d 4d 49 54 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e  OMMIT..</p>..<p>
2de0: 54 72 61 6e 73 61 63 74 69 6f 6e 73 20 63 72 65  Transactions cre
2df0: 61 74 65 64 20 75 73 69 6e 67 20 42 45 47 49 4e  ated using BEGIN
2e00: 2e 2e 2e 43 4f 4d 4d 49 54 20 64 6f 20 6e 6f 74  ...COMMIT do not
2e10: 20 6e 65 73 74 2e 0a 46 6f 72 20 6e 65 73 74 65   nest..For neste
2e20: 64 20 74 72 61 6e 73 61 63 74 69 6f 6e 73 2c 20  d transactions, 
2e30: 75 73 65 20 74 68 65 20 5b 53 41 56 45 50 4f 49  use the [SAVEPOI
2e40: 4e 54 5d 20 61 6e 64 20 5b 52 45 4c 45 41 53 45  NT] and [RELEASE
2e50: 5d 20 63 6f 6d 6d 61 6e 64 73 2e 0a 54 68 65 20  ] commands..The 
2e60: 22 54 4f 20 53 41 56 45 50 4f 49 4e 54 20 3c 69  "TO SAVEPOINT <i
2e70: 3e 6e 61 6d 65 3c 2f 69 3e 22 20 63 6c 61 75 73  >name</i>" claus
2e80: 65 20 6f 66 20 74 68 65 20 52 4f 4c 4c 42 41 43  e of the ROLLBAC
2e90: 4b 20 63 6f 6d 6d 61 6e 64 20 73 68 6f 77 6e 0a  K command shown.
2ea0: 69 6e 20 74 68 65 20 73 79 6e 74 61 78 20 64 69  in the syntax di
2eb0: 61 67 72 61 6d 20 61 62 6f 76 65 20 69 73 20 6f  agram above is o
2ec0: 6e 6c 79 20 61 70 70 6c 69 63 61 62 6c 65 20 74  nly applicable t
2ed0: 6f 20 5b 53 41 56 45 50 4f 49 4e 54 5d 0a 74 72  o [SAVEPOINT].tr
2ee0: 61 6e 73 61 63 74 69 6f 6e 73 2e 20 20 41 6e 20  ansactions.  An 
2ef0: 61 74 74 65 6d 70 74 20 74 6f 20 69 6e 76 6f 6b  attempt to invok
2f00: 65 20 74 68 65 20 42 45 47 49 4e 20 63 6f 6d 6d  e the BEGIN comm
2f10: 61 6e 64 20 77 69 74 68 69 6e 0a 61 20 74 72 61  and within.a tra
2f20: 6e 73 61 63 74 69 6f 6e 20 77 69 6c 6c 20 66 61  nsaction will fa
2f30: 69 6c 20 77 69 74 68 20 61 6e 20 65 72 72 6f 72  il with an error
2f40: 2c 20 72 65 67 61 72 64 6c 65 73 73 20 6f 66 20  , regardless of 
2f50: 77 68 65 74 68 65 72 0a 74 68 65 20 74 72 61 6e  whether.the tran
2f60: 73 61 63 74 69 6f 6e 20 77 61 73 20 73 74 61 72  saction was star
2f70: 74 65 64 20 62 79 20 5b 53 41 56 45 50 4f 49 4e  ted by [SAVEPOIN
2f80: 54 5d 20 6f 72 20 61 20 70 72 69 6f 72 20 42 45  T] or a prior BE
2f90: 47 49 4e 2e 0a 54 68 65 20 43 4f 4d 4d 49 54 20  GIN..The COMMIT 
2fa0: 63 6f 6d 6d 61 6e 64 20 61 6e 64 20 74 68 65 20  command and the 
2fb0: 52 4f 4c 4c 42 41 43 4b 20 63 6f 6d 6d 61 6e 64  ROLLBACK command
2fc0: 20 77 69 74 68 6f 75 74 20 74 68 65 20 54 4f 20   without the TO 
2fd0: 63 6c 61 75 73 65 0a 77 6f 72 6b 20 74 68 65 20  clause.work the 
2fe0: 73 61 6d 65 20 6f 6e 20 5b 53 41 56 45 50 4f 49  same on [SAVEPOI
2ff0: 4e 54 5d 20 74 72 61 6e 73 61 63 74 69 6f 6e 73  NT] transactions
3000: 20 61 73 20 74 68 65 79 20 64 6f 20 77 69 74 68   as they do with
3010: 20 74 72 61 6e 73 61 63 74 69 6f 6e 73 0a 73 74   transactions.st
3020: 61 72 74 65 64 20 62 79 20 42 45 47 49 4e 2e 3c  arted by BEGIN.<
3030: 2f 70 3e 0a 0a 3c 70 3e 0a 54 72 61 6e 73 61 63  /p>..<p>.Transac
3040: 74 69 6f 6e 73 20 63 61 6e 20 62 65 20 64 65 66  tions can be def
3050: 65 72 72 65 64 2c 20 69 6d 6d 65 64 69 61 74 65  erred, immediate
3060: 2c 20 6f 72 20 65 78 63 6c 75 73 69 76 65 2e 20  , or exclusive. 
3070: 20 0a 54 68 65 20 64 65 66 61 75 6c 74 20 74 72   .The default tr
3080: 61 6e 73 61 63 74 69 6f 6e 20 62 65 68 61 76 69  ansaction behavi
3090: 6f 72 20 69 73 20 64 65 66 65 72 72 65 64 2e 0a  or is deferred..
30a0: 44 65 66 65 72 72 65 64 20 6d 65 61 6e 73 20 74  Deferred means t
30b0: 68 61 74 20 6e 6f 20 6c 6f 63 6b 73 20 61 72 65  hat no locks are
30c0: 20 61 63 71 75 69 72 65 64 0a 6f 6e 20 74 68 65   acquired.on the
30d0: 20 64 61 74 61 62 61 73 65 20 75 6e 74 69 6c 20   database until 
30e0: 74 68 65 20 64 61 74 61 62 61 73 65 20 69 73 20  the database is 
30f0: 66 69 72 73 74 20 61 63 63 65 73 73 65 64 2e 20  first accessed. 
3100: 20 54 68 75 73 20 77 69 74 68 20 61 0a 64 65 66   Thus with a.def
3110: 65 72 72 65 64 20 74 72 61 6e 73 61 63 74 69 6f  erred transactio
3120: 6e 2c 20 74 68 65 20 42 45 47 49 4e 20 73 74 61  n, the BEGIN sta
3130: 74 65 6d 65 6e 74 20 69 74 73 65 6c 66 20 64 6f  tement itself do
3140: 65 73 20 6e 6f 74 68 69 6e 67 2e 20 20 4c 6f 63  es nothing.  Loc
3150: 6b 73 0a 61 72 65 20 6e 6f 74 20 61 63 71 75 69  ks.are not acqui
3160: 72 65 64 20 75 6e 74 69 6c 20 74 68 65 20 66 69  red until the fi
3170: 72 73 74 20 72 65 61 64 20 6f 72 20 77 72 69 74  rst read or writ
3180: 65 20 6f 70 65 72 61 74 69 6f 6e 2e 20 20 54 68  e operation.  Th
3190: 65 20 66 69 72 73 74 20 72 65 61 64 0a 6f 70 65  e first read.ope
31a0: 72 61 74 69 6f 6e 20 61 67 61 69 6e 73 74 20 61  ration against a
31b0: 20 64 61 74 61 62 61 73 65 20 63 72 65 61 74 65   database create
31c0: 73 20 61 20 5b 53 48 41 52 45 44 5d 20 6c 6f 63  s a [SHARED] loc
31d0: 6b 20 61 6e 64 20 74 68 65 20 66 69 72 73 74 0a  k and the first.
31e0: 77 72 69 74 65 20 6f 70 65 72 61 74 69 6f 6e 20  write operation 
31f0: 63 72 65 61 74 65 73 20 61 20 5b 52 45 53 45 52  creates a [RESER
3200: 56 45 44 5d 20 6c 6f 63 6b 2e 20 20 20 42 65 63  VED] lock.   Bec
3210: 61 75 73 65 20 74 68 65 20 61 63 71 75 69 73 69  ause the acquisi
3220: 74 69 6f 6e 20 6f 66 0a 6c 6f 63 6b 73 20 69 73  tion of.locks is
3230: 20 64 65 66 65 72 72 65 64 20 75 6e 74 69 6c 20   deferred until 
3240: 74 68 65 79 20 61 72 65 20 6e 65 65 64 65 64 2c  they are needed,
3250: 20 69 74 20 69 73 20 70 6f 73 73 69 62 6c 65 20   it is possible 
3260: 74 68 61 74 20 61 6e 6f 74 68 65 72 0a 74 68 72  that another.thr
3270: 65 61 64 20 6f 72 20 70 72 6f 63 65 73 73 20 63  ead or process c
3280: 6f 75 6c 64 20 63 72 65 61 74 65 20 61 20 73 65  ould create a se
3290: 70 61 72 61 74 65 20 74 72 61 6e 73 61 63 74 69  parate transacti
32a0: 6f 6e 20 61 6e 64 20 77 72 69 74 65 20 74 6f 0a  on and write to.
32b0: 74 68 65 20 64 61 74 61 62 61 73 65 20 61 66 74  the database aft
32c0: 65 72 20 74 68 65 20 42 45 47 49 4e 20 6f 6e 20  er the BEGIN on 
32d0: 74 68 65 20 63 75 72 72 65 6e 74 20 74 68 72 65  the current thre
32e0: 61 64 20 68 61 73 20 65 78 65 63 75 74 65 64 2e  ad has executed.
32f0: 0a 49 66 20 74 68 65 20 74 72 61 6e 73 61 63 74  .If the transact
3300: 69 6f 6e 20 69 73 20 69 6d 6d 65 64 69 61 74 65  ion is immediate
3310: 2c 20 74 68 65 6e 20 5b 52 45 53 45 52 56 45 44  , then [RESERVED
3320: 5d 20 6c 6f 63 6b 73 0a 61 72 65 20 61 63 71 75  ] locks.are acqu
3330: 69 72 65 64 20 6f 6e 20 61 6c 6c 20 64 61 74 61  ired on all data
3340: 62 61 73 65 73 20 61 73 20 73 6f 6f 6e 20 61 73  bases as soon as
3350: 20 74 68 65 20 42 45 47 49 4e 20 63 6f 6d 6d 61   the BEGIN comma
3360: 6e 64 20 69 73 0a 65 78 65 63 75 74 65 64 2c 20  nd is.executed, 
3370: 77 69 74 68 6f 75 74 20 77 61 69 74 69 6e 67 20  without waiting 
3380: 66 6f 72 20 74 68 65 0a 64 61 74 61 62 61 73 65  for the.database
3390: 20 74 6f 20 62 65 20 75 73 65 64 2e 20 20 41 66   to be used.  Af
33a0: 74 65 72 20 61 20 42 45 47 49 4e 20 49 4d 4d 45  ter a BEGIN IMME
33b0: 44 49 41 54 45 2c 20 79 6f 75 20 61 72 65 20 67  DIATE, you are g
33c0: 75 61 72 61 6e 74 65 65 64 20 74 68 61 74 0a 6e  uaranteed that.n
33d0: 6f 20 6f 74 68 65 72 20 74 68 72 65 61 64 20 6f  o other thread o
33e0: 72 20 70 72 6f 63 65 73 73 20 77 69 6c 6c 20 62  r process will b
33f0: 65 20 61 62 6c 65 20 74 6f 20 77 72 69 74 65 20  e able to write 
3400: 74 6f 20 74 68 65 20 64 61 74 61 62 61 73 65 20  to the database 
3410: 6f 72 0a 64 6f 20 61 20 42 45 47 49 4e 20 49 4d  or.do a BEGIN IM
3420: 4d 45 44 49 41 54 45 20 6f 72 20 42 45 47 49 4e  MEDIATE or BEGIN
3430: 20 45 58 43 4c 55 53 49 56 45 2e 20 20 4f 74 68   EXCLUSIVE.  Oth
3440: 65 72 20 70 72 6f 63 65 73 73 65 73 20 63 61 6e  er processes can
3450: 20 63 6f 6e 74 69 6e 75 65 0a 74 6f 20 72 65 61   continue.to rea
3460: 64 20 66 72 6f 6d 20 74 68 65 20 64 61 74 61 62  d from the datab
3470: 61 73 65 2c 20 68 6f 77 65 76 65 72 2e 20 20 41  ase, however.  A
3480: 6e 20 65 78 63 6c 75 73 69 76 65 20 74 72 61 6e  n exclusive tran
3490: 73 61 63 74 69 6f 6e 20 63 61 75 73 65 73 0a 5b  saction causes.[
34a0: 45 58 43 4c 55 53 49 56 45 5d 20 6c 6f 63 6b 73  EXCLUSIVE] locks
34b0: 20 74 6f 20 62 65 20 61 63 71 75 69 72 65 64 20   to be acquired 
34c0: 6f 6e 20 61 6c 6c 20 64 61 74 61 62 61 73 65 73  on all databases
34d0: 2e 20 20 41 66 74 65 72 20 61 20 42 45 47 49 4e  .  After a BEGIN
34e0: 0a 45 58 43 4c 55 53 49 56 45 2c 20 79 6f 75 20  .EXCLUSIVE, you 
34f0: 61 72 65 20 67 75 61 72 61 6e 74 65 65 64 20 74  are guaranteed t
3500: 68 61 74 20 6e 6f 20 6f 74 68 65 72 20 74 68 72  hat no other thr
3510: 65 61 64 20 6f 72 20 70 72 6f 63 65 73 73 20 77  ead or process w
3520: 69 6c 6c 0a 62 65 20 61 62 6c 65 20 74 6f 20 72  ill.be able to r
3530: 65 61 64 20 6f 72 20 77 72 69 74 65 20 74 68 65  ead or write the
3540: 20 64 61 74 61 62 61 73 65 20 75 6e 74 69 6c 20   database until 
3550: 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  the transaction 
3560: 69 73 0a 63 6f 6d 70 6c 65 74 65 2e 0a 3c 2f 70  is.complete..</p
3570: 3e 0a 0a 3c 70 3e 0a 41 6e 20 69 6d 70 6c 69 63  >..<p>.An implic
3580: 69 74 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 28  it transaction (
3590: 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 74 68  a transaction th
35a0: 61 74 20 69 73 20 73 74 61 72 74 65 64 20 61 75  at is started au
35b0: 74 6f 6d 61 74 69 63 61 6c 6c 79 2c 0a 6e 6f 74  tomatically,.not
35c0: 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 73   a transaction s
35d0: 74 61 72 74 65 64 20 62 79 20 42 45 47 49 4e 29  tarted by BEGIN)
35e0: 20 69 73 20 63 6f 6d 6d 69 74 74 65 64 20 61 75   is committed au
35f0: 74 6f 6d 61 74 69 63 61 6c 6c 79 20 77 68 65 6e  tomatically when
3600: 0a 74 68 65 20 6c 61 73 74 20 61 63 74 69 76 65  .the last active
3610: 20 73 74 61 74 65 6d 65 6e 74 20 66 69 6e 69 73   statement finis
3620: 68 65 73 2e 20 20 41 20 73 74 61 74 65 6d 65 6e  hes.  A statemen
3630: 74 20 66 69 6e 69 73 68 65 73 20 77 68 65 6e 20  t finishes when 
3640: 69 74 73 0a 70 72 65 70 61 72 65 64 20 73 74 61  its.prepared sta
3650: 74 65 6d 65 6e 74 20 69 73 20 5b 73 71 6c 69 74  tement is [sqlit
3660: 65 33 5f 72 65 73 65 74 28 29 20 7c 20 72 65 73  e3_reset() | res
3670: 65 74 5d 20 6f 72 0a 5b 73 71 6c 69 74 65 33 5f  et] or.[sqlite3_
3680: 66 69 6e 61 6c 69 7a 65 28 29 20 7c 20 66 69 6e  finalize() | fin
3690: 61 6c 69 7a 65 64 5d 2e 20 20 41 6e 20 6f 70 65  alized].  An ope
36a0: 6e 20 5b 73 71 6c 69 74 65 33 5f 62 6c 6f 62 5d  n [sqlite3_blob]
36b0: 20 75 73 65 64 20 66 6f 72 0a 69 6e 63 72 65 6d   used for.increm
36c0: 65 6e 74 61 6c 20 42 4c 4f 42 20 49 2f 4f 20 63  ental BLOB I/O c
36d0: 6f 75 6e 74 73 20 61 73 20 61 6e 20 75 6e 66 69  ounts as an unfi
36e0: 6e 69 73 68 65 64 20 73 74 61 74 65 6d 65 6e 74  nished statement
36f0: 2e 20 20 54 68 65 20 5b 73 71 6c 69 74 65 33 5f  .  The [sqlite3_
3700: 62 6c 6f 62 5d 0a 66 69 6e 69 73 68 65 73 20 77  blob].finishes w
3710: 68 65 6e 20 69 74 20 69 73 20 5b 73 71 6c 69 74  hen it is [sqlit
3720: 65 33 5f 62 6c 6f 62 5f 63 6c 6f 73 65 28 29 20  e3_blob_close() 
3730: 7c 20 63 6c 6f 73 65 64 5d 2e 0a 3c 2f 70 3e 0a  | closed]..</p>.
3740: 0a 3c 70 3e 0a 54 68 65 20 65 78 70 6c 69 63 69  .<p>.The explici
3750: 74 20 43 4f 4d 4d 49 54 20 63 6f 6d 6d 61 6e 64  t COMMIT command
3760: 20 72 75 6e 73 20 69 6d 6d 65 64 69 61 74 65 6c   runs immediatel
3770: 79 2c 20 65 76 65 6e 20 69 66 20 74 68 65 72 65  y, even if there
3780: 20 61 72 65 0a 70 65 6e 64 69 6e 67 20 5b 53 45   are.pending [SE
3790: 4c 45 43 54 5d 20 73 74 61 74 65 6d 65 6e 74 73  LECT] statements
37a0: 2e 20 20 48 6f 77 65 76 65 72 2c 20 69 66 20 74  .  However, if t
37b0: 68 65 72 65 20 61 72 65 20 70 65 6e 64 69 6e 67  here are pending
37c0: 0a 77 72 69 74 65 20 6f 70 65 72 61 74 69 6f 6e  .write operation
37d0: 73 2c 20 74 68 65 20 43 4f 4d 4d 49 54 20 63 6f  s, the COMMIT co
37e0: 6d 6d 61 6e 64 0a 77 69 6c 6c 20 66 61 69 6c 20  mmand.will fail 
37f0: 77 69 74 68 20 61 20 65 72 72 6f 72 20 63 6f 64  with a error cod
3800: 65 20 5b 53 51 4c 49 54 45 5f 42 55 53 59 5d 2e  e [SQLITE_BUSY].
3810: 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 41 6e 20 61 74  .</p>..<p>.An at
3820: 74 65 6d 70 74 20 74 6f 20 65 78 65 63 75 74 65  tempt to execute
3830: 20 43 4f 4d 4d 49 54 20 6d 69 67 68 74 20 61 6c   COMMIT might al
3840: 73 6f 20 72 65 73 75 6c 74 20 69 6e 20 61 6e 20  so result in an 
3850: 5b 53 51 4c 49 54 45 5f 42 55 53 59 5d 20 72 65  [SQLITE_BUSY] re
3860: 74 75 72 6e 20 63 6f 64 65 0a 69 66 20 61 6e 20  turn code.if an 
3870: 61 6e 6f 74 68 65 72 20 74 68 72 65 61 64 20 6f  another thread o
3880: 72 20 70 72 6f 63 65 73 73 20 68 61 73 20 61 20  r process has a 
3890: 5b 73 68 61 72 65 64 20 6c 6f 63 6b 5d 20 6f 6e  [shared lock] on
38a0: 20 74 68 65 20 64 61 74 61 62 61 73 65 0a 74 68   the database.th
38b0: 61 74 20 70 72 65 76 65 6e 74 65 64 20 74 68 65  at prevented the
38c0: 20 64 61 74 61 62 61 73 65 20 66 72 6f 6d 20 62   database from b
38d0: 65 69 6e 67 20 75 70 64 61 74 65 64 2e 20 20 57  eing updated.  W
38e0: 68 65 6e 20 43 4f 4d 4d 49 54 20 66 61 69 6c 73  hen COMMIT fails
38f0: 20 69 6e 20 74 68 69 73 0a 77 61 79 2c 20 74 68   in this.way, th
3900: 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 72 65  e transaction re
3910: 6d 61 69 6e 73 20 61 63 74 69 76 65 20 61 6e 64  mains active and
3920: 20 74 68 65 20 43 4f 4d 4d 49 54 20 63 61 6e 20   the COMMIT can 
3930: 62 65 20 72 65 74 72 69 65 64 20 6c 61 74 65 72  be retried later
3940: 0a 61 66 74 65 72 20 74 68 65 20 72 65 61 64 65  .after the reade
3950: 72 20 68 61 73 20 68 61 64 20 61 20 63 68 61 6e  r has had a chan
3960: 63 65 20 74 6f 20 63 6c 65 61 72 2e 0a 3c 2f 70  ce to clear..</p
3970: 3e 0a 0a 3c 70 3e 0a 54 68 65 20 52 4f 4c 4c 42  >..<p>.The ROLLB
3980: 41 43 4b 20 77 69 6c 6c 20 66 61 69 6c 20 77 69  ACK will fail wi
3990: 74 68 20 61 6e 20 65 72 72 6f 72 20 63 6f 64 65  th an error code
39a0: 20 5b 53 51 4c 49 54 45 5f 42 55 53 59 5d 20 69   [SQLITE_BUSY] i
39b0: 66 20 74 68 65 72 65 0a 61 72 65 20 61 6e 79 20  f there.are any 
39c0: 70 65 6e 64 69 6e 67 20 71 75 65 72 69 65 73 2e  pending queries.
39d0: 20 20 42 6f 74 68 20 72 65 61 64 2d 6f 6e 6c 79    Both read-only
39e0: 20 61 6e 64 20 72 65 61 64 2f 77 72 69 74 65 20   and read/write 
39f0: 71 75 65 72 69 65 73 20 77 69 6c 6c 0a 63 61 75  queries will.cau
3a00: 73 65 20 61 20 52 4f 4c 4c 42 41 43 4b 20 74 6f  se a ROLLBACK to
3a10: 20 66 61 69 6c 2e 20 20 41 20 52 4f 4c 4c 42 41   fail.  A ROLLBA
3a20: 43 4b 20 6d 75 73 74 20 66 61 69 6c 20 69 66 20  CK must fail if 
3a30: 74 68 65 72 65 20 61 72 65 20 70 65 6e 64 69 6e  there are pendin
3a40: 67 0a 72 65 61 64 20 6f 70 65 72 61 74 69 6f 6e  g.read operation
3a50: 73 20 28 75 6e 6c 69 6b 65 20 43 4f 4d 4d 49 54  s (unlike COMMIT
3a60: 20 77 68 69 63 68 20 63 61 6e 20 73 75 63 63 65   which can succe
3a70: 65 64 29 20 62 65 63 61 75 73 65 20 62 61 64 20  ed) because bad 
3a80: 74 68 69 6e 67 73 0a 77 69 6c 6c 20 68 61 70 70  things.will happ
3a90: 65 6e 20 69 66 20 74 68 65 20 69 6e 2d 6d 65 6d  en if the in-mem
3aa0: 6f 72 79 20 69 6d 61 67 65 20 6f 66 20 74 68 65  ory image of the
3ab0: 20 64 61 74 61 62 61 73 65 20 69 73 20 63 68 61   database is cha
3ac0: 6e 67 65 64 20 6f 75 74 20 66 72 6f 6d 20 75 6e  nged out from un
3ad0: 64 65 72 0a 61 6e 20 61 63 74 69 76 65 20 71 75  der.an active qu
3ae0: 65 72 79 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 49  ery..</p>..<p>.I
3af0: 66 20 5b 50 52 41 47 4d 41 20 6a 6f 75 72 6e 61  f [PRAGMA journa
3b00: 6c 5f 6d 6f 64 65 5d 20 69 73 20 73 65 74 20 74  l_mode] is set t
3b10: 6f 20 4f 46 46 20 28 74 68 75 73 20 64 69 73 61  o OFF (thus disa
3b20: 62 6c 69 6e 67 20 74 68 65 20 72 6f 6c 6c 62 61  bling the rollba
3b30: 63 6b 20 6a 6f 75 72 6e 61 6c 0a 66 69 6c 65 29  ck journal.file)
3b40: 20 74 68 65 6e 20 74 68 65 20 62 65 68 61 76 69   then the behavi
3b50: 6f 72 20 6f 66 20 74 68 65 20 52 4f 4c 4c 42 41  or of the ROLLBA
3b60: 43 4b 20 63 6f 6d 6d 61 6e 64 20 69 73 20 75 6e  CK command is un
3b70: 64 65 66 69 6e 65 64 2e 0a 3c 2f 70 3e 0a 0a 3c  defined..</p>..<
3b80: 68 33 3e 52 65 73 70 6f 6e 73 65 20 54 6f 20 45  h3>Response To E
3b90: 72 72 6f 72 73 20 57 69 74 68 69 6e 20 41 20 54  rrors Within A T
3ba0: 72 61 6e 73 61 63 74 69 6f 6e 3c 2f 68 33 3e 0a  ransaction</h3>.
3bb0: 0a 3c 70 3e 49 66 20 63 65 72 74 61 69 6e 20 6b  .<p>If certain k
3bc0: 69 6e 64 73 20 6f 66 20 65 72 72 6f 72 73 20 6f  inds of errors o
3bd0: 63 63 75 72 20 77 69 74 68 69 6e 20 61 20 74 72  ccur within a tr
3be0: 61 6e 73 61 63 74 69 6f 6e 2c 20 74 68 65 0a 74  ansaction, the.t
3bf0: 72 61 6e 73 61 63 74 69 6f 6e 20 6d 61 79 20 6f  ransaction may o
3c00: 72 20 6d 61 79 20 6e 6f 74 20 62 65 20 72 6f 6c  r may not be rol
3c10: 6c 65 64 20 62 61 63 6b 20 61 75 74 6f 6d 61 74  led back automat
3c20: 69 63 61 6c 6c 79 2e 20 20 54 68 65 0a 65 72 72  ically.  The.err
3c30: 6f 72 73 20 74 68 61 74 20 63 61 75 73 65 20 74  ors that cause t
3c40: 68 65 20 62 65 68 61 76 69 6f 72 20 69 6e 63 6c  he behavior incl
3c50: 75 64 65 3a 3c 2f 70 3e 0a 0a 3c 75 6c 3e 0a 3c  ude:</p>..<ul>.<
3c60: 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 46 55 4c 4c  li> [SQLITE_FULL
3c70: 5d 3a 20 64 61 74 61 62 61 73 65 20 6f 72 20 64  ]: database or d
3c80: 69 73 6b 20 66 75 6c 6c 0a 3c 6c 69 3e 20 5b 53  isk full.<li> [S
3c90: 51 4c 49 54 45 5f 49 4f 45 52 52 5d 3a 20 64 69  QLITE_IOERR]: di
3ca0: 73 6b 20 49 2f 4f 20 65 72 72 6f 72 0a 3c 6c 69  sk I/O error.<li
3cb0: 3e 20 5b 53 51 4c 49 54 45 5f 42 55 53 59 5d 3a  > [SQLITE_BUSY]:
3cc0: 20 64 61 74 61 62 61 73 65 20 69 6e 20 75 73 65   database in use
3cd0: 20 62 79 20 61 6e 6f 74 68 65 72 20 70 72 6f 63   by another proc
3ce0: 65 73 73 0a 3c 6c 69 3e 20 5b 53 51 4c 49 54 45  ess.<li> [SQLITE
3cf0: 5f 4e 4f 4d 45 4d 5d 3a 20 6f 75 74 20 6f 72 20  _NOMEM]: out or 
3d00: 6d 65 6d 6f 72 79 0a 3c 6c 69 3e 20 5b 53 51 4c  memory.<li> [SQL
3d10: 49 54 45 5f 49 4e 54 45 52 52 55 50 54 5d 3a 20  ITE_INTERRUPT]: 
3d20: 70 72 6f 63 65 73 73 69 6e 67 20 5b 73 71 6c 69  processing [sqli
3d30: 74 65 33 5f 69 6e 74 65 72 72 75 70 74 7c 69 6e  te3_interrupt|in
3d40: 74 65 72 72 75 70 74 65 64 5d 0a 20 20 20 20 20  terrupted].     
3d50: 62 79 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 72  by application r
3d60: 65 71 75 65 73 74 0a 3c 2f 75 6c 3e 0a 0a 3c 70  equest.</ul>..<p
3d70: 3e 0a 46 6f 72 20 61 6c 6c 20 6f 66 20 74 68 65  >.For all of the
3d80: 73 65 20 65 72 72 6f 72 73 2c 20 53 51 4c 69 74  se errors, SQLit
3d90: 65 20 61 74 74 65 6d 70 74 73 20 74 6f 20 75 6e  e attempts to un
3da0: 64 6f 20 6a 75 73 74 20 74 68 65 20 6f 6e 65 20  do just the one 
3db0: 73 74 61 74 65 6d 65 6e 74 0a 69 74 20 77 61 73  statement.it was
3dc0: 20 77 6f 72 6b 69 6e 67 20 6f 6e 20 61 6e 64 20   working on and 
3dd0: 6c 65 61 76 65 20 63 68 61 6e 67 65 73 20 66 72  leave changes fr
3de0: 6f 6d 20 70 72 69 6f 72 20 73 74 61 74 65 6d 65  om prior stateme
3df0: 6e 74 73 20 77 69 74 68 69 6e 20 74 68 65 0a 73  nts within the.s
3e00: 61 6d 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  ame transaction 
3e10: 69 6e 74 61 63 74 20 61 6e 64 20 63 6f 6e 74 69  intact and conti
3e20: 6e 75 65 20 77 69 74 68 20 74 68 65 20 74 72 61  nue with the tra
3e30: 6e 73 61 63 74 69 6f 6e 2e 20 20 48 6f 77 65 76  nsaction.  Howev
3e40: 65 72 2c 20 0a 64 65 70 65 6e 64 69 6e 67 20 6f  er, .depending o
3e50: 6e 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74 20  n the statement 
3e60: 62 65 69 6e 67 20 65 76 61 6c 75 61 74 65 64 20  being evaluated 
3e70: 61 6e 64 20 74 68 65 20 70 6f 69 6e 74 20 61 74  and the point at
3e80: 20 77 68 69 63 68 20 74 68 65 0a 65 72 72 6f 72   which the.error
3e90: 20 6f 63 63 75 72 73 2c 20 69 74 20 6d 69 67 68   occurs, it migh
3ea0: 74 20 62 65 20 6e 65 63 65 73 73 61 72 79 20 66  t be necessary f
3eb0: 6f 72 20 53 51 4c 69 74 65 20 74 6f 20 72 6f 6c  or SQLite to rol
3ec0: 6c 62 61 63 6b 20 61 6e 64 0a 63 61 6e 63 65 6c  lback and.cancel
3ed0: 20 74 68 65 20 65 6e 74 69 72 65 20 74 72 61 6e   the entire tran
3ee0: 73 61 63 74 69 6f 6e 2e 20 20 41 6e 20 61 70 70  saction.  An app
3ef0: 6c 69 63 61 74 69 6f 6e 20 63 61 6e 20 74 65 6c  lication can tel
3f00: 6c 20 77 68 69 63 68 0a 63 6f 75 72 73 65 20 6f  l which.course o
3f10: 66 20 61 63 74 69 6f 6e 20 53 51 4c 69 74 65 20  f action SQLite 
3f20: 74 6f 6f 6b 20 62 79 20 75 73 69 6e 67 20 74 68  took by using th
3f30: 65 0a 5b 73 71 6c 69 74 65 33 5f 67 65 74 5f 61  e.[sqlite3_get_a
3f40: 75 74 6f 63 6f 6d 6d 69 74 28 29 5d 20 43 2d 6c  utocommit()] C-l
3f50: 61 6e 67 75 61 67 65 20 69 6e 74 65 72 66 61 63  anguage interfac
3f60: 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 74 20 69 73  e.</p>..<p>It is
3f70: 20 72 65 63 6f 6d 6d 65 6e 64 65 64 20 74 68 61   recommended tha
3f80: 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 72  t applications r
3f90: 65 73 70 6f 6e 64 20 74 6f 20 74 68 65 20 65 72  espond to the er
3fa0: 72 6f 72 73 0a 6c 69 73 74 65 64 20 61 62 6f 76  rors.listed abov
3fb0: 65 20 62 79 20 65 78 70 6c 69 63 69 74 6c 79 20  e by explicitly 
3fc0: 69 73 73 75 69 6e 67 20 61 20 52 4f 4c 4c 42 41  issuing a ROLLBA
3fd0: 43 4b 20 63 6f 6d 6d 61 6e 64 2e 20 20 49 66 20  CK command.  If 
3fe0: 74 68 65 20 0a 74 72 61 6e 73 61 63 74 69 6f 6e  the .transaction
3ff0: 20 68 61 73 20 61 6c 72 65 61 64 79 20 62 65 65   has already bee
4000: 6e 20 72 6f 6c 6c 65 64 20 62 61 63 6b 20 61 75  n rolled back au
4010: 74 6f 6d 61 74 69 63 61 6c 6c 79 0a 62 79 20 74  tomatically.by t
4020: 68 65 20 65 72 72 6f 72 20 72 65 73 70 6f 6e 73  he error respons
4030: 65 2c 20 74 68 65 6e 20 74 68 65 20 52 4f 4c 4c  e, then the ROLL
4040: 42 41 43 4b 20 63 6f 6d 6d 61 6e 64 20 77 69 6c  BACK command wil
4050: 6c 20 66 61 69 6c 20 77 69 74 68 20 61 6e 0a 65  l fail with an.e
4060: 72 72 6f 72 2c 20 62 75 74 20 6e 6f 20 68 61 72  rror, but no har
4070: 6d 20 69 73 20 63 61 75 73 65 64 20 62 79 20 74  m is caused by t
4080: 68 69 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 46 75 74  his.</p>..<p>Fut
4090: 75 72 65 20 76 65 72 73 69 6f 6e 73 20 6f 66 20  ure versions of 
40a0: 53 51 4c 69 74 65 20 6d 61 79 20 65 78 74 65 6e  SQLite may exten
40b0: 64 20 74 68 65 20 6c 69 73 74 20 6f 66 20 65 72  d the list of er
40c0: 72 6f 72 73 20 77 68 69 63 68 0a 6d 69 67 68 74  rors which.might
40d0: 20 63 61 75 73 65 20 61 75 74 6f 6d 61 74 69 63   cause automatic
40e0: 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 72 6f 6c   transaction rol
40f0: 6c 62 61 63 6b 2e 20 20 46 75 74 75 72 65 20 76  lback.  Future v
4100: 65 72 73 69 6f 6e 73 20 6f 66 0a 53 51 4c 69 74  ersions of.SQLit
4110: 65 20 6d 69 67 68 74 20 63 68 61 6e 67 65 20 74  e might change t
4120: 68 65 20 65 72 72 6f 72 20 72 65 73 70 6f 6e 73  he error respons
4130: 65 2e 20 20 49 6e 20 70 61 72 74 69 63 75 6c 61  e.  In particula
4140: 72 2c 20 77 65 20 6d 61 79 0a 63 68 6f 6f 73 65  r, we may.choose
4150: 20 74 6f 20 73 69 6d 70 6c 69 66 79 20 74 68 65   to simplify the
4160: 20 69 6e 74 65 72 66 61 63 65 20 69 6e 20 66 75   interface in fu
4170: 74 75 72 65 20 76 65 72 73 69 6f 6e 73 20 6f 66  ture versions of
4180: 20 53 51 4c 69 74 65 20 62 79 0a 63 61 75 73 69   SQLite by.causi
4190: 6e 67 20 74 68 65 20 65 72 72 6f 72 73 20 61 62  ng the errors ab
41a0: 6f 76 65 20 74 6f 20 66 6f 72 63 65 20 61 6e 20  ove to force an 
41b0: 75 6e 63 6f 6e 64 69 74 69 6f 6e 61 6c 20 72 6f  unconditional ro
41c0: 6c 6c 62 61 63 6b 2e 3c 2f 70 3e 0a 0a 3c 74 63  llback.</p>..<tc
41d0: 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23 23  l>.#############
41e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
41f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4200: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4210: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4220: 23 23 0a 53 65 63 74 69 6f 6e 20 7b 53 41 56 45  ##.Section {SAVE
4230: 50 4f 49 4e 54 7d 20 73 61 76 65 70 6f 69 6e 74  POINT} savepoint
4240: 20 7b 53 41 56 45 50 4f 49 4e 54 20 52 45 4c 45   {SAVEPOINT RELE
4250: 41 53 45 7d 0a 0a 42 75 62 62 6c 65 44 69 61 67  ASE}..BubbleDiag
4260: 72 61 6d 20 73 61 76 65 70 6f 69 6e 74 2d 73 74  ram savepoint-st
4270: 6d 74 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d  mt.BubbleDiagram
4280: 20 72 65 6c 65 61 73 65 2d 73 74 6d 74 0a 42 75   release-stmt.Bu
4290: 62 62 6c 65 44 69 61 67 72 61 6d 20 72 6f 6c 6c  bbleDiagram roll
42a0: 62 61 63 6b 2d 73 74 6d 74 0a 3c 2f 74 63 6c 3e  back-stmt.</tcl>
42b0: 0a 0a 3c 70 3e 53 41 56 45 50 4f 49 4e 54 73 20  ..<p>SAVEPOINTs 
42c0: 61 72 65 20 61 20 6d 65 74 68 6f 64 20 6f 66 20  are a method of 
42d0: 63 72 65 61 74 69 6e 67 20 74 72 61 6e 73 61 63  creating transac
42e0: 74 69 6f 6e 73 2c 20 73 69 6d 69 6c 61 72 20 74  tions, similar t
42f0: 6f 0a 5b 42 45 47 49 4e 5d 20 61 6e 64 20 5b 43  o.[BEGIN] and [C
4300: 4f 4d 4d 49 54 5d 2c 20 65 78 63 65 70 74 20 74  OMMIT], except t
4310: 68 61 74 20 74 68 65 20 53 41 56 45 50 4f 49 4e  hat the SAVEPOIN
4320: 54 20 61 6e 64 20 52 45 4c 45 41 53 45 20 63 6f  T and RELEASE co
4330: 6d 6d 61 6e 64 73 0a 61 72 65 20 6e 61 6d 65 64  mmands.are named
4340: 20 61 6e 64 20 6d 61 79 20 62 65 20 6e 65 73 74   and may be nest
4350: 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20  ed.</p>..<p>The 
4360: 53 41 56 45 50 4f 49 4e 54 20 63 6f 6d 6d 61 6e  SAVEPOINT comman
4370: 64 20 73 74 61 72 74 73 20 61 20 6e 65 77 20 74  d starts a new t
4380: 72 61 6e 73 61 63 74 69 6f 6e 20 77 69 74 68 20  ransaction with 
4390: 61 20 6e 61 6d 65 2e 0a 54 68 65 20 74 72 61 6e  a name..The tran
43a0: 73 61 63 74 69 6f 6e 20 6e 61 6d 65 73 20 6e 65  saction names ne
43b0: 65 64 20 6e 6f 74 20 62 65 20 75 6e 69 71 75 65  ed not be unique
43c0: 2e 0a 41 20 53 41 56 45 50 4f 49 4e 54 20 63 61  ..A SAVEPOINT ca
43d0: 6e 20 62 65 20 73 74 61 72 74 65 64 20 65 69 74  n be started eit
43e0: 68 65 72 20 77 69 74 68 69 6e 20 6f 72 20 6f 75  her within or ou
43f0: 74 73 69 64 65 20 6f 66 0a 61 20 5b 42 45 47 49  tside of.a [BEGI
4400: 4e 5d 2e 2e 2e 5b 43 4f 4d 4d 49 54 5d 2e 20 20  N]...[COMMIT].  
4410: 57 68 65 6e 20 61 20 53 41 56 45 50 4f 49 4e 54  When a SAVEPOINT
4420: 20 69 73 20 74 68 65 20 6f 75 74 65 72 2d 6d 6f   is the outer-mo
4430: 73 74 20 73 61 76 65 70 6f 69 6e 74 0a 61 6e 64  st savepoint.and
4440: 20 69 74 20 69 73 20 6e 6f 74 20 77 69 74 68 69   it is not withi
4450: 6e 20 61 20 5b 42 45 47 49 4e 5d 2e 2e 2e 5b 43  n a [BEGIN]...[C
4460: 4f 4d 4d 49 54 5d 20 74 68 65 6e 20 74 68 65 20  OMMIT] then the 
4470: 62 65 68 61 76 69 6f 72 20 69 73 20 74 68 65 0a  behavior is the.
4480: 73 61 6d 65 20 61 73 20 42 45 47 49 4e 20 44 45  same as BEGIN DE
4490: 46 45 52 52 45 44 20 54 52 41 4e 53 41 43 54 49  FERRED TRANSACTI
44a0: 4f 4e 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20  ON.</p>..<p>The 
44b0: 52 4f 4c 4c 42 41 43 4b 20 54 4f 20 63 6f 6d 6d  ROLLBACK TO comm
44c0: 61 6e 64 20 72 65 76 65 72 74 73 20 74 68 65 20  and reverts the 
44d0: 73 74 61 74 65 20 6f 66 20 74 68 65 20 64 61 74  state of the dat
44e0: 61 62 61 73 65 20 62 61 63 6b 20 74 6f 20 77 68  abase back to wh
44f0: 61 74 0a 69 74 20 77 61 73 20 6a 75 73 74 20 61  at.it was just a
4500: 66 74 65 72 20 74 68 65 20 63 6f 72 72 65 73 70  fter the corresp
4510: 6f 6e 64 69 6e 67 20 53 41 56 45 50 4f 49 4e 54  onding SAVEPOINT
4520: 2e 20 20 4e 6f 74 65 20 74 68 61 74 20 75 6e 6c  .  Note that unl
4530: 69 6b 65 20 74 68 61 74 0a 70 6c 61 69 6e 20 5b  ike that.plain [
4540: 52 4f 4c 4c 42 41 43 4b 5d 20 63 6f 6d 6d 61 6e  ROLLBACK] comman
4550: 64 20 28 77 69 74 68 6f 75 74 20 74 68 65 20 54  d (without the T
4560: 4f 20 6b 65 79 77 6f 72 64 29 20 74 68 65 20 52  O keyword) the R
4570: 4f 4c 4c 42 41 43 4b 20 54 4f 20 63 6f 6d 6d 61  OLLBACK TO comma
4580: 6e 64 0a 64 6f 65 73 20 6e 6f 74 20 63 61 6e 63  nd.does not canc
4590: 65 6c 20 74 68 65 20 74 72 61 6e 73 61 63 74 69  el the transacti
45a0: 6f 6e 2e 20 20 49 6e 73 74 65 61 64 20 6f 66 20  on.  Instead of 
45b0: 63 61 6e 63 65 6c 6c 69 6e 67 20 74 68 65 20 74  cancelling the t
45c0: 72 61 6e 73 61 63 74 69 6f 6e 2c 0a 74 68 65 20  ransaction,.the 
45d0: 52 4f 4c 4c 42 41 43 4b 20 54 4f 20 63 6f 6d 6d  ROLLBACK TO comm
45e0: 61 6e 64 20 72 65 73 74 61 72 74 73 20 74 68 65  and restarts the
45f0: 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 61 67 61   transaction aga
4600: 69 6e 20 61 74 20 74 68 65 20 62 65 67 69 6e 6e  in at the beginn
4610: 69 6e 67 2e 0a 41 6c 6c 20 69 6e 74 65 72 76 65  ing..All interve
4620: 6e 69 6e 67 20 53 41 56 45 50 4f 49 4e 54 73 20  ning SAVEPOINTs 
4630: 61 72 65 20 63 61 6e 63 65 6c 6c 65 64 2c 20 68  are cancelled, h
4640: 6f 77 65 76 65 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e  owever.</p>..<p>
4650: 54 68 65 20 52 45 4c 45 41 53 45 20 69 73 20 6c  The RELEASE is l
4660: 69 6b 65 20 61 20 5b 43 4f 4d 4d 49 54 5d 20 66  ike a [COMMIT] f
4670: 6f 72 20 61 20 53 41 56 45 50 4f 49 4e 54 2e 0a  or a SAVEPOINT..
4680: 54 68 65 20 52 45 4c 45 41 53 45 20 63 6f 6d 6d  The RELEASE comm
4690: 61 6e 64 20 63 61 75 73 65 73 20 61 6c 6c 20 73  and causes all s
46a0: 61 76 65 70 6f 69 6e 74 73 20 62 61 63 6b 20 74  avepoints back t
46b0: 6f 20 61 6e 64 20 69 6e 63 6c 75 64 69 6e 67 20  o and including 
46c0: 74 68 65 20 66 69 72 73 74 0a 73 61 76 65 70 6f  the first.savepo
46d0: 69 6e 74 20 77 69 74 68 20 61 20 6d 61 74 63 68  int with a match
46e0: 69 6e 67 20 6e 61 6d 65 20 74 6f 20 62 65 20 72  ing name to be r
46f0: 65 6d 6f 76 65 64 20 66 72 6f 6d 20 74 68 65 20  emoved from the 
4700: 74 72 61 6e 73 61 63 74 69 6f 6e 20 73 74 61 63  transaction stac
4710: 6b 2e 20 20 54 68 65 0a 52 45 4c 45 41 53 45 20  k.  The.RELEASE 
4720: 6f 66 20 61 6e 20 69 6e 6e 65 72 20 74 72 61 6e  of an inner tran
4730: 73 61 63 74 69 6f 6e 0a 64 6f 65 73 20 6e 6f 74  saction.does not
4740: 20 63 61 75 73 65 20 61 6e 79 20 63 68 61 6e 67   cause any chang
4750: 65 73 20 74 6f 20 62 65 20 77 72 69 74 74 65 6e  es to be written
4760: 20 74 6f 20 74 68 65 20 64 61 74 61 62 61 73 65   to the database
4770: 20 66 69 6c 65 3b 20 69 74 20 6d 65 72 65 6c 79   file; it merely
4780: 0a 72 65 6d 6f 76 65 73 20 73 61 76 65 70 6f 69  .removes savepoi
4790: 6e 74 73 20 66 72 6f 6d 20 74 68 65 20 74 72 61  nts from the tra
47a0: 6e 73 61 63 74 69 6f 6e 20 73 74 61 63 6b 20 73  nsaction stack s
47b0: 75 63 68 20 74 68 61 74 20 69 74 20 69 73 0a 6e  uch that it is.n
47c0: 6f 20 6c 6f 6e 67 65 72 20 70 6f 73 73 69 62 6c  o longer possibl
47d0: 65 20 74 6f 20 52 4f 4c 4c 42 41 43 4b 20 54 4f  e to ROLLBACK TO
47e0: 20 74 68 6f 73 65 20 73 61 76 65 70 6f 69 6e 74   those savepoint
47f0: 73 2e 0a 49 66 20 61 20 52 45 4c 45 41 53 45 20  s..If a RELEASE 
4800: 63 6f 6d 6d 61 6e 64 20 72 65 6c 65 61 73 65 73  command releases
4810: 20 74 68 65 20 6f 75 74 65 72 6d 6f 73 74 20 73   the outermost s
4820: 61 76 65 70 6f 69 6e 74 2c 20 73 6f 0a 74 68 61  avepoint, so.tha
4830: 74 20 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f  t the transactio
4840: 6e 20 73 74 61 63 6b 20 62 65 63 6f 6d 65 73 20  n stack becomes 
4850: 65 6d 70 74 79 2c 20 74 68 65 6e 20 52 45 4c 45  empty, then RELE
4860: 41 53 45 20 69 73 20 74 68 65 20 73 61 6d 65 0a  ASE is the same.
4870: 61 73 20 5b 43 4f 4d 4d 49 54 5d 2e 0a 54 68 65  as [COMMIT]..The
4880: 20 5b 43 4f 4d 4d 49 54 5d 20 63 6f 6d 6d 61 6e   [COMMIT] comman
4890: 64 20 6d 61 79 20 75 73 65 64 20 74 6f 20 72 65  d may used to re
48a0: 6c 65 61 73 65 20 61 6c 6c 20 73 61 76 65 70 6f  lease all savepo
48b0: 69 6e 74 73 20 61 6e 64 0a 63 6f 6d 6d 69 74 20  ints and.commit 
48c0: 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  the transaction 
48d0: 65 76 65 6e 20 69 66 20 74 68 65 20 74 72 61 6e  even if the tran
48e0: 73 61 63 74 69 6f 6e 20 77 61 73 20 6f 72 69 67  saction was orig
48f0: 69 6e 61 6c 6c 79 20 73 74 61 72 74 65 64 0a 62  inally started.b
4900: 79 20 61 20 53 41 56 45 50 4f 49 4e 54 20 63 6f  y a SAVEPOINT co
4910: 6d 6d 61 6e 64 20 69 6e 73 74 65 61 64 20 6f 66  mmand instead of
4920: 20 61 20 5b 42 45 47 49 4e 5d 20 63 6f 6d 6d 61   a [BEGIN] comma
4930: 6e 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 74  nd.</p>..<p>If t
4940: 68 65 20 73 61 76 65 70 6f 69 6e 74 2d 6e 61 6d  he savepoint-nam
4950: 65 20 69 6e 20 61 20 52 45 4c 45 41 53 45 20 63  e in a RELEASE c
4960: 6f 6d 6d 61 6e 64 20 64 6f 65 73 20 6e 6f 74 20  ommand does not 
4970: 6d 61 74 63 68 20 61 6e 79 0a 73 61 76 65 70 6f  match any.savepo
4980: 69 6e 74 20 63 75 72 72 65 6e 74 6c 79 20 69 6e  int currently in
4990: 20 74 68 65 20 74 72 61 6e 61 63 74 69 6f 6e 20   the tranaction 
49a0: 73 74 61 63 6b 2c 20 74 68 65 6e 20 6e 6f 20 73  stack, then no s
49b0: 61 76 65 70 6f 69 6e 74 73 20 61 72 65 0a 72 65  avepoints are.re
49c0: 6c 65 61 73 65 64 2c 20 74 68 65 20 64 61 74 61  leased, the data
49d0: 62 61 73 65 20 69 73 20 75 6e 63 68 61 6e 67 65  base is unchange
49e0: 64 2c 20 61 6e 64 20 74 68 65 20 52 45 4c 45 41  d, and the RELEA
49f0: 53 45 20 63 6f 6d 6d 61 6e 64 20 72 65 74 75 72  SE command retur
4a00: 6e 73 0a 61 6e 20 65 72 72 6f 72 2e 3c 2f 70 3e  ns.an error.</p>
4a10: 0a 0a 3c 70 3e 4e 6f 74 65 20 74 68 61 74 20 61  ..<p>Note that a
4a20: 6e 20 69 6e 6e 65 72 20 74 72 61 6e 73 61 63 74  n inner transact
4a30: 69 6f 6e 20 6d 69 67 68 74 20 63 6f 6d 6d 69 74  ion might commit
4a40: 20 28 75 73 69 6e 67 20 74 68 65 20 52 45 4c 45   (using the RELE
4a50: 41 53 45 20 63 6f 6d 6d 61 6e 64 29 0a 62 75 74  ASE command).but
4a60: 20 74 68 65 6e 20 6c 61 74 65 72 20 68 61 76 65   then later have
4a70: 20 69 74 73 20 77 6f 72 6b 20 75 6e 64 6f 6e 65   its work undone
4a80: 20 62 79 20 61 20 52 4f 4c 4c 42 41 43 4b 20 69   by a ROLLBACK i
4a90: 6e 20 61 6e 20 6f 75 74 65 72 20 74 72 61 6e 73  n an outer trans
4aa0: 61 63 74 69 6f 6e 2e 0a 41 20 70 6f 77 65 72 20  action..A power 
4ab0: 66 61 69 6c 75 72 65 20 6f 72 20 70 72 6f 67 72  failure or progr
4ac0: 61 6d 20 63 72 61 73 68 20 6f 72 20 4f 53 20 63  am crash or OS c
4ad0: 72 61 73 68 20 77 69 6c 6c 20 63 61 75 73 65 20  rash will cause 
4ae0: 74 68 65 20 6f 75 74 65 72 2d 6d 6f 73 74 0a 74  the outer-most.t
4af0: 72 61 6e 73 61 63 74 69 6f 6e 20 74 6f 20 72 6f  ransaction to ro
4b00: 6c 6c 62 61 63 6b 2c 20 75 6e 64 6f 69 6e 67 20  llback, undoing 
4b10: 61 6c 6c 20 63 68 61 6e 67 65 73 20 74 68 61 74  all changes that
4b20: 20 68 61 76 65 20 6f 63 63 75 72 72 65 64 20 77   have occurred w
4b30: 69 74 68 69 6e 0a 74 68 61 74 20 6f 75 74 65 72  ithin.that outer
4b40: 20 74 72 61 6e 73 61 63 74 69 6f 6e 2c 20 65 76   transaction, ev
4b50: 65 6e 20 63 68 61 6e 67 65 73 20 74 68 61 74 20  en changes that 
4b60: 68 61 76 65 20 73 75 70 70 6f 73 65 64 6c 79 20  have supposedly 
4b70: 62 65 65 6e 20 22 63 6f 6d 6d 69 74 74 65 64 22  been "committed"
4b80: 0a 62 79 20 74 68 65 20 52 45 4c 45 41 53 45 20  .by the RELEASE 
4b90: 63 6f 6d 6d 61 6e 64 2e 20 20 43 6f 6e 74 65 6e  command.  Conten
4ba0: 74 20 69 73 20 6e 6f 74 20 61 63 74 75 61 6c 6c  t is not actuall
4bb0: 79 20 63 6f 6d 6d 69 74 74 65 64 20 6f 6e 20 74  y committed on t
4bc0: 68 65 20 64 69 73 6b 20 0a 75 6e 74 69 6c 20 74  he disk .until t
4bd0: 68 65 20 6f 75 74 65 72 6d 6f 73 74 20 74 72 61  he outermost tra
4be0: 6e 73 61 63 74 69 6f 6e 20 63 6f 6d 6d 69 74 73  nsaction commits
4bf0: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 72 65 20  .</p>..<p>There 
4c00: 61 72 65 20 73 65 76 65 72 61 6c 20 77 61 79 73  are several ways
4c10: 20 6f 66 20 74 68 69 6e 6b 69 6e 67 20 61 62 6f   of thinking abo
4c20: 75 74 20 74 68 65 20 52 45 4c 45 41 53 45 20 63  ut the RELEASE c
4c30: 6f 6d 6d 61 6e 64 3a 3c 2f 70 3e 0a 0a 3c 75 6c  ommand:</p>..<ul
4c40: 3e 0a 3c 6c 69 3e 3c 70 3e 0a 53 6f 6d 65 20 70  >.<li><p>.Some p
4c50: 65 6f 70 6c 65 20 76 69 65 77 20 52 45 4c 45 41  eople view RELEA
4c60: 53 45 20 61 73 20 74 68 65 20 65 71 75 69 76 61  SE as the equiva
4c70: 6c 65 6e 74 20 6f 66 20 43 4f 4d 4d 49 54 20 66  lent of COMMIT f
4c80: 6f 72 20 61 20 53 41 56 45 50 4f 49 4e 54 2e 0a  or a SAVEPOINT..
4c90: 54 68 69 73 20 69 73 20 61 6e 20 61 63 63 65 70  This is an accep
4ca0: 74 61 62 6c 65 20 70 6f 69 6e 74 20 6f 66 20 76  table point of v
4cb0: 69 65 77 20 61 73 20 6c 6f 6e 67 20 61 73 20 6f  iew as long as o
4cc0: 6e 65 20 72 65 6d 65 6d 62 65 72 73 20 74 68 61  ne remembers tha
4cd0: 74 20 74 68 65 0a 63 68 61 6e 67 65 73 20 63 6f  t the.changes co
4ce0: 6d 6d 69 74 74 65 64 20 62 79 20 61 6e 20 69 6e  mmitted by an in
4cf0: 6e 65 72 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  ner transaction 
4d00: 6d 69 67 68 74 20 6c 61 74 65 72 20 62 65 20 75  might later be u
4d10: 6e 64 6f 6e 65 20 62 79 20 61 0a 72 6f 6c 6c 62  ndone by a.rollb
4d20: 61 63 6b 20 69 6e 20 61 6e 20 6f 75 74 65 72 20  ack in an outer 
4d30: 74 72 61 6e 73 61 63 74 69 6f 6e 2e 3c 2f 70 3e  transaction.</p>
4d40: 3c 2f 6c 69 3e 0a 0a 3c 6c 69 3e 3c 70 3e 0a 41  </li>..<li><p>.A
4d50: 6e 6f 74 68 65 72 20 76 69 65 77 20 6f 66 20 52  nother view of R
4d60: 45 4c 45 41 53 45 20 69 73 20 74 68 61 74 20 69  ELEASE is that i
4d70: 74 20 6d 65 72 67 65 73 20 61 20 6e 61 6d 65 64  t merges a named
4d80: 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 69 6e 74   transaction int
4d90: 6f 20 69 74 73 0a 70 61 72 65 6e 74 20 74 72 61  o its.parent tra
4da0: 6e 73 61 63 74 69 6f 6e 2c 20 73 6f 20 74 68 61  nsaction, so tha
4db0: 74 20 74 68 65 20 6e 61 6d 65 64 20 74 72 61 6e  t the named tran
4dc0: 73 61 63 74 69 6f 6e 20 61 6e 64 20 69 74 73 20  saction and its 
4dd0: 70 61 72 65 6e 74 20 62 65 63 6f 6d 65 0a 74 68  parent become.th
4de0: 65 20 73 61 6d 65 20 74 72 61 6e 73 61 63 74 69  e same transacti
4df0: 6f 6e 2e 20 20 41 66 74 65 72 20 52 45 4c 45 41  on.  After RELEA
4e00: 53 45 2c 20 74 68 65 20 6e 61 6d 65 64 20 74 72  SE, the named tr
4e10: 61 6e 73 61 63 74 69 6f 6e 20 61 6e 64 20 69 74  ansaction and it
4e20: 73 20 70 61 72 65 6e 74 0a 77 69 6c 6c 20 63 6f  s parent.will co
4e30: 6d 6d 69 74 20 6f 72 20 72 6f 6c 6c 62 61 63 6b  mmit or rollback
4e40: 20 74 6f 67 65 74 68 65 72 2c 20 77 68 61 74 65   together, whate
4e50: 76 65 72 20 74 68 65 69 72 20 66 61 74 65 20 6d  ver their fate m
4e60: 61 79 20 62 65 2e 0a 3c 2f 70 3e 3c 2f 6c 69 3e  ay be..</p></li>
4e70: 0a 0a 3c 6c 69 3e 3c 70 3e 0a 4f 6e 65 20 63 61  ..<li><p>.One ca
4e80: 6e 20 61 6c 73 6f 20 74 68 69 6e 6b 20 6f 66 20  n also think of 
4e90: 73 61 76 65 70 6f 69 6e 74 73 20 61 73 0a 22 6d  savepoints as."m
4ea0: 61 72 6b 73 22 20 69 6e 20 74 68 65 20 74 72 61  arks" in the tra
4eb0: 6e 73 61 63 74 69 6f 6e 20 74 69 6d 65 6c 69 6e  nsaction timelin
4ec0: 65 2e 20 20 49 6e 20 74 68 69 73 20 76 69 65 77  e.  In this view
4ed0: 2c 20 74 68 65 20 53 41 56 45 50 4f 49 4e 54 20  , the SAVEPOINT 
4ee0: 63 6f 6d 6d 61 6e 64 0a 63 72 65 61 74 65 73 20  command.creates 
4ef0: 61 20 6e 65 77 20 6d 61 72 6b 2c 20 74 68 65 20  a new mark, the 
4f00: 52 4f 4c 4c 42 41 43 4b 20 54 4f 20 63 6f 6d 6d  ROLLBACK TO comm
4f10: 61 6e 64 20 72 65 77 69 6e 64 73 20 74 68 65 20  and rewinds the 
4f20: 74 69 6d 65 6c 69 6e 65 20 62 61 63 6b 0a 74 6f  timeline back.to
4f30: 20 61 20 70 6f 69 6e 74 20 6a 75 73 74 20 61 66   a point just af
4f40: 74 65 72 20 74 68 65 20 6e 61 6d 65 64 20 6d 61  ter the named ma
4f50: 72 6b 2c 20 61 6e 64 20 74 68 65 20 52 45 4c 45  rk, and the RELE
4f60: 41 53 45 20 63 6f 6d 6d 61 6e 64 0a 65 72 61 73  ASE command.eras
4f70: 65 73 20 6d 61 72 6b 73 20 66 72 6f 6d 20 74 68  es marks from th
4f80: 65 20 74 69 6d 65 6c 69 6e 65 20 77 69 74 68 6f  e timeline witho
4f90: 75 74 20 61 63 74 75 61 6c 6c 79 20 6d 61 6b 69  ut actually maki
4fa0: 6e 67 20 61 6e 79 0a 63 68 61 6e 67 65 73 20 74  ng any.changes t
4fb0: 6f 20 74 68 65 20 64 61 74 61 62 61 73 65 2e 0a  o the database..
4fc0: 3c 2f 70 3e 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e 0a  </p></li>.</ul>.
4fd0: 0a 0a 0a 3c 68 33 3e 54 72 61 6e 73 61 63 74 69  ...<h3>Transacti
4fe0: 6f 6e 20 4e 65 73 74 69 6e 67 20 52 75 6c 65 73  on Nesting Rules
4ff0: 3c 2f 68 33 3e 0a 0a 3c 70 3e 54 72 61 6e 73 61  </h3>..<p>Transa
5000: 63 74 69 6f 6e 73 20 73 74 61 63 6b 2e 20 20 54  ctions stack.  T
5010: 68 65 20 6c 61 73 74 20 74 72 61 6e 73 61 63 74  he last transact
5020: 69 6f 6e 20 73 74 61 72 74 65 64 20 77 69 6c 6c  ion started will
5030: 20 62 65 20 74 68 65 20 66 69 72 73 74 0a 74 72   be the first.tr
5040: 61 6e 73 61 63 74 69 6f 6e 20 63 6f 6d 6d 69 74  ansaction commit
5050: 74 65 64 20 6f 72 20 72 6f 6c 6c 65 64 20 62 61  ted or rolled ba
5060: 63 6b 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20  ck.</p>..<p>The 
5070: 5b 42 45 47 49 4e 5d 20 63 6f 6d 6d 61 6e 64 20  [BEGIN] command 
5080: 6f 6e 6c 79 20 77 6f 72 6b 73 20 69 66 20 74 68  only works if th
5090: 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 73 74  e transaction st
50a0: 61 63 6b 20 69 73 20 65 6d 70 74 79 2c 20 6f 72  ack is empty, or
50b0: 0a 69 6e 20 6f 74 68 65 72 20 77 6f 72 64 73 20  .in other words 
50c0: 69 66 20 74 68 65 72 65 20 61 72 65 20 6e 6f 20  if there are no 
50d0: 70 65 6e 64 69 6e 67 20 74 72 61 6e 73 61 63 74  pending transact
50e0: 69 6f 6e 73 2e 20 20 49 66 20 74 68 65 20 74 72  ions.  If the tr
50f0: 61 6e 73 61 63 74 69 6f 6e 0a 73 74 61 63 6b 20  ansaction.stack 
5100: 69 73 20 6e 6f 74 20 65 6d 70 74 79 20 77 68 65  is not empty whe
5110: 6e 20 74 68 65 20 5b 42 45 47 49 4e 5d 20 63 6f  n the [BEGIN] co
5120: 6d 6d 61 6e 64 20 69 73 20 69 6e 76 6f 6b 65 64  mmand is invoked
5130: 2c 20 74 68 65 6e 20 74 68 65 20 63 6f 6d 6d 61  , then the comma
5140: 6e 64 0a 66 61 69 6c 73 20 77 69 74 68 20 61 6e  nd.fails with an
5150: 20 65 72 72 6f 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e   error.</p>..<p>
5160: 54 68 65 20 5b 43 4f 4d 4d 49 54 5d 20 63 6f 6d  The [COMMIT] com
5170: 6d 61 6e 64 20 63 6f 6d 6d 69 74 73 20 61 6c 6c  mand commits all
5180: 20 6f 75 74 73 74 61 6e 64 69 6e 67 20 74 72 61   outstanding tra
5190: 6e 73 61 63 74 69 6f 6e 73 20 61 6e 64 20 6c 65  nsactions and le
51a0: 61 76 65 73 0a 74 68 65 20 74 72 61 6e 73 61 63  aves.the transac
51b0: 74 69 6f 6e 20 73 74 61 63 6b 20 65 6d 70 74 79  tion stack empty
51c0: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 52 45  .</p>..<p>The RE
51d0: 4c 45 41 53 45 20 63 6f 6d 6d 61 6e 64 20 73 74  LEASE command st
51e0: 61 72 74 73 20 77 69 74 68 20 74 68 65 20 6d 6f  arts with the mo
51f0: 73 74 20 72 65 63 65 6e 74 20 61 64 64 69 74 69  st recent additi
5200: 6f 6e 20 74 6f 20 74 68 65 0a 74 72 61 6e 73 61  on to the.transa
5210: 63 74 69 6f 6e 20 73 74 61 63 6b 20 61 6e 64 20  ction stack and 
5220: 72 65 6c 65 61 73 65 73 20 73 61 76 65 70 6f 69  releases savepoi
5230: 6e 74 73 20 62 61 63 6b 77 61 72 64 73 20 0a 69  nts backwards .i
5240: 6e 20 74 69 6d 65 20 75 6e 74 69 6c 20 69 74 20  n time until it 
5250: 72 65 6c 65 61 73 65 73 20 61 20 73 61 76 65 70  releases a savep
5260: 6f 69 6e 74 20 6d 61 72 6b 20 77 69 74 68 20 61  oint mark with a
5270: 20 6d 61 74 63 68 69 6e 67 20 73 61 76 65 70 6f   matching savepo
5280: 69 6e 74 2d 6e 61 6d 65 2e 0a 50 72 69 6f 72 20  int-name..Prior 
5290: 73 61 76 65 70 6f 69 6e 74 73 2c 20 65 76 65 6e  savepoints, even
52a0: 20 73 61 76 65 70 6f 69 6e 74 73 20 77 69 74 68   savepoints with
52b0: 20 6d 61 74 63 68 69 6e 67 20 73 61 76 65 70 6f   matching savepo
52c0: 69 6e 74 2d 6e 61 6d 65 73 2c 20 61 72 65 0a 75  int-names, are.u
52d0: 6e 63 68 61 6e 67 65 64 2e 0a 49 66 20 74 68 65  nchanged..If the
52e0: 20 52 45 4c 45 41 53 45 20 63 6f 6d 6d 61 6e 64   RELEASE command
52f0: 20 63 61 75 73 65 73 20 74 68 65 0a 74 72 61 6e   causes the.tran
5300: 73 61 63 74 69 6f 6e 20 73 74 61 63 6b 20 74 6f  saction stack to
5310: 20 62 65 63 6f 6d 65 20 65 6d 70 74 79 20 28 69   become empty (i
5320: 66 20 74 68 65 20 52 45 4c 45 41 53 45 20 63 6f  f the RELEASE co
5330: 6d 6d 61 6e 64 20 72 65 6c 65 61 73 65 73 20 74  mmand releases t
5340: 68 65 0a 6f 75 74 65 72 6d 6f 73 74 20 74 72 61  he.outermost tra
5350: 6e 73 61 63 74 69 6f 6e 20 66 72 6f 6d 20 74 68  nsaction from th
5360: 65 20 73 74 61 63 6b 29 20 74 68 65 6e 20 74 68  e stack) then th
5370: 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 63 6f  e transaction co
5380: 6d 6d 69 74 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54  mmits.</p>..<p>T
5390: 68 65 20 5b 52 4f 4c 4c 42 41 43 4b 5d 20 63 6f  he [ROLLBACK] co
53a0: 6d 6d 61 6e 64 20 77 69 74 68 6f 75 74 20 61 20  mmand without a 
53b0: 54 4f 20 63 6c 61 75 73 65 20 72 6f 6c 6c 73 20  TO clause rolls 
53c0: 62 61 63 6b 73 20 61 6c 6c 20 74 72 61 6e 73 61  backs all transa
53d0: 63 74 69 6f 6e 73 0a 61 6e 64 20 6c 65 61 76 65  ctions.and leave
53e0: 73 20 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f  s the transactio
53f0: 6e 20 73 74 61 63 6b 20 65 6d 70 74 79 2e 3c 2f  n stack empty.</
5400: 70 3e 0a 0a 3c 70 3e 54 68 65 20 52 4f 4c 4c 42  p>..<p>The ROLLB
5410: 41 43 4b 20 63 6f 6d 6d 61 6e 64 20 77 69 74 68  ACK command with
5420: 20 61 20 54 4f 20 63 6c 61 75 73 65 20 72 6f 6c   a TO clause rol
5430: 6c 73 20 62 61 63 6b 20 74 72 61 6e 73 61 63 74  ls back transact
5440: 69 6f 6e 73 20 67 6f 69 6e 67 0a 62 61 63 6b 77  ions going.backw
5450: 61 72 64 73 20 69 6e 20 74 69 6d 65 20 62 61 63  ards in time bac
5460: 6b 20 74 6f 20 74 68 65 20 6d 6f 73 74 20 72 65  k to the most re
5470: 63 65 6e 74 20 53 41 56 45 50 4f 49 4e 54 20 77  cent SAVEPOINT w
5480: 69 74 68 20 61 20 6d 61 74 63 68 69 6e 67 20 6e  ith a matching n
5490: 61 6d 65 2e 0a 54 68 65 20 53 41 56 45 50 4f 49  ame..The SAVEPOI
54a0: 4e 54 20 77 69 74 68 20 74 68 65 20 6d 61 74 63  NT with the matc
54b0: 68 69 6e 67 20 6e 61 6d 65 20 72 65 6d 61 69 6e  hing name remain
54c0: 73 20 6f 6e 20 74 68 65 20 74 72 61 6e 73 61 63  s on the transac
54d0: 74 69 6f 6e 20 73 74 61 63 6b 2c 0a 62 75 74 20  tion stack,.but 
54e0: 61 6c 6c 20 64 61 74 61 62 61 73 65 20 63 68 61  all database cha
54f0: 6e 67 65 73 20 74 68 61 74 20 6f 63 63 75 72 72  nges that occurr
5500: 65 64 20 61 66 74 65 72 20 74 68 61 74 20 53 41  ed after that SA
5510: 56 45 50 4f 49 4e 54 20 77 61 73 20 63 72 65 61  VEPOINT was crea
5520: 74 65 64 0a 61 72 65 20 72 6f 6c 6c 65 64 20 62  ted.are rolled b
5530: 61 63 6b 2e 20 20 49 66 20 74 68 65 20 73 61 76  ack.  If the sav
5540: 65 70 6f 69 6e 74 2d 6e 61 6d 65 20 69 6e 20 61  epoint-name in a
5550: 20 52 4f 4c 4c 42 41 43 4b 20 54 4f 20 63 6f 6d   ROLLBACK TO com
5560: 6d 61 6e 64 20 64 6f 65 73 20 6e 6f 74 0a 6d 61  mand does not.ma
5570: 74 63 68 20 61 6e 79 20 53 41 56 45 50 4f 49 4e  tch any SAVEPOIN
5580: 54 20 6f 6e 20 74 68 65 20 73 74 61 63 6b 2c 20  T on the stack, 
5590: 74 68 65 6e 20 74 68 65 20 52 4f 4c 4c 42 41 43  then the ROLLBAC
55a0: 4b 20 63 6f 6d 6d 61 6e 64 20 66 61 69 6c 73 20  K command fails 
55b0: 77 69 74 68 20 61 6e 0a 65 72 72 6f 72 20 61 6e  with an.error an
55c0: 64 20 6c 65 61 76 65 73 20 74 68 65 20 73 74 61  d leaves the sta
55d0: 74 65 20 6f 66 20 74 68 65 20 64 61 74 61 62 61  te of the databa
55e0: 73 65 20 75 6e 63 68 61 6e 67 65 64 2e 3c 2f 70  se unchanged.</p
55f0: 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23  >..<tcl>.#######
5600: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5610: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5620: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5630: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5640: 23 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e  ########.Section
5650: 20 63 6f 6d 6d 65 6e 74 20 63 6f 6d 6d 65 6e 74   comment comment
5660: 20 7b 63 6f 6d 6d 65 6e 74 20 2a 63 6f 6d 6d 65   {comment *comme
5670: 6e 74 73 7d 0a 0a 42 75 62 62 6c 65 44 69 61 67  nts}..BubbleDiag
5680: 72 61 6d 20 63 6f 6d 6d 65 6e 74 2d 73 79 6e 74  ram comment-synt
5690: 61 78 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 43 6f  ax.</tcl>..<p>Co
56a0: 6d 6d 65 6e 74 73 20 61 72 65 6e 27 74 20 53 51  mments aren't SQ
56b0: 4c 20 63 6f 6d 6d 61 6e 64 73 2c 20 62 75 74 20  L commands, but 
56c0: 63 61 6e 20 6f 63 63 75 72 20 77 69 74 68 69 6e  can occur within
56d0: 20 74 68 65 20 74 65 78 74 20 6f 66 0a 53 51 4c   the text of.SQL
56e0: 20 71 75 65 72 69 65 73 20 70 61 73 73 65 64 20   queries passed 
56f0: 74 6f 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70  to [sqlite3_prep
5700: 61 72 65 5f 76 32 28 29 5d 20 61 6e 64 20 72 65  are_v2()] and re
5710: 6c 61 74 65 64 20 69 6e 74 65 72 66 61 63 65 73  lated interfaces
5720: 2e 2e 0a 43 6f 6d 6d 65 6e 74 73 20 61 72 65 20  ...Comments are 
5730: 0a 74 72 65 61 74 65 64 20 61 73 20 77 68 69 74  .treated as whit
5740: 65 73 70 61 63 65 20 62 79 20 74 68 65 20 70 61  espace by the pa
5750: 72 73 65 72 2e 20 20 54 68 65 79 20 63 61 6e 20  rser.  They can 
5760: 62 65 67 69 6e 20 61 6e 79 77 68 65 72 65 20 77  begin anywhere w
5770: 68 69 74 65 73 70 61 63 65 20 0a 63 61 6e 20 62  hitespace .can b
5780: 65 20 66 6f 75 6e 64 2c 20 69 6e 63 6c 75 64 69  e found, includi
5790: 6e 67 20 69 6e 73 69 64 65 20 65 78 70 72 65 73  ng inside expres
57a0: 73 69 6f 6e 73 20 74 68 61 74 20 73 70 61 6e 20  sions that span 
57b0: 6d 75 6c 74 69 70 6c 65 20 6c 69 6e 65 73 2e 0a  multiple lines..
57c0: 3c 2f 70 3e 0a 0a 3c 70 3e 20 53 51 4c 20 63 6f  </p>..<p> SQL co
57d0: 6d 6d 65 6e 74 73 20 62 65 67 69 6e 20 77 69 74  mments begin wit
57e0: 68 20 74 77 6f 20 63 6f 6e 73 65 63 75 74 69 76  h two consecutiv
57f0: 65 20 22 2d 22 20 63 68 61 72 61 63 74 65 72 73  e "-" characters
5800: 20 28 41 53 43 49 49 20 30 78 32 64 29 0a 61 6e   (ASCII 0x2d).an
5810: 64 20 65 78 74 65 6e 64 20 75 70 20 74 6f 20 61  d extend up to a
5820: 6e 64 20 69 6e 63 6c 75 64 69 6e 67 20 74 68 65  nd including the
5830: 20 6e 65 78 74 20 6e 65 77 6c 69 6e 65 20 63 68   next newline ch
5840: 61 72 61 63 74 65 72 20 28 41 53 43 49 49 20 30  aracter (ASCII 0
5850: 78 30 61 29 0a 6f 72 20 75 6e 74 69 6c 20 74 68  x0a).or until th
5860: 65 20 65 6e 64 20 6f 66 20 69 6e 70 75 74 2c 20  e end of input, 
5870: 77 68 69 63 68 65 76 65 72 20 63 6f 6d 65 73 20  whichever comes 
5880: 66 69 72 73 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 20  first.</p>..<p> 
5890: 43 20 63 6f 6d 6d 65 6e 74 73 20 63 61 6e 20 73  C comments can s
58a0: 70 61 6e 20 61 6e 79 20 6e 75 6d 62 65 72 20 6f  pan any number o
58b0: 66 20 6c 69 6e 65 73 2e 20 20 43 2d 73 74 79 6c  f lines.  C-styl
58c0: 65 20 63 6f 6d 6d 65 6e 74 73 20 62 65 67 69 6e  e comments begin
58d0: 0a 77 69 74 68 20 22 2f 2a 22 20 61 6e 64 20 65  .with "/*" and e
58e0: 78 74 65 6e 64 20 75 70 20 74 6f 20 61 6e 64 20  xtend up to and 
58f0: 69 6e 63 6c 75 64 69 6e 67 20 74 68 65 20 6e 65  including the ne
5900: 78 74 20 22 2a 2f 22 20 63 68 61 72 61 63 74 65  xt "*/" characte
5910: 72 20 70 61 69 72 0a 6f 72 20 75 6e 74 69 6c 20  r pair.or until 
5920: 74 68 65 20 65 6e 64 20 6f 66 20 69 6e 70 75 74  the end of input
5930: 2c 20 77 68 69 63 68 65 76 65 72 20 63 6f 6d 65  , whichever come
5940: 73 20 66 69 72 73 74 2e 20 20 43 2d 73 74 79 6c  s first.  C-styl
5950: 65 20 63 6f 6d 6d 65 6e 74 73 0a 63 61 6e 20 73  e comments.can s
5960: 70 61 6e 20 6d 75 6c 74 69 70 6c 65 20 6c 69 6e  pan multiple lin
5970: 65 73 2e 20 3c 2f 70 3e 0a 0a 3c 70 3e 20 43 6f  es. </p>..<p> Co
5980: 6d 6d 65 6e 74 73 20 63 61 6e 20 61 70 70 65 61  mments can appea
5990: 72 20 61 6e 79 77 68 65 72 65 20 77 68 69 74 65  r anywhere white
59a0: 73 70 61 63 65 20 63 61 6e 20 6f 63 63 75 72 2c  space can occur,
59b0: 0a 69 6e 63 6c 75 64 69 6e 67 20 69 6e 73 69 64  .including insid
59c0: 65 20 65 78 70 72 65 73 73 69 6f 6e 73 20 61 6e  e expressions an
59d0: 64 20 69 6e 20 74 68 65 20 6d 69 64 64 6c 65 20  d in the middle 
59e0: 6f 66 20 6f 74 68 65 72 20 53 51 4c 20 73 74 61  of other SQL sta
59f0: 74 65 6d 65 6e 74 73 2e 0a 43 6f 6d 6d 65 6e 74  tements..Comment
5a00: 73 20 64 6f 20 6e 6f 74 20 6e 65 73 74 2e 0a 3c  s do not nest..<
5a10: 2f 70 3e 0a 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23  /p>...<tcl>.####
5a20: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5a30: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5a40: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5a50: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5a60: 23 23 23 23 23 23 23 23 23 23 0a 53 65 63 74 69  ##########.Secti
5a70: 6f 6e 20 7b 43 52 45 41 54 45 20 49 4e 44 45 58  on {CREATE INDEX
5a80: 7d 20 63 72 65 61 74 65 69 6e 64 65 78 20 7b 7b  } createindex {{
5a90: 43 52 45 41 54 45 20 49 4e 44 45 58 7d 7d 0a 0a  CREATE INDEX}}..
5aa0: 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 63 72  BubbleDiagram cr
5ab0: 65 61 74 65 2d 69 6e 64 65 78 2d 73 74 6d 74 20  eate-index-stmt 
5ac0: 31 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20  1.BubbleDiagram 
5ad0: 69 6e 64 65 78 65 64 2d 63 6f 6c 75 6d 6e 0a 3c  indexed-column.<
5ae0: 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20 43 52  /tcl>..<p>The CR
5af0: 45 41 54 45 20 49 4e 44 45 58 20 63 6f 6d 6d 61  EATE INDEX comma
5b00: 6e 64 20 63 6f 6e 73 69 73 74 73 20 6f 66 20 74  nd consists of t
5b10: 68 65 20 6b 65 79 77 6f 72 64 73 20 22 43 52 45  he keywords "CRE
5b20: 41 54 45 20 49 4e 44 45 58 22 20 66 6f 6c 6c 6f  ATE INDEX" follo
5b30: 77 65 64 0a 62 79 20 74 68 65 20 6e 61 6d 65 20  wed.by the name 
5b40: 6f 66 20 74 68 65 20 6e 65 77 20 69 6e 64 65 78  of the new index
5b50: 2c 20 74 68 65 20 6b 65 79 77 6f 72 64 20 22 4f  , the keyword "O
5b60: 4e 22 2c 20 74 68 65 20 6e 61 6d 65 20 6f 66 20  N", the name of 
5b70: 61 20 70 72 65 76 69 6f 75 73 6c 79 0a 63 72 65  a previously.cre
5b80: 61 74 65 64 20 74 61 62 6c 65 20 74 68 61 74 20  ated table that 
5b90: 69 73 20 74 6f 20 62 65 20 69 6e 64 65 78 65 64  is to be indexed
5ba0: 2c 20 61 6e 64 20 61 20 70 61 72 65 6e 74 68 65  , and a parenthe
5bb0: 73 69 7a 65 64 20 6c 69 73 74 20 6f 66 20 6e 61  sized list of na
5bc0: 6d 65 73 20 6f 66 0a 63 6f 6c 75 6d 6e 73 20 69  mes of.columns i
5bd0: 6e 20 74 68 65 20 74 61 62 6c 65 20 74 68 61 74  n the table that
5be0: 20 61 72 65 20 75 73 65 64 20 66 6f 72 20 74 68   are used for th
5bf0: 65 20 69 6e 64 65 78 20 6b 65 79 2e 3c 2f 70 3e  e index key.</p>
5c00: 0a 0a 3c 70 3e 45 61 63 68 20 63 6f 6c 75 6d 6e  ..<p>Each column
5c10: 20 6e 61 6d 65 20 63 61 6e 20 62 65 20 66 6f 6c   name can be fol
5c20: 6c 6f 77 65 64 20 62 79 20 6f 6e 65 20 6f 66 20  lowed by one of 
5c30: 74 68 65 20 22 41 53 43 22 20 6f 72 20 22 44 45  the "ASC" or "DE
5c40: 53 43 22 20 6b 65 79 77 6f 72 64 73 0a 74 6f 20  SC" keywords.to 
5c50: 69 6e 64 69 63 61 74 65 20 73 6f 72 74 20 6f 72  indicate sort or
5c60: 64 65 72 2e 20 20 54 68 65 20 73 6f 72 74 20 6f  der.  The sort o
5c70: 72 64 65 72 20 6d 61 79 20 6f 72 20 6d 61 79 20  rder may or may 
5c80: 6e 6f 74 20 62 65 20 69 67 6e 6f 72 65 64 20 64  not be ignored d
5c90: 65 70 65 6e 64 69 6e 67 0a 6f 6e 20 74 68 65 20  epending.on the 
5ca0: 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 66 6f  database file fo
5cb0: 72 6d 61 74 2e 20 20 54 68 65 20 22 6c 65 67 61  rmat.  The "lega
5cc0: 63 79 22 20 66 69 6c 65 20 66 6f 72 6d 61 74 20  cy" file format 
5cd0: 69 67 6e 6f 72 65 73 20 69 6e 64 65 78 0a 73 6f  ignores index.so
5ce0: 72 74 20 6f 72 64 65 72 2e 20 20 54 68 65 20 64  rt order.  The d
5cf0: 65 73 63 65 6e 64 69 6e 67 20 69 6e 64 65 78 20  escending index 
5d00: 66 69 6c 65 20 66 6f 72 6d 61 74 20 74 61 6b 65  file format take
5d10: 73 20 69 6e 64 65 78 20 73 6f 72 74 20 6f 72 64  s index sort ord
5d20: 65 72 0a 69 6e 74 6f 20 61 63 63 6f 75 6e 74 2e  er.into account.
5d30: 20 20 4f 6e 6c 79 20 63 6f 70 69 65 73 20 6f 66    Only copies of
5d40: 20 53 51 4c 69 74 65 20 6e 65 77 65 72 20 74 68   SQLite newer th
5d50: 61 6e 20 5b 76 65 72 73 69 6f 6e 20 33 2e 33 2e  an [version 3.3.
5d60: 30 5d 20 0a 28 72 65 6c 65 61 73 65 64 20 6f 6e  0] .(released on
5d70: 20 32 30 30 36 2d 30 31 2d 31 30 29 20 61 72 65   2006-01-10) are
5d80: 20 61 62 6c 65 20 74 6f 20 75 6e 64 65 72 73 74   able to underst
5d90: 61 6e 64 20 74 68 65 20 6e 65 77 65 72 20 64 65  and the newer de
5da0: 73 63 65 6e 64 69 6e 67 0a 69 6e 64 65 78 20 66  scending.index f
5db0: 69 6c 65 20 66 6f 72 6d 61 74 20 61 6e 64 20 73  ile format and s
5dc0: 6f 20 66 6f 72 20 63 6f 6d 70 61 74 69 62 69 6c  o for compatibil
5dd0: 69 74 79 20 77 69 74 68 20 6f 6c 64 65 72 20 76  ity with older v
5de0: 65 72 73 69 6f 6e 73 20 6f 66 0a 53 51 4c 69 74  ersions of.SQLit
5df0: 65 2c 20 74 68 65 20 6c 65 67 61 63 79 20 66 69  e, the legacy fi
5e00: 6c 65 20 66 6f 72 6d 61 74 20 69 73 20 67 65 6e  le format is gen
5e10: 65 72 61 74 65 64 20 62 79 20 64 65 66 61 75 6c  erated by defaul
5e20: 74 2e 20 20 55 73 65 20 74 68 65 0a 5b 6c 65 67  t.  Use the.[leg
5e30: 61 63 79 5f 66 69 6c 65 5f 66 6f 72 6d 61 74 5d  acy_file_format]
5e40: 20 70 72 61 67 6d 61 20 74 6f 20 6d 6f 64 69 66   pragma to modif
5e50: 79 20 74 68 69 73 20 62 65 68 61 76 69 6f 72 20  y this behavior 
5e60: 61 6e 64 20 67 65 6e 65 72 61 74 65 0a 64 61 74  and generate.dat
5e70: 61 62 61 73 65 73 20 74 68 61 74 20 75 73 65 20  abases that use 
5e80: 74 68 65 20 6e 65 77 65 72 20 66 69 6c 65 20 66  the newer file f
5e90: 6f 72 6d 61 74 2e 20 20 46 75 74 75 72 65 20 76  ormat.  Future v
5ea0: 65 72 73 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74  ersions of SQLit
5eb0: 65 0a 6d 61 79 20 62 65 67 69 6e 20 74 6f 20 67  e.may begin to g
5ec0: 65 6e 65 72 61 74 65 20 74 68 65 20 6e 65 77 65  enerate the newe
5ed0: 72 20 66 69 6c 65 20 66 6f 72 6d 61 74 20 62 79  r file format by
5ee0: 20 64 65 66 61 75 6c 74 2e 3c 2f 70 3e 0a 0a 3c   default.</p>..<
5ef0: 70 3e 54 68 65 20 43 4f 4c 4c 41 54 45 20 63 6c  p>The COLLATE cl
5f00: 61 75 73 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 65  ause following e
5f10: 61 63 68 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 20  ach column name 
5f20: 64 65 66 69 6e 65 73 20 61 20 63 6f 6c 6c 61 74  defines a collat
5f30: 69 6e 67 0a 73 65 71 75 65 6e 63 65 20 75 73 65  ing.sequence use
5f40: 64 20 66 6f 72 20 74 65 78 74 20 65 6e 74 72 69  d for text entri
5f50: 65 73 20 69 6e 20 74 68 61 74 20 63 6f 6c 75 6d  es in that colum
5f60: 6e 2e 20 20 54 68 65 20 64 65 66 61 75 6c 74 20  n.  The default 
5f70: 63 6f 6c 6c 61 74 69 6e 67 0a 73 65 71 75 65 6e  collating.sequen
5f80: 63 65 20 69 73 20 74 68 65 20 63 6f 6c 6c 61 74  ce is the collat
5f90: 69 6e 67 20 73 65 71 75 65 6e 63 65 20 64 65 66  ing sequence def
5fa0: 69 6e 65 64 20 66 6f 72 20 74 68 61 74 20 63 6f  ined for that co
5fb0: 6c 75 6d 6e 20 69 6e 20 74 68 65 0a 5b 43 52 45  lumn in the.[CRE
5fc0: 41 54 45 20 54 41 42 4c 45 5d 20 73 74 61 74 65  ATE TABLE] state
5fd0: 6d 65 6e 74 2e 20 20 4f 72 20 69 66 20 6e 6f 20  ment.  Or if no 
5fe0: 63 6f 6c 6c 61 74 69 6e 67 20 73 65 71 75 65 6e  collating sequen
5ff0: 63 65 20 69 73 20 6f 74 68 65 72 77 69 73 65 20  ce is otherwise 
6000: 64 65 66 69 6e 65 64 2c 0a 74 68 65 20 62 75 69  defined,.the bui
6010: 6c 74 2d 69 6e 20 42 49 4e 41 52 59 20 63 6f 6c  lt-in BINARY col
6020: 6c 61 74 69 6e 67 20 73 65 71 75 65 6e 63 65 20  lating sequence 
6030: 69 73 20 75 73 65 64 2e 3c 2f 70 3e 0a 0a 3c 70  is used.</p>..<p
6040: 3e 54 68 65 72 65 20 61 72 65 20 6e 6f 20 61 72  >There are no ar
6050: 62 69 74 72 61 72 79 20 6c 69 6d 69 74 73 20 6f  bitrary limits o
6060: 6e 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  n the number of 
6070: 69 6e 64 69 63 65 73 20 74 68 61 74 20 63 61 6e  indices that can
6080: 20 62 65 0a 61 74 74 61 63 68 65 64 20 74 6f 20   be.attached to 
6090: 61 20 73 69 6e 67 6c 65 20 74 61 62 6c 65 2e 20  a single table. 
60a0: 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 63   The number of c
60b0: 6f 6c 75 6d 6e 73 20 69 6e 20 61 6e 20 69 6e 64  olumns in an ind
60c0: 65 78 20 69 73 20 0a 6c 69 6d 69 74 65 64 20 74  ex is .limited t
60d0: 6f 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 43 4f  o [SQLITE_MAX_CO
60e0: 4c 55 4d 4e 5d 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49  LUMN].</p>..<p>I
60f0: 66 20 74 68 65 20 55 4e 49 51 55 45 20 6b 65 79  f the UNIQUE key
6100: 77 6f 72 64 20 61 70 70 65 61 72 73 20 62 65 74  word appears bet
6110: 77 65 65 6e 20 43 52 45 41 54 45 20 61 6e 64 20  ween CREATE and 
6120: 49 4e 44 45 58 20 74 68 65 6e 20 64 75 70 6c 69  INDEX then dupli
6130: 63 61 74 65 0a 69 6e 64 65 78 20 65 6e 74 72 69  cate.index entri
6140: 65 73 20 61 72 65 20 6e 6f 74 20 61 6c 6c 6f 77  es are not allow
6150: 65 64 2e 20 20 41 6e 79 20 61 74 74 65 6d 70 74  ed.  Any attempt
6160: 20 74 6f 20 69 6e 73 65 72 74 20 61 20 64 75 70   to insert a dup
6170: 6c 69 63 61 74 65 20 65 6e 74 72 79 0a 77 69 6c  licate entry.wil
6180: 6c 20 72 65 73 75 6c 74 20 69 6e 20 61 6e 20 65  l result in an e
6190: 72 72 6f 72 2e 20 20 46 6f 72 20 74 68 65 20 70  rror.  For the p
61a0: 75 72 70 6f 73 65 73 20 6f 66 20 75 6e 69 71 75  urposes of uniqu
61b0: 65 20 69 6e 64 69 63 65 73 2c 20 61 6c 6c 20 4e  e indices, all N
61c0: 55 4c 4c 20 76 61 6c 75 65 73 0a 61 72 65 20 63  ULL values.are c
61d0: 6f 6e 73 69 64 65 72 65 64 20 74 6f 20 64 69 66  onsidered to dif
61e0: 66 65 72 65 6e 74 20 66 72 6f 6d 20 61 6c 6c 20  ferent from all 
61f0: 6f 74 68 65 72 20 4e 55 4c 4c 20 76 61 6c 75 65  other NULL value
6200: 73 20 61 6e 64 20 61 72 65 20 74 68 75 73 20 75  s and are thus u
6210: 6e 69 71 75 65 2e 0a 54 68 69 73 20 69 73 20 6f  nique..This is o
6220: 6e 65 20 6f 66 20 74 68 65 20 74 77 6f 20 70 6f  ne of the two po
6230: 73 73 69 62 6c 65 20 69 6e 74 65 72 70 72 65 74  ssible interpret
6240: 61 74 69 6f 6e 73 20 6f 66 20 74 68 65 20 53 51  ations of the SQ
6250: 4c 2d 39 32 20 73 74 61 6e 64 61 72 64 0a 28 74  L-92 standard.(t
6260: 68 65 20 6c 61 6e 67 75 61 67 65 20 69 6e 20 74  he language in t
6270: 68 65 20 73 74 61 6e 64 61 72 64 20 69 73 20 61  he standard is a
6280: 6d 62 69 67 75 69 6f 75 73 29 20 61 6e 64 20 69  mbiguious) and i
6290: 73 20 74 68 65 20 69 6e 74 65 72 70 72 65 74 61  s the interpreta
62a0: 74 69 6f 6e 0a 66 6f 6c 6c 6f 77 65 64 20 62 79  tion.followed by
62b0: 20 50 6f 73 74 67 72 65 53 51 4c 2c 20 4d 79 53   PostgreSQL, MyS
62c0: 51 4c 2c 20 46 69 72 65 62 69 72 64 2c 20 61 6e  QL, Firebird, an
62d0: 64 20 4f 72 61 63 6c 65 2e 20 20 49 6e 66 6f 72  d Oracle.  Infor
62e0: 6d 69 78 20 61 6e 64 0a 4d 69 63 72 6f 73 6f 66  mix and.Microsof
62f0: 74 20 53 51 4c 20 53 65 72 76 65 72 20 66 6f 6c  t SQL Server fol
6300: 6c 6f 77 20 74 68 65 20 6f 74 68 65 72 20 69 6e  low the other in
6310: 74 65 72 70 72 65 74 61 74 69 6f 6e 20 6f 66 20  terpretation of 
6320: 74 68 65 20 73 74 61 6e 64 61 72 64 2e 3c 2f 70  the standard.</p
6330: 3e 0a 0a 3c 70 3e 49 66 20 74 68 65 20 6f 70 74  >..<p>If the opt
6340: 69 6f 6e 61 6c 20 49 46 20 4e 4f 54 20 45 58 49  ional IF NOT EXI
6350: 53 54 53 20 63 6c 61 75 73 65 20 69 73 20 70 72  STS clause is pr
6360: 65 73 65 6e 74 20 61 6e 64 20 61 6e 6f 74 68 65  esent and anothe
6370: 72 20 69 6e 64 65 78 0a 77 69 74 68 20 74 68 65  r index.with the
6380: 20 73 61 6d 65 20 6e 61 6d 65 20 61 6c 65 61 64   same name alead
6390: 79 20 65 78 69 73 74 73 2c 20 74 68 65 6e 20 74  y exists, then t
63a0: 68 69 73 20 63 6f 6d 6d 61 6e 64 20 62 65 63 6f  his command beco
63b0: 6d 65 73 20 61 20 6e 6f 2d 6f 70 2e 3c 2f 70 3e  mes a no-op.</p>
63c0: 0a 0a 3c 70 3e 49 6e 64 65 78 65 73 20 61 72 65  ..<p>Indexes are
63d0: 20 72 65 6d 6f 76 65 64 20 77 69 74 68 20 74 68   removed with th
63e0: 65 20 3c 61 20 68 72 65 66 3d 22 6c 61 6e 67 5f  e <a href="lang_
63f0: 64 72 6f 70 69 6e 64 65 78 2e 68 74 6d 6c 22 3e  dropindex.html">
6400: 44 52 4f 50 20 49 4e 44 45 58 3c 2f 61 3e 20 0a  DROP INDEX</a> .
6410: 63 6f 6d 6d 61 6e 64 2e 3c 2f 70 3e 0a 0a 0a 3c  command.</p>...<
6420: 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23  tcl>.###########
6430: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
6440: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
6450: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
6460: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
6470: 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b 43 52 45  ###.Section {CRE
6480: 41 54 45 20 54 41 42 4c 45 7d 20 7b 63 72 65 61  ATE TABLE} {crea
6490: 74 65 74 61 62 6c 65 7d 20 7b 7b 43 52 45 41 54  tetable} {{CREAT
64a0: 45 20 54 41 42 4c 45 7d 7d 0a 0a 42 75 62 62 6c  E TABLE}}..Bubbl
64b0: 65 44 69 61 67 72 61 6d 20 63 72 65 61 74 65 2d  eDiagram create-
64c0: 74 61 62 6c 65 2d 73 74 6d 74 20 31 0a 42 75 62  table-stmt 1.Bub
64d0: 62 6c 65 44 69 61 67 72 61 6d 20 63 6f 6c 75 6d  bleDiagram colum
64e0: 6e 2d 64 65 66 0a 42 75 62 62 6c 65 44 69 61 67  n-def.BubbleDiag
64f0: 72 61 6d 20 74 79 70 65 2d 6e 61 6d 65 0a 42 75  ram type-name.Bu
6500: 62 62 6c 65 44 69 61 67 72 61 6d 20 63 6f 6c 75  bbleDiagram colu
6510: 6d 6e 2d 63 6f 6e 73 74 72 61 69 6e 74 0a 42 75  mn-constraint.Bu
6520: 62 62 6c 65 44 69 61 67 72 61 6d 20 74 61 62 6c  bbleDiagram tabl
6530: 65 2d 63 6f 6e 73 74 72 61 69 6e 74 0a 42 75 62  e-constraint.Bub
6540: 62 6c 65 44 69 61 67 72 61 6d 20 66 6f 72 65 69  bleDiagram forei
6550: 67 6e 2d 6b 65 79 2d 63 6c 61 75 73 65 0a 3c 2f  gn-key-clause.</
6560: 74 63 6c 3e 0a 0a 3c 70 3e 41 20 43 52 45 41 54  tcl>..<p>A CREAT
6570: 45 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e  E TABLE statemen
6580: 74 20 69 73 20 62 61 73 69 63 61 6c 6c 79 20 74  t is basically t
6590: 68 65 20 6b 65 79 77 6f 72 64 73 20 22 43 52 45  he keywords "CRE
65a0: 41 54 45 20 54 41 42 4c 45 22 0a 66 6f 6c 6c 6f  ATE TABLE".follo
65b0: 77 65 64 20 62 79 20 74 68 65 20 6e 61 6d 65 20  wed by the name 
65c0: 6f 66 20 61 20 6e 65 77 20 74 61 62 6c 65 20 61  of a new table a
65d0: 6e 64 20 61 20 70 61 72 65 6e 74 68 65 73 69 7a  nd a parenthesiz
65e0: 65 64 20 6c 69 73 74 20 6f 66 20 63 6f 6c 75 6d  ed list of colum
65f0: 6e 0a 64 65 66 69 6e 69 74 69 6f 6e 73 20 61 6e  n.definitions an
6600: 64 20 63 6f 6e 73 74 72 61 69 6e 74 73 2e 20 20  d constraints.  
6610: 0a 54 61 62 6c 65 73 20 6e 61 6d 65 73 20 74 68  .Tables names th
6620: 61 74 20 62 65 67 69 6e 20 77 69 74 68 20 22 3c  at begin with "<
6630: 62 3e 73 71 6c 69 74 65 5f 3c 2f 62 3e 22 20 61  b>sqlite_</b>" a
6640: 72 65 20 72 65 73 65 72 76 65 64 0a 66 6f 72 20  re reserved.for 
6650: 75 73 65 20 62 79 20 53 51 4c 69 74 65 20 69 74  use by SQLite it
6660: 73 65 6c 66 20 61 6e 64 20 63 61 6e 6e 6f 74 20  self and cannot 
6670: 61 70 70 65 61 72 20 69 6e 20 61 20 43 52 45 41  appear in a CREA
6680: 54 45 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65  TE TABLE stateme
6690: 6e 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 45 61 63 68  nt.</p>..<p>Each
66a0: 20 63 6f 6c 75 6d 6e 20 64 65 66 69 6e 69 74 69   column definiti
66b0: 6f 6e 20 69 73 20 74 68 65 20 6e 61 6d 65 20 6f  on is the name o
66c0: 66 20 74 68 65 20 63 6f 6c 75 6d 6e 20 6f 70 74  f the column opt
66d0: 69 6f 6e 61 6c 6c 79 20 66 6f 6c 6c 6f 77 65 64  ionally followed
66e0: 20 62 79 20 74 68 65 0a 5b 64 61 74 61 74 79 70   by the.[datatyp
66f0: 65 5d 20 66 6f 72 20 74 68 61 74 20 63 6f 6c 75  e] for that colu
6700: 6d 6e 2c 20 74 68 65 6e 20 6f 6e 65 20 6f 72 20  mn, then one or 
6710: 6d 6f 72 65 20 6f 70 74 69 6f 6e 61 6c 20 63 6f  more optional co
6720: 6c 75 6d 6e 20 63 6f 6e 73 74 72 61 69 6e 74 73  lumn constraints
6730: 2e 0a 53 51 4c 69 74 65 20 75 73 65 73 20 5b 64  ..SQLite uses [d
6740: 79 6e 61 6d 69 63 20 74 79 70 69 6e 67 5d 3b 20  ynamic typing]; 
6750: 0a 74 68 65 20 64 61 74 61 74 79 70 65 20 66 6f  .the datatype fo
6760: 72 20 74 68 65 20 63 6f 6c 75 6d 6e 20 64 6f 65  r the column doe
6770: 73 20 6e 6f 74 20 72 65 73 74 72 69 63 74 20 77  s not restrict w
6780: 68 61 74 20 64 61 74 61 20 6d 61 79 20 62 65 20  hat data may be 
6790: 70 75 74 0a 69 6e 20 74 68 61 74 20 63 6f 6c 75  put.in that colu
67a0: 6d 6e 2e 0a 54 68 65 20 55 4e 49 51 55 45 20 63  mn..The UNIQUE c
67b0: 6f 6e 73 74 72 61 69 6e 74 20 63 61 75 73 65 73  onstraint causes
67c0: 20 61 6e 20 75 6e 69 71 75 65 20 69 6e 64 65 78   an unique index
67d0: 20 74 6f 20 62 65 20 63 72 65 61 74 65 64 20 6f   to be created o
67e0: 6e 20 74 68 65 20 73 70 65 63 69 66 69 65 64 0a  n the specified.
67f0: 63 6f 6c 75 6d 6e 73 2e 20 20 41 6c 6c 20 4e 55  columns.  All NU
6800: 4c 4c 20 76 61 6c 75 65 73 20 61 72 65 20 63 6f  LL values are co
6810: 6e 73 69 64 65 72 65 64 20 64 69 66 66 65 72 65  nsidered differe
6820: 6e 74 20 66 72 6f 6d 20 65 61 63 68 20 6f 74 68  nt from each oth
6830: 65 72 20 61 6e 64 20 66 72 6f 6d 0a 61 6c 6c 20  er and from.all 
6840: 6f 74 68 65 72 20 76 61 6c 75 65 73 20 66 6f 72  other values for
6850: 20 74 68 65 20 70 75 72 70 6f 73 65 20 6f 66 20   the purpose of 
6860: 64 65 74 65 72 6d 69 6e 69 6e 67 20 75 6e 69 71  determining uniq
6870: 75 65 6e 65 73 73 2c 20 68 65 6e 63 65 20 61 20  ueness, hence a 
6880: 55 4e 49 51 55 45 0a 63 6f 6c 75 6d 6e 20 6d 61  UNIQUE.column ma
6890: 79 20 63 6f 6e 74 61 69 6e 20 6d 75 6c 74 69 70  y contain multip
68a0: 6c 65 20 65 6e 74 72 69 65 73 20 77 69 74 68 20  le entries with 
68b0: 74 68 65 20 76 61 6c 75 65 20 6f 66 20 4e 55 4c  the value of NUL
68c0: 4c 2e 0a 54 68 65 20 43 4f 4c 4c 41 54 45 20 63  L..The COLLATE c
68d0: 6c 61 75 73 65 20 73 70 65 63 69 66 69 65 73 20  lause specifies 
68e0: 77 68 61 74 20 74 65 78 74 20 0a 5b 63 6f 6c 6c  what text .[coll
68f0: 61 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e 5d 20  ating function] 
6900: 74 6f 20 75 73 65 20 77 68 65 6e 20 63 6f 6d 70  to use when comp
6910: 61 72 69 6e 67 20 74 65 78 74 20 65 6e 74 72 69  aring text entri
6920: 65 73 20 66 6f 72 20 74 68 65 20 63 6f 6c 75 6d  es for the colum
6930: 6e 2e 20 20 0a 54 68 65 20 62 75 69 6c 74 2d 69  n.  .The built-i
6940: 6e 20 5b 42 49 4e 41 52 59 5d 20 63 6f 6c 6c 61  n [BINARY] colla
6950: 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e 20 69 73  ting function is
6960: 20 75 73 65 64 20 62 79 20 64 65 66 61 75 6c 74   used by default
6970: 2e 0a 3c 70 3e 0a 54 68 65 20 44 45 46 41 55 4c  ..<p>.The DEFAUL
6980: 54 20 63 6f 6e 73 74 72 61 69 6e 74 20 73 70 65  T constraint spe
6990: 63 69 66 69 65 73 20 61 20 64 65 66 61 75 6c 74  cifies a default
69a0: 20 76 61 6c 75 65 20 74 6f 20 75 73 65 20 77 68   value to use wh
69b0: 65 6e 20 64 6f 69 6e 67 20 61 6e 20 5b 49 4e 53  en doing an [INS
69c0: 45 52 54 5d 2e 0a 54 68 65 20 76 61 6c 75 65 20  ERT]..The value 
69d0: 6d 61 79 20 62 65 20 4e 55 4c 4c 2c 20 61 20 73  may be NULL, a s
69e0: 74 72 69 6e 67 20 63 6f 6e 73 74 61 6e 74 2c 20  tring constant, 
69f0: 61 20 6e 75 6d 62 65 72 2c 20 6f 72 20 61 20 63  a number, or a c
6a00: 6f 6e 73 74 61 6e 74 20 65 78 70 72 65 73 73 69  onstant expressi
6a10: 6f 6e 0a 65 6e 63 6c 6f 73 65 64 20 69 6e 20 70  on.enclosed in p
6a20: 61 72 65 6e 74 68 65 73 65 73 2e 0a 54 68 65 20  arentheses..The 
6a30: 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 6d 61  default value ma
6a40: 79 20 61 6c 73 6f 20 62 65 20 6f 6e 65 20 6f 66  y also be one of
6a50: 20 74 68 65 20 73 70 65 63 69 61 6c 20 63 61 73   the special cas
6a60: 65 2d 69 6e 64 65 70 65 6e 64 61 6e 74 0a 6b 65  e-independant.ke
6a70: 79 77 6f 72 64 73 20 43 55 52 52 45 4e 54 5f 54  ywords CURRENT_T
6a80: 49 4d 45 2c 20 43 55 52 52 45 4e 54 5f 44 41 54  IME, CURRENT_DAT
6a90: 45 20 6f 72 20 43 55 52 52 45 4e 54 5f 54 49 4d  E or CURRENT_TIM
6aa0: 45 53 54 41 4d 50 2e 20 49 66 20 74 68 65 20 76  ESTAMP. If the v
6ab0: 61 6c 75 65 20 69 73 0a 4e 55 4c 4c 2c 20 61 20  alue is.NULL, a 
6ac0: 73 74 72 69 6e 67 20 63 6f 6e 73 74 61 6e 74 20  string constant 
6ad0: 6f 72 20 6e 75 6d 62 65 72 2c 20 69 74 20 69 73  or number, it is
6ae0: 20 6c 69 74 65 72 61 6c 6c 79 20 69 6e 73 65 72   literally inser
6af0: 74 65 64 20 69 6e 74 6f 20 74 68 65 20 63 6f 6c  ted into the col
6b00: 75 6d 6e 0a 77 68 65 6e 65 76 65 72 20 61 6e 20  umn.whenever an 
6b10: 49 4e 53 45 52 54 20 73 74 61 74 65 6d 65 6e 74  INSERT statement
6b20: 20 74 68 61 74 20 64 6f 65 73 20 6e 6f 74 20 73   that does not s
6b30: 70 65 63 69 66 79 20 61 20 76 61 6c 75 65 20 66  pecify a value f
6b40: 6f 72 20 74 68 65 20 63 6f 6c 75 6d 6e 20 69 73  or the column is
6b50: 0a 65 78 65 63 75 74 65 64 2e 20 49 66 20 74 68  .executed. If th
6b60: 65 20 76 61 6c 75 65 20 69 73 20 43 55 52 52 45  e value is CURRE
6b70: 4e 54 5f 54 49 4d 45 2c 20 43 55 52 52 45 4e 54  NT_TIME, CURRENT
6b80: 5f 44 41 54 45 20 6f 72 20 43 55 52 52 45 4e 54  _DATE or CURRENT
6b90: 5f 54 49 4d 45 53 54 41 4d 50 2c 20 74 68 65 6e  _TIMESTAMP, then
6ba0: 0a 74 68 65 20 63 75 72 72 65 6e 74 20 55 54 43  .the current UTC
6bb0: 20 64 61 74 65 20 61 6e 64 2f 6f 72 20 74 69 6d   date and/or tim
6bc0: 65 20 69 73 20 69 6e 73 65 72 74 65 64 20 69 6e  e is inserted in
6bd0: 74 6f 20 74 68 65 20 63 6f 6c 75 6d 6e 73 2e 20  to the columns. 
6be0: 46 6f 72 0a 43 55 52 52 45 4e 54 5f 54 49 4d 45  For.CURRENT_TIME
6bf0: 2c 20 74 68 65 20 66 6f 72 6d 61 74 20 69 73 20  , the format is 
6c00: 48 48 3a 4d 4d 3a 53 53 2e 20 46 6f 72 20 43 55  HH:MM:SS. For CU
6c10: 52 52 45 4e 54 5f 44 41 54 45 2c 20 59 59 59 59  RRENT_DATE, YYYY
6c20: 2d 4d 4d 2d 44 44 2e 20 54 68 65 20 66 6f 72 6d  -MM-DD. The form
6c30: 61 74 0a 66 6f 72 20 43 55 52 52 45 4e 54 5f 54  at.for CURRENT_T
6c40: 49 4d 45 53 54 41 4d 50 20 69 73 20 22 59 59 59  IMESTAMP is "YYY
6c50: 59 2d 4d 4d 2d 44 44 20 48 48 3a 4d 4d 3a 53 53  Y-MM-DD HH:MM:SS
6c60: 22 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20  "..</p>..<p>The 
6c70: 50 52 49 4d 41 52 59 20 4b 45 59 20 61 74 74 72  PRIMARY KEY attr
6c80: 69 62 75 74 65 20 6e 6f 72 6d 61 6c 6c 79 20 63  ibute normally c
6c90: 72 65 61 74 65 73 20 61 20 55 4e 49 51 55 45 20  reates a UNIQUE 
6ca0: 69 6e 64 65 78 20 6f 6e 0a 74 68 65 20 63 6f 6c  index on.the col
6cb0: 75 6d 6e 20 6f 72 20 63 6f 6c 75 6d 6e 73 20 74  umn or columns t
6cc0: 68 61 74 20 61 72 65 20 73 70 65 63 69 66 69 65  hat are specifie
6cd0: 64 20 61 73 20 74 68 65 20 50 52 49 4d 41 52 59  d as the PRIMARY
6ce0: 20 4b 45 59 2e 20 20 54 68 65 20 6f 6e 6c 79 0a   KEY.  The only.
6cf0: 65 78 63 65 70 74 69 6f 6e 20 74 6f 20 74 68 69  exception to thi
6d00: 73 20 62 65 68 61 76 69 6f 72 20 69 73 20 73 70  s behavior is sp
6d10: 65 63 69 61 6c 20 5b 49 4e 54 45 47 45 52 20 50  ecial [INTEGER P
6d20: 52 49 4d 41 52 59 20 4b 45 59 5d 20 63 6f 6c 75  RIMARY KEY] colu
6d30: 6d 6e 2c 0a 64 65 73 63 72 69 62 65 64 20 62 65  mn,.described be
6d40: 6c 6f 77 2e 0a 41 63 63 6f 72 64 69 6e 67 20 74  low..According t
6d50: 6f 20 74 68 65 20 53 51 4c 20 73 74 61 6e 64 61  o the SQL standa
6d60: 72 64 2c 20 50 52 49 4d 41 52 59 20 4b 45 59 20  rd, PRIMARY KEY 
6d70: 73 68 6f 75 6c 64 20 69 6d 70 6c 79 20 4e 4f 54  should imply NOT
6d80: 20 4e 55 4c 4c 2e 0a 55 6e 66 6f 72 74 75 6e 61   NULL..Unfortuna
6d90: 74 65 6c 79 2c 20 64 75 65 20 74 6f 20 61 20 6c  tely, due to a l
6da0: 6f 6e 67 2d 73 74 61 6e 64 69 6e 67 20 63 6f 64  ong-standing cod
6db0: 69 6e 67 20 6f 76 65 72 73 69 67 68 74 2c 20 74  ing oversight, t
6dc0: 68 69 73 20 69 73 20 6e 6f 74 20 0a 74 68 65 20  his is not .the 
6dd0: 63 61 73 65 20 69 6e 20 53 51 4c 69 74 65 2e 20  case in SQLite. 
6de0: 20 53 51 4c 69 74 65 20 61 6c 6c 6f 77 73 20 4e   SQLite allows N
6df0: 55 4c 4c 20 76 61 6c 75 65 73 0a 69 6e 20 61 20  ULL values.in a 
6e00: 50 52 49 4d 41 52 59 20 4b 45 59 20 63 6f 6c 75  PRIMARY KEY colu
6e10: 6d 6e 2e 20 20 57 65 20 63 6f 75 6c 64 20 63 68  mn.  We could ch
6e20: 61 6e 67 65 20 53 51 4c 69 74 65 20 74 6f 20 63  ange SQLite to c
6e30: 6f 6e 66 6f 72 6d 20 74 6f 20 74 68 65 0a 73 74  onform to the.st
6e40: 61 6e 64 61 72 64 20 28 61 6e 64 20 77 65 20 6d  andard (and we m
6e50: 69 67 68 74 20 64 6f 20 73 6f 20 69 6e 20 74 68  ight do so in th
6e60: 65 20 66 75 74 75 72 65 29 2c 20 62 75 74 20 62  e future), but b
6e70: 79 20 74 68 65 20 74 69 6d 65 20 74 68 65 0a 6f  y the time the.o
6e80: 76 65 72 73 69 67 68 74 20 77 61 73 20 64 69 73  versight was dis
6e90: 63 6f 76 65 72 65 64 2c 20 53 51 4c 69 74 65 20  covered, SQLite 
6ea0: 77 61 73 20 69 6e 20 73 75 63 68 20 77 69 64 65  was in such wide
6eb0: 20 75 73 65 20 74 68 61 74 20 77 65 20 66 65 61   use that we fea
6ec0: 72 65 64 0a 62 72 65 61 6b 69 6e 67 20 6c 65 67  red.breaking leg
6ed0: 61 63 79 20 63 6f 64 65 20 69 66 20 77 65 20 66  acy code if we f
6ee0: 69 78 65 64 20 74 68 65 20 70 72 6f 62 6c 65 6d  ixed the problem
6ef0: 2e 20 20 53 6f 20 66 6f 72 20 6e 6f 77 20 77 65  .  So for now we
6f00: 20 68 61 76 65 0a 63 68 6f 73 65 6e 20 74 6f 20   have.chosen to 
6f10: 63 6f 6e 74 69 6e 75 65 20 61 6c 6c 6f 77 69 6e  continue allowin
6f20: 67 20 4e 55 4c 4c 73 20 69 6e 20 50 52 49 4d 41  g NULLs in PRIMA
6f30: 52 59 20 4b 45 59 20 63 6f 6c 75 6d 6e 73 2e 0a  RY KEY columns..
6f40: 44 65 76 65 6c 6f 70 65 72 73 20 73 68 6f 75 6c  Developers shoul
6f50: 64 20 62 65 20 61 77 61 72 65 2c 20 68 6f 77 65  d be aware, howe
6f60: 76 65 72 2c 20 74 68 61 74 20 77 65 20 6d 61 79  ver, that we may
6f70: 20 63 68 61 6e 67 65 20 53 51 4c 69 74 65 20 74   change SQLite t
6f80: 6f 0a 63 6f 6e 66 6f 72 6d 20 74 6f 20 74 68 65  o.conform to the
6f90: 20 53 51 4c 20 73 74 61 6e 64 61 72 64 20 69 6e   SQL standard in
6fa0: 20 66 75 74 75 72 65 20 61 6e 64 20 73 68 6f 75   future and shou
6fb0: 6c 64 20 64 65 73 69 67 6e 20 6e 65 77 20 70 72  ld design new pr
6fc0: 6f 67 72 61 6d 73 0a 61 63 63 6f 72 64 69 6e 67  ograms.according
6fd0: 6c 79 2e 3c 2f 70 3e 0a 0a 3c 70 3e 53 51 4c 69  ly.</p>..<p>SQLi
6fe0: 74 65 20 75 73 65 73 20 5b 64 79 6e 61 6d 69 63  te uses [dynamic
6ff0: 20 74 79 70 69 6e 67 5d 20 69 6e 73 74 65 61 64   typing] instead
7000: 20 6f 66 20 73 74 61 74 69 63 20 74 79 70 69 6e   of static typin
7010: 67 2e 20 20 45 78 63 65 70 74 20 66 6f 72 20 74  g.  Except for t
7020: 68 65 0a 73 70 65 63 69 61 6c 20 63 61 73 65 20  he.special case 
7030: 6f 66 20 5b 49 4e 54 45 47 45 52 20 50 52 49 4d  of [INTEGER PRIM
7040: 41 52 59 20 4b 45 59 5d 2c 20 53 51 4c 69 74 65  ARY KEY], SQLite
7050: 20 77 69 6c 6c 20 61 6c 6c 6f 77 20 76 61 6c 75   will allow valu
7060: 65 73 20 6f 66 20 61 6e 79 0a 74 79 70 65 20 74  es of any.type t
7070: 6f 20 62 65 20 73 74 6f 72 65 64 20 69 6e 20 61  o be stored in a
7080: 6e 79 20 63 6f 6c 75 6d 6e 20 72 65 67 61 72 64  ny column regard
7090: 6c 65 73 73 20 6f 66 20 74 68 65 20 64 65 63 6c  less of the decl
70a0: 61 72 65 64 20 64 61 74 61 74 79 70 65 20 6f 66  ared datatype of
70b0: 0a 74 68 61 74 20 63 6f 6c 75 6d 6e 2e 20 20 54  .that column.  T
70c0: 68 65 20 64 65 63 6c 61 72 65 64 20 64 61 74 61  he declared data
70d0: 74 79 70 65 20 69 73 20 61 20 5b 61 66 66 69 6e  type is a [affin
70e0: 69 74 79 20 7c 20 74 79 70 65 20 61 66 66 69 6e  ity | type affin
70f0: 69 74 79 5d 20 74 68 61 74 0a 53 51 4c 69 74 65  ity] that.SQLite
7100: 20 61 74 74 65 6d 70 74 73 20 74 6f 20 63 6f 6d   attempts to com
7110: 70 6c 79 20 77 69 74 68 2c 20 62 75 74 20 74 68  ply with, but th
7120: 65 20 6f 70 65 72 61 74 69 6f 6e 20 77 69 6c 6c  e operation will
7130: 20 70 72 6f 63 65 65 64 20 65 76 65 6e 20 69 66   proceed even if
7140: 0a 63 6f 6d 70 6c 69 61 6e 63 65 20 69 73 20 6e  .compliance is n
7150: 6f 74 20 70 6f 73 73 69 62 6c 65 2e 3c 2f 70 3e  ot possible.</p>
7160: 0a 0a 3c 70 3e 49 66 20 74 68 65 20 22 54 45 4d  ..<p>If the "TEM
7170: 50 22 20 6f 72 20 22 54 45 4d 50 4f 52 41 52 59  P" or "TEMPORARY
7180: 22 20 6b 65 79 77 6f 72 64 20 6f 63 63 75 72 73  " keyword occurs
7190: 20 69 6e 20 62 65 74 77 65 65 6e 20 22 43 52 45   in between "CRE
71a0: 41 54 45 22 0a 61 6e 64 20 22 54 41 42 4c 45 22  ATE".and "TABLE"
71b0: 20 74 68 65 6e 20 74 68 65 20 74 61 62 6c 65 20   then the table 
71c0: 74 68 61 74 20 69 73 20 63 72 65 61 74 65 64 20  that is created 
71d0: 69 73 20 6f 6e 6c 79 20 76 69 73 69 62 6c 65 0a  is only visible.
71e0: 77 69 74 68 69 6e 20 74 68 61 74 20 73 61 6d 65  within that same
71f0: 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
7200: 74 69 6f 6e 0a 61 6e 64 20 69 73 20 61 75 74 6f  tion.and is auto
7210: 6d 61 74 69 63 61 6c 6c 79 20 64 65 6c 65 74 65  matically delete
7220: 64 20 77 68 65 6e 0a 74 68 65 20 64 61 74 61 62  d when.the datab
7230: 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69  ase connection i
7240: 73 20 63 6c 6f 73 65 64 2e 20 20 41 6e 79 20 69  s closed.  Any i
7250: 6e 64 69 63 65 73 20 63 72 65 61 74 65 64 20 6f  ndices created o
7260: 6e 20 61 20 74 65 6d 70 6f 72 61 72 79 20 74 61  n a temporary ta
7270: 62 6c 65 0a 61 72 65 20 61 6c 73 6f 20 74 65 6d  ble.are also tem
7280: 70 6f 72 61 72 79 2e 20 20 54 65 6d 70 6f 72 61  porary.  Tempora
7290: 72 79 20 74 61 62 6c 65 73 20 61 6e 64 20 69 6e  ry tables and in
72a0: 64 69 63 65 73 20 61 72 65 20 73 74 6f 72 65 64  dices are stored
72b0: 20 69 6e 20 61 0a 73 65 70 61 72 61 74 65 20 66   in a.separate f
72c0: 69 6c 65 20 64 69 73 74 69 6e 63 74 20 66 72 6f  ile distinct fro
72d0: 6d 20 74 68 65 20 6d 61 69 6e 20 64 61 74 61 62  m the main datab
72e0: 61 73 65 20 66 69 6c 65 2e 3c 2f 70 3e 0a 0a 3c  ase file.</p>..<
72f0: 70 3e 20 49 66 20 61 20 26 6c 74 3b 64 61 74 61  p> If a &lt;data
7300: 62 61 73 65 2d 6e 61 6d 65 26 67 74 3b 20 69 73  base-name&gt; is
7310: 20 73 70 65 63 69 66 69 65 64 2c 20 74 68 65 6e   specified, then
7320: 20 74 68 65 20 74 61 62 6c 65 20 69 73 20 63 72   the table is cr
7330: 65 61 74 65 64 20 69 6e 20 0a 74 68 65 20 6e 61  eated in .the na
7340: 6d 65 64 20 64 61 74 61 62 61 73 65 2e 20 49 74  med database. It
7350: 20 69 73 20 61 6e 20 65 72 72 6f 72 20 74 6f 20   is an error to 
7360: 73 70 65 63 69 66 79 20 62 6f 74 68 20 61 20 26  specify both a &
7370: 6c 74 3b 64 61 74 61 62 61 73 65 2d 6e 61 6d 65  lt;database-name
7380: 26 67 74 3b 0a 61 6e 64 20 74 68 65 20 54 45 4d  &gt;.and the TEM
7390: 50 20 6b 65 79 77 6f 72 64 2c 20 75 6e 6c 65 73  P keyword, unles
73a0: 73 20 74 68 65 20 26 6c 74 3b 64 61 74 61 62 61  s the &lt;databa
73b0: 73 65 2d 6e 61 6d 65 26 67 74 3b 20 69 73 20 22  se-name&gt; is "
73c0: 74 65 6d 70 22 2e 20 49 66 20 6e 6f 0a 64 61 74  temp". If no.dat
73d0: 61 62 61 73 65 20 6e 61 6d 65 20 69 73 20 73 70  abase name is sp
73e0: 65 63 69 66 69 65 64 2c 20 61 6e 64 20 74 68 65  ecified, and the
73f0: 20 54 45 4d 50 20 6b 65 79 77 6f 72 64 20 69 73   TEMP keyword is
7400: 20 6e 6f 74 20 70 72 65 73 65 6e 74 2c 0a 74 68   not present,.th
7410: 65 20 74 61 62 6c 65 20 69 73 20 63 72 65 61 74  e table is creat
7420: 65 64 20 69 6e 20 74 68 65 20 6d 61 69 6e 20 64  ed in the main d
7430: 61 74 61 62 61 73 65 2e 3c 2f 70 3e 0a 0a 3c 70  atabase.</p>..<p
7440: 3e 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20 5b 63  >The optional [c
7450: 6f 6e 66 6c 69 63 74 20 63 6c 61 75 73 65 5d 20  onflict clause] 
7460: 66 6f 6c 6c 6f 77 69 6e 67 20 65 61 63 68 20 63  following each c
7470: 6f 6e 73 74 72 61 69 6e 74 0a 61 6c 6c 6f 77 73  onstraint.allows
7480: 20 74 68 65 20 73 70 65 63 69 66 69 63 61 74 69   the specificati
7490: 6f 6e 20 6f 66 20 61 6e 20 61 6c 74 65 72 6e 61  on of an alterna
74a0: 74 69 76 65 20 64 65 66 61 75 6c 74 0a 63 6f 6e  tive default.con
74b0: 73 74 72 61 69 6e 74 20 63 6f 6e 66 6c 69 63 74  straint conflict
74c0: 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f   resolution algo
74d0: 72 69 74 68 6d 20 66 6f 72 20 74 68 61 74 20 63  rithm for that c
74e0: 6f 6e 73 74 72 61 69 6e 74 2e 0a 49 66 20 6e 6f  onstraint..If no
74f0: 20 63 6f 6e 66 6c 69 63 74 20 63 6c 61 75 73 65   conflict clause
7500: 20 69 73 20 73 70 65 63 69 66 69 65 64 2c 20 74   is specified, t
7510: 68 65 20 41 42 4f 52 54 20 61 6c 67 6f 72 69 74  he ABORT algorit
7520: 68 6d 20 69 73 20 75 73 65 64 2e 0a 44 69 66 66  hm is used..Diff
7530: 65 72 65 6e 74 20 63 6f 6e 73 74 72 61 69 6e 74  erent constraint
7540: 73 20 77 69 74 68 69 6e 20 74 68 65 20 73 61 6d  s within the sam
7550: 65 0a 74 61 62 6c 65 20 6d 61 79 20 68 61 76 65  e.table may have
7560: 20 64 69 66 66 65 72 65 6e 74 20 63 6f 6e 66 6c   different confl
7570: 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61  ict resolution a
7580: 6c 67 6f 72 69 74 68 6d 73 2e 0a 49 66 20 61 6e  lgorithms..If an
7590: 20 5b 49 4e 53 45 52 54 5d 20 6f 72 20 5b 55 50   [INSERT] or [UP
75a0: 44 41 54 45 5d 20 73 74 61 74 65 6d 65 6e 74 20  DATE] statement 
75b0: 73 70 65 63 69 66 69 65 73 20 61 20 63 6f 6e 66  specifies a conf
75c0: 6c 69 63 74 0a 72 65 73 6f 6c 75 74 69 6f 6e 20  lict.resolution 
75d0: 61 6c 67 6f 72 69 74 68 6d 2c 20 74 68 65 6e 20  algorithm, then 
75e0: 74 68 65 20 61 6c 67 6f 72 69 74 68 6d 20 73 70  the algorithm sp
75f0: 65 63 69 66 69 65 64 20 6f 6e 20 74 68 65 20 49  ecified on the I
7600: 4e 53 45 52 54 20 6f 72 0a 55 50 44 41 54 45 20  NSERT or.UPDATE 
7610: 73 74 61 74 65 6d 65 6e 74 20 6f 76 65 72 72 69  statement overri
7620: 64 65 73 20 74 68 65 20 61 6c 67 6f 72 69 74 68  des the algorith
7630: 6d 20 73 70 65 63 69 66 69 65 64 20 69 6e 20 74  m specified in t
7640: 68 65 20 0a 43 52 45 41 54 45 20 54 41 42 4c 45  he .CREATE TABLE
7650: 20 73 74 61 74 65 6d 65 6e 74 2e 0a 53 65 65 20   statement..See 
7660: 74 68 65 20 73 65 63 74 69 6f 6e 20 74 69 74 6c  the section titl
7670: 65 64 0a 5b 4f 4e 20 43 4f 4e 46 4c 49 43 54 5d  ed.[ON CONFLICT]
7680: 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20   for additional 
7690: 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 3c 2f 70 3e  information.</p>
76a0: 0a 0a 3c 70 3e 43 48 45 43 4b 20 63 6f 6e 73 74  ..<p>CHECK const
76b0: 72 61 69 6e 74 73 20 61 72 65 20 73 75 70 70 6f  raints are suppo
76c0: 72 74 65 64 20 61 73 20 6f 66 20 5b 76 65 72 73  rted as of [vers
76d0: 69 6f 6e 20 33 2e 33 2e 30 5d 2e 20 20 50 72 69  ion 3.3.0].  Pri
76e0: 6f 72 0a 74 6f 20 76 65 72 73 69 6f 6e 20 33 2e  or.to version 3.
76f0: 33 2e 30 2c 20 43 48 45 43 4b 20 63 6f 6e 73 74  3.0, CHECK const
7700: 72 61 69 6e 74 73 20 77 65 72 65 20 70 61 72 73  raints were pars
7710: 65 64 20 62 75 74 20 6e 6f 74 20 65 6e 66 6f 72  ed but not enfor
7720: 63 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  ced.</p>..<p>The
7730: 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d   number of colum
7740: 6e 73 20 69 6e 20 61 20 74 61 62 6c 65 20 69 73  ns in a table is
7750: 20 6c 69 6d 69 74 65 64 20 62 79 20 74 68 65 0a   limited by the.
7760: 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 43 4f 4c 55  [SQLITE_MAX_COLU
7770: 4d 4e 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  MN] compile-time
7780: 20 70 61 72 61 6d 65 74 65 72 2e 0a 41 20 73 69   parameter..A si
7790: 6e 67 6c 65 20 72 6f 77 20 6f 66 20 61 20 74 61  ngle row of a ta
77a0: 62 6c 65 20 63 61 6e 6e 6f 74 20 73 74 6f 72 65  ble cannot store
77b0: 20 6d 6f 72 65 20 74 68 61 6e 0a 5b 53 51 4c 49   more than.[SQLI
77c0: 54 45 5f 4d 41 58 5f 4c 45 4e 47 54 48 5d 20 62  TE_MAX_LENGTH] b
77d0: 79 74 65 73 20 6f 66 20 64 61 74 61 2e 0a 42 6f  ytes of data..Bo
77e0: 74 68 20 6f 66 20 74 68 65 73 65 20 6c 69 6d 69  th of these limi
77f0: 74 73 20 63 61 6e 20 62 65 20 6c 6f 77 65 72 65  ts can be lowere
7800: 64 20 61 74 20 72 75 6e 74 69 6d 65 20 75 73 69  d at runtime usi
7810: 6e 67 20 74 68 65 0a 5b 73 71 6c 69 74 65 33 5f  ng the.[sqlite3_
7820: 6c 69 6d 69 74 28 29 5d 20 43 2f 43 2b 2b 20 69  limit()] C/C++ i
7830: 6e 74 65 72 66 61 63 65 2e 3c 2f 70 3e 0a 0a 0a  nterface.</p>...
7840: 3c 70 3e 54 68 65 20 43 52 45 41 54 45 20 54 41  <p>The CREATE TA
7850: 42 4c 45 20 41 53 20 66 6f 72 6d 20 64 65 66 69  BLE AS form defi
7860: 6e 65 73 20 74 68 65 20 74 61 62 6c 65 20 74 6f  nes the table to
7870: 20 62 65 0a 74 68 65 20 72 65 73 75 6c 74 20 73   be.the result s
7880: 65 74 20 6f 66 20 61 20 71 75 65 72 79 2e 20 20  et of a query.  
7890: 54 68 65 20 6e 61 6d 65 73 20 6f 66 20 74 68 65  The names of the
78a0: 20 74 61 62 6c 65 20 63 6f 6c 75 6d 6e 73 20 61   table columns a
78b0: 72 65 0a 74 68 65 20 6e 61 6d 65 73 20 6f 66 20  re.the names of 
78c0: 74 68 65 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74  the columns in t
78d0: 68 65 20 72 65 73 75 6c 74 2e 3c 2f 70 3e 0a 0a  he result.</p>..
78e0: 3c 70 3e 49 66 20 74 68 65 20 6f 70 74 69 6f 6e  <p>If the option
78f0: 61 6c 20 49 46 20 4e 4f 54 20 45 58 49 53 54 53  al IF NOT EXISTS
7900: 20 63 6c 61 75 73 65 20 69 73 20 70 72 65 73 65   clause is prese
7910: 6e 74 20 61 6e 64 20 61 6e 6f 74 68 65 72 20 74  nt and another t
7920: 61 62 6c 65 0a 77 69 74 68 20 74 68 65 20 73 61  able.with the sa
7930: 6d 65 20 6e 61 6d 65 20 61 6c 65 61 64 79 20 65  me name aleady e
7940: 78 69 73 74 73 2c 20 74 68 65 6e 20 74 68 69 73  xists, then this
7950: 20 63 6f 6d 6d 61 6e 64 20 62 65 63 6f 6d 65 73   command becomes
7960: 20 61 20 6e 6f 2d 6f 70 2e 3c 2f 70 3e 0a 0a 3c   a no-op.</p>..<
7970: 70 3e 54 61 62 6c 65 73 20 61 72 65 20 72 65 6d  p>Tables are rem
7980: 6f 76 65 64 20 75 73 69 6e 67 20 74 68 65 20 3c  oved using the <
7990: 61 20 68 72 65 66 3d 22 6c 61 6e 67 5f 64 72 6f  a href="lang_dro
79a0: 70 74 61 62 6c 65 2e 68 74 6d 6c 22 3e 44 52 4f  ptable.html">DRO
79b0: 50 20 54 41 42 4c 45 3c 2f 61 3e 20 0a 73 74 61  P TABLE</a> .sta
79c0: 74 65 6d 65 6e 74 2e 20 20 3c 2f 70 3e 0a 0a 3c  tement.  </p>..<
79d0: 74 63 6c 3e 68 64 5f 66 72 61 67 6d 65 6e 74 20  tcl>hd_fragment 
79e0: 72 6f 77 69 64 20 7b 49 4e 54 45 47 45 52 20 50  rowid {INTEGER P
79f0: 52 49 4d 41 52 59 20 4b 45 59 7d 20 52 4f 57 49  RIMARY KEY} ROWI
7a00: 44 20 72 6f 77 69 64 3c 2f 74 63 6c 3e 0a 3c 68  D rowid</tcl>.<h
7a10: 33 3e 52 4f 57 49 44 73 20 61 6e 64 20 74 68 65  3>ROWIDs and the
7a20: 20 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59   INTEGER PRIMARY
7a30: 20 4b 45 59 3c 2f 68 33 3e 0a 0a 3c 70 3e 45 76   KEY</h3>..<p>Ev
7a40: 65 72 79 20 72 6f 77 20 6f 66 20 65 76 65 72 79  ery row of every
7a50: 20 53 51 4c 69 74 65 20 74 61 62 6c 65 20 68 61   SQLite table ha
7a60: 73 20 61 20 36 34 2d 62 69 74 20 73 69 67 6e 65  s a 64-bit signe
7a70: 64 20 69 6e 74 65 67 65 72 20 6b 65 79 20 0a 74  d integer key .t
7a80: 68 61 74 20 69 73 20 75 6e 69 71 75 65 20 77 69  hat is unique wi
7a90: 74 68 69 6e 20 74 68 65 20 73 61 6d 65 20 74 61  thin the same ta
7aa0: 62 6c 65 2e 0a 54 68 69 73 20 69 6e 74 65 67 65  ble..This intege
7ab0: 72 20 69 73 20 75 73 75 61 6c 6c 79 20 63 61 6c  r is usually cal
7ac0: 6c 65 64 20 74 68 65 20 22 72 6f 77 69 64 22 2e  led the "rowid".
7ad0: 20 20 54 68 65 20 72 6f 77 69 64 20 69 73 20 74    The rowid is t
7ae0: 68 65 20 61 63 74 75 61 6c 20 6b 65 79 20 75 73  he actual key us
7af0: 65 64 0a 69 6e 20 74 68 65 20 42 2d 54 72 65 65  ed.in the B-Tree
7b00: 20 74 68 61 74 20 69 6d 70 6c 65 6d 65 6e 74 73   that implements
7b10: 20 61 6e 20 53 51 4c 69 74 65 20 74 61 62 6c 65   an SQLite table
7b20: 2e 20 20 52 6f 77 73 20 61 72 65 20 73 74 6f 72  .  Rows are stor
7b30: 65 64 20 69 6e 0a 72 6f 77 69 64 20 6f 72 64 65  ed in.rowid orde
7b40: 72 2e 20 54 68 65 0a 72 6f 77 69 64 20 76 61 6c  r. The.rowid val
7b50: 75 65 20 63 61 6e 20 62 65 20 61 63 63 65 73 73  ue can be access
7b60: 65 64 20 75 73 69 6e 67 20 6f 6e 65 20 6f 66 20  ed using one of 
7b70: 74 68 65 20 73 70 65 63 69 61 6c 20 6e 61 6d 65  the special name
7b80: 73 0a 22 3c 62 3e 52 4f 57 49 44 3c 2f 62 3e 22  s."<b>ROWID</b>"
7b90: 2c 20 22 3c 62 3e 4f 49 44 3c 2f 62 3e 22 2c 20  , "<b>OID</b>", 
7ba0: 6f 72 20 22 3c 62 3e 5f 52 4f 57 49 44 5f 3c 2f  or "<b>_ROWID_</
7bb0: 62 3e 22 2e 3c 2f 70 3e 0a 0a 3c 70 3e 0a 49 66  b>".</p>..<p>.If
7bc0: 20 61 20 63 6f 6c 75 6d 6e 20 69 73 20 64 65 63   a column is dec
7bd0: 6c 61 72 65 64 20 74 6f 20 62 65 20 61 6e 20 49  lared to be an I
7be0: 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b  NTEGER PRIMARY K
7bf0: 45 59 2c 20 74 68 65 6e 20 74 68 61 74 20 63 6f  EY, then that co
7c00: 6c 75 6d 6e 20 69 73 20 6e 6f 74 0a 61 20 22 72  lumn is not.a "r
7c10: 65 61 6c 22 20 64 61 74 61 62 61 73 65 20 63 6f  eal" database co
7c20: 6c 75 6d 6e 20 62 75 74 20 69 6e 73 74 65 61 64  lumn but instead
7c30: 20 62 65 63 6f 6d 65 73 0a 61 6e 20 61 6c 69 61   becomes.an alia
7c40: 73 20 66 6f 72 20 74 68 65 20 72 6f 77 69 64 2e  s for the rowid.
7c50: 20 20 55 6e 6c 69 6b 65 20 6e 6f 72 6d 61 6c 20    Unlike normal 
7c60: 53 51 4c 69 74 65 20 63 6f 6c 75 6d 6e 73 2c 20  SQLite columns, 
7c70: 74 68 65 20 72 6f 77 69 64 0a 6d 75 73 74 20 62  the rowid.must b
7c80: 65 20 61 20 6e 6f 6e 2d 4e 55 4c 4c 20 69 6e 74  e a non-NULL int
7c90: 65 67 65 72 20 76 61 6c 75 65 2e 20 20 54 68 65  eger value.  The
7ca0: 20 72 6f 77 69 64 20 69 73 20 6e 6f 74 20 61 62   rowid is not ab
7cb0: 6c 65 20 74 6f 20 68 6f 6c 64 0a 66 6c 6f 61 74  le to hold.float
7cc0: 69 6e 67 20 70 6f 69 6e 74 20 76 61 6c 75 65 73  ing point values
7cd0: 2c 20 73 74 72 69 6e 67 73 2c 20 42 4c 4f 42 73  , strings, BLOBs
7ce0: 2c 20 6f 72 20 4e 55 4c 4c 73 2e 3c 2f 70 3e 0a  , or NULLs.</p>.
7cf0: 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 69 3e  .<blockquote><i>
7d00: 0a 41 6e 20 49 4e 54 45 47 45 52 20 50 52 49 4d  .An INTEGER PRIM
7d10: 41 52 59 20 4b 45 59 20 63 6f 6c 75 6d 6e 20 69  ARY KEY column i
7d20: 73 20 61 6e 20 61 6c 69 61 73 20 66 6f 72 20 74  s an alias for t
7d30: 68 65 20 36 34 2d 62 69 74 20 73 69 67 6e 65 64  he 64-bit signed
7d40: 20 69 6e 74 65 67 65 72 20 72 6f 77 69 64 2e 0a   integer rowid..
7d50: 3c 2f 69 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65  </i></blockquote
7d60: 3e 0a 0a 3c 70 3e 41 6e 20 49 4e 54 45 47 45 52  >..<p>An INTEGER
7d70: 20 50 52 49 4d 41 52 59 20 4b 45 59 20 63 6f 6c   PRIMARY KEY col
7d80: 75 6d 6e 20 63 61 6e 20 61 6c 73 6f 20 69 6e 63  umn can also inc
7d90: 6c 75 64 65 20 74 68 65 0a 6b 65 79 77 6f 72 64  lude the.keyword
7da0: 20 5b 41 55 54 4f 49 4e 43 52 45 4d 45 4e 54 5d   [AUTOINCREMENT]
7db0: 2e 20 20 54 68 65 20 5b 41 55 54 4f 49 4e 43 52  .  The [AUTOINCR
7dc0: 45 4d 45 4e 54 5d 20 6b 65 79 77 6f 72 64 20 6d  EMENT] keyword m
7dd0: 6f 64 69 66 69 65 64 20 74 68 65 20 77 61 79 0a  odified the way.
7de0: 74 68 61 74 20 42 2d 54 72 65 65 20 6b 65 79 73  that B-Tree keys
7df0: 20 61 72 65 20 61 75 74 6f 6d 61 74 69 63 61 6c   are automatical
7e00: 6c 79 20 67 65 6e 65 72 61 74 65 64 2e 20 20 41  ly generated.  A
7e10: 64 64 69 74 69 6f 6e 61 6c 20 64 65 74 61 69 6c  dditional detail
7e20: 0a 6f 6e 20 61 75 74 6f 6d 61 74 69 63 20 42 2d  .on automatic B-
7e30: 54 72 65 65 20 6b 65 79 20 67 65 6e 65 72 61 74  Tree key generat
7e40: 69 6f 6e 20 69 73 20 61 76 61 69 6c 61 62 6c 65  ion is available
7e50: 0a 3c 61 20 68 72 65 66 3d 22 61 75 74 6f 69 6e  .<a href="autoin
7e60: 63 2e 68 74 6d 6c 22 3e 73 65 70 61 72 61 74 65  c.html">separate
7e70: 6c 79 3c 2f 61 3e 2e 3c 2f 70 3e 0a 0a 3c 70 3e  ly</a>.</p>..<p>
7e80: 54 68 65 20 73 70 65 63 69 61 6c 20 62 65 68 61  The special beha
7e90: 76 69 6f 72 20 6f 66 20 49 4e 54 45 47 45 52 20  vior of INTEGER 
7ea0: 50 52 49 4d 41 52 59 20 4b 45 59 0a 69 73 20 6f  PRIMARY KEY.is o
7eb0: 6e 6c 79 20 61 76 61 69 6c 61 62 6c 65 20 69 66  nly available if
7ec0: 20 74 68 65 20 74 79 70 65 20 6e 61 6d 65 20 69   the type name i
7ed0: 73 20 65 78 61 63 74 6c 79 20 22 49 4e 54 45 47  s exactly "INTEG
7ee0: 45 52 22 20 28 69 6e 20 61 6e 79 20 6d 69 78 74  ER" (in any mixt
7ef0: 75 72 65 0a 6f 66 20 75 70 70 65 72 20 61 6e 64  ure.of upper and
7f00: 20 6c 6f 77 65 72 20 63 61 73 65 2e 29 20 20 4f   lower case.)  O
7f10: 74 68 65 72 20 69 6e 74 65 67 65 72 20 74 79 70  ther integer typ
7f20: 65 20 6e 61 6d 65 73 0a 6c 69 6b 65 20 22 49 4e  e names.like "IN
7f30: 54 22 20 6f 72 20 22 42 49 47 49 4e 54 22 20 6f  T" or "BIGINT" o
7f40: 72 20 22 53 48 4f 52 54 20 49 4e 54 45 47 45 52  r "SHORT INTEGER
7f50: 22 20 6f 72 20 22 55 4e 53 49 47 4e 45 44 20 49  " or "UNSIGNED I
7f60: 4e 54 45 47 45 52 22 0a 63 61 75 73 65 73 20 74  NTEGER".causes t
7f70: 68 65 20 70 72 69 6d 61 72 79 20 6b 65 79 20 63  he primary key c
7f80: 6f 6c 75 6d 6e 20 74 6f 20 62 65 68 61 76 65 20  olumn to behave 
7f90: 61 73 20 61 6e 20 6f 72 64 69 6e 61 72 79 20 74  as an ordinary t
7fa0: 61 62 6c 65 20 63 6f 6c 75 6d 6e 20 77 69 74 68  able column with
7fb0: 0a 69 6e 74 65 67 65 72 20 5b 61 66 66 69 6e 69  .integer [affini
7fc0: 74 79 5d 20 61 6e 64 20 61 20 75 6e 69 71 75 65  ty] and a unique
7fd0: 20 69 6e 64 65 78 2c 20 6e 6f 74 20 61 73 20 61   index, not as a
7fe0: 6e 20 61 6c 69 61 73 20 66 6f 72 20 74 68 65 20  n alias for the 
7ff0: 72 6f 77 69 64 2e 0a 54 68 65 20 73 70 65 63 69  rowid..The speci
8000: 61 6c 20 62 65 68 61 76 69 6f 72 20 6f 66 20 49  al behavior of I
8010: 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b  NTEGER PRIMARY K
8020: 45 59 20 69 73 20 6f 6e 6c 79 20 61 76 61 69 6c  EY is only avail
8030: 61 62 6c 65 20 69 66 20 74 68 65 0a 70 72 69 6d  able if the.prim
8040: 61 72 79 20 6b 65 79 20 69 73 20 61 20 73 69 6e  ary key is a sin
8050: 67 6c 65 20 63 6f 6c 75 6d 6e 2e 20 20 4d 75 6c  gle column.  Mul
8060: 74 69 2d 63 6f 6c 75 6d 6e 20 70 72 69 6d 61 72  ti-column primar
8070: 79 20 6b 65 79 73 20 64 6f 20 6e 6f 74 20 62 65  y keys do not be
8080: 63 6f 6d 65 0a 61 6c 69 61 73 65 73 20 66 6f 72  come.aliases for
8090: 20 74 68 65 20 72 6f 77 69 64 2e 0a 54 68 65 20   the rowid..The 
80a0: 41 55 54 4f 49 4e 43 52 45 4d 45 4e 54 20 6b 65  AUTOINCREMENT ke
80b0: 79 77 6f 72 64 20 6f 6e 6c 79 20 77 6f 72 6b 73  yword only works
80c0: 20 6f 6e 20 61 20 63 6f 6c 75 6d 6e 20 74 68 61   on a column tha
80d0: 74 20 69 73 20 61 6e 20 61 6c 69 61 73 0a 66 6f  t is an alias.fo
80e0: 72 20 74 68 65 20 72 6f 77 69 64 2e 3c 2f 70 3e  r the rowid.</p>
80f0: 0a 0a 3c 70 3e 4e 6f 74 65 20 74 68 61 74 20 73  ..<p>Note that s
8100: 65 61 72 63 68 65 73 20 61 67 61 69 6e 73 74 20  earches against 
8110: 61 20 72 6f 77 69 64 20 61 72 65 20 67 65 6e 65  a rowid are gene
8120: 72 61 6c 6c 79 20 61 62 6f 75 74 20 74 77 69 63  rally about twic
8130: 65 20 61 73 0a 66 61 73 74 20 61 73 20 73 65 61  e as.fast as sea
8140: 72 63 68 65 73 20 61 67 61 69 6e 73 74 20 61 6e  rches against an
8150: 79 20 6f 74 68 65 72 20 50 52 49 4d 41 52 59 20  y other PRIMARY 
8160: 4b 45 59 20 6f 72 20 69 6e 64 65 78 65 64 20 76  KEY or indexed v
8170: 61 6c 75 65 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 3c  alue..</p>..<p><
8180: 62 3e 47 6f 6f 66 79 20 62 65 68 61 76 69 6f 72  b>Goofy behavior
8190: 20 61 6c 65 72 74 3a 3c 2f 62 3e 20 20 54 68 65   alert:</b>  The
81a0: 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 68 72 65 65   following three
81b0: 20 64 65 63 6c 61 72 61 74 69 6f 6e 73 20 61 6c   declarations al
81c0: 6c 20 63 61 75 73 65 0a 74 68 65 20 63 6f 6c 75  l cause.the colu
81d0: 6d 6e 20 22 78 22 20 62 65 20 61 6e 20 61 6c 69  mn "x" be an ali
81e0: 61 73 20 66 6f 72 20 74 68 65 20 72 6f 77 69 64  as for the rowid
81f0: 3a 3c 2f 70 3e 0a 0a 3c 75 6c 3e 0a 3c 6c 69 3e  :</p>..<ul>.<li>
8200: 3c 74 74 3e 43 52 45 41 54 45 20 54 41 42 4c 45  <tt>CREATE TABLE
8210: 20 74 28 78 20 49 4e 54 45 47 45 52 20 50 52 49   t(x INTEGER PRI
8220: 4d 41 52 59 20 4b 45 59 20 41 53 43 2c 20 79 2c  MARY KEY ASC, y,
8230: 20 7a 29 3b 3c 2f 74 74 3e 0a 3c 6c 69 3e 3c 74   z);</tt>.<li><t
8240: 74 3e 43 52 45 41 54 45 20 54 41 42 4c 45 20 74  t>CREATE TABLE t
8250: 28 78 20 49 4e 54 45 47 45 52 2c 20 79 2c 20 7a  (x INTEGER, y, z
8260: 2c 20 50 52 49 4d 41 52 59 20 4b 45 59 28 78 20  , PRIMARY KEY(x 
8270: 41 53 43 29 29 3b 3c 2f 74 74 3e 0a 3c 6c 69 3e  ASC));</tt>.<li>
8280: 3c 74 74 3e 43 52 45 41 54 45 20 54 41 42 4c 45  <tt>CREATE TABLE
8290: 20 74 28 78 20 49 4e 54 45 47 45 52 2c 20 79 2c   t(x INTEGER, y,
82a0: 20 7a 2c 20 50 52 49 4d 41 52 59 20 4b 45 59 28   z, PRIMARY KEY(
82b0: 78 20 44 45 53 43 29 29 3b 3c 2f 74 74 3e 0a 3c  x DESC));</tt>.<
82c0: 2f 75 6c 3e 0a 0a 3c 70 3e 42 75 74 2c 20 69 6e  /ul>..<p>But, in
82d0: 20 63 6f 6e 74 72 61 73 74 2c 20 74 68 65 20 66   contrast, the f
82e0: 6f 6c 6c 6f 77 69 6e 67 20 64 65 63 6c 61 72 61  ollowing declara
82f0: 74 69 6f 6e 20 64 6f 65 73 20 3c 75 3e 6e 6f 74  tion does <u>not
8300: 3c 2f 75 3e 20 72 65 73 75 6c 74 20 69 6e 0a 22  </u> result in."
8310: 78 22 20 62 65 69 6e 67 20 61 6e 20 61 6c 69 61  x" being an alia
8320: 73 20 66 6f 72 20 74 68 65 20 72 6f 77 69 64 3a  s for the rowid:
8330: 3c 2f 70 3e 0a 0a 3c 75 6c 3e 0a 3c 6c 69 3e 3c  </p>..<ul>.<li><
8340: 74 74 3e 43 52 45 41 54 45 20 54 41 42 4c 45 20  tt>CREATE TABLE 
8350: 74 28 78 20 49 4e 54 45 47 45 52 20 50 52 49 4d  t(x INTEGER PRIM
8360: 41 52 59 20 4b 45 59 20 44 45 53 43 2c 20 79 2c  ARY KEY DESC, y,
8370: 20 7a 29 3b 3c 2f 74 74 3e 0a 3c 2f 75 6c 3e 0a   z);</tt>.</ul>.
8380: 0a 3c 70 3e 54 68 69 73 20 61 73 79 6d 6d 65 74  .<p>This asymmet
8390: 72 69 63 61 6c 20 62 65 68 61 76 69 6f 72 20 69  rical behavior i
83a0: 73 20 75 6e 66 6f 72 74 75 6e 61 74 65 20 61 6e  s unfortunate an
83b0: 64 20 69 73 20 72 65 61 6c 6c 79 20 64 75 65 20  d is really due 
83c0: 74 6f 20 61 20 62 75 67 0a 69 6e 20 74 68 65 20  to a bug.in the 
83d0: 70 61 72 73 65 72 20 69 6e 20 65 61 72 6c 79 20  parser in early 
83e0: 76 65 72 73 69 6f 6e 73 20 6f 66 20 53 51 4c 69  versions of SQLi
83f0: 74 65 2e 20 20 42 75 74 20 66 69 78 69 6e 67 20  te.  But fixing 
8400: 74 68 65 20 62 75 67 20 77 6f 75 6c 64 0a 72 65  the bug would.re
8410: 73 75 6c 74 20 69 6e 20 76 65 72 79 20 73 65 72  sult in very ser
8420: 69 6f 75 73 20 62 61 63 6b 77 61 72 64 73 20 69  ious backwards i
8430: 6e 63 6f 6d 70 61 74 69 62 69 6c 69 74 69 65 73  ncompatibilities
8440: 2e 20 20 54 68 65 20 53 51 4c 69 74 65 20 64 65  .  The SQLite de
8450: 76 65 6c 6f 70 65 72 73 0a 66 65 65 6c 20 74 68  velopers.feel th
8460: 61 74 20 67 6f 6f 66 79 20 62 65 68 61 76 69 6f  at goofy behavio
8470: 72 20 69 6e 20 61 6e 20 63 6f 72 6e 65 72 20 63  r in an corner c
8480: 61 73 65 20 69 73 20 66 61 72 20 62 65 74 74 65  ase is far bette
8490: 72 20 74 68 61 6e 0a 61 20 63 6f 6d 70 61 74 69  r than.a compati
84a0: 62 69 6c 69 74 79 20 62 72 65 61 6b 2c 20 73 6f  bility break, so
84b0: 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 62 65   the original be
84c0: 68 61 76 69 6f 72 20 69 73 20 72 65 74 61 69 6e  havior is retain
84d0: 65 64 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23  ed.</p>..<tcl>.#
84e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
84f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8500: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8510: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8520: 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 53 65  #############.Se
8530: 63 74 69 6f 6e 20 7b 43 52 45 41 54 45 20 54 52  ction {CREATE TR
8540: 49 47 47 45 52 7d 20 63 72 65 61 74 65 74 72 69  IGGER} createtri
8550: 67 67 65 72 20 7b 7b 43 52 45 41 54 45 20 54 52  gger {{CREATE TR
8560: 49 47 47 45 52 7d 7d 0a 0a 42 75 62 62 6c 65 44  IGGER}}..BubbleD
8570: 69 61 67 72 61 6d 20 63 72 65 61 74 65 2d 74 72  iagram create-tr
8580: 69 67 67 65 72 2d 73 74 6d 74 20 31 0a 3c 2f 74  igger-stmt 1.</t
8590: 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20 43 52 45 41  cl>..<p>The CREA
85a0: 54 45 20 54 52 49 47 47 45 52 20 73 74 61 74 65  TE TRIGGER state
85b0: 6d 65 6e 74 20 69 73 20 75 73 65 64 20 74 6f 20  ment is used to 
85c0: 61 64 64 20 74 72 69 67 67 65 72 73 20 74 6f 20  add triggers to 
85d0: 74 68 65 20 0a 64 61 74 61 62 61 73 65 20 73 63  the .database sc
85e0: 68 65 6d 61 2e 20 54 72 69 67 67 65 72 73 20 61  hema. Triggers a
85f0: 72 65 20 64 61 74 61 62 61 73 65 20 6f 70 65 72  re database oper
8600: 61 74 69 6f 6e 73 20 0a 74 68 61 74 20 61 72 65  ations .that are
8610: 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 70   automatically p
8620: 65 72 66 6f 72 6d 65 64 20 77 68 65 6e 20 61 20  erformed when a 
8630: 73 70 65 63 69 66 69 65 64 20 64 61 74 61 62 61  specified databa
8640: 73 65 20 65 76 65 6e 74 0a 6f 63 63 75 72 73 2e  se event.occurs.
8650: 20 20 3c 2f 70 3e 0a 0a 3c 70 3e 41 20 74 72 69    </p>..<p>A tri
8660: 67 67 65 72 20 6d 61 79 20 62 65 20 73 70 65 63  gger may be spec
8670: 69 66 69 65 64 20 74 6f 20 66 69 72 65 20 77 68  ified to fire wh
8680: 65 6e 65 76 65 72 20 61 20 5b 44 45 4c 45 54 45  enever a [DELETE
8690: 5d 2c 20 5b 49 4e 53 45 52 54 5d 2c 0a 6f 72 20  ], [INSERT],.or 
86a0: 5b 55 50 44 41 54 45 5d 20 6f 66 20 61 0a 70 61  [UPDATE] of a.pa
86b0: 72 74 69 63 75 6c 61 72 20 64 61 74 61 62 61 73  rticular databas
86c0: 65 20 74 61 62 6c 65 20 6f 63 63 75 72 73 2c 20  e table occurs, 
86d0: 6f 72 20 77 68 65 6e 65 76 65 72 20 61 6e 20 5b  or whenever an [
86e0: 55 50 44 41 54 45 5d 20 6f 63 63 75 72 73 20 6f  UPDATE] occurs o
86f0: 6e 0a 6f 6e 20 6f 6e 65 20 6f 72 20 6d 6f 72 65  n.on one or more
8700: 20 73 70 65 63 69 66 69 65 64 20 63 6f 6c 75 6d   specified colum
8710: 6e 73 20 6f 66 20 61 20 74 61 62 6c 65 2e 3c 2f  ns of a table.</
8720: 70 3e 0a 0a 3c 70 3e 41 74 20 74 68 69 73 20 74  p>..<p>At this t
8730: 69 6d 65 20 53 51 4c 69 74 65 20 73 75 70 70 6f  ime SQLite suppo
8740: 72 74 73 20 6f 6e 6c 79 20 46 4f 52 20 45 41 43  rts only FOR EAC
8750: 48 20 52 4f 57 20 74 72 69 67 67 65 72 73 2c 20  H ROW triggers, 
8760: 6e 6f 74 20 46 4f 52 20 45 41 43 48 0a 53 54 41  not FOR EACH.STA
8770: 54 45 4d 45 4e 54 20 74 72 69 67 67 65 72 73 2e  TEMENT triggers.
8780: 20 48 65 6e 63 65 20 65 78 70 6c 69 63 69 74 6c   Hence explicitl
8790: 79 20 73 70 65 63 69 66 79 69 6e 67 20 46 4f 52  y specifying FOR
87a0: 20 45 41 43 48 20 52 4f 57 20 69 73 20 6f 70 74   EACH ROW is opt
87b0: 69 6f 6e 61 6c 2e 20 20 46 4f 52 0a 45 41 43 48  ional.  FOR.EACH
87c0: 20 52 4f 57 20 69 6d 70 6c 69 65 73 20 74 68 61   ROW implies tha
87d0: 74 20 74 68 65 20 53 51 4c 20 73 74 61 74 65 6d  t the SQL statem
87e0: 65 6e 74 73 20 73 70 65 63 69 66 69 65 64 20 69  ents specified i
87f0: 6e 20 74 68 65 20 74 72 69 67 67 65 72 0a 6d 61  n the trigger.ma
8800: 79 20 62 65 20 65 78 65 63 75 74 65 64 20 28 64  y be executed (d
8810: 65 70 65 6e 64 69 6e 67 20 6f 6e 20 74 68 65 20  epending on the 
8820: 57 48 45 4e 20 63 6c 61 75 73 65 29 20 66 6f 72  WHEN clause) for
8830: 20 65 61 63 68 20 64 61 74 61 62 61 73 65 20 72   each database r
8840: 6f 77 20 62 65 69 6e 67 0a 69 6e 73 65 72 74 65  ow being.inserte
8850: 64 2c 20 75 70 64 61 74 65 64 20 6f 72 20 64 65  d, updated or de
8860: 6c 65 74 65 64 20 62 79 20 74 68 65 20 73 74 61  leted by the sta
8870: 74 65 6d 65 6e 74 20 63 61 75 73 69 6e 67 20 74  tement causing t
8880: 68 65 20 74 72 69 67 67 65 72 20 74 6f 20 66 69  he trigger to fi
8890: 72 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 42 6f 74 68  re.</p>..<p>Both
88a0: 20 74 68 65 20 57 48 45 4e 20 63 6c 61 75 73 65   the WHEN clause
88b0: 20 61 6e 64 20 74 68 65 20 74 72 69 67 67 65 72   and the trigger
88c0: 20 61 63 74 69 6f 6e 73 20 6d 61 79 20 61 63 63   actions may acc
88d0: 65 73 73 20 65 6c 65 6d 65 6e 74 73 20 6f 66 20  ess elements of 
88e0: 0a 74 68 65 20 72 6f 77 20 62 65 69 6e 67 20 69  .the row being i
88f0: 6e 73 65 72 74 65 64 2c 20 64 65 6c 65 74 65 64  nserted, deleted
8900: 20 6f 72 20 75 70 64 61 74 65 64 20 75 73 69 6e   or updated usin
8910: 67 20 72 65 66 65 72 65 6e 63 65 73 20 6f 66 20  g references of 
8920: 74 68 65 20 66 6f 72 6d 20 0a 22 4e 45 57 2e 3c  the form ."NEW.<
8930: 69 3e 63 6f 6c 75 6d 6e 2d 6e 61 6d 65 3c 2f 69  i>column-name</i
8940: 3e 22 20 61 6e 64 20 22 4f 4c 44 2e 3c 69 3e 63  >" and "OLD.<i>c
8950: 6f 6c 75 6d 6e 2d 6e 61 6d 65 3c 2f 69 3e 22 2c  olumn-name</i>",
8960: 20 77 68 65 72 65 0a 3c 69 3e 63 6f 6c 75 6d 6e   where.<i>column
8970: 2d 6e 61 6d 65 3c 2f 69 3e 20 69 73 20 74 68 65  -name</i> is the
8980: 20 6e 61 6d 65 20 6f 66 20 61 20 63 6f 6c 75 6d   name of a colum
8990: 6e 20 66 72 6f 6d 20 74 68 65 20 74 61 62 6c 65  n from the table
89a0: 20 74 68 61 74 20 74 68 65 20 74 72 69 67 67 65   that the trigge
89b0: 72 0a 69 73 20 61 73 73 6f 63 69 61 74 65 64 20  r.is associated 
89c0: 77 69 74 68 2e 20 4f 4c 44 20 61 6e 64 20 4e 45  with. OLD and NE
89d0: 57 20 72 65 66 65 72 65 6e 63 65 73 20 6d 61 79  W references may
89e0: 20 6f 6e 6c 79 20 62 65 20 75 73 65 64 20 69 6e   only be used in
89f0: 20 74 72 69 67 67 65 72 73 20 6f 6e 0a 65 76 65   triggers on.eve
8a00: 6e 74 73 20 66 6f 72 20 77 68 69 63 68 20 74 68  nts for which th
8a10: 65 79 20 61 72 65 20 72 65 6c 65 76 61 6e 74 2c  ey are relevant,
8a20: 20 61 73 20 66 6f 6c 6c 6f 77 73 3a 3c 2f 70 3e   as follows:</p>
8a30: 0a 0a 3c 74 61 62 6c 65 20 62 6f 72 64 65 72 3d  ..<table border=
8a40: 30 20 63 65 6c 6c 70 61 64 64 69 6e 67 3d 31 30  0 cellpadding=10
8a50: 3e 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67  >.<tr>.<td valig
8a60: 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72  n="top" align="r
8a70: 69 67 68 74 22 20 77 69 64 74 68 3d 31 32 30 3e  ight" width=120>
8a80: 3c 69 3e 49 4e 53 45 52 54 3c 2f 69 3e 3c 2f 74  <i>INSERT</i></t
8a90: 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  d>.<td valign="t
8aa0: 6f 70 22 3e 4e 45 57 20 72 65 66 65 72 65 6e 63  op">NEW referenc
8ab0: 65 73 20 61 72 65 20 76 61 6c 69 64 3c 2f 74 64  es are valid</td
8ac0: 3e 0a 3c 2f 74 72 3e 0a 3c 74 72 3e 0a 3c 74 64  >.</tr>.<tr>.<td
8ad0: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c   valign="top" al
8ae0: 69 67 6e 3d 22 72 69 67 68 74 22 20 77 69 64 74  ign="right" widt
8af0: 68 3d 31 32 30 3e 3c 69 3e 55 50 44 41 54 45 3c  h=120><i>UPDATE<
8b00: 2f 69 3e 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c  /i></td>.<td val
8b10: 69 67 6e 3d 22 74 6f 70 22 3e 4e 45 57 20 61 6e  ign="top">NEW an
8b20: 64 20 4f 4c 44 20 72 65 66 65 72 65 6e 63 65 73  d OLD references
8b30: 20 61 72 65 20 76 61 6c 69 64 3c 2f 74 64 3e 0a   are valid</td>.
8b40: 3c 2f 74 72 3e 0a 3c 74 72 3e 0a 3c 74 64 20 76  </tr>.<tr>.<td v
8b50: 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67  align="top" alig
8b60: 6e 3d 22 72 69 67 68 74 22 20 77 69 64 74 68 3d  n="right" width=
8b70: 31 32 30 3e 3c 69 3e 44 45 4c 45 54 45 3c 2f 69  120><i>DELETE</i
8b80: 3e 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67  ></td>.<td valig
8b90: 6e 3d 22 74 6f 70 22 3e 4f 4c 44 20 72 65 66 65  n="top">OLD refe
8ba0: 72 65 6e 63 65 73 20 61 72 65 20 76 61 6c 69 64  rences are valid
8bb0: 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 2f 74 61  </td>.</tr>.</ta
8bc0: 62 6c 65 3e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 49 66  ble>.</p>..<p>If
8bd0: 20 61 20 57 48 45 4e 20 63 6c 61 75 73 65 20 69   a WHEN clause i
8be0: 73 20 73 75 70 70 6c 69 65 64 2c 20 74 68 65 20  s supplied, the 
8bf0: 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 20 73  SQL statements s
8c00: 70 65 63 69 66 69 65 64 0a 61 72 65 20 6f 6e 6c  pecified.are onl
8c10: 79 20 65 78 65 63 75 74 65 64 20 66 6f 72 20 72  y executed for r
8c20: 6f 77 73 20 66 6f 72 20 77 68 69 63 68 20 74 68  ows for which th
8c30: 65 20 57 48 45 4e 0a 63 6c 61 75 73 65 20 69 73  e WHEN.clause is
8c40: 20 74 72 75 65 2e 20 49 66 20 6e 6f 20 57 48 45   true. If no WHE
8c50: 4e 20 63 6c 61 75 73 65 20 69 73 20 73 75 70 70  N clause is supp
8c60: 6c 69 65 64 2c 20 74 68 65 20 53 51 4c 20 73 74  lied, the SQL st
8c70: 61 74 65 6d 65 6e 74 73 0a 61 72 65 20 65 78 65  atements.are exe
8c80: 63 75 74 65 64 20 66 6f 72 20 61 6c 6c 20 72 6f  cuted for all ro
8c90: 77 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20  ws.</p>..<p>The 
8ca0: 42 45 46 4f 52 45 20 6f 72 20 41 46 54 45 52 20  BEFORE or AFTER 
8cb0: 6b 65 79 77 6f 72 64 20 64 65 74 65 72 6d 69 6e  keyword determin
8cc0: 65 73 20 77 68 65 6e 20 74 68 65 20 74 72 69 67  es when the trig
8cd0: 67 65 72 20 61 63 74 69 6f 6e 73 0a 77 69 6c 6c  ger actions.will
8ce0: 20 62 65 20 65 78 65 63 75 74 65 64 20 72 65 6c   be executed rel
8cf0: 61 74 69 76 65 20 74 6f 20 74 68 65 20 69 6e 73  ative to the ins
8d00: 65 72 74 69 6f 6e 2c 20 6d 6f 64 69 66 69 63 61  ertion, modifica
8d10: 74 69 6f 6e 20 6f 72 20 72 65 6d 6f 76 61 6c 20  tion or removal 
8d20: 6f 66 20 74 68 65 0a 61 73 73 6f 63 69 61 74 65  of the.associate
8d30: 64 20 72 6f 77 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41  d row.</p>..<p>A
8d40: 6e 20 5b 4f 4e 20 43 4f 4e 46 4c 49 43 54 5d 20  n [ON CONFLICT] 
8d50: 63 6c 61 75 73 65 20 6d 61 79 20 62 65 20 73 70  clause may be sp
8d60: 65 63 69 66 69 65 64 20 61 73 20 70 61 72 74 20  ecified as part 
8d70: 6f 66 20 61 6e 20 5b 55 50 44 41 54 45 5d 20 6f  of an [UPDATE] o
8d80: 72 20 5b 49 4e 53 45 52 54 5d 0a 61 63 74 69 6f  r [INSERT].actio
8d90: 6e 20 77 69 74 68 69 6e 20 74 68 65 20 62 6f 64  n within the bod
8da0: 79 20 6f 66 20 74 68 65 20 74 72 69 67 67 65 72  y of the trigger
8db0: 2e 0a 48 6f 77 65 76 65 72 20 69 66 20 61 6e 20  ..However if an 
8dc0: 5b 4f 4e 20 43 4f 4e 46 4c 49 43 54 5d 20 63 6c  [ON CONFLICT] cl
8dd0: 61 75 73 65 20 69 73 20 73 70 65 63 69 66 69 65  ause is specifie
8de0: 64 20 61 73 20 70 61 72 74 20 6f 66 20 0a 74 68  d as part of .th
8df0: 65 20 73 74 61 74 65 6d 65 6e 74 20 63 61 75 73  e statement caus
8e00: 69 6e 67 20 74 68 65 20 74 72 69 67 67 65 72 20  ing the trigger 
8e10: 74 6f 20 66 69 72 65 2c 20 74 68 65 6e 20 63 6f  to fire, then co
8e20: 6e 66 6c 69 63 74 20 68 61 6e 64 6c 69 6e 67 0a  nflict handling.
8e30: 70 6f 6c 69 63 79 20 6f 66 20 74 68 65 20 6f 75  policy of the ou
8e40: 74 65 72 20 73 74 61 74 65 6d 65 6e 74 20 69 73  ter statement is
8e50: 20 75 73 65 64 20 69 6e 73 74 65 61 64 2e 3c 2f   used instead.</
8e60: 70 3e 0a 0a 3c 70 3e 54 72 69 67 67 65 72 73 20  p>..<p>Triggers 
8e70: 61 72 65 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c  are automaticall
8e80: 79 20 5b 44 52 4f 50 20 54 52 49 47 47 45 52 20  y [DROP TRIGGER 
8e90: 7c 20 64 72 6f 70 70 65 64 5d 0a 77 68 65 6e 20  | dropped].when 
8ea0: 74 68 65 20 74 61 62 6c 65 20 74 68 61 74 20 74  the table that t
8eb0: 68 65 79 20 61 72 65 20 0a 61 73 73 6f 63 69 61  hey are .associa
8ec0: 74 65 64 20 77 69 74 68 20 28 74 68 65 20 3c 69  ted with (the <i
8ed0: 3e 74 61 62 6c 65 2d 6e 61 6d 65 3c 2f 69 3e 20  >table-name</i> 
8ee0: 74 61 62 6c 65 29 20 69 73 20 0a 5b 44 52 4f 50  table) is .[DROP
8ef0: 20 54 41 42 4c 45 20 7c 20 64 72 6f 70 70 65 64   TABLE | dropped
8f00: 5d 2e 20 20 48 6f 77 65 76 65 72 20 69 66 20 74  ].  However if t
8f10: 68 65 20 74 68 65 20 74 72 69 67 67 65 72 20 61  he the trigger a
8f20: 63 74 69 6f 6e 73 20 72 65 66 65 72 65 6e 63 65  ctions reference
8f30: 0a 6f 74 68 65 72 20 74 61 62 6c 65 73 2c 20 74  .other tables, t
8f40: 68 65 20 74 72 69 67 67 65 72 20 69 73 20 6e 6f  he trigger is no
8f50: 74 20 64 72 6f 70 70 65 64 20 6f 72 20 6d 6f 64  t dropped or mod
8f60: 69 66 69 65 64 20 69 66 20 74 68 6f 73 65 20 6f  ified if those o
8f70: 74 68 65 72 0a 74 61 62 6c 65 73 20 61 72 65 20  ther.tables are 
8f80: 5b 44 52 4f 50 20 54 41 42 4c 45 20 7c 20 64 72  [DROP TABLE | dr
8f90: 6f 70 70 65 64 5d 20 6f 72 20 5b 41 4c 54 45 52  opped] or [ALTER
8fa0: 20 54 41 42 4c 45 20 7c 20 6d 6f 64 69 66 69 65   TABLE | modifie
8fb0: 64 5d 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 72 69 67  d].</p>..<p>Trig
8fc0: 67 65 72 73 20 61 72 65 20 72 65 6d 6f 76 65 64  gers are removed
8fd0: 20 75 73 69 6e 67 20 74 68 65 20 5b 44 52 4f 50   using the [DROP
8fe0: 20 54 52 49 47 47 45 52 5d 20 73 74 61 74 65 6d   TRIGGER] statem
8ff0: 65 6e 74 2e 3c 2f 70 3e 0a 0a 3c 68 33 3e 53 79  ent.</p>..<h3>Sy
9000: 6e 74 61 78 20 52 65 73 74 72 69 63 74 69 6f 6e  ntax Restriction
9010: 73 20 4f 6e 20 55 50 44 41 54 45 2c 20 44 45 4c  s On UPDATE, DEL
9020: 45 54 45 2c 20 61 6e 64 20 49 4e 53 45 52 54 20  ETE, and INSERT 
9030: 53 74 61 74 65 6d 65 6e 74 73 20 57 69 74 68 69  Statements Withi
9040: 6e 0a 20 20 20 20 54 72 69 67 67 65 72 73 3c 2f  n.    Triggers</
9050: 68 33 3e 0a 0a 3c 70 3e 54 68 65 20 5b 55 50 44  h3>..<p>The [UPD
9060: 41 54 45 5d 2c 20 5b 44 45 4c 45 54 45 5d 2c 20  ATE], [DELETE], 
9070: 61 6e 64 20 5b 49 4e 53 45 52 54 5d 0a 73 74 61  and [INSERT].sta
9080: 74 65 6d 65 6e 74 73 20 77 69 74 68 69 6e 20 74  tements within t
9090: 72 69 67 67 65 72 73 20 64 6f 20 6e 6f 74 20 73  riggers do not s
90a0: 75 70 70 6f 72 74 0a 74 68 65 20 66 75 6c 6c 20  upport.the full 
90b0: 73 79 6e 74 61 78 20 66 6f 72 20 5b 55 50 44 41  syntax for [UPDA
90c0: 54 45 5d 2c 20 5b 44 45 4c 45 54 45 5d 2c 20 61  TE], [DELETE], a
90d0: 6e 64 20 5b 49 4e 53 45 52 54 5d 20 73 74 61 74  nd [INSERT] stat
90e0: 65 6d 65 6e 74 73 2e 20 20 54 68 65 20 66 6f 6c  ements.  The fol
90f0: 6c 6f 77 69 6e 67 0a 72 65 73 74 72 69 63 74 69  lowing.restricti
9100: 6f 6e 73 20 61 70 70 6c 79 3a 3c 2f 70 3e 0a 0a  ons apply:</p>..
9110: 3c 75 6c 3e 0a 3c 6c 69 3e 3c 70 3e 0a 20 20 54  <ul>.<li><p>.  T
9120: 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 74  he name of the t
9130: 61 62 6c 65 20 74 6f 20 62 65 20 6d 6f 64 69 66  able to be modif
9140: 69 65 64 20 69 6e 20 61 6e 20 5b 55 50 44 41 54  ied in an [UPDAT
9150: 45 5d 2c 20 5b 44 45 4c 45 54 45 5d 2c 20 6f 72  E], [DELETE], or
9160: 20 5b 49 4e 53 45 52 54 5d 0a 20 20 73 74 61 74   [INSERT].  stat
9170: 65 6d 65 6e 74 20 6d 75 73 74 20 62 65 20 61 6e  ement must be an
9180: 20 75 6e 71 75 61 6c 69 66 69 65 64 20 74 61 62   unqualified tab
9190: 6c 65 20 6e 61 6d 65 2e 20 20 49 6e 20 6f 74 68  le name.  In oth
91a0: 65 72 20 77 6f 72 64 73 2c 20 6f 6e 65 20 6d 75  er words, one mu
91b0: 73 74 0a 20 20 75 73 65 20 6a 75 73 74 20 22 3c  st.  use just "<
91c0: 69 3e 74 61 62 6c 65 6e 61 6d 65 3c 2f 69 3e 22  i>tablename</i>"
91d0: 20 6e 6f 74 20 22 3c 69 3e 64 61 74 61 62 61 73   not "<i>databas
91e0: 65 3c 2f 69 3e 3c 62 3e 2e 3c 2f 62 3e 3c 69 3e  e</i><b>.</b><i>
91f0: 74 61 62 6c 65 6e 61 6d 65 3c 2f 69 3e 22 0a 20  tablename</i>". 
9200: 20 77 68 65 6e 20 73 70 65 63 69 66 79 69 6e 67   when specifying
9210: 20 74 68 65 20 74 61 62 6c 65 2e 20 20 54 68 65   the table.  The
9220: 20 74 61 62 6c 65 20 74 6f 20 62 65 20 6d 6f 64   table to be mod
9230: 69 66 69 65 64 20 6d 75 73 74 20 65 78 69 73 74  ified must exist
9240: 20 69 6e 20 74 68 65 0a 20 20 73 61 6d 65 20 64   in the.  same d
9250: 61 74 61 62 61 73 65 20 61 73 20 74 68 65 20 74  atabase as the t
9260: 61 62 6c 65 20 6f 72 20 76 69 65 77 20 74 6f 20  able or view to 
9270: 77 68 69 63 68 20 74 68 65 20 74 72 69 67 67 65  which the trigge
9280: 72 20 69 73 20 61 74 74 61 63 68 65 64 2e 0a 20  r is attached.. 
9290: 20 3c 2f 70 3e 3c 2f 6c 69 3e 0a 0a 3c 6c 69 3e   </p></li>..<li>
92a0: 3c 70 3e 0a 20 20 54 68 65 20 22 49 4e 53 45 52  <p>.  The "INSER
92b0: 54 20 49 4e 54 4f 20 3c 69 3e 74 61 62 6c 65 3c  T INTO <i>table<
92c0: 2f 69 3e 20 44 45 46 41 55 4c 54 20 56 41 4c 55  /i> DEFAULT VALU
92d0: 45 53 22 20 66 6f 72 6d 20 6f 66 20 74 68 65 20  ES" form of the 
92e0: 5b 49 4e 53 45 52 54 5d 20 73 74 61 74 65 6d 65  [INSERT] stateme
92f0: 6e 74 0a 20 20 69 73 20 6e 6f 74 20 73 75 70 70  nt.  is not supp
9300: 6f 72 74 65 64 2e 0a 20 20 3c 2f 70 3e 3c 2f 6c  orted..  </p></l
9310: 69 3e 0a 0a 3c 6c 69 3e 3c 70 3e 0a 20 20 54 68  i>..<li><p>.  Th
9320: 65 20 49 4e 44 45 58 45 44 20 42 59 20 61 6e 64  e INDEXED BY and
9330: 20 4e 4f 54 20 49 4e 44 45 58 45 44 20 63 6c 61   NOT INDEXED cla
9340: 75 73 65 73 20 61 72 65 20 6e 6f 74 20 73 75 70  uses are not sup
9350: 70 6f 72 74 65 64 20 66 6f 72 20 5b 55 50 44 41  ported for [UPDA
9360: 54 45 5d 20 61 6e 64 0a 20 20 5b 44 45 4c 45 54  TE] and.  [DELET
9370: 45 5d 20 73 74 61 74 65 6d 65 6e 74 73 2e 0a 20  E] statements.. 
9380: 20 3c 2f 70 3e 3c 2f 6c 69 3e 0a 0a 3c 6c 69 3e   </p></li>..<li>
9390: 3c 70 3e 0a 20 20 54 68 65 20 4f 52 44 45 52 20  <p>.  The ORDER 
93a0: 42 59 20 61 6e 64 20 4c 49 4d 49 54 20 63 6c 61  BY and LIMIT cla
93b0: 75 73 65 73 20 6f 6e 20 5b 55 50 44 41 54 45 5d  uses on [UPDATE]
93c0: 20 61 6e 64 20 5b 44 45 4c 45 54 45 5d 20 73 74   and [DELETE] st
93d0: 61 74 65 6d 65 6e 74 73 20 61 72 65 20 6e 6f 74  atements are not
93e0: 0a 20 20 73 75 70 70 6f 72 74 65 64 2e 20 20 4f  .  supported.  O
93f0: 52 44 45 52 20 42 59 20 61 6e 64 20 4c 49 4d 49  RDER BY and LIMI
9400: 54 20 61 72 65 20 6e 6f 74 20 6e 6f 72 6d 61 6c  T are not normal
9410: 6c 79 20 73 75 70 70 6f 72 74 65 64 20 66 6f 72  ly supported for
9420: 20 5b 55 50 44 41 54 45 5d 20 6f 72 0a 20 20 5b   [UPDATE] or.  [
9430: 44 45 4c 45 54 45 5d 20 69 6e 20 61 6e 79 20 63  DELETE] in any c
9440: 6f 6e 74 65 78 74 20 62 75 74 20 63 61 6e 20 62  ontext but can b
9450: 65 20 65 6e 61 62 6c 65 64 20 66 6f 72 20 74 6f  e enabled for to
9460: 70 2d 6c 65 76 65 6c 20 73 74 61 74 65 6d 65 6e  p-level statemen
9470: 74 73 0a 20 20 75 73 69 6e 67 20 74 68 65 20 5b  ts.  using the [
9480: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 55 50  SQLITE_ENABLE_UP
9490: 44 41 54 45 5f 44 45 4c 45 54 45 5f 4c 49 4d 49  DATE_DELETE_LIMI
94a0: 54 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  T] compile-time 
94b0: 6f 70 74 69 6f 6e 2e 20 20 48 6f 77 65 76 65 72  option.  However
94c0: 2c 0a 20 20 74 68 61 74 20 63 6f 6d 70 69 6c 65  ,.  that compile
94d0: 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 6f 6e 6c  -time option onl
94e0: 79 20 61 70 70 6c 69 65 73 20 74 6f 20 74 6f 70  y applies to top
94f0: 2d 6c 65 76 65 6c 20 5b 55 50 44 41 54 45 5d 20  -level [UPDATE] 
9500: 61 6e 64 20 5b 44 45 4c 45 54 45 5d 0a 20 20 73  and [DELETE].  s
9510: 74 61 74 65 6d 65 6e 74 73 2c 20 6e 6f 74 20 5b  tatements, not [
9520: 55 50 44 41 54 45 5d 20 61 6e 64 20 5b 44 45 4c  UPDATE] and [DEL
9530: 45 54 45 5d 20 73 74 61 74 65 6d 65 6e 74 73 20  ETE] statements 
9540: 77 69 74 68 69 6e 20 74 72 69 67 67 65 72 73 2e  within triggers.
9550: 0a 20 20 3c 2f 70 3e 3c 2f 6c 69 3e 0a 3c 2f 75  .  </p></li>.</u
9560: 6c 3e 0a 0a 3c 74 63 6c 3e 68 64 5f 66 72 61 67  l>..<tcl>hd_frag
9570: 6d 65 6e 74 20 69 6e 73 74 65 61 64 5f 6f 66 5f  ment instead_of_
9580: 74 72 69 67 67 65 72 20 7b 49 4e 53 54 45 41 44  trigger {INSTEAD
9590: 20 4f 46 7d 20 7b 49 4e 53 54 45 41 44 20 4f 46   OF} {INSTEAD OF
95a0: 20 74 72 69 67 67 65 72 7d 3c 2f 74 63 6c 3e 0a   trigger}</tcl>.
95b0: 3c 68 33 3e 49 4e 53 54 45 41 44 20 4f 46 20 74  <h3>INSTEAD OF t
95c0: 72 69 67 67 65 72 3c 2f 68 33 3e 0a 0a 3c 70 3e  rigger</h3>..<p>
95d0: 54 72 69 67 67 65 72 73 20 6d 61 79 20 62 65 20  Triggers may be 
95e0: 63 72 65 61 74 65 64 20 6f 6e 20 5b 76 69 65 77  created on [view
95f0: 73 5d 2c 20 61 73 20 77 65 6c 6c 20 61 73 20 6f  s], as well as o
9600: 72 64 69 6e 61 72 79 20 74 61 62 6c 65 73 2c 20  rdinary tables, 
9610: 62 79 0a 73 70 65 63 69 66 79 69 6e 67 20 49 4e  by.specifying IN
9620: 53 54 45 41 44 20 4f 46 20 69 6e 20 74 68 65 20  STEAD OF in the 
9630: 43 52 45 41 54 45 20 54 52 49 47 47 45 52 20 73  CREATE TRIGGER s
9640: 74 61 74 65 6d 65 6e 74 2e 20 0a 49 66 20 6f 6e  tatement. .If on
9650: 65 20 6f 72 20 6d 6f 72 65 20 4f 4e 20 49 4e 53  e or more ON INS
9660: 45 52 54 2c 20 4f 4e 20 44 45 4c 45 54 45 0a 6f  ERT, ON DELETE.o
9670: 72 20 4f 4e 20 55 50 44 41 54 45 20 74 72 69 67  r ON UPDATE trig
9680: 67 65 72 73 20 61 72 65 20 64 65 66 69 6e 65 64  gers are defined
9690: 20 6f 6e 20 61 20 76 69 65 77 2c 20 74 68 65 6e   on a view, then
96a0: 20 69 74 20 69 73 20 6e 6f 74 20 61 6e 0a 65 72   it is not an.er
96b0: 72 6f 72 20 74 6f 20 65 78 65 63 75 74 65 20 61  ror to execute a
96c0: 6e 20 49 4e 53 45 52 54 2c 20 44 45 4c 45 54 45  n INSERT, DELETE
96d0: 20 6f 72 20 55 50 44 41 54 45 20 73 74 61 74 65   or UPDATE state
96e0: 6d 65 6e 74 20 6f 6e 20 74 68 65 20 76 69 65 77  ment on the view
96f0: 2c 20 0a 72 65 73 70 65 63 74 69 76 65 6c 79 2e  , .respectively.
9700: 20 54 68 65 72 65 61 66 74 65 72 2c 0a 65 78 65   Thereafter,.exe
9710: 63 75 74 69 6e 67 20 61 6e 20 49 4e 53 45 52 54  cuting an INSERT
9720: 2c 20 44 45 4c 45 54 45 20 6f 72 20 55 50 44 41  , DELETE or UPDA
9730: 54 45 20 6f 6e 20 74 68 65 20 76 69 65 77 20 63  TE on the view c
9740: 61 75 73 65 73 20 74 68 65 20 61 73 73 6f 63 69  auses the associ
9750: 61 74 65 64 0a 74 72 69 67 67 65 72 73 20 74 6f  ated.triggers to
9760: 20 66 69 72 65 2e 20 54 68 65 20 72 65 61 6c 20   fire. The real 
9770: 74 61 62 6c 65 73 20 75 6e 64 65 72 6c 79 69 6e  tables underlyin
9780: 67 20 74 68 65 20 76 69 65 77 20 61 72 65 20 6e  g the view are n
9790: 6f 74 20 6d 6f 64 69 66 69 65 64 0a 28 65 78 63  ot modified.(exc
97a0: 65 70 74 20 70 6f 73 73 69 62 6c 79 20 65 78 70  ept possibly exp
97b0: 6c 69 63 69 74 6c 79 2c 20 62 79 20 61 20 74 72  licitly, by a tr
97c0: 69 67 67 65 72 20 70 72 6f 67 72 61 6d 29 2e 3c  igger program).<
97d0: 2f 70 3e 0a 0a 3c 70 3e 4e 6f 74 65 20 74 68 61  /p>..<p>Note tha
97e0: 74 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 63  t the [sqlite3_c
97f0: 68 61 6e 67 65 73 28 29 5d 20 61 6e 64 20 5b 73  hanges()] and [s
9800: 71 6c 69 74 65 33 5f 74 6f 74 61 6c 5f 63 68 61  qlite3_total_cha
9810: 6e 67 65 73 28 29 5d 20 69 6e 74 65 72 66 61 63  nges()] interfac
9820: 65 73 0a 64 6f 20 6e 6f 74 20 63 6f 75 6e 74 20  es.do not count 
9830: 49 4e 53 54 45 41 44 20 4f 46 20 74 72 69 67 67  INSTEAD OF trigg
9840: 65 72 20 66 69 72 69 6e 67 73 2c 20 62 75 74 20  er firings, but 
9850: 74 68 65 0a 5b 63 6f 75 6e 74 5f 63 68 61 6e 67  the.[count_chang
9860: 65 73 20 70 72 61 67 6d 61 5d 20 64 6f 65 73 20  es pragma] does 
9870: 63 6f 75 6e 74 20 49 4e 53 54 45 41 44 20 4f 46  count INSTEAD OF
9880: 20 74 72 69 67 67 65 72 20 66 69 72 69 6e 67 2e   trigger firing.
9890: 3c 2f 70 3e 0a 0a 3c 68 33 3e 45 78 61 6d 70 6c  </p>..<h3>Exampl
98a0: 65 73 3c 2f 68 33 3e 0a 0a 3c 70 3e 41 73 73 75  es</h3>..<p>Assu
98b0: 6d 69 6e 67 20 74 68 61 74 20 63 75 73 74 6f 6d  ming that custom
98c0: 65 72 20 72 65 63 6f 72 64 73 20 61 72 65 20 73  er records are s
98d0: 74 6f 72 65 64 20 69 6e 20 74 68 65 20 22 63 75  tored in the "cu
98e0: 73 74 6f 6d 65 72 73 22 20 74 61 62 6c 65 2c 20  stomers" table, 
98f0: 61 6e 64 0a 74 68 61 74 20 6f 72 64 65 72 20 72  and.that order r
9900: 65 63 6f 72 64 73 20 61 72 65 20 73 74 6f 72 65  ecords are store
9910: 64 20 69 6e 20 74 68 65 20 22 6f 72 64 65 72 73  d in the "orders
9920: 22 20 74 61 62 6c 65 2c 20 74 68 65 20 66 6f 6c  " table, the fol
9930: 6c 6f 77 69 6e 67 20 74 72 69 67 67 65 72 0a 65  lowing trigger.e
9940: 6e 73 75 72 65 73 20 74 68 61 74 20 61 6c 6c 20  nsures that all 
9950: 61 73 73 6f 63 69 61 74 65 64 20 6f 72 64 65 72  associated order
9960: 73 20 61 72 65 20 72 65 64 69 72 65 63 74 65 64  s are redirected
9970: 20 77 68 65 6e 20 61 20 63 75 73 74 6f 6d 65 72   when a customer
9980: 20 63 68 61 6e 67 65 73 0a 68 69 73 20 6f 72 20   changes.his or 
9990: 68 65 72 20 61 64 64 72 65 73 73 3a 3c 2f 70 3e  her address:</p>
99a0: 0a 0a 3c 74 63 6c 3e 45 78 61 6d 70 6c 65 20 7b  ..<tcl>Example {
99b0: 0a 43 52 45 41 54 45 20 54 52 49 47 47 45 52 20  .CREATE TRIGGER 
99c0: 75 70 64 61 74 65 5f 63 75 73 74 6f 6d 65 72 5f  update_customer_
99d0: 61 64 64 72 65 73 73 20 55 50 44 41 54 45 20 4f  address UPDATE O
99e0: 46 20 61 64 64 72 65 73 73 20 4f 4e 20 63 75 73  F address ON cus
99f0: 74 6f 6d 65 72 73 20 0a 20 20 42 45 47 49 4e 0a  tomers .  BEGIN.
9a00: 20 20 20 20 55 50 44 41 54 45 20 6f 72 64 65 72      UPDATE order
9a10: 73 20 53 45 54 20 61 64 64 72 65 73 73 20 3d 20  s SET address = 
9a20: 6e 65 77 2e 61 64 64 72 65 73 73 20 57 48 45 52  new.address WHER
9a30: 45 20 63 75 73 74 6f 6d 65 72 5f 6e 61 6d 65 20  E customer_name 
9a40: 3d 20 6f 6c 64 2e 6e 61 6d 65 3b 0a 20 20 45 4e  = old.name;.  EN
9a50: 44 3b 0a 7d 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 57  D;.}</tcl>..<p>W
9a60: 69 74 68 20 74 68 69 73 20 74 72 69 67 67 65 72  ith this trigger
9a70: 20 69 6e 73 74 61 6c 6c 65 64 2c 20 65 78 65 63   installed, exec
9a80: 75 74 69 6e 67 20 74 68 65 20 73 74 61 74 65 6d  uting the statem
9a90: 65 6e 74 3a 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 45  ent:</p>..<tcl>E
9aa0: 78 61 6d 70 6c 65 20 7b 0a 55 50 44 41 54 45 20  xample {.UPDATE 
9ab0: 63 75 73 74 6f 6d 65 72 73 20 53 45 54 20 61 64  customers SET ad
9ac0: 64 72 65 73 73 20 3d 20 27 31 20 4d 61 69 6e 20  dress = '1 Main 
9ad0: 53 74 2e 27 20 57 48 45 52 45 20 6e 61 6d 65 20  St.' WHERE name 
9ae0: 3d 20 27 4a 61 63 6b 20 4a 6f 6e 65 73 27 3b 0a  = 'Jack Jones';.
9af0: 7d 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 63 61 75 73  }</tcl>..<p>caus
9b00: 65 73 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  es the following
9b10: 20 74 6f 20 62 65 20 61 75 74 6f 6d 61 74 69 63   to be automatic
9b20: 61 6c 6c 79 20 65 78 65 63 75 74 65 64 3a 3c 2f  ally executed:</
9b30: 70 3e 0a 0a 3c 74 63 6c 3e 45 78 61 6d 70 6c 65  p>..<tcl>Example
9b40: 20 7b 0a 55 50 44 41 54 45 20 6f 72 64 65 72 73   {.UPDATE orders
9b50: 20 53 45 54 20 61 64 64 72 65 73 73 20 3d 20 27   SET address = '
9b60: 31 20 4d 61 69 6e 20 53 74 2e 27 20 57 48 45 52  1 Main St.' WHER
9b70: 45 20 63 75 73 74 6f 6d 65 72 5f 6e 61 6d 65 20  E customer_name 
9b80: 3d 20 27 4a 61 63 6b 20 4a 6f 6e 65 73 27 3b 0a  = 'Jack Jones';.
9b90: 7d 3c 2f 74 63 6c 3e 0a 0a 3c 74 63 6c 3e 68 64  }</tcl>..<tcl>hd
9ba0: 5f 66 72 61 67 6d 65 6e 74 20 75 6e 64 65 66 5f  _fragment undef_
9bb0: 62 65 66 6f 72 65 20 7b 75 6e 64 65 66 69 6e 65  before {undefine
9bc0: 64 20 42 45 46 4f 52 45 20 74 72 69 67 67 65 72  d BEFORE trigger
9bd0: 20 62 65 68 61 76 69 6f 72 7d 3c 2f 74 63 6c 3e   behavior}</tcl>
9be0: 0a 3c 68 33 3e 43 61 75 74 69 6f 6e 73 20 4f 6e  .<h3>Cautions On
9bf0: 20 54 68 65 20 55 73 65 20 4f 66 20 42 45 46 4f   The Use Of BEFO
9c00: 52 45 20 74 72 69 67 67 65 72 73 3c 2f 68 33 3e  RE triggers</h3>
9c10: 0a 0a 3c 70 3e 49 66 20 61 20 42 45 46 4f 52 45  ..<p>If a BEFORE
9c20: 20 55 50 44 41 54 45 20 6f 72 20 42 45 46 4f 52   UPDATE or BEFOR
9c30: 45 20 44 45 4c 45 54 45 20 74 72 69 67 67 65 72  E DELETE trigger
9c40: 20 6d 6f 64 69 66 69 65 73 20 6f 72 20 64 65 6c   modifies or del
9c50: 65 74 65 73 20 61 20 72 6f 77 0a 74 68 61 74 20  etes a row.that 
9c60: 77 61 73 20 74 6f 20 68 61 76 65 20 62 65 65 6e  was to have been
9c70: 20 75 70 64 61 74 65 64 20 6f 72 20 64 65 6c 65   updated or dele
9c80: 74 65 64 2c 20 74 68 65 6e 20 74 68 65 20 72 65  ted, then the re
9c90: 73 75 6c 74 20 6f 66 20 74 68 65 20 73 75 62 73  sult of the subs
9ca0: 65 71 75 65 6e 74 0a 75 70 64 61 74 65 20 6f 72  equent.update or
9cb0: 20 64 65 6c 65 74 65 20 6f 70 65 72 61 74 69 6f   delete operatio
9cc0: 6e 20 69 73 20 75 6e 64 65 66 69 6e 65 64 2e 20  n is undefined. 
9cd0: 20 46 75 72 74 68 65 72 6d 6f 72 65 2c 20 69 66   Furthermore, if
9ce0: 20 61 20 42 45 46 4f 52 45 20 74 72 69 67 67 65   a BEFORE trigge
9cf0: 72 0a 6d 6f 64 69 66 69 65 73 20 6f 72 20 64 65  r.modifies or de
9d00: 6c 65 74 65 73 20 61 20 72 6f 77 2c 20 74 68 65  letes a row, the
9d10: 6e 20 69 74 20 69 73 20 75 6e 64 65 66 69 6e 65  n it is undefine
9d20: 64 20 77 68 65 74 68 65 72 20 6f 72 20 6e 6f 74  d whether or not
9d30: 20 41 46 54 45 52 20 74 72 69 67 67 65 72 73 0a   AFTER triggers.
9d40: 74 68 61 74 20 77 6f 75 6c 64 20 68 61 76 65 20  that would have 
9d50: 6f 74 68 65 72 77 69 73 65 20 72 75 6e 20 6f 6e  otherwise run on
9d60: 20 74 68 6f 73 65 20 72 6f 77 73 20 77 69 6c 6c   those rows will
9d70: 20 69 6e 20 66 61 63 74 20 72 75 6e 2e 0a 3c 2f   in fact run..</
9d80: 70 3e 0a 0a 3c 70 3e 54 68 65 20 76 61 6c 75 65  p>..<p>The value
9d90: 20 6f 66 20 4e 45 57 2e 72 6f 77 69 64 20 69 73   of NEW.rowid is
9da0: 20 75 6e 64 65 66 69 6e 65 64 20 69 6e 20 61 20   undefined in a 
9db0: 42 45 46 4f 52 45 20 49 4e 53 45 52 54 20 74 72  BEFORE INSERT tr
9dc0: 69 67 67 65 72 20 69 6e 20 77 68 69 63 68 0a 74  igger in which.t
9dd0: 68 65 20 72 6f 77 69 64 20 69 73 20 6e 6f 74 20  he rowid is not 
9de0: 65 78 70 6c 69 63 69 74 6c 79 20 73 65 74 20 74  explicitly set t
9df0: 6f 20 61 6e 20 69 6e 74 65 67 65 72 2e 3c 2f 70  o an integer.</p
9e00: 3e 0a 0a 3c 70 3e 42 65 63 61 75 73 65 20 6f 66  >..<p>Because of
9e10: 20 74 68 65 20 62 65 68 61 76 69 6f 72 73 20 64   the behaviors d
9e20: 65 73 63 72 69 62 65 64 20 61 62 6f 76 65 2c 20  escribed above, 
9e30: 70 72 6f 67 72 61 6d 6d 65 72 73 20 61 72 65 20  programmers are 
9e40: 65 6e 63 6f 75 72 61 67 65 64 20 74 6f 0a 70 72  encouraged to.pr
9e50: 65 66 65 72 20 41 46 54 45 52 20 74 72 69 67 67  efer AFTER trigg
9e60: 65 72 73 20 6f 76 65 72 20 42 45 46 4f 52 45 20  ers over BEFORE 
9e70: 74 72 69 67 67 65 72 73 2e 3c 2f 70 3e 0a 0a 3c  triggers.</p>..<
9e80: 68 33 3e 54 68 65 20 52 41 49 53 45 28 29 20 66  h3>The RAISE() f
9e90: 75 6e 63 74 69 6f 6e 3c 2f 68 33 3e 0a 0a 3c 70  unction</h3>..<p
9ea0: 3e 41 20 73 70 65 63 69 61 6c 20 53 51 4c 20 66  >A special SQL f
9eb0: 75 6e 63 74 69 6f 6e 20 52 41 49 53 45 28 29 20  unction RAISE() 
9ec0: 6d 61 79 20 62 65 20 75 73 65 64 20 77 69 74 68  may be used with
9ed0: 69 6e 20 61 20 74 72 69 67 67 65 72 2d 70 72 6f  in a trigger-pro
9ee0: 67 72 61 6d 2c 0a 77 69 74 68 20 74 68 65 20 66  gram,.with the f
9ef0: 6f 6c 6c 6f 77 69 6e 67 20 73 79 6e 74 61 78 3c  ollowing syntax<
9f00: 2f 70 3e 20 0a 0a 3c 74 63 6c 3e 42 75 62 62 6c  /p> ..<tcl>Bubbl
9f10: 65 44 69 61 67 72 61 6d 20 72 61 69 73 65 2d 66  eDiagram raise-f
9f20: 75 6e 63 74 69 6f 6e 3c 2f 74 63 6c 3e 0a 0a 3c  unction</tcl>..<
9f30: 70 3e 57 68 65 6e 20 6f 6e 65 20 6f 66 20 74 68  p>When one of th
9f40: 65 20 66 69 72 73 74 20 74 68 72 65 65 20 66 6f  e first three fo
9f50: 72 6d 73 20 69 73 20 63 61 6c 6c 65 64 20 64 75  rms is called du
9f60: 72 69 6e 67 20 74 72 69 67 67 65 72 2d 70 72 6f  ring trigger-pro
9f70: 67 72 61 6d 0a 65 78 65 63 75 74 69 6f 6e 2c 20  gram.execution, 
9f80: 74 68 65 20 73 70 65 63 69 66 69 65 64 20 5b 4f  the specified [O
9f90: 4e 20 43 4f 4e 46 4c 49 43 54 5d 20 70 72 6f 63  N CONFLICT] proc
9fa0: 65 73 73 69 6e 67 20 69 73 20 70 65 72 66 6f 72  essing is perfor
9fb0: 6d 65 64 0a 28 65 69 74 68 65 72 20 41 42 4f 52  med.(either ABOR
9fc0: 54 2c 20 46 41 49 4c 20 6f 72 20 52 4f 4c 4c 42  T, FAIL or ROLLB
9fd0: 41 43 4b 29 20 61 6e 64 20 74 68 65 20 63 75 72  ACK) and the cur
9fe0: 72 65 6e 74 20 71 75 65 72 79 20 74 65 72 6d 69  rent query termi
9ff0: 6e 61 74 65 73 2e 0a 41 6e 20 65 72 72 6f 72 20  nates..An error 
a000: 63 6f 64 65 20 6f 66 20 5b 53 51 4c 49 54 45 5f  code of [SQLITE_
a010: 43 4f 4e 53 54 52 41 49 4e 54 5d 20 69 73 20 72  CONSTRAINT] is r
a020: 65 74 75 72 6e 65 64 20 74 6f 20 74 68 65 20 61  eturned to the a
a030: 70 70 6c 69 63 61 74 69 6f 6e 2c 0a 61 6c 6f 6e  pplication,.alon
a040: 67 20 77 69 74 68 20 74 68 65 20 73 70 65 63 69  g with the speci
a050: 66 69 65 64 20 65 72 72 6f 72 20 6d 65 73 73 61  fied error messa
a060: 67 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 57 68 65 6e  ge.</p>..<p>When
a070: 20 52 41 49 53 45 28 49 47 4e 4f 52 45 29 20 69   RAISE(IGNORE) i
a080: 73 20 63 61 6c 6c 65 64 2c 20 74 68 65 20 72 65  s called, the re
a090: 6d 61 69 6e 64 65 72 20 6f 66 20 74 68 65 20 63  mainder of the c
a0a0: 75 72 72 65 6e 74 20 74 72 69 67 67 65 72 20 70  urrent trigger p
a0b0: 72 6f 67 72 61 6d 2c 0a 74 68 65 20 73 74 61 74  rogram,.the stat
a0c0: 65 6d 65 6e 74 20 74 68 61 74 20 63 61 75 73 65  ement that cause
a0d0: 64 20 74 68 65 20 74 72 69 67 67 65 72 20 70 72  d the trigger pr
a0e0: 6f 67 72 61 6d 20 74 6f 20 65 78 65 63 75 74 65  ogram to execute
a0f0: 20 61 6e 64 20 61 6e 79 20 73 75 62 73 65 71 75   and any subsequ
a100: 65 6e 74 0a 74 72 69 67 67 65 72 20 70 72 6f 67  ent.trigger prog
a110: 72 61 6d 73 20 74 68 61 74 20 77 6f 75 6c 64 20  rams that would 
a120: 6f 66 20 62 65 65 6e 20 65 78 65 63 75 74 65 64  of been executed
a130: 20 61 72 65 20 61 62 61 6e 64 6f 6e 65 64 2e 20   are abandoned. 
a140: 4e 6f 20 64 61 74 61 62 61 73 65 0a 63 68 61 6e  No database.chan
a150: 67 65 73 20 61 72 65 20 72 6f 6c 6c 65 64 20 62  ges are rolled b
a160: 61 63 6b 2e 20 20 49 66 20 74 68 65 20 73 74 61  ack.  If the sta
a170: 74 65 6d 65 6e 74 20 74 68 61 74 20 63 61 75 73  tement that caus
a180: 65 64 20 74 68 65 20 74 72 69 67 67 65 72 20 70  ed the trigger p
a190: 72 6f 67 72 61 6d 0a 74 6f 20 65 78 65 63 75 74  rogram.to execut
a1a0: 65 20 69 73 20 69 74 73 65 6c 66 20 70 61 72 74  e is itself part
a1b0: 20 6f 66 20 61 20 74 72 69 67 67 65 72 20 70 72   of a trigger pr
a1c0: 6f 67 72 61 6d 2c 20 74 68 65 6e 20 74 68 61 74  ogram, then that
a1d0: 20 74 72 69 67 67 65 72 20 70 72 6f 67 72 61 6d   trigger program
a1e0: 0a 72 65 73 75 6d 65 73 20 65 78 65 63 75 74 69  .resumes executi
a1f0: 6f 6e 20 61 74 20 74 68 65 20 62 65 67 69 6e 6e  on at the beginn
a200: 69 6e 67 20 6f 66 20 74 68 65 20 6e 65 78 74 20  ing of the next 
a210: 73 74 65 70 2e 0a 3c 2f 70 3e 0a 0a 0a 3c 74 63  step..</p>...<tc
a220: 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23 23  l>.#############
a230: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a240: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a250: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a260: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a270: 23 23 0a 53 65 63 74 69 6f 6e 20 7b 43 52 45 41  ##.Section {CREA
a280: 54 45 20 56 49 45 57 7d 20 7b 63 72 65 61 74 65  TE VIEW} {create
a290: 76 69 65 77 7d 20 7b 7b 43 52 45 41 54 45 20 56  view} {{CREATE V
a2a0: 49 45 57 7d 20 76 69 65 77 20 2a 76 69 65 77 73  IEW} view *views
a2b0: 7d 0a 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d  }..BubbleDiagram
a2c0: 20 63 72 65 61 74 65 2d 76 69 65 77 2d 73 74 6d   create-view-stm
a2d0: 74 20 31 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54  t 1.</tcl>..<p>T
a2e0: 68 65 20 43 52 45 41 54 45 20 56 49 45 57 20 63  he CREATE VIEW c
a2f0: 6f 6d 6d 61 6e 64 20 61 73 73 69 67 6e 73 20 61  ommand assigns a
a300: 20 6e 61 6d 65 20 74 6f 20 61 20 70 72 65 2d 70   name to a pre-p
a310: 61 63 6b 61 67 65 64 20 0a 3c 61 20 68 72 65 66  ackaged .<a href
a320: 3d 22 6c 61 6e 67 5f 73 65 6c 65 63 74 2e 68 74  ="lang_select.ht
a330: 6d 6c 22 3e 53 45 4c 45 43 54 3c 2f 61 3e 0a 73  ml">SELECT</a>.s
a340: 74 61 74 65 6d 65 6e 74 2e 20 20 4f 6e 63 65 20  tatement.  Once 
a350: 74 68 65 20 76 69 65 77 20 69 73 20 63 72 65 61  the view is crea
a360: 74 65 64 2c 20 69 74 20 63 61 6e 20 62 65 20 75  ted, it can be u
a370: 73 65 64 20 69 6e 20 74 68 65 20 46 52 4f 4d 20  sed in the FROM 
a380: 63 6c 61 75 73 65 0a 6f 66 20 61 6e 6f 74 68 65  clause.of anothe
a390: 72 20 5b 53 45 4c 45 43 54 5d 20 69 6e 20 70 6c  r [SELECT] in pl
a3a0: 61 63 65 20 6f 66 20 61 20 74 61 62 6c 65 20 6e  ace of a table n
a3b0: 61 6d 65 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 49 66  ame..</p>..<p>If
a3c0: 20 74 68 65 20 22 54 45 4d 50 22 20 6f 72 20 22   the "TEMP" or "
a3d0: 54 45 4d 50 4f 52 41 52 59 22 20 6b 65 79 77 6f  TEMPORARY" keywo
a3e0: 72 64 20 6f 63 63 75 72 73 20 69 6e 20 62 65 74  rd occurs in bet
a3f0: 77 65 65 6e 20 22 43 52 45 41 54 45 22 0a 61 6e  ween "CREATE".an
a400: 64 20 22 56 49 45 57 22 20 74 68 65 6e 20 74 68  d "VIEW" then th
a410: 65 20 76 69 65 77 20 74 68 61 74 20 69 73 20 63  e view that is c
a420: 72 65 61 74 65 64 20 69 73 20 6f 6e 6c 79 20 76  reated is only v
a430: 69 73 69 62 6c 65 20 74 6f 20 74 68 65 0a 70 72  isible to the.pr
a440: 6f 63 65 73 73 20 74 68 61 74 20 6f 70 65 6e 65  ocess that opene
a450: 64 20 74 68 65 20 64 61 74 61 62 61 73 65 20 61  d the database a
a460: 6e 64 20 69 73 20 61 75 74 6f 6d 61 74 69 63 61  nd is automatica
a470: 6c 6c 79 20 64 65 6c 65 74 65 64 20 77 68 65 6e  lly deleted when
a480: 0a 74 68 65 20 64 61 74 61 62 61 73 65 20 69 73  .the database is
a490: 20 63 6c 6f 73 65 64 2e 3c 2f 70 3e 0a 0a 3c 70   closed.</p>..<p
a4a0: 3e 20 49 66 20 61 20 26 6c 74 3b 64 61 74 61 62  > If a &lt;datab
a4b0: 61 73 65 2d 6e 61 6d 65 26 67 74 3b 20 69 73 20  ase-name&gt; is 
a4c0: 73 70 65 63 69 66 69 65 64 2c 20 74 68 65 6e 20  specified, then 
a4d0: 74 68 65 20 76 69 65 77 20 69 73 20 63 72 65 61  the view is crea
a4e0: 74 65 64 20 69 6e 20 0a 74 68 65 20 6e 61 6d 65  ted in .the name
a4f0: 64 20 64 61 74 61 62 61 73 65 2e 20 49 74 20 69  d database. It i
a500: 73 20 61 6e 20 65 72 72 6f 72 20 74 6f 20 73 70  s an error to sp
a510: 65 63 69 66 79 20 62 6f 74 68 20 61 20 26 6c 74  ecify both a &lt
a520: 3b 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 26 67  ;database-name&g
a530: 74 3b 0a 61 6e 64 20 74 68 65 20 54 45 4d 50 20  t;.and the TEMP 
a540: 6b 65 79 77 6f 72 64 2c 20 75 6e 6c 65 73 73 20  keyword, unless 
a550: 74 68 65 20 26 6c 74 3b 64 61 74 61 62 61 73 65  the &lt;database
a560: 2d 6e 61 6d 65 26 67 74 3b 20 69 73 20 22 74 65  -name&gt; is "te
a570: 6d 70 22 2e 20 49 66 20 6e 6f 0a 64 61 74 61 62  mp". If no.datab
a580: 61 73 65 20 6e 61 6d 65 20 69 73 20 73 70 65 63  ase name is spec
a590: 69 66 69 65 64 2c 20 61 6e 64 20 74 68 65 20 54  ified, and the T
a5a0: 45 4d 50 20 6b 65 79 77 6f 72 64 20 69 73 20 6e  EMP keyword is n
a5b0: 6f 74 20 70 72 65 73 65 6e 74 2c 0a 74 68 65 20  ot present,.the 
a5c0: 74 61 62 6c 65 20 69 73 20 63 72 65 61 74 65 64  table is created
a5d0: 20 69 6e 20 74 68 65 20 6d 61 69 6e 20 64 61 74   in the main dat
a5e0: 61 62 61 73 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 59  abase.</p>..<p>Y
a5f0: 6f 75 20 63 61 6e 6e 6f 74 20 5b 44 45 4c 45 54  ou cannot [DELET
a600: 45 5d 2c 20 5b 49 4e 53 45 52 54 5d 2c 20 6f 72  E], [INSERT], or
a610: 20 5b 55 50 44 41 54 45 5d 20 61 20 76 69 65 77   [UPDATE] a view
a620: 2e 20 20 56 69 65 77 73 20 61 72 65 20 72 65 61  .  Views are rea
a630: 64 2d 6f 6e 6c 79 20 0a 69 6e 20 53 51 4c 69 74  d-only .in SQLit
a640: 65 2e 20 20 48 6f 77 65 76 65 72 2c 20 69 6e 20  e.  However, in 
a650: 6d 61 6e 79 20 63 61 73 65 73 20 79 6f 75 20 63  many cases you c
a660: 61 6e 20 75 73 65 20 61 6e 0a 5b 49 4e 53 54 45  an use an.[INSTE
a670: 41 44 20 4f 46 20 74 72 69 67 67 65 72 5d 20 6f  AD OF trigger] o
a680: 6e 20 74 68 65 20 76 69 65 77 20 74 6f 20 61 63  n the view to ac
a690: 63 6f 6d 70 6c 69 73 68 20 0a 74 68 65 20 73 61  complish .the sa
a6a0: 6d 65 20 74 68 69 6e 67 2e 20 20 56 69 65 77 73  me thing.  Views
a6b0: 20 61 72 65 20 72 65 6d 6f 76 65 64 20 0a 77 69   are removed .wi
a6c0: 74 68 20 74 68 65 20 5b 44 52 4f 50 20 56 49 45  th the [DROP VIE
a6d0: 57 5d 20 63 6f 6d 6d 61 6e 64 2e 3c 2f 70 3e 0a  W] command.</p>.
a6e0: 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23  .<tcl>.#########
a6f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a700: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a710: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a720: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
a730: 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b 43  #####.Section {C
a740: 52 45 41 54 45 20 56 49 52 54 55 41 4c 20 54 41  REATE VIRTUAL TA
a750: 42 4c 45 7d 20 7b 63 72 65 61 74 65 76 74 61 62  BLE} {createvtab
a760: 7d 20 7b 7b 43 52 45 41 54 45 20 56 49 52 54 55  } {{CREATE VIRTU
a770: 41 4c 20 54 41 42 4c 45 7d 7d 0a 0a 42 75 62 62  AL TABLE}}..Bubb
a780: 6c 65 44 69 61 67 72 61 6d 20 63 72 65 61 74 65  leDiagram create
a790: 2d 76 69 72 74 75 61 6c 2d 74 61 62 6c 65 2d 73  -virtual-table-s
a7a0: 74 6d 74 20 31 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70  tmt 1.</tcl>..<p
a7b0: 3e 41 20 5b 76 69 72 74 75 61 6c 20 74 61 62 6c  >A [virtual tabl
a7c0: 65 5d 20 69 73 20 61 6e 20 69 6e 74 65 72 66 61  e] is an interfa
a7d0: 63 65 20 74 6f 20 61 6e 20 65 78 74 65 72 6e 61  ce to an externa
a7e0: 6c 20 73 74 6f 72 61 67 65 20 6f 72 20 63 6f 6d  l storage or com
a7f0: 70 75 74 61 74 69 6f 6e 0a 65 6e 67 69 6e 65 20  putation.engine 
a800: 74 68 61 74 20 61 70 70 65 61 72 73 20 74 6f 20  that appears to 
a810: 62 65 20 61 20 74 61 62 6c 65 20 62 75 74 20 64  be a table but d
a820: 6f 65 73 20 6e 6f 74 20 61 63 74 75 61 6c 6c 79  oes not actually
a830: 20 73 74 6f 72 65 20 69 6e 66 6f 72 6d 61 74 69   store informati
a840: 6f 6e 0a 69 6e 20 74 68 65 20 64 61 74 61 62 61  on.in the databa
a850: 73 65 20 66 69 6c 65 2e 3c 2f 70 3e 0a 0a 3c 70  se file.</p>..<p
a860: 3e 49 6e 20 67 65 6e 65 72 61 6c 2c 20 79 6f 75  >In general, you
a870: 20 63 61 6e 20 64 6f 20 61 6e 79 74 68 69 6e 67   can do anything
a880: 20 77 69 74 68 20 61 20 5b 76 69 72 74 75 61 6c   with a [virtual
a890: 20 74 61 62 6c 65 5d 20 74 68 61 74 20 63 61 6e   table] that can
a8a0: 20 62 65 20 64 6f 6e 65 0a 77 69 74 68 20 61 6e   be done.with an
a8b0: 20 6f 72 64 69 6e 61 72 79 20 74 61 62 6c 65 2c   ordinary table,
a8c0: 20 65 78 63 65 70 74 20 74 68 61 74 20 79 6f 75   except that you
a8d0: 20 63 61 6e 6e 6f 74 20 63 72 65 61 74 65 20 69   cannot create i
a8e0: 6e 64 69 63 65 73 20 6f 72 20 74 72 69 67 67 65  ndices or trigge
a8f0: 72 73 20 6f 6e 20 61 0a 76 69 72 74 75 61 6c 20  rs on a.virtual 
a900: 74 61 62 6c 65 2e 20 20 53 6f 6d 65 20 76 69 72  table.  Some vir
a910: 74 75 61 6c 20 74 61 62 6c 65 20 69 6d 70 6c 65  tual table imple
a920: 6d 65 6e 74 61 74 69 6f 6e 73 20 6d 69 67 68 74  mentations might
a930: 20 69 6d 70 6f 73 65 20 61 64 64 69 74 69 6f 6e   impose addition
a940: 61 6c 0a 72 65 73 74 72 69 63 74 69 6f 6e 73 2e  al.restrictions.
a950: 20 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 6d    For example, m
a960: 61 6e 79 20 76 69 72 74 75 61 6c 20 74 61 62 6c  any virtual tabl
a970: 65 73 20 61 72 65 20 72 65 61 64 2d 6f 6e 6c 79  es are read-only
a980: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 26 6c  .</p>..<p>The &l
a990: 74 3b 6d 6f 64 75 6c 65 2d 6e 61 6d 65 26 67 74  t;module-name&gt
a9a0: 3b 20 69 73 20 74 68 65 20 6e 61 6d 65 20 6f 66  ; is the name of
a9b0: 20 61 6e 20 6f 62 6a 65 63 74 20 74 68 61 74 20   an object that 
a9c0: 69 6d 70 6c 65 6d 65 6e 74 73 0a 74 68 65 20 76  implements.the v
a9d0: 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 20 20 54  irtual table.  T
a9e0: 68 65 20 26 6c 74 3b 6d 6f 64 75 6c 65 2d 6e 61  he &lt;module-na
a9f0: 6d 65 26 67 74 3b 20 6d 75 73 74 20 62 65 20 72  me&gt; must be r
aa00: 65 67 69 73 74 65 72 65 64 20 77 69 74 68 0a 74  egistered with.t
aa10: 68 65 20 53 51 4c 69 74 65 20 64 61 74 61 62 61  he SQLite databa
aa20: 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 75 73  se connection us
aa30: 69 6e 67 0a 5b 73 71 6c 69 74 65 33 5f 63 72 65  ing.[sqlite3_cre
aa40: 61 74 65 5f 6d 6f 64 75 6c 65 28 29 5d 20 6f 72  ate_module()] or
aa50: 20 5b 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65   [sqlite3_create
aa60: 5f 6d 6f 64 75 6c 65 5f 76 32 28 29 5d 0a 70 72  _module_v2()].pr
aa70: 69 6f 72 20 74 6f 20 69 73 73 75 69 6e 67 20 74  ior to issuing t
aa80: 68 65 20 43 52 45 41 54 45 20 56 49 52 54 55 41  he CREATE VIRTUA
aa90: 4c 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e  L TABLE statemen
aaa0: 74 2e 0a 54 68 65 20 6d 6f 64 75 6c 65 20 74 61  t..The module ta
aab0: 6b 65 73 20 7a 65 72 6f 20 6f 72 20 6d 6f 72 65  kes zero or more
aac0: 20 63 6f 6d 6d 61 2d 73 65 70 61 72 61 74 65 64   comma-separated
aad0: 20 61 72 67 75 6d 65 6e 74 73 2e 0a 54 68 65 20   arguments..The 
aae0: 61 72 67 75 6d 65 6e 74 73 20 63 61 6e 20 62 65  arguments can be
aaf0: 20 6a 75 73 74 20 61 62 6f 75 74 20 61 6e 79 20   just about any 
ab00: 74 65 78 74 20 61 73 20 6c 6f 6e 67 20 61 73 20  text as long as 
ab10: 69 74 20 68 61 73 20 62 61 6c 61 6e 63 65 64 0a  it has balanced.
ab20: 70 61 72 65 6e 74 68 65 73 65 73 2e 20 20 54 68  parentheses.  Th
ab30: 65 20 61 72 67 75 6d 65 6e 74 20 73 79 6e 74 61  e argument synta
ab40: 78 20 69 73 20 73 75 66 66 69 63 69 65 6e 74 6c  x is sufficientl
ab50: 79 20 67 65 6e 65 72 61 6c 20 74 68 61 74 20 74  y general that t
ab60: 68 65 0a 61 72 67 75 6d 65 6e 74 73 20 63 61 6e  he.arguments can
ab70: 20 62 65 20 6d 61 64 65 20 74 6f 20 61 70 70 65   be made to appe
ab80: 61 72 20 61 73 20 63 6f 6c 75 6d 6e 20 64 65 66  ar as column def
ab90: 69 6e 69 74 69 6f 6e 73 20 69 6e 20 61 20 74 72  initions in a tr
aba0: 61 64 69 74 69 6f 6e 61 6c 0a 5b 43 52 45 41 54  aditional.[CREAT
abb0: 45 20 54 41 42 4c 45 5d 20 73 74 61 74 65 6d 65  E TABLE] stateme
abc0: 6e 74 2e 20 20 0a 53 51 4c 69 74 65 20 70 61 73  nt.  .SQLite pas
abd0: 73 65 73 20 74 68 65 20 6d 6f 64 75 6c 65 20 61  ses the module a
abe0: 72 67 75 6d 65 6e 74 73 20 64 69 72 65 63 74 6c  rguments directl
abf0: 79 0a 74 6f 20 74 68 65 20 5b 78 43 72 65 61 74  y.to the [xCreat
ac00: 65 5d 20 61 6e 64 20 5b 78 43 6f 6e 6e 65 63 74  e] and [xConnect
ac10: 5d 20 6d 65 74 68 6f 64 73 20 6f 66 20 74 68 65  ] methods of the
ac20: 20 6d 6f 64 75 6c 65 20 69 6d 70 6c 65 6d 65 6e   module implemen
ac30: 74 61 74 69 6f 6e 0a 77 69 74 68 6f 75 74 20 61  tation.without a
ac40: 6e 79 20 69 6e 74 65 72 70 72 65 74 61 74 69 6f  ny interpretatio
ac50: 6e 2e 20 20 49 74 20 69 73 20 74 68 65 20 72 65  n.  It is the re
ac60: 73 70 6f 6e 73 69 62 69 6c 69 74 79 0a 6f 66 20  sponsibility.of 
ac70: 74 68 65 20 6d 6f 64 75 6c 65 20 69 6d 70 6c 65  the module imple
ac80: 6d 65 6e 74 61 74 69 6f 6e 20 74 6f 20 70 61 72  mentation to par
ac90: 73 65 20 61 6e 64 20 69 6e 74 65 72 70 72 65 74  se and interpret
aca0: 20 69 74 73 20 6f 77 6e 20 61 72 67 75 6d 65 6e   its own argumen
acb0: 74 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41 20 76 69  ts.</p>..<p>A vi
acc0: 72 74 75 61 6c 20 74 61 62 6c 65 20 69 73 20 64  rtual table is d
acd0: 65 73 74 72 6f 79 65 64 20 75 73 69 6e 67 20 74  estroyed using t
ace0: 68 65 20 6f 72 64 69 6e 61 72 79 0a 5b 44 52 4f  he ordinary.[DRO
acf0: 50 20 54 41 42 4c 45 5d 20 73 74 61 74 65 6d 65  P TABLE] stateme
ad00: 6e 74 2e 20 20 54 68 65 72 65 20 69 73 20 6e 6f  nt.  There is no
ad10: 0a 44 52 4f 50 20 56 49 52 54 55 41 4c 20 54 41  .DROP VIRTUAL TA
ad20: 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 2e 3c 2f  BLE statement.</
ad30: 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23  p>..<tcl>.######
ad40: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
ad50: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
ad60: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
ad70: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
ad80: 23 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e  ########.Section
ad90: 20 44 45 4c 45 54 45 20 64 65 6c 65 74 65 20 7b   DELETE delete {
ada0: 44 45 4c 45 54 45 20 2a 44 45 4c 45 54 45 73 7d  DELETE *DELETEs}
adb0: 0a 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20  ..BubbleDiagram 
adc0: 64 65 6c 65 74 65 2d 73 74 6d 74 20 31 0a 42 75  delete-stmt 1.Bu
add0: 62 62 6c 65 44 69 61 67 72 61 6d 20 71 75 61 6c  bbleDiagram qual
ade0: 69 66 69 65 64 2d 74 61 62 6c 65 2d 6e 61 6d 65  ified-table-name
adf0: 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20  .</tcl>..<p>The 
ae00: 44 45 4c 45 54 45 20 63 6f 6d 6d 61 6e 64 20 69  DELETE command i
ae10: 73 20 75 73 65 64 20 74 6f 20 72 65 6d 6f 76 65  s used to remove
ae20: 20 72 65 63 6f 72 64 73 20 66 72 6f 6d 20 61 20   records from a 
ae30: 74 61 62 6c 65 2e 0a 54 68 65 20 63 6f 6d 6d 61  table..The comma
ae40: 6e 64 20 63 6f 6e 73 69 73 74 73 20 6f 66 20 74  nd consists of t
ae50: 68 65 20 22 44 45 4c 45 54 45 20 46 52 4f 4d 22  he "DELETE FROM"
ae60: 20 6b 65 79 77 6f 72 64 73 20 66 6f 6c 6c 6f 77   keywords follow
ae70: 65 64 20 62 79 0a 74 68 65 20 6e 61 6d 65 20 6f  ed by.the name o
ae80: 66 20 74 68 65 20 74 61 62 6c 65 20 66 72 6f 6d  f the table from
ae90: 20 77 68 69 63 68 20 72 65 63 6f 72 64 73 20 61   which records a
aea0: 72 65 20 74 6f 20 62 65 20 72 65 6d 6f 76 65 64  re to be removed
aeb0: 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 57 69 74 68 6f  ..</p>..<p>Witho
aec0: 75 74 20 61 20 57 48 45 52 45 20 63 6c 61 75 73  ut a WHERE claus
aed0: 65 2c 20 61 6c 6c 20 72 6f 77 73 20 6f 66 20 74  e, all rows of t
aee0: 68 65 20 74 61 62 6c 65 20 61 72 65 20 72 65 6d  he table are rem
aef0: 6f 76 65 64 2e 0a 49 66 20 61 20 57 48 45 52 45  oved..If a WHERE
af00: 20 63 6c 61 75 73 65 20 69 73 20 73 75 70 70 6c   clause is suppl
af10: 69 65 64 2c 20 74 68 65 6e 20 6f 6e 6c 79 20 74  ied, then only t
af20: 68 6f 73 65 20 72 6f 77 73 20 74 68 61 74 20 6d  hose rows that m
af30: 61 74 63 68 0a 74 68 65 20 65 78 70 72 65 73 73  atch.the express
af40: 69 6f 6e 20 61 72 65 20 72 65 6d 6f 76 65 64 2e  ion are removed.
af50: 3c 2f 70 3e 0a 0a 3c 68 33 3e 52 65 73 74 72 69  </p>..<h3>Restri
af60: 63 74 69 6f 6e 73 20 6f 6e 20 44 45 4c 45 54 45  ctions on DELETE
af70: 20 53 74 61 74 65 6d 65 6e 74 73 20 57 69 74 68   Statements With
af80: 69 6e 20 43 52 45 41 54 45 20 54 52 49 47 47 45  in CREATE TRIGGE
af90: 52 3c 2f 68 33 3e 0a 0a 3c 70 3e 54 68 65 72 65  R</h3>..<p>There
afa0: 20 61 72 65 20 61 64 64 69 74 69 6f 6e 61 6c 20   are additional 
afb0: 73 79 6e 74 61 78 20 72 65 73 74 72 69 63 74 69  syntax restricti
afc0: 6f 6e 73 20 6f 6e 20 44 45 4c 45 54 45 20 73 74  ons on DELETE st
afd0: 61 74 65 6d 65 6e 74 73 20 74 68 61 74 0a 6f 63  atements that.oc
afe0: 63 75 72 20 77 69 74 68 69 6e 20 74 68 65 20 62  cur within the b
aff0: 6f 64 79 20 6f 66 20 61 20 5b 43 52 45 41 54 45  ody of a [CREATE
b000: 20 54 52 49 47 47 45 52 5d 20 73 74 61 74 65 6d   TRIGGER] statem
b010: 65 6e 74 2e 20 20 54 68 65 20 3c 69 3e 74 61 62  ent.  The <i>tab
b020: 6c 65 2d 6e 61 6d 65 3c 2f 69 3e 0a 6d 75 73 74  le-name</i>.must
b030: 20 62 65 20 75 6e 71 75 61 6c 69 66 69 65 64 2e   be unqualified.
b040: 20 0a 49 6e 20 6f 74 68 65 72 20 77 6f 72 64 73   .In other words
b050: 2c 20 74 68 65 20 3c 69 3e 64 61 74 61 62 61 73  , the <i>databas
b060: 65 2d 6e 61 6d 65 3c 2f 69 3e 3c 62 3e 2e 3c 2f  e-name</i><b>.</
b070: 62 3e 20 70 72 65 66 69 78 0a 6f 6e 20 74 68 65  b> prefix.on the
b080: 20 74 61 62 6c 65 20 6e 61 6d 65 20 69 73 20 6e   table name is n
b090: 6f 74 20 61 6c 6c 6f 77 65 64 20 77 69 74 68 69  ot allowed withi
b0a0: 6e 20 74 72 69 67 67 65 72 73 2e 20 0a 54 68 65  n triggers. .The
b0b0: 20 74 61 62 6c 65 20 66 72 6f 6d 20 77 68 69 63   table from whic
b0c0: 68 20 74 6f 20 64 65 6c 65 74 65 20 6d 75 73 74  h to delete must
b0d0: 20 62 65 20 69 6e 20 74 68 65 20 73 61 6d 65 0a   be in the same.
b0e0: 64 61 74 61 62 61 73 65 20 61 73 20 74 68 65 20  database as the 
b0f0: 74 61 62 6c 65 20 74 6f 20 77 68 69 63 68 20 74  table to which t
b100: 68 65 20 74 72 69 67 67 65 72 20 69 73 20 61 74  he trigger is at
b110: 74 61 63 68 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e  tached.</p>..<p>
b120: 54 68 65 20 49 4e 44 45 58 45 44 20 42 59 20 61  The INDEXED BY a
b130: 6e 64 20 4e 4f 54 20 49 4e 44 45 58 45 44 20 63  nd NOT INDEXED c
b140: 6c 61 75 73 65 73 20 61 72 65 20 6e 6f 74 20 61  lauses are not a
b150: 6c 6c 6f 77 65 64 20 6f 6e 20 44 45 4c 45 54 45  llowed on DELETE
b160: 0a 73 74 61 74 65 6d 65 6e 74 73 20 77 69 74 68  .statements with
b170: 69 6e 20 74 72 69 67 67 65 72 73 2e 3c 2f 70 3e  in triggers.</p>
b180: 0a 0a 3c 70 3e 54 68 65 20 4c 49 4d 49 54 20 63  ..<p>The LIMIT c
b190: 6c 61 75 73 65 20 28 64 65 73 63 72 69 62 65 64  lause (described
b1a0: 20 62 65 6c 6f 77 29 20 69 73 20 75 6e 73 75 70   below) is unsup
b1b0: 70 6f 72 74 65 64 20 77 69 74 68 69 6e 20 74 72  ported within tr
b1c0: 69 67 67 65 72 73 2e 3c 2f 70 3e 0a 0a 3c 74 63  iggers.</p>..<tc
b1d0: 6c 3e 68 64 5f 66 72 61 67 6d 65 6e 74 20 74 72  l>hd_fragment tr
b1e0: 75 63 61 74 65 6f 70 74 20 7b 74 72 75 6e 63 61  ucateopt {trunca
b1f0: 74 65 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 7d  te optimization}
b200: 3c 2f 74 63 6c 3e 0a 3c 68 33 3e 54 68 65 20 54  </tcl>.<h3>The T
b210: 72 75 6e 63 61 74 65 20 4f 70 74 69 6d 69 7a 61  runcate Optimiza
b220: 74 69 6f 6e 3c 2f 68 33 3e 0a 0a 3c 70 3e 57 68  tion</h3>..<p>Wh
b230: 65 6e 20 74 68 65 20 57 48 45 52 45 20 69 73 20  en the WHERE is 
b240: 6f 6d 69 74 74 65 64 20 66 72 6f 6d 20 61 20 44  omitted from a D
b250: 45 4c 45 54 45 20 73 74 61 74 65 6d 65 6e 74 20  ELETE statement 
b260: 61 6e 64 20 74 68 65 20 74 61 62 6c 65 0a 62 65  and the table.be
b270: 69 6e 67 20 64 65 6c 65 74 65 64 20 68 61 73 20  ing deleted has 
b280: 6e 6f 20 74 72 69 67 67 65 72 73 2c 0a 53 51 4c  no triggers,.SQL
b290: 69 74 65 20 75 73 65 73 20 61 6e 20 6f 70 74 69  ite uses an opti
b2a0: 6d 69 7a 61 74 69 6f 6e 20 74 6f 20 65 72 61 73  mization to eras
b2b0: 65 20 74 68 65 20 65 6e 74 69 72 65 20 74 61 62  e the entire tab
b2c0: 6c 65 20 63 6f 6e 74 65 6e 74 0a 77 69 74 68 6f  le content.witho
b2d0: 75 74 20 68 61 76 69 6e 67 20 74 6f 20 76 69 73  ut having to vis
b2e0: 69 74 20 65 61 63 68 20 72 6f 77 20 6f 66 20 74  it each row of t
b2f0: 68 65 20 74 61 62 6c 65 20 69 6e 64 69 76 69 64  he table individ
b300: 75 61 6c 2e 0a 54 68 69 73 20 22 74 72 75 6e 63  ual..This "trunc
b310: 61 74 65 22 20 6f 70 74 69 6d 69 7a 61 74 69 6f  ate" optimizatio
b320: 6e 20 6d 61 6b 65 73 20 74 68 65 20 64 65 6c 65  n makes the dele
b330: 74 65 20 72 75 6e 20 6d 75 63 68 20 66 61 73 74  te run much fast
b340: 65 72 2e 0a 50 72 69 6f 72 20 74 6f 20 53 51 4c  er..Prior to SQL
b350: 69 74 65 20 5b 76 65 72 73 69 6f 6e 20 33 2e 36  ite [version 3.6
b360: 2e 35 5d 2c 20 74 68 65 20 74 72 75 6e 63 61 74  .5], the truncat
b370: 65 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 0a 61  e optimization.a
b380: 6c 73 6f 20 6d 65 61 6e 74 20 74 68 61 74 20 74  lso meant that t
b390: 68 65 20 5b 73 71 6c 69 74 65 33 5f 63 68 61 6e  he [sqlite3_chan
b3a0: 67 65 73 28 29 5d 20 61 6e 64 0a 5b 73 71 6c 69  ges()] and.[sqli
b3b0: 74 65 33 5f 74 6f 74 61 6c 5f 63 68 61 6e 67 65  te3_total_change
b3c0: 73 28 29 5d 20 69 6e 74 65 72 66 61 63 65 73 0a  s()] interfaces.
b3d0: 61 6e 64 20 74 68 65 20 5b 63 6f 75 6e 74 5f 63  and the [count_c
b3e0: 68 61 6e 67 65 73 20 70 72 61 67 6d 61 5d 0a 77  hanges pragma].w
b3f0: 69 6c 6c 20 6e 6f 74 20 61 63 74 75 61 6c 6c 79  ill not actually
b400: 20 72 65 74 75 72 6e 20 74 68 65 20 6e 75 6d 62   return the numb
b410: 65 72 20 6f 66 20 64 65 6c 65 74 65 64 20 72 6f  er of deleted ro
b420: 77 73 2e 20 20 0a 54 68 61 74 20 70 72 6f 62 6c  ws.  .That probl
b430: 65 6d 20 68 61 73 20 62 65 65 6e 20 66 69 78 65  em has been fixe
b440: 64 20 61 73 20 6f 66 20 5b 76 65 72 73 69 6f 6e  d as of [version
b450: 20 33 2e 36 2e 35 5d 2e 0a 0a 3c 70 3e 54 68 65   3.6.5]...<p>The
b460: 20 74 72 75 6e 63 61 74 65 20 6f 70 74 69 6d 69   truncate optimi
b470: 7a 61 74 69 6f 6e 20 63 61 6e 20 62 65 20 70 65  zation can be pe
b480: 72 6d 61 6e 65 6e 74 6c 79 20 64 69 73 61 62 6c  rmanently disabl
b490: 65 64 20 66 6f 72 20 61 6c 6c 20 71 75 65 72 69  ed for all queri
b4a0: 65 73 0a 62 79 20 72 65 63 6f 6d 70 69 6c 69 6e  es.by recompilin
b4b0: 67 0a 53 51 4c 69 74 65 20 77 69 74 68 20 74 68  g.SQLite with th
b4c0: 65 20 5b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 54  e [SQLITE_OMIT_T
b4d0: 52 55 4e 43 41 54 45 5f 4f 50 54 49 4d 49 5a 41  RUNCATE_OPTIMIZA
b4e0: 54 49 4f 4e 5d 20 63 6f 6d 70 69 6c 65 2d 74 69  TION] compile-ti
b4f0: 6d 65 20 73 77 69 74 63 68 2e 3c 2f 70 3e 0a 0a  me switch.</p>..
b500: 3c 70 3e 54 68 65 20 74 72 75 6e 63 61 74 65 20  <p>The truncate 
b510: 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20 63 61 6e  optimization can
b520: 20 61 6c 73 6f 20 62 65 20 64 69 73 61 62 6c 65   also be disable
b530: 64 20 61 74 20 72 75 6e 74 69 6d 65 20 75 73 69  d at runtime usi
b540: 6e 67 0a 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  ng.the [sqlite3_
b550: 73 65 74 5f 61 75 74 68 6f 72 69 7a 65 72 28 29  set_authorizer()
b560: 5d 20 69 6e 74 65 72 66 61 63 65 2e 20 20 49 66  ] interface.  If
b570: 20 61 6e 20 61 75 74 68 6f 72 69 7a 65 72 20 63   an authorizer c
b580: 61 6c 6c 62 61 63 6b 0a 72 65 74 75 72 6e 73 20  allback.returns 
b590: 5b 53 51 4c 49 54 45 5f 49 47 4e 4f 52 45 5d 20  [SQLITE_IGNORE] 
b5a0: 66 6f 72 20 61 6e 20 5b 53 51 4c 49 54 45 5f 44  for an [SQLITE_D
b5b0: 45 4c 45 54 45 5d 20 61 63 74 69 6f 6e 20 63 6f  ELETE] action co
b5c0: 64 65 2c 20 74 68 65 6e 0a 74 68 65 20 44 45 4c  de, then.the DEL
b5d0: 45 54 45 20 6f 70 65 72 61 74 69 6f 6e 20 77 69  ETE operation wi
b5e0: 6c 6c 20 70 72 6f 63 65 65 64 20 62 75 74 20 74  ll proceed but t
b5f0: 68 65 20 74 72 75 6e 63 61 74 65 20 6f 70 74 69  he truncate opti
b600: 6d 69 7a 61 74 69 6f 6e 20 77 69 6c 6c 0a 62 65  mization will.be
b610: 20 62 79 70 61 73 73 65 64 20 61 6e 64 20 72 6f   bypassed and ro
b620: 77 73 20 77 69 6c 6c 20 62 65 20 64 65 6c 65 74  ws will be delet
b630: 65 64 20 6f 6e 65 20 62 79 20 6f 6e 65 2e 3c 2f  ed one by one.</
b640: 70 3e 0a 0a 3c 68 33 3e 55 73 65 20 4f 66 20 4c  p>..<h3>Use Of L
b650: 49 4d 49 54 3c 2f 68 33 3e 0a 0a 3c 70 3e 49 66  IMIT</h3>..<p>If
b660: 20 53 51 4c 69 74 65 20 69 73 20 63 6f 6d 70 69   SQLite is compi
b670: 6c 65 64 20 77 69 74 68 20 74 68 65 20 5b 53 51  led with the [SQ
b680: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 55 50 44 41  LITE_ENABLE_UPDA
b690: 54 45 5f 44 45 4c 45 54 45 5f 4c 49 4d 49 54 5d  TE_DELETE_LIMIT]
b6a0: 0a 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70  .compile-time op
b6b0: 74 69 6f 6e 2c 20 74 68 65 6e 20 74 68 65 20 73  tion, then the s
b6c0: 79 6e 74 61 78 20 6f 66 20 74 68 65 20 44 45 4c  yntax of the DEL
b6d0: 45 54 45 20 73 74 61 74 65 6d 65 6e 74 20 69 73  ETE statement is
b6e0: 0a 65 78 74 65 6e 64 65 64 20 62 79 20 74 68 65  .extended by the
b6f0: 20 61 64 64 69 74 69 6f 6e 20 6f 66 20 6f 70 74   addition of opt
b700: 69 6f 6e 61 6c 20 4f 52 44 45 52 20 42 59 20 61  ional ORDER BY a
b710: 6e 64 20 4c 49 4d 49 54 20 63 6c 61 75 73 65 73  nd LIMIT clauses
b720: 3a 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 42 75 62 62  :</p>..<tcl>Bubb
b730: 6c 65 44 69 61 67 72 61 6d 20 64 65 6c 65 74 65  leDiagram delete
b740: 2d 73 74 6d 74 2d 6c 69 6d 69 74 65 64 3c 2f 74  -stmt-limited</t
b750: 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20 6f 70 74 69  cl>..<p>The opti
b760: 6f 6e 61 6c 20 4c 49 4d 49 54 20 63 6c 61 75 73  onal LIMIT claus
b770: 65 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f  e can be used to
b780: 20 6c 69 6d 69 74 20 74 68 65 20 6e 75 6d 62 65   limit the numbe
b790: 72 20 6f 66 0a 72 6f 77 73 20 64 65 6c 65 74 65  r of.rows delete
b7a0: 64 2c 20 61 6e 64 20 74 68 65 72 65 62 79 20 6c  d, and thereby l
b7b0: 69 6d 69 74 20 74 68 65 20 73 69 7a 65 20 6f 66  imit the size of
b7c0: 20 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e   the transaction
b7d0: 2e 0a 54 68 65 20 4f 52 44 45 52 20 42 59 20 63  ..The ORDER BY c
b7e0: 6c 61 75 73 65 20 69 73 20 75 73 65 64 20 6f 6e  lause is used on
b7f0: 6c 79 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20  ly to determine 
b800: 77 68 69 63 68 20 72 6f 77 73 20 66 61 6c 6c 0a  which rows fall.
b810: 77 69 74 68 69 6e 20 74 68 65 20 4c 49 4d 49 54  within the LIMIT
b820: 2e 20 20 54 68 65 20 6f 72 64 65 72 20 69 6e 20  .  The order in 
b830: 77 68 69 63 68 20 72 6f 77 73 20 61 72 65 20 64  which rows are d
b840: 65 6c 65 74 65 64 20 69 73 20 61 72 62 69 74 72  eleted is arbitr
b850: 61 72 79 0a 61 6e 64 20 69 73 20 6e 6f 74 20 64  ary.and is not d
b860: 65 74 65 72 6d 69 6e 65 64 20 62 79 20 74 68 65  etermined by the
b870: 20 4f 52 44 45 52 20 42 59 20 63 6c 61 75 73 65   ORDER BY clause
b880: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 70 72  .</p>..<p>The pr
b890: 65 73 65 6e 63 65 20 6f 66 20 61 20 4c 49 4d 49  esence of a LIMI
b8a0: 54 20 63 6c 61 75 73 65 20 64 65 66 65 61 74 73  T clause defeats
b8b0: 20 74 68 65 20 74 72 75 6e 63 61 74 65 20 6f 70   the truncate op
b8c0: 74 69 6d 69 7a 61 74 69 6f 6e 0a 63 61 75 73 69  timization.causi
b8d0: 6e 67 20 61 6c 6c 20 72 6f 77 73 20 62 65 69 6e  ng all rows bein
b8e0: 67 20 64 65 6c 65 74 65 64 20 74 6f 20 62 65 20  g deleted to be 
b8f0: 76 69 73 69 74 65 64 2e 3c 2f 70 3e 0a 0a 3c 74  visited.</p>..<t
b900: 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23  cl>.############
b910: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
b920: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
b930: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
b940: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
b950: 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b 44 45 54  ###.Section {DET
b960: 41 43 48 20 44 41 54 41 42 41 53 45 7d 20 64 65  ACH DATABASE} de
b970: 74 61 63 68 20 2a 44 45 54 41 43 48 0a 0a 42 75  tach *DETACH..Bu
b980: 62 62 6c 65 44 69 61 67 72 61 6d 20 64 65 74 61  bbleDiagram deta
b990: 63 68 2d 73 74 6d 74 20 31 0a 3c 2f 74 63 6c 3e  ch-stmt 1.</tcl>
b9a0: 0a 0a 3c 70 3e 54 68 69 73 20 73 74 61 74 65 6d  ..<p>This statem
b9b0: 65 6e 74 20 64 65 74 61 63 68 65 73 20 61 6e 20  ent detaches an 
b9c0: 61 64 64 69 74 69 6f 6e 61 6c 20 64 61 74 61 62  additional datab
b9d0: 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 70  ase connection p
b9e0: 72 65 76 69 6f 75 73 6c 79 20 0a 61 74 74 61 63  reviously .attac
b9f0: 68 65 64 20 75 73 69 6e 67 20 74 68 65 20 5b 41  hed using the [A
ba00: 54 54 41 43 48 5d 20 73 74 61 74 65 6d 65 6e 74  TTACH] statement
ba10: 2e 20 20 0a 49 74 20 69 73 20 70 6f 73 73 69 62  .  .It is possib
ba20: 6c 65 20 74 6f 20 68 61 76 65 20 74 68 65 20 73  le to have the s
ba30: 61 6d 65 20 64 61 74 61 62 61 73 65 20 66 69 6c  ame database fil
ba40: 65 20 61 74 74 61 63 68 65 64 20 6d 75 6c 74 69  e attached multi
ba50: 70 6c 65 20 74 69 6d 65 73 20 75 73 69 6e 67 20  ple times using 
ba60: 0a 64 69 66 66 65 72 65 6e 74 20 6e 61 6d 65 73  .different names
ba70: 2c 20 61 6e 64 20 64 65 74 61 63 68 69 6e 67 20  , and detaching 
ba80: 6f 6e 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74  one connection t
ba90: 6f 20 61 20 66 69 6c 65 20 77 69 6c 6c 20 6c 65  o a file will le
baa0: 61 76 65 20 74 68 65 20 0a 6f 74 68 65 72 73 20  ave the .others 
bab0: 69 6e 74 61 63 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e  intact.</p>..<p>
bac0: 54 68 69 73 20 73 74 61 74 65 6d 65 6e 74 20 77  This statement w
bad0: 69 6c 6c 20 66 61 69 6c 20 69 66 20 53 51 4c 69  ill fail if SQLi
bae0: 74 65 20 69 73 20 69 6e 20 74 68 65 20 6d 69 64  te is in the mid
baf0: 64 6c 65 20 6f 66 20 61 20 74 72 61 6e 73 61 63  dle of a transac
bb00: 74 69 6f 6e 2e 3c 2f 70 3e 0a 0a 0a 3c 74 63 6c  tion.</p>...<tcl
bb10: 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23  >.##############
bb20: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
bb30: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
bb40: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
bb50: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
bb60: 0a 53 65 63 74 69 6f 6e 20 7b 44 52 4f 50 20 49  .Section {DROP I
bb70: 4e 44 45 58 7d 20 64 72 6f 70 69 6e 64 65 78 20  NDEX} dropindex 
bb80: 7b 7b 44 52 4f 50 20 49 4e 44 45 58 7d 7d 0a 0a  {{DROP INDEX}}..
bb90: 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 64 72  BubbleDiagram dr
bba0: 6f 70 2d 69 6e 64 65 78 2d 73 74 6d 74 20 31 0a  op-index-stmt 1.
bbb0: 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20 44  </tcl>..<p>The D
bbc0: 52 4f 50 20 49 4e 44 45 58 20 73 74 61 74 65 6d  ROP INDEX statem
bbd0: 65 6e 74 20 72 65 6d 6f 76 65 73 20 61 6e 20 69  ent removes an i
bbe0: 6e 64 65 78 20 61 64 64 65 64 0a 77 69 74 68 20  ndex added.with 
bbf0: 74 68 65 20 5b 43 52 45 41 54 45 20 49 4e 44 45  the [CREATE INDE
bc00: 58 5d 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 54  X] statement.  T
bc10: 68 65 20 69 6e 64 65 78 20 6e 61 6d 65 64 20 69  he index named i
bc20: 73 20 63 6f 6d 70 6c 65 74 65 6c 79 20 72 65 6d  s completely rem
bc30: 6f 76 65 64 20 66 72 6f 6d 0a 74 68 65 20 64 69  oved from.the di
bc40: 73 6b 2e 20 20 54 68 65 20 6f 6e 6c 79 20 77 61  sk.  The only wa
bc50: 79 20 74 6f 20 72 65 63 6f 76 65 72 20 74 68 65  y to recover the
bc60: 20 69 6e 64 65 78 20 69 73 20 74 6f 20 72 65 65   index is to ree
bc70: 6e 74 65 72 20 74 68 65 0a 61 70 70 72 6f 70 72  nter the.appropr
bc80: 69 61 74 65 20 5b 43 52 45 41 54 45 20 49 4e 44  iate [CREATE IND
bc90: 45 58 5d 20 63 6f 6d 6d 61 6e 64 2e 3c 2f 70 3e  EX] command.</p>
bca0: 0a 0a 3c 70 3e 54 68 65 20 44 52 4f 50 20 49 4e  ..<p>The DROP IN
bcb0: 44 45 58 20 73 74 61 74 65 6d 65 6e 74 20 64 6f  DEX statement do
bcc0: 65 73 20 6e 6f 74 20 72 65 64 75 63 65 20 74 68  es not reduce th
bcd0: 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20 64 61  e size of the da
bce0: 74 61 62 61 73 65 20 0a 66 69 6c 65 20 69 6e 20  tabase .file in 
bcf0: 74 68 65 20 64 65 66 61 75 6c 74 20 6d 6f 64 65  the default mode
bd00: 2e 0a 45 6d 70 74 79 20 73 70 61 63 65 20 69 6e  ..Empty space in
bd10: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 69 73   the database is
bd20: 20 72 65 74 61 69 6e 65 64 20 66 6f 72 20 6c 61   retained for la
bd30: 74 65 72 20 5b 49 4e 53 45 52 54 5d 20 73 74 61  ter [INSERT] sta
bd40: 74 65 6d 65 6e 74 73 2e 20 20 54 6f 20 0a 72 65  tements.  To .re
bd50: 6d 6f 76 65 20 66 72 65 65 20 73 70 61 63 65 20  move free space 
bd60: 69 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 2c  in the database,
bd70: 20 75 73 65 20 74 68 65 20 5b 56 41 43 55 55 4d   use the [VACUUM
bd80: 5d 0a 63 6f 6d 6d 61 6e 64 2e 20 20 49 66 20 5b  ].command.  If [
bd90: 61 75 74 6f 5f 76 61 63 75 75 6d 5d 20 6d 6f 64  auto_vacuum] mod
bda0: 65 20 69 73 20 65 6e 61 62 6c 65 64 20 66 6f 72  e is enabled for
bdb0: 20 61 20 64 61 74 61 62 61 73 65 20 74 68 65 6e   a database then
bdc0: 20 73 70 61 63 65 0a 77 69 6c 6c 20 62 65 20 66   space.will be f
bdd0: 72 65 65 64 20 61 75 74 6f 6d 61 74 69 63 61 6c  reed automatical
bde0: 6c 79 20 62 79 20 44 52 4f 50 20 49 4e 44 45 58  ly by DROP INDEX
bdf0: 2e 3c 2f 70 3e 0a 0a 0a 3c 74 63 6c 3e 0a 23 23  .</p>...<tcl>.##
be00: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
be10: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
be20: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
be30: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
be40: 23 23 23 23 23 23 23 23 23 23 23 23 0a 53 65 63  ############.Sec
be50: 74 69 6f 6e 20 7b 44 52 4f 50 20 54 41 42 4c 45  tion {DROP TABLE
be60: 7d 20 64 72 6f 70 74 61 62 6c 65 20 7b 7b 44 52  } droptable {{DR
be70: 4f 50 20 54 41 42 4c 45 7d 7d 0a 0a 42 75 62 62  OP TABLE}}..Bubb
be80: 6c 65 44 69 61 67 72 61 6d 20 64 72 6f 70 2d 74  leDiagram drop-t
be90: 61 62 6c 65 2d 73 74 6d 74 20 31 0a 3c 2f 74 63  able-stmt 1.</tc
bea0: 6c 3e 0a 0a 3c 70 3e 54 68 65 20 44 52 4f 50 20  l>..<p>The DROP 
beb0: 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 20  TABLE statement 
bec0: 72 65 6d 6f 76 65 73 20 61 20 74 61 62 6c 65 20  removes a table 
bed0: 61 64 64 65 64 20 77 69 74 68 20 74 68 65 0a 5b  added with the.[
bee0: 43 52 45 41 54 45 20 54 41 42 4c 45 5d 20 73 74  CREATE TABLE] st
bef0: 61 74 65 6d 65 6e 74 2e 20 20 54 68 65 20 6e 61  atement.  The na
bf00: 6d 65 20 73 70 65 63 69 66 69 65 64 20 69 73 20  me specified is 
bf10: 74 68 65 0a 74 61 62 6c 65 20 6e 61 6d 65 2e 20  the.table name. 
bf20: 20 49 74 20 69 73 20 63 6f 6d 70 6c 65 74 65 6c   It is completel
bf30: 79 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d 20 74  y removed from t
bf40: 68 65 20 64 61 74 61 62 61 73 65 20 73 63 68 65  he database sche
bf50: 6d 61 20 61 6e 64 20 74 68 65 20 0a 64 69 73 6b  ma and the .disk
bf60: 20 66 69 6c 65 2e 20 20 54 68 65 20 74 61 62 6c   file.  The tabl
bf70: 65 20 63 61 6e 20 6e 6f 74 20 62 65 20 72 65 63  e can not be rec
bf80: 6f 76 65 72 65 64 2e 20 20 41 6c 6c 20 69 6e 64  overed.  All ind
bf90: 69 63 65 73 20 61 6e 64 20 74 72 69 67 67 65 72  ices and trigger
bfa0: 73 0a 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  s.associated wit
bfb0: 68 20 74 68 65 20 74 61 62 6c 65 20 61 72 65 20  h the table are 
bfc0: 61 6c 73 6f 20 64 65 6c 65 74 65 64 2e 3c 2f 70  also deleted.</p
bfd0: 3e 0a 0a 3c 70 3e 54 68 65 20 44 52 4f 50 20 54  >..<p>The DROP T
bfe0: 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 20 64  ABLE statement d
bff0: 6f 65 73 20 6e 6f 74 20 72 65 64 75 63 65 20 74  oes not reduce t
c000: 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20 64  he size of the d
c010: 61 74 61 62 61 73 65 20 0a 66 69 6c 65 20 69 6e  atabase .file in
c020: 20 74 68 65 20 64 65 66 61 75 6c 74 20 6d 6f 64   the default mod
c030: 65 2e 20 20 45 6d 70 74 79 20 73 70 61 63 65 20  e.  Empty space 
c040: 69 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20  in the database 
c050: 69 73 20 72 65 74 61 69 6e 65 64 20 66 6f 72 0a  is retained for.
c060: 6c 61 74 65 72 20 5b 49 4e 53 45 52 54 5d 20 73  later [INSERT] s
c070: 74 61 74 65 6d 65 6e 74 73 2e 20 20 54 6f 20 0a  tatements.  To .
c080: 72 65 6d 6f 76 65 20 66 72 65 65 20 73 70 61 63  remove free spac
c090: 65 20 69 6e 20 74 68 65 20 64 61 74 61 62 61 73  e in the databas
c0a0: 65 2c 20 0a 75 73 65 20 74 68 65 20 5b 56 41 43  e, .use the [VAC
c0b0: 55 55 4d 5d 20 73 74 61 74 65 6d 65 6e 74 2e 0a  UUM] statement..
c0c0: 49 66 20 5b 61 75 74 6f 5f 76 61 63 75 75 6d 5d  If [auto_vacuum]
c0d0: 20 6d 6f 64 65 20 69 73 20 65 6e 61 62 6c 65 64   mode is enabled
c0e0: 20 66 6f 72 20 61 20 64 61 74 61 62 61 73 65 20   for a database 
c0f0: 74 68 65 6e 20 73 70 61 63 65 0a 77 69 6c 6c 20  then space.will 
c100: 62 65 20 66 72 65 65 64 20 61 75 74 6f 6d 61 74  be freed automat
c110: 69 63 61 6c 6c 79 20 62 79 20 44 52 4f 50 20 54  ically by DROP T
c120: 41 42 4c 45 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68  ABLE.</p>..<p>Th
c130: 65 20 6f 70 74 69 6f 6e 61 6c 20 49 46 20 45 58  e optional IF EX
c140: 49 53 54 53 20 63 6c 61 75 73 65 20 73 75 70 70  ISTS clause supp
c150: 72 65 73 73 65 73 20 74 68 65 20 65 72 72 6f 72  resses the error
c160: 20 74 68 61 74 20 77 6f 75 6c 64 20 6e 6f 72 6d   that would norm
c170: 61 6c 6c 79 0a 72 65 73 75 6c 74 20 69 66 20 74  ally.result if t
c180: 68 65 20 74 61 62 6c 65 20 64 6f 65 73 20 6e 6f  he table does no
c190: 74 20 65 78 69 73 74 2e 3c 2f 70 3e 0a 0a 3c 70  t exist.</p>..<p
c1a0: 3e 5e 49 66 20 5b 66 6f 72 65 69 67 6e 20 6b 65  >^If [foreign ke
c1b0: 79 20 63 6f 6e 73 74 72 61 69 6e 74 73 5d 20 61  y constraints] a
c1c0: 72 65 20 65 6e 61 62 6c 65 64 2c 20 61 20 44 52  re enabled, a DR
c1d0: 4f 50 20 54 41 42 4c 45 20 63 6f 6d 6d 61 6e 64  OP TABLE command
c1e0: 20 70 65 72 66 6f 72 6d 73 20 61 6e 0a 69 6d 70   performs an.imp
c1f0: 6c 69 63 69 74 20 5b 44 45 4c 45 54 45 20 7c 20  licit [DELETE | 
c200: 44 45 4c 45 54 45 20 46 52 4f 4d 20 26 6c 74 3b  DELETE FROM &lt;
c210: 74 62 6c 26 67 74 3b 5d 20 63 6f 6d 6d 61 6e 64  tbl&gt;] command
c220: 20 62 65 66 6f 72 65 20 72 65 6d 6f 76 69 6e 67   before removing
c230: 20 74 68 65 0a 74 61 62 6c 65 20 66 72 6f 6d 20   the.table from 
c240: 74 68 65 20 64 61 74 61 62 61 73 65 20 73 63 68  the database sch
c250: 65 6d 61 2e 20 5e 41 6e 79 20 74 72 69 67 67 65  ema. ^Any trigge
c260: 72 73 20 61 74 74 61 63 68 65 64 20 74 6f 20 74  rs attached to t
c270: 68 65 20 74 61 62 6c 65 20 61 72 65 0a 64 72 6f  he table are.dro
c280: 70 70 65 64 20 66 72 6f 6d 20 74 68 65 20 64 61  pped from the da
c290: 74 61 62 61 73 65 20 73 63 68 65 6d 61 20 62 65  tabase schema be
c2a0: 66 6f 72 65 20 74 68 65 20 69 6d 70 6c 69 63 69  fore the implici
c2b0: 74 20 44 45 4c 45 54 45 20 46 52 4f 4d 20 26 6c  t DELETE FROM &l
c2c0: 74 3b 74 62 6c 26 67 74 3b 20 0a 69 73 20 65 78  t;tbl&gt; .is ex
c2d0: 65 63 75 74 65 64 2c 20 73 6f 20 74 68 69 73 20  ecuted, so this 
c2e0: 63 61 6e 6e 6f 74 20 63 61 75 73 65 20 61 6e 79  cannot cause any
c2f0: 20 74 72 69 67 67 65 72 73 20 74 6f 20 66 69 72   triggers to fir
c300: 65 2e 20 42 79 20 63 6f 6e 74 72 61 73 74 2c 20  e. By contrast, 
c310: 5e 61 6e 0a 69 6d 70 6c 69 63 69 74 20 44 45 4c  ^an.implicit DEL
c320: 45 54 45 20 46 52 4f 4d 20 26 6c 74 3b 74 62 6c  ETE FROM &lt;tbl
c330: 26 67 74 3b 20 64 6f 65 73 20 63 61 75 73 65 20  &gt; does cause 
c340: 61 6e 79 20 63 6f 6e 66 69 67 75 72 65 64 0a 5b  any configured.[
c350: 66 6f 72 65 69 67 6e 20 6b 65 79 20 61 63 74 69  foreign key acti
c360: 6f 6e 73 5d 20 74 6f 20 74 61 6b 65 20 70 6c 61  ons] to take pla
c370: 63 65 2e 20 0a 5e 49 66 20 74 68 65 20 69 6d 70  ce. .^If the imp
c380: 6c 69 63 69 74 20 44 45 4c 45 54 45 20 46 52 4f  licit DELETE FRO
c390: 4d 20 26 6c 74 3b 74 62 6c 26 67 74 3b 20 65 78  M &lt;tbl&gt; ex
c3a0: 65 63 75 74 65 64 0a 61 73 20 70 61 72 74 20 6f  ecuted.as part o
c3b0: 66 20 61 20 44 52 4f 50 20 54 41 42 4c 45 20 63  f a DROP TABLE c
c3c0: 6f 6d 6d 61 6e 64 20 76 69 6f 6c 61 74 65 73 20  ommand violates 
c3d0: 61 6e 79 20 69 6d 6d 65 64 69 61 74 65 20 66 6f  any immediate fo
c3e0: 72 65 69 67 6e 20 6b 65 79 20 63 6f 6e 73 74 72  reign key constr
c3f0: 61 69 6e 74 73 2c 0a 61 6e 20 65 72 72 6f 72 20  aints,.an error 
c400: 69 73 20 72 65 74 75 72 6e 65 64 20 61 6e 64 20  is returned and 
c410: 74 68 65 20 74 61 62 6c 65 20 69 73 20 6e 6f 74  the table is not
c420: 20 64 72 6f 70 70 65 64 2e 20 5e 49 66 20 0a 74   dropped. ^If .t
c430: 68 65 20 69 6d 70 6c 69 63 69 74 20 44 45 4c 45  he implicit DELE
c440: 54 45 20 46 52 4f 4d 20 26 6c 74 3b 74 62 6c 26  TE FROM &lt;tbl&
c450: 67 74 3b 20 63 61 75 73 65 73 20 61 6e 79 20 0a  gt; causes any .
c460: 64 65 66 65 72 72 65 64 20 66 6f 72 65 69 67 6e  deferred foreign
c470: 20 6b 65 79 20 63 6f 6e 73 74 72 61 69 6e 74 73   key constraints
c480: 20 74 6f 20 62 65 20 76 69 6f 6c 61 74 65 64 2c   to be violated,
c490: 20 61 6e 64 20 74 68 65 20 76 69 6f 6c 61 74 69   and the violati
c4a0: 6f 6e 73 20 73 74 69 6c 6c 0a 65 78 69 73 74 20  ons still.exist 
c4b0: 77 68 65 6e 20 74 68 65 20 74 72 61 6e 73 61 63  when the transac
c4c0: 74 69 6f 6e 20 69 73 20 63 6f 6d 6d 69 74 74 65  tion is committe
c4d0: 64 2c 20 61 6e 20 65 72 72 6f 72 20 69 73 20 72  d, an error is r
c4e0: 65 74 75 72 6e 65 64 20 61 74 20 74 68 65 20 74  eturned at the t
c4f0: 69 6d 65 0a 6f 66 20 63 6f 6d 6d 69 74 2e 0a 0a  ime.of commit...
c500: 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23  <tcl>.##########
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 23 23 23 23 23 23 23 23 23 23 23 23  ################
c540: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c550: 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b 44 52  ####.Section {DR
c560: 4f 50 20 54 52 49 47 47 45 52 7d 20 64 72 6f 70  OP TRIGGER} drop
c570: 74 72 69 67 67 65 72 20 7b 7b 44 52 4f 50 20 54  trigger {{DROP T
c580: 52 49 47 47 45 52 7d 7d 0a 0a 42 75 62 62 6c 65  RIGGER}}..Bubble
c590: 44 69 61 67 72 61 6d 20 64 72 6f 70 2d 74 72 69  Diagram drop-tri
c5a0: 67 67 65 72 2d 73 74 6d 74 20 31 0a 3c 2f 74 63  gger-stmt 1.</tc
c5b0: 6c 3e 0a 0a 3c 70 3e 54 68 65 20 44 52 4f 50 20  l>..<p>The DROP 
c5c0: 54 52 49 47 47 45 52 20 73 74 61 74 65 6d 65 6e  TRIGGER statemen
c5d0: 74 20 72 65 6d 6f 76 65 73 20 61 20 74 72 69 67  t removes a trig
c5e0: 67 65 72 20 63 72 65 61 74 65 64 20 62 79 20 74  ger created by t
c5f0: 68 65 20 0a 5b 43 52 45 41 54 45 20 54 52 49 47  he .[CREATE TRIG
c600: 47 45 52 5d 20 73 74 61 74 65 6d 65 6e 74 2e 20  GER] statement. 
c610: 20 54 68 65 20 74 72 69 67 67 65 72 20 69 73 20   The trigger is 
c620: 0a 64 65 6c 65 74 65 64 20 66 72 6f 6d 20 74 68  .deleted from th
c630: 65 20 64 61 74 61 62 61 73 65 20 73 63 68 65 6d  e database schem
c640: 61 2e 20 4e 6f 74 65 20 74 68 61 74 20 74 72 69  a. Note that tri
c650: 67 67 65 72 73 20 61 72 65 20 61 75 74 6f 6d 61  ggers are automa
c660: 74 69 63 61 6c 6c 79 20 0a 64 72 6f 70 70 65 64  tically .dropped
c670: 20 77 68 65 6e 20 74 68 65 20 61 73 73 6f 63 69   when the associ
c680: 61 74 65 64 20 74 61 62 6c 65 20 69 73 20 64 72  ated table is dr
c690: 6f 70 70 65 64 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c  opped.</p>..<tcl
c6a0: 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23  >.##############
c6b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c6c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c6d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c6e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c6f0: 0a 53 65 63 74 69 6f 6e 20 7b 44 52 4f 50 20 56  .Section {DROP V
c700: 49 45 57 7d 20 64 72 6f 70 76 69 65 77 20 7b 7b  IEW} dropview {{
c710: 44 52 4f 50 20 56 49 45 57 7d 7d 0a 0a 42 75 62  DROP VIEW}}..Bub
c720: 62 6c 65 44 69 61 67 72 61 6d 20 64 72 6f 70 2d  bleDiagram drop-
c730: 76 69 65 77 2d 73 74 6d 74 20 31 0a 3c 2f 74 63  view-stmt 1.</tc
c740: 6c 3e 0a 0a 3c 70 3e 54 68 65 20 44 52 4f 50 20  l>..<p>The DROP 
c750: 56 49 45 57 20 73 74 61 74 65 6d 65 6e 74 20 72  VIEW statement r
c760: 65 6d 6f 76 65 73 20 61 20 76 69 65 77 20 63 72  emoves a view cr
c770: 65 61 74 65 64 20 62 79 20 74 68 65 0a 5b 43 52  eated by the.[CR
c780: 45 41 54 45 20 56 49 45 57 5d 20 73 74 61 74 65  EATE VIEW] state
c790: 6d 65 6e 74 2e 20 20 54 68 65 20 6e 61 6d 65 20  ment.  The name 
c7a0: 73 70 65 63 69 66 69 65 64 20 69 73 20 74 68 65  specified is the
c7b0: 20 0a 76 69 65 77 20 6e 61 6d 65 2e 20 20 49 74   .view name.  It
c7c0: 20 69 73 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d   is removed from
c7d0: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 73 63   the database sc
c7e0: 68 65 6d 61 2c 20 62 75 74 20 6e 6f 20 61 63 74  hema, but no act
c7f0: 75 61 6c 20 64 61 74 61 20 0a 69 6e 20 74 68 65  ual data .in the
c800: 20 75 6e 64 65 72 6c 79 69 6e 67 20 62 61 73 65   underlying base
c810: 20 74 61 62 6c 65 73 20 69 73 20 6d 6f 64 69 66   tables is modif
c820: 69 65 64 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a  ied.</p>..<tcl>.
c830: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c840: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c850: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c860: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
c870: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 53  ##############.S
c880: 65 63 74 69 6f 6e 20 45 58 50 4c 41 49 4e 20 65  ection EXPLAIN e
c890: 78 70 6c 61 69 6e 20 45 58 50 4c 41 49 4e 0a 0a  xplain EXPLAIN..
c8a0: 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 73 71  BubbleDiagram sq
c8b0: 6c 2d 73 74 6d 74 0a 3c 2f 74 63 6c 3e 0a 0a 3c  l-stmt.</tcl>..<
c8c0: 70 3e 41 6e 20 53 51 4c 20 73 74 61 74 65 6d 65  p>An SQL stateme
c8d0: 6e 74 20 63 61 6e 20 62 65 20 70 72 65 63 65 64  nt can be preced
c8e0: 65 64 20 62 79 20 74 68 65 20 6b 65 79 77 6f 72  ed by the keywor
c8f0: 64 20 22 45 58 50 4c 41 49 4e 22 20 6f 72 0a 62  d "EXPLAIN" or.b
c900: 79 20 74 68 65 20 70 68 72 61 73 65 20 22 45 58  y the phrase "EX
c910: 50 4c 41 49 4e 20 51 55 45 52 59 20 50 4c 41 4e  PLAIN QUERY PLAN
c920: 22 2e 20 20 45 69 74 68 65 72 20 6d 6f 64 69 66  ".  Either modif
c930: 69 63 61 74 69 6f 6e 20 63 61 75 73 65 73 20 74  ication causes t
c940: 68 65 0a 53 51 4c 20 73 74 61 74 65 6d 65 6e 74  he.SQL statement
c950: 20 74 6f 20 62 65 68 61 76 65 20 61 73 20 61 20   to behave as a 
c960: 71 75 65 72 79 20 61 6e 64 20 74 6f 20 72 65 74  query and to ret
c970: 75 72 6e 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20  urn information 
c980: 61 62 6f 75 74 0a 68 6f 77 20 74 68 65 20 53 51  about.how the SQ
c990: 4c 20 73 74 61 74 65 6d 65 6e 74 20 77 6f 75 6c  L statement woul
c9a0: 64 20 68 61 76 65 20 6f 70 65 72 61 74 65 64 20  d have operated 
c9b0: 69 66 20 74 68 65 20 45 58 50 4c 41 49 4e 20 6b  if the EXPLAIN k
c9c0: 65 79 77 6f 72 64 20 6f 72 0a 70 68 72 61 73 65  eyword or.phrase
c9d0: 20 68 61 64 20 62 65 65 6e 20 6f 6d 69 74 74 65   had been omitte
c9e0: 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 57 68 65 6e 20  d.</p>..<p>When 
c9f0: 74 68 65 20 45 58 50 4c 41 49 4e 20 6b 65 79 77  the EXPLAIN keyw
ca00: 6f 72 64 20 61 70 70 65 61 72 73 20 62 79 20 69  ord appears by i
ca10: 74 73 65 6c 66 20 69 74 20 63 61 75 73 65 73 20  tself it causes 
ca20: 74 68 65 20 73 74 61 74 65 6d 65 6e 74 0a 74 6f  the statement.to
ca30: 20 62 65 68 61 76 65 20 61 73 20 61 20 71 75 65   behave as a que
ca40: 72 79 20 74 68 61 74 20 72 65 74 75 72 6e 73 20  ry that returns 
ca50: 74 68 65 20 73 65 71 75 65 6e 63 65 20 6f 66 20  the sequence of 
ca60: 0a 3c 61 20 68 72 65 66 3d 22 6f 70 63 6f 64 65  .<a href="opcode
ca70: 2e 68 74 6d 6c 22 3e 76 69 72 74 75 61 6c 20 6d  .html">virtual m
ca80: 61 63 68 69 6e 65 20 69 6e 73 74 72 75 63 74 69  achine instructi
ca90: 6f 6e 73 3c 2f 61 3e 20 69 74 20 77 6f 75 6c 64  ons</a> it would
caa0: 20 68 61 76 65 0a 75 73 65 64 20 74 6f 20 65 78   have.used to ex
cab0: 65 63 75 74 65 20 74 68 65 20 63 6f 6d 6d 61 6e  ecute the comman
cac0: 64 20 68 61 64 20 74 68 65 20 45 58 50 4c 41 49  d had the EXPLAI
cad0: 4e 20 6b 65 79 77 6f 72 64 20 6e 6f 74 20 62 65  N keyword not be
cae0: 65 6e 20 70 72 65 73 65 6e 74 2e 0a 57 68 65 6e  en present..When
caf0: 20 74 68 65 20 45 58 50 4c 41 49 4e 20 51 55 45   the EXPLAIN QUE
cb00: 52 59 20 50 4c 41 4e 20 70 68 72 61 73 65 20 61  RY PLAN phrase a
cb10: 70 70 65 61 72 73 2c 20 74 68 65 20 73 74 61 74  ppears, the stat
cb20: 65 6d 65 6e 74 20 72 65 74 75 72 6e 73 0a 68 69  ement returns.hi
cb30: 67 68 2d 6c 65 76 65 6c 20 69 6e 66 6f 72 6d 61  gh-level informa
cb40: 74 69 6f 6e 20 61 62 6f 75 74 20 77 68 61 74 20  tion about what 
cb50: 69 6e 64 69 63 65 73 20 77 6f 75 6c 64 20 68 61  indices would ha
cb60: 76 65 20 62 65 65 6e 20 75 73 65 64 2e 3c 2f 70  ve been used.</p
cb70: 3e 0a 0a 3c 70 3e 54 68 65 20 6f 75 74 70 75 74  >..<p>The output
cb80: 20 66 72 6f 6d 20 45 58 50 4c 41 49 4e 20 61 6e   from EXPLAIN an
cb90: 64 20 45 58 50 4c 41 49 4e 20 51 55 45 52 59 20  d EXPLAIN QUERY 
cba0: 50 4c 41 4e 20 69 73 20 69 6e 74 65 6e 64 65 64  PLAN is intended
cbb0: 20 66 6f 72 0a 69 6e 74 65 72 61 63 74 69 76 65   for.interactive
cbc0: 20 61 6e 61 6c 79 73 69 73 20 61 6e 64 20 74 72   analysis and tr
cbd0: 6f 75 62 6c 65 73 68 6f 6f 74 69 6e 67 20 6f 6e  oubleshooting on
cbe0: 6c 79 2e 20 20 54 68 65 20 64 65 74 61 69 6c 73  ly.  The details
cbf0: 20 6f 66 20 74 68 65 20 0a 6f 75 74 70 75 74 20   of the .output 
cc00: 66 6f 72 6d 61 74 20 61 72 65 20 73 75 62 6a 65  format are subje
cc10: 63 74 20 74 6f 20 63 68 61 6e 67 65 20 66 72 6f  ct to change fro
cc20: 6d 20 6f 6e 65 20 72 65 6c 65 61 73 65 20 6f 66  m one release of
cc30: 20 53 51 4c 69 74 65 20 74 6f 20 74 68 65 20 6e   SQLite to the n
cc40: 65 78 74 2e 0a 41 70 70 6c 69 63 61 74 69 6f 6e  ext..Application
cc50: 73 20 73 68 6f 75 6c 64 20 6e 6f 74 20 75 73 65  s should not use
cc60: 20 45 58 50 4c 41 49 4e 20 6f 72 20 45 58 50 4c   EXPLAIN or EXPL
cc70: 41 49 4e 20 51 55 45 52 59 20 50 4c 41 4e 20 73  AIN QUERY PLAN s
cc80: 69 6e 63 65 0a 74 68 65 69 72 20 62 65 68 61 76  ince.their behav
cc90: 69 6f 72 20 69 73 20 75 6e 64 6f 63 75 6d 65 6e  ior is undocumen
cca0: 74 65 64 2c 20 75 6e 73 70 65 63 69 66 69 65 64  ted, unspecified
ccb0: 2c 20 61 6e 64 20 76 61 72 69 61 62 6c 65 2e 3c  , and variable.<
ccc0: 2f 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23  /p>..<tcl>.#####
ccd0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
cce0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
ccf0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
cd00: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
cd10: 23 23 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f  #########.Sectio
cd20: 6e 20 65 78 70 72 65 73 73 69 6f 6e 20 65 78 70  n expression exp
cd30: 72 20 7b 2a 65 78 70 72 65 73 73 69 6f 6e 20 7b  r {*expression {
cd40: 65 78 70 72 65 73 73 69 6f 6e 20 73 79 6e 74 61  expression synta
cd50: 78 7d 7d 0a 0a 42 75 62 62 6c 65 44 69 61 67 72  x}}..BubbleDiagr
cd60: 61 6d 20 65 78 70 72 20 31 0a 42 75 62 62 6c 65  am expr 1.Bubble
cd70: 44 69 61 67 72 61 6d 20 6c 69 74 65 72 61 6c 2d  Diagram literal-
cd80: 76 61 6c 75 65 0a 42 75 62 62 6c 65 44 69 61 67  value.BubbleDiag
cd90: 72 61 6d 20 73 69 67 6e 65 64 2d 6e 75 6d 62 65  ram signed-numbe
cda0: 72 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20  r.BubbleDiagram 
cdb0: 72 61 69 73 65 2d 66 75 6e 63 74 69 6f 6e 0a 3c  raise-function.<
cdc0: 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 69 73 20 73  /tcl>..<p>This s
cdd0: 65 63 74 69 6f 6e 20 69 73 20 64 69 66 66 65 72  ection is differ
cde0: 65 6e 74 20 66 72 6f 6d 20 74 68 65 20 6f 74 68  ent from the oth
cdf0: 65 72 73 2e 20 20 4d 6f 73 74 20 6f 74 68 65 72  ers.  Most other
ce00: 20 73 65 63 74 69 6f 6e 73 20 6f 66 0a 74 68 69   sections of.thi
ce10: 73 20 64 6f 63 75 6d 65 6e 74 20 74 61 6c 6b 73  s document talks
ce20: 20 61 62 6f 75 74 20 61 20 70 61 72 74 69 63 75   about a particu
ce30: 6c 61 72 20 53 51 4c 20 63 6f 6d 6d 61 6e 64 2e  lar SQL command.
ce40: 20 20 54 68 69 73 20 73 65 63 74 69 6f 6e 20 64    This section d
ce50: 6f 65 73 0a 6e 6f 74 20 74 61 6c 6b 20 61 62 6f  oes.not talk abo
ce60: 75 74 20 61 20 73 74 61 6e 64 61 6c 6f 6e 65 20  ut a standalone 
ce70: 63 6f 6d 6d 61 6e 64 20 62 75 74 20 61 62 6f 75  command but abou
ce80: 74 20 22 65 78 70 72 65 73 73 69 6f 6e 73 22 20  t "expressions" 
ce90: 77 68 69 63 68 20 61 72 65 20 0a 73 75 62 63 6f  which are .subco
cea0: 6d 70 6f 6e 65 6e 74 73 20 6f 66 20 6d 6f 73 74  mponents of most
ceb0: 20 6f 74 68 65 72 20 63 6f 6d 6d 61 6e 64 73 2e   other commands.
cec0: 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 68 64 5f 66 72  </p>..<tcl>hd_fr
ced0: 61 67 6d 65 6e 74 20 62 69 6e 61 72 79 6f 70 73  agment binaryops
cee0: 20 7b 62 69 6e 61 72 79 20 6f 70 65 72 61 74 6f   {binary operato
cef0: 72 73 7d 3c 2f 74 63 6c 3e 0a 3c 68 33 3e 4f 70  rs}</tcl>.<h3>Op
cf00: 65 72 61 74 6f 72 73 3c 2f 68 33 3e 0a 3c 70 3e  erators</h3>.<p>
cf10: 53 51 4c 69 74 65 20 75 6e 64 65 72 73 74 61 6e  SQLite understan
cf20: 64 73 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  ds the following
cf30: 20 62 69 6e 61 72 79 20 6f 70 65 72 61 74 6f 72   binary operator
cf40: 73 2c 20 69 6e 20 6f 72 64 65 72 20 66 72 6f 6d  s, in order from
cf50: 0a 68 69 67 68 65 73 74 20 74 6f 20 6c 6f 77 65  .highest to lowe
cf60: 73 74 20 70 72 65 63 65 64 65 6e 63 65 3a 3c 2f  st precedence:</
cf70: 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e  p>..<blockquote>
cf80: 3c 70 72 65 3e 0a 3c 66 6f 6e 74 20 63 6f 6c 6f  <pre>.<font colo
cf90: 72 3d 22 23 32 63 32 63 66 30 22 3e 3c 62 69 67  r="#2c2cf0"><big
cfa0: 3e 7c 7c 0a 2a 20 20 20 20 2f 20 20 20 20 25 0a  >||.*    /    %.
cfb0: 2b 20 20 20 20 2d 0a 26 6c 74 3b 26 6c 74 3b 20  +    -.&lt;&lt; 
cfc0: 20 20 26 67 74 3b 26 67 74 3b 20 20 20 26 61 6d    &gt;&gt;   &am
cfd0: 70 3b 20 20 20 20 7c 0a 26 6c 74 3b 20 20 20 20  p;    |.&lt;    
cfe0: 26 6c 74 3b 3d 20 20 20 26 67 74 3b 20 20 20 20  &lt;=   &gt;    
cff0: 26 67 74 3b 3d 0a 3d 20 20 20 20 3d 3d 20 20 20  &gt;=.=    ==   
d000: 21 3d 20 20 20 26 6c 74 3b 26 67 74 3b 20 20 20  !=   &lt;&gt;   
d010: 3c 2f 62 69 67 3e 49 53 20 20 49 4e 20 20 4c 49  </big>IS  IN  LI
d020: 4b 45 20 20 47 4c 4f 42 20 20 4d 41 54 43 48 20  KE  GLOB  MATCH 
d030: 20 52 45 47 45 58 50 0a 41 4e 44 20 20 20 0a 4f   REGEXP.AND   .O
d040: 52 3c 2f 66 6f 6e 74 3e 0a 3c 2f 70 72 65 3e 3c  R</font>.</pre><
d050: 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70  /blockquote>..<p
d060: 3e 53 75 70 70 6f 72 74 65 64 20 75 6e 61 72 79  >Supported unary
d070: 20 70 72 65 66 69 78 20 6f 70 65 72 61 74 6f 72   prefix operator
d080: 73 20 61 72 65 20 74 68 65 73 65 3a 3c 2f 70 3e  s are these:</p>
d090: 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70  ..<blockquote><p
d0a0: 72 65 3e 0a 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d  re>.<font color=
d0b0: 22 23 32 63 32 63 66 30 22 3e 3c 62 69 67 3e 2d  "#2c2cf0"><big>-
d0c0: 20 20 20 20 2b 20 20 20 20 7e 20 20 20 20 4e 4f      +    ~    NO
d0d0: 54 3c 2f 62 69 67 3e 3c 2f 66 6f 6e 74 3e 0a 3c  T</big></font>.<
d0e0: 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74  /pre></blockquot
d0f0: 65 3e 0a 0a 3c 70 3e 54 68 65 20 43 4f 4c 4c 41  e>..<p>The COLLA
d100: 54 45 20 6f 70 65 72 61 74 6f 72 20 63 61 6e 20  TE operator can 
d110: 62 65 20 74 68 6f 75 67 68 74 20 6f 66 20 61 73  be thought of as
d120: 20 61 20 75 6e 61 72 79 20 70 6f 73 74 66 69 78   a unary postfix
d130: 0a 6f 70 65 72 61 74 6f 72 2e 20 20 54 68 65 20  .operator.  The 
d140: 43 4f 4c 4c 41 54 45 20 6f 70 65 72 61 74 6f 72  COLLATE operator
d150: 20 68 61 73 20 74 68 65 20 68 69 67 68 65 73 74   has the highest
d160: 20 70 72 65 63 65 64 65 6e 63 65 2e 0a 49 74 20   precedence..It 
d170: 61 6c 77 61 79 73 20 62 69 6e 64 73 20 6d 6f 72  always binds mor
d180: 65 20 74 69 67 68 74 6c 79 20 74 68 61 6e 20 61  e tightly than a
d190: 6e 79 20 70 72 65 66 69 78 20 75 6e 61 72 79 20  ny prefix unary 
d1a0: 6f 70 65 72 61 74 6f 72 20 6f 72 0a 61 6e 79 20  operator or.any 
d1b0: 62 69 6e 61 72 79 20 6f 70 65 72 61 74 6f 72 2e  binary operator.
d1c0: 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 68 64 5f 70 75  </p>..<tcl>hd_pu
d1d0: 74 73 20 22 0a 3c 70 3e 54 68 65 20 75 6e 61 72  ts ".<p>The unar
d1e0: 79 20 6f 70 65 72 61 74 6f 72 20 5b 4f 70 65 72  y operator [Oper
d1f0: 61 74 6f 72 20 2b 5d 20 69 73 20 61 20 6e 6f 2d  ator +] is a no-
d200: 6f 70 2e 20 20 49 74 20 63 61 6e 20 62 65 20 61  op.  It can be a
d210: 70 70 6c 69 65 64 0a 74 6f 20 73 74 72 69 6e 67  pplied.to string
d220: 73 2c 20 6e 75 6d 62 65 72 73 2c 20 6f 72 20 62  s, numbers, or b
d230: 6c 6f 62 73 20 61 6e 64 20 69 74 20 61 6c 77 61  lobs and it alwa
d240: 79 73 20 67 69 76 65 73 20 61 73 20 69 74 73 20  ys gives as its 
d250: 72 65 73 75 6c 74 20 74 68 65 0a 76 61 6c 75 65  result the.value
d260: 20 6f 66 20 74 68 65 20 6f 70 65 72 61 6e 64 2e   of the operand.
d270: 3c 2f 70 3e 22 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e  </p>"</tcl>..<p>
d280: 4e 6f 74 65 20 74 68 61 74 20 74 68 65 72 65 20  Note that there 
d290: 61 72 65 20 74 77 6f 20 76 61 72 69 61 74 69 6f  are two variatio
d2a0: 6e 73 20 6f 66 20 74 68 65 20 65 71 75 61 6c 73  ns of the equals
d2b0: 20 61 6e 64 20 6e 6f 74 20 65 71 75 61 6c 73 0a   and not equals.
d2c0: 6f 70 65 72 61 74 6f 72 73 2e 20 20 45 71 75 61  operators.  Equa
d2d0: 6c 73 20 63 61 6e 20 62 65 20 65 69 74 68 65 72  ls can be either
d2e0: 0a 0a 3c 74 63 6c 3e 0a 68 64 5f 70 75 74 73 20  ..<tcl>.hd_puts 
d2f0: 22 5b 4f 70 65 72 61 74 6f 72 20 3d 5d 20 6f 72  "[Operator =] or
d300: 20 5b 4f 70 65 72 61 74 6f 72 20 3d 3d 5d 2e 0a   [Operator ==]..
d310: 54 68 65 20 6e 6f 6e 2d 65 71 75 61 6c 73 20 6f  The non-equals o
d320: 70 65 72 61 74 6f 72 20 63 61 6e 20 62 65 20 65  perator can be e
d330: 69 74 68 65 72 0a 5b 4f 70 65 72 61 74 6f 72 20  ither.[Operator 
d340: 21 3d 5d 20 6f 72 20 5b 4f 70 65 72 61 74 6f 72  !=] or [Operator
d350: 20 7b 26 6c 74 3b 26 67 74 3b 7d 5d 2e 0a 54 68   {&lt;&gt;}]..Th
d360: 65 20 5b 4f 70 65 72 61 74 6f 72 20 7c 7c 5d 20  e [Operator ||] 
d370: 6f 70 65 72 61 74 6f 72 20 69 73 20 5c 22 63 6f  operator is \"co
d380: 6e 63 61 74 65 6e 61 74 65 5c 22 20 2d 20 69 74  ncatenate\" - it
d390: 20 6a 6f 69 6e 73 20 74 6f 67 65 74 68 65 72 0a   joins together.
d3a0: 74 68 65 20 74 77 6f 20 73 74 72 69 6e 67 73 20  the two strings 
d3b0: 6f 66 20 69 74 73 20 6f 70 65 72 61 6e 64 73 2e  of its operands.
d3c0: 0a 54 68 65 20 6f 70 65 72 61 74 6f 72 20 5b 4f  .The operator [O
d3d0: 70 65 72 61 74 6f 72 20 25 5d 20 6f 75 74 70 75  perator %] outpu
d3e0: 74 73 20 74 68 65 20 72 65 6d 61 69 6e 64 65 72  ts the remainder
d3f0: 20 6f 66 20 69 74 73 20 6c 65 66 74 20 0a 6f 70   of its left .op
d400: 65 72 61 6e 64 20 6d 6f 64 75 6c 6f 20 69 74 73  erand modulo its
d410: 20 72 69 67 68 74 20 6f 70 65 72 61 6e 64 2e 3c   right operand.<
d420: 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 72 65 73 75  /p>..<p>The resu
d430: 6c 74 20 6f 66 20 61 6e 79 20 62 69 6e 61 72 79  lt of any binary
d440: 20 6f 70 65 72 61 74 6f 72 20 69 73 20 61 20 6e   operator is a n
d450: 75 6d 65 72 69 63 20 76 61 6c 75 65 2c 20 65 78  umeric value, ex
d460: 63 65 70 74 0a 66 6f 72 20 74 68 65 20 5b 4f 70  cept.for the [Op
d470: 65 72 61 74 6f 72 20 7c 7c 5d 20 63 6f 6e 63 61  erator ||] conca
d480: 74 65 6e 61 74 69 6f 6e 20 6f 70 65 72 61 74 6f  tenation operato
d490: 72 20 77 68 69 63 68 20 67 69 76 65 73 20 61 20  r which gives a 
d4a0: 73 74 72 69 6e 67 0a 72 65 73 75 6c 74 2e 3c 2f  string.result.</
d4b0: 70 3e 22 0a 0a 68 64 5f 66 72 61 67 6d 65 6e 74  p>"..hd_fragment
d4c0: 20 7b 69 73 69 73 6e 6f 74 7d 20 7b 49 53 20 6f   {isisnot} {IS o
d4d0: 70 65 72 61 74 6f 72 7d 20 7b 49 53 20 4e 4f 54  perator} {IS NOT
d4e0: 20 6f 70 65 72 61 74 6f 72 7d 0a 0a 68 64 5f 70   operator}..hd_p
d4f0: 75 74 73 20 22 3c 70 3e 54 68 65 20 5b 4f 70 65  uts "<p>The [Ope
d500: 72 61 74 6f 72 20 49 53 5d 20 61 6e 64 20 5b 4f  rator IS] and [O
d510: 70 65 72 61 74 6f 72 20 7b 49 53 20 4e 4f 54 7d  perator {IS NOT}
d520: 5d 20 6f 70 65 72 61 74 6f 72 73 20 77 6f 72 6b  ] operators work
d530: 0a 6c 69 6b 65 20 5b 4f 70 65 72 61 74 6f 72 20  .like [Operator 
d540: 3d 5d 20 61 6e 64 20 5b 4f 70 65 72 61 74 6f 72  =] and [Operator
d550: 20 21 3d 5d 20 65 78 63 65 70 74 20 74 68 61 74   !=] except that
d560: 20 4e 55 4c 4c 20 76 61 6c 75 65 73 20 63 6f 6d   NULL values com
d570: 70 61 72 65 0a 65 71 75 61 6c 20 74 6f 20 6f 6e  pare.equal to on
d580: 65 20 61 6e 6f 74 68 65 72 2e 20 20 5b 4f 70 65  e another.  [Ope
d590: 72 61 74 6f 72 20 49 53 5d 20 61 6e 64 20 5b 4f  rator IS] and [O
d5a0: 70 65 72 61 74 6f 72 20 7b 49 53 20 4e 4f 54 7d  perator {IS NOT}
d5b0: 5d 0a 68 61 76 65 20 74 68 65 20 73 61 6d 65 20  ].have the same 
d5c0: 70 72 65 63 65 64 65 6e 63 65 20 61 73 20 5b 4f  precedence as [O
d5d0: 70 65 72 61 74 6f 72 20 3d 5d 2e 22 0a 0a 3c 74  perator =]."..<t
d5e0: 63 6c 3e 68 64 5f 66 72 61 67 6d 65 6e 74 20 6c  cl>hd_fragment l
d5f0: 69 74 76 61 6c 75 65 20 7b 6c 69 74 65 72 61 6c  itvalue {literal
d600: 20 76 61 6c 75 65 7d 3c 2f 74 63 6c 3e 0a 3c 68   value}</tcl>.<h
d610: 33 3e 4c 69 74 65 72 61 6c 20 56 61 6c 75 65 73  3>Literal Values
d620: 3c 2f 68 33 3e 0a 3c 70 3e 0a 41 20 6c 69 74 65  </h3>.<p>.A lite
d630: 72 61 6c 20 76 61 6c 75 65 20 69 73 20 61 20 63  ral value is a c
d640: 6f 6e 73 74 61 6e 74 20 6f 66 20 73 6f 6d 65 20  onstant of some 
d650: 6b 69 6e 64 2e 0a 4c 69 74 65 72 61 6c 20 76 61  kind..Literal va
d660: 6c 75 65 73 20 6d 61 79 20 62 65 20 69 6e 74 65  lues may be inte
d670: 67 65 72 73 2c 20 66 6c 6f 61 74 69 6e 67 20 70  gers, floating p
d680: 6f 69 6e 74 20 6e 75 6d 62 65 72 73 2c 20 73 74  oint numbers, st
d690: 72 69 6e 67 73 2c 0a 42 4c 4f 42 73 2c 20 6f 72  rings,.BLOBs, or
d6a0: 20 4e 55 4c 4c 73 2e 0a 53 63 69 65 6e 74 69 66   NULLs..Scientif
d6b0: 69 63 20 6e 6f 74 61 74 69 6f 6e 20 69 73 20 73  ic notation is s
d6c0: 75 70 70 6f 72 74 65 64 20 66 6f 72 20 66 6c 6f  upported for flo
d6d0: 61 74 69 6e 67 20 70 6f 69 6e 74 20 6c 69 74 65  ating point lite
d6e0: 72 61 6c 20 76 61 6c 75 65 73 2e 0a 54 68 65 20  ral values..The 
d6f0: 22 2e 22 20 63 68 61 72 61 63 74 65 72 20 69 73  "." character is
d700: 20 61 6c 77 61 79 73 20 75 73 65 64 20 0a 61 73   always used .as
d710: 20 74 68 65 20 64 65 63 69 6d 61 6c 20 70 6f 69   the decimal poi
d720: 6e 74 20 65 76 65 6e 20 69 66 20 74 68 65 20 6c  nt even if the l
d730: 6f 63 61 6c 65 20 73 65 74 74 69 6e 67 20 73 70  ocale setting sp
d740: 65 63 69 66 69 65 73 20 22 2c 22 20 66 6f 72 0a  ecifies "," for.
d750: 74 68 69 73 20 72 6f 6c 65 20 2d 20 74 68 65 20  this role - the 
d760: 75 73 65 20 6f 66 20 22 2c 22 20 66 6f 72 20 74  use of "," for t
d770: 68 65 20 64 65 63 69 6d 61 6c 20 70 6f 69 6e 74  he decimal point
d780: 20 77 6f 75 6c 64 20 72 65 73 75 6c 74 20 69 6e   would result in
d790: 0a 73 79 6e 74 61 63 74 69 63 20 61 6d 62 69 67  .syntactic ambig
d7a0: 75 69 74 79 2e 20 20 41 20 73 74 72 69 6e 67 20  uity.  A string 
d7b0: 63 6f 6e 73 74 61 6e 74 20 69 73 20 66 6f 72 6d  constant is form
d7c0: 65 64 20 62 79 20 65 6e 63 6c 6f 73 69 6e 67 20  ed by enclosing 
d7d0: 74 68 65 0a 73 74 72 69 6e 67 20 69 6e 20 73 69  the.string in si
d7e0: 6e 67 6c 65 20 71 75 6f 74 65 73 20 28 27 29 2e  ngle quotes (').
d7f0: 20 20 41 20 73 69 6e 67 6c 65 20 71 75 6f 74 65    A single quote
d800: 20 77 69 74 68 69 6e 20 74 68 65 20 73 74 72 69   within the stri
d810: 6e 67 20 63 61 6e 0a 62 65 20 65 6e 63 6f 64 65  ng can.be encode
d820: 64 20 62 79 20 70 75 74 74 69 6e 67 20 74 77 6f  d by putting two
d830: 20 73 69 6e 67 6c 65 20 71 75 6f 74 65 73 20 69   single quotes i
d840: 6e 20 61 20 72 6f 77 20 2d 20 61 73 20 69 6e 20  n a row - as in 
d850: 50 61 73 63 61 6c 2e 0a 43 2d 73 74 79 6c 65 20  Pascal..C-style 
d860: 65 73 63 61 70 65 73 20 75 73 69 6e 67 20 74 68  escapes using th
d870: 65 20 62 61 63 6b 73 6c 61 73 68 20 63 68 61 72  e backslash char
d880: 61 63 74 65 72 20 61 72 65 20 6e 6f 74 20 73 75  acter are not su
d890: 70 70 6f 72 74 65 64 20 62 65 63 61 75 73 65 0a  pported because.
d8a0: 74 68 65 79 20 61 72 65 20 6e 6f 74 20 73 74 61  they are not sta
d8b0: 6e 64 61 72 64 20 53 51 4c 2e 0a 42 4c 4f 42 20  ndard SQL..BLOB 
d8c0: 6c 69 74 65 72 61 6c 73 20 61 72 65 20 73 74 72  literals are str
d8d0: 69 6e 67 20 6c 69 74 65 72 61 6c 73 20 63 6f 6e  ing literals con
d8e0: 74 61 69 6e 69 6e 67 20 68 65 78 61 64 65 63 69  taining hexadeci
d8f0: 6d 61 6c 20 64 61 74 61 20 61 6e 64 0a 70 72 65  mal data and.pre
d900: 63 65 64 65 64 20 62 79 20 61 20 73 69 6e 67 6c  ceded by a singl
d910: 65 20 22 78 22 20 6f 72 20 22 58 22 20 63 68 61  e "x" or "X" cha
d920: 72 61 63 74 65 72 2e 20 20 46 6f 72 20 65 78 61  racter.  For exa
d930: 6d 70 6c 65 3a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63  mple:</p>..<bloc
d940: 6b 71 75 6f 74 65 3e 3c 70 72 65 3e 0a 58 27 35  kquote><pre>.X'5
d950: 33 35 31 34 43 36 39 37 34 36 35 27 0a 3c 2f 70  3514C697465'.</p
d960: 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e  re></blockquote>
d970: 0a 0a 3c 70 3e 0a 41 20 6c 69 74 65 72 61 6c 20  ..<p>.A literal 
d980: 76 61 6c 75 65 20 63 61 6e 20 61 6c 73 6f 20 62  value can also b
d990: 65 20 74 68 65 20 74 6f 6b 65 6e 20 22 4e 55 4c  e the token "NUL
d9a0: 4c 22 2e 0a 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 68  L"..</p>..<tcl>h
d9b0: 64 5f 66 72 61 67 6d 65 6e 74 20 76 61 72 70 61  d_fragment varpa
d9c0: 72 61 6d 20 70 61 72 61 6d 65 74 65 72 20 70 61  ram parameter pa
d9d0: 72 61 6d 65 74 65 72 73 20 7b 62 6f 75 6e 64 20  rameters {bound 
d9e0: 70 61 72 61 6d 65 74 65 72 7d 20 7b 62 6f 75 6e  parameter} {boun
d9f0: 64 20 70 61 72 61 6d 65 74 65 72 73 7d 3c 2f 74  d parameters}</t
da00: 63 6c 3e 0a 3c 68 33 3e 50 61 72 61 6d 65 74 65  cl>.<h3>Paramete
da10: 72 73 3c 2f 68 33 3e 0a 3c 70 3e 0a 41 20 22 76  rs</h3>.<p>.A "v
da20: 61 72 69 61 62 6c 65 22 20 6f 72 20 22 70 61 72  ariable" or "par
da30: 61 6d 65 74 65 72 22 20 74 6f 6b 65 6e 0a 73 70  ameter" token.sp
da40: 65 63 69 66 69 65 73 20 61 20 70 6c 61 63 65 68  ecifies a placeh
da50: 6f 6c 64 65 72 20 69 6e 20 74 68 65 20 65 78 70  older in the exp
da60: 72 65 73 73 69 6f 6e 20 66 6f 72 20 61 20 6c 69  ression for a li
da70: 74 65 72 61 6c 0a 76 61 6c 75 65 20 74 68 61 74  teral.value that
da80: 20 69 73 20 66 69 6c 6c 65 64 20 69 6e 20 61 74   is filled in at
da90: 20 72 75 6e 74 69 6d 65 20 75 73 69 6e 67 20 74   runtime using t
daa0: 68 65 0a 5b 73 71 6c 69 74 65 33 5f 62 69 6e 64  he.[sqlite3_bind
dab0: 5f 62 6c 6f 62 28 29 20 7c 20 73 71 6c 69 74 65  _blob() | sqlite
dac0: 33 5f 62 69 6e 64 28 29 5d 20 66 61 6d 69 6c 79  3_bind()] family
dad0: 20 6f 66 20 43 2f 43 2b 2b 20 69 6e 74 65 72 66   of C/C++ interf
dae0: 61 63 65 73 2e 0a 50 61 72 61 6d 65 74 65 72 73  aces..Parameters
daf0: 20 63 61 6e 20 74 61 6b 65 20 73 65 76 65 72 61   can take severa
db00: 6c 20 66 6f 72 6d 73 3a 0a 3c 2f 70 0a 0a 3c 62  l forms:.</p..<b
db10: 6c 6f 63 6b 71 75 6f 74 65 3e 0a 3c 74 61 62 6c  lockquote>.<tabl
db20: 65 3e 0a 3c 74 72 3e 0a 3c 74 64 20 61 6c 69 67  e>.<tr>.<td alig
db30: 6e 3d 22 72 69 67 68 74 22 20 76 61 6c 69 67 6e  n="right" valign
db40: 3d 22 74 6f 70 22 3e 3c 62 3e 3f 3c 2f 62 3e 3c  ="top"><b>?</b><
db50: 69 3e 4e 4e 4e 3c 2f 69 3e 3c 2f 74 64 3e 3c 74  i>NNN</i></td><t
db60: 64 20 77 69 64 74 68 3d 22 32 30 22 3e 3c 2f 74  d width="20"></t
db70: 64 3e 0a 3c 74 64 3e 41 20 71 75 65 73 74 69 6f  d>.<td>A questio
db80: 6e 20 6d 61 72 6b 20 66 6f 6c 6c 6f 77 65 64 20  n mark followed 
db90: 62 79 20 61 20 6e 75 6d 62 65 72 20 3c 69 3e 4e  by a number <i>N
dba0: 4e 4e 3c 2f 69 3e 20 68 6f 6c 64 73 20 61 20 73  NN</i> holds a s
dbb0: 70 6f 74 20 66 6f 72 20 74 68 65 0a 4e 4e 4e 2d  pot for the.NNN-
dbc0: 74 68 20 70 61 72 61 6d 65 74 65 72 2e 20 20 4e  th parameter.  N
dbd0: 4e 4e 20 6d 75 73 74 20 62 65 20 62 65 74 77 65  NN must be betwe
dbe0: 65 6e 20 31 20 61 6e 64 20 5b 53 51 4c 49 54 45  en 1 and [SQLITE
dbf0: 5f 4d 41 58 5f 56 41 52 49 41 42 4c 45 5f 4e 55  _MAX_VARIABLE_NU
dc00: 4d 42 45 52 5d 2e 3c 2f 74 64 3e 0a 3c 2f 74 72  MBER].</td>.</tr
dc10: 3e 0a 3c 74 72 3e 0a 3c 74 64 20 61 6c 69 67 6e  >.<tr>.<td align
dc20: 3d 22 72 69 67 68 74 22 20 76 61 6c 69 67 6e 3d  ="right" valign=
dc30: 22 74 6f 70 22 3e 3c 62 3e 3f 3c 2f 62 3e 3c 2f  "top"><b>?</b></
dc40: 74 64 3e 3c 74 64 20 77 69 64 74 68 3d 22 32 30  td><td width="20
dc50: 22 3e 3c 2f 74 64 3e 0a 3c 74 64 3e 41 20 71 75  "></td>.<td>A qu
dc60: 65 73 74 69 6f 6e 20 6d 61 72 6b 20 74 68 61 74  estion mark that
dc70: 20 69 73 20 6e 6f 74 20 66 6f 6c 6c 6f 77 65 64   is not followed
dc80: 20 62 79 20 61 20 6e 75 6d 62 65 72 20 68 6f 6c   by a number hol
dc90: 64 73 20 61 20 73 70 6f 74 20 66 6f 72 0a 74 68  ds a spot for.th
dca0: 65 20 6e 65 78 74 20 75 6e 75 73 65 64 20 70 61  e next unused pa
dcb0: 72 61 6d 65 74 65 72 2e 3c 2f 74 64 3e 0a 3c 2f  rameter.</td>.</
dcc0: 74 72 3e 0a 3c 74 72 3e 0a 3c 74 64 20 61 6c 69  tr>.<tr>.<td ali
dcd0: 67 6e 3d 22 72 69 67 68 74 22 20 76 61 6c 69 67  gn="right" valig
dce0: 6e 3d 22 74 6f 70 22 3e 3c 62 3e 3a 3c 2f 62 3e  n="top"><b>:</b>
dcf0: 3c 69 3e 41 41 41 41 3c 2f 69 3e 3c 2f 74 64 3e  <i>AAAA</i></td>
dd00: 3c 74 64 20 77 69 64 74 68 3d 22 32 30 22 3e 3c  <td width="20"><
dd10: 2f 74 64 3e 0a 3c 74 64 3e 41 20 63 6f 6c 6f 6e  /td>.<td>A colon
dd20: 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 61 6e 20   followed by an 
dd30: 69 64 65 6e 74 69 66 69 65 72 20 6e 61 6d 65 20  identifier name 
dd40: 68 6f 6c 64 73 20 61 20 73 70 6f 74 20 66 6f 72  holds a spot for
dd50: 20 61 20 6e 61 6d 65 64 0a 70 61 72 61 6d 65 74   a named.paramet
dd60: 65 72 20 77 69 74 68 20 74 68 65 20 6e 61 6d 65  er with the name
dd70: 20 41 41 41 41 2e 20 20 4e 61 6d 65 64 20 70 61   AAAA.  Named pa
dd80: 72 61 6d 65 74 65 72 73 20 61 72 65 20 61 6c 73  rameters are als
dd90: 6f 20 6e 75 6d 62 65 72 65 64 2e 0a 54 68 65 20  o numbered..The 
dda0: 6e 75 6d 62 65 72 20 61 73 73 69 67 6e 65 64 20  number assigned 
ddb0: 69 73 20 74 68 65 20 6e 65 78 74 20 75 6e 75 73  is the next unus
ddc0: 65 64 20 6e 75 6d 62 65 72 2e 20 20 54 6f 20 61  ed number.  To a
ddd0: 76 6f 69 64 20 63 6f 6e 66 75 73 69 6f 6e 2c 0a  void confusion,.
dde0: 69 74 20 69 73 20 62 65 73 74 20 74 6f 20 61 76  it is best to av
ddf0: 6f 69 64 20 6d 69 78 69 6e 67 20 6e 61 6d 65 64  oid mixing named
de00: 20 61 6e 64 20 6e 75 6d 62 65 72 65 64 20 70 61   and numbered pa
de10: 72 61 6d 65 74 65 72 73 2e 3c 2f 74 64 3e 0a 3c  rameters.</td>.<
de20: 2f 74 72 3e 0a 3c 74 72 3e 0a 3c 74 64 20 61 6c  /tr>.<tr>.<td al
de30: 69 67 6e 3d 22 72 69 67 68 74 22 20 76 61 6c 69  ign="right" vali
de40: 67 6e 3d 22 74 6f 70 22 3e 3c 62 3e 40 3c 2f 62  gn="top"><b>@</b
de50: 3e 3c 69 3e 41 41 41 41 3c 2f 69 3e 3c 2f 74 64  ><i>AAAA</i></td
de60: 3e 3c 74 64 20 77 69 64 74 68 3d 22 32 30 22 3e  ><td width="20">
de70: 3c 2f 74 64 3e 0a 3c 74 64 3e 41 6e 20 22 61 74  </td>.<td>An "at
de80: 22 20 73 69 67 6e 20 77 6f 72 6b 73 20 65 78 61  " sign works exa
de90: 63 74 6c 79 20 6c 69 6b 65 20 61 20 63 6f 6c 6f  ctly like a colo
dea0: 6e 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 74  n.</td>.</tr>.<t
deb0: 72 3e 0a 3c 74 64 20 61 6c 69 67 6e 3d 22 72 69  r>.<td align="ri
dec0: 67 68 74 22 20 76 61 6c 69 67 6e 3d 22 74 6f 70  ght" valign="top
ded0: 22 3e 3c 62 3e 24 3c 2f 62 3e 3c 69 3e 41 41 41  "><b>$</b><i>AAA
dee0: 41 3c 2f 69 3e 3c 2f 74 64 3e 3c 74 64 20 77 69  A</i></td><td wi
def0: 64 74 68 3d 22 32 30 22 3e 3c 2f 74 64 3e 0a 3c  dth="20"></td>.<
df00: 74 64 3e 41 20 64 6f 6c 6c 61 72 2d 73 69 67 6e  td>A dollar-sign
df10: 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 61 6e 20   followed by an 
df20: 69 64 65 6e 74 69 66 69 65 72 20 6e 61 6d 65 20  identifier name 
df30: 61 6c 73 6f 20 68 6f 6c 64 73 20 61 20 73 70 6f  also holds a spo
df40: 74 20 66 6f 72 20 61 20 6e 61 6d 65 64 0a 70 61  t for a named.pa
df50: 72 61 6d 65 74 65 72 20 77 69 74 68 20 74 68 65  rameter with the
df60: 20 6e 61 6d 65 20 41 41 41 41 2e 20 20 54 68 65   name AAAA.  The
df70: 20 69 64 65 6e 74 69 66 69 65 72 20 6e 61 6d 65   identifier name
df80: 20 69 6e 20 74 68 69 73 20 63 61 73 65 20 63 61   in this case ca
df90: 6e 20 69 6e 63 6c 75 64 65 0a 6f 6e 65 20 6f 72  n include.one or
dfa0: 20 6d 6f 72 65 20 6f 63 63 75 72 61 6e 63 65 73   more occurances
dfb0: 20 6f 66 20 22 3a 3a 22 20 61 6e 64 20 61 20 73   of "::" and a s
dfc0: 75 66 66 69 78 20 65 6e 63 6c 6f 73 65 64 20 69  uffix enclosed i
dfd0: 6e 20 22 28 2e 2e 2e 29 22 20 63 6f 6e 74 61 69  n "(...)" contai
dfe0: 6e 69 6e 67 0a 61 6e 79 20 74 65 78 74 20 61 74  ning.any text at
dff0: 20 61 6c 6c 2e 20 20 54 68 69 73 20 73 79 6e 74   all.  This synt
e000: 61 78 20 69 73 20 74 68 65 20 66 6f 72 6d 20 6f  ax is the form o
e010: 66 20 61 20 76 61 72 69 61 62 6c 65 20 6e 61 6d  f a variable nam
e020: 65 20 69 6e 20 74 68 65 0a 5b 68 74 74 70 3a 2f  e in the.[http:/
e030: 2f 77 77 77 2e 74 63 6c 2e 74 6b 2f 20 7c 20 54  /www.tcl.tk/ | T
e040: 63 6c 20 70 72 6f 67 72 61 6d 6d 69 6e 67 20 6c  cl programming l
e050: 61 6e 67 75 61 67 65 5d 2e 20 20 54 68 65 20 70  anguage].  The p
e060: 72 65 73 65 6e 63 65 0a 6f 66 20 74 68 69 73 20  resence.of this 
e070: 73 79 6e 74 61 78 20 72 65 73 75 6c 74 73 20 66  syntax results f
e080: 72 6f 6d 20 74 68 65 20 66 61 63 74 20 74 68 61  rom the fact tha
e090: 74 20 53 51 4c 69 74 65 20 69 73 20 72 65 61 6c  t SQLite is real
e0a0: 6c 79 20 61 20 0a 5b 54 63 6c 20 65 78 74 65 6e  ly a .[Tcl exten
e0b0: 73 69 6f 6e 5d 20 74 68 61 74 20 68 61 73 20 65  sion] that has e
e0c0: 73 63 61 70 65 64 20 69 6e 74 6f 20 74 68 65 20  scaped into the 
e0d0: 77 69 6c 64 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e  wild.</td>.</tr>
e0e0: 0a 3c 2f 74 61 62 6c 65 3e 0a 3c 2f 62 6c 6f 63  .</table>.</bloc
e0f0: 6b 71 75 6f 74 65 3e 0a 0a 3c 70 3e 50 61 72 61  kquote>..<p>Para
e100: 6d 65 74 65 72 73 20 74 68 61 74 20 61 72 65 20  meters that are 
e110: 6e 6f 74 20 61 73 73 69 67 6e 65 64 20 76 61 6c  not assigned val
e120: 75 65 73 20 75 73 69 6e 67 0a 5b 73 71 6c 69 74  ues using.[sqlit
e130: 65 33 5f 62 69 6e 64 5f 62 6c 6f 62 28 29 20 7c  e3_bind_blob() |
e140: 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 28 29 5d   sqlite3_bind()]
e150: 20 61 72 65 20 74 72 65 61 74 65 64 0a 61 73 20   are treated.as 
e160: 4e 55 4c 4c 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e  NULL.</p>..<tcl>
e170: 68 64 5f 66 72 61 67 6d 65 6e 74 20 6c 69 6b 65  hd_fragment like
e180: 20 4c 49 4b 45 20 45 53 43 41 50 45 3c 2f 74 63   LIKE ESCAPE</tc
e190: 6c 3e 0a 3c 68 33 3e 54 68 65 20 4c 49 4b 45 20  l>.<h3>The LIKE 
e1a0: 61 6e 64 20 47 4c 4f 42 20 6f 70 65 72 61 74 6f  and GLOB operato
e1b0: 72 73 3c 2f 68 33 3e 0a 3c 70 3e 54 68 65 20 4c  rs</h3>.<p>The L
e1c0: 49 4b 45 20 6f 70 65 72 61 74 6f 72 20 64 6f 65  IKE operator doe
e1d0: 73 20 61 20 70 61 74 74 65 72 6e 20 6d 61 74 63  s a pattern matc
e1e0: 68 69 6e 67 20 63 6f 6d 70 61 72 69 73 6f 6e 2e  hing comparison.
e1f0: 20 54 68 65 20 6f 70 65 72 61 6e 64 0a 74 6f 20   The operand.to 
e200: 74 68 65 20 72 69 67 68 74 20 63 6f 6e 74 61 69  the right contai
e210: 6e 73 20 74 68 65 20 70 61 74 74 65 72 6e 2c 20  ns the pattern, 
e220: 74 68 65 20 6c 65 66 74 20 68 61 6e 64 20 6f 70  the left hand op
e230: 65 72 61 6e 64 20 63 6f 6e 74 61 69 6e 73 20 74  erand contains t
e240: 68 65 0a 73 74 72 69 6e 67 20 74 6f 20 6d 61 74  he.string to mat
e250: 63 68 20 61 67 61 69 6e 73 74 20 74 68 65 20 70  ch against the p
e260: 61 74 74 65 72 6e 2e 0a 0a 3c 74 63 6c 3e 68 64  attern...<tcl>hd
e270: 5f 70 75 74 73 20 22 41 20 70 65 72 63 65 6e 74  _puts "A percent
e280: 20 73 79 6d 62 6f 6c 20 28 5c 22 25 5c 22 29 20   symbol (\"%\") 
e290: 69 6e 20 74 68 65 20 70 61 74 74 65 72 6e 20 6d  in the pattern m
e2a0: 61 74 63 68 65 73 20 61 6e 79 0a 73 65 71 75 65  atches any.seque
e2b0: 6e 63 65 20 6f 66 20 7a 65 72 6f 20 6f 72 20 6d  nce of zero or m
e2c0: 6f 72 65 20 63 68 61 72 61 63 74 65 72 73 20 69  ore characters i
e2d0: 6e 20 74 68 65 20 73 74 72 69 6e 67 2e 20 20 41  n the string.  A
e2e0: 6e 20 75 6e 64 65 72 73 63 6f 72 65 0a 28 5c 22  n underscore.(\"
e2f0: 5f 5c 22 29 20 69 6e 20 74 68 65 20 70 61 74 74  _\") in the patt
e300: 65 72 6e 20 6d 61 74 63 68 65 73 20 61 6e 79 20  ern matches any 
e310: 73 69 6e 67 6c 65 20 63 68 61 72 61 63 74 65 72  single character
e320: 20 69 6e 20 74 68 65 0a 73 74 72 69 6e 67 2e 20   in the.string. 
e330: 20 41 6e 79 20 6f 74 68 65 72 20 63 68 61 72 61   Any other chara
e340: 63 74 65 72 20 6d 61 74 63 68 65 73 20 69 74 73  cter matches its
e350: 65 6c 66 20 6f 72 20 69 74 27 73 20 6c 6f 77 65  elf or it's lowe
e360: 72 2f 75 70 70 65 72 20 63 61 73 65 0a 65 71 75  r/upper case.equ
e370: 69 76 61 6c 65 6e 74 20 28 69 2e 65 2e 20 63 61  ivalent (i.e. ca
e380: 73 65 2d 69 6e 73 65 6e 73 69 74 69 76 65 20 6d  se-insensitive m
e390: 61 74 63 68 69 6e 67 29 2e 20 20 28 41 20 62 75  atching).  (A bu
e3a0: 67 3a 20 53 51 4c 69 74 65 20 6f 6e 6c 79 0a 75  g: SQLite only.u
e3b0: 6e 64 65 72 73 74 61 6e 64 73 20 75 70 70 65 72  nderstands upper
e3c0: 2f 6c 6f 77 65 72 20 63 61 73 65 20 66 6f 72 20  /lower case for 
e3d0: 41 53 43 49 49 20 63 68 61 72 61 63 74 65 72 73  ASCII characters
e3e0: 2e 20 20 54 68 65 0a 4c 49 4b 45 20 6f 70 65 72  .  The.LIKE oper
e3f0: 61 74 6f 72 20 69 73 20 63 61 73 65 20 73 65 6e  ator is case sen
e400: 73 69 74 69 76 65 20 66 6f 72 20 75 6e 69 63 6f  sitive for unico
e410: 64 65 20 63 68 61 72 61 63 74 65 72 73 20 74 68  de characters th
e420: 61 74 20 61 72 65 20 62 65 79 6f 6e 64 0a 74 68  at are beyond.th
e430: 65 20 41 53 43 49 49 20 72 61 6e 67 65 2e 20 20  e ASCII range.  
e440: 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 74 68 65  For example, the
e450: 20 65 78 70 72 65 73 73 69 6f 6e 20 3c 62 3e 27   expression <b>'
e460: 61 27 26 6e 62 73 70 3b 4c 49 4b 45 26 6e 62 73  a'&nbsp;LIKE&nbs
e470: 70 3b 27 41 27 3c 2f 62 3e 0a 69 73 20 54 52 55  p;'A'</b>.is TRU
e480: 45 20 62 75 74 20 3c 62 3e 27 26 61 65 6c 69 67  E but <b>'&aelig
e490: 3b 27 26 6e 62 73 70 3b 4c 49 4b 45 26 6e 62 73  ;'&nbsp;LIKE&nbs
e4a0: 70 3b 27 26 41 45 6c 69 67 3b 27 3c 2f 62 3e 20  p;'&AElig;'</b> 
e4b0: 69 73 20 46 41 4c 53 45 2e 29 2e 3c 2f 70 3e 22  is FALSE.).</p>"
e4c0: 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 49 66 20 74 68  </tcl>..<p>If th
e4d0: 65 20 6f 70 74 69 6f 6e 61 6c 20 45 53 43 41 50  e optional ESCAP
e4e0: 45 20 63 6c 61 75 73 65 20 69 73 20 70 72 65 73  E clause is pres
e4f0: 65 6e 74 2c 20 74 68 65 6e 20 74 68 65 20 65 78  ent, then the ex
e500: 70 72 65 73 73 69 6f 6e 0a 66 6f 6c 6c 6f 77 69  pression.followi
e510: 6e 67 20 74 68 65 20 45 53 43 41 50 45 20 6b 65  ng the ESCAPE ke
e520: 79 77 6f 72 64 20 6d 75 73 74 20 65 76 61 6c 75  yword must evalu
e530: 61 74 65 20 74 6f 20 61 20 73 74 72 69 6e 67 20  ate to a string 
e540: 63 6f 6e 73 69 73 74 69 6e 67 20 6f 66 0a 61 20  consisting of.a 
e550: 73 69 6e 67 6c 65 20 63 68 61 72 61 63 74 65 72  single character
e560: 2e 20 54 68 69 73 20 63 68 61 72 61 63 74 65 72  . This character
e570: 20 6d 61 79 20 62 65 20 75 73 65 64 20 69 6e 20   may be used in 
e580: 74 68 65 20 4c 49 4b 45 20 70 61 74 74 65 72 6e  the LIKE pattern
e590: 0a 74 6f 20 69 6e 63 6c 75 64 65 20 6c 69 74 65  .to include lite
e5a0: 72 61 6c 20 70 65 72 63 65 6e 74 20 6f 72 20 75  ral percent or u
e5b0: 6e 64 65 72 73 63 6f 72 65 20 63 68 61 72 61 63  nderscore charac
e5c0: 74 65 72 73 2e 20 54 68 65 20 65 73 63 61 70 65  ters. The escape
e5d0: 0a 63 68 61 72 61 63 74 65 72 20 66 6f 6c 6c 6f  .character follo
e5e0: 77 65 64 20 62 79 20 61 20 70 65 72 63 65 6e 74  wed by a percent
e5f0: 20 73 79 6d 62 6f 6c 2c 20 75 6e 64 65 72 73 63   symbol, undersc
e600: 6f 72 65 20 6f 72 20 69 74 73 65 6c 66 20 6d 61  ore or itself ma
e610: 74 63 68 65 73 20 61 0a 6c 69 74 65 72 61 6c 20  tches a.literal 
e620: 70 65 72 63 65 6e 74 20 73 79 6d 62 6f 6c 2c 20  percent symbol, 
e630: 75 6e 64 65 72 73 63 6f 72 65 20 6f 72 20 65 73  underscore or es
e640: 63 61 70 65 20 63 68 61 72 61 63 74 65 72 20 69  cape character i
e650: 6e 20 74 68 65 20 73 74 72 69 6e 67 2c 0a 72 65  n the string,.re
e660: 73 70 65 63 74 69 76 65 6c 79 2e 0a 0a 3c 70 3e  spectively...<p>
e670: 54 68 65 20 69 6e 66 69 78 20 4c 49 4b 45 20 6f  The infix LIKE o
e680: 70 65 72 61 74 6f 72 20 69 73 20 69 6d 70 6c 65  perator is imple
e690: 6d 65 6e 74 65 64 20 62 79 20 63 61 6c 6c 69 6e  mented by callin
e6a0: 67 20 74 68 65 0a 61 70 70 6c 69 63 61 74 69 6f  g the.applicatio
e6b0: 6e 2d 64 65 66 69 6e 65 64 20 53 51 4c 20 66 75  n-defined SQL fu
e6c0: 6e 63 74 69 6f 6e 73 20 5b 6c 69 6b 65 28 3c 69  nctions [like(<i
e6d0: 3e 59 3c 2f 69 3e 2c 3c 69 3e 58 3c 2f 69 3e 29  >Y</i>,<i>X</i>)
e6e0: 5d 20 6f 72 0a 5b 6c 69 6b 65 28 3c 69 3e 59 3c  ] or.[like(<i>Y<
e6f0: 2f 69 3e 2c 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e  /i>,<i>X</i>,<i>
e700: 5a 3c 2f 69 3e 29 5d 3c 2f 61 3e 2e 3c 2f 70 3e  Z</i>)]</a>.</p>
e710: 0a 0a 3c 70 3e 54 68 65 20 4c 49 4b 45 20 6f 70  ..<p>The LIKE op
e720: 65 72 61 74 6f 72 20 63 61 6e 20 62 65 20 6d 61  erator can be ma
e730: 64 65 20 63 61 73 65 20 73 65 6e 73 69 74 69 76  de case sensitiv
e740: 65 20 75 73 69 6e 67 20 74 68 65 0a 5b 63 61 73  e using the.[cas
e750: 65 5f 73 65 6e 73 69 74 69 76 65 5f 6c 69 6b 65  e_sensitive_like
e760: 20 70 72 61 67 6d 61 5d 2e 3c 2f 70 3e 0a 0a 3c   pragma].</p>..<
e770: 74 63 6c 3e 68 64 5f 66 72 61 67 6d 65 6e 74 20  tcl>hd_fragment 
e780: 67 6c 6f 62 20 47 4c 4f 42 3c 2f 74 63 6c 3e 0a  glob GLOB</tcl>.
e790: 3c 70 3e 54 68 65 20 47 4c 4f 42 20 6f 70 65 72  <p>The GLOB oper
e7a0: 61 74 6f 72 20 69 73 20 73 69 6d 69 6c 61 72 20  ator is similar 
e7b0: 74 6f 20 4c 49 4b 45 20 62 75 74 20 75 73 65 73  to LIKE but uses
e7c0: 20 74 68 65 20 55 6e 69 78 0a 66 69 6c 65 20 67   the Unix.file g
e7d0: 6c 6f 62 62 69 6e 67 20 73 79 6e 74 61 78 20 66  lobbing syntax f
e7e0: 6f 72 20 69 74 73 20 77 69 6c 64 63 61 72 64 73  or its wildcards
e7f0: 2e 20 20 41 6c 73 6f 2c 20 47 4c 4f 42 20 69 73  .  Also, GLOB is
e800: 20 63 61 73 65 0a 73 65 6e 73 69 74 69 76 65 2c   case.sensitive,
e810: 20 75 6e 6c 69 6b 65 20 4c 49 4b 45 2e 20 20 42   unlike LIKE.  B
e820: 6f 74 68 20 47 4c 4f 42 20 61 6e 64 20 4c 49 4b  oth GLOB and LIK
e830: 45 20 6d 61 79 20 62 65 20 70 72 65 63 65 64 65  E may be precede
e840: 64 20 62 79 0a 74 68 65 20 4e 4f 54 20 6b 65 79  d by.the NOT key
e850: 77 6f 72 64 20 74 6f 20 69 6e 76 65 72 74 20 74  word to invert t
e860: 68 65 20 73 65 6e 73 65 20 6f 66 20 74 68 65 20  he sense of the 
e870: 74 65 73 74 2e 20 20 54 68 65 20 69 6e 66 69 78  test.  The infix
e880: 20 47 4c 4f 42 20 0a 6f 70 65 72 61 74 6f 72 20   GLOB .operator 
e890: 69 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 62  is implemented b
e8a0: 79 20 63 61 6c 6c 69 6e 67 20 74 68 65 20 66 75  y calling the fu
e8b0: 6e 63 74 69 6f 6e 0a 5b 67 6c 6f 62 28 3c 69 3e  nction.[glob(<i>
e8c0: 59 3c 2f 69 3e 2c 3c 69 3e 58 3c 2f 69 3e 29 5d  Y</i>,<i>X</i>)]
e8d0: 20 61 6e 64 20 63 61 6e 20 62 65 20 6d 6f 64 69   and can be modi
e8e0: 66 69 65 64 20 62 79 20 6f 76 65 72 72 69 64 69  fied by overridi
e8f0: 6e 67 0a 74 68 61 74 20 66 75 6e 63 74 69 6f 6e  ng.that function
e900: 2e 3c 2f 70 3e 0a 0a 3c 74 63 6c 3e 68 64 5f 66  .</p>..<tcl>hd_f
e910: 72 61 67 6d 65 6e 74 20 72 65 67 65 78 70 20 52  ragment regexp R
e920: 45 47 45 58 50 3c 2f 74 63 6c 3e 0a 3c 70 3e 54  EGEXP</tcl>.<p>T
e930: 68 65 20 52 45 47 45 58 50 20 6f 70 65 72 61 74  he REGEXP operat
e940: 6f 72 20 69 73 20 61 20 73 70 65 63 69 61 6c 20  or is a special 
e950: 73 79 6e 74 61 78 20 66 6f 72 20 74 68 65 20 72  syntax for the r
e960: 65 67 65 78 70 28 29 0a 75 73 65 72 20 66 75 6e  egexp().user fun
e970: 63 74 69 6f 6e 2e 20 20 4e 6f 20 72 65 67 65 78  ction.  No regex
e980: 70 28 29 20 75 73 65 72 20 66 75 6e 63 74 69 6f  p() user functio
e990: 6e 20 69 73 20 64 65 66 69 6e 65 64 20 62 79 20  n is defined by 
e9a0: 64 65 66 61 75 6c 74 0a 61 6e 64 20 73 6f 20 75  default.and so u
e9b0: 73 65 20 6f 66 20 74 68 65 20 52 45 47 45 58 50  se of the REGEXP
e9c0: 20 6f 70 65 72 61 74 6f 72 20 77 69 6c 6c 20 6e   operator will n
e9d0: 6f 72 6d 61 6c 6c 79 20 72 65 73 75 6c 74 20 69  ormally result i
e9e0: 6e 20 61 6e 0a 65 72 72 6f 72 20 6d 65 73 73 61  n an.error messa
e9f0: 67 65 2e 20 20 49 66 20 61 20 75 73 65 72 2d 64  ge.  If a user-d
ea00: 65 66 69 6e 65 64 20 66 75 6e 63 74 69 6f 6e 20  efined function 
ea10: 6e 61 6d 65 64 20 22 72 65 67 65 78 70 22 0a 69  named "regexp".i
ea20: 73 20 61 64 64 65 64 20 61 74 20 72 75 6e 2d 74  s added at run-t
ea30: 69 6d 65 2c 20 74 68 61 74 20 66 75 6e 63 74 69  ime, that functi
ea40: 6f 6e 20 77 69 6c 6c 20 62 65 20 63 61 6c 6c 65  on will be calle
ea50: 64 20 69 6e 20 6f 72 64 65 72 0a 74 6f 20 69 6d  d in order.to im
ea60: 70 6c 65 6d 65 6e 74 20 74 68 65 20 52 45 47 45  plement the REGE
ea70: 58 50 20 6f 70 65 72 61 74 6f 72 2e 3c 2f 70 3e  XP operator.</p>
ea80: 0a 0a 3c 74 63 6c 3e 68 64 5f 66 72 61 67 6d 65  ..<tcl>hd_fragme
ea90: 6e 74 20 6d 61 74 63 68 20 4d 41 54 43 48 3c 2f  nt match MATCH</
eaa0: 74 63 6c 3e 0a 3c 70 3e 54 68 65 20 4d 41 54 43  tcl>.<p>The MATC
eab0: 48 20 6f 70 65 72 61 74 6f 72 20 69 73 20 61 20  H operator is a 
eac0: 73 70 65 63 69 61 6c 20 73 79 6e 74 61 78 20 66  special syntax f
ead0: 6f 72 20 74 68 65 20 6d 61 74 63 68 28 29 0a 75  or the match().u
eae0: 73 65 72 20 66 75 6e 63 74 69 6f 6e 2e 20 20 54  ser function.  T
eaf0: 68 65 20 64 65 66 61 75 6c 74 20 6d 61 74 63 68  he default match
eb00: 28 29 20 66 75 6e 63 74 69 6f 6e 20 69 6d 70 6c  () function impl
eb10: 65 6d 65 6e 74 61 74 69 6f 6e 0a 72 61 69 73 65  ementation.raise
eb20: 73 20 61 6e 20 65 78 63 65 70 74 69 6f 6e 20 61  s an exception a
eb30: 6e 64 20 69 73 20 6e 6f 74 20 72 65 61 6c 6c 79  nd is not really
eb40: 20 75 73 65 66 75 6c 20 66 6f 72 20 61 6e 79 74   useful for anyt
eb50: 68 69 6e 67 2e 0a 42 75 74 20 65 78 74 65 6e 73  hing..But extens
eb60: 69 6f 6e 73 20 63 61 6e 20 6f 76 65 72 72 69 64  ions can overrid
eb70: 65 20 74 68 65 20 6d 61 74 63 68 28 29 20 66 75  e the match() fu
eb80: 6e 63 74 69 6f 6e 20 77 69 74 68 20 6d 6f 72 65  nction with more
eb90: 0a 68 65 6c 70 66 75 6c 20 6c 6f 67 69 63 2e 3c  .helpful logic.<
eba0: 2f 70 3e 0a 0a 3c 74 63 6c 3e 68 64 5f 66 72 61  /p>..<tcl>hd_fra
ebb0: 67 6d 65 6e 74 20 62 65 74 77 65 65 6e 20 42 45  gment between BE
ebc0: 54 57 45 45 4e 3c 2f 74 63 6c 3e 0a 3c 68 33 3e  TWEEN</tcl>.<h3>
ebd0: 54 68 65 20 42 45 54 57 45 45 4e 20 6f 70 65 72  The BETWEEN oper
ebe0: 61 74 6f 72 3c 2f 68 33 3e 0a 3c 70 3e 54 68 65  ator</h3>.<p>The
ebf0: 20 42 45 54 57 45 45 4e 20 6f 70 65 72 61 74 6f   BETWEEN operato
ec00: 72 20 69 73 20 65 71 75 69 76 61 6c 65 6e 74 20  r is equivalent 
ec10: 74 6f 20 61 20 70 61 69 72 20 6f 66 20 63 6f 6d  to a pair of com
ec20: 70 61 72 69 73 6f 6e 73 2e 0a 22 3c 69 3e 61 3c  parisons.."<i>a<
ec30: 2f 69 3e 20 3c 62 3e 42 45 54 57 45 45 4e 3c 2f  /i> <b>BETWEEN</
ec40: 62 3e 20 3c 69 3e 62 3c 2f 69 3e 20 3c 62 3e 41  b> <i>b</i> <b>A
ec50: 4e 44 3c 2f 62 3e 20 3c 69 3e 63 3c 2f 69 3e 22  ND</b> <i>c</i>"
ec60: 20 69 73 20 0a 65 71 75 69 76 61 6c 65 6e 74 20   is .equivalent 
ec70: 74 6f 20 0a 22 3c 69 3e 61 3c 2f 69 3e 3c 62 3e  to ."<i>a</i><b>
ec80: 26 67 74 3b 3d 3c 2f 62 3e 3c 69 3e 62 3c 2f 69  &gt;=</b><i>b</i
ec90: 3e 20 3c 62 3e 41 4e 44 3c 2f 62 3e 20 3c 69 3e  > <b>AND</b> <i>
eca0: 61 3c 2f 69 3e 3c 62 3e 26 6c 74 3b 3d 3c 2f 62  a</i><b>&lt;=</b
ecb0: 3e 3c 69 3e 63 3c 2f 69 3e 22 2e 0a 54 68 65 20  ><i>c</i>"..The 
ecc0: 70 72 65 63 65 64 65 6e 63 65 20 6f 66 20 74 68  precedence of th
ecd0: 65 20 42 45 54 57 45 45 4e 20 6f 70 65 72 61 74  e BETWEEN operat
ece0: 6f 72 20 69 73 20 74 68 65 20 73 61 6d 65 20 61  or is the same a
ecf0: 73 20 74 68 65 20 70 72 65 63 65 64 65 6e 63 65  s the precedence
ed00: 0a 61 73 20 6f 70 65 72 61 74 6f 72 73 20 3c 62  .as operators <b
ed10: 3e 3d 3d 3c 2f 62 3e 20 61 6e 64 20 3c 62 3e 21  >==</b> and <b>!
ed20: 3d 3c 2f 62 3e 20 61 6e 64 20 3c 62 3e 4c 49 4b  =</b> and <b>LIK
ed30: 45 3c 2f 62 3e 20 61 6e 64 20 67 72 6f 75 70 73  E</b> and groups
ed40: 20 6c 65 66 74 20 74 6f 20 72 69 67 68 74 2e 0a   left to right..
ed50: 0a 3c 68 33 3e 54 61 62 6c 65 20 43 6f 6c 75 6d  .<h3>Table Colum
ed60: 6e 20 4e 61 6d 65 73 3c 2f 68 33 3e 0a 3c 70 3e  n Names</h3>.<p>
ed70: 41 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 20 63 61  A column name ca
ed80: 6e 20 62 65 20 61 6e 79 20 6f 66 20 74 68 65 20  n be any of the 
ed90: 6e 61 6d 65 73 20 64 65 66 69 6e 65 64 20 69 6e  names defined in
eda0: 20 74 68 65 20 5b 43 52 45 41 54 45 20 54 41 42   the [CREATE TAB
edb0: 4c 45 5d 0a 73 74 61 74 65 6d 65 6e 74 20 6f 72  LE].statement or
edc0: 20 6f 6e 65 20 6f 66 20 74 68 65 20 66 6f 6c 6c   one of the foll
edd0: 6f 77 69 6e 67 20 73 70 65 63 69 61 6c 20 69 64  owing special id
ede0: 65 6e 74 69 66 69 65 72 73 3a 20 22 3c 62 3e 52  entifiers: "<b>R
edf0: 4f 57 49 44 3c 2f 62 3e 22 2c 0a 22 3c 62 3e 4f  OWID</b>",."<b>O
ee00: 49 44 3c 2f 62 3e 22 2c 20 6f 72 20 22 3c 62 3e  ID</b>", or "<b>
ee10: 5f 52 4f 57 49 44 5f 3c 2f 62 3e 22 2e 0a 54 68  _ROWID_</b>"..Th
ee20: 65 73 65 20 73 70 65 63 69 61 6c 20 69 64 65 6e  ese special iden
ee30: 74 69 66 69 65 72 73 20 61 6c 6c 20 64 65 73 63  tifiers all desc
ee40: 72 69 62 65 20 74 68 65 0a 75 6e 69 71 75 65 20  ribe the.unique 
ee50: 69 6e 74 65 67 65 72 20 6b 65 79 20 28 74 68 65  integer key (the
ee60: 20 5b 72 6f 77 69 64 5d 29 20 61 73 73 6f 63 69   [rowid]) associ
ee70: 61 74 65 64 20 77 69 74 68 20 65 76 65 72 79 20  ated with every 
ee80: 0a 72 6f 77 20 6f 66 20 65 76 65 72 79 20 74 61  .row of every ta
ee90: 62 6c 65 2e 0a 54 68 65 20 73 70 65 63 69 61 6c  ble..The special
eea0: 20 69 64 65 6e 74 69 66 69 65 72 73 20 6f 6e 6c   identifiers onl
eeb0: 79 20 72 65 66 65 72 20 74 6f 20 74 68 65 20 72  y refer to the r
eec0: 6f 77 20 6b 65 79 20 69 66 20 74 68 65 20 5b 43  ow key if the [C
eed0: 52 45 41 54 45 20 54 41 42 4c 45 5d 0a 73 74 61  REATE TABLE].sta
eee0: 74 65 6d 65 6e 74 20 64 6f 65 73 20 6e 6f 74 20  tement does not 
eef0: 64 65 66 69 6e 65 20 61 20 72 65 61 6c 20 63 6f  define a real co
ef00: 6c 75 6d 6e 20 77 69 74 68 20 74 68 65 20 73 61  lumn with the sa
ef10: 6d 65 20 6e 61 6d 65 2e 0a 54 68 65 20 72 6f 77  me name..The row
ef20: 69 64 20 63 61 6e 20 62 65 20 75 73 65 64 20 61  id can be used a
ef30: 6e 79 77 68 65 72 65 20 61 20 72 65 67 75 6c 61  nywhere a regula
ef40: 72 0a 63 6f 6c 75 6d 6e 20 63 61 6e 20 62 65 20  r.column can be 
ef50: 75 73 65 64 2e 3c 2f 70 3e 0a 0a 3c 68 33 3e 53  used.</p>..<h3>S
ef60: 75 62 71 75 65 72 69 65 73 3c 2f 68 33 3e 0a 3c  ubqueries</h3>.<
ef70: 70 3e 5b 53 45 4c 45 43 54 5d 20 73 74 61 74 65  p>[SELECT] state
ef80: 6d 65 6e 74 73 20 63 61 6e 20 61 70 70 65 61 72  ments can appear
ef90: 20 69 6e 20 65 78 70 72 65 73 73 69 6f 6e 73 20   in expressions 
efa0: 61 73 20 65 69 74 68 65 72 20 74 68 65 0a 72 69  as either the.ri
efb0: 67 68 74 2d 68 61 6e 64 20 6f 70 65 72 61 6e 64  ght-hand operand
efc0: 20 6f 66 20 74 68 65 20 49 4e 20 6f 70 65 72 61   of the IN opera
efd0: 74 6f 72 2c 20 61 73 20 61 20 73 63 61 6c 61 72  tor, as a scalar
efe0: 20 71 75 61 6e 74 69 74 79 2c 20 6f 72 0a 61 73   quantity, or.as
eff0: 20 74 68 65 20 6f 70 65 72 61 6e 64 20 6f 66 20   the operand of 
f000: 61 6e 20 45 58 49 53 54 53 20 6f 70 65 72 61 74  an EXISTS operat
f010: 6f 72 2e 0a 41 73 20 61 20 73 63 61 6c 61 72 20  or..As a scalar 
f020: 71 75 61 6e 74 69 74 79 20 6f 72 20 74 68 65 20  quantity or the 
f030: 6f 70 65 72 61 6e 64 20 6f 66 20 61 6e 20 49 4e  operand of an IN
f040: 20 6f 70 65 72 61 74 6f 72 2c 0a 74 68 65 20 53   operator,.the S
f050: 45 4c 45 43 54 20 73 68 6f 75 6c 64 20 68 61 76  ELECT should hav
f060: 65 20 6f 6e 6c 79 20 61 20 73 69 6e 67 6c 65 20  e only a single 
f070: 63 6f 6c 75 6d 6e 20 69 6e 20 69 74 73 0a 72 65  column in its.re
f080: 73 75 6c 74 2e 20 20 43 6f 6d 70 6f 75 6e 64 20  sult.  Compound 
f090: 53 45 4c 45 43 54 73 20 28 63 6f 6e 6e 65 63 74  SELECTs (connect
f0a0: 65 64 20 77 69 74 68 20 6b 65 79 77 6f 72 64 73  ed with keywords
f0b0: 20 6c 69 6b 65 20 55 4e 49 4f 4e 20 6f 72 0a 45   like UNION or.E
f0c0: 58 43 45 50 54 29 20 61 72 65 20 61 6c 6c 6f 77  XCEPT) are allow
f0d0: 65 64 2e 0a 57 69 74 68 20 74 68 65 20 45 58 49  ed..With the EXI
f0e0: 53 54 53 20 6f 70 65 72 61 74 6f 72 2c 20 74 68  STS operator, th
f0f0: 65 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65  e columns in the
f100: 20 72 65 73 75 6c 74 20 73 65 74 20 6f 66 20 74   result set of t
f110: 68 65 20 5b 53 45 4c 45 43 54 5d 20 61 72 65 0a  he [SELECT] are.
f120: 69 67 6e 6f 72 65 64 20 61 6e 64 20 74 68 65 20  ignored and the 
f130: 65 78 70 72 65 73 73 69 6f 6e 20 72 65 74 75 72  expression retur
f140: 6e 73 20 54 52 55 45 20 69 66 20 6f 6e 65 20 6f  ns TRUE if one o
f150: 72 20 6d 6f 72 65 20 72 6f 77 73 20 65 78 69 73  r more rows exis
f160: 74 0a 61 6e 64 20 46 41 4c 53 45 20 69 66 20 74  t.and FALSE if t
f170: 68 65 20 72 65 73 75 6c 74 20 73 65 74 20 69 73  he result set is
f180: 20 65 6d 70 74 79 2e 0a 49 66 20 6e 6f 20 74 65   empty..If no te
f190: 72 6d 73 20 69 6e 20 74 68 65 20 5b 53 45 4c 45  rms in the [SELE
f1a0: 43 54 5d 20 65 78 70 72 65 73 73 69 6f 6e 20 72  CT] expression r
f1b0: 65 66 65 72 20 74 6f 20 76 61 6c 75 65 73 20 69  efer to values i
f1c0: 6e 20 74 68 65 20 63 6f 6e 74 61 69 6e 69 6e 67  n the containing
f1d0: 0a 71 75 65 72 79 2c 20 74 68 65 6e 20 74 68 65  .query, then the
f1e0: 20 65 78 70 72 65 73 73 69 6f 6e 20 69 73 20 65   expression is e
f1f0: 76 61 6c 75 61 74 65 64 20 6f 6e 63 65 20 70 72  valuated once pr
f200: 69 6f 72 20 74 6f 20 61 6e 79 20 6f 74 68 65 72  ior to any other
f210: 0a 70 72 6f 63 65 73 73 69 6e 67 20 61 6e 64 20  .processing and 
f220: 74 68 65 20 72 65 73 75 6c 74 20 69 73 20 72 65  the result is re
f230: 75 73 65 64 20 61 73 20 6e 65 63 65 73 73 61 72  used as necessar
f240: 79 2e 20 20 49 66 20 74 68 65 20 5b 53 45 4c 45  y.  If the [SELE
f250: 43 54 5d 20 65 78 70 72 65 73 73 69 6f 6e 0a 64  CT] expression.d
f260: 6f 65 73 20 63 6f 6e 74 61 69 6e 20 76 61 72 69  oes contain vari
f270: 61 62 6c 65 73 20 66 72 6f 6d 20 74 68 65 20 6f  ables from the o
f280: 75 74 65 72 20 71 75 65 72 79 2c 20 74 68 65 6e  uter query, then
f290: 20 74 68 65 20 5b 53 45 4c 45 43 54 5d 20 69 73   the [SELECT] is
f2a0: 20 72 65 65 76 61 6c 75 61 74 65 64 0a 65 76 65   reevaluated.eve
f2b0: 72 79 20 74 69 6d 65 20 69 74 20 69 73 20 6e 65  ry time it is ne
f2c0: 65 64 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 57 68  eded.</p>..<p>Wh
f2d0: 65 6e 20 61 20 53 45 4c 45 43 54 20 69 73 20 74  en a SELECT is t
f2e0: 68 65 20 72 69 67 68 74 20 6f 70 65 72 61 6e 64  he right operand
f2f0: 20 6f 66 20 74 68 65 20 49 4e 20 6f 70 65 72 61   of the IN opera
f300: 74 6f 72 2c 20 74 68 65 20 49 4e 0a 6f 70 65 72  tor, the IN.oper
f310: 61 74 6f 72 20 72 65 74 75 72 6e 73 20 54 52 55  ator returns TRU
f320: 45 20 69 66 20 74 68 65 20 72 65 73 75 6c 74 20  E if the result 
f330: 6f 66 20 74 68 65 20 6c 65 66 74 20 6f 70 65 72  of the left oper
f340: 61 6e 64 20 69 73 20 61 6e 79 20 6f 66 0a 74 68  and is any of.th
f350: 65 20 76 61 6c 75 65 73 20 67 65 6e 65 72 61 74  e values generat
f360: 65 64 20 62 79 20 74 68 65 20 73 65 6c 65 63 74  ed by the select
f370: 2e 20 20 54 68 65 20 49 4e 20 6f 70 65 72 61 74  .  The IN operat
f380: 6f 72 20 6d 61 79 20 62 65 20 70 72 65 63 65 64  or may be preced
f390: 65 64 0a 62 79 20 74 68 65 20 4e 4f 54 20 6b 65  ed.by the NOT ke
f3a0: 79 77 6f 72 64 20 74 6f 20 69 6e 76 65 72 74 20  yword to invert 
f3b0: 74 68 65 20 73 65 6e 73 65 20 6f 66 20 74 68 65  the sense of the
f3c0: 20 74 65 73 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 57   test.</p>..<p>W
f3d0: 68 65 6e 20 61 20 53 45 4c 45 43 54 20 61 70 70  hen a SELECT app
f3e0: 65 61 72 73 20 77 69 74 68 69 6e 20 61 6e 20 65  ears within an e
f3f0: 78 70 72 65 73 73 69 6f 6e 20 62 75 74 20 69 73  xpression but is
f400: 20 6e 6f 74 20 74 68 65 20 72 69 67 68 74 0a 6f   not the right.o
f410: 70 65 72 61 6e 64 20 6f 66 20 61 6e 20 49 4e 20  perand of an IN 
f420: 6f 70 65 72 61 74 6f 72 2c 20 74 68 65 6e 20 74  operator, then t
f430: 68 65 20 66 69 72 73 74 20 72 6f 77 20 6f 66 20  he first row of 
f440: 74 68 65 20 72 65 73 75 6c 74 20 6f 66 20 74 68  the result of th
f450: 65 0a 53 45 4c 45 43 54 20 62 65 63 6f 6d 65 73  e.SELECT becomes
f460: 20 74 68 65 20 76 61 6c 75 65 20 75 73 65 64 20   the value used 
f470: 69 6e 20 74 68 65 20 65 78 70 72 65 73 73 69 6f  in the expressio
f480: 6e 2e 20 20 49 66 20 74 68 65 20 53 45 4c 45 43  n.  If the SELEC
f490: 54 20 79 69 65 6c 64 73 0a 6d 6f 72 65 20 74 68  T yields.more th
f4a0: 61 6e 20 6f 6e 65 20 72 65 73 75 6c 74 20 72 6f  an one result ro
f4b0: 77 2c 20 61 6c 6c 20 72 6f 77 73 20 61 66 74 65  w, all rows afte
f4c0: 72 20 74 68 65 20 66 69 72 73 74 20 61 72 65 20  r the first are 
f4d0: 69 67 6e 6f 72 65 64 2e 20 20 49 66 0a 74 68 65  ignored.  If.the
f4e0: 20 53 45 4c 45 43 54 20 79 69 65 6c 64 73 20 6e   SELECT yields n
f4f0: 6f 20 72 6f 77 73 2c 20 74 68 65 6e 20 74 68 65  o rows, then the
f500: 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 53 45   value of the SE
f510: 4c 45 43 54 20 69 73 20 4e 55 4c 4c 2e 3c 2f 70  LECT is NULL.</p
f520: 3e 0a 0a 3c 68 33 3e 43 41 53 54 20 65 78 70 72  >..<h3>CAST expr
f530: 65 73 73 69 6f 6e 73 3c 2f 68 33 3e 0a 3c 70 3e  essions</h3>.<p>
f540: 41 20 43 41 53 54 20 65 78 70 72 65 73 73 69 6f  A CAST expressio
f550: 6e 20 63 68 61 6e 67 65 73 20 74 68 65 20 5b 64  n changes the [d
f560: 61 74 61 74 79 70 65 5d 20 6f 66 20 74 68 65 20  atatype] of the 
f570: 3c 65 78 70 72 3e 20 69 6e 74 6f 20 74 68 65 0a  <expr> into the.
f580: 74 79 70 65 20 73 70 65 63 69 66 69 65 64 20 62  type specified b
f590: 79 20 26 6c 74 3b 74 79 70 65 26 67 74 3b 2e 20  y &lt;type&gt;. 
f5a0: 0a 26 6c 74 3b 74 79 70 65 26 67 74 3b 20 63 61  .&lt;type&gt; ca
f5b0: 6e 20 62 65 20 61 6e 79 20 6e 6f 6e 2d 65 6d 70  n be any non-emp
f5c0: 74 79 20 74 79 70 65 20 6e 61 6d 65 20 74 68 61  ty type name tha
f5d0: 74 20 69 73 20 76 61 6c 69 64 0a 66 6f 72 20 74  t is valid.for t
f5e0: 68 65 20 74 79 70 65 20 69 6e 20 61 20 63 6f 6c  he type in a col
f5f0: 75 6d 6e 20 64 65 66 69 6e 69 74 69 6f 6e 20 6f  umn definition o
f600: 66 20 61 20 5b 43 52 45 41 54 45 20 54 41 42 4c  f a [CREATE TABL
f610: 45 5d 20 73 74 61 74 65 6d 65 6e 74 2e 3c 2f 70  E] statement.</p
f620: 3e 0a 0a 3c 68 33 3e 46 75 6e 63 74 69 6f 6e 73  >..<h3>Functions
f630: 3c 2f 68 33 3e 0a 3c 70 3e 42 6f 74 68 20 5b 63  </h3>.<p>Both [c
f640: 6f 72 65 66 75 6e 63 7c 73 69 6d 70 6c 65 5d 20  orefunc|simple] 
f650: 61 6e 64 20 5b 61 67 67 66 75 6e 63 7c 61 67 67  and [aggfunc|agg
f660: 72 65 67 61 74 65 5d 20 66 75 6e 63 74 69 6f 6e  regate] function
f670: 73 20 61 72 65 20 73 75 70 70 6f 72 74 65 64 2e  s are supported.
f680: 0a 28 46 6f 72 20 70 72 65 73 65 6e 74 61 74 69  .(For presentati
f690: 6f 6e 20 70 75 72 70 6f 73 65 73 2c 20 73 69 6d  on purposes, sim
f6a0: 70 6c 65 20 66 75 6e 63 74 69 6f 6e 73 20 61 72  ple functions ar
f6b0: 65 20 66 75 72 74 68 65 72 20 73 75 62 64 69 76  e further subdiv
f6c0: 69 64 65 64 20 69 6e 74 6f 0a 5b 63 6f 72 65 66  ided into.[coref
f6d0: 75 6e 63 20 7c 20 63 6f 72 65 20 66 75 6e 63 74  unc | core funct
f6e0: 69 6f 6e 73 5d 20 61 6e 64 20 5b 64 61 74 65 66  ions] and [datef
f6f0: 75 6e 63 20 7c 20 64 61 74 65 2d 74 69 6d 65 20  unc | date-time 
f700: 66 75 6e 63 74 69 6f 6e 73 5d 2e 29 0a 41 20 73  functions].).A s
f710: 69 6d 70 6c 65 20 66 75 6e 63 74 69 6f 6e 20 63  imple function c
f720: 61 6e 20 62 65 20 75 73 65 64 20 69 6e 20 61 6e  an be used in an
f730: 79 20 65 78 70 72 65 73 73 69 6f 6e 2e 20 20 53  y expression.  S
f740: 69 6d 70 6c 65 20 66 75 6e 63 74 69 6f 6e 73 20  imple functions 
f750: 72 65 74 75 72 6e 0a 61 20 72 65 73 75 6c 74 20  return.a result 
f760: 69 6d 6d 65 64 69 61 74 65 6c 79 20 62 61 73 65  immediately base
f770: 64 20 6f 6e 20 74 68 65 69 72 20 69 6e 70 75 74  d on their input
f780: 73 2e 20 20 41 67 67 72 65 67 61 74 65 20 66 75  s.  Aggregate fu
f790: 6e 63 74 69 6f 6e 73 0a 6d 61 79 20 6f 6e 6c 79  nctions.may only
f7a0: 20 62 65 20 75 73 65 64 20 69 6e 20 61 20 53 45   be used in a SE
f7b0: 4c 45 43 54 20 73 74 61 74 65 6d 65 6e 74 2e 20  LECT statement. 
f7c0: 20 41 67 67 72 65 67 61 74 65 20 66 75 6e 63 74   Aggregate funct
f7d0: 69 6f 6e 73 20 63 6f 6d 70 75 74 65 0a 74 68 65  ions compute.the
f7e0: 69 72 20 72 65 73 75 6c 74 20 61 63 72 6f 73 73  ir result across
f7f0: 20 61 6c 6c 20 72 6f 77 73 20 6f 66 20 74 68 65   all rows of the
f800: 20 72 65 73 75 6c 74 20 73 65 74 2e 3c 2f 70 3e   result set.</p>
f810: 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23  ..<tcl>.########
f820: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
f830: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
f840: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
f850: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
f860: 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b  ######.Section {
f870: 43 6f 72 65 20 46 75 6e 63 74 69 6f 6e 73 7d 20  Core Functions} 
f880: 63 6f 72 65 66 75 6e 63 20 7b 2a 63 6f 72 65 66  corefunc {*coref
f890: 75 6e 63 7d 0a 70 72 6f 63 20 66 75 6e 63 64 65  unc}.proc funcde
f8a0: 66 20 7b 73 79 6e 74 61 78 20 6b 65 79 77 6f 72  f {syntax keywor
f8b0: 64 73 20 64 65 73 63 7d 20 7b 0a 20 20 68 64 5f  ds desc} {.  hd_
f8c0: 70 75 74 73 20 7b 3c 74 72 3e 7d 0a 20 20 72 65  puts {<tr>}.  re
f8d0: 67 73 75 62 20 2d 61 6c 6c 20 7b 5c 73 2b 7d 20  gsub -all {\s+} 
f8e0: 5b 73 74 72 69 6e 67 20 74 72 69 6d 20 24 73 79  [string trim $sy
f8f0: 6e 74 61 78 5d 20 7b 3c 62 72 3e 3c 2f 62 72 3e  ntax] {<br></br>
f900: 7d 20 73 79 6e 74 61 78 0a 20 20 72 65 67 73 75  } syntax.  regsu
f910: 62 20 2d 61 6c 6c 20 7b 5c 28 28 5b 5e 2a 29 5d  b -all {\(([^*)]
f920: 2b 29 5c 29 7d 20 24 73 79 6e 74 61 78 20 7b 28  +)\)} $syntax {(
f930: 3c 69 3e 5c 31 3c 2f 69 3e 29 7d 20 73 79 6e 74  <i>\1</i>)} synt
f940: 61 78 0a 20 20 72 65 67 73 75 62 20 2d 61 6c 6c  ax.  regsub -all
f950: 20 7b 2c 7d 20 24 73 79 6e 74 61 78 20 7b 3c 2f   {,} $syntax {</
f960: 69 3e 2c 3c 69 3e 7d 20 73 79 6e 74 61 78 0a 20  i>,<i>} syntax. 
f970: 20 72 65 67 73 75 62 20 2d 61 6c 6c 20 7b 3c 69   regsub -all {<i
f980: 3e 5c 2e 5c 2e 5c 2e 3c 2f 69 3e 7d 20 24 73 79  >\.\.\.</i>} $sy
f990: 6e 74 61 78 20 7b 2e 2e 2e 7d 20 73 79 6e 74 61  ntax {...} synta
f9a0: 78 0a 20 20 68 64 5f 70 75 74 73 20 22 3c 74 64  x.  hd_puts "<td
f9b0: 20 76 61 6c 69 67 6e 3d 5c 22 74 6f 70 5c 22 20   valign=\"top\" 
f9c0: 61 6c 69 67 6e 3d 5c 22 72 69 67 68 74 5c 22 20  align=\"right\" 
f9d0: 77 69 64 74 68 3d 5c 22 31 32 30 5c 22 3e 24 73  width=\"120\">$s
f9e0: 79 6e 74 61 78 3c 2f 74 64 3e 22 0a 20 20 68 64  yntax</td>".  hd
f9f0: 5f 70 75 74 73 20 7b 3c 74 64 20 76 61 6c 69 67  _puts {<td valig
fa00: 6e 3d 22 74 6f 70 22 3e 7d 0a 20 20 69 66 20 7b  n="top">}.  if {
fa10: 5b 6c 6c 65 6e 67 74 68 20 24 6b 65 79 77 6f 72  [llength $keywor
fa20: 64 73 5d 3d 3d 30 7d 20 7b 0a 20 20 20 20 72 65  ds]==0} {.    re
fa30: 67 65 78 70 20 7b 5b 61 2d 7a 5f 5d 2b 7d 20 24  gexp {[a-z_]+} $
fa40: 73 79 6e 74 61 78 20 6e 61 6d 65 0a 20 20 20 20  syntax name.    
fa50: 68 64 5f 66 72 61 67 6d 65 6e 74 20 24 6e 61 6d  hd_fragment $nam
fa60: 65 20 2a 24 6e 61 6d 65 20 22 24 7b 6e 61 6d 65  e *$name "${name
fa70: 7d 28 29 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e  }() SQL function
fa80: 22 0a 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20  ".  } else {.   
fa90: 20 73 65 74 20 66 72 61 67 6e 61 6d 65 20 5b 6c   set fragname [l
faa0: 69 6e 64 65 78 20 24 6b 65 79 77 6f 72 64 73 20  index $keywords 
fab0: 30 5d 0a 20 20 20 20 72 65 67 73 75 62 20 2d 61  0].    regsub -a
fac0: 6c 6c 20 7b 5b 5e 61 2d 7a 5d 7d 20 24 66 72 61  ll {[^a-z]} $fra
fad0: 67 6e 61 6d 65 20 7b 7d 20 66 72 61 67 6e 61 6d  gname {} fragnam
fae0: 65 0a 20 20 20 20 68 64 5f 66 72 61 67 6d 65 6e  e.    hd_fragmen
faf0: 74 20 24 66 72 61 67 6e 61 6d 65 0a 20 20 20 20  t $fragname.    
fb00: 65 76 61 6c 20 68 64 5f 6b 65 79 77 6f 72 64 73  eval hd_keywords
fb10: 20 5b 73 74 72 69 6e 67 20 6d 61 70 20 7b 5c 6e   [string map {\n
fb20: 20 7b 20 7d 7d 20 24 6b 65 79 77 6f 72 64 73 5d   { }} $keywords]
fb30: 0a 20 20 7d 0a 20 20 68 64 5f 72 65 73 6f 6c 76  .  }.  hd_resolv
fb40: 65 20 24 64 65 73 63 0a 20 20 68 64 5f 70 75 74  e $desc.  hd_put
fb50: 73 20 7b 3c 2f 74 64 3e 3c 2f 74 72 3e 7d 0a 7d  s {</td></tr>}.}
fb60: 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20  .</tcl>..<p>The 
fb70: 63 6f 72 65 20 66 75 6e 63 74 69 6f 6e 73 20 73  core functions s
fb80: 68 6f 77 6e 20 62 65 6c 6f 77 20 61 72 65 20 61  hown below are a
fb90: 76 61 69 6c 61 62 6c 65 20 62 79 20 64 65 66 61  vailable by defa
fba0: 75 6c 74 2e 20 0a 5b 64 61 74 65 66 75 6e 63 20  ult. .[datefunc 
fbb0: 7c 20 44 61 74 65 20 26 61 6d 70 3b 20 54 69 6d  | Date &amp; Tim
fbc0: 65 20 66 75 6e 63 74 69 6f 6e 73 5d 20 61 6e 64  e functions] and
fbd0: 0a 5b 61 67 67 66 75 6e 63 20 7c 20 61 67 67 72  .[aggfunc | aggr
fbe0: 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 73 5d  egate functions]
fbf0: 20 61 72 65 20 64 6f 63 75 6d 65 6e 74 65 64 20   are documented 
fc00: 73 65 70 61 72 61 74 65 6c 79 2e 20 20 41 6e 0a  separately.  An.
fc10: 61 70 70 6c 69 63 61 74 69 6f 6e 20 6d 61 79 20  application may 
fc20: 64 65 66 69 6e 65 20 61 64 64 69 74 69 6f 6e 61  define additiona
fc30: 6c 0a 66 75 6e 63 74 69 6f 6e 73 20 77 72 69 74  l.functions writ
fc40: 74 65 6e 20 69 6e 20 43 20 61 6e 64 20 61 64 64  ten in C and add
fc50: 65 64 20 74 6f 20 74 68 65 20 64 61 74 61 62 61  ed to the databa
fc60: 73 65 20 65 6e 67 69 6e 65 20 75 73 69 6e 67 0a  se engine using.
fc70: 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 63 72 65  the [sqlite3_cre
fc80: 61 74 65 5f 66 75 6e 63 74 69 6f 6e 28 29 5d 20  ate_function()] 
fc90: 41 50 49 2e 3c 2f 70 3e 0a 0a 3c 74 61 62 6c 65  API.</p>..<table
fca0: 20 62 6f 72 64 65 72 3d 30 20 63 65 6c 6c 70 61   border=0 cellpa
fcb0: 64 64 69 6e 67 3d 31 30 3e 0a 3c 74 63 6c 3e 0a  dding=10>.<tcl>.
fcc0: 66 75 6e 63 64 65 66 20 7b 61 62 73 28 58 29 7d  funcdef {abs(X)}
fcd0: 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20 61 62 73   {} {.  ^The abs
fce0: 28 58 29 20 66 75 6e 63 74 69 6f 6e 20 72 65 74  (X) function ret
fcf0: 75 72 6e 73 20 74 68 65 20 61 62 73 6f 6c 75 74  urns the absolut
fd00: 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 6e  e value of the n
fd10: 75 6d 65 72 69 63 0a 20 20 61 72 67 75 6d 65 6e  umeric.  argumen
fd20: 74 20 58 2e 20 20 5e 41 62 73 28 58 29 20 72 65  t X.  ^Abs(X) re
fd30: 74 75 72 6e 73 20 4e 55 4c 4c 20 69 66 20 58 20  turns NULL if X 
fd40: 69 73 20 4e 55 4c 4c 2e 20 0a 20 20 5e 28 41 62  is NULL. .  ^(Ab
fd50: 73 28 58 29 20 72 65 74 75 72 6e 20 30 2e 30 20  s(X) return 0.0 
fd60: 69 66 20 58 20 69 73 20 61 20 73 74 72 69 6e 67  if X is a string
fd70: 20 6f 72 20 62 6c 6f 62 0a 20 20 74 68 61 74 20   or blob.  that 
fd80: 63 61 6e 6e 6f 74 20 62 65 20 63 6f 6e 76 65 72  cannot be conver
fd90: 74 65 64 20 74 6f 20 61 20 6e 75 6d 65 72 69 63  ted to a numeric
fda0: 20 76 61 6c 75 65 2e 29 5e 20 20 5e 49 66 20 58   value.)^  ^If X
fdb0: 20 69 73 20 74 68 65 20 0a 20 20 69 6e 74 65 67   is the .  integ
fdc0: 65 72 20 2d 39 32 32 33 33 37 32 30 33 36 38 35  er -922337203685
fdd0: 34 37 37 35 38 30 37 20 74 68 65 6e 20 61 62 73  4775807 then abs
fde0: 28 58 29 20 74 68 72 6f 77 73 20 61 6e 20 69 6e  (X) throws an in
fdf0: 74 65 67 65 72 20 6f 76 65 72 66 6c 6f 77 0a 20  teger overflow. 
fe00: 20 65 72 72 6f 72 20 73 69 6e 63 65 20 74 68 65   error since the
fe10: 72 65 20 69 73 20 6e 6f 20 65 71 75 69 76 61 6c  re is no equival
fe20: 65 6e 74 20 70 6f 73 69 74 69 76 65 20 36 34 2d  ent positive 64-
fe30: 62 69 74 20 74 77 6f 20 63 6f 6d 70 6c 65 6d 65  bit two compleme
fe40: 6e 74 20 76 61 6c 75 65 2e 0a 7d 0a 0a 66 75 6e  nt value..}..fun
fe50: 63 64 65 66 20 7b 63 68 61 6e 67 65 73 28 29 7d  cdef {changes()}
fe60: 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20 63 68 61   {} {.  ^The cha
fe70: 6e 67 65 73 28 29 20 66 75 6e 63 74 69 6f 6e 20  nges() function 
fe80: 72 65 74 75 72 6e 73 20 74 68 65 20 6e 75 6d 62  returns the numb
fe90: 65 72 20 6f 66 20 64 61 74 61 62 61 73 65 20 72  er of database r
fea0: 6f 77 73 20 74 68 61 74 20 77 65 72 65 20 63 68  ows that were ch
feb0: 61 6e 67 65 64 0a 20 20 6f 72 20 69 6e 73 65 72  anged.  or inser
fec0: 74 65 64 20 6f 72 20 64 65 6c 65 74 65 64 20 62  ted or deleted b
fed0: 79 20 74 68 65 20 6d 6f 73 74 20 72 65 63 65 6e  y the most recen
fee0: 74 6c 79 20 63 6f 6d 70 6c 65 74 65 64 20 53 51  tly completed SQ
fef0: 4c 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 0a 20  L statement.  . 
ff00: 20 5e 54 68 65 20 63 68 61 6e 67 65 73 28 29 20   ^The changes() 
ff10: 53 51 4c 20 66 75 6e 63 74 69 6f 6e 20 69 73 20  SQL function is 
ff20: 61 20 77 72 61 70 70 65 72 20 61 72 6f 75 6e 64  a wrapper around
ff30: 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 63 68   the [sqlite3_ch
ff40: 61 6e 67 65 73 28 29 5d 0a 20 20 43 2f 43 2b 2b  anges()].  C/C++
ff50: 20 66 75 6e 63 74 69 6f 6e 20 61 6e 64 20 68 65   function and he
ff60: 6e 63 65 20 66 6f 6c 6c 6f 77 73 20 74 68 65 20  nce follows the 
ff70: 73 61 6d 65 20 72 75 6c 65 73 20 66 6f 72 20 63  same rules for c
ff80: 6f 75 6e 74 69 6e 67 20 63 68 61 6e 67 65 73 2e  ounting changes.
ff90: 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 63 6f 61  .}..funcdef {coa
ffa0: 6c 65 73 63 65 28 58 2c 59 2c 2e 2e 2e 29 7d 20  lesce(X,Y,...)} 
ffb0: 7b 7d 20 7b 0a 20 20 5e 54 68 65 20 63 6f 61 6c  {} {.  ^The coal
ffc0: 65 73 63 65 28 29 20 66 75 6e 63 74 69 6f 6e 20  esce() function 
ffd0: 72 65 74 75 72 6e 73 20 61 20 63 6f 70 79 20 6f  returns a copy o
ffe0: 66 20 69 74 73 20 66 69 72 73 74 20 6e 6f 6e 2d  f its first non-
fff0: 4e 55 4c 4c 20 61 72 67 75 6d 65 6e 74 2c 20 6f  NULL argument, o
10000 72 0a 20 20 4e 55 4c 4c 20 69 66 20 61 6c 6c 20  r.  NULL if all 
10010 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20 4e 55  arguments are NU
10020 4c 4c 2e 20 20 5e 43 6f 61 6c 65 73 63 65 28 29  LL.  ^Coalesce()
10030 20 6d 75 73 74 20 62 65 20 61 74 20 6c 65 61 73   must be at leas
10040 74 20 0a 20 20 32 20 61 72 67 75 6d 65 6e 74 73  t .  2 arguments
10050 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 67 6c  ..}..funcdef {gl
10060 6f 62 28 58 2c 59 29 7d 20 7b 7d 20 7b 0a 20 20  ob(X,Y)} {} {.  
10070 5e 54 68 65 20 67 6c 6f 62 28 58 2c 59 29 20 66  ^The glob(X,Y) f
10080 75 6e 63 74 69 6f 6e 20 69 73 20 65 71 75 69 76  unction is equiv
10090 61 6c 65 6e 74 20 74 6f 20 74 68 65 0a 20 20 65  alent to the.  e
100a0 78 70 72 65 73 73 69 6f 6e 20 22 3c 62 3e 59 20  xpression "<b>Y 
100b0 47 4c 4f 42 20 58 3c 2f 62 3e 22 2e 0a 20 20 4e  GLOB X</b>"..  N
100c0 6f 74 65 20 74 68 61 74 20 74 68 65 20 58 20 61  ote that the X a
100d0 6e 64 20 59 20 61 72 67 75 6d 65 6e 74 73 20 61  nd Y arguments a
100e0 72 65 20 72 65 76 65 72 73 65 64 20 69 6e 20 74  re reversed in t
100f0 68 65 20 67 6c 6f 62 28 29 20 66 75 6e 63 74 69  he glob() functi
10100 6f 6e 0a 20 20 72 65 6c 61 74 69 76 65 20 74 6f  on.  relative to
10110 20 74 68 65 20 69 6e 66 69 78 20 5b 47 4c 4f 42   the infix [GLOB
10120 5d 20 6f 70 65 72 61 74 6f 72 2e 0a 20 20 5e 49  ] operator..  ^I
10130 66 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 63  f the [sqlite3_c
10140 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 28 29  reate_function()
10150 5d 20 69 6e 74 65 72 66 61 63 65 20 69 73 20 75  ] interface is u
10160 73 65 64 20 74 6f 0a 20 20 6f 76 65 72 72 69 64  sed to.  overrid
10170 65 20 74 68 65 20 67 6c 6f 62 28 58 2c 59 29 20  e the glob(X,Y) 
10180 66 75 6e 63 74 69 6f 6e 20 77 69 74 68 20 61 6e  function with an
10190 20 61 6c 74 65 72 6e 61 74 69 76 65 20 69 6d 70   alternative imp
101a0 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 74 68 65 6e  lementation then
101b0 0a 20 20 74 68 65 20 5b 47 4c 4f 42 5d 20 6f 70  .  the [GLOB] op
101c0 65 72 61 74 6f 72 20 77 69 6c 6c 20 69 6e 76 6f  erator will invo
101d0 6b 65 20 74 68 65 20 61 6c 74 65 72 6e 61 74 69  ke the alternati
101e0 76 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  ve implementatio
101f0 6e 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 69  n..}..funcdef {i
10200 66 6e 75 6c 6c 28 58 2c 59 29 7d 20 7b 7d 20 7b  fnull(X,Y)} {} {
10210 0a 20 20 5e 54 68 65 20 69 66 6e 75 6c 6c 28 29  .  ^The ifnull()
10220 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e   function return
10230 73 20 61 20 63 6f 70 79 20 6f 66 20 69 74 73 20  s a copy of its 
10240 66 69 72 73 74 20 6e 6f 6e 2d 4e 55 4c 4c 20 61  first non-NULL a
10250 72 67 75 6d 65 6e 74 2c 20 6f 72 0a 20 20 4e 55  rgument, or.  NU
10260 4c 4c 20 69 66 20 62 6f 74 68 20 61 72 67 75 6d  LL if both argum
10270 65 6e 74 73 20 61 72 65 20 4e 55 4c 4c 2e 20 20  ents are NULL.  
10280 5e 49 66 6e 75 6c 6c 28 29 20 6d 75 73 74 20 68  ^Ifnull() must h
10290 61 76 65 20 65 78 61 63 74 6c 79 20 32 20 61 72  ave exactly 2 ar
102a0 67 75 6d 65 6e 74 73 2e 0a 20 20 5e 54 68 65 20  guments..  ^The 
102b0 69 66 6e 75 6c 6c 28 29 20 66 75 6e 63 74 69 6f  ifnull() functio
102c0 6e 20 69 73 20 65 71 75 69 76 61 6c 65 6e 74 20  n is equivalent 
102d0 74 6f 20 5b 63 6f 61 6c 65 73 63 65 28 29 5d 20  to [coalesce()] 
102e0 77 69 74 68 20 74 77 6f 20 61 72 67 75 6d 65 6e  with two argumen
102f0 74 73 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b  ts..}..funcdef {
10300 68 65 78 28 58 29 7d 20 7b 7d 20 7b 0a 20 20 5e  hex(X)} {} {.  ^
10310 54 68 65 20 68 65 78 28 29 20 66 75 6e 63 74 69  The hex() functi
10320 6f 6e 20 69 6e 74 65 72 70 72 65 74 73 20 69 74  on interprets it
10330 73 20 61 72 67 75 6d 65 6e 74 20 61 73 20 61 20  s argument as a 
10340 42 4c 4f 42 20 61 6e 64 20 72 65 74 75 72 6e 73  BLOB and returns
10350 0a 20 20 61 20 73 74 72 69 6e 67 20 77 68 69 63  .  a string whic
10360 68 20 69 73 20 74 68 65 20 75 70 70 65 72 2d 63  h is the upper-c
10370 61 73 65 20 68 65 78 61 64 65 63 69 6d 61 6c 20  ase hexadecimal 
10380 72 65 6e 64 65 72 69 6e 67 20 6f 66 20 74 68 65  rendering of the
10390 20 63 6f 6e 74 65 6e 74 20 6f 66 0a 20 20 74 68   content of.  th
103a0 61 74 20 62 6c 6f 62 2e 0a 7d 0a 0a 66 75 6e 63  at blob..}..func
103b0 64 65 66 20 7b 6c 61 73 74 5f 69 6e 73 65 72 74  def {last_insert
103c0 5f 72 6f 77 69 64 28 29 7d 20 7b 7d 20 7b 0a 20  _rowid()} {} {. 
103d0 20 5e 54 68 65 20 6c 61 73 74 5f 69 6e 73 65 72   ^The last_inser
103e0 74 5f 72 6f 77 69 64 28 29 20 66 75 6e 63 74 69  t_rowid() functi
103f0 6f 6e 20 72 65 74 75 72 6e 73 20 74 68 65 20 5b  on returns the [
10400 52 4f 57 49 44 5d 0a 20 20 6f 66 20 74 68 65 20  ROWID].  of the 
10410 6c 61 73 74 20 72 6f 77 20 69 6e 73 65 72 74 20  last row insert 
10420 66 72 6f 6d 20 74 68 65 20 64 61 74 61 62 61 73  from the databas
10430 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 77 68 69  e connection whi
10440 63 68 20 69 6e 76 6f 6b 65 64 20 74 68 65 0a 20  ch invoked the. 
10450 20 66 75 6e 63 74 69 6f 6e 2e 0a 20 20 5e 54 68   function..  ^Th
10460 65 20 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f  e last_insert_ro
10470 77 69 64 28 29 20 53 51 4c 20 66 75 6e 63 74 69  wid() SQL functi
10480 6f 6e 20 69 73 20 61 20 77 72 61 70 70 65 72 20  on is a wrapper 
10490 61 72 6f 75 6e 64 20 74 68 65 0a 20 20 5b 73 71  around the.  [sq
104a0 6c 69 74 65 33 5f 6c 61 73 74 5f 69 6e 73 65 72  lite3_last_inser
104b0 74 5f 72 6f 77 69 64 28 29 5d 20 43 2f 43 2b 2b  t_rowid()] C/C++
104c0 20 69 6e 74 65 72 66 61 63 65 20 66 75 6e 63 74   interface funct
104d0 69 6f 6e 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20  ion..}..funcdef 
104e0 7b 6c 65 6e 67 74 68 28 58 29 7d 20 7b 7d 20 7b  {length(X)} {} {
104f0 0a 20 20 5e 54 68 65 20 6c 65 6e 67 74 68 28 58  .  ^The length(X
10500 29 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72  ) function retur
10510 6e 73 20 74 68 65 20 73 74 72 69 6e 67 20 6c 65  ns the string le
10520 6e 67 74 68 20 6f 66 20 58 20 69 6e 20 0a 20 20  ngth of X in .  
10530 63 68 61 72 61 63 74 65 72 73 20 69 66 20 58 20  characters if X 
10540 69 73 20 61 20 73 74 72 69 6e 67 2c 20 6f 72 20  is a string, or 
10550 69 6e 20 62 79 74 65 73 20 69 66 20 58 20 69 73  in bytes if X is
10560 20 61 20 62 6c 6f 62 2e 0a 20 20 5e 49 66 20 58   a blob..  ^If X
10570 20 69 73 20 4e 55 4c 4c 20 74 68 65 6e 20 6c 65   is NULL then le
10580 6e 67 74 68 28 58 29 20 69 73 20 4e 55 4c 4c 2e  ngth(X) is NULL.
10590 0a 20 20 5e 49 66 20 58 20 69 73 20 6e 75 6d 65  .  ^If X is nume
105a0 72 69 63 20 74 68 65 6e 20 6c 65 6e 67 74 68 28  ric then length(
105b0 58 29 20 72 65 74 75 72 6e 73 20 74 68 65 20 6c  X) returns the l
105c0 65 6e 67 74 68 20 6f 66 20 61 20 73 74 72 69 6e  ength of a strin
105d0 67 0a 20 20 72 65 70 72 65 73 65 6e 74 61 74 69  g.  representati
105e0 6f 6e 20 6f 66 20 58 2e 0a 7d 0a 0a 66 75 6e 63  on of X..}..func
105f0 64 65 66 20 7b 6c 69 6b 65 28 58 2c 59 29 20 6c  def {like(X,Y) l
10600 69 6b 65 28 58 2c 59 2c 5a 29 7d 20 7b 7d 20 7b  ike(X,Y,Z)} {} {
10610 0a 20 20 5e 54 68 65 20 6c 69 6b 65 28 29 20 66  .  ^The like() f
10620 75 6e 63 74 69 6f 6e 20 69 73 20 75 73 65 64 20  unction is used 
10630 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 74 68 65  to implement the
10640 0a 20 20 22 3c 62 3e 59 20 4c 49 4b 45 20 58 20  .  "<b>Y LIKE X 
10650 26 23 39 31 3b 45 53 43 41 50 45 20 5a 26 23 39  &#91;ESCAPE Z&#9
10660 33 3b 3c 2f 62 3e 22 20 65 78 70 72 65 73 73 69  3;</b>" expressi
10670 6f 6e 2e 20 0a 20 20 5e 49 66 20 74 68 65 20 6f  on. .  ^If the o
10680 70 74 69 6f 6e 61 6c 20 45 53 43 41 50 45 20 63  ptional ESCAPE c
10690 6c 61 75 73 65 20 69 73 20 70 72 65 73 65 6e 74  lause is present
106a0 2c 20 74 68 65 6e 20 74 68 65 0a 20 20 6c 69 6b  , then the.  lik
106b0 65 28 29 20 66 75 6e 63 74 69 6f 6e 20 69 73 20  e() function is 
106c0 69 6e 76 6f 6b 65 64 20 77 69 74 68 20 74 68 72  invoked with thr
106d0 65 65 20 61 72 67 75 6d 65 6e 74 73 2e 20 20 5e  ee arguments.  ^
106e0 4f 74 68 65 72 77 69 73 65 2c 20 69 74 20 69 73  Otherwise, it is
106f0 0a 20 20 69 6e 76 6f 6b 65 64 20 77 69 74 68 20  .  invoked with 
10700 74 77 6f 20 61 72 67 75 6d 65 6e 74 73 20 6f 6e  two arguments on
10710 6c 79 2e 20 4e 6f 74 65 20 74 68 61 74 20 74 68  ly. Note that th
10720 65 20 58 20 61 6e 64 20 59 20 70 61 72 61 6d 65  e X and Y parame
10730 74 65 72 73 20 61 72 65 0a 20 20 72 65 76 65 72  ters are.  rever
10740 73 65 64 20 69 6e 20 74 68 65 20 6c 69 6b 65 28  sed in the like(
10750 29 20 66 75 6e 63 74 69 6f 6e 20 72 65 6c 61 74  ) function relat
10760 69 76 65 20 74 6f 20 74 68 65 20 69 6e 66 69 78  ive to the infix
10770 20 5b 4c 49 4b 45 5d 20 6f 70 65 72 61 74 6f 72   [LIKE] operator
10780 2e 0a 20 20 5e 54 68 65 20 5b 73 71 6c 69 74 65  ..  ^The [sqlite
10790 33 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f  3_create_functio
107a0 6e 28 29 5d 20 69 6e 74 65 72 66 61 63 65 20 63  n()] interface c
107b0 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 6f 76  an be used to ov
107c0 65 72 72 69 64 65 20 74 68 65 0a 20 20 6c 69 6b  erride the.  lik
107d0 65 28 29 20 66 75 6e 63 74 69 6f 6e 20 61 6e 64  e() function and
107e0 20 74 68 65 72 65 62 79 20 63 68 61 6e 67 65 20   thereby change 
107f0 74 68 65 20 6f 70 65 72 61 74 69 6f 6e 20 6f 66  the operation of
10800 20 74 68 65 0a 20 20 5b 4c 49 4b 45 5d 20 6f 70   the.  [LIKE] op
10810 65 72 61 74 6f 72 2e 20 20 57 68 65 6e 20 6f 76  erator.  When ov
10820 65 72 72 69 64 69 6e 67 20 74 68 65 20 6c 69 6b  erriding the lik
10830 65 28 29 20 66 75 6e 63 74 69 6f 6e 2c 20 69 74  e() function, it
10840 20 6d 61 79 20 62 65 20 69 6d 70 6f 72 74 61 6e   may be importan
10850 74 0a 20 20 74 6f 20 6f 76 65 72 72 69 64 65 20  t.  to override 
10860 62 6f 74 68 20 74 68 65 20 74 77 6f 20 61 6e 64  both the two and
10870 20 74 68 72 65 65 20 61 72 67 75 6d 65 6e 74 20   three argument 
10880 76 65 72 73 69 6f 6e 73 20 6f 66 20 74 68 65 20  versions of the 
10890 6c 69 6b 65 28 29 20 0a 20 20 66 75 6e 63 74 69  like() .  functi
108a0 6f 6e 2e 20 4f 74 68 65 72 77 69 73 65 2c 20 64  on. Otherwise, d
108b0 69 66 66 65 72 65 6e 74 20 63 6f 64 65 20 6d 61  ifferent code ma
108c0 79 20 62 65 20 63 61 6c 6c 65 64 20 74 6f 20 69  y be called to i
108d0 6d 70 6c 65 6d 65 6e 74 20 74 68 65 0a 20 20 5b  mplement the.  [
108e0 4c 49 4b 45 5d 20 6f 70 65 72 61 74 6f 72 20 64  LIKE] operator d
108f0 65 70 65 6e 64 69 6e 67 20 6f 6e 20 77 68 65 74  epending on whet
10900 68 65 72 20 6f 72 20 6e 6f 74 20 61 6e 20 45 53  her or not an ES
10910 43 41 50 45 20 63 6c 61 75 73 65 20 77 61 73 20  CAPE clause was 
10920 0a 20 20 73 70 65 63 69 66 69 65 64 2e 0a 7d 0a  .  specified..}.
10930 0a 66 75 6e 63 64 65 66 20 7b 6c 6f 61 64 5f 65  .funcdef {load_e
10940 78 74 65 6e 73 69 6f 6e 28 58 29 20 6c 6f 61 64  xtension(X) load
10950 5f 65 78 74 65 6e 73 69 6f 6e 28 58 2c 59 29 7d  _extension(X,Y)}
10960 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20 6c 6f 61   {} {.  ^The loa
10970 64 5f 65 78 74 65 6e 73 69 6f 6e 28 58 2c 59 29  d_extension(X,Y)
10980 20 66 75 6e 63 74 69 6f 6e 20 6c 6f 61 64 73 20   function loads 
10990 53 51 4c 69 74 65 20 65 78 74 65 6e 73 69 6f 6e  SQLite extension
109a0 73 20 6f 75 74 20 6f 66 20 74 68 65 20 73 68 61  s out of the sha
109b0 72 65 64 0a 20 20 6c 69 62 72 61 72 79 20 66 69  red.  library fi
109c0 6c 65 20 6e 61 6d 65 64 20 58 20 75 73 69 6e 67  le named X using
109d0 20 74 68 65 20 65 6e 74 72 79 20 70 6f 69 6e 74   the entry point
109e0 20 59 2e 20 20 5e 54 68 65 20 72 65 73 75 6c 74   Y.  ^The result
109f0 20 6f 66 20 6c 6f 61 64 5f 65 78 74 65 6e 73 69   of load_extensi
10a00 6f 6e 28 29 0a 20 20 69 73 20 61 6c 77 61 79 73  on().  is always
10a10 20 61 20 4e 55 4c 4c 2e 20 20 5e 49 66 20 59 20   a NULL.  ^If Y 
10a20 69 73 20 6f 6d 69 74 74 65 64 20 74 68 65 6e 20  is omitted then 
10a30 74 68 65 20 64 65 66 61 75 6c 74 20 65 6e 74 72  the default entr
10a40 79 20 70 6f 69 6e 74 0a 20 20 6f 66 20 3c 62 3e  y point.  of <b>
10a50 73 71 6c 69 74 65 33 5f 65 78 74 65 6e 73 69 6f  sqlite3_extensio
10a60 6e 5f 69 6e 69 74 3c 2f 62 3e 20 69 73 20 75 73  n_init</b> is us
10a70 65 64 2e 20 20 5e 54 68 65 20 6c 6f 61 64 5f 65  ed.  ^The load_e
10a80 78 74 65 6e 73 69 6f 6e 28 29 20 66 75 6e 63 74  xtension() funct
10a90 69 6f 6e 0a 20 20 72 61 69 73 65 73 20 61 6e 20  ion.  raises an 
10aa0 65 78 63 65 70 74 69 6f 6e 20 69 66 20 74 68 65  exception if the
10ab0 20 65 78 74 65 6e 73 69 6f 6e 20 66 61 69 6c 73   extension fails
10ac0 20 74 6f 20 6c 6f 61 64 20 6f 72 20 69 6e 69 74   to load or init
10ad0 69 61 6c 69 7a 65 20 63 6f 72 72 65 63 74 6c 79  ialize correctly
10ae0 2e 0a 0a 20 20 3c 70 3e 5e 54 68 65 20 6c 6f 61  ...  <p>^The loa
10af0 64 5f 65 78 74 65 6e 73 69 6f 6e 28 29 20 66 75  d_extension() fu
10b00 6e 63 74 69 6f 6e 20 77 69 6c 6c 20 66 61 69 6c  nction will fail
10b10 20 69 66 20 74 68 65 20 65 78 74 65 6e 73 69 6f   if the extensio
10b20 6e 20 61 74 74 65 6d 70 74 73 20 74 6f 20 0a 20  n attempts to . 
10b30 20 6d 6f 64 69 66 79 20 6f 72 20 64 65 6c 65 74   modify or delet
10b40 65 20 61 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e  e a SQL function
10b50 20 6f 72 20 63 6f 6c 6c 61 74 69 6e 67 20 73 65   or collating se
10b60 71 75 65 6e 63 65 2e 20 20 5e 54 68 65 0a 20 20  quence.  ^The.  
10b70 65 78 74 65 6e 73 69 6f 6e 20 63 61 6e 20 61 64  extension can ad
10b80 64 20 6e 65 77 20 66 75 6e 63 74 69 6f 6e 73 20  d new functions 
10b90 6f 72 20 63 6f 6c 6c 61 74 69 6e 67 20 73 65 71  or collating seq
10ba0 75 65 6e 63 65 73 2c 20 62 75 74 20 63 61 6e 6e  uences, but cann
10bb0 6f 74 0a 20 20 6d 6f 64 69 66 79 20 6f 72 20 64  ot.  modify or d
10bc0 65 6c 65 74 65 20 65 78 69 73 74 69 6e 67 20 66  elete existing f
10bd0 75 6e 63 74 69 6f 6e 73 20 6f 72 20 63 6f 6c 6c  unctions or coll
10be0 61 74 69 6e 67 20 73 65 71 75 65 6e 63 65 73 20  ating sequences 
10bf0 62 65 63 61 75 73 65 0a 20 20 74 68 6f 73 65 20  because.  those 
10c00 66 75 6e 63 74 69 6f 6e 73 20 61 6e 64 2f 6f 72  functions and/or
10c10 20 63 6f 6c 6c 61 74 69 6e 67 20 73 65 71 75 65   collating seque
10c20 6e 63 65 73 20 6d 69 67 68 74 20 62 65 20 75 73  nces might be us
10c30 65 64 20 65 6c 73 65 77 68 65 72 65 0a 20 20 69  ed elsewhere.  i
10c40 6e 20 74 68 65 20 63 75 72 72 65 6e 74 6c 79 20  n the currently 
10c50 72 75 6e 6e 69 6e 67 20 53 51 4c 20 73 74 61 74  running SQL stat
10c60 65 6d 65 6e 74 2e 20 20 54 6f 20 6c 6f 61 64 20  ement.  To load 
10c70 61 6e 20 65 78 74 65 6e 73 69 6f 6e 20 74 68 61  an extension tha
10c80 74 0a 20 20 63 68 61 6e 67 65 73 20 6f 72 20 64  t.  changes or d
10c90 65 6c 65 74 65 73 20 66 75 6e 63 74 69 6f 6e 73  eletes functions
10ca0 20 6f 72 20 63 6f 6c 6c 61 74 69 6e 67 20 73 65   or collating se
10cb0 71 75 65 6e 63 65 73 2c 20 75 73 65 20 74 68 65  quences, use the
10cc0 0a 20 20 5b 73 71 6c 69 74 65 33 5f 6c 6f 61 64  .  [sqlite3_load
10cd0 5f 65 78 74 65 6e 73 69 6f 6e 28 29 5d 20 43 2d  _extension()] C-
10ce0 6c 61 6e 67 75 61 67 65 20 41 50 49 2e 3c 2f 70  language API.</p
10cf0 3e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 6c 6f  >.}..funcdef {lo
10d00 77 65 72 28 58 29 7d 20 7b 7d 20 7b 0a 20 20 5e  wer(X)} {} {.  ^
10d10 54 68 65 20 6c 6f 77 65 72 28 58 29 20 66 75 6e  The lower(X) fun
10d20 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 61 20  ction returns a 
10d30 63 6f 70 79 20 6f 66 20 73 74 72 69 6e 67 20 58  copy of string X
10d40 20 77 69 74 68 20 61 6c 6c 20 41 53 43 49 49 20   with all ASCII 
10d50 63 68 61 72 61 63 74 65 72 73 0a 20 20 63 6f 6e  characters.  con
10d60 76 65 72 74 65 64 20 74 6f 20 6c 6f 77 65 72 20  verted to lower 
10d70 63 61 73 65 2e 20 20 5e 54 68 65 20 64 65 66 61  case.  ^The defa
10d80 75 6c 74 20 62 75 69 6c 74 2d 69 6e 20 6c 6f 77  ult built-in low
10d90 65 72 28 29 20 66 75 6e 63 74 69 6f 6e 20 77 6f  er() function wo
10da0 72 6b 73 0a 20 20 66 6f 72 20 41 53 43 49 49 20  rks.  for ASCII 
10db0 63 68 61 72 61 63 74 65 72 73 20 6f 6e 6c 79 2e  characters only.
10dc0 20 20 54 6f 20 64 6f 20 63 61 73 65 20 63 6f 6e    To do case con
10dd0 76 65 72 73 69 6f 6e 73 20 6f 6e 20 6e 6f 6e 2d  versions on non-
10de0 41 53 43 49 49 0a 20 20 63 68 61 72 61 63 74 65  ASCII.  characte
10df0 72 73 2c 20 6c 6f 61 64 20 74 68 65 20 49 43 55  rs, load the ICU
10e00 20 65 78 74 65 6e 73 69 6f 6e 2e 0a 7d 0a 0a 66   extension..}..f
10e10 75 6e 63 64 65 66 20 7b 6c 74 72 69 6d 28 58 29  uncdef {ltrim(X)
10e20 20 6c 74 72 69 6d 28 58 2c 59 29 7d 20 7b 7d 20   ltrim(X,Y)} {} 
10e30 7b 0a 20 20 5e 54 68 65 20 6c 74 72 69 6d 28 58  {.  ^The ltrim(X
10e40 2c 59 29 20 66 75 6e 63 74 69 6f 6e 20 72 65 74  ,Y) function ret
10e50 75 72 6e 73 20 61 20 73 74 72 69 6e 67 20 66 6f  urns a string fo
10e60 72 6d 65 64 20 62 79 20 72 65 6d 6f 76 69 6e 67  rmed by removing
10e70 20 61 6e 79 20 61 6e 64 20 61 6c 6c 0a 20 20 63   any and all.  c
10e80 68 61 72 61 63 74 65 72 73 20 74 68 61 74 20 61  haracters that a
10e90 70 70 65 61 72 20 69 6e 20 59 20 66 72 6f 6d 20  ppear in Y from 
10ea0 74 68 65 20 6c 65 66 74 20 73 69 64 65 20 6f 66  the left side of
10eb0 20 58 2e 0a 20 20 5e 49 66 20 74 68 65 20 59 20   X..  ^If the Y 
10ec0 61 72 67 75 6d 65 6e 74 20 69 73 20 6f 6d 69 74  argument is omit
10ed0 74 65 64 2c 20 6c 74 72 69 6d 28 58 29 20 72 65  ted, ltrim(X) re
10ee0 6d 6f 76 65 73 20 73 70 61 63 65 73 20 66 72 6f  moves spaces fro
10ef0 6d 20 74 68 65 20 6c 65 66 74 20 73 69 64 65 0a  m the left side.
10f00 20 20 6f 66 20 58 2e 0a 7d 0a 0a 66 75 6e 63 64    of X..}..funcd
10f10 65 66 20 7b 6d 61 78 28 58 2c 59 2c 2e 2e 2e 29  ef {max(X,Y,...)
10f20 7d 20 7b 2a 6d 61 78 43 6f 72 65 46 75 6e 63 20  } {*maxCoreFunc 
10f30 2a 6d 61 78 20 7b 6d 61 78 28 29 20 53 51 4c 20  *max {max() SQL 
10f40 66 75 6e 63 74 69 6f 6e 7d 7d 20 7b 0a 20 20 5e  function}} {.  ^
10f50 54 68 65 20 6d 75 6c 74 69 2d 61 72 67 75 6d 65  The multi-argume
10f60 6e 74 20 6d 61 78 28 29 20 66 75 6e 63 74 69 6f  nt max() functio
10f70 6e 20 72 65 74 75 72 6e 73 20 74 68 65 20 61 72  n returns the ar
10f80 67 75 6d 65 6e 74 20 77 69 74 68 20 74 68 65 20  gument with the 
10f90 0a 20 20 6d 61 78 69 6d 75 6d 20 76 61 6c 75 65  .  maximum value
10fa0 2c 20 6f 72 20 72 65 74 75 72 6e 20 4e 55 4c 4c  , or return NULL
10fb0 20 69 66 20 61 6e 79 20 61 72 67 75 6d 65 6e 74   if any argument
10fc0 20 69 73 20 4e 55 4c 4c 2e 20 0a 20 20 5e 54 68   is NULL. .  ^Th
10fd0 65 20 6d 75 6c 74 69 2d 61 72 67 75 6d 65 6e 74  e multi-argument
10fe0 20 6d 61 78 28 29 20 66 75 6e 63 74 69 6f 6e 20   max() function 
10ff0 73 65 61 72 63 68 65 73 20 69 74 73 20 61 72 67  searches its arg
11000 75 6d 65 6e 74 73 20 66 72 6f 6d 20 6c 65 66 74  uments from left
11010 20 74 6f 20 72 69 67 68 74 0a 20 20 66 6f 72 20   to right.  for 
11020 61 6e 20 61 72 67 75 6d 65 6e 74 20 74 68 61 74  an argument that
11030 20 64 65 66 69 6e 65 73 20 61 20 63 6f 6c 6c 61   defines a colla
11040 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e 20 61 6e  ting function an
11050 64 20 75 73 65 73 20 74 68 61 74 20 63 6f 6c 6c  d uses that coll
11060 61 74 69 6e 67 0a 20 20 66 75 6e 63 74 69 6f 6e  ating.  function
11070 20 66 6f 72 20 61 6c 6c 20 73 74 72 69 6e 67 20   for all string 
11080 63 6f 6d 70 61 72 69 73 6f 6e 73 2e 20 20 5e 49  comparisons.  ^I
11090 66 20 6e 6f 6e 65 20 6f 66 20 74 68 65 20 61 72  f none of the ar
110a0 67 75 6d 65 6e 74 73 20 74 6f 20 6d 61 78 28 29  guments to max()
110b0 0a 20 20 64 65 66 69 6e 65 20 61 20 63 6f 6c 6c  .  define a coll
110c0 61 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e 2c 20  ating function, 
110d0 74 68 65 6e 20 74 68 65 20 42 49 4e 41 52 59 20  then the BINARY 
110e0 63 6f 6c 6c 61 74 69 6e 67 20 66 75 6e 63 74 69  collating functi
110f0 6f 6e 20 69 73 20 75 73 65 64 2e 0a 20 20 4e 6f  on is used..  No
11100 74 65 20 74 68 61 74 20 3c 62 3e 6d 61 78 28 29  te that <b>max()
11110 3c 2f 62 3e 20 69 73 20 61 20 73 69 6d 70 6c 65  </b> is a simple
11120 20 66 75 6e 63 74 69 6f 6e 20 77 68 65 6e 0a 20   function when. 
11130 20 69 74 20 68 61 73 20 32 20 6f 72 20 6d 6f 72   it has 2 or mor
11140 65 20 61 72 67 75 6d 65 6e 74 73 20 62 75 74 20  e arguments but 
11150 6f 70 65 72 61 74 65 73 20 61 73 20 61 6e 0a 20  operates as an. 
11160 20 5b 6d 69 6e 41 67 67 46 75 6e 63 20 7c 20 61   [minAggFunc | a
11170 67 67 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f  ggregate functio
11180 6e 5d 20 69 66 20 67 69 76 65 6e 20 6f 6e 6c 79  n] if given only
11190 20 61 20 73 69 6e 67 6c 65 20 61 72 67 75 6d 65   a single argume
111a0 6e 74 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b  nt..}..funcdef {
111b0 6d 69 6e 28 58 2c 59 2c 2e 2e 2e 29 7d 20 7b 2a  min(X,Y,...)} {*
111c0 6d 69 6e 43 6f 72 65 46 75 6e 63 20 2a 6d 69 6e  minCoreFunc *min
111d0 20 7b 6d 69 6e 28 29 20 53 51 4c 20 66 75 6e 63   {min() SQL func
111e0 74 69 6f 6e 7d 7d 20 7b 0a 20 20 5e 54 68 65 20  tion}} {.  ^The 
111f0 6d 75 6c 74 69 2d 61 72 67 75 6d 65 6e 74 20 6d  multi-argument m
11200 69 6e 28 29 20 66 75 6e 63 74 69 6f 6e 20 72 65  in() function re
11210 74 75 72 6e 73 20 74 68 65 20 61 72 67 75 6d 65  turns the argume
11220 6e 74 20 77 69 74 68 20 74 68 65 0a 20 20 6d 69  nt with the.  mi
11230 6e 69 6d 75 6d 20 76 61 6c 75 65 2e 0a 20 20 5e  nimum value..  ^
11240 54 68 65 20 6d 75 6c 74 69 2d 61 72 67 75 6d 65  The multi-argume
11250 6e 74 20 6d 69 6e 28 29 20 66 75 6e 63 74 69 6f  nt min() functio
11260 6e 20 73 65 61 72 63 68 65 73 20 69 74 73 20 61  n searches its a
11270 72 67 75 6d 65 6e 74 73 20 66 72 6f 6d 20 6c 65  rguments from le
11280 66 74 20 74 6f 20 72 69 67 68 74 0a 20 20 66 6f  ft to right.  fo
11290 72 20 61 6e 20 61 72 67 75 6d 65 6e 74 20 74 68  r an argument th
112a0 61 74 20 64 65 66 69 6e 65 73 20 61 20 63 6f 6c  at defines a col
112b0 6c 61 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e 20  lating function 
112c0 61 6e 64 20 75 73 65 73 20 74 68 61 74 20 63 6f  and uses that co
112d0 6c 6c 61 74 69 6e 67 0a 20 20 66 75 6e 63 74 69  llating.  functi
112e0 6f 6e 20 66 6f 72 20 61 6c 6c 20 73 74 72 69 6e  on for all strin
112f0 67 20 63 6f 6d 70 61 72 69 73 6f 6e 73 2e 20 20  g comparisons.  
11300 5e 49 66 20 6e 6f 6e 65 20 6f 66 20 74 68 65 20  ^If none of the 
11310 61 72 67 75 6d 65 6e 74 73 20 74 6f 20 6d 69 6e  arguments to min
11320 28 29 0a 20 20 64 65 66 69 6e 65 20 61 20 63 6f  ().  define a co
11330 6c 6c 61 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e  llating function
11340 2c 20 74 68 65 6e 20 74 68 65 20 42 49 4e 41 52  , then the BINAR
11350 59 20 63 6f 6c 6c 61 74 69 6e 67 20 66 75 6e 63  Y collating func
11360 74 69 6f 6e 20 69 73 20 75 73 65 64 2e 0a 20 20  tion is used..  
11370 4e 6f 74 65 20 74 68 61 74 20 3c 62 3e 6d 69 6e  Note that <b>min
11380 28 29 3c 2f 62 3e 20 69 73 20 61 20 73 69 6d 70  ()</b> is a simp
11390 6c 65 20 66 75 6e 63 74 69 6f 6e 20 77 68 65 6e  le function when
113a0 0a 20 20 69 74 20 68 61 73 20 32 20 6f 72 20 6d  .  it has 2 or m
113b0 6f 72 65 20 61 72 67 75 6d 65 6e 74 73 20 62 75  ore arguments bu
113c0 74 20 6f 70 65 72 61 74 65 73 20 61 73 20 61 6e  t operates as an
113d0 20 0a 20 20 5b 6d 61 78 41 67 67 46 75 6e 63 20   .  [maxAggFunc 
113e0 7c 20 61 67 67 72 65 67 61 74 65 20 66 75 6e 63  | aggregate func
113f0 74 69 6f 6e 5d 20 69 66 20 67 69 76 65 6e 0a 20  tion] if given. 
11400 20 6f 6e 6c 79 20 61 20 73 69 6e 67 6c 65 20 61   only a single a
11410 72 67 75 6d 65 6e 74 2e 0a 7d 0a 0a 66 75 6e 63  rgument..}..func
11420 64 65 66 20 7b 6e 75 6c 6c 69 66 28 58 2c 59 29  def {nullif(X,Y)
11430 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20 6e 75  } {} {.  ^The nu
11440 6c 6c 69 66 28 58 2c 59 29 20 66 75 6e 63 74 69  llif(X,Y) functi
11450 6f 6e 20 72 65 74 75 72 6e 73 20 69 74 73 20 66  on returns its f
11460 69 72 73 74 20 61 72 67 75 6d 65 6e 74 20 69 66  irst argument if
11470 20 74 68 65 20 61 72 67 75 6d 65 6e 74 73 20 61   the arguments a
11480 72 65 0a 20 20 64 69 66 66 65 72 65 6e 74 20 61  re.  different a
11490 6e 64 20 4e 55 4c 4c 20 69 66 20 74 68 65 20 61  nd NULL if the a
114a0 72 67 75 6d 65 6e 74 73 20 61 72 65 20 74 68 65  rguments are the
114b0 20 73 61 6d 65 2e 20 20 5e 54 68 65 20 6e 75 6c   same.  ^The nul
114c0 6c 69 66 28 58 2c 59 29 20 66 75 6e 63 74 69 6f  lif(X,Y) functio
114d0 6e 0a 20 20 73 65 61 72 63 68 65 73 20 69 74 73  n.  searches its
114e0 20 61 72 67 75 6d 65 6e 74 73 20 66 72 6f 6d 20   arguments from 
114f0 6c 65 66 74 20 74 6f 20 72 69 67 68 74 20 66 6f  left to right fo
11500 72 20 61 6e 20 61 72 67 75 6d 65 6e 74 20 74 68  r an argument th
11510 61 74 20 64 65 66 69 6e 65 73 20 61 0a 20 20 63  at defines a.  c
11520 6f 6c 6c 61 74 69 6e 67 20 66 75 6e 63 74 69 6f  ollating functio
11530 6e 20 61 6e 64 20 75 73 65 73 20 74 68 61 74 20  n and uses that 
11540 63 6f 6c 6c 61 74 69 6e 67 20 66 75 6e 63 74 69  collating functi
11550 6f 6e 20 66 6f 72 20 61 6c 6c 20 73 74 72 69 6e  on for all strin
11560 67 0a 20 20 63 6f 6d 70 61 72 69 73 6f 6e 73 2e  g.  comparisons.
11570 20 20 5e 49 66 20 6e 65 69 74 68 65 72 20 61 72    ^If neither ar
11580 67 75 6d 65 6e 74 20 74 6f 20 6e 75 6c 6c 69 66  gument to nullif
11590 28 29 20 64 65 66 69 6e 65 73 20 61 20 63 6f 6c  () defines a col
115a0 6c 61 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e 0a  lating function.
115b0 20 20 74 68 65 6e 20 74 68 65 20 42 49 4e 41 52    then the BINAR
115c0 59 20 69 73 20 75 73 65 64 2e 0a 7d 0a 0a 66 75  Y is used..}..fu
115d0 6e 63 64 65 66 20 7b 71 75 6f 74 65 28 58 29 7d  ncdef {quote(X)}
115e0 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20 71 75 6f   {} {.  ^The quo
115f0 74 65 28 58 29 20 66 75 6e 63 74 69 6f 6e 20 72  te(X) function r
11600 65 74 75 72 6e 73 20 61 20 73 74 72 69 6e 67 20  eturns a string 
11610 77 68 69 63 68 20 69 73 20 74 68 65 20 76 61 6c  which is the val
11620 75 65 20 6f 66 0a 20 20 69 74 73 20 61 72 67 75  ue of.  its argu
11630 6d 65 6e 74 20 73 75 69 74 61 62 6c 65 20 66 6f  ment suitable fo
11640 72 20 69 6e 63 6c 75 73 69 6f 6e 20 69 6e 74 6f  r inclusion into
11650 20 61 6e 6f 74 68 65 72 20 53 51 4c 20 73 74 61   another SQL sta
11660 74 65 6d 65 6e 74 2e 0a 20 20 5e 53 74 72 69 6e  tement..  ^Strin
11670 67 73 20 61 72 65 20 73 75 72 72 6f 75 6e 64 65  gs are surrounde
11680 64 20 62 79 20 73 69 6e 67 6c 65 2d 71 75 6f 74  d by single-quot
11690 65 73 20 77 69 74 68 20 65 73 63 61 70 65 73 20  es with escapes 
116a0 6f 6e 20 69 6e 74 65 72 69 6f 72 20 71 75 6f 74  on interior quot
116b0 65 73 0a 20 20 61 73 20 6e 65 65 64 65 64 2e 20  es.  as needed. 
116c0 20 5e 42 4c 4f 42 73 20 61 72 65 20 65 6e 63 6f   ^BLOBs are enco
116d0 64 65 64 20 61 73 20 68 65 78 61 64 65 63 69 6d  ded as hexadecim
116e0 61 6c 20 6c 69 74 65 72 61 6c 73 2e 0a 7d 0a 0a  al literals..}..
116f0 66 75 6e 63 64 65 66 20 7b 72 61 6e 64 6f 6d 28  funcdef {random(
11700 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20 72  )} {} {.  ^The r
11710 61 6e 64 6f 6d 28 29 20 66 75 6e 63 74 69 6f 6e  andom() function
11720 20 72 65 74 75 72 6e 73 20 61 20 70 73 65 75 64   returns a pseud
11730 6f 2d 72 61 6e 64 6f 6d 20 69 6e 74 65 67 65 72  o-random integer
11740 0a 20 20 62 65 74 77 65 65 6e 20 2d 39 32 32 33  .  between -9223
11750 33 37 32 30 33 36 38 35 34 37 37 35 38 30 38 20  372036854775808 
11760 61 6e 64 20 2b 39 32 32 33 33 37 32 30 33 36 38  and +92233720368
11770 35 34 37 37 35 38 30 37 2e 0a 7d 0a 0a 66 75 6e  54775807..}..fun
11780 63 64 65 66 20 7b 72 61 6e 64 6f 6d 62 6c 6f 62  cdef {randomblob
11790 28 4e 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68 65  (N)} {} {.  ^The
117a0 20 72 61 6e 64 6f 6d 62 6c 6f 62 28 4e 29 20 66   randomblob(N) f
117b0 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 20 61  unction return a
117c0 6e 20 4e 2d 62 79 74 65 20 62 6c 6f 62 20 63 6f  n N-byte blob co
117d0 6e 74 61 69 6e 69 6e 67 20 70 73 65 75 64 6f 2d  ntaining pseudo-
117e0 72 61 6e 64 6f 6d 0a 20 20 62 79 74 65 73 2e 20  random.  bytes. 
117f0 5e 49 66 20 4e 20 69 73 20 6c 65 73 73 20 74 68  ^If N is less th
11800 61 6e 20 31 20 74 68 65 6e 20 61 20 31 2d 62 79  an 1 then a 1-by
11810 74 65 20 72 61 6e 64 6f 6d 20 62 6c 6f 62 20 69  te random blob i
11820 73 20 72 65 74 75 72 6e 65 64 2e 0a 0a 20 20 3c  s returned...  <
11830 70 3e 48 69 6e 74 3a 20 20 61 70 70 6c 69 63 61  p>Hint:  applica
11840 74 69 6f 6e 73 20 63 61 6e 20 67 65 6e 65 72 61  tions can genera
11850 74 65 20 67 6c 6f 62 61 6c 6c 79 20 75 6e 69 71  te globally uniq
11860 75 65 20 69 64 65 6e 74 69 66 69 65 72 73 0a 20  ue identifiers. 
11870 20 75 73 69 6e 67 20 74 68 69 73 20 66 75 6e 63   using this func
11880 74 69 6f 6e 20 74 6f 67 65 74 68 65 72 20 77 69  tion together wi
11890 74 68 20 5b 68 65 78 28 29 5d 20 61 6e 64 2f 6f  th [hex()] and/o
118a0 72 0a 20 20 5b 6c 6f 77 65 72 28 29 5d 20 6c 69  r.  [lower()] li
118b0 6b 65 20 74 68 69 73 3a 3c 2f 70 3e 0a 0a 20 20  ke this:</p>..  
118c0 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 20 20 68  <blockquote>.  h
118d0 65 78 28 72 61 6e 64 6f 6d 62 6c 6f 62 28 31 36  ex(randomblob(16
118e0 29 29 3c 62 72 3e 3c 2f 62 72 3e 0a 20 20 6c 6f  ))<br></br>.  lo
118f0 77 65 72 28 68 65 78 28 72 61 6e 64 6f 6d 62 6c  wer(hex(randombl
11900 6f 62 28 31 36 29 29 29 0a 20 20 3c 2f 62 6c 6f  ob(16))).  </blo
11910 63 6b 71 75 6f 74 65 3e 0a 7d 0a 0a 66 75 6e 63  ckquote>.}..func
11920 64 65 66 20 7b 72 65 70 6c 61 63 65 28 58 2c 59  def {replace(X,Y
11930 2c 5a 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68 65  ,Z)} {} {.  ^The
11940 20 72 65 70 6c 61 63 65 28 58 2c 59 2c 5a 29 20   replace(X,Y,Z) 
11950 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73  function returns
11960 20 61 20 73 74 72 69 6e 67 20 66 6f 72 6d 65 64   a string formed
11970 20 62 79 20 73 75 62 73 74 69 74 75 74 69 6e 67   by substituting
11980 0a 20 20 73 74 72 69 6e 67 20 5a 20 66 6f 72 20  .  string Z for 
11990 65 76 65 72 79 20 6f 63 63 75 72 72 61 6e 63 65  every occurrance
119a0 20 6f 66 20 73 74 72 69 6e 67 20 59 20 69 6e 20   of string Y in 
119b0 73 74 72 69 6e 67 20 58 2e 20 20 5e 54 68 65 20  string X.  ^The 
119c0 5b 42 49 4e 41 52 59 5d 0a 20 20 63 6f 6c 6c 61  [BINARY].  colla
119d0 74 69 6e 67 20 73 65 71 75 65 6e 63 65 20 69 73  ting sequence is
119e0 20 75 73 65 64 20 66 6f 72 20 63 6f 6d 70 61 72   used for compar
119f0 69 73 6f 6e 73 2e 20 20 5e 49 66 20 59 20 69 73  isons.  ^If Y is
11a00 20 61 6e 20 65 6d 70 74 79 0a 20 20 73 74 72 69   an empty.  stri
11a10 6e 67 20 74 68 65 6e 20 72 65 74 75 72 6e 20 58  ng then return X
11a20 20 75 6e 63 68 61 6e 67 65 64 2e 20 20 5e 49 66   unchanged.  ^If
11a30 20 5a 20 69 73 20 6e 6f 74 20 69 6e 69 74 69 61   Z is not initia
11a40 6c 6c 79 0a 20 20 61 20 73 74 72 69 6e 67 2c 20  lly.  a string, 
11a50 69 74 20 69 73 20 63 61 73 74 20 74 6f 20 61 20  it is cast to a 
11a60 55 54 46 2d 38 20 73 74 72 69 6e 67 20 70 72 69  UTF-8 string pri
11a70 6f 72 20 74 6f 20 70 72 6f 63 65 73 73 69 6e 67  or to processing
11a80 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 72 6f  ..}..funcdef {ro
11a90 75 6e 64 28 58 29 20 72 6f 75 6e 64 28 58 2c 59  und(X) round(X,Y
11aa0 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20 72  )} {} {.  ^The r
11ab0 6f 75 6e 64 28 58 2c 59 29 20 66 75 6e 63 74 69  ound(X,Y) functi
11ac0 6f 6e 20 72 65 74 75 72 6e 73 20 61 20 73 74 72  on returns a str
11ad0 69 6e 67 20 72 65 70 72 65 73 65 6e 74 61 74 69  ing representati
11ae0 6f 6e 20 6f 66 20 74 68 65 20 66 6c 6f 61 74 69  on of the floati
11af0 6e 67 2d 70 6f 69 6e 74 0a 20 20 76 61 6c 75 65  ng-point.  value
11b00 20 58 20 72 6f 75 6e 64 65 64 20 74 6f 20 59 20   X rounded to Y 
11b10 64 69 67 69 74 73 20 74 6f 20 74 68 65 20 72 69  digits to the ri
11b20 67 68 74 20 6f 66 20 74 68 65 20 64 65 63 69 6d  ght of the decim
11b30 61 6c 20 70 6f 69 6e 74 2e 0a 20 20 5e 49 66 20  al point..  ^If 
11b40 74 68 65 20 59 20 61 72 67 75 6d 65 6e 74 20 69  the Y argument i
11b50 73 20 6f 6d 69 74 74 65 64 2c 20 74 68 65 20 58  s omitted, the X
11b60 20 76 61 6c 75 65 20 69 73 20 74 72 75 6e 63 61   value is trunca
11b70 74 65 64 20 74 6f 20 61 6e 20 69 6e 74 65 67 65  ted to an intege
11b80 72 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 72  r..}..funcdef {r
11b90 74 72 69 6d 28 58 29 20 72 74 72 69 6d 28 58 2c  trim(X) rtrim(X,
11ba0 59 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20  Y)} {} {.  ^The 
11bb0 72 74 72 69 6d 28 58 2c 59 29 20 66 75 6e 63 74  rtrim(X,Y) funct
11bc0 69 6f 6e 20 72 65 74 75 72 6e 73 20 61 20 73 74  ion returns a st
11bd0 72 69 6e 67 20 66 6f 72 6d 65 64 20 62 79 20 72  ring formed by r
11be0 65 6d 6f 76 69 6e 67 20 61 6e 79 20 61 6e 64 20  emoving any and 
11bf0 61 6c 6c 0a 20 20 63 68 61 72 61 63 74 65 72 73  all.  characters
11c00 20 74 68 61 74 20 61 70 70 65 61 72 20 69 6e 20   that appear in 
11c10 59 20 66 72 6f 6d 20 74 68 65 20 72 69 67 68 74  Y from the right
11c20 20 73 69 64 65 20 6f 66 20 58 2e 0a 20 20 5e 49   side of X..  ^I
11c30 66 20 74 68 65 20 59 20 61 72 67 75 6d 65 6e 74  f the Y argument
11c40 20 69 73 20 6f 6d 69 74 74 65 64 2c 20 72 74 72   is omitted, rtr
11c50 69 6d 28 58 29 20 72 65 6d 6f 76 65 73 20 73 70  im(X) removes sp
11c60 61 63 65 73 20 66 72 6f 6d 20 74 68 65 20 72 69  aces from the ri
11c70 67 68 74 0a 20 20 73 69 64 65 20 6f 66 20 58 2e  ght.  side of X.
11c80 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 73 6f 75  .}..funcdef {sou
11c90 6e 64 65 78 28 58 29 7d 20 7b 7d 20 7b 0a 20 20  ndex(X)} {} {.  
11ca0 5e 54 68 65 20 73 6f 75 6e 64 65 78 28 58 29 20  ^The soundex(X) 
11cb0 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73  function returns
11cc0 20 61 20 73 74 72 69 6e 67 20 74 68 61 74 20 69   a string that i
11cd0 73 20 74 68 65 20 73 6f 75 6e 64 65 78 20 65 6e  s the soundex en
11ce0 63 6f 64 69 6e 67 20 0a 20 20 6f 66 20 74 68 65  coding .  of the
11cf0 20 73 74 72 69 6e 67 20 58 2e 0a 20 20 5e 54 68   string X..  ^Th
11d00 65 20 73 74 72 69 6e 67 20 22 3f 30 30 30 22 20  e string "?000" 
11d10 69 73 20 72 65 74 75 72 6e 65 64 20 69 66 20 74  is returned if t
11d20 68 65 20 61 72 67 75 6d 65 6e 74 20 69 73 20 4e  he argument is N
11d30 55 4c 4c 20 6f 72 20 63 6f 6e 74 61 69 6e 73 0a  ULL or contains.
11d40 20 20 6e 6f 20 41 53 43 49 49 20 61 6c 70 68 61    no ASCII alpha
11d50 62 65 74 69 63 20 63 68 61 72 61 63 74 65 72 73  betic characters
11d60 2e 0a 20 20 5e 28 54 68 69 73 20 66 75 6e 63 74  ..  ^(This funct
11d70 69 6f 6e 20 69 73 20 6f 6d 69 74 74 65 64 20 66  ion is omitted f
11d80 72 6f 6d 20 53 51 4c 69 74 65 20 62 79 20 64 65  rom SQLite by de
11d90 66 61 75 6c 74 2e 0a 20 20 49 74 20 69 73 20 6f  fault..  It is o
11da0 6e 6c 79 20 61 76 61 69 6c 61 62 6c 65 20 69 66  nly available if
11db0 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 53 4f 55   the [SQLITE_SOU
11dc0 4e 44 45 58 5d 20 63 6f 6d 70 69 6c 65 2d 74 69  NDEX] compile-ti
11dd0 6d 65 20 6f 70 74 69 6f 6e 0a 20 20 69 73 20 75  me option.  is u
11de0 73 65 64 20 77 68 65 6e 20 53 51 4c 69 74 65 20  sed when SQLite 
11df0 69 73 20 62 75 69 6c 74 2e 29 5e 0a 7d 0a 0a 66  is built.)^.}..f
11e00 75 6e 63 64 65 66 20 7b 73 71 6c 69 74 65 5f 73  uncdef {sqlite_s
11e10 6f 75 72 63 65 5f 69 64 28 29 7d 20 7b 7d 20 7b  ource_id()} {} {
11e20 0a 20 20 5e 54 68 65 20 73 71 6c 69 74 65 5f 73  .  ^The sqlite_s
11e30 6f 75 72 63 65 5f 69 64 28 29 20 66 75 6e 63 74  ource_id() funct
11e40 69 6f 6e 20 72 65 74 75 72 6e 73 20 61 20 73 74  ion returns a st
11e50 72 69 6e 67 20 74 68 61 74 20 69 64 65 6e 74 69  ring that identi
11e60 66 69 65 73 20 74 68 65 0a 20 20 73 70 65 63 69  fies the.  speci
11e70 66 69 63 20 76 65 72 73 69 6f 6e 20 6f 66 20 74  fic version of t
11e80 68 65 20 73 6f 75 72 63 65 20 63 6f 64 65 20 74  he source code t
11e90 68 61 74 20 77 61 73 20 75 73 65 64 20 74 6f 20  hat was used to 
11ea0 62 75 69 6c 64 20 74 68 65 20 53 51 4c 69 74 65  build the SQLite
11eb0 0a 20 20 6c 69 62 72 61 72 79 2e 20 20 5e 54 68  .  library.  ^Th
11ec0 65 20 73 74 72 69 6e 67 20 72 65 74 75 72 6e 65  e string returne
11ed0 64 20 62 79 20 73 71 6c 69 74 65 5f 73 6f 75 72  d by sqlite_sour
11ee0 63 65 5f 69 64 28 29 20 62 65 67 69 6e 73 20 77  ce_id() begins w
11ef0 69 74 68 0a 20 20 74 68 65 20 64 61 74 65 20 61  ith.  the date a
11f00 6e 64 20 74 69 6d 65 20 74 68 61 74 20 74 68 65  nd time that the
11f10 20 73 6f 75 72 63 65 20 63 6f 64 65 20 77 61 73   source code was
11f20 20 63 68 65 63 6b 65 64 20 69 6e 20 61 6e 64 20   checked in and 
11f30 69 73 20 66 6f 6c 6c 6f 77 73 20 62 79 0a 20 20  is follows by.  
11f40 61 6e 20 53 48 41 31 20 68 61 73 68 20 74 68 61  an SHA1 hash tha
11f50 74 20 75 6e 69 71 75 65 6c 79 20 69 64 65 6e 74  t uniquely ident
11f60 69 66 69 65 73 20 74 68 65 20 73 6f 75 72 63 65  ifies the source
11f70 20 74 72 65 65 2e 20 20 5e 54 68 69 73 20 66 75   tree.  ^This fu
11f80 6e 63 74 69 6f 6e 20 69 73 0a 20 20 61 6e 20 53  nction is.  an S
11f90 51 4c 20 77 72 61 70 70 65 72 20 61 72 6f 75 6e  QL wrapper aroun
11fa0 64 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 73  d the [sqlite3_s
11fb0 6f 75 72 63 65 69 64 28 29 5d 20 43 20 69 6e 74  ourceid()] C int
11fc0 65 72 66 61 63 65 2e 0a 7d 0a 0a 66 75 6e 63 64  erface..}..funcd
11fd0 65 66 20 7b 73 71 6c 69 74 65 5f 76 65 72 73 69  ef {sqlite_versi
11fe0 6f 6e 28 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68  on()} {} {.  ^Th
11ff0 65 20 73 71 6c 69 74 65 5f 76 65 72 73 69 6f 6e  e sqlite_version
12000 28 29 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75  () function retu
12010 72 6e 73 20 74 68 65 20 76 65 72 73 69 6f 6e 20  rns the version 
12020 73 74 72 69 6e 67 20 66 6f 72 20 74 68 65 20 53  string for the S
12030 51 4c 69 74 65 0a 20 20 6c 69 62 72 61 72 79 20  QLite.  library 
12040 74 68 61 74 20 69 73 20 72 75 6e 6e 69 6e 67 2e  that is running.
12050 20 20 5e 54 68 69 73 20 66 75 6e 63 74 69 6f 6e    ^This function
12060 20 69 73 20 61 6e 20 53 51 4c 0a 20 20 77 72 61   is an SQL.  wra
12070 70 70 65 72 20 61 72 6f 75 6e 64 20 74 68 65 20  pper around the 
12080 5b 73 71 6c 69 74 65 33 5f 6c 69 62 76 65 72 73  [sqlite3_libvers
12090 69 6f 6e 28 29 5d 20 43 2d 69 6e 74 65 72 66 61  ion()] C-interfa
120a0 63 65 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b  ce..}..funcdef {
120b0 73 75 62 73 74 72 28 58 2c 59 2c 5a 29 20 73 75  substr(X,Y,Z) su
120c0 62 73 74 72 28 58 2c 59 29 7d 20 7b 7d 20 7b 0a  bstr(X,Y)} {} {.
120d0 20 20 5e 54 68 65 20 73 75 62 73 74 72 28 58 2c    ^The substr(X,
120e0 59 2c 5a 29 20 66 75 6e 63 74 69 6f 6e 20 72 65  Y,Z) function re
120f0 74 75 72 6e 73 20 61 20 73 75 62 73 74 72 69 6e  turns a substrin
12100 67 20 6f 66 20 69 6e 70 75 74 20 73 74 72 69 6e  g of input strin
12110 67 20 58 20 74 68 61 74 20 62 65 67 69 6e 73 0a  g X that begins.
12120 20 20 77 69 74 68 20 74 68 65 20 59 2d 74 68 20    with the Y-th 
12130 63 68 61 72 61 63 74 65 72 20 61 6e 64 20 77 68  character and wh
12140 69 63 68 20 69 73 20 5a 20 63 68 61 72 61 63 74  ich is Z charact
12150 65 72 73 20 6c 6f 6e 67 2e 0a 20 20 5e 49 66 20  ers long..  ^If 
12160 5a 20 69 73 20 6f 6d 69 74 74 65 64 20 74 68 65  Z is omitted the
12170 6e 20 73 75 62 73 74 72 28 58 2c 59 29 20 72 65  n substr(X,Y) re
12180 74 75 72 6e 73 20 61 6c 6c 20 63 68 61 72 61 63  turns all charac
12190 74 65 72 20 74 68 72 6f 75 67 68 20 74 68 65 20  ter through the 
121a0 65 6e 64 0a 20 20 6f 66 20 74 68 65 20 73 74 72  end.  of the str
121b0 69 6e 67 20 58 20 62 65 67 69 6e 6e 69 6e 67 20  ing X beginning 
121c0 77 69 74 68 20 74 68 65 20 59 2d 74 68 2e 0a 20  with the Y-th.. 
121d0 20 5e 54 68 65 20 6c 65 66 74 2d 6d 6f 73 74 20   ^The left-most 
121e0 63 68 61 72 61 63 74 65 72 20 6f 66 20 58 20 69  character of X i
121f0 73 20 6e 75 6d 62 65 72 20 31 2e 20 20 5e 49 66  s number 1.  ^If
12200 20 59 20 69 73 20 6e 65 67 61 74 69 76 65 0a 20   Y is negative. 
12210 20 74 68 65 20 74 68 65 20 66 69 72 73 74 20 63   the the first c
12220 68 61 72 61 63 74 65 72 20 6f 66 20 74 68 65 20  haracter of the 
12230 73 75 62 73 74 72 69 6e 67 20 69 73 20 66 6f 75  substring is fou
12240 6e 64 20 62 79 20 63 6f 75 6e 74 69 6e 67 20 66  nd by counting f
12250 72 6f 6d 20 74 68 65 0a 20 20 72 69 67 68 74 20  rom the.  right 
12260 72 61 74 68 65 72 20 74 68 61 6e 20 74 68 65 20  rather than the 
12270 6c 65 66 74 2e 20 20 5e 49 66 20 5a 20 69 73 20  left.  ^If Z is 
12280 6e 65 67 61 74 69 76 65 20 74 68 65 6e 0a 20 20  negative then.  
12290 74 68 65 20 61 62 73 28 5a 29 20 63 68 61 72 61  the abs(Z) chara
122a0 63 74 65 72 73 20 70 72 65 63 65 65 64 69 6e 67  cters preceeding
122b0 20 74 68 65 20 59 2d 74 68 20 63 68 61 72 61 63   the Y-th charac
122c0 74 65 72 20 61 72 65 20 72 65 74 75 72 6e 65 64  ter are returned
122d0 2e 0a 20 20 5e 49 66 20 58 20 69 73 20 73 74 72  ..  ^If X is str
122e0 69 6e 67 20 74 68 65 6e 20 63 68 61 72 61 63 74  ing then charact
122f0 65 72 73 20 69 6e 64 69 63 65 73 20 72 65 66 65  ers indices refe
12300 72 20 74 6f 20 61 63 74 75 61 6c 20 55 54 46 2d  r to actual UTF-
12310 38 20 0a 20 20 63 68 61 72 61 63 74 65 72 73 2e  8 .  characters.
12320 20 20 5e 49 66 20 58 20 69 73 20 61 20 42 4c 4f    ^If X is a BLO
12330 42 20 74 68 65 6e 20 74 68 65 20 69 6e 64 69 63  B then the indic
12340 65 73 20 72 65 66 65 72 20 74 6f 20 62 79 74 65  es refer to byte
12350 73 2e 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 74  s..}..funcdef {t
12360 6f 74 61 6c 5f 63 68 61 6e 67 65 73 28 29 7d 20  otal_changes()} 
12370 7b 7d 20 7b 0a 20 20 5e 54 68 65 20 74 6f 74 61  {} {.  ^The tota
12380 6c 5f 63 68 61 6e 67 65 73 28 29 20 66 75 6e 63  l_changes() func
12390 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 74 68 65  tion returns the
123a0 20 6e 75 6d 62 65 72 20 6f 66 20 72 6f 77 20 63   number of row c
123b0 68 61 6e 67 65 73 0a 20 20 63 61 75 73 65 64 20  hanges.  caused 
123c0 62 79 20 49 4e 53 45 52 54 2c 20 55 50 44 41 54  by INSERT, UPDAT
123d0 45 20 6f 72 20 44 45 4c 45 54 45 0a 20 20 73 74  E or DELETE.  st
123e0 61 74 65 6d 65 6e 74 73 20 73 69 6e 63 65 20 74  atements since t
123f0 68 65 20 63 75 72 72 65 6e 74 20 64 61 74 61 62  he current datab
12400 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 77  ase connection w
12410 61 73 20 6f 70 65 6e 65 64 2e 0a 20 20 5e 54 68  as opened..  ^Th
12420 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 61  is function is a
12430 20 77 72 61 70 70 65 72 20 61 72 6f 75 6e 64 20   wrapper around 
12440 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 74 6f 74  the [sqlite3_tot
12450 61 6c 5f 63 68 61 6e 67 65 73 28 29 5d 0a 20 20  al_changes()].  
12460 43 2f 43 2b 2b 20 69 6e 74 65 72 66 61 63 65 2e  C/C++ interface.
12470 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 74 72 69  .}..funcdef {tri
12480 6d 28 58 29 20 74 72 69 6d 28 58 2c 59 29 7d 20  m(X) trim(X,Y)} 
12490 7b 7d 20 7b 0a 20 20 5e 54 68 65 20 74 72 69 6d  {} {.  ^The trim
124a0 28 58 2c 59 29 20 66 75 6e 63 74 69 6f 6e 20 72  (X,Y) function r
124b0 65 74 75 72 6e 73 20 61 20 73 74 72 69 6e 67 20  eturns a string 
124c0 66 6f 72 6d 65 64 20 62 79 20 72 65 6d 6f 76 69  formed by removi
124d0 6e 67 20 61 6e 79 20 61 6e 64 20 61 6c 6c 0a 20  ng any and all. 
124e0 20 63 68 61 72 61 63 74 65 72 73 20 74 68 61 74   characters that
124f0 20 61 70 70 65 61 72 20 69 6e 20 59 20 66 72 6f   appear in Y fro
12500 6d 20 62 6f 74 68 20 65 6e 64 73 20 6f 66 20 58  m both ends of X
12510 2e 0a 20 20 5e 49 66 20 74 68 65 20 59 20 61 72  ..  ^If the Y ar
12520 67 75 6d 65 6e 74 20 69 73 20 6f 6d 69 74 74 65  gument is omitte
12530 64 2c 20 74 72 69 6d 28 58 29 20 72 65 6d 6f 76  d, trim(X) remov
12540 65 73 20 73 70 61 63 65 73 20 66 72 6f 6d 20 62  es spaces from b
12550 6f 74 68 20 65 6e 64 73 20 6f 66 20 58 2e 0a 7d  oth ends of X..}
12560 0a 0a 66 75 6e 63 64 65 66 20 7b 74 79 70 65 6f  ..funcdef {typeo
12570 66 28 58 29 7d 20 7b 7d 20 7b 0a 20 20 5e 54 68  f(X)} {} {.  ^Th
12580 65 20 74 79 70 65 6f 66 28 58 29 20 66 75 6e 63  e typeof(X) func
12590 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 61 20 73  tion returns a s
125a0 74 72 69 6e 67 20 74 68 61 74 20 69 6e 64 69 63  tring that indic
125b0 61 74 65 73 20 74 68 65 20 5b 64 61 74 61 74 79  ates the [dataty
125c0 70 65 5d 20 6f 66 0a 20 20 74 68 65 20 65 78 70  pe] of.  the exp
125d0 72 65 73 73 69 6f 6e 20 58 3a 20 22 6e 75 6c 6c  ression X: "null
125e0 22 2c 20 22 69 6e 74 65 67 65 72 22 2c 20 22 72  ", "integer", "r
125f0 65 61 6c 22 2c 20 22 74 65 78 74 22 2c 20 6f 72  eal", "text", or
12600 20 22 62 6c 6f 62 22 2e 0a 7d 0a 0a 66 75 6e 63   "blob"..}..func
12610 64 65 66 20 7b 75 70 70 65 72 28 58 29 7d 20 7b  def {upper(X)} {
12620 7d 20 7b 0a 20 20 5e 54 68 65 20 75 70 70 65 72  } {.  ^The upper
12630 28 58 29 20 66 75 6e 63 74 69 6f 6e 20 72 65 74  (X) function ret
12640 75 72 6e 73 20 61 20 63 6f 70 79 20 6f 66 20 69  urns a copy of i
12650 6e 70 75 74 20 73 74 72 69 6e 67 20 58 20 69 6e  nput string X in
12660 20 77 68 69 63 68 20 61 6c 6c 20 0a 20 20 6c 6f   which all .  lo
12670 77 65 72 2d 63 61 73 65 20 41 53 43 49 49 20 63  wer-case ASCII c
12680 68 61 72 61 63 74 65 72 73 20 61 72 65 20 63 6f  haracters are co
12690 6e 76 65 72 74 65 64 20 74 6f 20 74 68 65 69 72  nverted to their
126a0 20 75 70 70 65 72 2d 63 61 73 65 20 65 71 75 69   upper-case equi
126b0 76 61 6c 65 6e 74 2e 0a 7d 0a 0a 66 75 6e 63 64  valent..}..funcd
126c0 65 66 20 7b 7a 65 72 6f 62 6c 6f 62 28 4e 29 7d  ef {zeroblob(N)}
126d0 20 7b 7d 20 7b 0a 20 20 5e 54 68 65 20 7a 65 72   {} {.  ^The zer
126e0 6f 62 6c 6f 62 28 4e 29 20 66 75 6e 63 74 69 6f  oblob(N) functio
126f0 6e 20 72 65 74 75 72 6e 73 20 61 20 42 4c 4f 42  n returns a BLOB
12700 20 63 6f 6e 73 69 73 74 69 6e 67 20 6f 66 20 4e   consisting of N
12710 20 62 79 74 65 73 20 6f 66 20 30 78 30 30 2e 0a   bytes of 0x00..
12720 20 20 53 51 4c 69 74 65 20 6d 61 6e 61 67 65 73    SQLite manages
12730 20 74 68 65 73 65 20 7a 65 72 6f 62 6c 6f 62 73   these zeroblobs
12740 20 76 65 72 79 20 65 66 66 69 63 69 65 6e 74 6c   very efficientl
12750 79 2e 20 20 5a 65 72 6f 62 6c 6f 62 73 20 63 61  y.  Zeroblobs ca
12760 6e 20 62 65 20 75 73 65 64 20 74 6f 0a 20 20 72  n be used to.  r
12770 65 73 65 72 76 65 20 73 70 61 63 65 20 66 6f 72  eserve space for
12780 20 61 20 42 4c 4f 42 20 74 68 61 74 20 69 73 20   a BLOB that is 
12790 6c 61 74 65 72 20 77 72 69 74 74 65 6e 20 75 73  later written us
127a0 69 6e 67 20 0a 20 20 5b 73 71 6c 69 74 65 33 5f  ing .  [sqlite3_
127b0 62 6c 6f 62 5f 6f 70 65 6e 28 29 20 7c 20 69 6e  blob_open() | in
127c0 63 72 65 6d 65 6e 74 61 6c 20 42 4c 4f 42 20 49  cremental BLOB I
127d0 2f 4f 5d 2e 0a 20 20 5e 54 68 69 73 20 53 51 4c  /O]..  ^This SQL
127e0 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 69 6d 70   function is imp
127f0 6c 65 6d 65 6e 74 65 64 20 75 73 69 6e 67 20 74  lemented using t
12800 68 65 20 5b 73 71 6c 69 74 65 33 5f 72 65 73 75  he [sqlite3_resu
12810 6c 74 5f 7a 65 72 6f 62 6c 6f 62 28 29 5d 0a 20  lt_zeroblob()]. 
12820 20 72 6f 75 74 69 6e 65 20 66 72 6f 6d 20 74 68   routine from th
12830 65 20 43 2f 43 2b 2b 20 69 6e 74 65 72 66 61 63  e C/C++ interfac
12840 65 2e 0a 7d 0a 3c 2f 74 63 6c 3e 0a 3c 2f 74 61  e..}.</tcl>.</ta
12850 62 6c 65 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23  ble>..<tcl>.####
12860 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
12870 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
12880 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
12890 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
128a0 23 23 23 23 23 23 23 23 23 23 0a 53 65 63 74 69  ##########.Secti
128b0 6f 6e 20 7b 44 61 74 65 20 41 6e 64 20 54 69 6d  on {Date And Tim
128c0 65 20 46 75 6e 63 74 69 6f 6e 73 7d 20 64 61 74  e Functions} dat
128d0 65 66 75 6e 63 20 7b 2a 64 61 74 65 66 75 6e 63  efunc {*datefunc
128e0 7d 0a 68 64 5f 6b 65 79 77 6f 72 64 73 20 7b 64  }.hd_keywords {d
128f0 61 74 65 28 29 20 53 51 4c 20 66 75 6e 63 74 69  ate() SQL functi
12900 6f 6e 7d 20 7b 74 69 6d 65 28 29 20 53 51 4c 20  on} {time() SQL 
12910 66 75 6e 63 74 69 6f 6e 7d 0a 68 64 5f 6b 65 79  function}.hd_key
12920 77 6f 72 64 73 20 7b 64 61 74 65 74 69 6d 65 28  words {datetime(
12930 29 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 7d 20  ) SQL function} 
12940 7b 6a 75 6c 69 61 6e 64 61 79 28 29 20 53 51 4c  {julianday() SQL
12950 20 66 75 6e 63 74 69 6f 6e 7d 0a 68 64 5f 6b 65   function}.hd_ke
12960 79 77 6f 72 64 73 20 7b 73 74 72 66 74 69 6d 65  ywords {strftime
12970 28 29 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 7d  () SQL function}
12980 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 0a 53 51 4c  .</tcl>..<p>.SQL
12990 69 74 65 20 73 75 70 70 6f 72 74 73 20 66 69 76  ite supports fiv
129a0 65 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20  e date and time 
129b0 66 75 6e 63 74 69 6f 6e 73 20 61 73 20 66 6f 6c  functions as fol
129c0 6c 6f 77 73 3a 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a  lows:.</p>..<p>.
129d0 3c 6f 6c 3e 0a 3c 6c 69 3e 20 3c 62 3e 64 61 74  <ol>.<li> <b>dat
129e0 65 28 3c 2f 62 3e 3c 69 3e 74 69 6d 65 73 74 72  e(</b><i>timestr
129f0 69 6e 67 2c 20 6d 6f 64 69 66 69 65 72 2c 20 6d  ing, modifier, m
12a00 6f 64 69 66 69 65 72 2c 20 2e 2e 2e 3c 2f 69 3e  odifier, ...</i>
12a10 3c 62 3e 29 3c 2f 62 3e 20 3c 2f 6c 69 3e 0a 3c  <b>)</b> </li>.<
12a20 6c 69 3e 20 3c 62 3e 74 69 6d 65 28 3c 2f 62 3e  li> <b>time(</b>
12a30 3c 69 3e 74 69 6d 65 73 74 72 69 6e 67 2c 20 6d  <i>timestring, m
12a40 6f 64 69 66 69 65 72 2c 20 6d 6f 64 69 66 69 65  odifier, modifie
12a50 72 2c 20 2e 2e 2e 3c 2f 69 3e 3c 62 3e 29 3c 2f  r, ...</i><b>)</
12a60 62 3e 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 3c 62  b> </li>.<li> <b
12a70 3e 64 61 74 65 74 69 6d 65 28 3c 2f 62 3e 3c 69  >datetime(</b><i
12a80 3e 74 69 6d 65 73 74 72 69 6e 67 2c 20 6d 6f 64  >timestring, mod
12a90 69 66 69 65 72 2c 20 6d 6f 64 69 66 69 65 72 2c  ifier, modifier,
12aa0 20 2e 2e 2e 3c 2f 69 3e 3c 62 3e 29 3c 2f 62 3e   ...</i><b>)</b>
12ab0 20 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 3c 62 3e 6a   </li>.<li> <b>j
12ac0 75 6c 69 61 6e 64 61 79 28 3c 2f 62 3e 3c 69 3e  ulianday(</b><i>
12ad0 74 69 6d 65 73 74 72 69 6e 67 2c 20 6d 6f 64 69  timestring, modi
12ae0 66 69 65 72 2c 20 6d 6f 64 69 66 69 65 72 2c 20  fier, modifier, 
12af0 2e 2e 2e 3c 2f 69 3e 3c 62 3e 29 3c 2f 62 3e 20  ...</i><b>)</b> 
12b00 3c 2f 6c 69 3e 0a 3c 6c 69 3e 20 3c 62 3e 73 74  </li>.<li> <b>st
12b10 72 66 74 69 6d 65 28 3c 2f 62 3e 3c 69 3e 66 6f  rftime(</b><i>fo
12b20 72 6d 61 74 2c 20 74 69 6d 65 73 74 72 69 6e 67  rmat, timestring
12b30 2c 20 6d 6f 64 69 66 69 65 72 2c 20 6d 6f 64 69  , modifier, modi
12b40 66 69 65 72 2c 20 2e 2e 2e 3c 2f 69 3e 3c 62 3e  fier, ...</i><b>
12b50 29 3c 2f 62 3e 20 3c 2f 6c 69 3e 0a 3c 2f 6f 6c  )</b> </li>.</ol
12b60 3e 0a 0a 3c 70 3e 0a 41 6c 6c 20 66 69 76 65 20  >..<p>.All five 
12b70 66 75 6e 63 74 69 6f 6e 73 20 74 61 6b 65 20 61  functions take a
12b80 20 74 69 6d 65 20 73 74 72 69 6e 67 20 61 73 20   time string as 
12b90 61 6e 20 61 72 67 75 6d 65 6e 74 2e 20 54 68 65  an argument. The
12ba0 20 74 69 6d 65 20 73 74 72 69 6e 67 0a 69 73 20   time string.is 
12bb0 66 6f 6c 6c 6f 77 65 64 20 62 79 20 7a 65 72 6f  followed by zero
12bc0 20 6f 72 20 6d 6f 72 65 20 6d 6f 64 69 66 69 65   or more modifie
12bd0 72 73 2e 20 0a 54 68 65 20 73 74 72 66 74 69 6d  rs. .The strftim
12be0 65 28 29 20 66 75 6e 63 74 69 6f 6e 20 61 6c 73  e() function als
12bf0 6f 20 74 61 6b 65 73 20 61 20 66 6f 72 6d 61 74  o takes a format
12c00 20 73 74 72 69 6e 67 20 61 73 20 69 74 73 20 66   string as its f
12c10 69 72 73 74 20 61 72 67 75 6d 65 6e 74 2e 0a 3c  irst argument..<
12c20 2f 70 3e 0a 0a 3c 70 3e 0a 54 68 65 20 64 61 74  /p>..<p>.The dat
12c30 65 20 61 6e 64 20 74 69 6d 65 20 66 75 6e 63 74  e and time funct
12c40 69 6f 6e 73 20 75 73 65 20 61 20 73 75 62 73 65  ions use a subse
12c50 74 20 6f 66 0a 5b 68 74 74 70 3a 2f 2f 65 6e 2e  t of.[http://en.
12c60 77 69 6b 69 70 65 64 69 61 2e 6f 72 67 2f 77 69  wikipedia.org/wi
12c70 6b 69 2f 49 53 4f 5f 38 36 30 31 20 7c 20 49 53  ki/ISO_8601 | IS
12c80 30 2d 38 36 30 31 5d 20 64 61 74 65 20 61 6e 64  0-8601] date and
12c90 20 74 69 6d 65 0a 66 6f 72 6d 61 74 73 2e 0a 54   time.formats..T
12ca0 68 65 20 64 61 74 65 28 29 20 66 75 6e 63 74 69  he date() functi
12cb0 6f 6e 20 72 65 74 75 72 6e 73 20 74 68 65 20 64  on returns the d
12cc0 61 74 65 20 69 6e 20 74 68 69 73 20 66 6f 72 6d  ate in this form
12cd0 61 74 3a 20 59 59 59 59 2d 4d 4d 2d 44 44 2e 20  at: YYYY-MM-DD. 
12ce0 0a 54 68 65 20 74 69 6d 65 28 29 20 66 75 6e 63  .The time() func
12cf0 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 74 68 65  tion returns the
12d00 20 74 69 6d 65 20 61 73 20 48 48 3a 4d 4d 3a 53   time as HH:MM:S
12d10 53 2e 20 0a 54 68 65 20 64 61 74 65 74 69 6d 65  S. .The datetime
12d20 28 29 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75  () function retu
12d30 72 6e 73 20 22 59 59 59 59 2d 4d 4d 2d 44 44 20  rns "YYYY-MM-DD 
12d40 48 48 3a 4d 4d 3a 53 53 22 2e 20 0a 54 68 65 20  HH:MM:SS". .The 
12d50 6a 75 6c 69 61 6e 64 61 79 28 29 20 66 75 6e 63  julianday() func
12d60 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 74 68 65  tion returns the
12d70 20 0a 5b 68 74 74 70 3a 2f 2f 65 6e 2e 77 69 6b   .[http://en.wik
12d80 69 70 65 64 69 61 2e 6f 72 67 2f 77 69 6b 69 2f  ipedia.org/wiki/
12d90 4a 75 6c 69 61 6e 5f 64 61 79 20 7c 20 4a 75 6c  Julian_day | Jul
12da0 69 61 6e 20 64 61 79 5d 20 2d 20 74 68 65 0a 6e  ian day] - the.n
12db0 75 6d 62 65 72 20 6f 66 20 64 61 79 73 20 73 69  umber of days si
12dc0 6e 63 65 20 6e 6f 6f 6e 20 69 6e 20 47 72 65 65  nce noon in Gree
12dd0 6e 77 69 63 68 20 6f 6e 20 4e 6f 76 65 6d 62 65  nwich on Novembe
12de0 72 20 32 34 2c 20 34 37 31 34 20 42 2e 43 2e 20  r 24, 4714 B.C. 
12df0 0a 28 5b 68 74 74 70 3a 2f 2f 65 6e 2e 77 69 6b  .([http://en.wik
12e00 69 70 65 64 69 61 2e 6f 72 67 2f 77 69 6b 69 2f  ipedia.org/wiki/
12e10 50 72 6f 6c 65 70 74 69 63 5f 47 72 65 67 6f 72  Proleptic_Gregor
12e20 69 61 6e 5f 63 61 6c 65 6e 64 61 72 20 7c 20 50  ian_calendar | P
12e30 72 6f 6c 65 70 74 69 63 20 47 72 65 67 6f 72 69  roleptic Gregori
12e40 61 6e 20 63 61 6c 65 6e 64 61 72 5d 29 2e 20 0a  an calendar]). .
12e50 54 68 65 20 73 74 72 66 74 69 6d 65 28 29 20 72  The strftime() r
12e60 6f 75 74 69 6e 65 20 72 65 74 75 72 6e 73 20 74  outine returns t
12e70 68 65 20 64 61 74 65 20 66 6f 72 6d 61 74 74 65  he date formatte
12e80 64 20 61 63 63 6f 72 64 69 6e 67 20 74 6f 20 0a  d according to .
12e90 74 68 65 20 66 6f 72 6d 61 74 20 73 74 72 69 6e  the format strin
12ea0 67 20 73 70 65 63 69 66 69 65 64 20 61 73 20 74  g specified as t
12eb0 68 65 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e  he first argumen
12ec0 74 2e 0a 54 68 65 20 66 6f 72 6d 61 74 20 73 74  t..The format st
12ed0 72 69 6e 67 20 73 75 70 70 6f 72 74 73 20 74 68  ring supports th
12ee0 65 20 6d 6f 73 74 20 63 6f 6d 6d 6f 6e 20 73 75  e most common su
12ef0 62 73 74 69 74 75 74 69 6f 6e 73 20 66 6f 75 6e  bstitutions foun
12f00 64 20 69 6e 20 74 68 65 20 0a 5b 68 74 74 70 3a  d in the .[http:
12f10 2f 2f 6f 70 65 6e 67 72 6f 75 70 2e 6f 72 67 2f  //opengroup.org/
12f20 6f 6e 6c 69 6e 65 70 75 62 73 2f 30 30 37 39 30  onlinepubs/00790
12f30 38 37 39 39 2f 78 73 68 2f 73 74 72 66 74 69 6d  8799/xsh/strftim
12f40 65 2e 68 74 6d 6c 20 7c 20 73 74 72 66 74 69 6d  e.html | strftim
12f50 65 28 29 20 66 75 6e 63 74 69 6f 6e 5d 0a 66 72  e() function].fr
12f60 6f 6d 20 74 68 65 20 73 74 61 6e 64 61 72 64 20  om the standard 
12f70 43 20 6c 69 62 72 61 72 79 20 70 6c 75 73 20 74  C library plus t
12f80 77 6f 20 6e 65 77 20 73 75 62 73 74 69 74 75 74  wo new substitut
12f90 69 6f 6e 73 2c 20 25 66 20 61 6e 64 20 25 4a 2e  ions, %f and %J.
12fa0 0a 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 69  .The following i
12fb0 73 20 61 20 63 6f 6d 70 6c 65 74 65 20 6c 69 73  s a complete lis
12fc0 74 20 6f 66 20 76 61 6c 69 64 20 73 74 72 66 74  t of valid strft
12fd0 69 6d 65 28 29 20 73 75 62 73 74 69 74 75 74 69  ime() substituti
12fe0 6f 6e 73 3a 0a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63  ons:.</p>..<bloc
12ff0 6b 71 75 6f 74 65 3e 0a 3c 74 61 62 6c 65 20 62  kquote>.<table b
13000 6f 72 64 65 72 3d 22 30 22 20 63 65 6c 6c 70 61  order="0" cellpa
13010 64 64 69 6e 67 3d 22 30 22 20 63 65 6c 6c 73 70  dding="0" cellsp
13020 61 63 69 6e 67 3d 22 30 22 3e 0a 3c 74 72 3e 3c  acing="0">.<tr><
13030 74 64 3e 3c 74 64 20 77 69 64 74 68 3d 22 31 30  td><td width="10
13040 22 3e 3c 74 64 3e 3c 2f 74 72 3e 0a 0a 3c 74 72  "><td></tr>..<tr
13050 3e 3c 74 64 3e 20 25 64 20 3c 74 64 3e 3c 74 64  ><td> %d <td><td
13060 3e 20 64 61 79 20 6f 66 20 6d 6f 6e 74 68 3a 20  > day of month: 
13070 30 30 0a 3c 74 72 3e 3c 74 64 3e 20 25 66 20 3c  00.<tr><td> %f <
13080 74 64 3e 3c 74 64 3e 20 66 72 61 63 74 69 6f 6e  td><td> fraction
13090 61 6c 20 73 65 63 6f 6e 64 73 3a 20 53 53 2e 53  al seconds: SS.S
130a0 53 53 0a 3c 74 72 3e 3c 74 64 3e 20 25 48 20 3c  SS.<tr><td> %H <
130b0 74 64 3e 3c 74 64 3e 20 68 6f 75 72 3a 20 30 30  td><td> hour: 00
130c0 2d 32 34 20 0a 3c 74 72 3e 3c 74 64 3e 20 25 6a  -24 .<tr><td> %j
130d0 20 3c 74 64 3e 3c 74 64 3e 20 64 61 79 20 6f 66   <td><td> day of
130e0 20 79 65 61 72 3a 20 30 30 31 2d 33 36 36 0a 3c   year: 001-366.<
130f0 74 72 3e 3c 74 64 3e 20 25 4a 20 3c 74 64 3e 3c  tr><td> %J <td><
13100 74 64 3e 20 4a 75 6c 69 61 6e 20 64 61 79 20 6e  td> Julian day n
13110 75 6d 62 65 72 0a 3c 74 72 3e 3c 74 64 3e 20 25  umber.<tr><td> %
13120 6d 20 3c 74 64 3e 3c 74 64 3e 20 6d 6f 6e 74 68  m <td><td> month
13130 3a 20 30 31 2d 31 32 0a 3c 74 72 3e 3c 74 64 3e  : 01-12.<tr><td>
13140 20 25 4d 20 3c 74 64 3e 3c 74 64 3e 20 6d 69 6e   %M <td><td> min
13150 75 74 65 3a 20 30 30 2d 35 39 0a 3c 74 72 3e 3c  ute: 00-59.<tr><
13160 74 64 3e 20 25 73 20 3c 74 64 3e 3c 74 64 3e 20  td> %s <td><td> 
13170 73 65 63 6f 6e 64 73 20 73 69 6e 63 65 20 31 39  seconds since 19
13180 37 30 2d 30 31 2d 30 31 0a 3c 74 72 3e 3c 74 64  70-01-01.<tr><td
13190 3e 20 25 53 20 3c 74 64 3e 3c 74 64 3e 20 73 65  > %S <td><td> se
131a0 63 6f 6e 64 73 3a 20 30 30 2d 35 39 0a 3c 74 72  conds: 00-59.<tr
131b0 3e 3c 74 64 3e 20 25 77 20 3c 74 64 3e 3c 74 64  ><td> %w <td><td
131c0 3e 20 64 61 79 20 6f 66 20 77 65 65 6b 20 30 2d  > day of week 0-
131d0 36 20 77 69 74 68 20 73 75 6e 64 61 79 3d 3d 30  6 with sunday==0
131e0 0a 3c 74 72 3e 3c 74 64 3e 20 25 57 20 3c 74 64  .<tr><td> %W <td
131f0 3e 3c 74 64 3e 20 77 65 65 6b 20 6f 66 20 79 65  ><td> week of ye
13200 61 72 3a 20 30 30 2d 35 33 0a 3c 74 72 3e 3c 74  ar: 00-53.<tr><t
13210 64 3e 20 25 59 20 3c 74 64 3e 3c 74 64 3e 20 79  d> %Y <td><td> y
13220 65 61 72 3a 20 30 30 30 30 2d 39 39 39 39 0a 3c  ear: 0000-9999.<
13230 74 72 3e 3c 74 64 3e 20 25 25 20 3c 74 64 3e 3c  tr><td> %% <td><
13240 74 64 3e 20 25 0a 3c 2f 74 61 62 6c 65 3e 0a 3c  td> %.</table>.<
13250 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70  /blockquote>..<p
13260 3e 0a 4e 6f 74 69 63 65 20 74 68 61 74 20 61 6c  >.Notice that al
13270 6c 20 6f 74 68 65 72 20 64 61 74 65 20 61 6e 64  l other date and
13280 20 74 69 6d 65 20 66 75 6e 63 74 69 6f 6e 73 20   time functions 
13290 63 61 6e 20 62 65 20 65 78 70 72 65 73 73 65 64  can be expressed
132a0 0a 69 6e 20 74 65 72 6d 73 20 6f 66 20 73 74 72  .in terms of str
132b0 66 74 69 6d 65 28 29 3a 0a 3c 2f 70 3e 0a 0a 3c  ftime():.</p>..<
132c0 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 3c 74 61 62  blockquote>.<tab
132d0 6c 65 20 62 6f 72 64 65 72 3d 22 30 22 20 63 65  le border="0" ce
132e0 6c 6c 70 61 64 64 69 6e 67 3d 22 30 22 20 63 65  llpadding="0" ce
132f0 6c 6c 73 70 61 63 69 6e 67 3d 22 30 22 3e 0a 3c  llspacing="0">.<
13300 74 72 3e 3c 74 64 3e 3c 62 3e 46 75 6e 63 74 69  tr><td><b>Functi
13310 6f 6e 3c 2f 62 3e 3c 74 64 20 77 69 64 74 68 3d  on</b><td width=
13320 22 33 30 22 3e 3c 74 64 3e 3c 62 3e 45 71 75 69  "30"><td><b>Equi
13330 76 61 6c 65 6e 74 20 73 74 72 66 74 69 6d 65 28  valent strftime(
13340 29 3c 2f 62 3e 0a 3c 74 72 3e 3c 74 64 3e 20 20  )</b>.<tr><td>  
13350 20 64 61 74 65 28 2e 2e 2e 29 20 20 20 20 20 20   date(...)      
13360 3c 74 64 3e 3c 74 64 3e 20 20 73 74 72 66 74 69  <td><td>  strfti
13370 6d 65 28 27 25 59 2d 25 6d 2d 25 64 27 2c 20 2e  me('%Y-%m-%d', .
13380 2e 2e 29 0a 3c 74 72 3e 3c 74 64 3e 20 20 20 74  ..).<tr><td>   t
13390 69 6d 65 28 2e 2e 2e 29 20 20 20 20 20 20 3c 74  ime(...)      <t
133a0 64 3e 3c 74 64 3e 20 20 73 74 72 66 74 69 6d 65  d><td>  strftime
133b0 28 27 25 48 3a 25 4d 3a 25 53 27 2c 20 2e 2e 2e  ('%H:%M:%S', ...
133c0 29 0a 3c 74 72 3e 3c 74 64 3e 20 20 20 64 61 74  ).<tr><td>   dat
133d0 65 74 69 6d 65 28 2e 2e 2e 29 20 20 3c 74 64 3e  etime(...)  <td>
133e0 3c 74 64 3e 20 20 73 74 72 66 74 69 6d 65 28 27  <td>  strftime('
133f0 25 59 2d 25 6d 2d 25 64 20 25 48 3a 25 4d 3a 25  %Y-%m-%d %H:%M:%
13400 53 27 2c 20 2e 2e 2e 29 0a 3c 74 72 3e 3c 74 64  S', ...).<tr><td
13410 3e 20 20 20 6a 75 6c 69 61 6e 64 61 79 28 2e 2e  >   julianday(..
13420 2e 29 20 3c 74 64 3e 3c 74 64 3e 20 20 73 74 72  .) <td><td>  str
13430 66 74 69 6d 65 28 27 25 4a 27 2c 20 2e 2e 2e 29  ftime('%J', ...)
13440 0a 3c 2f 74 61 62 6c 65 3e 0a 3c 2f 62 6c 6f 63  .</table>.</bloc
13450 6b 71 75 6f 74 65 3e 0a 0a 3c 70 3e 0a 54 68 65  kquote>..<p>.The
13460 20 6f 6e 6c 79 20 72 65 61 73 6f 6e 73 20 66 6f   only reasons fo
13470 72 20 70 72 6f 76 69 64 69 6e 67 20 66 75 6e 63  r providing func
13480 74 69 6f 6e 73 20 6f 74 68 65 72 20 74 68 61 6e  tions other than
13490 20 73 74 72 66 74 69 6d 65 28 29 20 69 73 0a 66   strftime() is.f
134a0 6f 72 20 63 6f 6e 76 65 6e 69 65 6e 63 65 20 61  or convenience a
134b0 6e 64 20 66 6f 72 20 65 66 66 69 63 69 65 6e 63  nd for efficienc
134c0 79 2e 0a 3c 2f 70 3e 0a 0a 3c 68 33 3e 54 69 6d  y..</p>..<h3>Tim
134d0 65 20 53 74 72 69 6e 67 73 3c 2f 68 33 3e 0a 0a  e Strings</h3>..
134e0 3c 70 3e 41 20 74 69 6d 65 20 73 74 72 69 6e 67  <p>A time string
134f0 20 63 61 6e 20 62 65 20 69 6e 20 61 6e 79 20 6f   can be in any o
13500 66 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20  f the following 
13510 66 6f 72 6d 61 74 73 3a 3c 2f 70 3e 0a 0a 3c 6f  formats:</p>..<o
13520 6c 3e 0a 3c 6c 69 3e 20 3c 69 3e 59 59 59 59 2d  l>.<li> <i>YYYY-
13530 4d 4d 2d 44 44 3c 2f 69 3e 0a 3c 6c 69 3e 20 3c  MM-DD</i>.<li> <
13540 69 3e 59 59 59 59 2d 4d 4d 2d 44 44 20 48 48 3a  i>YYYY-MM-DD HH:
13550 4d 4d 3c 2f 69 3e 0a 3c 6c 69 3e 20 3c 69 3e 59  MM</i>.<li> <i>Y
13560 59 59 59 2d 4d 4d 2d 44 44 20 48 48 3a 4d 4d 3a  YYY-MM-DD HH:MM:
13570 53 53 3c 2f 69 3e 0a 3c 6c 69 3e 20 3c 69 3e 59  SS</i>.<li> <i>Y
13580 59 59 59 2d 4d 4d 2d 44 44 20 48 48 3a 4d 4d 3a  YYY-MM-DD HH:MM:
13590 53 53 2e 53 53 53 3c 2f 69 3e 0a 3c 6c 69 3e 20  SS.SSS</i>.<li> 
135a0 3c 69 3e 59 59 59 59 2d 4d 4d 2d 44 44 3c 2f 69  <i>YYYY-MM-DD</i
135b0 3e 3c 62 3e 54 3c 2f 62 3e 3c 69 3e 48 48 3a 4d  ><b>T</b><i>HH:M
135c0 4d 3c 2f 69 3e 0a 3c 6c 69 3e 20 3c 69 3e 59 59  M</i>.<li> <i>YY
135d0 59 59 2d 4d 4d 2d 44 44 3c 2f 69 3e 3c 62 3e 54  YY-MM-DD</i><b>T
135e0 3c 2f 62 3e 3c 69 3e 48 48 3a 4d 4d 3a 53 53 3c  </b><i>HH:MM:SS<
135f0 2f 69 3e 0a 3c 6c 69 3e 20 3c 69 3e 59 59 59 59  /i>.<li> <i>YYYY
13600 2d 4d 4d 2d 44 44 3c 2f 69 3e 3c 62 3e 54 3c 2f  -MM-DD</i><b>T</
13610 62 3e 3c 69 3e 48 48 3a 4d 4d 3a 53 53 2e 53 53  b><i>HH:MM:SS.SS
13620 53 3c 2f 69 3e 0a 3c 6c 69 3e 20 3c 69 3e 48 48  S</i>.<li> <i>HH
13630 3a 4d 4d 3c 2f 69 3e 0a 3c 6c 69 3e 20 3c 69 3e  :MM</i>.<li> <i>
13640 48 48 3a 4d 4d 3a 53 53 3c 2f 69 3e 0a 3c 6c 69  HH:MM:SS</i>.<li
13650 3e 20 3c 69 3e 48 48 3a 4d 4d 3a 53 53 2e 53 53  > <i>HH:MM:SS.SS
13660 53 3c 2f 69 3e 0a 3c 6c 69 3e 20 3c 62 3e 6e 6f  S</i>.<li> <b>no
13670 77 3c 2f 62 3e 0a 3c 6c 69 3e 20 3c 69 3e 44 44  w</b>.<li> <i>DD
13680 44 44 44 44 44 44 44 44 3c 2f 69 3e 0a 3c 2f 6f  DDDDDDDD</i>.</o
13690 6c 3e 0a 0a 3c 70 3e 0a 49 6e 20 66 6f 72 6d 61  l>..<p>.In forma
136a0 74 73 20 35 20 74 68 72 6f 75 67 68 20 37 2c 20  ts 5 through 7, 
136b0 74 68 65 20 22 54 22 20 69 73 20 61 20 6c 69 74  the "T" is a lit
136c0 65 72 61 6c 20 63 68 61 72 61 63 74 65 72 20 73  eral character s
136d0 65 70 61 72 61 74 69 6e 67 20 0a 74 68 65 20 64  eparating .the d
136e0 61 74 65 20 61 6e 64 20 74 68 65 20 74 69 6d 65  ate and the time
136f0 2c 20 61 73 20 72 65 71 75 69 72 65 64 20 62 79  , as required by
13700 20 0a 5b 68 74 74 70 3a 2f 2f 77 77 77 2e 77 33   .[http://www.w3
13710 63 2e 6f 72 67 2f 54 52 2f 4e 4f 54 45 2d 64 61  c.org/TR/NOTE-da
13720 74 65 74 69 6d 65 20 7c 20 49 53 4f 2d 38 36 30  tetime | ISO-860
13730 31 5d 2e 20 0a 46 6f 72 6d 61 74 73 20 38 20 74  1]. .Formats 8 t
13740 68 72 6f 75 67 68 20 31 30 20 74 68 61 74 20 73  hrough 10 that s
13750 70 65 63 69 66 79 20 6f 6e 6c 79 20 61 20 74 69  pecify only a ti
13760 6d 65 20 61 73 73 75 6d 65 20 61 20 64 61 74 65  me assume a date
13770 20 6f 66 20 0a 32 30 30 30 2d 30 31 2d 30 31 2e   of .2000-01-01.
13780 20 46 6f 72 6d 61 74 20 31 31 2c 20 74 68 65 20   Format 11, the 
13790 73 74 72 69 6e 67 20 27 6e 6f 77 27 2c 20 69 73  string 'now', is
137a0 20 63 6f 6e 76 65 72 74 65 64 20 69 6e 74 6f 20   converted into 
137b0 74 68 65 20 0a 63 75 72 72 65 6e 74 20 64 61 74  the .current dat
137c0 65 20 61 6e 64 20 74 69 6d 65 20 61 73 20 6f 62  e and time as ob
137d0 74 61 69 6e 65 64 20 66 72 6f 6d 20 74 68 65 20  tained from the 
137e0 78 43 75 72 72 65 6e 74 54 69 6d 65 20 6d 65 74  xCurrentTime met
137f0 68 6f 64 0a 6f 66 20 74 68 65 20 5b 73 71 6c 69  hod.of the [sqli
13800 74 65 33 5f 76 66 73 5d 20 6f 62 6a 65 63 74 20  te3_vfs] object 
13810 69 6e 20 75 73 65 2e 0a 5b 68 74 74 70 3a 2f 2f  in use..[http://
13820 65 6e 2e 77 69 6b 69 70 65 64 69 61 2e 6f 72 67  en.wikipedia.org
13830 2f 77 69 6b 69 2f 43 6f 6f 72 64 69 6e 61 74 65  /wiki/Coordinate
13840 64 5f 55 6e 69 76 65 72 73 61 6c 5f 54 69 6d 65  d_Universal_Time
13850 20 7c 20 55 6e 69 76 65 72 73 61 6c 20 43 6f 6f   | Universal Coo
13860 72 64 69 6e 61 74 65 64 20 54 69 6d 65 20 28 55  rdinated Time (U
13870 54 43 29 5d 20 69 73 20 75 73 65 64 2e 20 0a 46  TC)] is used. .F
13880 6f 72 6d 61 74 20 31 32 20 69 73 20 74 68 65 20  ormat 12 is the 
13890 0a 5b 68 74 74 70 3a 2f 2f 65 6e 2e 77 69 6b 69  .[http://en.wiki
138a0 70 65 64 69 61 2e 6f 72 67 2f 77 69 6b 69 2f 4a  pedia.org/wiki/J
138b0 75 6c 69 61 6e 5f 64 61 79 20 7c 20 4a 75 6c 69  ulian_day | Juli
138c0 61 6e 20 64 61 79 20 6e 75 6d 62 65 72 5d 0a 65  an day number].e
138d0 78 70 72 65 73 73 65 64 20 61 73 20 61 20 66 6c  xpressed as a fl
138e0 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20 76 61 6c  oating point val
138f0 75 65 2e 0a 3c 2f 70 3e 0a 0a 3c 68 33 3e 4d 6f  ue..</p>..<h3>Mo
13900 64 69 66 69 65 72 73 3c 2f 68 33 3e 0a 0a 3c 70  difiers</h3>..<p
13910 3e 54 68 65 20 74 69 6d 65 20 73 74 72 69 6e 67  >The time string
13920 20 63 61 6e 20 62 65 20 66 6f 6c 6c 6f 77 65 64   can be followed
13930 20 62 79 20 7a 65 72 6f 20 6f 72 20 6d 6f 72 65   by zero or more
13940 20 6d 6f 64 69 66 69 65 72 73 20 74 68 61 74 20   modifiers that 
13950 0a 61 6c 74 65 72 20 74 68 65 20 64 61 74 65 20  .alter the date 
13960 61 6e 64 20 74 69 6d 65 20 73 74 72 69 6e 67 2e  and time string.
13970 20 20 45 61 63 68 20 6d 6f 64 69 66 69 65 72 0a    Each modifier.
13980 69 73 20 61 20 74 72 61 6e 73 66 6f 72 6d 61 74  is a transformat
13990 69 6f 6e 20 74 68 61 74 20 69 73 20 61 70 70 6c  ion that is appl
139a0 69 65 64 20 74 6f 20 74 68 65 20 74 69 6d 65 20  ied to the time 
139b0 73 74 72 69 6e 67 20 74 6f 20 69 74 73 20 6c 65  string to its le
139c0 66 74 2e 0a 4d 6f 64 69 66 69 65 72 73 20 61 72  ft..Modifiers ar
139d0 65 20 61 70 70 6c 69 65 64 20 66 72 6f 6d 20 6c  e applied from l
139e0 65 66 74 20 74 6f 20 72 69 67 68 74 3b 20 6f 72  eft to right; or
139f0 64 65 72 20 69 73 20 69 6d 70 6f 72 74 61 6e 74  der is important
13a00 2e 0a 54 68 65 20 61 76 61 69 6c 61 62 6c 65 20  ..The available 
13a10 6d 6f 64 69 66 69 65 72 73 20 61 72 65 20 61 73  modifiers are as
13a20 20 66 6f 6c 6c 6f 77 73 2e 3c 2f 70 3e 0a 0a 3c   follows.</p>..<
13a30 6f 6c 3e 0a 3c 6c 69 3e 20 4e 4e 4e 20 64 61 79  ol>.<li> NNN day
13a40 73 0a 3c 6c 69 3e 20 4e 4e 4e 20 68 6f 75 72 73  s.<li> NNN hours
13a50 0a 3c 6c 69 3e 20 4e 4e 4e 20 6d 69 6e 75 74 65  .<li> NNN minute
13a60 73 0a 3c 6c 69 3e 20 4e 4e 4e 2e 4e 4e 4e 4e 20  s.<li> NNN.NNNN 
13a70 73 65 63 6f 6e 64 73 0a 3c 6c 69 3e 20 4e 4e 4e  seconds.<li> NNN
13a80 20 6d 6f 6e 74 68 73 0a 3c 6c 69 3e 20 4e 4e 4e   months.<li> NNN
13a90 20 79 65 61 72 73 0a 3c 6c 69 3e 20 73 74 61 72   years.<li> star
13aa0 74 20 6f 66 20 6d 6f 6e 74 68 0a 3c 6c 69 3e 20  t of month.<li> 
13ab0 73 74 61 72 74 20 6f 66 20 79 65 61 72 0a 3c 6c  start of year.<l
13ac0 69 3e 20 73 74 61 72 74 20 6f 66 20 64 61 79 0a  i> start of day.
13ad0 3c 6c 69 3e 20 77 65 65 6b 64 61 79 20 4e 0a 3c  <li> weekday N.<
13ae0 6c 69 3e 20 75 6e 69 78 65 70 6f 63 68 0a 3c 6c  li> unixepoch.<l
13af0 69 3e 20 6c 6f 63 61 6c 74 69 6d 65 0a 3c 6c 69  i> localtime.<li
13b00 3e 20 75 74 63 20 0a 3c 2f 6f 6c 3e 0a 0a 3c 70  > utc .</ol>..<p
13b10 3e 54 68 65 20 66 69 72 73 74 20 73 69 78 20 6d  >The first six m
13b20 6f 64 69 66 69 65 72 73 20 28 31 20 74 68 72 6f  odifiers (1 thro
13b30 75 67 68 20 36 29 20 0a 73 69 6d 70 6c 79 20 61  ugh 6) .simply a
13b40 64 64 20 74 68 65 20 73 70 65 63 69 66 69 65 64  dd the specified
13b50 20 61 6d 6f 75 6e 74 20 6f 66 20 74 69 6d 65 20   amount of time 
13b60 74 6f 20 74 68 65 20 64 61 74 65 20 0a 73 70 65  to the date .spe
13b70 63 69 66 69 65 64 20 62 79 20 74 68 65 20 70 72  cified by the pr
13b80 65 63 65 64 69 6e 67 20 74 69 6d 65 73 74 72 69  eceding timestri
13b90 6e 67 2e 0a 4e 6f 74 65 20 74 68 61 74 20 22 26  ng..Note that "&
13ba0 70 6c 75 73 6d 6e 3b 4e 4e 4e 20 6d 6f 6e 74 68  plusmn;NNN month
13bb0 73 22 20 77 6f 72 6b 73 20 62 79 20 72 65 6e 64  s" works by rend
13bc0 65 72 69 6e 67 20 74 68 65 20 6f 72 69 67 69 6e  ering the origin
13bd0 61 6c 20 64 61 74 65 20 69 6e 74 6f 0a 74 68 65  al date into.the
13be0 20 59 59 59 59 2d 4d 4d 2d 44 44 20 66 6f 72 6d   YYYY-MM-DD form
13bf0 61 74 2c 20 61 64 64 69 6e 67 20 74 68 65 20 26  at, adding the &
13c00 70 6c 75 73 6d 6e 3b 4e 4e 4e 20 74 6f 20 74 68  plusmn;NNN to th
13c10 65 20 4d 4d 20 6d 6f 6e 74 68 20 76 61 6c 75 65  e MM month value
13c20 2c 20 74 68 65 6e 0a 6e 6f 72 6d 61 6c 69 7a 69  , then.normalizi
13c30 6e 67 20 74 68 65 20 72 65 73 75 6c 74 2e 20 20  ng the result.  
13c40 54 68 75 73 2c 20 66 6f 72 20 65 78 61 6d 70 6c  Thus, for exampl
13c50 65 2c 20 74 68 65 20 64 61 74 61 20 32 30 30 31  e, the data 2001
13c60 2d 30 33 2d 33 31 20 6d 6f 64 69 66 69 65 64 0a  -03-31 modified.
13c70 62 79 20 27 2b 31 20 6d 6f 6e 74 68 27 20 69 6e  by '+1 month' in
13c80 69 74 69 61 6c 6c 79 20 79 69 65 6c 64 73 20 32  itially yields 2
13c90 30 30 31 2d 30 34 2d 33 31 2c 20 62 75 74 20 41  001-04-31, but A
13ca0 70 72 69 6c 20 6f 6e 6c 79 20 68 61 73 20 33 30  pril only has 30
13cb0 20 64 61 79 73 0a 73 6f 20 74 68 65 20 64 61 74   days.so the dat
13cc0 65 20 69 73 20 6e 6f 72 6d 61 6c 69 7a 65 64 20  e is normalized 
13cd0 74 6f 20 32 30 30 31 2d 30 35 2d 30 31 2e 20 20  to 2001-05-01.  
13ce0 41 20 73 69 6d 69 6c 61 72 20 65 66 66 65 63 74  A similar effect
13cf0 20 6f 63 63 75 72 73 20 77 68 65 6e 0a 74 68 65   occurs when.the
13d00 20 6f 72 69 67 69 6e 61 6c 20 64 61 74 65 20 69   original date i
13d10 73 20 46 65 62 72 75 61 72 79 20 32 39 20 6f 66  s February 29 of
13d20 20 61 20 6c 65 61 70 79 65 61 72 20 61 6e 64 20   a leapyear and 
13d30 74 68 65 20 6d 6f 64 69 66 69 65 72 20 69 73 0a  the modifier is.
13d40 26 70 6c 75 73 6d 6e 3b 4e 20 79 65 61 72 73 20  &plusmn;N years 
13d50 77 68 65 72 65 20 4e 20 69 73 20 6e 6f 74 20 61  where N is not a
13d60 20 6d 75 6c 74 69 70 6c 65 20 6f 66 20 66 6f 75   multiple of fou
13d70 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 22  r.</p>..<p>The "
13d80 73 74 61 72 74 20 6f 66 22 20 6d 6f 64 69 66 69  start of" modifi
13d90 65 72 73 20 28 37 20 74 68 72 6f 75 67 68 20 39  ers (7 through 9
13da0 29 20 73 68 69 66 74 20 74 68 65 20 64 61 74 65  ) shift the date
13db0 20 62 61 63 6b 77 61 72 64 73 20 0a 74 6f 20 74   backwards .to t
13dc0 68 65 20 62 65 67 69 6e 6e 69 6e 67 20 6f 66 20  he beginning of 
13dd0 74 68 65 20 63 75 72 72 65 6e 74 20 6d 6f 6e 74  the current mont
13de0 68 2c 20 79 65 61 72 20 6f 72 20 64 61 79 2e 3c  h, year or day.<
13df0 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 22 77 65 65  /p>..<p>The "wee
13e00 6b 64 61 79 22 20 6d 6f 64 69 66 69 65 72 20 61  kday" modifier a
13e10 64 76 61 6e 63 65 73 20 74 68 65 20 64 61 74 65  dvances the date
13e20 20 66 6f 72 77 61 72 64 20 74 6f 20 74 68 65 20   forward to the 
13e30 6e 65 78 74 20 64 61 74 65 20 0a 77 68 65 72 65  next date .where
13e40 20 74 68 65 20 77 65 65 6b 64 61 79 20 6e 75 6d   the weekday num
13e50 62 65 72 20 69 73 20 4e 2e 20 53 75 6e 64 61 79  ber is N. Sunday
13e60 20 69 73 20 30 2c 20 4d 6f 6e 64 61 79 20 69 73   is 0, Monday is
13e70 20 31 2c 20 61 6e 64 20 73 6f 20 66 6f 72 74 68   1, and so forth
13e80 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 22 75  .</p>..<p>The "u
13e90 6e 69 78 65 70 6f 63 68 22 20 6d 6f 64 69 66 69  nixepoch" modifi
13ea0 65 72 20 28 31 31 29 20 6f 6e 6c 79 20 77 6f 72  er (11) only wor
13eb0 6b 73 20 69 66 20 69 74 20 69 6d 6d 65 64 69 61  ks if it immedia
13ec0 74 65 6c 79 20 66 6f 6c 6c 6f 77 73 20 0a 61 20  tely follows .a 
13ed0 74 69 6d 65 73 74 72 69 6e 67 20 69 6e 20 74 68  timestring in th
13ee0 65 20 44 44 44 44 44 44 44 44 44 44 20 66 6f 72  e DDDDDDDDDD for
13ef0 6d 61 74 2e 20 0a 54 68 69 73 20 6d 6f 64 69 66  mat. .This modif
13f00 69 65 72 20 63 61 75 73 65 73 20 74 68 65 20 44  ier causes the D
13f10 44 44 44 44 44 44 44 44 44 20 74 6f 20 62 65 20  DDDDDDDDD to be 
13f20 69 6e 74 65 72 70 72 65 74 65 64 20 6e 6f 74 20  interpreted not 
13f30 0a 61 73 20 61 20 4a 75 6c 69 61 6e 20 64 61 79  .as a Julian day
13f40 20 6e 75 6d 62 65 72 20 61 73 20 69 74 20 6e 6f   number as it no
13f50 72 6d 61 6c 6c 79 20 77 6f 75 6c 64 20 62 65 2c  rmally would be,
13f60 20 62 75 74 20 61 73 0a 5b 68 74 74 70 3a 2f 2f   but as.[http://
13f70 65 6e 2e 77 69 6b 69 70 65 64 69 61 2e 6f 72 67  en.wikipedia.org
13f80 2f 77 69 6b 69 2f 55 6e 69 78 5f 74 69 6d 65 20  /wiki/Unix_time 
13f90 7c 20 55 6e 69 78 20 54 69 6d 65 5d 20 2d 20 74  | Unix Time] - t
13fa0 68 65 20 0a 6e 75 6d 62 65 72 20 6f 66 20 73 65  he .number of se
13fb0 63 6f 6e 64 73 20 73 69 6e 63 65 20 31 39 37 30  conds since 1970
13fc0 2e 20 20 49 66 20 74 68 65 20 22 75 6e 69 78 65  .  If the "unixe
13fd0 70 6f 63 68 22 20 6d 6f 64 69 66 69 65 72 20 64  poch" modifier d
13fe0 6f 65 73 20 6e 6f 74 0a 66 6f 6c 6c 6f 77 20 61  oes not.follow a
13ff0 20 74 69 6d 65 73 74 72 69 6e 67 20 6f 66 20 74   timestring of t
14000 68 65 20 66 6f 72 6d 20 44 44 44 44 44 44 44 44  he form DDDDDDDD
14010 44 44 20 77 68 69 63 68 20 65 78 70 72 65 73 73  DD which express
14020 65 73 20 74 68 65 20 6e 75 6d 62 65 72 0a 6f 66  es the number.of
14030 20 73 65 63 6f 6e 64 73 20 73 69 6e 63 65 20 31   seconds since 1
14040 39 37 30 20 6f 72 20 69 66 20 6f 74 68 65 72 20  970 or if other 
14050 6d 6f 64 69 66 69 65 72 73 0a 73 65 70 61 72 61  modifiers.separa
14060 74 65 20 74 68 65 20 22 75 6e 69 78 65 70 6f 63  te the "unixepoc
14070 68 22 20 6d 6f 64 69 66 69 65 72 20 66 72 6f 6d  h" modifier from
14080 20 70 72 69 6f 72 20 44 44 44 44 44 44 44 44 44   prior DDDDDDDDD
14090 44 20 74 68 65 6e 20 74 68 65 0a 62 65 68 61 76  D then the.behav
140a0 69 6f 72 20 69 73 20 75 6e 64 65 66 69 6e 65 64  ior is undefined
140b0 2e 0a 44 75 65 20 74 6f 20 70 72 65 63 69 73 69  ..Due to precisi
140c0 6f 6e 20 6c 69 6d 69 74 61 74 69 6f 6e 73 20 69  on limitations i
140d0 6d 70 6f 73 65 64 20 62 79 20 74 68 65 20 69 6d  mposed by the im
140e0 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 75 73  plementations us
140f0 65 0a 6f 66 20 36 34 2d 62 69 74 20 69 6e 74 65  e.of 64-bit inte
14100 67 65 72 73 2c 20 74 68 65 20 22 75 6e 69 78 65  gers, the "unixe
14110 70 6f 63 68 22 20 6d 6f 64 69 66 69 65 72 20 6f  poch" modifier o
14120 6e 6c 79 20 77 6f 72 6b 73 20 66 6f 72 0a 64 61  nly works for.da
14130 74 65 73 20 62 65 74 77 65 65 6e 20 30 30 30 30  tes between 0000
14140 2d 30 31 2d 30 31 20 30 30 3a 30 30 3a 30 30 20  -01-01 00:00:00 
14150 61 6e 64 20 35 33 35 32 2d 31 31 2d 30 31 20 31  and 5352-11-01 1
14160 30 3a 35 32 3a 34 37 20 28 75 6e 69 78 20 74 69  0:52:47 (unix ti
14170 6d 65 73 0a 6f 66 20 2d 36 32 31 36 37 32 31 39  mes.of -62167219
14180 32 30 30 20 74 68 72 6f 75 67 68 20 31 30 36 37  200 through 1067
14190 35 31 39 39 31 36 37 29 2e 3c 2f 70 3e 0a 0a 3c  5199167).</p>..<
141a0 70 3e 54 68 65 20 22 6c 6f 63 61 6c 74 69 6d 65  p>The "localtime
141b0 22 20 6d 6f 64 69 66 69 65 72 20 28 31 32 29 20  " modifier (12) 
141c0 61 73 73 75 6d 65 73 20 74 68 65 20 74 69 6d 65  assumes the time
141d0 20 73 74 72 69 6e 67 20 74 6f 20 69 74 73 20 6c   string to its l
141e0 65 66 74 20 69 73 20 69 6e 0a 55 6e 69 76 65 72  eft is in.Univer
141f0 73 61 6c 20 43 6f 6f 72 64 69 6e 61 74 65 64 20  sal Coordinated 
14200 54 69 6d 65 20 28 55 54 43 29 20 61 6e 64 20 61  Time (UTC) and a
14210 64 6a 75 73 74 73 20 74 68 65 20 74 69 6d 65 0a  djusts the time.
14220 73 74 72 69 6e 67 20 73 6f 20 74 68 61 74 20 69  string so that i
14230 74 20 64 69 73 70 6c 61 79 73 20 6c 6f 63 61 6c  t displays local
14240 74 69 6d 65 2e 20 20 49 66 20 22 6c 6f 63 61 6c  time.  If "local
14250 74 69 6d 65 22 0a 66 6f 6c 6c 6f 77 73 20 61 20  time".follows a 
14260 74 69 6d 65 20 74 68 61 74 20 69 73 20 6e 6f 74  time that is not
14270 20 55 54 43 2c 20 74 68 65 6e 20 74 68 65 20 62   UTC, then the b
14280 65 68 61 76 69 6f 72 20 69 73 20 75 6e 64 65 66  ehavior is undef
14290 69 6e 65 64 2e 0a 54 68 65 20 22 75 74 63 22 20  ined..The "utc" 
142a0 69 73 20 74 68 65 20 6f 70 70 6f 73 69 74 65 20  is the opposite 
142b0 6f 66 20 22 6c 6f 63 61 6c 74 69 6d 65 22 2e 20  of "localtime". 
142c0 20 22 75 74 63 22 20 61 73 73 75 6d 65 73 20 74   "utc" assumes t
142d0 68 61 74 20 74 68 65 20 73 74 72 69 6e 67 0a 74  hat the string.t
142e0 6f 20 69 74 73 20 6c 65 66 74 20 69 73 20 69 6e  o its left is in
142f0 20 74 68 65 20 6c 6f 63 61 6c 20 74 69 6d 65 7a   the local timez
14300 6f 6e 65 20 61 6e 64 20 61 64 6a 75 73 74 73 20  one and adjusts 
14310 74 68 61 74 20 73 74 72 69 6e 67 20 74 6f 20 62  that string to b
14320 65 20 69 6e 20 55 54 43 2e 0a 49 66 20 74 68 65  e in UTC..If the
14330 20 70 72 69 6f 72 20 73 74 72 69 6e 67 20 69 73   prior string is
14340 20 6e 6f 74 20 69 6e 20 6c 6f 63 61 6c 74 69 6d   not in localtim
14350 65 2c 20 74 68 65 6e 20 74 68 65 20 72 65 73 75  e, then the resu
14360 6c 74 20 6f 66 20 22 75 74 63 22 20 69 73 0a 75  lt of "utc" is.u
14370 6e 64 65 66 69 6e 65 64 2e 3c 2f 70 3e 0a 0a 3c  ndefined.</p>..<
14380 68 33 3e 45 78 61 6d 70 6c 65 73 3c 2f 68 33 3e  h3>Examples</h3>
14390 0a 0a 3c 70 3e 43 6f 6d 70 75 74 65 20 74 68 65  ..<p>Compute the
143a0 20 63 75 72 72 65 6e 74 20 64 61 74 65 2e 3c 70   current date.<p
143b0 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 53  >..<blockquote>S
143c0 45 4c 45 43 54 20 64 61 74 65 28 27 6e 6f 77 27  ELECT date('now'
143d0 29 3b 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a  );</blockquote>.
143e0 0a 3c 70 3e 43 6f 6d 70 75 74 65 20 74 68 65 20  .<p>Compute the 
143f0 6c 61 73 74 20 64 61 79 20 6f 66 20 74 68 65 20  last day of the 
14400 63 75 72 72 65 6e 74 20 6d 6f 6e 74 68 2e 3c 2f  current month.</
14410 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e  p>..<blockquote>
14420 53 45 4c 45 43 54 20 64 61 74 65 28 27 6e 6f 77  SELECT date('now
14430 27 2c 27 73 74 61 72 74 20 6f 66 20 6d 6f 6e 74  ','start of mont
14440 68 27 2c 27 2b 31 20 6d 6f 6e 74 68 27 2c 27 2d  h','+1 month','-
14450 31 20 64 61 79 27 29 3b 0a 3c 2f 62 6c 6f 63 6b  1 day');.</block
14460 71 75 6f 74 65 3e 0a 0a 3c 70 3e 43 6f 6d 70 75  quote>..<p>Compu
14470 74 65 20 74 68 65 20 64 61 74 65 20 61 6e 64 20  te the date and 
14480 74 69 6d 65 20 67 69 76 65 6e 20 61 20 75 6e 69  time given a uni
14490 78 20 74 69 6d 65 73 74 61 6d 70 20 31 30 39 32  x timestamp 1092
144a0 39 34 31 34 36 36 2e 3c 2f 70 3e 0a 0a 3c 62 6c  941466.</p>..<bl
144b0 6f 63 6b 71 75 6f 74 65 3e 0a 20 20 20 20 53 45  ockquote>.    SE
144c0 4c 45 43 54 20 64 61 74 65 74 69 6d 65 28 31 30  LECT datetime(10
144d0 39 32 39 34 31 34 36 36 2c 20 27 75 6e 69 78 65  92941466, 'unixe
144e0 70 6f 63 68 27 29 3b 0a 3c 2f 62 6c 6f 63 6b 71  poch');.</blockq
144f0 75 6f 74 65 3e 0a 0a 3c 70 3e 43 6f 6d 70 75 74  uote>..<p>Comput
14500 65 20 74 68 65 20 64 61 74 65 20 61 6e 64 20 74  e the date and t
14510 69 6d 65 20 67 69 76 65 6e 20 61 20 75 6e 69 78  ime given a unix
14520 20 74 69 6d 65 73 74 61 6d 70 20 31 30 39 32 39   timestamp 10929
14530 34 31 34 36 36 2c 20 61 6e 64 20 0a 63 6f 6d 70  41466, and .comp
14540 65 6e 73 61 74 65 20 66 6f 72 20 79 6f 75 72 20  ensate for your 
14550 6c 6f 63 61 6c 20 74 69 6d 65 7a 6f 6e 65 2e 3c  local timezone.<
14560 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65  /p>..<blockquote
14570 3e 0a 20 20 53 45 4c 45 43 54 20 64 61 74 65 74  >.  SELECT datet
14580 69 6d 65 28 31 30 39 32 39 34 31 34 36 36 2c 20  ime(1092941466, 
14590 27 75 6e 69 78 65 70 6f 63 68 27 2c 20 27 6c 6f  'unixepoch', 'lo
145a0 63 61 6c 74 69 6d 65 27 29 3b 0a 3c 2f 62 6c 6f  caltime');.</blo
145b0 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70 3e 43 6f 6d  ckquote>..<p>Com
145c0 70 75 74 65 20 74 68 65 20 63 75 72 72 65 6e 74  pute the current
145d0 20 75 6e 69 78 20 74 69 6d 65 73 74 61 6d 70 2e   unix timestamp.
145e0 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74  </p>..<blockquot
145f0 65 3e 0a 20 20 53 45 4c 45 43 54 20 73 74 72 66  e>.  SELECT strf
14600 74 69 6d 65 28 27 25 73 27 2c 27 6e 6f 77 27 29  time('%s','now')
14610 3b 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a  ;.</blockquote>.
14620 0a 3c 70 3e 43 6f 6d 70 75 74 65 20 74 68 65 20  .<p>Compute the 
14630 6e 75 6d 62 65 72 20 6f 66 20 64 61 79 73 20 73  number of days s
14640 69 6e 63 65 20 74 68 65 20 73 69 67 6e 69 6e 67  ince the signing
14650 20 6f 66 20 74 68 65 20 55 53 20 44 65 63 6c 61   of the US Decla
14660 72 61 74 69 6f 6e 0a 6f 66 20 49 6e 64 65 70 65  ration.of Indepe
14670 6e 64 65 6e 74 2e 3c 2f 70 3e 0a 0a 3c 62 6c 6f  ndent.</p>..<blo
14680 63 6b 71 75 6f 74 65 3e 0a 20 20 53 45 4c 45 43  ckquote>.  SELEC
14690 54 20 6a 75 6c 69 61 6e 64 61 79 28 27 6e 6f 77  T julianday('now
146a0 27 29 20 2d 20 6a 75 6c 69 61 6e 64 61 79 28 27  ') - julianday('
146b0 31 37 37 36 2d 30 37 2d 30 34 27 29 3b 0a 3c 2f  1776-07-04');.</
146c0 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70 3e  blockquote>..<p>
146d0 43 6f 6d 70 75 74 65 20 74 68 65 20 6e 75 6d 62  Compute the numb
146e0 65 72 20 6f 66 20 73 65 63 6f 6e 64 73 20 73 69  er of seconds si
146f0 6e 63 65 20 61 20 70 61 72 74 69 63 75 6c 61 72  nce a particular
14700 20 6d 6f 6d 65 6e 74 20 69 6e 20 32 30 30 34 3a   moment in 2004:
14710 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74  </p>..<blockquot
14720 65 3e 0a 20 20 53 45 4c 45 43 54 20 73 74 72 66  e>.  SELECT strf
14730 74 69 6d 65 28 27 25 73 27 2c 27 6e 6f 77 27 29  time('%s','now')
14740 20 2d 20 73 74 72 66 74 69 6d 65 28 27 25 73 27   - strftime('%s'
14750 2c 27 32 30 30 34 2d 30 31 2d 30 31 20 30 32 3a  ,'2004-01-01 02:
14760 33 34 3a 35 36 27 29 3b 0a 3c 2f 62 6c 6f 63 6b  34:56');.</block
14770 71 75 6f 74 65 3e 0a 0a 3c 70 3e 0a 43 6f 6d 70  quote>..<p>.Comp
14780 75 74 65 20 74 68 65 20 64 61 74 65 20 6f 66 20  ute the date of 
14790 74 68 65 20 66 69 72 73 74 20 54 75 65 73 64 61  the first Tuesda
147a0 79 20 69 6e 20 4f 63 74 6f 62 65 72 0a 66 6f 72  y in October.for
147b0 20 74 68 65 20 63 75 72 72 65 6e 74 20 79 65 61   the current yea
147c0 72 2e 0a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71  r..</p>..<blockq
147d0 75 6f 74 65 3e 0a 20 20 53 45 4c 45 43 54 20 64  uote>.  SELECT d
147e0 61 74 65 28 27 6e 6f 77 27 2c 27 73 74 61 72 74  ate('now','start
147f0 20 6f 66 20 79 65 61 72 27 2c 27 2b 39 20 6d 6f   of year','+9 mo
14800 6e 74 68 73 27 2c 27 77 65 65 6b 64 61 79 20 32  nths','weekday 2
14810 27 29 3b 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65  ');.</blockquote
14820 3e 0a 0a 3c 70 3e 43 6f 6d 70 75 74 65 20 74 68  >..<p>Compute th
14830 65 20 74 69 6d 65 20 73 69 6e 63 65 20 74 68 65  e time since the
14840 20 75 6e 69 78 20 65 70 6f 63 68 20 69 6e 20 73   unix epoch in s
14850 65 63 6f 6e 64 73 20 0a 28 6c 69 6b 65 20 73 74  econds .(like st
14860 72 66 74 69 6d 65 28 27 25 73 27 2c 27 6e 6f 77  rftime('%s','now
14870 27 29 20 65 78 63 65 70 74 20 69 6e 63 6c 75 64  ') except includ
14880 65 73 20 66 72 61 63 74 69 6f 6e 61 6c 20 70 61  es fractional pa
14890 72 74 29 3a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b  rt):</p>..<block
148a0 71 75 6f 74 65 3e 0a 20 20 53 45 4c 45 43 54 20  quote>.  SELECT 
148b0 28 6a 75 6c 69 61 6e 64 61 79 28 27 6e 6f 77 27  (julianday('now'
148c0 29 20 2d 20 32 34 34 30 35 38 37 2e 35 29 2a 38  ) - 2440587.5)*8
148d0 36 34 30 30 2e 30 3b 0a 3c 2f 62 6c 6f 63 6b 71  6400.0;.</blockq
148e0 75 6f 74 65 3e 0a 0a 3c 68 33 3e 43 61 76 65 61  uote>..<h3>Cavea
148f0 74 73 20 41 6e 64 20 42 75 67 73 3c 2f 68 33 3e  ts And Bugs</h3>
14900 0a 0a 3c 70 3e 54 68 65 20 63 6f 6d 70 75 74 61  ..<p>The computa
14910 74 69 6f 6e 20 6f 66 20 6c 6f 63 61 6c 20 74 69  tion of local ti
14920 6d 65 20 64 65 70 65 6e 64 73 20 68 65 61 76 69  me depends heavi
14930 6c 79 20 6f 6e 20 74 68 65 20 77 68 69 6d 20 0a  ly on the whim .
14940 6f 66 20 70 6f 6c 69 74 69 63 69 61 6e 73 20 61  of politicians a
14950 6e 64 20 69 73 20 74 68 75 73 20 64 69 66 66 69  nd is thus diffi
14960 63 75 6c 74 20 74 6f 20 67 65 74 20 63 6f 72 72  cult to get corr
14970 65 63 74 20 66 6f 72 20 0a 61 6c 6c 20 6c 6f 63  ect for .all loc
14980 61 6c 65 73 2e 20 49 6e 20 74 68 69 73 20 69 6d  ales. In this im
14990 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2c 20 74 68  plementation, th
149a0 65 20 73 74 61 6e 64 61 72 64 20 43 20 6c 69 62  e standard C lib
149b0 72 61 72 79 20 0a 66 75 6e 63 74 69 6f 6e 20 6c  rary .function l
149c0 6f 63 61 6c 74 69 6d 65 5f 72 28 29 20 69 73 20  ocaltime_r() is 
149d0 75 73 65 64 20 74 6f 20 61 73 73 69 73 74 20 69  used to assist i
149e0 6e 20 74 68 65 20 63 61 6c 63 75 6c 61 74 69 6f  n the calculatio
149f0 6e 20 6f 66 20 0a 6c 6f 63 61 6c 20 74 69 6d 65  n of .local time
14a00 2e 20 20 54 68 65 20 0a 6c 6f 63 61 6c 74 69 6d  .  The .localtim
14a10 65 5f 72 28 29 20 43 20 66 75 6e 63 74 69 6f 6e  e_r() C function
14a20 20 6e 6f 72 6d 61 6c 6c 79 20 6f 6e 6c 79 20 77   normally only w
14a30 6f 72 6b 73 20 66 6f 72 20 79 65 61 72 73 0a 62  orks for years.b
14a40 65 74 77 65 65 6e 20 31 39 37 30 20 61 6e 64 20  etween 1970 and 
14a50 32 30 33 37 2e 20 46 6f 72 20 64 61 74 65 73 20  2037. For dates 
14a60 6f 75 74 73 69 64 65 20 74 68 69 73 20 72 61 6e  outside this ran
14a70 67 65 2c 20 53 51 4c 69 74 65 20 0a 61 74 74 65  ge, SQLite .atte
14a80 6d 70 74 73 20 74 6f 20 6d 61 70 20 74 68 65 20  mpts to map the 
14a90 79 65 61 72 20 69 6e 74 6f 20 61 6e 20 65 71 75  year into an equ
14aa0 69 76 61 6c 65 6e 74 20 79 65 61 72 20 77 69 74  ivalent year wit
14ab0 68 69 6e 20 0a 74 68 69 73 20 72 61 6e 67 65 2c  hin .this range,
14ac0 20 64 6f 20 74 68 65 20 63 61 6c 63 75 6c 61 74   do the calculat
14ad0 69 6f 6e 2c 20 74 68 65 6e 20 6d 61 70 20 74 68  ion, then map th
14ae0 65 20 79 65 61 72 20 62 61 63 6b 2e 3c 2f 70 3e  e year back.</p>
14af0 0a 0a 0a 3c 70 3e 54 68 65 73 65 20 66 75 6e 63  ...<p>These func
14b00 74 69 6f 6e 73 20 6f 6e 6c 79 20 77 6f 72 6b 20  tions only work 
14b10 66 6f 72 20 64 61 74 65 73 20 62 65 74 77 65 65  for dates betwee
14b20 6e 20 30 30 30 30 2d 30 31 2d 30 31 20 30 30 3a  n 0000-01-01 00:
14b30 30 30 3a 30 30 0a 61 6e 64 20 39 39 39 39 2d 31  00:00.and 9999-1
14b40 32 2d 33 31 20 32 33 3a 35 39 3a 35 39 20 28 6a  2-31 23:59:59 (j
14b50 75 6c 69 64 61 6e 20 64 61 79 20 6e 75 6d 62 65  ulidan day numbe
14b60 72 73 20 31 37 32 31 30 35 39 2e 35 20 74 68 72  rs 1721059.5 thr
14b70 6f 75 67 68 20 35 33 37 33 34 38 34 2e 35 29 2e  ough 5373484.5).
14b80 0a 46 6f 72 20 64 61 74 65 73 20 6f 75 74 73 69  .For dates outsi
14b90 64 65 20 74 68 61 74 20 72 61 6e 67 65 2c 20 74  de that range, t
14ba0 68 65 20 72 65 73 75 6c 74 73 20 6f 66 20 74 68  he results of th
14bb0 65 73 65 0a 66 75 6e 63 74 69 6f 6e 73 20 61 72  ese.functions ar
14bc0 65 20 75 6e 64 65 66 69 6e 65 64 2e 3c 2f 70 3e  e undefined.</p>
14bd0 0a 0a 3c 70 3e 4e 6f 6e 2d 56 69 73 74 61 20 57  ..<p>Non-Vista W
14be0 69 6e 64 6f 77 73 20 70 6c 61 74 66 6f 72 6d 73  indows platforms
14bf0 20 6f 6e 6c 79 20 73 75 70 70 6f 72 74 20 6f 6e   only support on
14c00 65 20 73 65 74 20 6f 66 20 44 53 54 20 72 75 6c  e set of DST rul
14c10 65 73 2e 20 0a 56 69 73 74 61 20 6f 6e 6c 79 20  es. .Vista only 
14c20 73 75 70 70 6f 72 74 73 20 74 77 6f 2e 20 54 68  supports two. Th
14c30 65 72 65 66 6f 72 65 2c 20 6f 6e 20 74 68 65 73  erefore, on thes
14c40 65 20 70 6c 61 74 66 6f 72 6d 73 2c 20 0a 68 69  e platforms, .hi
14c50 73 74 6f 72 69 63 61 6c 20 44 53 54 20 63 61 6c  storical DST cal
14c60 63 75 6c 61 74 69 6f 6e 73 20 77 69 6c 6c 20 62  culations will b
14c70 65 20 69 6e 63 6f 72 72 65 63 74 2e 20 0a 46 6f  e incorrect. .Fo
14c80 72 20 65 78 61 6d 70 6c 65 2c 20 69 6e 20 74 68  r example, in th
14c90 65 20 55 53 2c 20 69 6e 20 32 30 30 37 20 74 68  e US, in 2007 th
14ca0 65 20 44 53 54 20 72 75 6c 65 73 20 63 68 61 6e  e DST rules chan
14cb0 67 65 64 2e 20 0a 4e 6f 6e 2d 56 69 73 74 61 20  ged. .Non-Vista 
14cc0 57 69 6e 64 6f 77 73 20 70 6c 61 74 66 6f 72 6d  Windows platform
14cd0 73 20 61 70 70 6c 79 20 74 68 65 20 6e 65 77 20  s apply the new 
14ce0 32 30 30 37 20 44 53 54 20 72 75 6c 65 73 20 0a  2007 DST rules .
14cf0 74 6f 20 61 6c 6c 20 70 72 65 76 69 6f 75 73 20  to all previous 
14d00 79 65 61 72 73 20 61 73 20 77 65 6c 6c 2e 20 56  years as well. V
14d10 69 73 74 61 20 64 6f 65 73 20 73 6f 6d 65 77 68  ista does somewh
14d20 61 74 20 62 65 74 74 65 72 0a 67 65 74 74 69 6e  at better.gettin
14d30 67 20 72 65 73 75 6c 74 73 20 63 6f 72 72 65 63  g results correc
14d40 74 20 62 61 63 6b 20 74 6f 20 31 39 38 36 2c 20  t back to 1986, 
14d50 77 68 65 6e 20 74 68 65 20 72 75 6c 65 73 20 77  when the rules w
14d60 65 72 65 20 61 6c 73 6f 20 63 68 61 6e 67 65 64  ere also changed
14d70 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41 6c 6c 20 69 6e  .</p>..<p>All in
14d80 74 65 72 6e 61 6c 20 63 6f 6d 70 75 74 61 74 69  ternal computati
14d90 6f 6e 73 20 61 73 73 75 6d 65 20 74 68 65 20 0a  ons assume the .
14da0 5b 68 74 74 70 3a 2f 2f 65 6e 2e 77 69 6b 69 70  [http://en.wikip
14db0 65 64 69 61 2e 6f 72 67 2f 77 69 6b 69 2f 47 72  edia.org/wiki/Gr
14dc0 65 67 6f 72 69 61 6e 5f 63 61 6c 65 6e 64 61 72  egorian_calendar
14dd0 20 7c 20 47 72 65 67 6f 72 69 61 6e 20 63 61 6c   | Gregorian cal
14de0 65 6e 64 61 72 5d 0a 73 79 73 74 65 6d 2e 20 20  endar].system.  
14df0 49 74 20 69 73 20 61 6c 73 6f 20 61 73 73 75 6d  It is also assum
14e00 65 64 20 74 68 61 74 20 65 76 65 72 79 0a 64 61  ed that every.da
14e10 79 20 69 73 20 65 78 61 63 74 6c 79 20 38 36 34  y is exactly 864
14e20 30 30 20 73 65 63 6f 6e 64 73 20 69 6e 20 64 75  00 seconds in du
14e30 72 61 74 69 6f 6e 2e 3c 2f 70 3e 0a 0a 3c 74 63  ration.</p>..<tc
14e40 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23 23  l>.#############
14e50 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14e60 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14e70 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14e80 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
14e90 23 0a 53 65 63 74 69 6f 6e 20 7b 41 67 67 72 65  #.Section {Aggre
14ea0 67 61 74 65 20 46 75 6e 63 74 69 6f 6e 73 7d 20  gate Functions} 
14eb0 61 67 67 66 75 6e 63 20 7b 2a 61 67 67 66 75 6e  aggfunc {*aggfun
14ec0 63 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 0a 54  c}.</tcl>..<p>.T
14ed0 68 65 20 61 67 67 72 65 67 61 74 65 20 66 75 6e  he aggregate fun
14ee0 63 74 69 6f 6e 73 20 73 68 6f 77 6e 20 62 65 6c  ctions shown bel
14ef0 6f 77 20 61 72 65 20 61 76 61 69 6c 61 62 6c 65  ow are available
14f00 20 62 79 20 64 65 66 61 75 6c 74 2e 20 20 41 64   by default.  Ad
14f10 64 69 74 69 6f 6e 61 6c 0a 61 67 67 72 65 67 61  ditional.aggrega
14f20 74 65 20 66 75 6e 63 74 69 6f 6e 73 20 77 72 69  te functions wri
14f30 74 74 65 6e 20 69 6e 20 43 20 6d 61 79 20 62 65  tten in C may be
14f40 20 61 64 64 65 64 20 75 73 69 6e 67 20 74 68 65   added using the
14f50 20 0a 5b 73 71 6c 69 74 65 33 5f 63 72 65 61 74   .[sqlite3_creat
14f60 65 5f 66 75 6e 63 74 69 6f 6e 28 29 5d 3c 2f 61  e_function()]</a
14f70 3e 0a 41 50 49 2e 3c 2f 70 3e 0a 0a 3c 70 3e 0a  >.API.</p>..<p>.
14f80 49 6e 20 61 6e 79 20 61 67 67 72 65 67 61 74 65  In any aggregate
14f90 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 74   function that t
14fa0 61 6b 65 73 20 61 20 73 69 6e 67 6c 65 20 61 72  akes a single ar
14fb0 67 75 6d 65 6e 74 2c 20 74 68 61 74 20 61 72 67  gument, that arg
14fc0 75 6d 65 6e 74 0a 63 61 6e 20 62 65 20 70 72 65  ument.can be pre
14fd0 63 65 64 65 64 20 62 79 20 74 68 65 20 6b 65 79  ceded by the key
14fe0 77 6f 72 64 20 44 49 53 54 49 4e 43 54 2e 20 20  word DISTINCT.  
14ff0 49 6e 20 73 75 63 68 20 63 61 73 65 73 2c 20 64  In such cases, d
15000 75 70 6c 69 63 61 74 65 0a 65 6c 65 6d 65 6e 74  uplicate.element
15010 73 20 61 72 65 20 66 69 6c 74 65 72 65 64 20 62  s are filtered b
15020 65 66 6f 72 65 20 62 65 69 6e 67 20 70 61 73 73  efore being pass
15030 65 64 20 69 6e 74 6f 20 74 68 65 20 61 67 67 72  ed into the aggr
15040 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 2e 0a  egate function..
15050 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 74 68 65  For example, the
15060 20 66 75 6e 63 74 69 6f 6e 20 22 63 6f 75 6e 74   function "count
15070 28 64 69 73 74 69 6e 63 74 20 58 29 22 20 77 69  (distinct X)" wi
15080 6c 6c 20 72 65 74 75 72 6e 20 74 68 65 20 6e 75  ll return the nu
15090 6d 62 65 72 0a 6f 66 20 64 69 73 74 69 6e 63 74  mber.of distinct
150a0 20 76 61 6c 75 65 73 20 6f 66 20 63 6f 6c 75 6d   values of colum
150b0 6e 20 58 20 69 6e 73 74 65 61 64 20 6f 66 20 74  n X instead of t
150c0 68 65 20 74 6f 74 61 6c 20 6e 75 6d 62 65 72 20  he total number 
150d0 6f 66 20 6e 6f 6e 2d 6e 75 6c 6c 0a 76 61 6c 75  of non-null.valu
150e0 65 73 20 69 6e 20 63 6f 6c 75 6d 6e 20 58 2e 0a  es in column X..
150f0 3c 2f 70 3e 0a 0a 3c 74 61 62 6c 65 20 62 6f 72  </p>..<table bor
15100 64 65 72 3d 30 20 63 65 6c 6c 70 61 64 64 69 6e  der=0 cellpaddin
15110 67 3d 31 30 3e 0a 3c 74 63 6c 3e 0a 66 75 6e 63  g=10>.<tcl>.func
15120 64 65 66 20 7b 61 76 67 28 58 29 7d 20 7b 2a 61  def {avg(X)} {*a
15130 76 67 20 7b 61 76 67 28 29 20 61 67 67 72 65 67  vg {avg() aggreg
15140 61 74 65 20 66 75 6e 63 74 69 6f 6e 7d 7d 20 7b  ate function}} {
15150 0a 20 20 52 65 74 75 72 6e 20 74 68 65 20 61 76  .  Return the av
15160 65 72 61 67 65 20 76 61 6c 75 65 20 6f 66 20 61  erage value of a
15170 6c 6c 20 6e 6f 6e 2d 4e 55 4c 4c 20 3c 69 3e 58  ll non-NULL <i>X
15180 3c 2f 69 3e 20 77 69 74 68 69 6e 20 61 0a 20 20  </i> within a.  
15190 67 72 6f 75 70 2e 20 20 53 74 72 69 6e 67 20 61  group.  String a
151a0 6e 64 20 42 4c 4f 42 20 76 61 6c 75 65 73 20 74  nd BLOB values t
151b0 68 61 74 20 64 6f 20 6e 6f 74 20 6c 6f 6f 6b 20  hat do not look 
151c0 6c 69 6b 65 20 6e 75 6d 62 65 72 73 20 61 72 65  like numbers are
151d0 0a 20 20 69 6e 74 65 72 70 72 65 74 65 64 20 61  .  interpreted a
151e0 73 20 30 2e 0a 20 20 54 68 65 20 72 65 73 75 6c  s 0..  The resul
151f0 74 20 6f 66 20 61 76 67 28 29 20 69 73 20 61 6c  t of avg() is al
15200 77 61 79 73 20 61 20 66 6c 6f 61 74 69 6e 67 20  ways a floating 
15210 70 6f 69 6e 74 20 76 61 6c 75 65 20 61 73 20 6c  point value as l
15220 6f 6e 67 20 61 73 0a 20 20 61 74 20 74 68 65 72  ong as.  at ther
15230 65 20 69 73 20 61 74 20 6c 65 61 73 74 20 6f 6e  e is at least on
15240 65 20 6e 6f 6e 2d 4e 55 4c 4c 20 69 6e 70 75 74  e non-NULL input
15250 20 65 76 65 6e 20 69 66 20 61 6c 6c 0a 20 20 69   even if all.  i
15260 6e 70 75 74 73 20 61 72 65 20 69 6e 74 65 67 65  nputs are intege
15270 72 73 2e 20 20 54 68 65 20 72 65 73 75 6c 74 20  rs.  The result 
15280 6f 66 20 61 76 67 28 29 20 69 73 20 4e 55 4c 4c  of avg() is NULL
15290 20 69 66 20 61 6e 64 20 6f 6e 6c 79 20 69 66 0a   if and only if.
152a0 20 20 74 68 65 72 65 20 61 72 65 20 6e 6f 20 6e    there are no n
152b0 6f 6e 2d 4e 55 4c 4c 20 69 6e 70 75 74 73 2e 20  on-NULL inputs. 
152c0 20 0a 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 63 6f   .}..funcdef {co
152d0 75 6e 74 28 58 29 20 63 6f 75 6e 74 28 2a 29 7d  unt(X) count(*)}
152e0 20 7b 2a 63 6f 75 6e 74 20 7b 63 6f 75 6e 74 28   {*count {count(
152f0 29 20 61 67 67 72 65 67 61 74 65 20 66 75 6e 63  ) aggregate func
15300 74 69 6f 6e 7d 7d 20 7b 0a 20 20 54 68 65 20 66  tion}} {.  The f
15310 69 72 73 74 20 66 6f 72 6d 20 72 65 74 75 72 6e  irst form return
15320 20 61 20 63 6f 75 6e 74 20 6f 66 20 74 68 65 20   a count of the 
15330 6e 75 6d 62 65 72 20 6f 66 20 74 69 6d 65 73 0a  number of times.
15340 20 20 74 68 61 74 20 3c 69 3e 58 3c 2f 69 3e 20    that <i>X</i> 
15350 69 73 20 6e 6f 74 20 4e 55 4c 4c 20 69 6e 20 61  is not NULL in a
15360 20 67 72 6f 75 70 2e 20 20 54 68 65 20 73 65 63   group.  The sec
15370 6f 6e 64 20 66 6f 72 6d 20 28 77 69 74 68 20 6e  ond form (with n
15380 6f 20 61 72 67 75 6d 65 6e 74 29 0a 20 20 72 65  o argument).  re
15390 74 75 72 6e 73 20 74 68 65 20 74 6f 74 61 6c 20  turns the total 
153a0 6e 75 6d 62 65 72 20 6f 66 20 72 6f 77 73 20 69  number of rows i
153b0 6e 20 74 68 65 20 67 72 6f 75 70 2e 0a 7d 0a 0a  n the group..}..
153c0 66 75 6e 63 64 65 66 20 7b 67 72 6f 75 70 5f 63  funcdef {group_c
153d0 6f 6e 63 61 74 28 58 29 20 67 72 6f 75 70 5f 63  oncat(X) group_c
153e0 6f 6e 63 61 74 28 58 2c 59 29 7d 20 7b 0a 20 20  oncat(X,Y)} {.  
153f0 2a 67 72 6f 75 70 5f 63 6f 6e 63 61 74 20 7b 67  *group_concat {g
15400 72 6f 75 70 5f 63 6f 6e 63 61 74 28 29 20 61 67  roup_concat() ag
15410 67 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e  gregate function
15420 7d 0a 7d 20 7b 0a 20 20 54 68 65 20 72 65 73 75  }.} {.  The resu
15430 6c 74 20 69 73 20 61 20 73 74 72 69 6e 67 20 77  lt is a string w
15440 68 69 63 68 20 69 73 20 74 68 65 20 63 6f 6e 63  hich is the conc
15450 61 74 65 6e 61 74 69 6f 6e 20 6f 66 0a 20 20 61  atenation of.  a
15460 6c 6c 20 6e 6f 6e 2d 4e 55 4c 4c 20 76 61 6c 75  ll non-NULL valu
15470 65 73 20 6f 66 20 3c 69 3e 58 3c 2f 69 3e 2e 20  es of <i>X</i>. 
15480 20 49 66 20 70 61 72 61 6d 65 74 65 72 20 3c 69   If parameter <i
15490 3e 59 3c 2f 69 3e 20 69 73 20 70 72 65 73 65 6e  >Y</i> is presen
154a0 74 20 74 68 65 6e 0a 20 20 69 73 20 69 73 20 75  t then.  is is u
154b0 73 65 64 20 61 73 20 74 68 65 20 73 65 70 61 72  sed as the separ
154c0 61 74 6f 72 0a 20 20 62 65 74 77 65 65 6e 20 69  ator.  between i
154d0 6e 73 74 61 6e 63 65 73 20 6f 66 20 3c 69 3e 58  nstances of <i>X
154e0 3c 2f 69 3e 2e 20 20 41 20 63 6f 6d 6d 61 20 28  </i>.  A comma (
154f0 22 2c 22 29 20 69 73 20 75 73 65 64 20 61 73 20  ",") is used as 
15500 74 68 65 20 73 65 70 61 72 61 74 6f 72 0a 20 20  the separator.  
15510 69 66 20 3c 69 3e 59 3c 2f 69 3e 20 69 73 20 6f  if <i>Y</i> is o
15520 6d 69 74 74 65 64 2e 20 20 54 68 65 20 6f 72 64  mitted.  The ord
15530 65 72 20 6f 66 20 74 68 65 20 63 6f 6e 63 61 74  er of the concat
15540 65 6e 61 74 65 64 20 65 6c 65 6d 65 6e 74 73 20  enated elements 
15550 69 73 0a 20 20 61 72 62 69 74 72 61 72 79 2e 0a  is.  arbitrary..
15560 7d 0a 0a 66 75 6e 63 64 65 66 20 7b 6d 61 78 28  }..funcdef {max(
15570 58 29 7d 20 7b 2a 6d 61 78 41 67 67 46 75 6e 63  X)} {*maxAggFunc
15580 20 2a 61 67 67 5f 6d 61 78 20 7b 6d 61 78 28 29   *agg_max {max()
15590 20 61 67 67 72 65 67 61 74 65 20 66 75 6e 63 74   aggregate funct
155a0 69 6f 6e 7d 7d 20 7b 0a 20 20 52 65 74 75 72 6e  ion}} {.  Return
155b0 20 74 68 65 20 6d 61 78 69 6d 75 6d 20 76 61 6c   the maximum val
155c0 75 65 20 6f 66 20 61 6c 6c 20 76 61 6c 75 65 73  ue of all values
155d0 20 69 6e 20 74 68 65 20 67 72 6f 75 70 2e 0a 20   in the group.. 
155e0 20 54 68 65 20 6d 61 78 69 6d 75 6d 20 76 61 6c   The maximum val
155f0 75 65 20 69 73 20 74 68 65 20 76 61 6c 75 65 20  ue is the value 
15600 74 68 61 74 20 77 6f 75 6c 64 20 62 65 20 72 65  that would be re
15610 74 75 72 6e 65 64 20 6c 61 73 74 20 69 6e 20 61  turned last in a
15620 6e 0a 20 20 4f 52 44 45 52 20 42 59 20 6f 6e 20  n.  ORDER BY on 
15630 74 68 65 20 73 61 6d 65 20 63 6f 6c 75 6d 6e 2e  the same column.
15640 20 20 4e 55 4c 4c 20 69 73 20 72 65 74 75 72 6e    NULL is return
15650 65 64 20 69 66 20 61 6e 64 20 6f 6e 6c 79 20 69  ed if and only i
15660 66 20 74 68 65 72 65 20 61 72 65 0a 20 20 6e 6f  f there are.  no
15670 20 6e 6f 6e 2d 4e 55 4c 4c 20 76 61 6c 75 65 73   non-NULL values
15680 20 69 6e 20 74 68 65 20 67 72 6f 75 70 2e 0a 7d   in the group..}
15690 0a 0a 66 75 6e 63 64 65 66 20 7b 6d 69 6e 28 58  ..funcdef {min(X
156a0 29 7d 20 7b 2a 6d 69 6e 41 67 67 46 75 6e 63 20  )} {*minAggFunc 
156b0 2a 61 67 67 5f 6d 69 6e 20 7b 6d 69 6e 28 29 20  *agg_min {min() 
156c0 61 67 67 72 65 67 61 74 65 20 66 75 6e 63 74 69  aggregate functi
156d0 6f 6e 7d 7d 20 7b 0a 20 20 52 65 74 75 72 6e 20  on}} {.  Return 
156e0 74 68 65 20 6d 69 6e 69 6d 75 6d 20 6e 6f 6e 2d  the minimum non-
156f0 4e 55 4c 4c 20 76 61 6c 75 65 20 6f 66 20 61 6c  NULL value of al
15700 6c 20 76 61 6c 75 65 73 20 69 6e 20 74 68 65 20  l values in the 
15710 67 72 6f 75 70 2e 0a 20 20 54 68 65 20 6d 69 6e  group..  The min
15720 69 6d 75 6d 20 76 61 6c 75 65 20 69 73 20 74 68  imum value is th
15730 65 20 66 69 72 73 74 20 6e 6f 6e 2d 4e 55 4c 4c  e first non-NULL
15740 20 76 61 6c 75 65 20 74 68 61 74 20 77 6f 75 6c   value that woul
15750 64 20 61 70 70 65 61 72 0a 20 20 69 6e 20 61 6e  d appear.  in an
15760 20 4f 52 44 45 52 20 42 59 20 6f 66 20 74 68 65   ORDER BY of the
15770 20 63 6f 6c 75 6d 6e 2e 0a 20 20 4e 55 4c 4c 20   column..  NULL 
15780 69 73 20 6f 6e 6c 79 20 72 65 74 75 72 6e 65 64  is only returned
15790 20 69 66 20 61 6e 64 20 6f 6e 6c 79 20 69 66 20   if and only if 
157a0 74 68 65 72 65 20 61 72 65 20 6e 6f 20 6e 6f 6e  there are no non
157b0 2d 4e 55 4c 4c 20 76 61 6c 75 65 73 20 69 6e 20  -NULL values in 
157c0 74 68 65 20 0a 20 20 67 72 6f 75 70 2e 0a 7d 0a  the .  group..}.
157d0 0a 66 75 6e 63 64 65 66 20 7b 73 75 6d 28 58 29  .funcdef {sum(X)
157e0 20 74 6f 74 61 6c 28 58 29 7d 20 7b 0a 20 20 2a   total(X)} {.  *
157f0 73 75 6d 46 75 6e 63 20 2a 73 75 6d 20 2a 74 6f  sumFunc *sum *to
15800 74 61 6c 0a 20 20 7b 73 75 6d 28 29 20 61 67 67  tal.  {sum() agg
15810 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 7d  regate function}
15820 0a 20 20 7b 74 6f 74 61 6c 28 29 20 61 67 67 72  .  {total() aggr
15830 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 7d 0a  egate function}.
15840 7d 20 7b 0a 20 20 52 65 74 75 72 6e 20 74 68 65  } {.  Return the
15850 20 6e 75 6d 65 72 69 63 20 73 75 6d 20 6f 66 20   numeric sum of 
15860 61 6c 6c 20 6e 6f 6e 2d 4e 55 4c 4c 20 76 61 6c  all non-NULL val
15870 75 65 73 20 69 6e 20 74 68 65 20 67 72 6f 75 70  ues in the group
15880 2e 0a 20 20 49 66 20 74 68 65 72 65 20 61 72 65  ..  If there are
15890 20 6e 6f 20 6e 6f 6e 2d 4e 55 4c 4c 20 69 6e 70   no non-NULL inp
158a0 75 74 20 72 6f 77 73 20 74 68 65 6e 20 73 75 6d  ut rows then sum
158b0 28 29 20 72 65 74 75 72 6e 73 0a 20 20 4e 55 4c  () returns.  NUL
158c0 4c 20 62 75 74 20 74 6f 74 61 6c 28 29 20 72 65  L but total() re
158d0 74 75 72 6e 73 20 30 2e 30 2e 0a 20 20 4e 55 4c  turns 0.0..  NUL
158e0 4c 20 69 73 20 6e 6f 74 20 6e 6f 72 6d 61 6c 6c  L is not normall
158f0 79 20 61 20 68 65 6c 70 66 75 6c 20 72 65 73 75  y a helpful resu
15900 6c 74 20 66 6f 72 20 74 68 65 20 73 75 6d 20 6f  lt for the sum o
15910 66 20 6e 6f 20 72 6f 77 73 0a 20 20 62 75 74 20  f no rows.  but 
15920 74 68 65 20 53 51 4c 20 73 74 61 6e 64 61 72 64  the SQL standard
15930 20 72 65 71 75 69 72 65 73 20 69 74 20 61 6e 64   requires it and
15940 20 6d 6f 73 74 20 6f 74 68 65 72 0a 20 20 53 51   most other.  SQ
15950 4c 20 64 61 74 61 62 61 73 65 20 65 6e 67 69 6e  L database engin
15960 65 73 20 69 6d 70 6c 65 6d 65 6e 74 20 73 75 6d  es implement sum
15970 28 29 20 74 68 61 74 20 77 61 79 20 73 6f 20 53  () that way so S
15980 51 4c 69 74 65 20 64 6f 65 73 20 69 74 20 69 6e  QLite does it in
15990 20 74 68 65 0a 20 20 73 61 6d 65 20 77 61 79 20   the.  same way 
159a0 69 6e 20 6f 72 64 65 72 20 74 6f 20 62 65 20 63  in order to be c
159b0 6f 6d 70 61 74 69 62 6c 65 2e 20 20 20 54 68 65  ompatible.   The
159c0 20 6e 6f 6e 2d 73 74 61 6e 64 61 72 64 20 74 6f   non-standard to
159d0 74 61 6c 28 29 20 66 75 6e 63 74 69 6f 6e 0a 20  tal() function. 
159e0 20 69 73 20 70 72 6f 76 69 64 65 64 20 61 73 20   is provided as 
159f0 61 20 63 6f 6e 76 65 6e 69 65 6e 74 20 77 61 79  a convenient way
15a00 20 74 6f 20 77 6f 72 6b 20 61 72 6f 75 6e 64 20   to work around 
15a10 74 68 69 73 20 64 65 73 69 67 6e 20 70 72 6f 62  this design prob
15a20 6c 65 6d 0a 20 20 69 6e 20 74 68 65 20 53 51 4c  lem.  in the SQL
15a30 20 6c 61 6e 67 75 61 67 65 2e 3c 2f 70 3e 0a 0a   language.</p>..
15a40 20 20 3c 70 3e 54 68 65 20 72 65 73 75 6c 74 20    <p>The result 
15a50 6f 66 20 74 6f 74 61 6c 28 29 20 69 73 20 61 6c  of total() is al
15a60 77 61 79 73 20 61 20 66 6c 6f 61 74 69 6e 67 20  ways a floating 
15a70 70 6f 69 6e 74 20 76 61 6c 75 65 2e 0a 20 20 54  point value..  T
15a80 68 65 20 72 65 73 75 6c 74 20 6f 66 20 73 75 6d  he result of sum
15a90 28 29 20 69 73 20 61 6e 20 69 6e 74 65 67 65 72  () is an integer
15aa0 20 76 61 6c 75 65 20 69 66 20 61 6c 6c 20 6e 6f   value if all no
15ab0 6e 2d 4e 55 4c 4c 20 69 6e 70 75 74 73 20 61 72  n-NULL inputs ar
15ac0 65 20 69 6e 74 65 67 65 72 73 2e 0a 20 20 49 66  e integers..  If
15ad0 20 61 6e 79 20 69 6e 70 75 74 20 74 6f 20 73 75   any input to su
15ae0 6d 28 29 20 69 73 20 6e 65 69 74 68 65 72 20 61  m() is neither a
15af0 6e 20 69 6e 74 65 67 65 72 20 6f 72 20 61 20 4e  n integer or a N
15b00 55 4c 4c 0a 20 20 74 68 65 6e 20 73 75 6d 28 29  ULL.  then sum()
15b10 20 72 65 74 75 72 6e 73 20 61 20 66 6c 6f 61 74   returns a float
15b20 69 6e 67 20 70 6f 69 6e 74 20 76 61 6c 75 65 0a  ing point value.
15b30 20 20 77 68 69 63 68 20 6d 69 67 68 74 20 62 65    which might be
15b40 20 61 6e 20 61 70 70 72 6f 78 69 6d 61 74 69 6f   an approximatio
15b50 6e 20 74 6f 20 74 68 65 20 74 72 75 65 20 73 75  n to the true su
15b60 6d 2e 3c 2f 70 3e 0a 0a 20 20 3c 70 3e 53 75 6d  m.</p>..  <p>Sum
15b70 28 29 20 77 69 6c 6c 20 74 68 72 6f 77 20 61 6e  () will throw an
15b80 20 22 69 6e 74 65 67 65 72 20 6f 76 65 72 66 6c   "integer overfl
15b90 6f 77 22 20 65 78 63 65 70 74 69 6f 6e 20 69 66  ow" exception if
15ba0 20 61 6c 6c 20 69 6e 70 75 74 73 0a 20 20 61 72   all inputs.  ar
15bb0 65 20 69 6e 74 65 67 65 72 73 20 6f 72 20 4e 55  e integers or NU
15bc0 4c 4c 0a 20 20 61 6e 64 20 61 6e 20 69 6e 74 65  LL.  and an inte
15bd0 67 65 72 20 6f 76 65 72 66 6c 6f 77 20 6f 63 63  ger overflow occ
15be0 75 72 73 20 61 74 20 61 6e 79 20 70 6f 69 6e 74  urs at any point
15bf0 20 64 75 72 69 6e 67 20 74 68 65 20 63 6f 6d 70   during the comp
15c00 75 74 61 74 69 6f 6e 2e 0a 20 20 54 6f 74 61 6c  utation..  Total
15c10 28 29 20 6e 65 76 65 72 20 74 68 72 6f 77 73 20  () never throws 
15c20 61 6e 20 69 6e 74 65 67 65 72 20 6f 76 65 72 66  an integer overf
15c30 6c 6f 77 2e 0a 7d 0a 3c 2f 74 63 6c 3e 0a 3c 2f  low..}.</tcl>.</
15c40 74 61 62 6c 65 3e 0a 0a 3c 74 63 6c 3e 0a 23 23  table>..<tcl>.##
15c50 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15c60 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15c70 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15c80 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
15c90 23 23 23 23 23 23 23 23 23 23 23 23 0a 53 65 63  ############.Sec
15ca0 74 69 6f 6e 20 49 4e 53 45 52 54 20 69 6e 73 65  tion INSERT inse
15cb0 72 74 20 7b 49 4e 53 45 52 54 20 2a 49 4e 53 45  rt {INSERT *INSE
15cc0 52 54 73 7d 0a 0a 42 75 62 62 6c 65 44 69 61 67  RTs}..BubbleDiag
15cd0 72 61 6d 20 69 6e 73 65 72 74 2d 73 74 6d 74 20  ram insert-stmt 
15ce0 31 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 65  1.</tcl>..<p>The
15cf0 20 49 4e 53 45 52 54 20 73 74 61 74 65 6d 65 6e   INSERT statemen
15d00 74 20 63 6f 6d 65 73 20 69 6e 20 74 77 6f 20 62  t comes in two b
15d10 61 73 69 63 20 66 6f 72 6d 73 2e 20 20 54 68 65  asic forms.  The
15d20 20 66 69 72 73 74 20 66 6f 72 6d 0a 28 77 69 74   first form.(wit
15d30 68 20 74 68 65 20 22 56 41 4c 55 45 53 22 20 6b  h the "VALUES" k
15d40 65 79 77 6f 72 64 29 20 63 72 65 61 74 65 73 20  eyword) creates 
15d50 61 20 73 69 6e 67 6c 65 20 6e 65 77 20 72 6f 77  a single new row
15d60 20 69 6e 20 61 6e 20 65 78 69 73 74 69 6e 67 20   in an existing 
15d70 74 61 62 6c 65 2e 0a 49 66 20 6e 6f 20 63 6f 6c  table..If no col
15d80 75 6d 6e 2d 6c 69 73 74 20 69 73 20 73 70 65 63  umn-list is spec
15d90 69 66 69 65 64 20 74 68 65 6e 20 74 68 65 20 6e  ified then the n
15da0 75 6d 62 65 72 20 6f 66 20 76 61 6c 75 65 73 20  umber of values 
15db0 6d 75 73 74 0a 62 65 20 74 68 65 20 73 61 6d 65  must.be the same
15dc0 20 61 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f   as the number o
15dd0 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65  f columns in the
15de0 20 74 61 62 6c 65 2e 20 20 49 66 20 61 20 63 6f   table.  If a co
15df0 6c 75 6d 6e 2d 6c 69 73 74 0a 69 73 20 73 70 65  lumn-list.is spe
15e00 63 69 66 69 65 64 2c 20 74 68 65 6e 20 74 68 65  cified, then the
15e10 20 6e 75 6d 62 65 72 20 6f 66 20 76 61 6c 75 65   number of value
15e20 73 20 6d 75 73 74 20 6d 61 74 63 68 20 74 68 65  s must match the
15e30 20 6e 75 6d 62 65 72 20 6f 66 0a 73 70 65 63 69   number of.speci
15e40 66 69 65 64 20 63 6f 6c 75 6d 6e 73 2e 20 20 43  fied columns.  C
15e50 6f 6c 75 6d 6e 73 20 6f 66 20 74 68 65 20 74 61  olumns of the ta
15e60 62 6c 65 20 74 68 61 74 20 64 6f 20 6e 6f 74 20  ble that do not 
15e70 61 70 70 65 61 72 20 69 6e 20 74 68 65 0a 63 6f  appear in the.co
15e80 6c 75 6d 6e 20 6c 69 73 74 20 61 72 65 20 66 69  lumn list are fi
15e90 6c 6c 65 64 20 77 69 74 68 20 74 68 65 20 64 65  lled with the de
15ea0 66 61 75 6c 74 20 76 61 6c 75 65 2c 20 6f 72 20  fault value, or 
15eb0 77 69 74 68 20 4e 55 4c 4c 20 69 66 20 6e 6f 0a  with NULL if no.
15ec0 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 69 73  default value is
15ed0 20 73 70 65 63 69 66 69 65 64 2e 0a 3c 2f 70 3e   specified..</p>
15ee0 0a 0a 3c 70 3e 54 68 65 20 73 65 63 6f 6e 64 20  ..<p>The second 
15ef0 66 6f 72 6d 20 6f 66 20 74 68 65 20 49 4e 53 45  form of the INSE
15f00 52 54 20 73 74 61 74 65 6d 65 6e 74 20 74 61 6b  RT statement tak
15f10 65 73 20 69 74 73 20 64 61 74 61 20 66 72 6f 6d  es its data from
15f20 20 61 0a 53 45 4c 45 43 54 20 73 74 61 74 65 6d   a.SELECT statem
15f30 65 6e 74 2e 20 20 54 68 65 20 6e 75 6d 62 65 72  ent.  The number
15f40 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74   of columns in t
15f50 68 65 20 72 65 73 75 6c 74 20 6f 66 20 74 68 65  he result of the
15f60 0a 53 45 4c 45 43 54 20 6d 75 73 74 20 65 78 61  .SELECT must exa
15f70 63 74 6c 79 20 6d 61 74 63 68 20 74 68 65 20 6e  ctly match the n
15f80 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73  umber of columns
15f90 20 69 6e 20 74 68 65 20 74 61 62 6c 65 20 69 66   in the table if
15fa0 0a 6e 6f 20 63 6f 6c 75 6d 6e 20 6c 69 73 74 20  .no column list 
15fb0 69 73 20 73 70 65 63 69 66 69 65 64 2c 20 6f 72  is specified, or
15fc0 20 69 74 20 6d 75 73 74 20 6d 61 74 63 68 20 74   it must match t
15fd0 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c  he number of col
15fe0 75 6d 6e 73 0a 6e 61 6d 65 20 69 6e 20 74 68 65  umns.name in the
15ff0 20 63 6f 6c 75 6d 6e 20 6c 69 73 74 2e 20 20 41   column list.  A
16000 20 6e 65 77 20 65 6e 74 72 79 20 69 73 20 6d 61   new entry is ma
16010 64 65 20 69 6e 20 74 68 65 20 74 61 62 6c 65 0a  de in the table.
16020 66 6f 72 20 65 76 65 72 79 20 72 6f 77 20 6f 66  for every row of
16030 20 74 68 65 20 53 45 4c 45 43 54 20 72 65 73 75   the SELECT resu
16040 6c 74 2e 20 20 54 68 65 20 53 45 4c 45 43 54 20  lt.  The SELECT 
16050 6d 61 79 20 62 65 20 73 69 6d 70 6c 65 0a 6f 72  may be simple.or
16060 20 63 6f 6d 70 6f 75 6e 64 2e 3c 2f 70 3e 0a 0a   compound.</p>..
16070 3c 70 3e 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20  <p>The optional 
16080 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65 20  conflict-clause 
16090 61 6c 6c 6f 77 73 20 74 68 65 20 73 70 65 63 69  allows the speci
160a0 66 69 63 61 74 69 6f 6e 20 6f 66 20 61 6e 20 61  fication of an a
160b0 6c 74 65 72 6e 61 74 69 76 65 0a 63 6f 6e 73 74  lternative.const
160c0 72 61 69 6e 74 20 63 6f 6e 66 6c 69 63 74 20 72  raint conflict r
160d0 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69  esolution algori
160e0 74 68 6d 20 74 6f 20 75 73 65 20 64 75 72 69 6e  thm to use durin
160f0 67 20 74 68 69 73 20 6f 6e 65 20 63 6f 6d 6d 61  g this one comma
16100 6e 64 2e 0a 53 65 65 20 74 68 65 20 73 65 63 74  nd..See the sect
16110 69 6f 6e 20 74 69 74 6c 65 64 0a 5b 4f 4e 20 43  ion titled.[ON C
16120 4f 4e 46 4c 49 43 54 5d 20 66 6f 72 20 61 64 64  ONFLICT] for add
16130 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74  itional informat
16140 69 6f 6e 2e 0a 46 6f 72 20 63 6f 6d 70 61 74 69  ion..For compati
16150 62 69 6c 69 74 79 20 77 69 74 68 20 4d 79 53 51  bility with MySQ
16160 4c 2c 20 74 68 65 20 70 61 72 73 65 72 20 61 6c  L, the parser al
16170 6c 6f 77 73 20 74 68 65 20 75 73 65 20 6f 66 20  lows the use of 
16180 74 68 65 0a 73 69 6e 67 6c 65 20 6b 65 79 77 6f  the.single keywo
16190 72 64 20 3c 61 20 68 72 65 66 3d 22 6c 61 6e 67  rd <a href="lang
161a0 5f 72 65 70 6c 61 63 65 2e 68 74 6d 6c 22 3e 52  _replace.html">R
161b0 45 50 4c 41 43 45 3c 2f 61 3e 20 61 73 20 61 6e  EPLACE</a> as an
161c0 20 0a 61 6c 69 61 73 20 66 6f 72 20 22 49 4e 53   .alias for "INS
161d0 45 52 54 20 4f 52 20 52 45 50 4c 41 43 45 22 2e  ERT OR REPLACE".
161e0 0a 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 6f 70  .</p>..<p>The op
161f0 74 69 6f 6e 61 6c 20 22 3c 69 3e 64 61 74 61 62  tional "<i>datab
16200 61 73 65 2d 6e 61 6d 65 3c 2f 69 3e 3c 62 3e 2e  ase-name</i><b>.
16210 3c 2f 62 3e 22 20 70 72 65 66 69 78 20 6f 6e 20  </b>" prefix on 
16220 74 68 65 20 3c 69 3e 74 61 62 6c 65 2d 6e 61 6d  the <i>table-nam
16230 65 3c 2f 69 3e 0a 69 73 20 73 75 70 70 6f 72 74  e</i>.is support
16240 20 66 6f 72 20 74 6f 70 2d 6c 65 76 65 6c 20 49   for top-level I
16250 4e 53 45 52 54 20 73 74 61 74 65 6d 65 6e 74 73  NSERT statements
16260 20 6f 6e 6c 79 2e 20 20 54 68 65 20 74 61 62 6c   only.  The tabl
16270 65 20 6e 61 6d 65 20 6d 75 73 74 20 62 65 0a 75  e name must be.u
16280 6e 71 75 61 6c 69 66 69 65 64 20 66 6f 72 20 49  nqualified for I
16290 4e 53 45 52 54 20 73 74 61 74 65 6d 65 6e 74 73  NSERT statements
162a0 20 74 68 61 74 20 6f 63 63 75 72 20 77 69 74 68   that occur with
162b0 69 6e 20 5b 43 52 45 41 54 45 20 54 52 49 47 47  in [CREATE TRIGG
162c0 45 52 5d 20 73 74 61 74 65 6d 65 6e 74 73 2e 0a  ER] statements..
162d0 4c 69 6b 65 6c 79 2c 20 74 68 65 20 22 44 45 46  Likely, the "DEF
162e0 41 55 4c 54 20 56 41 4c 55 45 53 22 20 66 6f 72  AULT VALUES" for
162f0 6d 20 6f 66 20 74 68 65 20 49 4e 53 45 52 54 20  m of the INSERT 
16300 73 74 61 74 65 6d 65 6e 74 20 69 73 20 73 75 70  statement is sup
16310 70 6f 72 74 20 66 6f 72 0a 74 6f 70 2d 6c 65 76  port for.top-lev
16320 65 6c 20 49 4e 53 45 52 54 20 73 74 61 74 65 6d  el INSERT statem
16330 65 6e 74 73 20 6f 6e 6c 79 20 61 6e 64 20 6e 6f  ents only and no
16340 74 20 66 6f 72 20 49 4e 53 45 52 54 20 73 74 61  t for INSERT sta
16350 74 65 6d 65 6e 74 73 20 77 69 74 68 69 6e 0a 74  tements within.t
16360 72 69 67 67 65 72 73 2e 0a 3c 70 3e 0a 0a 3c 74  riggers..<p>..<t
16370 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23  cl>.############
16380 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
16390 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
163a0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
163b0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
163c0 23 23 0a 53 65 63 74 69 6f 6e 20 7b 4f 4e 20 43  ##.Section {ON C
163d0 4f 4e 46 4c 49 43 54 20 63 6c 61 75 73 65 7d 20  ONFLICT clause} 
163e0 63 6f 6e 66 6c 69 63 74 20 7b 7b 63 6f 6e 66 6c  conflict {{confl
163f0 69 63 74 20 63 6c 61 75 73 65 7d 20 7b 4f 4e 20  ict clause} {ON 
16400 43 4f 4e 46 4c 49 43 54 7d 7d 0a 0a 42 75 62 62  CONFLICT}}..Bubb
16410 6c 65 44 69 61 67 72 61 6d 20 63 6f 6e 66 6c 69  leDiagram confli
16420 63 74 2d 63 6c 61 75 73 65 0a 3c 2f 74 63 6c 3e  ct-clause.</tcl>
16430 0a 0a 3c 70 3e 54 68 65 20 4f 4e 20 43 4f 4e 46  ..<p>The ON CONF
16440 4c 49 43 54 20 63 6c 61 75 73 65 20 69 73 20 6e  LICT clause is n
16450 6f 74 20 61 20 73 65 70 61 72 61 74 65 20 53 51  ot a separate SQ
16460 4c 20 63 6f 6d 6d 61 6e 64 2e 20 20 49 74 20 69  L command.  It i
16470 73 20 61 0a 6e 6f 6e 2d 73 74 61 6e 64 61 72 64  s a.non-standard
16480 20 63 6c 61 75 73 65 20 74 68 61 74 20 63 61 6e   clause that can
16490 20 61 70 70 65 61 72 20 69 6e 20 6d 61 6e 79 20   appear in many 
164a0 6f 74 68 65 72 20 53 51 4c 20 63 6f 6d 6d 61 6e  other SQL comman
164b0 64 73 2e 0a 49 74 20 69 73 20 67 69 76 65 6e 20  ds..It is given 
164c0 69 74 73 20 6f 77 6e 20 73 65 63 74 69 6f 6e 20  its own section 
164d0 69 6e 20 74 68 69 73 20 64 6f 63 75 6d 65 6e 74  in this document
164e0 20 62 65 63 61 75 73 65 20 69 74 20 69 73 20 6e   because it is n
164f0 6f 74 0a 70 61 72 74 20 6f 66 20 73 74 61 6e 64  ot.part of stand
16500 61 72 64 20 53 51 4c 20 61 6e 64 20 74 68 65 72  ard SQL and ther
16510 65 66 6f 72 65 20 6d 69 67 68 74 20 6e 6f 74 20  efore might not 
16520 62 65 20 66 61 6d 69 6c 69 61 72 2e 3c 2f 70 3e  be familiar.</p>
16530 0a 0a 3c 70 3e 54 68 65 20 73 79 6e 74 61 78 20  ..<p>The syntax 
16540 66 6f 72 20 74 68 65 20 4f 4e 20 43 4f 4e 46 4c  for the ON CONFL
16550 49 43 54 20 63 6c 61 75 73 65 20 69 73 20 61 73  ICT clause is as
16560 20 73 68 6f 77 6e 20 61 62 6f 76 65 20 66 6f 72   shown above for
16570 0a 74 68 65 20 43 52 45 41 54 45 20 54 41 42 4c  .the CREATE TABL
16580 45 20 63 6f 6d 6d 61 6e 64 2e 20 20 46 6f 72 20  E command.  For 
16590 74 68 65 20 49 4e 53 45 52 54 20 61 6e 64 0a 55  the INSERT and.U
165a0 50 44 41 54 45 20 63 6f 6d 6d 61 6e 64 73 2c 20  PDATE commands, 
165b0 74 68 65 20 6b 65 79 77 6f 72 64 73 20 22 4f 4e  the keywords "ON
165c0 20 43 4f 4e 46 4c 49 43 54 22 20 61 72 65 20 72   CONFLICT" are r
165d0 65 70 6c 61 63 65 64 20 62 79 20 22 4f 52 22 2c  eplaced by "OR",
165e0 20 74 6f 20 6d 61 6b 65 0a 74 68 65 20 73 79 6e   to make.the syn
165f0 74 61 78 20 73 65 65 6d 20 6d 6f 72 65 20 6e 61  tax seem more na
16600 74 75 72 61 6c 2e 20 20 46 6f 72 20 65 78 61 6d  tural.  For exam
16610 70 6c 65 2c 20 69 6e 73 74 65 61 64 20 6f 66 0a  ple, instead of.
16620 22 49 4e 53 45 52 54 20 4f 4e 20 43 4f 4e 46 4c  "INSERT ON CONFL
16630 49 43 54 20 49 47 4e 4f 52 45 22 20 77 65 20 68  ICT IGNORE" we h
16640 61 76 65 20 22 49 4e 53 45 52 54 20 4f 52 20 49  ave "INSERT OR I
16650 47 4e 4f 52 45 22 2e 0a 54 68 65 20 6b 65 79 77  GNORE"..The keyw
16660 6f 72 64 73 20 63 68 61 6e 67 65 20 62 75 74 20  ords change but 
16670 74 68 65 20 6d 65 61 6e 69 6e 67 20 6f 66 20 74  the meaning of t
16680 68 65 20 63 6c 61 75 73 65 20 69 73 20 74 68 65  he clause is the
16690 20 73 61 6d 65 0a 65 69 74 68 65 72 20 77 61 79   same.either way
166a0 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 4f 4e  .</p>..<p>The ON
166b0 20 43 4f 4e 46 4c 49 43 54 20 63 6c 61 75 73 65   CONFLICT clause
166c0 20 73 70 65 63 69 66 69 65 73 20 61 6e 20 61 6c   specifies an al
166d0 67 6f 72 69 74 68 6d 20 75 73 65 64 20 74 6f 20  gorithm used to 
166e0 72 65 73 6f 6c 76 65 0a 63 6f 6e 73 74 72 61 69  resolve.constrai
166f0 6e 74 20 63 6f 6e 66 6c 69 63 74 73 2e 20 20 54  nt conflicts.  T
16700 68 65 72 65 20 61 72 65 20 66 69 76 65 20 63 68  here are five ch
16710 6f 69 63 65 73 3a 20 52 4f 4c 4c 42 41 43 4b 2c  oices: ROLLBACK,
16720 20 41 42 4f 52 54 2c 0a 46 41 49 4c 2c 20 49 47   ABORT,.FAIL, IG
16730 4e 4f 52 45 2c 20 61 6e 64 20 52 45 50 4c 41 43  NORE, and REPLAC
16740 45 2e 20 54 68 65 20 64 65 66 61 75 6c 74 20 61  E. The default a
16750 6c 67 6f 72 69 74 68 6d 20 69 73 20 41 42 4f 52  lgorithm is ABOR
16760 54 2e 20 20 54 68 69 73 0a 69 73 20 77 68 61 74  T.  This.is what
16770 20 74 68 65 79 20 6d 65 61 6e 3a 3c 2f 70 3e 0a   they mean:</p>.
16780 0a 3c 64 6c 3e 0a 3c 64 74 3e 3c 62 3e 52 4f 4c  .<dl>.<dt><b>ROL
16790 4c 42 41 43 4b 3c 2f 62 3e 3c 2f 64 74 3e 0a 3c  LBACK</b></dt>.<
167a0 64 64 3e 3c 70 3e 57 68 65 6e 20 61 20 63 6f 6e  dd><p>When a con
167b0 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f  straint violatio
167c0 6e 20 6f 63 63 75 72 73 2c 20 61 6e 20 69 6d 6d  n occurs, an imm
167d0 65 64 69 61 74 65 20 52 4f 4c 4c 42 41 43 4b 0a  ediate ROLLBACK.
167e0 6f 63 63 75 72 73 2c 20 74 68 75 73 20 65 6e 64  occurs, thus end
167f0 69 6e 67 20 74 68 65 20 63 75 72 72 65 6e 74 20  ing the current 
16800 74 72 61 6e 73 61 63 74 69 6f 6e 2c 20 61 6e 64  transaction, and
16810 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20 61 62 6f   the command abo
16820 72 74 73 0a 77 69 74 68 20 61 20 72 65 74 75 72  rts.with a retur
16830 6e 20 63 6f 64 65 20 6f 66 20 53 51 4c 49 54 45  n code of SQLITE
16840 5f 43 4f 4e 53 54 52 41 49 4e 54 2e 20 20 49 66  _CONSTRAINT.  If
16850 20 6e 6f 20 74 72 61 6e 73 61 63 74 69 6f 6e 20   no transaction 
16860 69 73 0a 61 63 74 69 76 65 20 28 6f 74 68 65 72  is.active (other
16870 20 74 68 61 6e 20 74 68 65 20 69 6d 70 6c 69 65   than the implie
16880 64 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 74 68  d transaction th
16890 61 74 20 69 73 20 63 72 65 61 74 65 64 20 6f 6e  at is created on
168a0 20 65 76 65 72 79 0a 63 6f 6d 6d 61 6e 64 29 20   every.command) 
168b0 74 68 65 6e 20 74 68 69 73 20 61 6c 67 6f 72 69  then this algori
168c0 74 68 6d 20 77 6f 72 6b 73 20 74 68 65 20 73 61  thm works the sa
168d0 6d 65 20 61 73 20 41 42 4f 52 54 2e 3c 2f 70 3e  me as ABORT.</p>
168e0 3c 2f 64 64 3e 0a 0a 3c 64 74 3e 3c 62 3e 41 42  </dd>..<dt><b>AB
168f0 4f 52 54 3c 2f 62 3e 3c 2f 64 74 3e 0a 3c 64 64  ORT</b></dt>.<dd
16900 3e 3c 70 3e 57 68 65 6e 20 61 20 63 6f 6e 73 74  ><p>When a const
16910 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20  raint violation 
16920 6f 63 63 75 72 73 2c 20 74 68 65 20 63 6f 6d 6d  occurs, the comm
16930 61 6e 64 20 62 61 63 6b 73 20 6f 75 74 0a 61 6e  and backs out.an
16940 79 20 70 72 69 6f 72 20 63 68 61 6e 67 65 73 20  y prior changes 
16950 69 74 20 6d 69 67 68 74 20 68 61 76 65 20 6d 61  it might have ma
16960 64 65 20 61 6e 64 20 61 62 6f 72 74 73 20 77 69  de and aborts wi
16970 74 68 20 61 20 72 65 74 75 72 6e 20 63 6f 64 65  th a return code
16980 0a 6f 66 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54  .of SQLITE_CONST
16990 52 41 49 4e 54 2e 20 20 42 75 74 20 6e 6f 20 52  RAINT.  But no R
169a0 4f 4c 4c 42 41 43 4b 20 69 73 20 65 78 65 63 75  OLLBACK is execu
169b0 74 65 64 20 73 6f 20 63 68 61 6e 67 65 73 0a 66  ted so changes.f
169c0 72 6f 6d 20 70 72 69 6f 72 20 63 6f 6d 6d 61 6e  rom prior comman
169d0 64 73 20 77 69 74 68 69 6e 20 74 68 65 20 73 61  ds within the sa
169e0 6d 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 0a 61  me transaction.a
169f0 72 65 20 70 72 65 73 65 72 76 65 64 2e 20 20 54  re preserved.  T
16a00 68 69 73 20 69 73 20 74 68 65 20 64 65 66 61 75  his is the defau
16a10 6c 74 20 62 65 68 61 76 69 6f 72 2e 3c 2f 70 3e  lt behavior.</p>
16a20 3c 2f 64 64 3e 0a 0a 3c 64 74 3e 3c 62 3e 46 41  </dd>..<dt><b>FA
16a30 49 4c 3c 2f 62 3e 3c 2f 64 74 3e 0a 3c 64 64 3e  IL</b></dt>.<dd>
16a40 3c 70 3e 57 68 65 6e 20 61 20 63 6f 6e 73 74 72  <p>When a constr
16a50 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 6f  aint violation o
16a60 63 63 75 72 73 2c 20 74 68 65 20 63 6f 6d 6d 61  ccurs, the comma
16a70 6e 64 20 61 62 6f 72 74 73 20 77 69 74 68 20 61  nd aborts with a
16a80 0a 72 65 74 75 72 6e 20 63 6f 64 65 20 53 51 4c  .return code SQL
16a90 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 2e 20  ITE_CONSTRAINT. 
16aa0 20 42 75 74 20 61 6e 79 20 63 68 61 6e 67 65 73   But any changes
16ab0 20 74 6f 20 74 68 65 20 64 61 74 61 62 61 73 65   to the database
16ac0 20 74 68 61 74 0a 74 68 65 20 63 6f 6d 6d 61 6e   that.the comman
16ad0 64 20 6d 61 64 65 20 70 72 69 6f 72 20 74 6f 20  d made prior to 
16ae0 65 6e 63 6f 75 6e 74 65 72 69 6e 67 20 74 68 65  encountering the
16af0 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c   constraint viol
16b00 61 74 69 6f 6e 0a 61 72 65 20 70 72 65 73 65 72  ation.are preser
16b10 76 65 64 20 61 6e 64 20 61 72 65 20 6e 6f 74 20  ved and are not 
16b20 62 61 63 6b 65 64 20 6f 75 74 2e 20 20 46 6f 72  backed out.  For
16b30 20 65 78 61 6d 70 6c 65 2c 20 69 66 20 61 6e 20   example, if an 
16b40 55 50 44 41 54 45 0a 73 74 61 74 65 6d 65 6e 74  UPDATE.statement
16b50 20 65 6e 63 6f 75 6e 74 65 72 65 64 20 61 20 63   encountered a c
16b60 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74  onstraint violat
16b70 69 6f 6e 20 6f 6e 20 74 68 65 20 31 30 30 74 68  ion on the 100th
16b80 20 72 6f 77 20 74 68 61 74 0a 69 74 20 61 74 74   row that.it att
16b90 65 6d 70 74 73 20 74 6f 20 75 70 64 61 74 65 2c  empts to update,
16ba0 20 74 68 65 6e 20 74 68 65 20 66 69 72 73 74 20   then the first 
16bb0 39 39 20 72 6f 77 20 63 68 61 6e 67 65 73 20 61  99 row changes a
16bc0 72 65 20 70 72 65 73 65 72 76 65 64 0a 62 75 74  re preserved.but
16bd0 20 63 68 61 6e 67 65 73 20 74 6f 20 72 6f 77 73   changes to rows
16be0 20 31 30 30 20 61 6e 64 20 62 65 79 6f 6e 64 20   100 and beyond 
16bf0 6e 65 76 65 72 20 6f 63 63 75 72 2e 3c 2f 70 3e  never occur.</p>
16c00 3c 2f 64 64 3e 0a 0a 3c 64 74 3e 3c 62 3e 49 47  </dd>..<dt><b>IG
16c10 4e 4f 52 45 3c 2f 62 3e 3c 2f 64 74 3e 0a 3c 64  NORE</b></dt>.<d
16c20 64 3e 3c 70 3e 57 68 65 6e 20 61 20 63 6f 6e 73  d><p>When a cons
16c30 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e  traint violation
16c40 20 6f 63 63 75 72 73 2c 20 74 68 65 20 6f 6e 65   occurs, the one
16c50 20 72 6f 77 20 74 68 61 74 20 63 6f 6e 74 61 69   row that contai
16c60 6e 73 0a 74 68 65 20 63 6f 6e 73 74 72 61 69 6e  ns.the constrain
16c70 74 20 76 69 6f 6c 61 74 69 6f 6e 20 69 73 20 6e  t violation is n
16c80 6f 74 20 69 6e 73 65 72 74 65 64 20 6f 72 20 63  ot inserted or c
16c90 68 61 6e 67 65 64 2e 20 20 42 75 74 20 74 68 65  hanged.  But the
16ca0 20 63 6f 6d 6d 61 6e 64 0a 63 6f 6e 74 69 6e 75   command.continu
16cb0 65 73 20 65 78 65 63 75 74 69 6e 67 20 6e 6f 72  es executing nor
16cc0 6d 61 6c 6c 79 2e 20 20 4f 74 68 65 72 20 72 6f  mally.  Other ro
16cd0 77 73 20 62 65 66 6f 72 65 20 61 6e 64 20 61 66  ws before and af
16ce0 74 65 72 20 74 68 65 20 72 6f 77 20 74 68 61 74  ter the row that
16cf0 0a 63 6f 6e 74 61 69 6e 65 64 20 74 68 65 20 63  .contained the c
16d00 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74  onstraint violat
16d10 69 6f 6e 20 63 6f 6e 74 69 6e 75 65 20 74 6f 20  ion continue to 
16d20 62 65 20 69 6e 73 65 72 74 65 64 20 6f 72 20 75  be inserted or u
16d30 70 64 61 74 65 64 0a 6e 6f 72 6d 61 6c 6c 79 2e  pdated.normally.
16d40 20 20 4e 6f 20 65 72 72 6f 72 20 69 73 20 72 65    No error is re
16d50 74 75 72 6e 65 64 2e 3c 2f 70 3e 3c 2f 64 64 3e  turned.</p></dd>
16d60 0a 0a 3c 64 74 3e 3c 62 3e 52 45 50 4c 41 43 45  ..<dt><b>REPLACE
16d70 3c 2f 62 3e 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70  </b></dt>.<dd><p
16d80 3e 57 68 65 6e 20 61 20 55 4e 49 51 55 45 20 63  >When a UNIQUE c
16d90 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74  onstraint violat
16da0 69 6f 6e 20 6f 63 63 75 72 73 2c 20 74 68 65 20  ion occurs, the 
16db0 70 72 65 2d 65 78 69 73 74 69 6e 67 20 72 6f 77  pre-existing row
16dc0 73 0a 74 68 61 74 20 61 72 65 20 63 61 75 73 69  s.that are causi
16dd0 6e 67 20 74 68 65 20 63 6f 6e 73 74 72 61 69 6e  ng the constrain
16de0 74 20 76 69 6f 6c 61 74 69 6f 6e 20 61 72 65 20  t violation are 
16df0 72 65 6d 6f 76 65 64 20 70 72 69 6f 72 20 74 6f  removed prior to
16e00 20 69 6e 73 65 72 74 69 6e 67 0a 6f 72 20 75 70   inserting.or up
16e10 64 61 74 69 6e 67 20 74 68 65 20 63 75 72 72 65  dating the curre
16e20 6e 74 20 72 6f 77 2e 20 20 54 68 75 73 20 74 68  nt row.  Thus th
16e30 65 20 69 6e 73 65 72 74 20 6f 72 20 75 70 64 61  e insert or upda
16e40 74 65 20 61 6c 77 61 79 73 20 6f 63 63 75 72 73  te always occurs
16e50 2e 0a 54 68 65 20 63 6f 6d 6d 61 6e 64 20 63 6f  ..The command co
16e60 6e 74 69 6e 75 65 73 20 65 78 65 63 75 74 69 6e  ntinues executin
16e70 67 20 6e 6f 72 6d 61 6c 6c 79 2e 20 20 4e 6f 20  g normally.  No 
16e80 65 72 72 6f 72 20 69 73 20 72 65 74 75 72 6e 65  error is returne
16e90 64 2e 0a 49 66 20 61 20 4e 4f 54 20 4e 55 4c 4c  d..If a NOT NULL
16ea0 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c   constraint viol
16eb0 61 74 69 6f 6e 20 6f 63 63 75 72 73 2c 20 74 68  ation occurs, th
16ec0 65 20 4e 55 4c 4c 20 76 61 6c 75 65 20 69 73 20  e NULL value is 
16ed0 72 65 70 6c 61 63 65 64 0a 62 79 20 74 68 65 20  replaced.by the 
16ee0 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 66 6f  default value fo
16ef0 72 20 74 68 61 74 20 63 6f 6c 75 6d 6e 2e 20 20  r that column.  
16f00 49 66 20 74 68 65 20 63 6f 6c 75 6d 6e 20 68 61  If the column ha
16f10 73 20 6e 6f 20 64 65 66 61 75 6c 74 0a 76 61 6c  s no default.val
16f20 75 65 2c 20 74 68 65 6e 20 74 68 65 20 41 42 4f  ue, then the ABO
16f30 52 54 20 61 6c 67 6f 72 69 74 68 6d 20 69 73 20  RT algorithm is 
16f40 75 73 65 64 2e 20 20 49 66 20 61 20 43 48 45 43  used.  If a CHEC
16f50 4b 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f  K constraint vio
16f60 6c 61 74 69 6f 6e 0a 6f 63 63 75 72 73 20 74 68  lation.occurs th
16f70 65 6e 20 74 68 65 20 49 47 4e 4f 52 45 20 61 6c  en the IGNORE al
16f80 67 6f 72 69 74 68 6d 20 69 73 20 75 73 65 64 2e  gorithm is used.
16f90 3c 2f 70 3e 0a 0a 3c 70 3e 57 68 65 6e 20 74 68  </p>..<p>When th
16fa0 69 73 20 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f  is conflict reso
16fb0 6c 75 74 69 6f 6e 20 73 74 72 61 74 65 67 79 20  lution strategy 
16fc0 64 65 6c 65 74 65 73 20 72 6f 77 73 20 69 6e 20  deletes rows in 
16fd0 6f 72 64 65 72 20 74 6f 0a 73 61 74 69 73 66 79  order to.satisfy
16fe0 20 61 20 63 6f 6e 73 74 72 61 69 6e 74 2c 20 5b   a constraint, [
16ff0 43 52 45 41 54 45 20 54 52 49 47 47 45 52 20 7c  CREATE TRIGGER |
17000 20 64 65 6c 65 74 65 20 74 72 69 67 67 65 72 73   delete triggers
17010 5d 20 6f 6e 6c 79 20 66 69 72 65 20 69 66 0a 5b  ] only fire if.[
17020 72 65 63 75 72 73 69 76 65 5f 74 72 69 67 67 65  recursive_trigge
17030 72 73 20 70 72 61 67 6d 61 20 7c 20 72 65 63 75  rs pragma | recu
17040 72 73 69 76 65 20 74 72 69 67 67 65 72 73 5d 20  rsive triggers] 
17050 61 72 65 20 65 6e 61 62 6c 65 64 2e 3c 2f 70 3e  are enabled.</p>
17060 0a 0a 3c 70 3e 54 68 65 20 5b 73 71 6c 69 74 65  ..<p>The [sqlite
17070 33 5f 75 70 64 61 74 65 5f 68 6f 6f 6b 20 7c 20  3_update_hook | 
17080 75 70 64 61 74 65 20 68 6f 6f 6b 5d 20 69 73 20  update hook] is 
17090 6e 6f 74 20 69 6e 76 6f 6b 65 64 20 66 6f 72 20  not invoked for 
170a0 72 6f 77 73 20 74 68 61 74 0a 61 72 65 20 64 65  rows that.are de
170b0 6c 65 74 65 64 20 62 79 20 61 6e 20 4f 52 20 52  leted by an OR R
170c0 45 50 4c 41 43 45 20 72 65 73 6f 6c 75 74 69 6f  EPLACE resolutio
170d0 6e 2e 20 20 4e 6f 72 20 69 73 20 74 68 65 20 0a  n.  Nor is the .
170e0 5b 73 71 6c 69 74 65 33 5f 63 68 61 6e 67 65 73  [sqlite3_changes
170f0 20 7c 20 63 68 61 6e 67 65 20 63 6f 75 6e 74 65   | change counte
17100 72 5d 20 69 6e 63 72 65 6d 65 6e 74 65 64 2e 0a  r] incremented..
17110 54 68 65 20 65 78 63 65 70 74 69 6f 6e 61 6c 20  The exceptional 
17120 62 65 68 61 76 69 6f 72 73 20 64 65 66 69 6e 65  behaviors define
17130 64 20 69 6e 20 74 68 69 73 20 70 61 72 61 67 72  d in this paragr
17140 61 70 68 20 6d 69 67 68 74 20 63 68 61 6e 67 65  aph might change
17150 20 0a 69 6e 20 61 20 66 75 74 75 72 65 20 72 65   .in a future re
17160 6c 65 61 73 65 2e 3c 2f 70 3e 0a 3c 2f 64 6c 3e  lease.</p>.</dl>
17170 0a 0a 3c 70 3e 54 68 65 20 61 6c 67 6f 72 69 74  ..<p>The algorit
17180 68 6d 20 73 70 65 63 69 66 69 65 64 20 69 6e 20  hm specified in 
17190 74 68 65 20 4f 52 20 63 6c 61 75 73 65 20 6f 66  the OR clause of
171a0 20 61 20 49 4e 53 45 52 54 20 6f 72 20 55 50 44   a INSERT or UPD
171b0 41 54 45 0a 6f 76 65 72 72 69 64 65 73 20 61 6e  ATE.overrides an
171c0 79 20 61 6c 67 6f 72 69 74 68 6d 20 73 70 65 63  y algorithm spec
171d0 69 66 69 65 64 20 69 6e 20 61 20 43 52 45 41 54  ified in a CREAT
171e0 45 20 54 41 42 4c 45 2e 0a 49 66 20 6e 6f 20 61  E TABLE..If no a
171f0 6c 67 6f 72 69 74 68 6d 20 69 73 20 73 70 65 63  lgorithm is spec
17200 69 66 69 65 64 20 61 6e 79 77 68 65 72 65 2c 20  ified anywhere, 
17210 74 68 65 20 41 42 4f 52 54 20 61 6c 67 6f 72 69  the ABORT algori
17220 74 68 6d 20 69 73 20 75 73 65 64 2e 3c 2f 70 3e  thm is used.</p>
17230 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23  ..<tcl>.########
17240 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17250 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17260 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17270 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17280 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 52  ######.Section R
17290 45 49 4e 44 45 58 20 72 65 69 6e 64 65 78 20 52  EINDEX reindex R
172a0 45 49 4e 44 45 58 0a 0a 42 75 62 62 6c 65 44 69  EINDEX..BubbleDi
172b0 61 67 72 61 6d 20 72 65 69 6e 64 65 78 2d 73 74  agram reindex-st
172c0 6d 74 20 31 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e  mt 1.</tcl>..<p>
172d0 54 68 65 20 52 45 49 4e 44 45 58 20 63 6f 6d 6d  The REINDEX comm
172e0 61 6e 64 20 69 73 20 75 73 65 64 20 74 6f 20 64  and is used to d
172f0 65 6c 65 74 65 20 61 6e 64 20 72 65 63 72 65 61  elete and recrea
17300 74 65 20 69 6e 64 69 63 65 73 20 66 72 6f 6d 20  te indices from 
17310 73 63 72 61 74 63 68 2e 0a 54 68 69 73 20 69 73  scratch..This is
17320 20 75 73 65 66 75 6c 20 77 68 65 6e 20 74 68 65   useful when the
17330 20 64 65 66 69 6e 69 74 69 6f 6e 20 6f 66 20 61   definition of a
17340 20 63 6f 6c 6c 61 74 69 6f 6e 20 73 65 71 75 65   collation seque
17350 6e 63 65 20 68 61 73 20 63 68 61 6e 67 65 64 2e  nce has changed.
17360 0a 3c 2f 70 3e 0a 0a 3c 70 3e 49 6e 20 74 68 65  .</p>..<p>In the
17370 20 66 69 72 73 74 20 66 6f 72 6d 2c 20 61 6c 6c   first form, all
17380 20 69 6e 64 69 63 65 73 20 69 6e 20 61 6c 6c 20   indices in all 
17390 61 74 74 61 63 68 65 64 20 64 61 74 61 62 61 73  attached databas
173a0 65 73 20 74 68 61 74 20 75 73 65 20 74 68 65 0a  es that use the.
173b0 6e 61 6d 65 64 20 63 6f 6c 6c 61 74 69 6f 6e 20  named collation 
173c0 73 65 71 75 65 6e 63 65 20 61 72 65 20 72 65 63  sequence are rec
173d0 72 65 61 74 65 64 2e 20 49 6e 20 74 68 65 20 73  reated. In the s
173e0 65 63 6f 6e 64 20 66 6f 72 6d 2c 20 69 66 20 0a  econd form, if .
173f0 3c 69 3e 26 23 39 31 3b 64 61 74 61 62 61 73 65  <i>&#91;database
17400 2d 6e 61 6d 65 2e 26 23 39 33 3b 74 61 62 6c 65  -name.&#93;table
17410 2f 69 6e 64 65 78 2d 6e 61 6d 65 3c 2f 69 3e 20  /index-name</i> 
17420 69 64 65 6e 74 69 66 69 65 73 20 61 20 74 61 62  identifies a tab
17430 6c 65 2c 0a 74 68 65 6e 20 61 6c 6c 20 69 6e 64  le,.then all ind
17440 69 63 65 73 0a 61 73 73 6f 63 69 61 74 65 64 20  ices.associated 
17450 77 69 74 68 20 74 68 65 20 74 61 62 6c 65 20 61  with the table a
17460 72 65 20 72 65 62 75 69 6c 74 2e 20 49 66 20 61  re rebuilt. If a
17470 6e 20 69 6e 64 65 78 20 69 73 20 69 64 65 6e 74  n index is ident
17480 69 66 69 65 64 2c 20 74 68 65 6e 20 6f 6e 6c 79  ified, then only
17490 0a 74 68 69 73 20 73 70 65 63 69 66 69 63 20 69  .this specific i
174a0 6e 64 65 78 20 69 73 20 64 65 6c 65 74 65 64 20  ndex is deleted 
174b0 61 6e 64 20 72 65 63 72 65 61 74 65 64 2e 0a 3c  and recreated..<
174c0 2f 70 3e 0a 0a 3c 70 3e 49 66 20 6e 6f 20 3c 69  /p>..<p>If no <i
174d0 3e 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3c 2f  >database-name</
174e0 69 3e 20 69 73 20 73 70 65 63 69 66 69 65 64 20  i> is specified 
174f0 61 6e 64 20 74 68 65 72 65 20 65 78 69 73 74 73  and there exists
17500 20 62 6f 74 68 20 61 20 74 61 62 6c 65 20 6f 72   both a table or
17510 0a 69 6e 64 65 78 20 61 6e 64 20 61 20 63 6f 6c  .index and a col
17520 6c 61 74 69 6f 6e 20 73 65 71 75 65 6e 63 65 20  lation sequence 
17530 6f 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64  of the specified
17540 20 6e 61 6d 65 2c 20 74 68 65 6e 20 69 6e 64 69   name, then indi
17550 63 65 73 20 61 73 73 6f 63 69 61 74 65 64 0a 77  ces associated.w
17560 69 74 68 20 74 68 65 20 63 6f 6c 6c 61 74 69 6f  ith the collatio
17570 6e 20 73 65 71 75 65 6e 63 65 20 6f 6e 6c 79 20  n sequence only 
17580 61 72 65 20 72 65 63 6f 6e 73 74 72 75 63 74 65  are reconstructe
17590 64 2e 20 54 68 69 73 20 61 6d 62 69 67 75 69 74  d. This ambiguit
175a0 79 20 6d 61 79 20 62 65 0a 64 69 73 70 65 6c 6c  y may be.dispell
175b0 65 64 20 62 79 20 61 6c 77 61 79 73 20 73 70 65  ed by always spe
175c0 63 69 66 79 69 6e 67 20 61 20 3c 69 3e 64 61 74  cifying a <i>dat
175d0 61 62 61 73 65 2d 6e 61 6d 65 3c 2f 69 3e 20 77  abase-name</i> w
175e0 68 65 6e 20 72 65 69 6e 64 65 78 69 6e 67 20 61  hen reindexing a
175f0 0a 73 70 65 63 69 66 69 63 20 74 61 62 6c 65 20  .specific table 
17600 6f 72 20 69 6e 64 65 78 2e 0a 0a 3c 74 63 6c 3e  or index...<tcl>
17610 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  .###############
17620 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17630 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17640 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17650 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
17660 0a 53 65 63 74 69 6f 6e 20 52 45 50 4c 41 43 45  .Section REPLACE
17670 20 72 65 70 6c 61 63 65 20 52 45 50 4c 41 43 45   replace REPLACE
17680 0a 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 65  ..</tcl>..<p>The
17690 20 52 45 50 4c 41 43 45 20 63 6f 6d 6d 61 6e 64   REPLACE command
176a0 20 69 73 20 61 6e 20 61 6c 69 61 73 20 66 6f 72   is an alias for
176b0 20 74 68 65 20 22 5b 4f 4e 20 43 4f 4e 46 4c 49   the "[ON CONFLI
176c0 43 54 20 7c 20 49 4e 53 45 52 54 20 4f 52 20 52  CT | INSERT OR R
176d0 45 50 4c 41 43 45 5d 22 0a 76 61 72 69 61 6e 74  EPLACE]".variant
176e0 20 6f 66 20 74 68 65 20 5b 49 4e 53 45 52 54 5d   of the [INSERT]
176f0 20 63 6f 6d 6d 61 6e 64 2e 20 20 0a 54 68 69 73   command.  .This
17700 20 61 6c 69 61 73 20 69 73 20 70 72 6f 76 69 64   alias is provid
17710 65 64 20 66 6f 72 20 63 6f 6d 70 61 74 69 62 69  ed for compatibi
17720 6c 69 74 79 20 6f 74 68 65 72 20 53 51 4c 20 64  lity other SQL d
17730 61 74 61 62 61 73 65 20 65 6e 67 69 6e 65 73 2e  atabase engines.
17740 20 20 53 65 65 20 74 68 65 20 0a 5b 49 4e 53 45    See the .[INSE
17750 52 54 5d 20 63 6f 6d 6d 61 6e 64 20 64 6f 63 75  RT] command docu
17760 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 61 64  mentation for ad
17770 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61  ditional informa
17780 74 69 6f 6e 2e 3c 2f 70 3e 20 20 0a 0a 3c 74 63  tion.</p>  ..<tc
17790 6c 3e 0a 23 23 23 23 23 23 23 23 23 23 23 23 23  l>.#############
177a0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
177b0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
177c0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
177d0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
177e0 23 23 0a 53 65 63 74 69 6f 6e 20 53 45 4c 45 43  ##.Section SELEC
177f0 54 20 73 65 6c 65 63 74 20 7b 53 45 4c 45 43 54  T select {SELECT
17800 20 71 75 65 72 79 7d 0a 0a 42 75 62 62 6c 65 44   query}..BubbleD
17810 69 61 67 72 61 6d 20 73 65 6c 65 63 74 2d 73 74  iagram select-st
17820 6d 74 20 31 0a 42 75 62 62 6c 65 44 69 61 67 72  mt 1.BubbleDiagr
17830 61 6d 20 73 65 6c 65 63 74 2d 63 6f 72 65 0a 42  am select-core.B
17840 75 62 62 6c 65 44 69 61 67 72 61 6d 20 72 65 73  ubbleDiagram res
17850 75 6c 74 2d 63 6f 6c 75 6d 6e 0a 42 75 62 62 6c  ult-column.Bubbl
17860 65 44 69 61 67 72 61 6d 20 6a 6f 69 6e 2d 73 6f  eDiagram join-so
17870 75 72 63 65 0a 42 75 62 62 6c 65 44 69 61 67 72  urce.BubbleDiagr
17880 61 6d 20 73 69 6e 67 6c 65 2d 73 6f 75 72 63 65  am single-source
17890 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 6a  .BubbleDiagram j
178a0 6f 69 6e 2d 6f 70 0a 42 75 62 62 6c 65 44 69 61  oin-op.BubbleDia
178b0 67 72 61 6d 20 6a 6f 69 6e 2d 63 6f 6e 73 74 72  gram join-constr
178c0 61 69 6e 74 0a 42 75 62 62 6c 65 44 69 61 67 72  aint.BubbleDiagr
178d0 61 6d 20 6f 72 64 65 72 69 6e 67 2d 74 65 72 6d  am ordering-term
178e0 0a 42 75 62 62 6c 65 44 69 61 67 72 61 6d 20 63  .BubbleDiagram c
178f0 6f 6d 70 6f 75 6e 64 2d 6f 70 65 72 61 74 6f 72  ompound-operator
17900 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68 65 20  .</tcl>..<p>The 
17910 53 45 4c 45 43 54 20 73 74 61 74 65 6d 65 6e 74  SELECT statement
17920 20 69 73 20 75 73 65 64 20 74 6f 20 71 75 65 72   is used to quer
17930 79 20 74 68 65 20 64 61 74 61 62 61 73 65 2e 20  y the database. 
17940 20 54 68 65 0a 72 65 73 75 6c 74 20 6f 66 20 61   The.result of a
17950 20 53 45 4c 45 43 54 20 69 73 20 7a 65 72 6f 20   SELECT is zero 
17960 6f 72 20 6d 6f 72 65 20 72 6f 77 73 20 6f 66 20  or more rows of 
17970 64 61 74 61 20 77 68 65 72 65 20 65 61 63 68 20  data where each 
17980 72 6f 77 0a 68 61 73 20 61 20 66 69 78 65 64 20  row.has a fixed 
17990 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e  number of column
179a0 73 2e 20 20 54 68 65 20 6e 75 6d 62 65 72 20 6f  s.  The number o
179b0 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65  f columns in the
179c0 0a 72 65 73 75 6c 74 20 69 73 20 73 70 65 63 69  .result is speci
179d0 66 69 65 64 20 62 79 20 74 68 65 20 65 78 70 72  fied by the expr
179e0 65 73 73 69 6f 6e 20 6c 69 73 74 20 69 6e 20 62  ession list in b
179f0 65 74 77 65 65 6e 20 74 68 65 0a 53 45 4c 45 43  etween the.SELEC
17a00 54 20 61 6e 64 20 46 52 4f 4d 20 6b 65 79 77 6f  T and FROM keywo
17a10 72 64 73 2e 20 20 41 6e 79 20 61 72 62 69 74 72  rds.  Any arbitr
17a20 61 72 79 20 65 78 70 72 65 73 73 69 6f 6e 20 63  ary expression c
17a30 61 6e 20 62 65 20 75 73 65 64 0a 61 73 20 61 20  an be used.as a 
17a40 72 65 73 75 6c 74 2e 20 20 49 66 20 61 20 72 65  result.  If a re
17a50 73 75 6c 74 20 65 78 70 72 65 73 73 69 6f 6e 20  sult expression 
17a60 69 73 20 7d 0a 68 64 5f 70 75 74 73 20 22 5b 4f  is }.hd_puts "[O
17a70 70 65 72 61 74 6f 72 20 2a 5d 20 74 68 65 6e 20  perator *] then 
17a80 61 6c 6c 20 63 6f 6c 75 6d 6e 73 20 6f 66 20 61  all columns of a
17a90 6c 6c 20 74 61 62 6c 65 73 20 61 72 65 20 73 75  ll tables are su
17aa0 62 73 74 69 74 75 74 65 64 5c 6e 22 0a 68 64 5f  bstituted\n".hd_
17ab0 70 75 74 73 20 22 66 6f 72 20 74 68 61 74 20 6f  puts "for that o
17ac0 6e 65 20 65 78 70 72 65 73 73 69 6f 6e 2e 20 20  ne expression.  
17ad0 49 66 20 74 68 65 20 65 78 70 72 65 73 73 69 6f  If the expressio
17ae0 6e 20 69 73 20 74 68 65 20 6e 61 6d 65 20 6f 66  n is the name of
17af0 5c 6e 22 0a 68 64 5f 70 75 74 73 20 22 61 20 74  \n".hd_puts "a t
17b00 61 62 6c 65 20 66 6f 6c 6c 6f 77 65 64 20 62 79  able followed by
17b10 20 5b 4f 70 65 72 61 74 6f 72 20 2e 2a 5d 20 74   [Operator .*] t
17b20 68 65 6e 20 74 68 65 20 72 65 73 75 6c 74 20 69  hen the result i
17b30 73 20 61 6c 6c 20 63 6f 6c 75 6d 6e 73 5c 6e 22  s all columns\n"
17b40 0a 68 64 5f 70 75 74 73 20 7b 69 6e 20 74 68 61  .hd_puts {in tha
17b50 74 20 6f 6e 65 20 74 61 62 6c 65 2e 3c 2f 70 3e  t one table.</p>
17b60 0a 0a 3c 70 3e 54 68 65 20 44 49 53 54 49 4e 43  ..<p>The DISTINC
17b70 54 20 6b 65 79 77 6f 72 64 20 63 61 75 73 65 73  T keyword causes
17b80 20 61 20 73 75 62 73 65 74 20 6f 66 20 72 65 73   a subset of res
17b90 75 6c 74 20 72 6f 77 73 20 74 6f 20 62 65 20 72  ult rows to be r
17ba0 65 74 75 72 6e 65 64 2c 20 0a 69 6e 20 77 68 69  eturned, .in whi
17bb0 63 68 20 65 61 63 68 20 72 65 73 75 6c 74 20 72  ch each result r
17bc0 6f 77 20 69 73 20 64 69 66 66 65 72 65 6e 74 2e  ow is different.
17bd0 20 20 4e 55 4c 4c 20 76 61 6c 75 65 73 20 61 72    NULL values ar
17be0 65 20 6e 6f 74 20 74 72 65 61 74 65 64 20 61 73  e not treated as
17bf0 20 0a 64 69 73 74 69 6e 63 74 20 66 72 6f 6d 20   .distinct from 
17c00 65 61 63 68 20 6f 74 68 65 72 2e 20 20 54 68 65  each other.  The
17c10 20 64 65 66 61 75 6c 74 20 62 65 68 61 76 69 6f   default behavio
17c20 72 20 69 73 20 74 68 61 74 20 61 6c 6c 20 72 65  r is that all re
17c30 73 75 6c 74 20 72 6f 77 73 20 0a 62 65 20 72 65  sult rows .be re
17c40 74 75 72 6e 65 64 2c 20 77 68 69 63 68 20 63 61  turned, which ca
17c50 6e 20 62 65 20 6d 61 64 65 20 65 78 70 6c 69 63  n be made explic
17c60 69 74 20 77 69 74 68 20 74 68 65 20 6b 65 79 77  it with the keyw
17c70 6f 72 64 20 41 4c 4c 2e 3c 2f 70 3e 0a 0a 3c 70  ord ALL.</p>..<p
17c80 3e 54 68 65 20 71 75 65 72 79 20 69 73 20 65 78  >The query is ex
17c90 65 63 75 74 65 64 20 61 67 61 69 6e 73 74 20 6f  ecuted against o
17ca0 6e 65 20 6f 72 20 6d 6f 72 65 20 74 61 62 6c 65  ne or more table
17cb0 73 20 73 70 65 63 69 66 69 65 64 20 61 66 74 65  s specified afte
17cc0 72 0a 74 68 65 20 46 52 4f 4d 20 6b 65 79 77 6f  r.the FROM keywo
17cd0 72 64 2e 20 20 49 66 20 6d 75 6c 74 69 70 6c 65  rd.  If multiple
17ce0 20 74 61 62 6c 65 73 20 6e 61 6d 65 73 20 61 72   tables names ar
17cf0 65 20 73 65 70 61 72 61 74 65 64 20 62 79 20 63  e separated by c
17d00 6f 6d 6d 61 73 2c 0a 74 68 65 6e 20 74 68 65 20  ommas,.then the 
17d10 71 75 65 72 79 20 69 73 20 61 67 61 69 6e 73 74  query is against
17d20 20 74 68 65 20 63 72 6f 73 73 20 6a 6f 69 6e 20   the cross join 
17d30 6f 66 20 74 68 65 20 76 61 72 69 6f 75 73 20 74  of the various t
17d40 61 62 6c 65 73 2e 0a 54 68 65 20 66 75 6c 6c 20  ables..The full 
17d50 53 51 4c 2d 39 32 20 6a 6f 69 6e 20 73 79 6e 74  SQL-92 join synt
17d60 61 78 20 63 61 6e 20 61 6c 73 6f 20 62 65 20 75  ax can also be u
17d70 73 65 64 20 74 6f 20 73 70 65 63 69 66 79 20 6a  sed to specify j
17d80 6f 69 6e 73 2e 0a 41 20 73 75 62 2d 71 75 65 72  oins..A sub-quer
17d90 79 0a 69 6e 20 70 61 72 65 6e 74 68 65 73 65 73  y.in parentheses
17da0 20 6d 61 79 20 62 65 20 73 75 62 73 74 69 74 75   may be substitu
17db0 74 65 64 20 66 6f 72 20 61 6e 79 20 74 61 62 6c  ted for any tabl
17dc0 65 20 6e 61 6d 65 20 69 6e 20 74 68 65 20 46 52  e name in the FR
17dd0 4f 4d 20 63 6c 61 75 73 65 2e 0a 54 68 65 20 65  OM clause..The e
17de0 6e 74 69 72 65 20 46 52 4f 4d 20 63 6c 61 75 73  ntire FROM claus
17df0 65 20 6d 61 79 20 62 65 20 6f 6d 69 74 74 65 64  e may be omitted
17e00 2c 20 69 6e 20 77 68 69 63 68 20 63 61 73 65 20  , in which case 
17e10 74 68 65 20 72 65 73 75 6c 74 20 69 73 20 61 0a  the result is a.
17e20 73 69 6e 67 6c 65 20 72 6f 77 20 63 6f 6e 73 69  single row consi
17e30 73 74 69 6e 67 20 6f 66 20 74 68 65 20 76 61 6c  sting of the val
17e40 75 65 73 20 6f 66 20 74 68 65 20 65 78 70 72 65  ues of the expre
17e50 73 73 69 6f 6e 20 6c 69 73 74 2e 0a 3c 2f 70 3e  ssion list..</p>
17e60 0a 0a 3c 70 3e 54 68 65 20 57 48 45 52 45 20 63  ..<p>The WHERE c
17e70 6c 61 75 73 65 20 63 61 6e 20 62 65 20 75 73 65  lause can be use
17e80 64 20 74 6f 20 6c 69 6d 69 74 20 74 68 65 20 6e  d to limit the n
17e90 75 6d 62 65 72 20 6f 66 20 72 6f 77 73 20 6f 76  umber of rows ov
17ea0 65 72 0a 77 68 69 63 68 20 74 68 65 20 71 75 65  er.which the que
17eb0 72 79 20 6f 70 65 72 61 74 65 73 2e 3c 2f 70 3e  ry operates.</p>
17ec0 0a 0a 3c 70 3e 54 68 65 20 47 52 4f 55 50 20 42  ..<p>The GROUP B
17ed0 59 20 63 6c 61 75 73 65 20 63 61 75 73 65 73 20  Y clause causes 
17ee0 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 72 6f 77 73  one or more rows
17ef0 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74 20 74   of the result t
17f00 6f 0a 62 65 20 63 6f 6d 62 69 6e 65 64 20 69 6e  o.be combined in
17f10 74 6f 20 61 20 73 69 6e 67 6c 65 20 72 6f 77 20  to a single row 
17f20 6f 66 20 6f 75 74 70 75 74 2e 20 20 54 68 69 73  of output.  This
17f30 20 69 73 20 65 73 70 65 63 69 61 6c 6c 79 20 75   is especially u
17f40 73 65 66 75 6c 0a 77 68 65 6e 20 74 68 65 20 72  seful.when the r
17f50 65 73 75 6c 74 20 63 6f 6e 74 61 69 6e 73 20 61  esult contains a
17f60 67 67 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f  ggregate functio
17f70 6e 73 2e 20 20 54 68 65 20 65 78 70 72 65 73 73  ns.  The express
17f80 69 6f 6e 73 20 69 6e 0a 74 68 65 20 47 52 4f 55  ions in.the GROU
17f90 50 20 42 59 20 63 6c 61 75 73 65 20 64 6f 20 3c  P BY clause do <
17fa0 65 6d 3e 6e 6f 74 3c 2f 65 6d 3e 20 68 61 76 65  em>not</em> have
17fb0 20 74 6f 20 62 65 20 65 78 70 72 65 73 73 69 6f   to be expressio
17fc0 6e 73 20 74 68 61 74 0a 61 70 70 65 61 72 20 69  ns that.appear i
17fd0 6e 20 74 68 65 20 72 65 73 75 6c 74 2e 20 20 54  n the result.  T
17fe0 68 65 20 48 41 56 49 4e 47 20 63 6c 61 75 73 65  he HAVING clause
17ff0 20 69 73 20 73 69 6d 69 6c 61 72 20 74 6f 20 57   is similar to W
18000 48 45 52 45 20 65 78 63 65 70 74 0a 74 68 61 74  HERE except.that
18010 20 48 41 56 49 4e 47 20 61 70 70 6c 69 65 73 20   HAVING applies 
18020 61 66 74 65 72 20 67 72 6f 75 70 69 6e 67 20 68  after grouping h
18030 61 73 20 6f 63 63 75 72 72 65 64 2e 20 20 54 68  as occurred.  Th
18040 65 20 48 41 56 49 4e 47 20 65 78 70 72 65 73 73  e HAVING express
18050 69 6f 6e 0a 6d 61 79 20 72 65 66 65 72 20 74 6f  ion.may refer to
18060 20 76 61 6c 75 65 73 2c 20 65 76 65 6e 20 61 67   values, even ag
18070 67 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e  gregate function
18080 73 2c 20 74 68 61 74 20 61 72 65 20 6e 6f 74 20  s, that are not 
18090 69 6e 20 74 68 65 20 72 65 73 75 6c 74 2e 3c 2f  in the result.</
180a0 70 3e 0a 0a 3c 70 3e 54 68 65 20 4f 52 44 45 52  p>..<p>The ORDER
180b0 20 42 59 20 63 6c 61 75 73 65 20 63 61 75 73 65   BY clause cause
180c0 73 20 74 68 65 20 6f 75 74 70 75 74 20 72 6f 77  s the output row
180d0 73 20 74 6f 20 62 65 20 73 6f 72 74 65 64 2e 20  s to be sorted. 
180e0 20 0a 54 68 65 20 61 72 67 75 6d 65 6e 74 20 74   .The argument t
180f0 6f 20 4f 52 44 45 52 20 42 59 20 69 73 20 61 20  o ORDER BY is a 
18100 6c 69 73 74 20 6f 66 20 65 78 70 72 65 73 73 69  list of expressi
18110 6f 6e 73 20 74 68 61 74 20 61 72 65 20 75 73 65  ons that are use
18120 64 20 61 73 20 74 68 65 0a 6b 65 79 20 66 6f 72  d as the.key for
18130 20 74 68 65 20 73 6f 72 74 2e 20 20 54 68 65 20   the sort.  The 
18140 65 78 70 72 65 73 73 69 6f 6e 73 20 64 6f 20 6e  expressions do n
18150 6f 74 20 68 61 76 65 20 74 6f 20 62 65 20 70 61  ot have to be pa
18160 72 74 20 6f 66 20 74 68 65 0a 72 65 73 75 6c 74  rt of the.result
18170 20 66 6f 72 20 61 20 73 69 6d 70 6c 65 20 53 45   for a simple SE
18180 4c 45 43 54 2c 20 62 75 74 20 69 6e 20 61 20 63  LECT, but in a c
18190 6f 6d 70 6f 75 6e 64 20 53 45 4c 45 43 54 20 65  ompound SELECT e
181a0 61 63 68 20 73 6f 72 74 0a 65 78 70 72 65 73 73  ach sort.express
181b0 69 6f 6e 20 6d 75 73 74 20 65 78 61 63 74 6c 79  ion must exactly
181c0 20 6d 61 74 63 68 20 6f 6e 65 20 6f 66 20 74 68   match one of th
181d0 65 20 72 65 73 75 6c 74 20 63 6f 6c 75 6d 6e 73  e result columns
181e0 2e 20 20 45 61 63 68 0a 73 6f 72 74 20 65 78 70  .  Each.sort exp
181f0 72 65 73 73 69 6f 6e 20 6d 61 79 20 62 65 20 6f  ression may be o
18200 70 74 69 6f 6e 61 6c 6c 79 20 66 6f 6c 6c 6f 77  ptionally follow
18210 65 64 20 62 79 20 61 20 43 4f 4c 4c 41 54 45 20  ed by a COLLATE 
18220 6b 65 79 77 6f 72 64 20 61 6e 64 0a 74 68 65 20  keyword and.the 
18230 6e 61 6d 65 20 6f 66 20 61 20 63 6f 6c 6c 61 74  name of a collat
18240 69 6e 67 20 66 75 6e 63 74 69 6f 6e 20 75 73 65  ing function use
18250 64 20 66 6f 72 20 6f 72 64 65 72 69 6e 67 20 74  d for ordering t
18260 65 78 74 20 61 6e 64 2f 6f 72 0a 6b 65 79 77 6f  ext and/or.keywo
18270 72 64 73 20 41 53 43 20 6f 72 20 44 45 53 43 20  rds ASC or DESC 
18280 74 6f 20 73 70 65 63 69 66 79 20 74 68 65 20 73  to specify the s
18290 6f 72 74 20 6f 72 64 65 72 2e 3c 2f 70 3e 0a 0a  ort order.</p>..
182a0 3c 70 3e 45 61 63 68 20 74 65 72 6d 20 6f 66 20  <p>Each term of 
182b0 61 6e 20 4f 52 44 45 52 20 42 59 20 65 78 70 72  an ORDER BY expr
182c0 65 73 73 69 6f 6e 20 69 73 20 70 72 6f 63 65 73  ession is proces
182d0 73 65 64 20 61 73 20 66 6f 6c 6c 6f 77 73 3a 3c  sed as follows:<
182e0 2f 70 3e 0a 0a 3c 6f 6c 3e 0a 3c 6c 69 3e 3c 70  /p>..<ol>.<li><p
182f0 3e 49 66 20 74 68 65 20 4f 52 44 45 52 20 42 59  >If the ORDER BY
18300 20 65 78 70 72 65 73 73 69 6f 6e 20 69 73 20 61   expression is a
18310 20 63 6f 6e 73 74 61 6e 74 20 69 6e 74 65 67 65   constant intege
18320 72 20 4b 20 74 68 65 6e 20 74 68 65 0a 6f 75 74  r K then the.out
18330 70 75 74 20 69 73 20 6f 72 64 65 72 65 64 20 62  put is ordered b
18340 79 20 74 68 65 20 4b 2d 74 68 20 63 6f 6c 75 6d  y the K-th colum
18350 6e 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74 20  n of the result 
18360 73 65 74 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a 3c 6c  set.</p></li>.<l
18370 69 3e 3c 70 3e 49 66 20 74 68 65 20 4f 52 44 45  i><p>If the ORDE
18380 52 20 42 59 20 65 78 70 72 65 73 73 69 6f 6e 20  R BY expression 
18390 69 73 20 61 6e 20 69 64 65 6e 74 69 66 69 65 72  is an identifier
183a0 20 61 6e 64 20 6f 6e 65 20 6f 66 20 74 68 65 0a   and one of the.
183b0 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 20 68  output columns h
183c0 61 73 20 61 6e 20 61 6c 69 61 73 20 62 79 20 74  as an alias by t
183d0 68 65 20 73 61 6d 65 20 6e 61 6d 65 2c 20 74 68  he same name, th
183e0 65 6e 20 74 68 65 20 6f 75 74 70 75 74 20 69 73  en the output is
183f0 0a 6f 72 64 65 72 65 64 20 62 79 20 74 68 65 20  .ordered by the 
18400 69 64 65 6e 74 69 66 69 65 64 20 63 6f 6c 75 6d  identified colum
18410 6e 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a 3c 6c 69 3e  n.</p></li>.<li>
18420 3c 70 3e 4f 74 68 65 72 77 69 73 65 2c 20 74 68  <p>Otherwise, th
18430 65 20 4f 52 44 45 52 20 42 59 20 65 78 70 72 65  e ORDER BY expre
18440 73 73 69 6f 6e 20 69 73 20 65 76 61 6c 75 61 74  ssion is evaluat
18450 65 64 20 61 6e 64 20 74 68 65 20 6f 75 74 70 75  ed and the outpu
18460 74 20 0a 69 73 20 6f 72 64 65 72 65 64 20 62 79  t .is ordered by
18470 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68   the value of th
18480 61 74 20 65 78 70 72 65 73 73 69 6f 6e 2e 3c 2f  at expression.</
18490 70 3e 3c 2f 6c 69 3e 0a 3c 2f 6f 6c 3e 0a 0a 3c  p></li>.</ol>..<
184a0 70 3e 49 6e 20 61 20 63 6f 6d 70 6f 75 6e 64 20  p>In a compound 
184b0 53 45 4c 45 43 54 20 73 74 61 74 65 6d 65 6e 74  SELECT statement
184c0 2c 20 74 68 65 20 74 68 69 72 64 20 4f 52 44 45  , the third ORDE
184d0 52 20 42 59 20 6d 61 74 63 68 69 6e 67 20 72 75  R BY matching ru
184e0 6c 65 0a 72 65 71 75 69 72 65 73 20 74 68 61 74  le.requires that
184f0 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20   the expression 
18500 62 65 20 69 64 65 6e 74 69 63 61 6c 20 74 6f 20  be identical to 
18510 6f 6e 65 20 6f 66 20 74 68 65 20 63 6f 6c 75 6d  one of the colum
18520 6e 73 20 69 6e 0a 74 68 65 20 72 65 73 75 6c 74  ns in.the result
18530 20 73 65 74 2e 20 20 54 68 65 20 74 68 72 65 65   set.  The three
18540 20 72 75 6c 65 73 20 61 72 65 20 66 69 72 73 74   rules are first
18550 20 61 70 70 6c 69 65 64 20 74 6f 20 74 68 65 20   applied to the 
18560 6c 65 66 74 2d 6d 6f 73 74 0a 53 45 4c 45 43 54  left-most.SELECT
18570 20 69 6e 20 74 68 65 20 63 6f 6d 70 6f 75 6e 64   in the compound
18580 2e 20 20 49 66 20 61 20 6d 61 74 63 68 20 69 73  .  If a match is
18590 20 66 6f 75 6e 64 2c 20 74 68 65 20 73 65 61 72   found, the sear
185a0 63 68 20 73 74 6f 70 73 2e 20 20 4f 74 68 65 72  ch stops.  Other
185b0 77 69 73 65 2c 0a 74 68 65 20 6e 65 78 74 20 53  wise,.the next S
185c0 45 4c 45 43 54 20 74 6f 20 74 68 65 20 72 69 67  ELECT to the rig
185d0 68 74 20 69 73 20 74 72 69 65 64 2e 20 20 54 68  ht is tried.  Th
185e0 69 73 20 63 6f 6e 74 69 6e 75 65 73 20 75 6e 74  is continues unt
185f0 69 6c 20 61 20 6d 61 74 63 68 0a 69 73 20 66 6f  il a match.is fo
18600 75 6e 64 2e 20 20 45 61 63 68 20 74 65 72 6d 20  und.  Each term 
18610 6f 66 20 74 68 65 20 4f 52 44 45 52 20 42 59 20  of the ORDER BY 
18620 63 6c 61 75 73 65 20 69 73 20 70 72 6f 63 65 73  clause is proces
18630 73 65 64 20 73 65 70 61 72 61 74 65 6c 79 20 0a  sed separately .
18640 61 6e 64 20 6d 61 79 20 63 6f 6d 65 20 66 72 6f  and may come fro
18650 6d 20 64 69 66 66 65 72 65 6e 74 20 53 45 4c 45  m different SELE
18660 43 54 20 73 74 61 74 65 6d 65 6e 74 73 20 69 6e  CT statements in
18670 20 74 68 65 20 63 6f 6d 70 6f 75 6e 64 2e 3c 2f   the compound.</
18680 70 3e 0a 0a 3c 70 3e 54 68 65 20 4c 49 4d 49 54  p>..<p>The LIMIT
18690 20 63 6c 61 75 73 65 20 70 6c 61 63 65 73 20 61   clause places a
186a0 6e 20 75 70 70 65 72 20 62 6f 75 6e 64 20 6f 6e  n upper bound on
186b0 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 72   the number of r
186c0 6f 77 73 0a 72 65 74 75 72 6e 65 64 20 69 6e 20  ows.returned in 
186d0 74 68 65 20 72 65 73 75 6c 74 2e 20 20 41 20 6e  the result.  A n
186e0 65 67 61 74 69 76 65 20 4c 49 4d 49 54 20 69 6e  egative LIMIT in
186f0 64 69 63 61 74 65 73 20 6e 6f 20 75 70 70 65 72  dicates no upper
18700 20 62 6f 75 6e 64 2e 0a 54 68 65 20 6f 70 74 69   bound..The opti
18710 6f 6e 61 6c 20 4f 46 46 53 45 54 20 66 6f 6c 6c  onal OFFSET foll
18720 6f 77 69 6e 67 20 4c 49 4d 49 54 20 73 70 65 63  owing LIMIT spec
18730 69 66 69 65 73 20 68 6f 77 20 6d 61 6e 79 0a 72  ifies how many.r
18740 6f 77 73 20 74 6f 20 73 6b 69 70 20 61 74 20 74  ows to skip at t
18750 68 65 20 62 65 67 69 6e 6e 69 6e 67 20 6f 66 20  he beginning of 
18760 74 68 65 20 72 65 73 75 6c 74 20 73 65 74 2e 0a  the result set..
18770 49 6e 20 61 20 63 6f 6d 70 6f 75 6e 64 20 71 75  In a compound qu
18780 65 72 79 2c 20 74 68 65 20 4c 49 4d 49 54 20 63  ery, the LIMIT c
18790 6c 61 75 73 65 20 6d 61 79 20 6f 6e 6c 79 20 61  lause may only a
187a0 70 70 65 61 72 20 6f 6e 20 74 68 65 0a 66 69 6e  ppear on the.fin
187b0 61 6c 20 53 45 4c 45 43 54 20 73 74 61 74 65 6d  al SELECT statem
187c0 65 6e 74 2e 0a 54 68 65 20 6c 69 6d 69 74 20 69  ent..The limit i
187d0 73 20 61 70 70 6c 69 65 64 20 74 6f 20 74 68 65  s applied to the
187e0 20 65 6e 74 69 72 65 20 71 75 65 72 79 20 6e 6f   entire query no
187f0 74 0a 74 6f 20 74 68 65 20 69 6e 64 69 76 69 64  t.to the individ
18800 75 61 6c 20 53 45 4c 45 43 54 20 73 74 61 74 65  ual SELECT state
18810 6d 65 6e 74 20 74 6f 20 77 68 69 63 68 20 69 74  ment to which it
18820 20 69 73 20 61 74 74 61 63 68 65 64 2e 0a 4e 6f   is attached..No
18830 74 65 20 74 68 61 74 20 69 66 20 74 68 65 20 4f  te that if the O
18840 46 46 53 45 54 20 6b 65 79 77 6f 72 64 20 69 73  FFSET keyword is
18850 20 75 73 65 64 20 69 6e 20 74 68 65 20 4c 49 4d   used in the LIM
18860 49 54 20 63 6c 61 75 73 65 2c 20 74 68 65 6e 20  IT clause, then 
18870 74 68 65 0a 6c 69 6d 69 74 20 69 73 20 74 68 65  the.limit is the
18880 20 66 69 72 73 74 20 6e 75 6d 62 65 72 20 61 6e   first number an
18890 64 20 74 68 65 20 6f 66 66 73 65 74 20 69 73 20  d the offset is 
188a0 74 68 65 20 73 65 63 6f 6e 64 20 6e 75 6d 62 65  the second numbe
188b0 72 2e 20 20 49 66 20 61 0a 63 6f 6d 6d 61 20 69  r.  If a.comma i
188c0 73 20 75 73 65 64 20 69 6e 73 74 65 61 64 20 6f  s used instead o
188d0 66 20 74 68 65 20 4f 46 46 53 45 54 20 6b 65 79  f the OFFSET key
188e0 77 6f 72 64 2c 20 74 68 65 6e 20 74 68 65 20 6f  word, then the o
188f0 66 66 73 65 74 20 69 73 20 74 68 65 0a 66 69 72  ffset is the.fir
18900 73 74 20 6e 75 6d 62 65 72 20 61 6e 64 20 74 68  st number and th
18910 65 20 6c 69 6d 69 74 20 69 73 20 74 68 65 20 73  e limit is the s
18920 65 63 6f 6e 64 20 6e 75 6d 62 65 72 2e 20 20 54  econd number.  T
18930 68 69 73 20 73 65 65 6d 69 6e 67 0a 63 6f 6e 74  his seeming.cont
18940 72 61 64 69 74 69 6f 6e 20 69 73 20 69 6e 74 65  radition is inte
18950 6e 74 69 6f 6e 61 6c 20 2d 20 69 74 20 6d 61 78  ntional - it max
18960 69 6d 69 7a 65 73 20 63 6f 6d 70 61 74 69 62 69  imizes compatibi
18970 6c 69 74 79 20 77 69 74 68 20 6c 65 67 61 63 79  lity with legacy
18980 0a 53 51 4c 20 64 61 74 61 62 61 73 65 20 73 79  .SQL database sy
18990 73 74 65 6d 73 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e  stems..</p>..<p>
189a0 41 20 63 6f 6d 70 6f 75 6e 64 20 53 45 4c 45 43  A compound SELEC
189b0 54 20 69 73 20 66 6f 72 6d 65 64 20 66 72 6f 6d  T is formed from
189c0 20 74 77 6f 20 6f 72 20 6d 6f 72 65 20 73 69 6d   two or more sim
189d0 70 6c 65 20 53 45 4c 45 43 54 73 20 63 6f 6e 6e  ple SELECTs conn
189e0 65 63 74 65 64 0a 62 79 20 6f 6e 65 20 6f 66 20  ected.by one of 
189f0 74 68 65 20 6f 70 65 72 61 74 6f 72 73 20 55 4e  the operators UN
18a00 49 4f 4e 2c 20 55 4e 49 4f 4e 20 41 4c 4c 2c 20  ION, UNION ALL, 
18a10 49 4e 54 45 52 53 45 43 54 2c 20 6f 72 20 45 58  INTERSECT, or EX
18a20 43 45 50 54 2e 20 20 49 6e 0a 61 20 63 6f 6d 70  CEPT.  In.a comp
18a30 6f 75 6e 64 20 53 45 4c 45 43 54 2c 20 61 6c 6c  ound SELECT, all
18a40 20 74 68 65 20 63 6f 6e 73 74 69 74 75 65 6e 74   the constituent
18a50 20 53 45 4c 45 43 54 73 20 6d 75 73 74 20 73 70   SELECTs must sp
18a60 65 63 69 66 79 20 74 68 65 0a 73 61 6d 65 20 6e  ecify the.same n
18a70 75 6d 62 65 72 20 6f 66 20 72 65 73 75 6c 74 20  umber of result 
18a80 63 6f 6c 75 6d 6e 73 2e 20 20 54 68 65 72 65 20  columns.  There 
18a90 6d 61 79 20 62 65 20 6f 6e 6c 79 20 61 20 73 69  may be only a si
18aa0 6e 67 6c 65 20 4f 52 44 45 52 20 42 59 0a 63 6c  ngle ORDER BY.cl
18ab0 61 75 73 65 20 61 74 20 74 68 65 20 65 6e 64 20  ause at the end 
18ac0 6f 66 20 74 68 65 20 63 6f 6d 70 6f 75 6e 64 20  of the compound 
18ad0 53 45 4c 45 43 54 2e 20 20 54 68 65 20 55 4e 49  SELECT.  The UNI
18ae0 4f 4e 20 61 6e 64 20 55 4e 49 4f 4e 20 41 4c 4c  ON and UNION ALL
18af0 0a 6f 70 65 72 61 74 6f 72 73 20 63 6f 6d 62 69  .operators combi
18b00 6e 65 20 74 68 65 20 72 65 73 75 6c 74 73 20 6f  ne the results o
18b10 66 20 74 68 65 20 53 45 4c 45 43 54 73 20 74 6f  f the SELECTs to
18b20 20 74 68 65 20 72 69 67 68 74 20 61 6e 64 20 6c   the right and l
18b30 65 66 74 20 69 6e 74 6f 0a 61 20 73 69 6e 67 6c  eft into.a singl
18b40 65 20 62 69 67 20 74 61 62 6c 65 2e 20 20 54 68  e big table.  Th
18b50 65 20 64 69 66 66 65 72 65 6e 63 65 20 69 73 20  e difference is 
18b60 74 68 61 74 20 69 6e 20 55 4e 49 4f 4e 20 61 6c  that in UNION al
18b70 6c 20 72 65 73 75 6c 74 20 72 6f 77 73 0a 61 72  l result rows.ar
18b80 65 20 64 69 73 74 69 6e 63 74 20 77 68 65 72 65  e distinct where
18b90 20 69 6e 20 55 4e 49 4f 4e 20 41 4c 4c 20 74 68   in UNION ALL th
18ba0 65 72 65 20 6d 61 79 20 62 65 20 64 75 70 6c 69  ere may be dupli
18bb0 63 61 74 65 73 2e 0a 54 68 65 20 49 4e 54 45 52  cates..The INTER
18bc0 53 45 43 54 20 6f 70 65 72 61 74 6f 72 20 74 61  SECT operator ta
18bd0 6b 65 73 20 74 68 65 20 69 6e 74 65 72 73 65 63  kes the intersec
18be0 74 69 6f 6e 20 6f 66 20 74 68 65 20 72 65 73 75  tion of the resu
18bf0 6c 74 73 20 6f 66 20 74 68 65 0a 6c 65 66 74 20  lts of the.left 
18c00 61 6e 64 20 72 69 67 68 74 20 53 45 4c 45 43 54  and right SELECT
18c10 73 2e 20 20 45 58 43 45 50 54 20 74 61 6b 65 73  s.  EXCEPT takes
18c20 20 74 68 65 20 72 65 73 75 6c 74 20 6f 66 20 6c   the result of l
18c30 65 66 74 20 53 45 4c 45 43 54 20 61 66 74 65 72  eft SELECT after
18c40 0a 72 65 6d 6f 76 69 6e 67 20 74 68 65 20 72 65  .removing the re
18c50 73 75 6c 74 73 20 6f 66 20 74 68 65 20 72 69 67  sults of the rig
18c60 68 74 20 53 45 4c 45 43 54 2e 20 20 57 68 65 6e  ht SELECT.  When
18c70 20 74 68 72 65 65 20 6f 72 20 6d 6f 72 65 20 53   three or more S
18c80 45 4c 45 43 54 73 0a 61 72 65 20 63 6f 6e 6e 65  ELECTs.are conne
18c90 63 74 65 64 20 69 6e 74 6f 20 61 20 63 6f 6d 70  cted into a comp
18ca0 6f 75 6e 64 2c 20 74 68 65 79 20 67 72 6f 75 70  ound, they group
18cb0 20 66 72 6f 6d 20 6c 65 66 74 20 74 6f 20 72 69   from left to ri
18cc0 67 68 74 2e 3c 2f 70 3e 0a 0a 0a 3c 74 63 6c 3e  ght.</p>...<tcl>
18cd0 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  .###############
18ce0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18cf0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18d00 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
18d10 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a  ###############.
18d20 53 65 63 74 69 6f 6e 20 55 50 44 41 54 45 20 75  Section UPDATE u
18d30 70 64 61 74 65 20 7b 55 50 44 41 54 45 20 2a 55  pdate {UPDATE *U
18d40 50 44 41 54 45 73 7d 0a 0a 42 75 62 62 6c 65 44  PDATEs}..BubbleD
18d50 69 61 67 72 61 6d 20 75 70 64 61 74 65 2d 73 74  iagram update-st
18d60 6d 74 20 31 0a 42 75 62 62 6c 65 44 69 61 67 72  mt 1.BubbleDiagr
18d70 61 6d 20 71 75 61 6c 69 66 69 65 64 2d 74 61 62  am qualified-tab
18d80 6c 65 2d 6e 61 6d 65 0a 3c 2f 74 63 6c 3e 0a 0a  le-name.</tcl>..
18d90 3c 70 3e 54 68 65 20 55 50 44 41 54 45 20 73 74  <p>The UPDATE st
18da0 61 74 65 6d 65 6e 74 20 69 73 20 75 73 65 64 20  atement is used 
18db0 74 6f 20 63 68 61 6e 67 65 20 74 68 65 20 76 61  to change the va
18dc0 6c 75 65 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69  lue of columns i
18dd0 6e 20 0a 73 65 6c 65 63 74 65 64 20 72 6f 77 73  n .selected rows
18de0 20 6f 66 20 61 20 74 61 62 6c 65 2e 20 20 45 61   of a table.  Ea
18df0 63 68 20 61 73 73 69 67 6e 6d 65 6e 74 20 69 6e  ch assignment in
18e00 20 61 6e 20 55 50 44 41 54 45 20 73 70 65 63 69   an UPDATE speci
18e10 66 69 65 73 0a 61 20 63 6f 6c 75 6d 6e 20 6e 61  fies.a column na
18e20 6d 65 20 74 6f 20 74 68 65 20 6c 65 66 74 20 6f  me to the left o
18e30 66 20 74 68 65 20 65 71 75 61 6c 73 20 73 69 67  f the equals sig
18e40 6e 20 61 6e 64 20 61 6e 20 61 72 62 69 74 72 61  n and an arbitra
18e50 72 79 20 65 78 70 72 65 73 73 69 6f 6e 0a 74 6f  ry expression.to
18e60 20 74 68 65 20 72 69 67 68 74 2e 20 20 54 68 65   the right.  The
18e70 20 65 78 70 72 65 73 73 69 6f 6e 73 20 6d 61 79   expressions may
18e80 20 75 73 65 20 74 68 65 20 76 61 6c 75 65 73 20   use the values 
18e90 6f 66 20 6f 74 68 65 72 20 63 6f 6c 75 6d 6e 73  of other columns
18ea0 2e 0a 41 6c 6c 20 65 78 70 72 65 73 73 69 6f 6e  ..All expression
18eb0 73 20 61 72 65 20 65 76 61 6c 75 61 74 65 64 20  s are evaluated 
18ec0 62 65 66 6f 72 65 20 61 6e 79 20 61 73 73 69 67  before any assig
18ed0 6e 6d 65 6e 74 73 20 61 72 65 20 6d 61 64 65 2e  nments are made.
18ee0 0a 41 20 57 48 45 52 45 20 63 6c 61 75 73 65 20  .A WHERE clause 
18ef0 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 72  can be used to r
18f00 65 73 74 72 69 63 74 20 77 68 69 63 68 20 72 6f  estrict which ro
18f10 77 73 20 61 72 65 20 75 70 64 61 74 65 64 2e 3c  ws are updated.<
18f20 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 6f 70 74 69  /p>..<p>The opti
18f30 6f 6e 61 6c 20 63 6f 6e 66 6c 69 63 74 2d 63 6c  onal conflict-cl
18f40 61 75 73 65 20 61 6c 6c 6f 77 73 20 74 68 65 20  ause allows the 
18f50 73 70 65 63 69 66 69 63 61 74 69 6f 6e 20 6f 66  specification of
18f60 20 61 6e 20 61 6c 74 65 72 6e 61 74 69 76 65 0a   an alternative.
18f70 63 6f 6e 73 74 72 61 69 6e 74 20 63 6f 6e 66 6c  constraint confl
18f80 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61  ict resolution a
18f90 6c 67 6f 72 69 74 68 6d 20 74 6f 20 75 73 65 20  lgorithm to use 
18fa0 64 75 72 69 6e 67 20 74 68 69 73 20 6f 6e 65 20  during this one 
18fb0 63 6f 6d 6d 61 6e 64 2e 0a 53 65 65 20 74 68 65  command..See the
18fc0 20 73 65 63 74 69 6f 6e 20 74 69 74 6c 65 64 0a   section titled.
18fd0 5b 4f 4e 20 43 4f 4e 46 4c 49 43 54 5d 20 66 6f  [ON CONFLICT] fo
18fe0 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66  r additional inf
18ff0 6f 72 6d 61 74 69 6f 6e 2e 3c 2f 70 3e 0a 0a 3c  ormation.</p>..<
19000 68 33 3e 52 65 73 74 72 69 63 74 69 6f 6e 73 20  h3>Restrictions 
19010 6f 6e 20 55 50 44 41 54 45 20 53 74 61 74 65 6d  on UPDATE Statem
19020 65 6e 74 73 20 57 69 74 68 69 6e 20 43 52 45 41  ents Within CREA
19030 54 45 20 54 52 49 47 47 45 52 3c 2f 68 33 3e 0a  TE TRIGGER</h3>.
19040 0a 3c 70 3e 54 68 65 72 65 20 61 72 65 20 61 64  .<p>There are ad
19050 64 69 74 69 6f 6e 61 6c 20 73 79 6e 74 61 78 20  ditional syntax 
19060 72 65 73 74 72 69 63 74 69 6f 6e 73 20 6f 6e 20  restrictions on 
19070 55 50 44 41 54 45 20 73 74 61 74 65 6d 65 6e 74  UPDATE statement
19080 73 20 74 68 61 74 0a 6f 63 63 75 72 20 77 69 74  s that.occur wit
19090 68 69 6e 20 74 68 65 20 62 6f 64 79 20 6f 66 20  hin the body of 
190a0 61 20 5b 43 52 45 41 54 45 20 54 52 49 47 47 45  a [CREATE TRIGGE
190b0 52 5d 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 54  R] statement.  T
190c0 68 65 20 3c 69 3e 74 61 62 6c 65 2d 6e 61 6d 65  he <i>table-name
190d0 3c 2f 69 3e 0a 6d 75 73 74 20 62 65 20 75 6e 71  </i>.must be unq
190e0 75 61 6c 69 66 69 65 64 2e 20 0a 49 6e 20 6f 74  ualified. .In ot
190f0 68 65 72 20 77 6f 72 64 73 2c 20 74 68 65 20 3c  her words, the <
19100 69 3e 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3c  i>database-name<
19110 2f 69 3e 3c 62 3e 2e 3c 2f 62 3e 20 70 72 65 66  /i><b>.</b> pref
19120 69 78 0a 6f 6e 20 74 68 65 20 74 61 62 6c 65 20  ix.on the table 
19130 6e 61 6d 65 20 69 73 20 6e 6f 74 20 61 6c 6c 6f  name is not allo
19140 77 65 64 20 77 69 74 68 69 6e 20 74 72 69 67 67  wed within trigg
19150 65 72 73 2e 20 0a 54 68 65 20 74 61 62 6c 65 20  ers. .The table 
19160 74 6f 20 62 65 20 6d 6f 64 69 66 69 65 64 20 6d  to be modified m
19170 75 73 74 20 62 65 20 69 6e 20 74 68 65 20 73 61  ust be in the sa
19180 6d 65 0a 64 61 74 61 62 61 73 65 20 61 73 20 74  me.database as t
19190 68 65 20 74 61 62 6c 65 20 74 6f 20 77 68 69 63  he table to whic
191a0 68 20 74 68 65 20 74 72 69 67 67 65 72 20 69 73  h the trigger is
191b0 20 61 74 74 61 63 68 65 64 2e 3c 2f 70 3e 0a 0a   attached.</p>..
191c0 3c 70 3e 54 68 65 20 49 4e 44 45 58 45 44 20 42  <p>The INDEXED B
191d0 59 20 61 6e 64 20 4e 4f 54 20 49 4e 44 45 58 45  Y and NOT INDEXE
191e0 44 20 63 6c 61 75 73 65 73 20 61 72 65 20 6e 6f  D clauses are no
191f0 74 20 61 6c 6c 6f 77 65 64 20 6f 6e 20 55 50 44  t allowed on UPD
19200 41 54 45 0a 73 74 61 74 65 6d 65 6e 74 73 20 77  ATE.statements w
19210 69 74 68 69 6e 20 74 72 69 67 67 65 72 73 2e 3c  ithin triggers.<
19220 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 4c 49 4d 49  /p>..<p>The LIMI
19230 54 20 63 6c 61 75 73 65 20 28 64 65 73 63 72 69  T clause (descri
19240 62 65 64 20 62 65 6c 6f 77 29 20 69 73 20 75 6e  bed below) is un
19250 73 75 70 70 6f 72 74 65 64 20 77 69 74 68 69 6e  supported within
19260 20 74 72 69 67 67 65 72 73 2e 3c 2f 70 3e 0a 0a   triggers.</p>..
19270 3c 68 33 3e 4f 70 74 69 6f 6e 61 6c 20 4c 49 4d  <h3>Optional LIM
19280 49 54 20 61 6e 64 20 4f 52 44 45 52 20 42 59 20  IT and ORDER BY 
19290 43 6c 61 75 73 65 73 3c 2f 68 33 3e 0a 0a 3c 70  Clauses</h3>..<p
192a0 3e 49 66 20 53 51 4c 69 74 65 20 69 73 20 62 75  >If SQLite is bu
192b0 69 6c 74 20 77 69 74 68 20 74 68 65 20 5b 53 51  ilt with the [SQ
192c0 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 55 50 44 41  LITE_ENABLE_UPDA
192d0 54 45 5f 44 45 4c 45 54 45 5f 4c 49 4d 49 54 5d  TE_DELETE_LIMIT]
192e0 0a 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70  .compile-time op
192f0 74 69 6f 6e 20 74 68 65 6e 20 74 68 65 20 73 79  tion then the sy
19300 6e 74 61 78 20 6f 66 20 74 68 65 20 55 50 44 41  ntax of the UPDA
19310 54 45 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20  TE statement is 
19320 65 78 74 65 6e 64 65 64 0a 77 69 74 68 20 6f 70  extended.with op
19330 74 69 6f 6e 61 6c 20 4f 52 44 45 52 20 42 59 20  tional ORDER BY 
19340 61 6e 64 20 4c 49 4d 49 54 20 63 6c 61 75 73 65  and LIMIT clause
19350 73 20 61 73 20 66 6f 6c 6c 6f 77 73 3a 3c 2f 70  s as follows:</p
19360 3e 0a 0a 3c 74 63 6c 3e 42 75 62 62 6c 65 44 69  >..<tcl>BubbleDi
19370 61 67 72 61 6d 20 75 70 64 61 74 65 2d 73 74 6d  agram update-stm
19380 74 2d 6c 69 6d 69 74 65 64 3c 2f 74 63 6c 3e 0a  t-limited</tcl>.
19390 0a 3c 70 3e 54 68 65 20 6f 70 74 69 6f 6e 61 6c  .<p>The optional
193a0 20 4c 49 4d 49 54 20 63 6c 61 75 73 65 20 63 61   LIMIT clause ca
193b0 6e 20 62 65 20 75 73 65 64 20 74 6f 20 6c 69 6d  n be used to lim
193c0 69 74 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  it the number of
193d0 0a 72 6f 77 73 20 6d 6f 64 69 66 65 64 2c 20 61  .rows modifed, a
193e0 6e 64 20 74 68 65 72 65 62 79 20 6c 69 6d 69 74  nd thereby limit
193f0 20 74 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65   the size of the
19400 20 74 72 61 6e 73 61 63 74 69 6f 6e 2e 0a 54 68   transaction..Th
19410 65 20 4f 52 44 45 52 20 42 59 20 63 6c 61 75 73  e ORDER BY claus
19420 65 20 69 73 20 75 73 65 64 20 6f 6e 6c 79 20 74  e is used only t
19430 6f 20 64 65 74 65 72 6d 69 6e 65 20 77 68 69 63  o determine whic
19440 68 20 72 6f 77 73 20 66 61 6c 6c 0a 77 69 74 68  h rows fall.with
19450 69 6e 20 74 68 65 20 4c 49 4d 49 54 2e 20 20 54  in the LIMIT.  T
19460 68 65 20 6f 72 64 65 72 20 69 6e 20 77 68 69 63  he order in whic
19470 68 20 72 6f 77 73 20 61 72 65 20 6d 6f 64 69 66  h rows are modif
19480 69 65 64 20 69 73 20 61 72 62 69 74 72 61 72 79  ied is arbitrary
19490 0a 61 6e 64 20 69 73 20 6e 6f 74 20 64 65 74 65  .and is not dete
194a0 72 6d 69 6e 65 64 20 62 79 20 74 68 65 20 4f 52  rmined by the OR
194b0 44 45 52 20 42 59 20 63 6c 61 75 73 65 2e 3c 2f  DER BY clause.</
194c0 70 3e 0a 0a 3c 74 63 6c 3e 0a 23 23 23 23 23 23  p>..<tcl>.######
194d0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
194e0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
194f0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
19500 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
19510 23 23 23 23 23 23 23 23 0a 53 65 63 74 69 6f 6e  ########.Section
19520 20 56 41 43 55 55 4d 20 76 61 63 75 75 6d 20 56   VACUUM vacuum V
19530 41 43 55 55 4d 0a 0a 42 75 62 62 6c 65 44 69 61  ACUUM..BubbleDia
19540 67 72 61 6d 20 76 61 63 75 75 6d 2d 73 74 6d 74  gram vacuum-stmt
19550 20 31 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 57 68   1.</tcl>..<p>Wh
19560 65 6e 20 61 6e 20 6f 62 6a 65 63 74 20 28 74 61  en an object (ta
19570 62 6c 65 2c 20 69 6e 64 65 78 2c 20 6f 72 20 74  ble, index, or t
19580 72 69 67 67 65 72 29 20 69 73 20 64 72 6f 70 70  rigger) is dropp
19590 65 64 20 66 72 6f 6d 20 74 68 65 20 0a 64 61 74  ed from the .dat
195a0 61 62 61 73 65 2c 20 69 74 20 6c 65 61 76 65 73  abase, it leaves
195b0 20 62 65 68 69 6e 64 20 65 6d 70 74 79 20 73 70   behind empty sp
195c0 61 63 65 2e 20 0a 54 68 69 73 20 65 6d 70 74 79  ace. .This empty
195d0 20 73 70 61 63 65 20 77 69 6c 6c 20 62 65 20 72   space will be r
195e0 65 75 73 65 64 20 74 68 65 20 6e 65 78 74 20 74  eused the next t
195f0 69 6d 65 20 6e 65 77 20 69 6e 66 6f 72 6d 61 74  ime new informat
19600 69 6f 6e 20 69 73 0a 61 64 64 65 64 20 74 6f 20  ion is.added to 
19610 74 68 65 20 64 61 74 61 62 61 73 65 2e 20 20 42  the database.  B
19620 75 74 20 69 6e 20 74 68 65 20 6d 65 61 6e 74 69  ut in the meanti
19630 6d 65 2c 20 74 68 65 20 64 61 74 61 62 61 73 65  me, the database
19640 20 66 69 6c 65 20 6d 69 67 68 74 0a 62 65 20 6c   file might.be l
19650 61 72 67 65 72 20 74 68 61 6e 20 73 74 72 69 63  arger than stric
19660 74 6c 79 20 6e 65 63 65 73 73 61 72 79 2e 20 20  tly necessary.  
19670 41 6c 73 6f 2c 20 66 72 65 71 75 65 6e 74 20 69  Also, frequent i
19680 6e 73 65 72 74 73 2c 20 75 70 64 61 74 65 73 2c  nserts, updates,
19690 0a 61 6e 64 20 64 65 6c 65 74 65 73 20 63 61 6e  .and deletes can
196a0 20 63 61 75 73 65 20 74 68 65 20 69 6e 66 6f 72   cause the infor
196b0 6d 61 74 69 6f 6e 20 69 6e 20 74 68 65 20 64 61  mation in the da
196c0 74 61 62 61 73 65 20 74 6f 20 62 65 63 6f 6d 65  tabase to become
196d0 0a 66 72 61 67 6d 65 6e 74 65 64 20 2d 20 73 63  .fragmented - sc
196e0 72 61 74 74 65 72 65 64 20 6f 75 74 20 61 6c 6c  rattered out all
196f0 20 61 63 72 6f 73 73 20 74 68 65 20 64 61 74 61   across the data
19700 62 61 73 65 20 66 69 6c 65 20 72 61 74 68 65 72  base file rather
19710 0a 74 68 61 6e 20 63 6c 75 73 74 65 72 65 64 20  .than clustered 
19720 74 6f 67 65 74 68 65 72 20 69 6e 20 6f 6e 65 20  together in one 
19730 70 6c 61 63 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54  place.</p>..<p>T
19740 68 65 20 56 41 43 55 55 4d 20 63 6f 6d 6d 61 6e  he VACUUM comman
19750 64 20 63 6c 65 61 6e 73 0a 74 68 65 20 6d 61 69  d cleans.the mai
19760 6e 20 64 61 74 61 62 61 73 65 20 62 79 20 63 6f  n database by co
19770 70 79 69 6e 67 20 69 74 73 20 63 6f 6e 74 65 6e  pying its conten
19780 74 73 20 74 6f 20 61 20 74 65 6d 70 6f 72 61 72  ts to a temporar
19790 79 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20  y database file 
197a0 61 6e 64 20 0a 72 65 6c 6f 61 64 69 6e 67 20 74  and .reloading t
197b0 68 65 20 6f 72 69 67 69 6e 61 6c 20 64 61 74 61  he original data
197c0 62 61 73 65 20 66 69 6c 65 20 66 72 6f 6d 20 74  base file from t
197d0 68 65 20 63 6f 70 79 2e 20 20 54 68 69 73 20 65  he copy.  This e
197e0 6c 69 6d 69 6e 61 74 65 73 20 0a 66 72 65 65 20  liminates .free 
197f0 70 61 67 65 73 2c 20 20 61 6c 69 67 6e 73 20 74  pages,  aligns t
19800 61 62 6c 65 20 64 61 74 61 20 74 6f 20 62 65 20  able data to be 
19810 63 6f 6e 74 69 67 75 6f 75 73 2c 20 61 6e 64 20  contiguous, and 
19820 6f 74 68 65 72 77 69 73 65 20 63 6c 65 61 6e 73  otherwise cleans
19830 20 0a 75 70 20 74 68 65 20 64 61 74 61 62 61 73   .up the databas
19840 65 20 66 69 6c 65 20 73 74 72 75 63 74 75 72 65  e file structure
19850 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 56 41  .</p>..<p>The VA
19860 43 55 55 4d 20 63 6f 6d 6d 61 6e 64 20 6d 61 79  CUUM command may
19870 20 63 68 61 6e 67 65 20 74 68 65 20 0a 5b 52 4f   change the .[RO
19880 57 49 44 20 7c 20 52 4f 57 49 44 73 5d 20 6f 66  WID | ROWIDs] of
19890 20 65 6e 74 72 69 65 73 20 69 6e 20 74 61 62 6c   entries in tabl
198a0 65 73 20 74 68 61 74 20 64 6f 0a 6e 6f 74 20 68  es that do.not h
198b0 61 76 65 20 61 6e 20 65 78 70 6c 69 63 69 74 20  ave an explicit 
198c0 5b 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59  [INTEGER PRIMARY
198d0 20 4b 45 59 5d 2e 3c 2f 70 3e 0a 0a 3c 70 3e 56   KEY].</p>..<p>V
198e0 41 43 55 55 4d 20 6f 6e 6c 79 20 77 6f 72 6b 73  ACUUM only works
198f0 20 6f 6e 20 74 68 65 20 6d 61 69 6e 20 64 61 74   on the main dat
19900 61 62 61 73 65 2e 0a 49 74 20 69 73 20 6e 6f 74  abase..It is not
19910 20 70 6f 73 73 69 62 6c 65 20 74 6f 20 56 41 43   possible to VAC
19920 55 55 4d 20 61 6e 20 61 74 74 61 63 68 65 64 20  UUM an attached 
19930 64 61 74 61 62 61 73 65 20 66 69 6c 65 2e 3c 2f  database file.</
19940 70 3e 0a 0a 3c 70 3e 54 68 65 20 56 41 43 55 55  p>..<p>The VACUU
19950 4d 20 63 6f 6d 6d 61 6e 64 20 77 69 6c 6c 20 66  M command will f
19960 61 69 6c 20 69 66 20 74 68 65 72 65 20 69 73 20  ail if there is 
19970 61 6e 20 61 63 74 69 76 65 20 74 72 61 6e 73 61  an active transa
19980 63 74 69 6f 6e 2e 0a 54 68 65 20 56 41 43 55 55  ction..The VACUU
19990 4d 20 63 6f 6d 6d 61 6e 64 20 69 73 20 61 20 6e  M command is a n
199a0 6f 2d 6f 70 20 66 6f 72 20 69 6e 2d 6d 65 6d 6f  o-op for in-memo
199b0 72 79 20 64 61 74 61 62 61 73 65 73 2e 3c 2f 70  ry databases.</p
199c0 3e 0a 0a 3c 70 3e 41 73 20 6f 66 20 53 51 4c 69  >..<p>As of SQLi
199d0 74 65 20 76 65 72 73 69 6f 6e 20 33 2e 31 2c 20  te version 3.1, 
199e0 61 6e 20 61 6c 74 65 72 6e 61 74 69 76 65 20 74  an alternative t
199f0 6f 20 75 73 69 6e 67 20 74 68 65 20 56 41 43 55  o using the VACU
19a00 55 4d 20 63 6f 6d 6d 61 6e 64 0a 69 73 20 61 75  UM command.is au
19a10 74 6f 2d 76 61 63 75 75 6d 20 6d 6f 64 65 2c 20  to-vacuum mode, 
19a20 65 6e 61 62 6c 65 64 20 75 73 69 6e 67 20 74 68  enabled using th
19a30 65 20 0a 5b 61 75 74 6f 5f 76 61 63 75 75 6d 5d  e .[auto_vacuum]
19a40 20 70 72 61 67 6d 61 2e 20 20 57 68 65 6e 20 5b   pragma.  When [
19a50 61 75 74 6f 5f 76 61 63 75 75 6d 5d 20 69 73 20  auto_vacuum] is 
19a60 65 6e 61 62 6c 65 64 20 66 6f 72 20 61 20 64 61  enabled for a da
19a70 74 61 62 61 73 65 2c 20 0a 6c 61 72 67 65 20 64  tabase, .large d
19a80 65 6c 65 74 65 73 20 63 61 75 73 65 0a 74 68 65  eletes cause.the
19a90 20 73 69 7a 65 20 6f 66 20 74 68 65 20 64 61 74   size of the dat
19aa0 61 62 61 73 65 20 66 69 6c 65 20 74 6f 20 73 68  abase file to sh
19ab0 72 69 6e 6b 2e 20 20 48 6f 77 65 76 65 72 2c 20  rink.  However, 
19ac0 5b 61 75 74 6f 5f 76 61 63 75 75 6d 5d 0a 61 6c  [auto_vacuum].al
19ad0 73 6f 20 63 61 75 73 65 73 20 65 78 63 65 73 73  so causes excess
19ae0 20 66 72 61 67 6d 65 6e 74 61 74 69 6f 6e 20 6f   fragmentation o
19af0 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66  f the database f
19b00 69 6c 65 2e 20 20 41 6e 64 20 5b 61 75 74 6f 5f  ile.  And [auto_
19b10 76 61 63 75 75 6d 5d 0a 64 6f 65 73 20 6e 6f 74  vacuum].does not
19b20 20 63 6f 6d 70 61 63 74 20 70 61 72 74 69 61 6c   compact partial
19b30 6c 79 20 66 69 6c 6c 65 64 20 70 61 67 65 73 20  ly filled pages 
19b40 6f 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20  of the database 
19b50 61 73 20 56 41 43 55 55 4d 0a 64 6f 65 73 2e 3c  as VACUUM.does.<
19b60 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 5b 70 61 67  /p>..<p>The [pag
19b70 65 5f 73 69 7a 65 5d 20 61 6e 64 2f 6f 72 20 5b  e_size] and/or [
19b80 61 75 74 6f 5f 76 61 63 75 75 6d 5d 20 6d 6f 64  auto_vacuum] mod
19b90 65 20 6f 66 20 61 20 64 61 74 61 62 61 73 65 20  e of a database 
19ba0 63 61 6e 20 62 65 20 63 68 61 6e 67 65 64 0a 62  can be changed.b
19bb0 79 20 69 6e 76 6f 6b 69 6e 67 20 74 68 65 20 5b  y invoking the [
19bc0 70 61 67 65 5f 73 69 7a 65 20 70 72 61 67 6d 61  page_size pragma
19bd0 5d 20 61 6e 64 2f 6f 72 20 5b 61 75 74 6f 5f 76  ] and/or [auto_v
19be0 61 63 75 75 6d 20 70 72 61 67 6d 61 5d 20 61 6e  acuum pragma] an
19bf0 64 20 74 68 65 6e 0a 69 6d 6d 65 64 69 61 74 65  d then.immediate
19c00 6c 79 20 56 41 43 55 55 4d 69 6e 67 20 74 68 65  ly VACUUMing the
19c10 20 64 61 74 61 62 61 73 65 2e 3c 2f 70 3e 0a 0a   database.</p>..
19c20 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23  <tcl>.##########
19c30 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
19c40 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
19c50 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
19c60 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
19c70 23 23 23 23 0a 53 65 63 74 69 6f 6e 20 7b 49 4e  ####.Section {IN
19c80 44 45 58 45 44 20 42 59 7d 20 69 6e 64 65 78 65  DEXED BY} indexe
19c90 64 62 79 20 7b 7b 49 4e 44 45 58 45 44 20 42 59  dby {{INDEXED BY
19ca0 7d 20 7b 4e 4f 54 20 49 4e 44 45 58 45 44 7d 7d  } {NOT INDEXED}}
19cb0 0a 0a 3c 2f 74 63 6c 3e 0a 3c 70 3e 54 68 65 20  ..</tcl>.<p>The 
19cc0 49 4e 44 45 58 45 44 20 42 59 20 70 68 72 61 73  INDEXED BY phras
19cd0 65 20 69 73 20 61 20 53 51 4c 20 65 78 74 65 6e  e is a SQL exten
19ce0 73 69 6f 6e 20 66 6f 75 6e 64 20 6f 6e 6c 79 20  sion found only 
19cf0 69 6e 20 53 51 4c 69 74 65 20 77 68 69 63 68 20  in SQLite which 
19d00 63 61 6e 0a 62 65 20 75 73 65 64 20 74 6f 20 76  can.be used to v
19d10 65 72 69 66 79 20 74 68 61 74 20 74 68 65 20 63  erify that the c
19d20 6f 72 72 65 63 74 20 69 6e 64 69 63 65 73 20 61  orrect indices a
19d30 72 65 20 62 65 69 6e 67 20 75 73 65 64 20 6f 6e  re being used on
19d40 20 61 20 5b 44 45 4c 45 54 45 5d 2c 0a 5b 53 45   a [DELETE],.[SE
19d50 4c 45 43 54 5d 2c 20 6f 72 20 5b 55 50 44 41 54  LECT], or [UPDAT
19d60 45 5d 20 73 74 61 74 65 6d 65 6e 74 2e 0a 54 68  E] statement..Th
19d70 65 20 49 4e 44 45 58 45 44 20 42 59 20 70 68 72  e INDEXED BY phr
19d80 61 73 65 20 61 6c 77 61 79 73 20 66 6f 6c 6c 6f  ase always follo
19d90 77 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 61  ws the name of a
19da0 20 74 61 62 6c 65 20 74 68 61 74 20 53 51 4c 69   table that SQLi
19db0 74 65 20 77 69 6c 6c 0a 62 65 20 72 65 61 64 69  te will.be readi
19dc0 6e 67 2e 20 20 54 68 65 20 49 4e 44 45 58 45 44  ng.  The INDEXED
19dd0 20 42 59 20 70 68 72 61 73 65 20 63 61 6e 20 62   BY phrase can b
19de0 65 20 73 65 65 6e 20 69 6e 20 74 68 65 20 66 6f  e seen in the fo
19df0 6c 6c 6f 77 69 6e 67 20 73 79 6e 74 61 78 0a 64  llowing syntax.d
19e00 69 61 67 72 61 6d 73 3a 3c 2f 70 3e 0a 0a 3c 74  iagrams:</p>..<t
19e10 63 6c 3e 0a 42 75 62 62 6c 65 44 69 61 67 72 61  cl>.BubbleDiagra
19e20 6d 20 71 75 61 6c 69 66 69 65 64 2d 74 61 62 6c  m qualified-tabl
19e30 65 2d 6e 61 6d 65 0a 42 75 62 62 6c 65 44 69 61  e-name.BubbleDia
19e40 67 72 61 6d 20 73 69 6e 67 6c 65 2d 73 6f 75 72  gram single-sour
19e50 63 65 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 54 68  ce.</tcl>..<p>Th
19e60 65 20 22 49 4e 44 45 58 45 44 20 42 59 20 69 6e  e "INDEXED BY in
19e70 64 65 78 2d 6e 61 6d 65 22 20 63 6c 61 75 73 65  dex-name" clause
19e80 20 73 70 65 63 69 66 69 65 73 20 74 68 61 74 20   specifies that 
19e90 74 68 65 20 6e 61 6d 65 64 20 69 6e 64 65 78 0a  the named index.
19ea0 6d 75 73 74 20 62 65 20 75 73 65 64 20 69 6e 20  must be used in 
19eb0 6f 72 64 65 72 20 74 6f 20 6c 6f 6f 6b 20 75 70  order to look up
19ec0 20 76 61 6c 75 65 73 20 6f 6e 20 74 68 65 20 70   values on the p
19ed0 72 65 63 65 64 69 6e 67 20 74 61 62 6c 65 2e 0a  receding table..
19ee0 49 66 20 69 6e 64 65 78 2d 6e 61 6d 65 20 64 6f  If index-name do
19ef0 65 73 20 6e 6f 74 20 65 78 69 73 74 20 6f 72 20  es not exist or 
19f00 63 61 6e 6e 6f 74 20 62 65 20 75 73 65 64 20 66  cannot be used f
19f10 6f 72 20 74 68 65 20 71 75 65 72 79 2c 20 74 68  or the query, th
19f20 65 6e 0a 74 68 65 20 70 72 65 70 61 72 61 74 69  en.the preparati
19f30 6f 6e 20 6f 66 20 74 68 65 20 53 51 4c 20 73 74  on of the SQL st
19f40 61 74 65 6d 65 6e 74 20 66 61 69 6c 73 2e 0a 54  atement fails..T
19f50 68 65 20 22 4e 4f 54 20 49 4e 44 45 58 45 44 22  he "NOT INDEXED"
19f60 20 63 6c 61 75 73 65 20 73 70 65 63 69 66 69 65   clause specifie
19f70 73 20 74 68 61 74 20 6e 6f 20 69 6e 64 65 78 20  s that no index 
19f80 73 68 61 6c 6c 20 62 65 20 75 73 65 64 20 77 68  shall be used wh
19f90 65 6e 0a 61 63 63 65 73 73 69 6e 67 20 74 68 65  en.accessing the
19fa0 20 70 72 65 63 65 64 69 6e 67 20 74 61 62 6c 65   preceding table
19fb0 2c 20 69 6e 63 6c 75 64 69 6e 67 20 69 6d 70 6c  , including impl
19fc0 69 65 64 20 69 6e 64 69 63 65 73 20 63 72 65 61  ied indices crea
19fd0 74 65 20 62 79 0a 55 4e 49 51 55 45 20 61 6e 64  te by.UNIQUE and
19fe0 20 50 52 49 4d 41 52 59 20 4b 45 59 20 63 6f 6e   PRIMARY KEY con
19ff0 73 74 72 61 69 6e 74 73 2e 20 20 48 6f 77 65 76  straints.  Howev
1a000 65 72 2c 20 74 68 65 20 49 4e 54 45 47 45 52 20  er, the INTEGER 
1a010 50 52 49 4d 41 52 59 20 4b 45 59 0a 63 61 6e 20  PRIMARY KEY.can 
1a020 73 74 69 6c 6c 20 62 65 20 75 73 65 64 20 74 6f  still be used to
1a030 20 6c 6f 6f 6b 20 75 70 20 65 6e 74 72 69 65 73   look up entries
1a040 20 65 76 65 6e 20 77 68 65 6e 20 22 4e 4f 54 20   even when "NOT 
1a050 49 4e 44 45 58 45 44 22 20 69 73 20 73 70 65 63  INDEXED" is spec
1a060 69 66 69 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 53  ified.</p>..<p>S
1a070 6f 6d 65 20 53 51 4c 20 64 61 74 61 62 61 73 65  ome SQL database
1a080 20 65 6e 67 69 6e 65 73 20 70 72 6f 76 69 64 65   engines provide
1a090 20 6e 6f 6e 2d 73 74 61 6e 64 61 72 64 20 22 68   non-standard "h
1a0a0 69 6e 74 22 20 6d 65 63 68 61 6e 69 73 6d 73 20  int" mechanisms 
1a0b0 77 68 69 63 68 0a 63 61 6e 20 62 65 20 75 73 65  which.can be use
1a0c0 64 20 74 6f 20 67 69 76 65 20 74 68 65 20 71 75  d to give the qu
1a0d0 65 72 79 20 6f 70 74 69 6d 69 7a 65 72 20 63 6c  ery optimizer cl
1a0e0 75 65 73 20 61 62 6f 75 74 20 77 68 61 74 20 69  ues about what i
1a0f0 6e 64 69 63 65 73 20 69 74 20 73 68 6f 75 6c 64  ndices it should
1a100 0a 75 73 65 20 66 6f 72 20 61 20 70 61 72 74 69  .use for a parti
1a110 63 75 6c 61 72 20 73 74 61 74 65 6d 65 6e 74 2e  cular statement.
1a120 20 20 54 68 65 20 49 4e 44 45 58 20 42 59 20 63    The INDEX BY c
1a130 6c 61 75 73 65 20 6f 66 20 53 51 4c 69 74 65 20  lause of SQLite 
1a140 69 73 20 0a 3c 65 6d 3e 6e 6f 74 3c 2f 65 6d 3e  is .<em>not</em>
1a150 20 61 20 68 69 6e 74 69 6e 67 20 6d 65 63 68 61   a hinting mecha
1a160 6e 69 73 6d 20 61 6e 64 20 69 74 20 73 68 6f 75  nism and it shou
1a170 6c 64 20 6e 6f 74 20 62 65 20 75 73 65 64 20 61  ld not be used a
1a180 73 20 73 75 63 68 2e 0a 54 68 65 20 49 4e 44 45  s such..The INDE
1a190 58 45 44 20 42 59 20 63 6c 61 75 73 65 20 64 6f  XED BY clause do
1a1a0 65 73 20 6e 6f 74 20 67 69 76 65 20 74 68 65 20  es not give the 
1a1b0 6f 70 74 69 6d 69 7a 65 72 20 68 69 6e 74 73 20  optimizer hints 
1a1c0 61 62 6f 75 74 20 77 68 69 63 68 20 69 6e 64 65  about which inde
1a1d0 78 0a 74 6f 20 75 73 65 3b 20 69 74 20 67 69 76  x.to use; it giv
1a1e0 65 73 20 74 68 65 20 6f 70 74 69 6d 69 7a 65 72  es the optimizer
1a1f0 20 61 20 72 65 71 75 69 72 65 6d 65 6e 74 20 6f   a requirement o
1a200 66 20 77 68 69 63 68 20 69 6e 64 65 78 20 74 6f  f which index to
1a210 20 75 73 65 2e 0a 49 66 20 74 68 65 20 71 75 65   use..If the que
1a220 72 79 20 6f 70 74 69 6d 69 7a 65 72 20 69 73 20  ry optimizer is 
1a230 75 6e 61 62 6c 65 20 74 6f 20 75 73 65 20 74 68  unable to use th
1a240 65 20 69 6e 64 65 78 20 73 70 65 63 69 66 69 65  e index specifie
1a250 64 20 62 79 20 74 68 65 0a 49 4e 44 45 58 20 42  d by the.INDEX B
1a260 59 20 63 6c 61 75 73 65 2c 20 74 68 65 6e 20 74  Y clause, then t
1a270 68 65 20 71 75 65 72 79 20 77 69 6c 6c 20 66 61  he query will fa
1a280 69 6c 20 77 69 74 68 20 61 6e 20 65 72 72 6f 72  il with an error
1a290 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 49 4e  .</p>..<p>The IN
1a2a0 44 45 58 45 44 20 42 59 20 63 6c 61 75 73 65 20  DEXED BY clause 
1a2b0 69 73 20 3c 65 6d 3e 6e 6f 74 3c 2f 65 6d 3e 20  is <em>not</em> 
1a2c0 69 6e 74 65 6e 64 65 64 20 66 6f 72 20 75 73 65  intended for use
1a2d0 20 69 6e 20 74 75 6e 69 6e 67 0a 74 68 65 20 70   in tuning.the p
1a2e0 72 65 66 6f 72 6d 61 6e 63 65 20 6f 66 20 61 20  reformance of a 
1a2f0 71 75 65 72 79 2e 20 20 54 68 65 20 69 6e 74 65  query.  The inte
1a300 6e 74 20 6f 66 20 74 68 65 20 49 4e 44 45 58 45  nt of the INDEXE
1a310 44 20 42 59 20 63 6c 61 75 73 65 20 69 73 0a 74  D BY clause is.t
1a320 6f 20 72 61 69 73 65 20 61 20 72 75 6e 2d 74 69  o raise a run-ti
1a330 6d 65 20 65 72 72 6f 72 20 69 66 20 61 20 73 63  me error if a sc
1a340 68 65 6d 61 20 63 68 61 6e 67 65 2c 20 73 75 63  hema change, suc
1a350 68 20 61 73 20 64 72 6f 70 70 69 6e 67 20 6f 72  h as dropping or
1a360 0a 63 72 65 61 74 69 6e 67 20 61 6e 20 69 6e 64  .creating an ind
1a370 65 78 2c 20 63 61 75 73 65 73 20 74 68 65 20 71  ex, causes the q
1a380 75 65 72 79 20 70 6c 61 6e 20 66 6f 72 20 61 20  uery plan for a 
1a390 74 69 6d 65 2d 73 65 6e 73 69 74 69 76 65 20 71  time-sensitive q
1a3a0 75 65 72 79 0a 74 6f 20 63 68 61 6e 67 65 2e 20  uery.to change. 
1a3b0 20 54 68 65 20 49 4e 44 45 58 45 44 20 42 59 20   The INDEXED BY 
1a3c0 63 6c 61 75 73 65 20 69 73 20 64 65 73 69 67 6e  clause is design
1a3d0 65 64 20 74 6f 20 68 65 6c 70 20 64 65 74 65 63  ed to help detec
1a3e0 74 0a 75 6e 64 65 73 69 72 61 62 6c 65 20 71 75  t.undesirable qu
1a3f0 65 72 79 20 70 6c 61 6e 20 63 68 61 6e 67 65 73  ery plan changes
1a400 20 64 75 72 69 6e 67 20 72 65 67 72 65 73 73 69   during regressi
1a410 6f 6e 20 74 65 73 74 69 6e 67 2e 0a 44 65 76 65  on testing..Deve
1a420 6c 6f 70 65 72 73 20 61 72 65 20 61 64 6d 6f 6e  lopers are admon
1a430 69 73 68 65 64 20 74 6f 20 6f 6d 69 74 20 61 6c  ished to omit al
1a440 6c 20 75 73 65 20 6f 66 20 49 4e 44 45 58 45 44  l use of INDEXED
1a450 20 42 59 20 64 75 72 69 6e 67 0a 61 70 70 6c 69   BY during.appli
1a460 63 61 74 69 6f 6e 20 64 65 73 69 67 6e 2c 20 69  cation design, i
1a470 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2c 20 74  mplementation, t
1a480 65 73 74 69 6e 67 2c 20 61 6e 64 20 74 75 6e 69  esting, and tuni
1a490 6e 67 2e 20 20 49 66 0a 49 4e 44 45 58 45 44 20  ng.  If.INDEXED 
1a4a0 42 59 20 69 73 20 74 6f 20 62 65 20 75 73 65 64  BY is to be used
1a4b0 20 61 74 20 61 6c 6c 2c 20 69 74 20 73 68 6f 75   at all, it shou
1a4c0 6c 64 20 62 65 20 69 6e 73 65 72 74 65 64 20 61  ld be inserted a
1a4d0 74 20 74 68 65 20 76 65 72 79 0a 65 6e 64 20 6f  t the very.end o
1a4e0 66 20 74 68 65 20 64 65 76 65 6c 6f 70 6d 65 6e  f the developmen
1a4f0 74 20 70 72 6f 63 65 73 73 20 77 68 65 6e 20 22  t process when "
1a500 6c 6f 63 6b 69 6e 67 20 64 6f 77 6e 22 20 61 20  locking down" a 
1a510 64 65 73 69 67 6e 2e 3c 2f 70 3e 0a 0a 3c 68 33  design.</p>..<h3
1a520 3e 53 65 65 20 41 6c 73 6f 3a 3c 2f 68 33 3e 0a  >See Also:</h3>.
1a530 0a 3c 70 3e 54 68 65 20 5b 73 71 6c 69 74 65 33  .<p>The [sqlite3
1a540 5f 73 74 6d 74 5f 73 74 61 74 75 73 28 29 5d 20  _stmt_status()] 
1a550 43 2f 43 2b 2b 20 69 6e 74 65 72 66 61 63 65 20  C/C++ interface 
1a560 74 6f 67 65 74 68 65 72 20 77 69 74 68 20 74 68  together with th
1a570 65 0a 5b 53 51 4c 49 54 45 5f 53 54 4d 54 53 54  e.[SQLITE_STMTST
1a580 41 54 55 53 5f 46 55 4c 4c 53 43 41 4e 5f 53 54  ATUS_FULLSCAN_ST
1a590 45 50 5d 20 61 6e 64 20 5b 53 51 4c 49 54 45 5f  EP] and [SQLITE_
1a5a0 53 54 4d 54 53 54 41 54 55 53 5f 53 4f 52 54 5d  STMTSTATUS_SORT]
1a5b0 20 76 65 72 62 73 0a 63 61 6e 20 62 65 20 75 73   verbs.can be us
1a5c0 65 64 20 74 6f 20 64 65 74 65 63 74 20 61 74 20  ed to detect at 
1a5d0 72 75 6e 2d 74 69 6d 65 20 77 68 65 6e 20 61 6e  run-time when an
1a5e0 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 69   SQL statement i
1a5f0 73 20 6e 6f 74 0a 6d 61 6b 69 6e 67 20 65 66 66  s not.making eff
1a600 65 63 74 69 76 65 20 75 73 65 20 6f 66 20 69 6e  ective use of in
1a610 64 69 63 65 73 2e 20 20 4d 61 6e 79 20 61 70 70  dices.  Many app
1a620 6c 69 63 61 74 69 6f 6e 73 20 6d 61 79 20 70 72  lications may pr
1a630 65 66 65 72 20 74 6f 0a 75 73 65 20 74 68 65 20  efer to.use the 
1a640 5b 73 71 6c 69 74 65 33 5f 73 74 6d 74 5f 73 74  [sqlite3_stmt_st
1a650 61 74 75 73 28 29 5d 20 69 6e 74 65 72 66 61 63  atus()] interfac
1a660 65 20 74 6f 20 64 65 74 65 63 74 20 69 6e 64 65  e to detect inde
1a670 78 20 6d 69 73 75 73 65 0a 72 61 74 68 65 72 20  x misuse.rather 
1a680 74 68 61 6e 20 74 68 65 20 49 4e 44 45 58 45 44  than the INDEXED
1a690 20 42 59 20 70 68 72 61 73 65 20 64 65 73 63 72   BY phrase descr
1a6a0 69 62 65 64 20 68 65 72 65 2e 3c 2f 70 3e 0a 0a  ibed here.</p>..
1a6b0 3c 74 63 6c 3e 0a 23 23 23 23 23 23 23 23 23 23  <tcl>.##########
1a6c0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1a6d0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1a6e0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1a6f0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1a700 23 23 23 0a 23 20 41 20 6c 69 73 74 20 6f 66 20  ###.# A list of 
1a710 6b 65 79 77 6f 72 64 73 2e 20 20 41 20 61 73 74  keywords.  A ast
1a720 65 72 69 73 6b 20 6f 63 63 75 72 73 20 61 66 74  erisk occurs aft
1a730 65 72 20 74 68 65 20 6b 65 79 77 6f 72 64 20 69  er the keyword i
1a740 66 20 69 74 20 69 73 20 6f 6e 0a 23 20 74 68 65  f it is on.# the
1a750 20 66 61 6c 6c 62 61 63 6b 20 6c 69 73 74 2e 0a   fallback list..
1a760 23 0a 73 65 74 20 6b 65 79 77 6f 72 64 5f 6c 69  #.set keyword_li
1a770 73 74 20 5b 6c 73 6f 72 74 20 7b 0a 20 20 20 41  st [lsort {.   A
1a780 42 4f 52 54 2a 0a 20 20 20 41 44 44 0a 20 20 20  BORT*.   ADD.   
1a790 41 46 54 45 52 2a 0a 20 20 20 41 4c 4c 0a 20 20  AFTER*.   ALL.  
1a7a0 20 41 4c 54 45 52 0a 20 20 20 41 4e 41 4c 59 5a   ALTER.   ANALYZ
1a7b0 45 2a 0a 20 20 20 41 4e 44 0a 20 20 20 41 53 0a  E*.   AND.   AS.
1a7c0 20 20 20 41 53 43 2a 0a 20 20 20 41 54 54 41 43     ASC*.   ATTAC
1a7d0 48 2a 0a 20 20 20 41 55 54 4f 49 4e 43 52 45 4d  H*.   AUTOINCREM
1a7e0 45 4e 54 0a 20 20 20 42 45 46 4f 52 45 2a 0a 20  ENT.   BEFORE*. 
1a7f0 20 20 42 45 47 49 4e 2a 0a 20 20 20 42 45 54 57    BEGIN*.   BETW
1a800 45 45 4e 0a 20 20 20 42 59 2a 0a 20 20 20 43 41  EEN.   BY*.   CA
1a810 53 43 41 44 45 2a 0a 20 20 20 43 41 53 45 0a 20  SCADE*.   CASE. 
1a820 20 20 43 41 53 54 2a 0a 20 20 20 43 48 45 43 4b    CAST*.   CHECK
1a830 0a 20 20 20 43 4f 4c 4c 41 54 45 0a 20 20 20 43  .   COLLATE.   C
1a840 4f 4c 55 4d 4e 2a 0a 20 20 20 43 4f 4d 4d 49 54  OLUMN*.   COMMIT
1a850 0a 20 20 20 43 4f 4e 46 4c 49 43 54 2a 0a 20 20  .   CONFLICT*.  
1a860 20 43 4f 4e 53 54 52 41 49 4e 54 0a 20 20 20 43   CONSTRAINT.   C
1a870 52 45 41 54 45 0a 20 20 20 43 52 4f 53 53 0a 20  REATE.   CROSS. 
1a880 20 20 43 55 52 52 45 4e 54 5f 44 41 54 45 2a 0a    CURRENT_DATE*.
1a890 20 20 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 2a     CURRENT_TIME*
1a8a0 0a 20 20 20 43 55 52 52 45 4e 54 5f 54 49 4d 45  .   CURRENT_TIME
1a8b0 53 54 41 4d 50 2a 0a 20 20 20 44 41 54 41 42 41  STAMP*.   DATABA
1a8c0 53 45 2a 0a 20 20 20 44 45 46 41 55 4c 54 0a 20  SE*.   DEFAULT. 
1a8d0 20 20 44 45 46 45 52 52 45 44 2a 0a 20 20 20 44    DEFERRED*.   D
1a8e0 45 46 45 52 52 41 42 4c 45 0a 20 20 20 44 45 4c  EFERRABLE.   DEL
1a8f0 45 54 45 0a 20 20 20 44 45 53 43 2a 0a 20 20 20  ETE.   DESC*.   
1a900 44 45 54 41 43 48 2a 0a 20 20 20 44 49 53 54 49  DETACH*.   DISTI
1a910 4e 43 54 0a 20 20 20 44 52 4f 50 0a 20 20 20 45  NCT.   DROP.   E
1a920 4e 44 2a 0a 20 20 20 45 41 43 48 2a 0a 20 20 20  ND*.   EACH*.   
1a930 45 4c 53 45 0a 20 20 20 45 53 43 41 50 45 0a 20  ELSE.   ESCAPE. 
1a940 20 20 45 58 43 45 50 54 0a 20 20 20 45 58 43 4c    EXCEPT.   EXCL
1a950 55 53 49 56 45 2a 0a 20 20 20 45 58 49 53 54 53  USIVE*.   EXISTS
1a960 0a 20 20 20 45 58 50 4c 41 49 4e 2a 0a 20 20 20  .   EXPLAIN*.   
1a970 46 41 49 4c 2a 0a 20 20 20 46 4f 52 2a 0a 20 20  FAIL*.   FOR*.  
1a980 20 46 4f 52 45 49 47 4e 0a 20 20 20 46 52 4f 4d   FOREIGN.   FROM
1a990 0a 20 20 20 46 55 4c 4c 0a 20 20 20 47 4c 4f 42  .   FULL.   GLOB
1a9a0 2a 0a 20 20 20 47 52 4f 55 50 0a 20 20 20 48 41  *.   GROUP.   HA
1a9b0 56 49 4e 47 0a 20 20 20 49 46 2a 0a 20 20 20 49  VING.   IF*.   I
1a9c0 47 4e 4f 52 45 2a 0a 20 20 20 49 4d 4d 45 44 49  GNORE*.   IMMEDI
1a9d0 41 54 45 2a 0a 20 20 20 49 4e 0a 20 20 20 49 4e  ATE*.   IN.   IN
1a9e0 44 45 58 0a 20 20 20 49 4e 44 45 58 45 44 2a 0a  DEX.   INDEXED*.
1a9f0 20 20 20 49 4e 49 54 49 41 4c 4c 59 2a 0a 20 20     INITIALLY*.  
1aa00 20 49 4e 4e 45 52 0a 20 20 20 49 4e 53 45 52 54   INNER.   INSERT
1aa10 0a 20 20 20 49 4e 53 54 45 41 44 2a 0a 20 20 20  .   INSTEAD*.   
1aa20 49 4e 54 45 52 53 45 43 54 0a 20 20 20 49 4e 54  INTERSECT.   INT
1aa30 4f 0a 20 20 20 49 53 0a 20 20 20 49 53 4e 55 4c  O.   IS.   ISNUL
1aa40 4c 0a 20 20 20 4a 4f 49 4e 0a 20 20 20 4b 45 59  L.   JOIN.   KEY
1aa50 2a 0a 20 20 20 4c 45 46 54 0a 20 20 20 4c 49 4b  *.   LEFT.   LIK
1aa60 45 2a 0a 20 20 20 4c 49 4d 49 54 0a 20 20 20 4d  E*.   LIMIT.   M
1aa70 41 54 43 48 2a 0a 20 20 20 4e 41 54 55 52 41 4c  ATCH*.   NATURAL
1aa80 0a 20 20 20 4e 4f 54 0a 20 20 20 4e 4f 54 4e 55  .   NOT.   NOTNU
1aa90 4c 4c 0a 20 20 20 4e 55 4c 4c 0a 20 20 20 4f 46  LL.   NULL.   OF
1aaa0 2a 0a 20 20 20 4f 46 46 53 45 54 2a 0a 20 20 20  *.   OFFSET*.   
1aab0 4f 4e 0a 20 20 20 4f 52 0a 20 20 20 4f 52 44 45  ON.   OR.   ORDE
1aac0 52 0a 20 20 20 4f 55 54 45 52 0a 20 20 20 50 4c  R.   OUTER.   PL
1aad0 41 4e 2a 0a 20 20 20 50 52 41 47 4d 41 2a 0a 20  AN*.   PRAGMA*. 
1aae0 20 20 50 52 49 4d 41 52 59 0a 20 20 20 51 55 45    PRIMARY.   QUE
1aaf0 52 59 2a 0a 20 20 20 52 41 49 53 45 2a 0a 20 20  RY*.   RAISE*.  
1ab00 20 52 45 46 45 52 45 4e 43 45 53 0a 20 20 20 52   REFERENCES.   R
1ab10 45 47 45 58 50 2a 0a 20 20 20 52 45 49 4e 44 45  EGEXP*.   REINDE
1ab20 58 2a 0a 20 20 20 52 45 4c 45 41 53 45 2a 0a 20  X*.   RELEASE*. 
1ab30 20 20 52 45 4e 41 4d 45 2a 0a 20 20 20 52 45 50    RENAME*.   REP
1ab40 4c 41 43 45 2a 0a 20 20 20 52 45 53 54 52 49 43  LACE*.   RESTRIC
1ab50 54 2a 0a 20 20 20 52 49 47 48 54 0a 20 20 20 52  T*.   RIGHT.   R
1ab60 4f 4c 4c 42 41 43 4b 0a 20 20 20 52 4f 57 2a 0a  OLLBACK.   ROW*.
1ab70 20 20 20 53 41 56 45 50 4f 49 4e 54 2a 0a 20 20     SAVEPOINT*.  
1ab80 20 53 45 4c 45 43 54 0a 20 20 20 53 45 54 0a 20   SELECT.   SET. 
1ab90 20 20 54 41 42 4c 45 0a 20 20 20 54 45 4d 50 2a    TABLE.   TEMP*
1aba0 0a 20 20 20 54 45 4d 50 4f 52 41 52 59 2a 0a 20  .   TEMPORARY*. 
1abb0 20 20 54 48 45 4e 0a 20 20 20 54 4f 0a 20 20 20    THEN.   TO.   
1abc0 54 52 41 4e 53 41 43 54 49 4f 4e 0a 20 20 20 54  TRANSACTION.   T
1abd0 52 49 47 47 45 52 2a 0a 20 20 20 55 4e 49 4f 4e  RIGGER*.   UNION
1abe0 0a 20 20 20 55 4e 49 51 55 45 0a 20 20 20 55 50  .   UNIQUE.   UP
1abf0 44 41 54 45 0a 20 20 20 55 53 49 4e 47 0a 20 20  DATE.   USING.  
1ac00 20 56 41 43 55 55 4d 2a 0a 20 20 20 56 41 4c 55   VACUUM*.   VALU
1ac10 45 53 0a 20 20 20 56 49 45 57 2a 0a 20 20 20 56  ES.   VIEW*.   V
1ac20 49 52 54 55 41 4c 2a 0a 20 20 20 57 48 45 4e 0a  IRTUAL*.   WHEN.
1ac30 20 20 20 57 48 45 52 45 0a 7d 5d 0a 0a 68 64 5f     WHERE.}]..hd_
1ac40 70 75 74 73 20 7b 3c 44 49 56 20 63 6c 61 73 73  puts {<DIV class
1ac50 3d 22 70 64 66 5f 73 65 63 74 69 6f 6e 22 3e 7d  ="pdf_section">}
1ac60 0a 53 65 63 74 69 6f 6e 20 7b 53 51 4c 69 74 65  .Section {SQLite
1ac70 20 4b 65 79 77 6f 72 64 73 7d 20 6b 65 79 77 6f   Keywords} keywo
1ac80 72 64 73 20 7b 7b 2a 53 51 4c 20 6b 65 79 77 6f  rds {{*SQL keywo
1ac90 72 64 7d 20 7b 53 51 4c 20 6b 65 79 77 6f 72 64  rd} {SQL keyword
1aca0 73 7d 7d 0a 68 64 5f 70 75 74 73 20 7b 3c 2f 44  s}}.hd_puts {</D
1acb0 49 56 3e 7d 0a 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e  IV>}.</tcl>..<p>
1acc0 54 68 65 20 53 51 4c 20 73 74 61 6e 64 61 72 64  The SQL standard
1acd0 20 73 70 65 63 69 66 69 65 73 20 61 20 68 75 67   specifies a hug
1ace0 65 20 6e 75 6d 62 65 72 20 6f 66 20 6b 65 79 77  e number of keyw
1acf0 6f 72 64 73 20 77 68 69 63 68 20 6d 61 79 20 6e  ords which may n
1ad00 6f 74 0a 62 65 20 75 73 65 64 20 61 73 20 74 68  ot.be used as th
1ad10 65 20 6e 61 6d 65 73 20 6f 66 20 74 61 62 6c 65  e names of table
1ad20 73 2c 20 69 6e 64 69 63 65 73 2c 20 63 6f 6c 75  s, indices, colu
1ad30 6d 6e 73 2c 20 64 61 74 61 62 61 73 65 73 2c 20  mns, databases, 
1ad40 75 73 65 72 2d 64 65 66 69 6e 65 64 0a 66 75 6e  user-defined.fun
1ad50 63 74 69 6f 6e 73 2c 20 63 6f 6c 6c 61 74 69 6f  ctions, collatio
1ad60 6e 73 2c 20 76 69 72 74 75 61 6c 20 74 61 62 6c  ns, virtual tabl
1ad70 65 20 6d 6f 64 75 6c 65 73 2c 20 6f 72 20 61 6e  e modules, or an
1ad80 79 20 6f 74 68 65 72 20 6e 61 6d 65 64 20 6f 62  y other named ob
1ad90 6a 65 63 74 2e 0a 54 68 65 20 6c 69 73 74 20 6f  ject..The list o
1ada0 66 20 6b 65 79 77 6f 72 64 73 20 69 73 20 73 6f  f keywords is so
1adb0 20 6c 6f 6e 67 20 74 68 61 74 20 66 65 77 20 70   long that few p
1adc0 65 6f 70 6c 65 20 63 61 6e 20 72 65 6d 65 6d 62  eople can rememb
1add0 65 72 20 74 68 65 6d 20 61 6c 6c 2e 0a 46 6f 72  er them all..For
1ade0 20 6d 6f 73 74 20 53 51 4c 20 63 6f 64 65 2c 20   most SQL code, 
1adf0 79 6f 75 72 20 73 61 66 65 73 74 20 62 65 74 20  your safest bet 
1ae00 69 73 20 74 6f 20 6e 65 76 65 72 20 75 73 65 20  is to never use 
1ae10 61 6e 79 20 45 6e 67 6c 69 73 68 20 6c 61 6e 67  any English lang
1ae20 75 61 67 65 0a 77 6f 72 64 20 61 73 20 74 68 65  uage.word as the
1ae30 20 6e 61 6d 65 20 6f 66 20 61 20 75 73 65 72 2d   name of a user-
1ae40 64 65 66 69 6e 65 64 20 6f 62 6a 65 63 74 2e 3c  defined object.<
1ae50 2f 70 3e 0a 0a 3c 70 3e 49 66 20 79 6f 75 20 77  /p>..<p>If you w
1ae60 61 6e 74 20 74 6f 20 75 73 65 20 61 20 6b 65 79  ant to use a key
1ae70 77 6f 72 64 20 61 73 20 61 20 6e 61 6d 65 2c 20  word as a name, 
1ae80 79 6f 75 20 6e 65 65 64 20 74 6f 20 71 75 6f 74  you need to quot
1ae90 65 20 69 74 2e 20 20 54 68 65 72 65 0a 61 72 65  e it.  There.are
1aea0 20 74 68 72 65 65 20 77 61 79 73 20 6f 66 20 71   three ways of q
1aeb0 75 6f 74 69 6e 67 20 6b 65 79 77 6f 72 64 73 20  uoting keywords 
1aec0 69 6e 20 53 51 4c 69 74 65 3a 3c 2f 70 3e 0a 0a  in SQLite:</p>..
1aed0 3c 70 3e 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e  <p>.<blockquote>
1aee0 0a 3c 74 61 62 6c 65 3e 0a 3c 74 72 3e 09 3c 74  .<table>.<tr>.<t
1aef0 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 3c  d valign="top"><
1af00 62 3e 27 6b 65 79 77 6f 72 64 27 3c 2f 62 3e 3c  b>'keyword'</b><
1af10 2f 74 64 3e 3c 74 64 20 77 69 64 74 68 3d 22 32  /td><td width="2
1af20 30 22 3e 3c 2f 74 64 3e 0a 09 3c 74 64 3e 41 20  0"></td>..<td>A 
1af30 6b 65 79 77 6f 72 64 20 69 6e 20 73 69 6e 67 6c  keyword in singl
1af40 65 20 71 75 6f 74 65 73 20 69 73 20 61 20 73 74  e quotes is a st
1af50 72 69 6e 67 20 6c 69 74 65 72 61 6c 2e 3c 2f 74  ring literal.</t
1af60 64 3e 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 09 3c 74  d></tr>..<tr>.<t
1af70 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 3c  d valign="top"><
1af80 62 3e 22 6b 65 79 77 6f 72 64 22 3c 2f 62 3e 3c  b>"keyword"</b><
1af90 2f 74 64 3e 3c 74 64 3e 3c 2f 74 64 3e 0a 09 3c  /td><td></td>..<
1afa0 74 64 3e 41 20 6b 65 79 77 6f 72 64 20 69 6e 20  td>A keyword in 
1afb0 64 6f 75 62 6c 65 2d 71 75 6f 74 65 73 20 69 73  double-quotes is
1afc0 20 61 6e 20 69 64 65 6e 74 69 66 69 65 72 3c 2f   an identifier</
1afd0 74 64 3e 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 09 3c  td></tr>..<tr>.<
1afe0 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e  td valign="top">
1aff0 3c 62 3e 26 23 39 31 3b 6b 65 79 77 6f 72 64 26  <b>&#91;keyword&
1b000 23 39 33 3b 3c 2f 62 3e 3c 2f 74 64 3e 3c 74 64  #93;</b></td><td
1b010 3e 3c 2f 74 64 3e 0a 09 3c 74 64 3e 41 20 6b 65  ></td>..<td>A ke
1b020 79 77 6f 72 64 20 65 6e 63 6c 6f 73 65 64 20 69  yword enclosed i
1b030 6e 20 73 71 75 61 72 65 20 62 72 61 63 6b 65 74  n square bracket
1b040 73 20 69 73 20 0a 20 20 20 20 20 20 20 20 61 6e  s is .        an
1b050 20 69 64 65 6e 74 69 66 69 65 72 2e 20 20 54 68   identifier.  Th
1b060 69 73 20 69 73 20 6e 6f 74 20 73 74 61 6e 64 61  is is not standa
1b070 72 64 20 53 51 4c 2e 20 20 54 68 69 73 20 71 75  rd SQL.  This qu
1b080 6f 74 69 6e 67 20 6d 65 63 68 61 6e 69 73 6d 0a  oting mechanism.
1b090 20 20 20 20 20 20 20 20 69 73 20 75 73 65 64 20          is used 
1b0a0 62 79 20 4d 53 20 41 63 63 65 73 73 20 61 6e 64  by MS Access and
1b0b0 20 53 51 4c 20 53 65 72 76 65 72 20 61 6e 64 20   SQL Server and 
1b0c0 69 73 20 69 6e 63 6c 75 64 65 64 20 69 6e 20 53  is included in S
1b0d0 51 4c 69 74 65 20 66 6f 72 0a 20 20 20 20 20 20  QLite for.      
1b0e0 20 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 2e    compatibility.
1b0f0 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 0a 3c 74 72 3e  </td></tr>..<tr>
1b100 09 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
1b110 22 3e 3c 62 3e 26 23 39 36 3b 6b 65 79 77 6f 72  "><b>&#96;keywor
1b120 64 26 23 39 36 3b 3c 2f 62 3e 3c 2f 74 64 3e 3c  d&#96;</b></td><
1b130 74 64 3e 3c 2f 74 64 3e 0a 09 3c 74 64 3e 41 20  td></td>..<td>A 
1b140 6b 65 79 77 6f 72 64 20 65 6e 63 6c 6f 73 65 64  keyword enclosed
1b150 20 69 6e 20 67 72 61 76 65 20 61 63 63 65 6e 74   in grave accent
1b160 73 20 28 41 53 43 49 49 20 63 6f 64 65 20 39 36  s (ASCII code 96
1b170 29 20 69 73 20 0a 20 20 20 20 20 20 20 20 61 6e  ) is .        an
1b180 20 69 64 65 6e 74 69 66 69 65 72 2e 20 20 54 68   identifier.  Th
1b190 69 73 20 69 73 20 6e 6f 74 20 73 74 61 6e 64 61  is is not standa
1b1a0 72 64 20 53 51 4c 2e 20 20 54 68 69 73 20 71 75  rd SQL.  This qu
1b1b0 6f 74 69 6e 67 20 6d 65 63 68 61 6e 69 73 6d 0a  oting mechanism.
1b1c0 20 20 20 20 20 20 20 20 69 73 20 75 73 65 64 20          is used 
1b1d0 62 79 20 4d 79 53 51 4c 20 61 6e 64 20 69 73 20  by MySQL and is 
1b1e0 69 6e 63 6c 75 64 65 64 20 69 6e 20 53 51 4c 69  included in SQLi
1b1f0 74 65 20 66 6f 72 0a 20 20 20 20 20 20 20 20 63  te for.        c
1b200 6f 6d 70 61 74 69 62 69 6c 69 74 79 2e 3c 2f 74  ompatibility.</t
1b210 64 3e 3c 2f 74 72 3e 0a 3c 2f 74 61 62 6c 65 3e  d></tr>.</table>
1b220 0a 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 3c  .</blockquote>.<
1b230 2f 70 3e 0a 0a 3c 70 3e 46 6f 72 20 72 65 73 69  /p>..<p>For resi
1b240 6c 69 65 6e 63 65 20 77 68 65 6e 20 63 6f 6e 66  lience when conf
1b250 72 6f 6e 74 65 64 20 77 69 74 68 20 68 69 73 74  ronted with hist
1b260 6f 72 69 63 61 6c 20 53 51 4c 20 73 74 61 74 65  orical SQL state
1b270 6d 65 6e 74 73 2c 20 53 51 4c 69 74 65 0a 77 69  ments, SQLite.wi
1b280 6c 6c 20 73 6f 6d 65 74 69 6d 65 73 20 62 65 6e  ll sometimes ben
1b290 64 20 74 68 65 20 71 75 6f 74 69 6e 67 20 72 75  d the quoting ru
1b2a0 6c 65 73 20 61 62 6f 76 65 3a 3c 2f 70 3e 0a 0a  les above:</p>..
1b2b0 3c 75 6c 3e 0a 3c 6c 69 3e 3c 70 3e 49 66 20 61  <ul>.<li><p>If a
1b2c0 20 6b 65 79 77 6f 72 64 20 69 6e 20 73 69 6e 67   keyword in sing
1b2d0 6c 65 0a 71 75 6f 74 65 73 20 28 65 78 3a 20 3c  le.quotes (ex: <
1b2e0 62 3e 27 6b 65 79 27 3c 2f 62 3e 20 6f 72 20 3c  b>'key'</b> or <
1b2f0 62 3e 27 67 6c 6f 62 27 3c 2f 62 3e 29 20 69 73  b>'glob'</b>) is
1b300 20 75 73 65 64 20 69 6e 20 61 20 63 6f 6e 74 65   used in a conte
1b310 78 74 20 77 68 65 72 65 0a 61 6e 20 69 64 65 6e  xt where.an iden
1b320 74 69 66 69 65 72 20 69 73 20 61 6c 6c 6f 77 65  tifier is allowe
1b330 64 20 62 75 74 20 77 68 65 72 65 20 61 20 73 74  d but where a st
1b340 72 69 6e 67 20 6c 69 74 65 72 61 6c 20 69 73 20  ring literal is 
1b350 6e 6f 74 20 61 6c 6c 6f 77 65 64 2c 20 74 68 65  not allowed, the
1b360 6e 0a 74 68 65 20 74 6f 6b 65 6e 20 69 73 20 75  n.the token is u
1b370 6e 64 65 72 73 74 6f 6f 64 20 74 6f 20 62 65 20  nderstood to be 
1b380 61 6e 20 69 64 65 6e 74 69 66 69 65 72 20 69 6e  an identifier in
1b390 73 74 65 61 64 20 6f 66 20 61 20 73 74 72 69 6e  stead of a strin
1b3a0 67 20 6c 69 74 65 72 61 6c 2e 0a 3c 2f 70 3e 3c  g literal..</p><
1b3b0 2f 6c 69 3e 0a 0a 3c 6c 69 3e 3c 70 3e 49 66 20  /li>..<li><p>If 
1b3c0 61 20 6b 65 79 77 6f 72 64 20 69 6e 20 64 6f 75  a keyword in dou
1b3d0 62 6c 65 0a 71 75 6f 74 65 73 20 28 65 78 3a 20  ble.quotes (ex: 
1b3e0 3c 62 3e 22 6b 65 79 22 3c 2f 62 3e 20 6f 72 20  <b>"key"</b> or 
1b3f0 3c 62 3e 22 67 6c 6f 62 22 3c 2f 62 3e 29 20 69  <b>"glob"</b>) i
1b400 73 20 75 73 65 64 20 69 6e 20 61 20 63 6f 6e 74  s used in a cont
1b410 65 78 74 20 77 68 65 72 65 0a 69 74 20 63 61 6e  ext where.it can
1b420 6e 6f 74 20 62 65 20 72 65 73 6f 6c 76 65 64 20  not be resolved 
1b430 74 6f 20 61 6e 20 69 64 65 6e 74 69 66 69 65 72  to an identifier
1b440 20 62 75 74 20 77 68 65 72 65 20 61 20 73 74 72   but where a str
1b450 69 6e 67 20 6c 69 74 65 72 61 6c 0a 69 73 20 61  ing literal.is a
1b460 6c 6c 6f 77 65 64 2c 20 74 68 65 6e 20 74 68 65  llowed, then the
1b470 20 74 6f 6b 65 6e 20 69 73 20 75 6e 64 65 72 73   token is unders
1b480 74 6f 6f 64 20 74 6f 20 62 65 20 61 20 73 74 72  tood to be a str
1b490 69 6e 67 20 6c 69 74 65 72 61 6c 20 69 6e 73 74  ing literal inst
1b4a0 65 61 64 0a 6f 66 20 61 6e 20 69 64 65 6e 74 69  ead.of an identi
1b4b0 66 65 72 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a 3c 2f  fer.</p></li>.</
1b4c0 75 6c 3e 0a 0a 3c 70 3e 50 72 6f 67 72 61 6d 6d  ul>..<p>Programm
1b4d0 65 72 73 20 61 72 65 20 63 61 75 74 69 6f 6e 65  ers are cautione
1b4e0 64 20 6e 6f 74 20 74 6f 20 75 73 65 20 74 68 65  d not to use the
1b4f0 20 74 77 6f 20 65 78 63 65 70 74 69 6f 6e 73 20   two exceptions 
1b500 64 65 73 63 72 69 62 65 64 20 69 6e 0a 74 68 65  described in.the
1b510 20 70 72 65 76 69 6f 75 73 20 62 75 6c 6c 65 74   previous bullet
1b520 73 2e 20 20 57 65 20 65 6d 70 68 61 73 69 7a 65  s.  We emphasize
1b530 20 74 68 61 74 20 74 68 65 79 20 65 78 69 73 74   that they exist
1b540 20 6f 6e 6c 79 20 73 6f 20 74 68 61 74 20 6f 6c   only so that ol
1b550 64 0a 61 6e 64 20 69 6c 6c 2d 66 6f 72 6d 65 64  d.and ill-formed
1b560 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 20   SQL statements 
1b570 77 69 6c 6c 20 72 75 6e 20 63 6f 72 72 65 63 74  will run correct
1b580 6c 79 2e 20 20 46 75 74 75 72 65 20 76 65 72 73  ly.  Future vers
1b590 69 6f 6e 73 20 6f 66 0a 53 51 4c 69 74 65 20 6d  ions of.SQLite m
1b5a0 69 67 68 74 20 63 68 61 6e 67 65 20 74 6f 20 72  ight change to r
1b5b0 61 69 73 65 20 65 72 72 6f 72 73 20 69 6e 73 74  aise errors inst
1b5c0 65 61 64 20 6f 66 20 61 63 63 65 70 74 69 6e 67  ead of accepting
1b5d0 20 74 68 65 20 6d 61 6c 66 6f 72 6d 65 64 0a 73   the malformed.s
1b5e0 74 61 74 65 6d 65 6e 74 73 20 63 6f 76 65 72 65  tatements covere
1b5f0 64 20 62 79 20 74 68 65 20 65 78 63 65 70 74 69  d by the excepti
1b600 6f 6e 73 20 61 62 6f 76 65 2e 3c 2f 70 3e 0a 0a  ons above.</p>..
1b610 3c 70 3e 53 51 4c 69 74 65 20 69 73 20 65 78 74  <p>SQLite is ext
1b620 65 6e 64 65 64 20 74 6f 20 61 6c 6c 6f 77 20 6d  ended to allow m
1b630 61 6e 79 20 6b 65 79 77 6f 72 64 73 20 74 6f 20  any keywords to 
1b640 62 65 20 75 73 65 64 20 75 6e 71 75 6f 74 65 64  be used unquoted
1b650 0a 61 73 20 74 68 65 20 6e 61 6d 65 73 20 6f 66  .as the names of
1b660 20 64 61 74 61 62 61 73 65 73 2c 20 74 61 62 6c   databases, tabl
1b670 65 73 2c 20 69 6e 64 69 63 65 73 2c 20 74 72 69  es, indices, tri
1b680 67 67 65 72 73 2c 20 76 69 65 77 73 2c 20 63 6f  ggers, views, co
1b690 6c 75 6d 6e 73 2c 0a 75 73 65 72 2d 64 65 66 69  lumns,.user-defi
1b6a0 6e 65 64 20 66 75 6e 63 74 69 6f 6e 73 2c 20 63  ned functions, c
1b6b0 6f 6c 6c 61 74 69 6f 6e 73 2c 20 61 74 74 61 63  ollations, attac
1b6c0 68 65 64 20 64 61 74 61 62 61 73 65 73 2c 20 61  hed databases, a
1b6d0 6e 64 20 76 69 72 74 75 61 6c 0a 66 75 6e 63 74  nd virtual.funct
1b6e0 69 6f 6e 20 6d 6f 64 75 6c 65 73 2e 0a 49 6e 20  ion modules..In 
1b6f0 74 68 65 20 6c 69 73 74 20 6f 66 20 6b 65 79 77  the list of keyw
1b700 6f 72 64 73 20 74 68 61 74 20 66 6f 6c 6c 6f 77  ords that follow
1b710 73 2c 20 74 68 6f 73 65 20 74 68 61 74 20 63 61  s, those that ca
1b720 6e 20 62 65 20 75 73 65 64 20 61 73 20 69 64 65  n be used as ide
1b730 6e 74 69 66 69 65 72 73 0a 61 72 65 20 73 68 6f  ntifiers.are sho
1b740 77 6e 20 69 6e 20 61 6e 20 69 74 61 6c 69 63 20  wn in an italic 
1b750 66 6f 6e 74 2e 20 20 4b 65 79 77 6f 72 64 73 20  font.  Keywords 
1b760 74 68 61 74 20 6d 75 73 74 20 62 65 20 71 75 6f  that must be quo
1b770 74 65 64 20 69 6e 20 6f 72 64 65 72 20 74 6f 20  ted in order to 
1b780 62 65 0a 75 73 65 64 20 61 73 20 69 64 65 6e 74  be.used as ident
1b790 69 66 69 65 72 73 20 61 72 65 20 73 68 6f 77 6e  ifiers are shown
1b7a0 20 69 6e 20 62 6f 6c 64 2e 3c 2f 70 3e 0a 0a 3c   in bold.</p>..<
1b7b0 70 3e 0a 53 51 4c 69 74 65 20 61 64 64 73 20 6e  p>.SQLite adds n
1b7c0 65 77 20 6b 65 79 77 6f 72 64 73 20 66 72 6f 6d  ew keywords from
1b7d0 20 74 69 6d 65 20 74 6f 20 74 69 6d 65 20 77 68   time to time wh
1b7e0 65 6e 20 69 74 20 74 61 6b 65 73 20 6f 6e 20 6e  en it takes on n
1b7f0 65 77 20 66 65 61 74 75 72 65 73 2e 0a 53 6f 20  ew features..So 
1b800 74 6f 20 70 72 65 76 65 6e 74 20 79 6f 75 72 20  to prevent your 
1b810 63 6f 64 65 20 66 72 6f 6d 20 62 65 69 6e 67 20  code from being 
1b820 62 72 6f 6b 65 6e 20 62 79 20 66 75 74 75 72 65  broken by future
1b830 20 65 6e 68 61 6e 63 65 6d 65 6e 74 73 2c 20 79   enhancements, y
1b840 6f 75 20 73 68 6f 75 6c 64 0a 6e 6f 72 6d 61 6c  ou should.normal
1b850 6c 79 20 71 75 6f 74 65 20 61 6e 79 20 69 64 65  ly quote any ide
1b860 6e 74 69 66 69 65 72 20 74 68 61 74 20 69 73 20  ntifier that is 
1b870 61 6e 20 45 6e 67 6c 69 73 68 20 6c 61 6e 67 75  an English langu
1b880 61 67 65 20 77 6f 72 64 2c 20 65 76 65 6e 20 69  age word, even i
1b890 66 0a 79 6f 75 20 64 6f 20 6e 6f 74 20 68 61 76  f.you do not hav
1b8a0 65 20 74 6f 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a  e to..</p>..<p>.
1b8b0 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 61 72  The following ar
1b8c0 65 20 74 68 65 20 6b 65 79 77 6f 72 64 73 20 63  e the keywords c
1b8d0 75 72 72 65 6e 74 6c 79 20 72 65 63 6f 67 6e 69  urrently recogni
1b8e0 7a 65 64 20 62 79 20 53 51 4c 69 74 65 3a 0a 3c  zed by SQLite:.<
1b8f0 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65  /p>..<blockquote
1b900 3e 0a 3c 74 61 62 6c 65 20 77 69 64 74 68 3d 22  >.<table width="
1b910 31 30 30 25 22 20 63 6c 61 73 73 3d 22 70 64 66  100%" class="pdf
1b920 5f 6b 65 79 77 6f 72 64 73 22 3e 0a 3c 74 72 3e  _keywords">.<tr>
1b930 0a 3c 74 64 20 61 6c 69 67 6e 3d 22 6c 65 66 74  .<td align="left
1b940 22 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 77  " valign="top" w
1b950 69 64 74 68 3d 22 32 30 25 22 3e 0a 0a 3c 74 63  idth="20%">..<tc
1b960 6c 3e 0a 73 65 74 20 6e 20 5b 6c 6c 65 6e 67 74  l>.set n [llengt
1b970 68 20 24 6b 65 79 77 6f 72 64 5f 6c 69 73 74 5d  h $keyword_list]
1b980 0a 73 65 74 20 6e 43 6f 6c 20 35 0a 73 65 74 20  .set nCol 5.set 
1b990 6e 52 6f 77 20 5b 65 78 70 72 20 7b 28 24 6e 2b  nRow [expr {($n+
1b9a0 24 6e 43 6f 6c 2d 31 29 2f 24 6e 43 6f 6c 7d 5d  $nCol-1)/$nCol}]
1b9b0 0a 73 65 74 20 69 20 30 0a 66 6f 72 65 61 63 68  .set i 0.foreach
1b9c0 20 77 6f 72 64 20 24 6b 65 79 77 6f 72 64 5f 6c   word $keyword_l
1b9d0 69 73 74 20 7b 0a 20 20 69 66 20 7b 5b 73 74 72  ist {.  if {[str
1b9e0 69 6e 67 20 69 6e 64 65 78 20 24 77 6f 72 64 20  ing index $word 
1b9f0 65 6e 64 5d 3d 3d 22 2a 22 7d 20 7b 0a 20 20 20  end]=="*"} {.   
1ba00 20 73 65 74 20 77 6f 72 64 20 5b 73 74 72 69 6e   set word [strin
1ba10 67 20 72 61 6e 67 65 20 24 77 6f 72 64 20 30 20  g range $word 0 
1ba20 65 6e 64 2d 31 5d 0a 20 20 20 20 73 65 74 20 66  end-1].    set f
1ba30 6f 6e 74 20 69 0a 20 20 7d 20 65 6c 73 65 20 7b  ont i.  } else {
1ba40 0a 20 20 20 20 73 65 74 20 66 6f 6e 74 20 62 0a  .    set font b.
1ba50 20 20 7d 0a 20 20 69 66 20 7b 24 69 3d 3d 24 6e    }.  if {$i==$n
1ba60 52 6f 77 7d 20 7b 0a 20 20 20 20 68 64 5f 70 75  Row} {.    hd_pu
1ba70 74 73 20 22 3c 2f 74 64 3e 3c 74 64 20 76 61 6c  ts "</td><td val
1ba80 69 67 6e 3d 5c 22 74 6f 70 5c 22 20 61 6c 69 67  ign=\"top\" alig
1ba90 6e 3d 5c 22 6c 65 66 74 5c 22 20 77 69 64 74 68  n=\"left\" width
1baa0 3d 5c 22 32 30 25 5c 22 3e 22 0a 20 20 20 20 73  =\"20%\">".    s
1bab0 65 74 20 69 20 31 0a 20 20 7d 20 65 6c 73 65 20  et i 1.  } else 
1bac0 7b 0a 20 20 20 20 69 6e 63 72 20 69 0a 20 20 7d  {.    incr i.  }
1bad0 0a 20 20 68 64 5f 70 75 74 73 20 22 3c 24 66 6f  .  hd_puts "<$fo
1bae0 6e 74 3e 24 77 6f 72 64 3c 2f 24 66 6f 6e 74 3e  nt>$word</$font>
1baf0 3c 62 72 3e 22 0a 7d 0a 3c 2f 74 63 6c 3e 0a 3c  <br>".}.</tcl>.<
1bb00 2f 74 64 3e 3c 2f 74 72 3e 3c 2f 74 61 62 6c 65  /td></tr></table
1bb10 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a  ></blockquote>..
1bb20 3c 68 32 3e 53 70 65 63 69 61 6c 20 6e 61 6d 65  <h2>Special name
1bb30 73 3c 2f 68 32 3e 0a 0a 3c 70 3e 54 68 65 20 66  s</h2>..<p>The f
1bb40 6f 6c 6c 6f 77 69 6e 67 20 61 72 65 20 6e 6f 74  ollowing are not
1bb50 20 6b 65 79 77 6f 72 64 73 20 69 6e 20 53 51 4c   keywords in SQL
1bb60 69 74 65 2c 20 62 75 74 20 61 72 65 20 75 73 65  ite, but are use
1bb70 64 20 61 73 20 6e 61 6d 65 73 20 6f 66 20 0a 73  d as names of .s
1bb80 79 73 74 65 6d 20 6f 62 6a 65 63 74 73 2e 20 20  ystem objects.  
1bb90 54 68 65 79 20 63 61 6e 20 62 65 20 75 73 65 64  They can be used
1bba0 20 61 73 20 61 6e 20 69 64 65 6e 74 69 66 69 65   as an identifie
1bbb0 72 20 66 6f 72 20 61 20 64 69 66 66 65 72 65 6e  r for a differen
1bbc0 74 20 0a 74 79 70 65 20 6f 66 20 6f 62 6a 65 63  t .type of objec
1bbd0 74 2e 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75  t.</p>..<blockqu
1bbe0 6f 74 65 20 63 6c 61 73 73 3d 22 70 64 66 5f 6b  ote class="pdf_k
1bbf0 65 79 77 6f 72 64 73 22 3e 3c 62 3e 0a 20 20 5f  eywords"><b>.  _
1bc00 52 4f 57 49 44 5f 3c 62 72 3e 0a 20 20 4d 41 49  ROWID_<br>.  MAI
1bc10 4e 3c 62 72 3e 0a 20 20 4f 49 44 3c 62 72 3e 0a  N<br>.  OID<br>.
1bc20 20 20 52 4f 57 49 44 3c 62 72 3e 0a 20 20 53 51    ROWID<br>.  SQ
1bc30 4c 49 54 45 5f 4d 41 53 54 45 52 3c 62 72 3e 0a  LITE_MASTER<br>.
1bc40 20 20 53 51 4c 49 54 45 5f 53 45 51 55 45 4e 43    SQLITE_SEQUENC
1bc50 45 3c 62 72 3e 0a 20 20 53 51 4c 49 54 45 5f 54  E<br>.  SQLITE_T
1bc60 45 4d 50 5f 4d 41 53 54 45 52 3c 62 72 3e 0a 20  EMP_MASTER<br>. 
1bc70 20 54 45 4d 50 3c 62 72 3e 0a 3c 2f 62 3e 3c 2f   TEMP<br>.</b></
1bc80 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a              blockquote>.