/ Hex Artifact Content
Login

Artifact 46fb1a380021aa1e7a51104b53b4066e54ba9b64:


0000: 23 0a 23 20 52 75 6e 20 74 68 69 73 20 54 63 6c  #.# Run this Tcl
0010: 20 73 63 72 69 70 74 20 74 6f 20 67 65 6e 65 72   script to gener
0020: 61 74 65 20 74 68 65 20 73 71 6c 69 74 65 2e 68  ate the sqlite.h
0030: 74 6d 6c 20 66 69 6c 65 2e 0a 23 0a 73 65 74 20  tml file..#.set 
0040: 72 63 73 69 64 20 7b 24 49 64 3a 20 6c 61 6e 67  rcsid {$Id: lang
0050: 2e 74 63 6c 2c 76 20 31 2e 35 32 20 32 30 30 33  .tcl,v 1.52 2003
0060: 2f 30 35 2f 30 33 20 31 39 3a 30 34 3a 30 34 20  /05/03 19:04:04 
0070: 64 72 68 20 45 78 70 20 24 7d 0a 0a 70 75 74 73  drh Exp $}..puts
0080: 20 7b 3c 68 74 6d 6c 3e 0a 3c 68 65 61 64 3e 0a   {<html>.<head>.
0090: 20 20 3c 74 69 74 6c 65 3e 51 75 65 72 79 20 4c    <title>Query L
00a0: 61 6e 67 75 61 67 65 20 55 6e 64 65 72 73 74 6f  anguage Understo
00b0: 6f 64 20 42 79 20 53 51 4c 69 74 65 3c 2f 74 69  od By SQLite</ti
00c0: 74 6c 65 3e 0a 3c 2f 68 65 61 64 3e 0a 3c 62 6f  tle>.</head>.<bo
00d0: 64 79 20 62 67 63 6f 6c 6f 72 3d 77 68 69 74 65  dy bgcolor=white
00e0: 3e 0a 3c 68 31 20 61 6c 69 67 6e 3d 63 65 6e 74  >.<h1 align=cent
00f0: 65 72 3e 0a 53 51 4c 20 41 73 20 55 6e 64 65 72  er>.SQL As Under
0100: 73 74 6f 6f 64 20 42 79 20 53 51 4c 69 74 65 0a  stood By SQLite.
0110: 3c 2f 68 31 3e 7d 0a 70 75 74 73 20 22 3c 70 20  </h1>}.puts "<p 
0120: 61 6c 69 67 6e 3d 63 65 6e 74 65 72 3e 0a 28 54  align=center>.(T
0130: 68 69 73 20 70 61 67 65 20 77 61 73 20 6c 61 73  his page was las
0140: 74 20 6d 6f 64 69 66 69 65 64 20 6f 6e 20 5b 6c  t modified on [l
0150: 72 61 6e 67 65 20 24 72 63 73 69 64 20 33 20 34  range $rcsid 3 4
0160: 5d 20 55 54 43 29 0a 3c 2f 70 3e 22 0a 0a 70 75  ] UTC).</p>"..pu
0170: 74 73 20 7b 0a 3c 70 3e 54 68 65 20 53 51 4c 69  ts {.<p>The SQLi
0180: 74 65 20 6c 69 62 72 61 72 79 20 75 6e 64 65 72  te library under
0190: 73 74 61 6e 64 73 20 6d 6f 73 74 20 6f 66 20 74  stands most of t
01a0: 68 65 20 73 74 61 6e 64 61 72 64 20 53 51 4c 0a  he standard SQL.
01b0: 6c 61 6e 67 75 61 67 65 2e 20 20 42 75 74 20 69  language.  But i
01c0: 74 20 64 6f 65 73 20 3c 61 20 68 72 65 66 3d 22  t does <a href="
01d0: 6f 6d 69 74 74 65 64 2e 68 74 6d 6c 22 3e 6f 6d  omitted.html">om
01e0: 69 74 20 73 6f 6d 65 20 66 65 61 74 75 72 65 73  it some features
01f0: 3c 2f 61 3e 0a 77 68 69 6c 65 20 61 74 20 74 68  </a>.while at th
0200: 65 20 73 61 6d 65 20 74 69 6d 65 0a 61 64 64 69  e same time.addi
0210: 6e 67 20 61 20 66 65 77 20 66 65 61 74 75 72 65  ng a few feature
0220: 73 20 6f 66 20 69 74 73 20 6f 77 6e 2e 20 20 54  s of its own.  T
0230: 68 69 73 20 64 6f 63 75 6d 65 6e 74 20 61 74 74  his document att
0240: 65 6d 70 74 73 20 74 6f 0a 64 65 73 63 72 69 62  empts to.describ
0250: 65 20 70 65 72 63 69 73 65 6c 79 20 77 68 61 74  e percisely what
0260: 20 70 61 72 74 73 20 6f 66 20 74 68 65 20 53 51   parts of the SQ
0270: 4c 20 6c 61 6e 67 75 61 67 65 20 53 51 4c 69 74  L language SQLit
0280: 65 20 64 6f 65 73 0a 61 6e 64 20 64 6f 65 73 20  e does.and does 
0290: 6e 6f 74 20 73 75 70 70 6f 72 74 2e 3c 2f 70 3e  not support.</p>
02a0: 0a 0a 3c 70 3e 49 6e 20 61 6c 6c 20 6f 66 20 74  ..<p>In all of t
02b0: 68 65 20 73 79 6e 74 61 78 20 64 69 61 67 72 61  he syntax diagra
02c0: 6d 73 20 74 68 61 74 20 66 6f 6c 6c 6f 77 2c 20  ms that follow, 
02d0: 6c 69 74 65 72 61 6c 20 74 65 78 74 20 69 73 20  literal text is 
02e0: 73 68 6f 77 6e 20 69 6e 0a 62 6f 6c 64 20 62 6c  shown in.bold bl
02f0: 75 65 2e 20 20 4e 6f 6e 2d 74 65 72 6d 69 6e 61  ue.  Non-termina
0300: 6c 20 73 79 6d 62 6f 6c 73 20 61 72 65 20 73 68  l symbols are sh
0310: 6f 77 6e 20 69 6e 20 69 74 61 6c 69 63 20 72 65  own in italic re
0320: 64 2e 20 20 4f 70 65 72 61 74 6f 72 73 0a 74 68  d.  Operators.th
0330: 61 74 20 61 72 65 20 70 61 72 74 20 6f 66 20 74  at are part of t
0340: 68 65 20 73 79 6e 74 61 63 74 69 63 20 6d 61 72  he syntactic mar
0350: 6b 75 70 20 69 74 73 65 6c 66 20 61 72 65 20 73  kup itself are s
0360: 68 6f 77 6e 20 69 6e 20 62 6c 61 63 6b 20 72 6f  hown in black ro
0370: 6d 61 6e 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 69  man.</p>..<p>Thi
0380: 73 20 64 6f 63 75 6d 65 6e 74 20 69 73 20 6a 75  s document is ju
0390: 73 74 20 61 6e 20 6f 76 65 72 76 69 65 77 20 6f  st an overview o
03a0: 66 20 74 68 65 20 53 51 4c 20 73 79 6e 74 61 78  f the SQL syntax
03b0: 20 69 6d 70 6c 65 6d 65 6e 74 65 64 0a 62 79 20   implemented.by 
03c0: 53 51 4c 69 74 65 2e 20 20 4d 61 6e 79 20 6c 6f  SQLite.  Many lo
03d0: 77 2d 6c 65 76 65 6c 20 70 72 6f 64 75 63 74 69  w-level producti
03e0: 6f 6e 73 20 61 72 65 20 6f 6d 69 74 74 65 64 2e  ons are omitted.
03f0: 20 20 46 6f 72 20 64 65 74 61 69 6c 65 64 20 69    For detailed i
0400: 6e 66 6f 72 6d 61 74 69 6f 6e 0a 6f 6e 20 74 68  nformation.on th
0410: 65 20 6c 61 6e 67 75 61 67 65 20 74 68 61 74 20  e language that 
0420: 53 51 4c 69 74 65 20 75 6e 64 65 72 73 74 61 6e  SQLite understan
0430: 64 73 2c 20 72 65 66 65 72 20 74 6f 20 74 68 65  ds, refer to the
0440: 20 73 6f 75 72 63 65 20 63 6f 64 65 2e 3c 2f 70   source code.</p
0450: 3e 0a 0a 0a 3c 70 3e 53 51 4c 69 74 65 20 69 6d  >...<p>SQLite im
0460: 70 6c 65 6d 65 6e 74 73 20 74 68 65 20 66 6f 6c  plements the fol
0470: 6c 6f 77 20 73 79 6e 74 61 78 3a 3c 2f 70 3e 0a  low syntax:</p>.
0480: 3c 70 3e 3c 75 6c 3e 0a 7d 0a 0a 66 6f 72 65 61  <p><ul>.}..forea
0490: 63 68 20 7b 73 65 63 74 69 6f 6e 7d 20 5b 6c 73  ch {section} [ls
04a0: 6f 72 74 20 2d 69 6e 64 65 78 20 30 20 2d 64 69  ort -index 0 -di
04b0: 63 74 69 6f 6e 61 72 79 20 7b 0a 20 20 7b 7b 43  ctionary {.  {{C
04c0: 52 45 41 54 45 20 54 41 42 4c 45 7d 20 63 72 65  REATE TABLE} cre
04d0: 61 74 65 74 61 62 6c 65 7d 0a 20 20 7b 7b 43 52  atetable}.  {{CR
04e0: 45 41 54 45 20 49 4e 44 45 58 7d 20 63 72 65 61  EATE INDEX} crea
04f0: 74 65 69 6e 64 65 78 7d 0a 20 20 7b 56 41 43 55  teindex}.  {VACU
0500: 55 4d 20 76 61 63 75 75 6d 7d 0a 20 20 7b 7b 44  UM vacuum}.  {{D
0510: 52 4f 50 20 54 41 42 4c 45 7d 20 64 72 6f 70 74  ROP TABLE} dropt
0520: 61 62 6c 65 7d 0a 20 20 7b 7b 44 52 4f 50 20 49  able}.  {{DROP I
0530: 4e 44 45 58 7d 20 64 72 6f 70 69 6e 64 65 78 7d  NDEX} dropindex}
0540: 0a 20 20 7b 49 4e 53 45 52 54 20 69 6e 73 65 72  .  {INSERT inser
0550: 74 7d 0a 20 20 7b 52 45 50 4c 41 43 45 20 72 65  t}.  {REPLACE re
0560: 70 6c 61 63 65 7d 0a 20 20 7b 44 45 4c 45 54 45  place}.  {DELETE
0570: 20 64 65 6c 65 74 65 7d 0a 20 20 7b 55 50 44 41   delete}.  {UPDA
0580: 54 45 20 75 70 64 61 74 65 7d 0a 20 20 7b 53 45  TE update}.  {SE
0590: 4c 45 43 54 20 73 65 6c 65 63 74 7d 0a 20 20 7b  LECT select}.  {
05a0: 63 6f 6d 6d 65 6e 74 20 63 6f 6d 6d 65 6e 74 7d  comment comment}
05b0: 0a 20 20 7b 43 4f 50 59 20 63 6f 70 79 7d 0a 20  .  {COPY copy}. 
05c0: 20 7b 45 58 50 4c 41 49 4e 20 65 78 70 6c 61 69   {EXPLAIN explai
05d0: 6e 7d 0a 20 20 7b 65 78 70 72 65 73 73 69 6f 6e  n}.  {expression
05e0: 20 65 78 70 72 7d 0a 20 20 7b 7b 42 45 47 49 4e   expr}.  {{BEGIN
05f0: 20 54 52 41 4e 53 41 43 54 49 4f 4e 7d 20 74 72   TRANSACTION} tr
0600: 61 6e 73 61 63 74 69 6f 6e 7d 0a 20 20 7b 50 52  ansaction}.  {PR
0610: 41 47 4d 41 20 70 72 61 67 6d 61 7d 0a 20 20 7b  AGMA pragma}.  {
0620: 7b 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 63 6c 61  {ON CONFLICT cla
0630: 75 73 65 7d 20 63 6f 6e 66 6c 69 63 74 7d 0a 20  use} conflict}. 
0640: 20 7b 7b 43 52 45 41 54 45 20 56 49 45 57 7d 20   {{CREATE VIEW} 
0650: 63 72 65 61 74 65 76 69 65 77 7d 0a 20 20 7b 7b  createview}.  {{
0660: 44 52 4f 50 20 56 49 45 57 7d 20 64 72 6f 70 76  DROP VIEW} dropv
0670: 69 65 77 7d 0a 20 20 7b 7b 43 52 45 41 54 45 20  iew}.  {{CREATE 
0680: 54 52 49 47 47 45 52 7d 20 63 72 65 61 74 65 74  TRIGGER} createt
0690: 72 69 67 67 65 72 7d 0a 20 20 7b 7b 44 52 4f 50  rigger}.  {{DROP
06a0: 20 54 52 49 47 47 45 52 7d 20 64 72 6f 70 74 72   TRIGGER} droptr
06b0: 69 67 67 65 72 7d 0a 20 20 7b 7b 41 54 54 41 43  igger}.  {{ATTAC
06c0: 48 20 44 41 54 41 42 41 53 45 7d 20 61 74 74 61  H DATABASE} atta
06d0: 63 68 64 61 74 61 62 61 73 65 7d 0a 20 20 7b 7b  chdatabase}.  {{
06e0: 44 45 54 41 43 48 20 44 41 54 41 42 41 53 45 7d  DETACH DATABASE}
06f0: 20 64 65 74 61 63 68 64 61 74 61 62 61 73 65 7d   detachdatabase}
0700: 0a 7d 5d 20 7b 0a 20 20 70 75 74 73 20 22 3c 6c  .}] {.  puts "<l
0710: 69 3e 3c 61 20 68 72 65 66 3d 5c 22 23 5b 6c 69  i><a href=\"#[li
0720: 6e 64 65 78 20 24 73 65 63 74 69 6f 6e 20 31 5d  ndex $section 1]
0730: 5c 22 3e 5b 6c 69 6e 64 65 78 20 24 73 65 63 74  \">[lindex $sect
0740: 69 6f 6e 20 30 5d 3c 2f 61 3e 3c 2f 6c 69 3e 22  ion 0]</a></li>"
0750: 0a 7d 0a 70 75 74 73 20 7b 3c 2f 75 6c 3e 3c 2f  .}.puts {</ul></
0760: 70 3e 0a 0a 3c 70 3e 44 65 74 61 69 6c 73 20 6f  p>..<p>Details o
0770: 6e 20 74 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61  n the implementa
0780: 74 69 6f 6e 20 6f 66 20 65 61 63 68 20 63 6f 6d  tion of each com
0790: 6d 61 6e 64 20 61 72 65 20 70 72 6f 76 69 64 65  mand are provide
07a0: 64 20 69 6e 0a 74 68 65 20 73 65 71 75 65 6c 2e  d in.the sequel.
07b0: 3c 2f 70 3e 0a 7d 0a 0a 70 72 6f 63 20 53 79 6e  </p>.}..proc Syn
07c0: 74 61 78 20 7b 61 72 67 73 7d 20 7b 0a 20 20 70  tax {args} {.  p
07d0: 75 74 73 20 7b 3c 74 61 62 6c 65 20 63 65 6c 6c  uts {<table cell
07e0: 70 61 64 64 69 6e 67 3d 22 31 30 22 3e 7d 0a 20  padding="10">}. 
07f0: 20 66 6f 72 65 61 63 68 20 7b 72 75 6c 65 20 62   foreach {rule b
0800: 6f 64 79 7d 20 24 61 72 67 73 20 7b 0a 20 20 20  ody} $args {.   
0810: 20 70 75 74 73 20 22 3c 74 72 3e 3c 74 64 20 61   puts "<tr><td a
0820: 6c 69 67 6e 3d 5c 22 72 69 67 68 74 5c 22 20 76  lign=\"right\" v
0830: 61 6c 69 67 6e 3d 5c 22 74 6f 70 5c 22 3e 22 0a  align=\"top\">".
0840: 20 20 20 20 70 75 74 73 20 22 3c 69 3e 3c 66 6f      puts "<i><fo
0850: 6e 74 20 63 6f 6c 6f 72 3d 5c 22 23 66 66 33 34  nt color=\"#ff34
0860: 33 34 5c 22 3e 24 72 75 6c 65 3c 2f 66 6f 6e 74  34\">$rule</font
0870: 3e 3c 2f 69 3e 26 6e 62 73 70 3b 3a 3a 3d 3c 2f  ></i>&nbsp;::=</
0880: 74 64 3e 22 0a 20 20 20 20 72 65 67 73 75 62 20  td>".    regsub 
0890: 2d 61 6c 6c 20 3c 20 24 62 6f 64 79 20 7b 25 4c  -all < $body {%L
08a0: 54 7d 20 62 6f 64 79 0a 20 20 20 20 72 65 67 73  T} body.    regs
08b0: 75 62 20 2d 61 6c 6c 20 3e 20 24 62 6f 64 79 20  ub -all > $body 
08c0: 7b 25 47 54 7d 20 62 6f 64 79 0a 20 20 20 20 72  {%GT} body.    r
08d0: 65 67 73 75 62 20 2d 61 6c 6c 20 25 4c 54 20 24  egsub -all %LT $
08e0: 62 6f 64 79 20 7b 3c 2f 66 6f 6e 74 3e 3c 2f 62  body {</font></b
08f0: 3e 3c 69 3e 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d  ><i><font color=
0900: 22 23 66 66 33 34 33 34 22 3e 7d 20 62 6f 64 79  "#ff3434">} body
0910: 0a 20 20 20 20 72 65 67 73 75 62 20 2d 61 6c 6c  .    regsub -all
0920: 20 25 47 54 20 24 62 6f 64 79 20 7b 3c 2f 66 6f   %GT $body {</fo
0930: 6e 74 3e 3c 2f 69 3e 3c 62 3e 3c 66 6f 6e 74 20  nt></i><b><font 
0940: 63 6f 6c 6f 72 3d 22 23 32 63 32 63 66 30 22 3e  color="#2c2cf0">
0950: 7d 20 62 6f 64 79 0a 20 20 20 20 72 65 67 73 75  } body.    regsu
0960: 62 20 2d 61 6c 6c 20 7b 5b 5d 7c 5b 2a 3f 5d 7d  b -all {[]|[*?]}
0970: 20 24 62 6f 64 79 20 7b 3c 2f 66 6f 6e 74 3e 3c   $body {</font><
0980: 2f 62 3e 26 3c 62 3e 3c 66 6f 6e 74 20 63 6f 6c  /b>&<b><font col
0990: 6f 72 3d 22 23 32 63 32 63 66 30 22 3e 7d 20 62  or="#2c2cf0">} b
09a0: 6f 64 79 0a 20 20 20 20 72 65 67 73 75 62 20 2d  ody.    regsub -
09b0: 61 6c 6c 20 22 5c 6e 22 20 5b 73 74 72 69 6e 67  all "\n" [string
09c0: 20 74 72 69 6d 20 24 62 6f 64 79 5d 20 22 3c 62   trim $body] "<b
09d0: 72 3e 5c 6e 22 20 62 6f 64 79 0a 20 20 20 20 72  r>\n" body.    r
09e0: 65 67 73 75 62 20 2d 61 6c 6c 20 22 5c 6e 20 20  egsub -all "\n  
09f0: 2a 22 20 24 62 6f 64 79 20 22 5c 6e 5c 5c 26 6e  *" $body "\n\\&n
0a00: 62 73 70 3b 5c 5c 26 6e 62 73 70 3b 5c 5c 26 6e  bsp;\\&nbsp;\\&n
0a10: 62 73 70 3b 5c 5c 26 6e 62 73 70 3b 22 20 62 6f  bsp;\\&nbsp;" bo
0a20: 64 79 0a 20 20 20 20 72 65 67 73 75 62 20 2d 61  dy.    regsub -a
0a30: 6c 6c 20 7b 5b 7c 2c 2e 2a 28 29 5d 7d 20 24 62  ll {[|,.*()]} $b
0a40: 6f 64 79 20 7b 3c 62 69 67 3e 26 3c 2f 62 69 67  ody {<big>&</big
0a50: 3e 7d 20 62 6f 64 79 0a 20 20 20 20 72 65 67 73  >} body.    regs
0a60: 75 62 20 2d 61 6c 6c 20 7b 20 3d 20 7d 20 24 62  ub -all { = } $b
0a70: 6f 64 79 20 7b 20 3c 62 69 67 3e 3d 3c 2f 62 69  ody { <big>=</bi
0a80: 67 3e 20 7d 20 62 6f 64 79 0a 20 20 20 20 72 65  g> } body.    re
0a90: 67 73 75 62 20 2d 61 6c 6c 20 7b 53 54 41 52 7d  gsub -all {STAR}
0aa0: 20 24 62 6f 64 79 20 7b 3c 62 69 67 3e 2a 3c 2f   $body {<big>*</
0ab0: 62 69 67 3e 7d 20 62 6f 64 79 0a 20 20 20 20 70  big>} body.    p
0ac0: 75 74 73 20 22 3c 74 64 3e 3c 62 3e 3c 66 6f 6e  uts "<td><b><fon
0ad0: 74 20 63 6f 6c 6f 72 3d 5c 22 23 32 63 32 63 66  t color=\"#2c2cf
0ae0: 30 5c 22 3e 24 62 6f 64 79 3c 2f 66 6f 6e 74 3e  0\">$body</font>
0af0: 3c 2f 62 3e 3c 2f 74 64 3e 3c 2f 74 72 3e 22 0a  </b></td></tr>".
0b00: 20 20 7d 0a 20 20 70 75 74 73 20 7b 3c 2f 74 61    }.  puts {</ta
0b10: 62 6c 65 3e 7d 0a 7d 0a 70 72 6f 63 20 4f 70 65  ble>}.}.proc Ope
0b20: 72 61 74 6f 72 20 7b 6e 61 6d 65 7d 20 7b 0a 20  rator {name} {. 
0b30: 20 72 65 74 75 72 6e 20 22 3c 66 6f 6e 74 20 63   return "<font c
0b40: 6f 6c 6f 72 3d 5c 22 23 32 63 32 63 66 30 5c 22  olor=\"#2c2cf0\"
0b50: 3e 3c 62 69 67 3e 24 6e 61 6d 65 3c 2f 62 69 67  ><big>$name</big
0b60: 3e 3c 2f 66 6f 6e 74 3e 22 0a 7d 0a 70 72 6f 63  ></font>".}.proc
0b70: 20 4e 6f 6e 74 65 72 6d 69 6e 61 6c 20 7b 6e 61   Nonterminal {na
0b80: 6d 65 7d 20 7b 0a 20 20 72 65 74 75 72 6e 20 22  me} {.  return "
0b90: 3c 69 3e 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 5c  <i><font color=\
0ba0: 22 23 66 66 33 34 33 34 5c 22 3e 24 6e 61 6d 65  "#ff3434\">$name
0bb0: 3c 2f 66 6f 6e 74 3e 3c 2f 69 3e 22 0a 7d 0a 70  </font></i>".}.p
0bc0: 72 6f 63 20 4b 65 79 77 6f 72 64 20 7b 6e 61 6d  roc Keyword {nam
0bd0: 65 7d 20 7b 0a 20 20 72 65 74 75 72 6e 20 22 3c  e} {.  return "<
0be0: 66 6f 6e 74 20 63 6f 6c 6f 72 3d 5c 22 23 32 63  font color=\"#2c
0bf0: 32 63 66 30 5c 22 3e 24 6e 61 6d 65 3c 2f 66 6f  2cf0\">$name</fo
0c00: 6e 74 3e 22 0a 7d 0a 20 0a 0a 70 72 6f 63 20 53  nt>".}. ..proc S
0c10: 65 63 74 69 6f 6e 20 7b 6e 61 6d 65 20 7b 6c 61  ection {name {la
0c20: 62 65 6c 20 7b 7d 7d 7d 20 7b 0a 20 20 70 75 74  bel {}}} {.  put
0c30: 73 20 22 5c 6e 3c 68 72 20 2f 3e 22 0a 20 20 69  s "\n<hr />".  i
0c40: 66 20 7b 24 6c 61 62 65 6c 21 3d 22 22 7d 20 7b  f {$label!=""} {
0c50: 0a 20 20 20 20 70 75 74 73 20 22 3c 61 20 6e 61  .    puts "<a na
0c60: 6d 65 3d 5c 22 24 6c 61 62 65 6c 5c 22 3e 22 0a  me=\"$label\">".
0c70: 20 20 7d 0a 20 20 70 75 74 73 20 22 3c 68 31 3e    }.  puts "<h1>
0c80: 24 6e 61 6d 65 3c 2f 68 31 3e 5c 6e 22 0a 7d 0a  $name</h1>\n".}.
0c90: 0a 70 72 6f 63 20 45 78 61 6d 70 6c 65 20 7b 74  .proc Example {t
0ca0: 65 78 74 7d 20 7b 0a 20 20 70 75 74 73 20 22 3c  ext} {.  puts "<
0cb0: 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70 72 65 3e  blockquote><pre>
0cc0: 24 74 65 78 74 3c 2f 70 72 65 3e 3c 2f 62 6c 6f  $text</pre></blo
0cd0: 63 6b 71 75 6f 74 65 3e 22 0a 7d 0a 0a 0a 53 65  ckquote>".}...Se
0ce0: 63 74 69 6f 6e 20 7b 41 54 54 41 43 48 20 44 41  ction {ATTACH DA
0cf0: 54 41 42 41 53 45 7d 20 61 74 74 61 63 68 64 61  TABASE} attachda
0d00: 74 61 62 61 73 65 0a 0a 53 79 6e 74 61 78 20 7b  tabase..Syntax {
0d10: 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b  sql-statement} {
0d20: 0a 41 54 54 41 43 48 20 5b 44 41 54 41 42 41 53  .ATTACH [DATABAS
0d30: 45 5d 20 3c 64 61 74 61 62 61 73 65 2d 66 69 6c  E] <database-fil
0d40: 65 6e 61 6d 65 3e 20 41 53 20 3c 64 61 74 61 62  ename> AS <datab
0d50: 61 73 65 2d 6e 61 6d 65 3e 0a 7d 0a 0a 70 75 74  ase-name>.}..put
0d60: 73 20 7b 0a 3c 70 3e 54 68 65 20 41 54 54 41 43  s {.<p>The ATTAC
0d70: 48 20 44 41 54 41 42 41 53 45 20 73 74 61 74 65  H DATABASE state
0d80: 6d 65 6e 74 20 6c 65 74 73 20 79 6f 75 20 61 64  ment lets you ad
0d90: 64 20 61 20 70 72 65 65 78 69 73 74 69 6e 67 20  d a preexisting 
0da0: 0a 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 74  .database file t
0db0: 6f 20 74 68 65 20 63 75 72 72 65 6e 74 20 64 61  o the current da
0dc0: 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
0dd0: 6e 2e 3c 2f 70 3e 0a 0a 3c 70 3e 59 6f 75 20 63  n.</p>..<p>You c
0de0: 61 6e 20 72 65 61 64 20 61 6e 64 20 77 72 69 74  an read and writ
0df0: 65 20 74 6f 20 74 68 65 20 61 74 74 61 63 68 65  e to the attache
0e00: 64 20 64 61 74 61 62 61 73 65 2c 20 62 75 74 20  d database, but 
0e10: 79 6f 75 20 63 61 6e 6e 6f 74 20 0a 43 52 45 41  you cannot .CREA
0e20: 54 45 20 54 41 42 4c 45 20 6f 72 20 44 52 4f 50  TE TABLE or DROP
0e30: 20 54 41 42 4c 45 20 69 6e 20 74 68 65 20 61 74   TABLE in the at
0e40: 74 61 63 68 65 64 20 64 61 74 61 62 61 73 65 2e  tached database.
0e50: 20 59 6f 75 20 63 61 6e 20 6f 6e 6c 79 20 0a 43   You can only .C
0e60: 52 45 41 54 45 20 61 6e 64 20 44 52 4f 50 20 69  REATE and DROP i
0e70: 6e 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 64  n the original d
0e80: 61 74 61 62 61 73 65 2e 3c 2f 70 3e 0a 0a 3c 70  atabase.</p>..<p
0e90: 3e 57 69 74 68 20 61 6e 20 61 74 74 61 63 68 65  >With an attache
0ea0: 64 20 64 61 74 61 62 61 73 65 2c 20 74 72 61 6e  d database, tran
0eb0: 73 61 63 74 69 6f 6e 73 20 61 72 65 20 6e 6f 74  sactions are not
0ec0: 20 61 74 6f 6d 69 63 2e 20 0a 54 72 61 6e 73 61   atomic. .Transa
0ed0: 63 74 69 6f 6e 73 20 63 6f 6e 74 69 6e 75 65 20  ctions continue 
0ee0: 74 6f 20 62 65 20 61 74 6f 6d 69 63 20 77 69 74  to be atomic wit
0ef0: 68 69 6e 20 65 61 63 68 20 69 6e 64 69 76 69 64  hin each individ
0f00: 75 61 6c 0a 64 61 74 61 62 61 73 65 20 66 69 6c  ual.database fil
0f10: 65 2e 20 42 75 74 20 69 66 20 79 6f 75 72 20 6d  e. But if your m
0f20: 61 63 68 69 6e 65 20 63 72 61 73 68 65 73 20 69  achine crashes i
0f30: 6e 20 74 68 65 20 6d 69 64 64 6c 65 0a 6f 66 20  n the middle.of 
0f40: 61 20 43 4f 4d 4d 49 54 20 77 68 65 72 65 20 79  a COMMIT where y
0f50: 6f 75 20 68 61 76 65 20 75 70 64 61 74 65 64 20  ou have updated 
0f60: 74 77 6f 20 6f 72 20 6d 6f 72 65 20 64 61 74 61  two or more data
0f70: 62 61 73 65 0a 66 69 6c 65 73 2c 20 73 6f 6d 65  base.files, some
0f80: 20 6f 66 20 74 68 6f 73 65 20 66 69 6c 65 73 20   of those files 
0f90: 6d 69 67 68 74 20 67 65 74 20 74 68 65 20 63 68  might get the ch
0fa0: 61 6e 67 65 73 20 77 68 65 72 65 20 6f 74 68 65  anges where othe
0fb0: 72 73 0a 6d 69 67 68 74 20 6e 6f 74 2e 3c 2f 70  rs.might not.</p
0fc0: 3e 0a 0a 3c 70 3e 54 68 65 72 65 20 69 73 20 61  >..<p>There is a
0fd0: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6c 69   compile-time li
0fe0: 6d 69 74 20 6f 66 20 31 30 20 61 74 74 61 63 68  mit of 10 attach
0ff0: 65 64 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  ed database file
1000: 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 45 78 65 63 75  s.</p>..<p>Execu
1010: 74 69 6e 67 20 61 20 42 45 47 49 4e 20 54 52 41  ting a BEGIN TRA
1020: 4e 53 41 43 54 49 4f 4e 20 73 74 61 74 65 6d 65  NSACTION stateme
1030: 6e 74 20 6c 6f 63 6b 73 20 61 6c 6c 20 64 61 74  nt locks all dat
1040: 61 62 61 73 65 0a 66 69 6c 65 73 2c 20 73 6f 20  abase.files, so 
1050: 74 68 69 73 20 66 65 61 74 75 72 65 20 63 61 6e  this feature can
1060: 6e 6f 74 20 28 63 75 72 72 65 6e 74 6c 79 29 20  not (currently) 
1070: 62 65 20 75 73 65 64 20 74 6f 20 69 6e 63 72 65  be used to incre
1080: 61 73 65 20 0a 63 6f 6e 63 75 72 72 61 6e 63 79  ase .concurrancy
1090: 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f  .</p>.}...Sectio
10a0: 6e 20 7b 42 45 47 49 4e 20 54 52 41 4e 53 41 43  n {BEGIN TRANSAC
10b0: 54 49 4f 4e 7d 20 74 72 61 6e 73 61 63 74 69 6f  TION} transactio
10c0: 6e 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73  n..Syntax {sql-s
10d0: 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 42 45 47 49  tatement} {.BEGI
10e0: 4e 20 5b 54 52 41 4e 53 41 43 54 49 4f 4e 20 5b  N [TRANSACTION [
10f0: 3c 6e 61 6d 65 3e 5d 5d 20 5b 4f 4e 20 43 4f 4e  <name>]] [ON CON
1100: 46 4c 49 43 54 20 3c 63 6f 6e 66 6c 69 63 74 2d  FLICT <conflict-
1110: 61 6c 67 6f 72 69 74 68 6d 3e 5d 0a 7d 0a 53 79  algorithm>].}.Sy
1120: 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d  ntax {sql-statem
1130: 65 6e 74 7d 20 7b 0a 45 4e 44 20 5b 54 52 41 4e  ent} {.END [TRAN
1140: 53 41 43 54 49 4f 4e 20 5b 3c 6e 61 6d 65 3e 5d  SACTION [<name>]
1150: 5d 0a 7d 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d  ].}.Syntax {sql-
1160: 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 43 4f 4d  statement} {.COM
1170: 4d 49 54 20 5b 54 52 41 4e 53 41 43 54 49 4f 4e  MIT [TRANSACTION
1180: 20 5b 3c 6e 61 6d 65 3e 5d 5d 0a 7d 0a 53 79 6e   [<name>]].}.Syn
1190: 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65  tax {sql-stateme
11a0: 6e 74 7d 20 7b 0a 52 4f 4c 4c 42 41 43 4b 20 5b  nt} {.ROLLBACK [
11b0: 54 52 41 4e 53 41 43 54 49 4f 4e 20 5b 3c 6e 61  TRANSACTION [<na
11c0: 6d 65 3e 5d 5d 0a 7d 0a 0a 70 75 74 73 20 7b 0a  me>]].}..puts {.
11d0: 3c 70 3e 42 65 67 69 6e 6e 69 6e 67 20 69 6e 20  <p>Beginning in 
11e0: 76 65 72 73 69 6f 6e 20 32 2e 30 2c 20 53 51 4c  version 2.0, SQL
11f0: 69 74 65 20 73 75 70 70 6f 72 74 73 20 74 72 61  ite supports tra
1200: 6e 73 61 63 74 69 6f 6e 73 20 77 69 74 68 0a 72  nsactions with.r
1210: 6f 6c 6c 62 61 63 6b 20 61 6e 64 20 61 74 6f 6d  ollback and atom
1220: 69 63 20 63 6f 6d 6d 69 74 2e 3c 2f 70 3e 0a 0a  ic commit.</p>..
1230: 3c 70 3e 0a 4e 6f 20 63 68 61 6e 67 65 73 20 63  <p>.No changes c
1240: 61 6e 20 62 65 20 6d 61 64 65 20 74 6f 20 74 68  an be made to th
1250: 65 20 64 61 74 61 62 61 73 65 20 65 78 63 65 70  e database excep
1260: 74 20 77 69 74 68 69 6e 20 61 20 74 72 61 6e 73  t within a trans
1270: 61 63 74 69 6f 6e 2e 0a 41 6e 79 20 63 6f 6d 6d  action..Any comm
1280: 61 6e 64 20 74 68 61 74 20 63 68 61 6e 67 65 73  and that changes
1290: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 28 62   the database (b
12a0: 61 73 69 63 61 6c 6c 79 2c 20 61 6e 79 20 53 51  asically, any SQ
12b0: 4c 20 63 6f 6d 6d 61 6e 64 0a 6f 74 68 65 72 20  L command.other 
12c0: 74 68 61 6e 20 53 45 4c 45 43 54 29 20 77 69 6c  than SELECT) wil
12d0: 6c 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20  l automatically 
12e0: 73 74 61 72 74 73 20 61 20 74 72 61 6e 73 61 63  starts a transac
12f0: 74 69 6f 6e 20 69 66 0a 6f 6e 65 20 69 73 20 6e  tion if.one is n
1300: 6f 74 20 61 6c 72 65 61 64 79 20 69 6e 20 65 66  ot already in ef
1310: 66 65 63 74 2e 20 20 41 75 74 6f 6d 61 74 69 63  fect.  Automatic
1320: 61 6c 6c 79 20 73 74 61 72 74 65 64 20 74 72 61  ally started tra
1330: 6e 73 61 63 74 69 6f 6e 73 0a 61 72 65 20 63 6f  nsactions.are co
1340: 6d 6d 69 74 74 65 64 20 61 74 20 74 68 65 20 63  mmitted at the c
1350: 6f 6e 63 6c 75 73 69 6f 6e 20 6f 66 20 74 68 65  onclusion of the
1360: 20 63 6f 6d 6d 61 6e 64 2e 0a 3c 2f 70 3e 0a 0a   command..</p>..
1370: 3c 70 3e 0a 54 72 61 6e 73 61 63 74 69 6f 6e 73  <p>.Transactions
1380: 20 63 61 6e 20 62 65 20 73 74 61 72 74 65 64 20   can be started 
1390: 6d 61 6e 75 61 6c 6c 79 20 75 73 69 6e 67 20 74  manually using t
13a0: 68 65 20 42 45 47 49 4e 0a 63 6f 6d 6d 61 6e 64  he BEGIN.command
13b0: 2e 20 53 75 63 68 20 74 72 61 6e 73 61 63 74 69  . Such transacti
13c0: 6f 6e 73 20 75 73 75 61 6c 6c 79 20 70 65 72 73  ons usually pers
13d0: 69 73 74 20 75 6e 74 69 6c 20 74 68 65 20 6e 65  ist until the ne
13e0: 78 74 0a 43 4f 4d 4d 49 54 20 6f 72 20 52 4f 4c  xt.COMMIT or ROL
13f0: 4c 42 41 43 4b 20 63 6f 6d 6d 61 6e 64 2e 20 42  LBACK command. B
1400: 75 74 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e  ut a transaction
1410: 20 77 69 6c 6c 20 61 6c 73 6f 20 0a 52 4f 4c 4c   will also .ROLL
1420: 42 41 43 4b 20 69 66 20 74 68 65 20 64 61 74 61  BACK if the data
1430: 62 61 73 65 20 69 73 20 63 6c 6f 73 65 64 20 6f  base is closed o
1440: 72 20 69 66 20 61 6e 20 65 72 72 6f 72 20 6f 63  r if an error oc
1450: 63 75 72 73 0a 61 6e 64 20 74 68 65 20 52 4f 4c  curs.and the ROL
1460: 4c 42 41 43 4b 20 63 6f 6e 66 6c 69 63 74 20 72  LBACK conflict r
1470: 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69  esolution algori
1480: 74 68 6d 20 69 73 20 73 70 65 63 69 66 69 65 64  thm is specified
1490: 2e 0a 53 65 65 20 74 68 65 20 64 6f 63 75 6d 65  ..See the docume
14a0: 6e 74 69 6f 6e 20 6f 6e 20 74 68 65 20 3c 61 20  ntion on the <a 
14b0: 68 72 65 66 3d 22 23 63 6f 6e 66 6c 69 63 74 22  href="#conflict"
14c0: 3e 4f 4e 20 43 4f 4e 46 4c 49 43 54 3c 2f 61 3e  >ON CONFLICT</a>
14d0: 0a 63 6c 61 75 73 65 20 66 6f 72 20 61 64 64 69  .clause for addi
14e0: 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69  tional informati
14f0: 6f 6e 20 61 62 6f 75 74 20 74 68 65 20 52 4f 4c  on about the ROL
1500: 4c 42 41 43 4b 0a 63 6f 6e 66 6c 69 63 74 20 72  LBACK.conflict r
1510: 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69  esolution algori
1520: 74 68 6d 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 54  thm..</p>..<p>.T
1530: 68 65 20 6f 70 74 69 6f 6e 61 6c 20 4f 4e 20 43  he optional ON C
1540: 4f 4e 46 4c 49 43 54 20 63 6c 61 75 73 65 20 61  ONFLICT clause a
1550: 74 20 74 68 65 20 65 6e 64 20 6f 66 20 61 20 42  t the end of a B
1560: 45 47 49 4e 20 73 74 61 74 65 6d 65 6e 74 0a 63  EGIN statement.c
1570: 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 63 68  an be used to ch
1580: 61 6e 67 65 64 20 74 68 65 20 64 65 66 61 75 6c  anged the defaul
1590: 74 20 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c  t conflict resol
15a0: 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 2e  ution algorithm.
15b0: 0a 54 68 65 20 6e 6f 72 6d 61 6c 20 64 65 66 61  .The normal defa
15c0: 75 6c 74 20 69 73 20 41 42 4f 52 54 2e 20 20 49  ult is ABORT.  I
15d0: 66 20 61 6e 20 61 6c 74 65 72 6e 61 74 69 76 65  f an alternative
15e0: 20 69 73 20 73 70 65 63 69 66 69 65 64 20 62 79   is specified by
15f0: 0a 74 68 65 20 4f 4e 20 43 4f 4e 46 4c 49 43 54  .the ON CONFLICT
1600: 20 63 6c 61 75 73 65 20 6f 66 20 61 20 42 45 47   clause of a BEG
1610: 49 4e 2c 20 74 68 65 6e 20 74 68 61 74 20 61 6c  IN, then that al
1620: 74 65 72 6e 61 74 69 76 65 20 69 73 20 75 73 65  ternative is use
1630: 64 0a 61 73 20 74 68 65 20 64 65 66 61 75 6c 74  d.as the default
1640: 20 66 6f 72 20 61 6c 6c 20 63 6f 6d 6d 61 6e 64   for all command
1650: 73 20 77 69 74 68 69 6e 20 74 68 65 20 74 72 61  s within the tra
1660: 6e 73 61 63 74 69 6f 6e 2e 20 20 54 68 65 20 64  nsaction.  The d
1670: 65 66 61 75 6c 74 0a 61 6c 67 6f 72 69 74 68 6d  efault.algorithm
1680: 20 69 73 20 6f 76 65 72 72 69 64 64 65 6e 20 62   is overridden b
1690: 79 20 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 63 6c  y ON CONFLICT cl
16a0: 61 75 73 65 73 20 6f 6e 20 69 6e 64 69 76 69 64  auses on individ
16b0: 75 61 6c 0a 63 6f 6e 73 74 72 61 69 6e 74 73 20  ual.constraints 
16c0: 77 69 74 68 69 6e 20 74 68 65 20 43 52 45 41 54  within the CREAT
16d0: 45 20 54 41 42 4c 45 20 6f 72 20 43 52 45 41 54  E TABLE or CREAT
16e0: 45 20 49 4e 44 45 58 20 73 74 61 74 65 6d 65 6e  E INDEX statemen
16f0: 74 73 0a 61 6e 64 20 62 79 20 74 68 65 20 4f 52  ts.and by the OR
1700: 20 63 6c 61 75 73 65 73 20 6f 6e 20 43 4f 50 59   clauses on COPY
1710: 2c 20 49 4e 53 45 52 54 2c 20 61 6e 64 20 55 50  , INSERT, and UP
1720: 44 41 54 45 20 63 6f 6d 6d 61 6e 64 73 2e 0a 3c  DATE commands..<
1730: 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20  /p>.}...Section 
1740: 63 6f 6d 6d 65 6e 74 20 63 6f 6d 6d 65 6e 74 0a  comment comment.
1750: 0a 53 79 6e 74 61 78 20 7b 63 6f 6d 6d 65 6e 74  .Syntax {comment
1760: 7d 20 7b 3c 53 51 4c 2d 63 6f 6d 6d 65 6e 74 3e  } {<SQL-comment>
1770: 20 7c 20 3c 43 2d 63 6f 6d 6d 65 6e 74 3e 0a 7d   | <C-comment>.}
1780: 20 7b 53 51 4c 2d 63 6f 6d 6d 65 6e 74 7d 20 7b   {SQL-comment} {
1790: 2d 2d 20 3c 73 69 6e 67 6c 65 2d 6c 69 6e 65 3e  -- <single-line>
17a0: 0a 7d 20 7b 43 2d 63 6f 6d 6d 65 6e 74 7d 20 7b  .} {C-comment} {
17b0: 2f 53 54 41 52 20 3c 6d 75 6c 74 69 70 6c 65 2d  /STAR <multiple-
17c0: 6c 69 6e 65 73 3e 20 5b 53 54 41 52 2f 5d 0a 7d  lines> [STAR/].}
17d0: 0a 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 20 43 6f  ...puts {.<p> Co
17e0: 6d 6d 65 6e 74 73 20 61 72 65 6e 27 74 20 53 51  mments aren't SQ
17f0: 4c 20 63 6f 6d 6d 61 6e 64 73 2c 20 62 75 74 20  L commands, but 
1800: 63 61 6e 20 6f 63 63 75 72 20 69 6e 20 53 51 4c  can occur in SQL
1810: 20 71 75 65 72 69 65 73 2e 20 54 68 65 79 20 61   queries. They a
1820: 72 65 20 0a 74 72 65 61 74 65 64 20 61 73 20 77  re .treated as w
1830: 68 69 74 65 73 70 61 63 65 20 62 79 20 74 68 65  hitespace by the
1840: 20 70 61 72 73 65 72 2e 20 54 68 65 79 20 63 61   parser. They ca
1850: 6e 20 62 65 67 69 6e 20 61 6e 79 77 68 65 72 65  n begin anywhere
1860: 20 77 68 69 74 65 73 70 61 63 65 20 0a 63 61 6e   whitespace .can
1870: 20 62 65 20 66 6f 75 6e 64 2c 20 69 6e 63 6c 75   be found, inclu
1880: 64 69 6e 67 20 69 6e 73 69 64 65 20 65 78 70 72  ding inside expr
1890: 65 73 73 69 6f 6e 73 20 74 68 61 74 20 73 70 61  essions that spa
18a0: 6e 20 6d 75 6c 74 69 70 6c 65 20 6c 69 6e 65 73  n multiple lines
18b0: 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 20 53 51 4c 20  ..</p>..<p> SQL 
18c0: 63 6f 6d 6d 65 6e 74 73 20 6f 6e 6c 79 20 65 78  comments only ex
18d0: 74 65 6e 64 20 74 6f 20 74 68 65 20 65 6e 64 20  tend to the end 
18e0: 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 6c  of the current l
18f0: 69 6e 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 20 43 20  ine.</p>..<p> C 
1900: 63 6f 6d 6d 65 6e 74 73 20 63 61 6e 20 73 70 61  comments can spa
1910: 6e 20 61 6e 79 20 6e 75 6d 62 65 72 20 6f 66 20  n any number of 
1920: 6c 69 6e 65 73 2e 20 49 66 20 74 68 65 72 65 20  lines. If there 
1930: 69 73 20 6e 6f 20 74 65 72 6d 69 6e 61 74 69 6e  is no terminatin
1940: 67 0a 64 65 6c 69 6d 69 74 65 72 2c 20 74 68 65  g.delimiter, the
1950: 79 20 65 78 74 65 6e 64 20 74 6f 20 74 68 65 20  y extend to the 
1960: 65 6e 64 20 6f 66 20 74 68 65 20 69 6e 70 75 74  end of the input
1970: 2e 20 54 68 69 73 20 69 73 20 6e 6f 74 20 74 72  . This is not tr
1980: 65 61 74 65 64 20 61 73 20 0a 61 6e 20 65 72 72  eated as .an err
1990: 6f 72 2e 20 41 20 6e 65 77 20 53 51 4c 20 73 74  or. A new SQL st
19a0: 61 74 65 6d 65 6e 74 20 63 61 6e 20 62 65 67 69  atement can begi
19b0: 6e 20 6f 6e 20 61 20 6c 69 6e 65 20 61 66 74 65  n on a line afte
19c0: 72 20 61 20 6d 75 6c 74 69 6c 69 6e 65 20 0a 63  r a multiline .c
19d0: 6f 6d 6d 65 6e 74 20 65 6e 64 73 2e 20 43 20 63  omment ends. C c
19e0: 6f 6d 6d 65 6e 74 73 20 63 61 6e 20 62 65 20 65  omments can be e
19f0: 6d 62 65 64 64 65 64 20 61 6e 79 77 68 65 72 65  mbedded anywhere
1a00: 20 77 68 69 74 65 73 70 61 63 65 20 63 61 6e 20   whitespace can 
1a10: 6f 63 63 75 72 2c 20 0a 69 6e 63 6c 75 64 69 6e  occur, .includin
1a20: 67 20 69 6e 73 69 64 65 20 65 78 70 72 65 73 73  g inside express
1a30: 69 6f 6e 73 2c 20 61 6e 64 20 69 6e 20 74 68 65  ions, and in the
1a40: 20 6d 69 64 64 6c 65 20 6f 66 20 6f 74 68 65 72   middle of other
1a50: 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 2e   SQL statements.
1a60: 0a 43 20 63 6f 6d 6d 65 6e 74 73 20 64 6f 20 6e  .C comments do n
1a70: 6f 74 20 6e 65 73 74 2e 20 53 51 4c 20 63 6f 6d  ot nest. SQL com
1a80: 6d 65 6e 74 73 20 69 6e 73 69 64 65 20 61 20 43  ments inside a C
1a90: 20 63 6f 6d 6d 65 6e 74 20 77 69 6c 6c 20 62 65   comment will be
1aa0: 20 69 67 6e 6f 72 65 64 2e 0a 3c 2f 70 3e 0a 7d   ignored..</p>.}
1ab0: 0a 0a 0a 53 65 63 74 69 6f 6e 20 43 4f 50 59 20  ...Section COPY 
1ac0: 63 6f 70 79 0a 0a 53 79 6e 74 61 78 20 7b 73 71  copy..Syntax {sq
1ad0: 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 43  l-statement} {.C
1ae0: 4f 50 59 20 5b 20 4f 52 20 3c 63 6f 6e 66 6c 69  OPY [ OR <confli
1af0: 63 74 2d 61 6c 67 6f 72 69 74 68 6d 3e 20 5d 20  ct-algorithm> ] 
1b00: 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 20 46 52 4f  <table-name> FRO
1b10: 4d 20 3c 66 69 6c 65 6e 61 6d 65 3e 0a 5b 20 55  M <filename>.[ U
1b20: 53 49 4e 47 20 44 45 4c 49 4d 49 54 45 52 53 20  SING DELIMITERS 
1b30: 3c 64 65 6c 69 6d 3e 20 5d 0a 7d 0a 0a 0a 70 75  <delim> ].}...pu
1b40: 74 73 20 7b 0a 3c 70 3e 54 68 65 20 43 4f 50 59  ts {.<p>The COPY
1b50: 20 63 6f 6d 6d 61 6e 64 20 69 73 20 61 6e 20 65   command is an e
1b60: 78 74 65 6e 73 69 6f 6e 20 75 73 65 64 20 74 6f  xtension used to
1b70: 20 6c 6f 61 64 20 6c 61 72 67 65 20 61 6d 6f 75   load large amou
1b80: 6e 74 73 20 6f 66 0a 64 61 74 61 20 69 6e 74 6f  nts of.data into
1b90: 20 61 20 74 61 62 6c 65 2e 20 20 49 74 20 69 73   a table.  It is
1ba0: 20 6d 6f 64 65 6c 65 64 20 61 66 74 65 72 20 61   modeled after a
1bb0: 20 73 69 6d 69 6c 61 72 20 63 6f 6d 6d 61 6e 64   similar command
1bc0: 20 66 6f 75 6e 64 0a 69 6e 20 50 6f 73 74 67 72   found.in Postgr
1bd0: 65 53 51 4c 2e 20 20 49 6e 20 66 61 63 74 2c 20  eSQL.  In fact, 
1be0: 74 68 65 20 53 51 4c 69 74 65 20 43 4f 50 59 20  the SQLite COPY 
1bf0: 63 6f 6d 6d 61 6e 64 20 69 73 20 73 70 65 63 69  command is speci
1c00: 66 69 63 61 6c 6c 79 0a 64 65 73 69 67 6e 65 64  fically.designed
1c10: 20 74 6f 20 62 65 20 61 62 6c 65 20 74 6f 20 72   to be able to r
1c20: 65 61 64 20 74 68 65 20 6f 75 74 70 75 74 20 6f  ead the output o
1c30: 66 20 74 68 65 20 50 6f 73 74 67 72 65 53 51 4c  f the PostgreSQL
1c40: 20 64 75 6d 70 0a 75 74 69 6c 69 74 79 20 3c 62   dump.utility <b
1c50: 3e 70 67 5f 64 75 6d 70 3c 2f 62 3e 20 73 6f 20  >pg_dump</b> so 
1c60: 74 68 61 74 20 64 61 74 61 20 63 61 6e 20 62 65  that data can be
1c70: 20 65 61 73 69 6c 79 20 74 72 61 6e 73 66 65 72   easily transfer
1c80: 72 65 64 20 66 72 6f 6d 0a 50 6f 73 74 67 72 65  red from.Postgre
1c90: 53 51 4c 20 69 6e 74 6f 20 53 51 4c 69 74 65 2e  SQL into SQLite.
1ca0: 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 74 61 62  </p>..<p>The tab
1cb0: 6c 65 2d 6e 61 6d 65 20 69 73 20 74 68 65 20 6e  le-name is the n
1cc0: 61 6d 65 20 6f 66 20 61 6e 20 65 78 69 73 74 69  ame of an existi
1cd0: 6e 67 20 74 61 62 6c 65 20 77 68 69 63 68 20 69  ng table which i
1ce0: 73 20 74 6f 0a 62 65 20 66 69 6c 6c 65 64 20 77  s to.be filled w
1cf0: 69 74 68 20 64 61 74 61 2e 20 20 54 68 65 20 66  ith data.  The f
1d00: 69 6c 65 6e 61 6d 65 20 69 73 20 61 20 73 74 72  ilename is a str
1d10: 69 6e 67 20 6f 72 20 69 64 65 6e 74 69 66 69 65  ing or identifie
1d20: 72 20 74 68 61 74 0a 6e 61 6d 65 73 20 61 20 66  r that.names a f
1d30: 69 6c 65 20 66 72 6f 6d 20 77 68 69 63 68 20 64  ile from which d
1d40: 61 74 61 20 77 69 6c 6c 20 62 65 20 72 65 61 64  ata will be read
1d50: 2e 20 20 54 68 65 20 66 69 6c 65 6e 61 6d 65 20  .  The filename 
1d60: 63 61 6e 20 62 65 0a 74 68 65 20 3c 62 3e 53 54  can be.the <b>ST
1d70: 44 49 4e 3c 2f 62 3e 20 74 6f 20 72 65 61 64 20  DIN</b> to read 
1d80: 64 61 74 61 20 66 72 6f 6d 20 73 74 61 6e 64 61  data from standa
1d90: 72 64 20 69 6e 70 75 74 2e 3c 2f 70 3e 0a 0a 3c  rd input.</p>..<
1da0: 70 3e 45 61 63 68 20 6c 69 6e 65 20 6f 66 20 74  p>Each line of t
1db0: 68 65 20 69 6e 70 75 74 20 66 69 6c 65 20 69 73  he input file is
1dc0: 20 63 6f 6e 76 65 72 74 65 64 20 69 6e 74 6f 20   converted into 
1dd0: 61 20 73 69 6e 67 6c 65 20 72 65 63 6f 72 64 0a  a single record.
1de0: 69 6e 20 74 68 65 20 74 61 62 6c 65 2e 20 20 43  in the table.  C
1df0: 6f 6c 75 6d 6e 73 20 61 72 65 20 73 65 70 61 72  olumns are separ
1e00: 61 74 65 64 20 62 79 20 74 61 62 73 2e 20 20 49  ated by tabs.  I
1e10: 66 20 61 20 74 61 62 20 6f 63 63 75 72 73 20 61  f a tab occurs a
1e20: 73 0a 64 61 74 61 20 77 69 74 68 69 6e 20 61 20  s.data within a 
1e30: 63 6f 6c 75 6d 6e 2c 20 74 68 65 6e 20 74 68 61  column, then tha
1e40: 74 20 74 61 62 20 69 73 20 70 72 65 63 65 64 65  t tab is precede
1e50: 64 20 62 79 20 61 20 62 61 73 6b 73 6c 61 73 68  d by a baskslash
1e60: 20 22 5c 22 0a 63 68 61 72 61 63 74 65 72 2e 20   "\".character. 
1e70: 20 41 20 62 61 73 6b 73 6c 61 73 68 20 69 6e 20   A baskslash in 
1e80: 74 68 65 20 64 61 74 61 20 61 70 70 65 61 72 73  the data appears
1e90: 20 61 73 20 74 77 6f 20 62 61 63 6b 73 6c 61 73   as two backslas
1ea0: 68 65 73 20 69 6e 0a 61 20 72 6f 77 2e 20 20 54  hes in.a row.  T
1eb0: 68 65 20 6f 70 74 69 6f 6e 61 6c 20 55 53 49 4e  he optional USIN
1ec0: 47 20 44 45 4c 49 4d 49 54 45 52 53 20 63 6c 61  G DELIMITERS cla
1ed0: 75 73 65 20 63 61 6e 20 73 70 65 63 69 66 79 20  use can specify 
1ee0: 61 20 64 65 6c 69 6d 69 74 65 72 0a 6f 74 68 65  a delimiter.othe
1ef0: 72 20 74 68 61 6e 20 74 61 62 2e 3c 2f 70 3e 0a  r than tab.</p>.
1f00: 0a 3c 70 3e 49 66 20 61 20 63 6f 6c 75 6d 6e 20  .<p>If a column 
1f10: 63 6f 6e 73 69 73 74 73 20 6f 66 20 74 68 65 20  consists of the 
1f20: 63 68 61 72 61 63 74 65 72 20 22 5c 4e 22 2c 20  character "\N", 
1f30: 74 68 61 74 20 63 6f 6c 75 6d 6e 20 69 73 20 66  that column is f
1f40: 69 6c 6c 65 64 0a 77 69 74 68 20 74 68 65 20 76  illed.with the v
1f50: 61 6c 75 65 20 4e 55 4c 4c 2e 3c 2f 70 3e 0a 0a  alue NULL.</p>..
1f60: 3c 70 3e 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20  <p>The optional 
1f70: 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65 20  conflict-clause 
1f80: 61 6c 6c 6f 77 73 20 74 68 65 20 73 70 65 63 69  allows the speci
1f90: 66 69 63 61 74 69 6f 6e 20 6f 66 20 61 6e 20 61  fication of an a
1fa0: 6c 74 65 72 6e 61 74 69 76 65 0a 63 6f 6e 73 74  lternative.const
1fb0: 72 61 69 6e 74 20 63 6f 6e 66 6c 69 63 74 20 72  raint conflict r
1fc0: 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69  esolution algori
1fd0: 74 68 6d 20 74 6f 20 75 73 65 20 66 6f 72 20 74  thm to use for t
1fe0: 68 69 73 20 6f 6e 65 20 63 6f 6d 6d 61 6e 64 2e  his one command.
1ff0: 0a 53 65 65 20 74 68 65 20 73 65 63 74 69 6f 6e  .See the section
2000: 20 74 69 74 6c 65 64 0a 3c 61 20 68 72 65 66 3d   titled.<a href=
2010: 22 23 63 6f 6e 66 6c 69 63 74 22 3e 4f 4e 20 43  "#conflict">ON C
2020: 4f 4e 46 4c 49 43 54 3c 2f 61 3e 20 66 6f 72 20  ONFLICT</a> for 
2030: 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72  additional infor
2040: 6d 61 74 69 6f 6e 2e 3c 2f 70 3e 0a 0a 3c 70 3e  mation.</p>..<p>
2050: 57 68 65 6e 20 74 68 65 20 69 6e 70 75 74 20 64  When the input d
2060: 61 74 61 20 73 6f 75 72 63 65 20 69 73 20 53 54  ata source is ST
2070: 44 49 4e 2c 20 74 68 65 20 69 6e 70 75 74 20 63  DIN, the input c
2080: 61 6e 20 62 65 20 74 65 72 6d 69 6e 61 74 65 64  an be terminated
2090: 0a 62 79 20 61 20 6c 69 6e 65 20 74 68 61 74 20  .by a line that 
20a0: 63 6f 6e 74 61 69 6e 73 20 6f 6e 6c 79 20 61 20  contains only a 
20b0: 62 61 73 6b 73 6c 61 73 68 20 61 6e 64 20 61 20  baskslash and a 
20c0: 64 6f 74 3a 7d 0a 70 75 74 73 20 22 5c 22 5b 4f  dot:}.puts "\"[O
20d0: 70 65 72 61 74 6f 72 20 5c 5c 2e 5d 5c 22 2e 3c  perator \\.]\".<
20e0: 2f 70 3e 22 0a 0a 0a 53 65 63 74 69 6f 6e 20 7b  /p>"...Section {
20f0: 43 52 45 41 54 45 20 49 4e 44 45 58 7d 20 63 72  CREATE INDEX} cr
2100: 65 61 74 65 69 6e 64 65 78 0a 0a 53 79 6e 74 61  eateindex..Synta
2110: 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74  x {sql-statement
2120: 7d 20 7b 0a 43 52 45 41 54 45 20 5b 54 45 4d 50  } {.CREATE [TEMP
2130: 20 7c 20 54 45 4d 50 4f 52 41 52 59 5d 20 5b 55   | TEMPORARY] [U
2140: 4e 49 51 55 45 5d 20 49 4e 44 45 58 20 3c 69 6e  NIQUE] INDEX <in
2150: 64 65 78 2d 6e 61 6d 65 3e 20 0a 4f 4e 20 3c 74  dex-name> .ON <t
2160: 61 62 6c 65 2d 6e 61 6d 65 3e 20 28 20 3c 63 6f  able-name> ( <co
2170: 6c 75 6d 6e 2d 6e 61 6d 65 3e 20 5b 2c 20 3c 63  lumn-name> [, <c
2180: 6f 6c 75 6d 6e 2d 6e 61 6d 65 3e 5d 2a 20 29 0a  olumn-name>]* ).
2190: 5b 20 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 3c 63  [ ON CONFLICT <c
21a0: 6f 6e 66 6c 69 63 74 2d 61 6c 67 6f 72 69 74 68  onflict-algorith
21b0: 6d 3e 20 5d 0a 7d 20 7b 63 6f 6c 75 6d 6e 2d 6e  m> ].} {column-n
21c0: 61 6d 65 7d 20 7b 0a 3c 6e 61 6d 65 3e 20 5b 20  ame} {.<name> [ 
21d0: 41 53 43 20 7c 20 44 45 53 43 20 5d 0a 7d 0a 0a  ASC | DESC ].}..
21e0: 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20 43  .puts {.<p>The C
21f0: 52 45 41 54 45 20 49 4e 44 45 58 20 63 6f 6d 6d  REATE INDEX comm
2200: 61 6e 64 20 63 6f 6e 73 69 73 74 73 20 6f 66 20  and consists of 
2210: 74 68 65 20 6b 65 79 77 6f 72 64 73 20 22 43 52  the keywords "CR
2220: 45 41 54 45 20 49 4e 44 45 58 22 20 66 6f 6c 6c  EATE INDEX" foll
2230: 6f 77 65 64 0a 62 79 20 74 68 65 20 6e 61 6d 65  owed.by the name
2240: 20 6f 66 20 74 68 65 20 6e 65 77 20 69 6e 64 65   of the new inde
2250: 78 2c 20 74 68 65 20 6b 65 79 77 6f 72 64 20 22  x, the keyword "
2260: 4f 4e 22 2c 20 74 68 65 20 6e 61 6d 65 20 6f 66  ON", the name of
2270: 20 61 20 70 72 65 76 69 6f 75 73 6c 79 0a 63 72   a previously.cr
2280: 65 61 74 65 64 20 74 61 62 6c 65 20 74 68 61 74  eated table that
2290: 20 69 73 20 74 6f 20 62 65 20 69 6e 64 65 78 65   is to be indexe
22a0: 64 2c 20 61 6e 64 20 61 20 70 61 72 65 6e 74 68  d, and a parenth
22b0: 65 73 69 7a 65 64 20 6c 69 73 74 20 6f 66 20 6e  esized list of n
22c0: 61 6d 65 73 20 6f 66 0a 63 6f 6c 75 6d 6e 73 20  ames of.columns 
22d0: 69 6e 20 74 68 65 20 74 61 62 6c 65 20 74 68 61  in the table tha
22e0: 74 20 61 72 65 20 75 73 65 64 20 66 6f 72 20 74  t are used for t
22f0: 68 65 20 69 6e 64 65 78 20 6b 65 79 2e 0a 45 61  he index key..Ea
2300: 63 68 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 20 63  ch column name c
2310: 61 6e 20 62 65 20 66 6f 6c 6c 6f 77 65 64 20 62  an be followed b
2320: 79 20 6f 6e 65 20 6f 66 20 74 68 65 20 22 41 53  y one of the "AS
2330: 43 22 20 6f 72 20 22 44 45 53 43 22 20 6b 65 79  C" or "DESC" key
2340: 77 6f 72 64 73 0a 74 6f 20 69 6e 64 69 63 61 74  words.to indicat
2350: 65 20 73 6f 72 74 20 6f 72 64 65 72 2c 20 62 75  e sort order, bu
2360: 74 20 74 68 65 20 73 6f 72 74 20 6f 72 64 65 72  t the sort order
2370: 20 69 73 20 69 67 6e 6f 72 65 64 20 69 6e 20 74   is ignored in t
2380: 68 65 20 63 75 72 72 65 6e 74 0a 69 6d 70 6c 65  he current.imple
2390: 6d 65 6e 74 61 74 69 6f 6e 2e 3c 2f 70 3e 0a 0a  mentation.</p>..
23a0: 3c 70 3e 54 68 65 72 65 20 61 72 65 20 6e 6f 20  <p>There are no 
23b0: 61 72 62 69 74 72 61 72 79 20 6c 69 6d 69 74 73  arbitrary limits
23c0: 20 6f 6e 20 74 68 65 20 6e 75 6d 62 65 72 20 6f   on the number o
23d0: 66 20 69 6e 64 69 63 65 73 20 74 68 61 74 20 63  f indices that c
23e0: 61 6e 20 62 65 0a 61 74 74 61 63 68 65 64 20 74  an be.attached t
23f0: 6f 20 61 20 73 69 6e 67 6c 65 20 74 61 62 6c 65  o a single table
2400: 2c 20 6e 6f 72 20 6f 6e 20 74 68 65 20 6e 75 6d  , nor on the num
2410: 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69  ber of columns i
2420: 6e 20 61 6e 20 69 6e 64 65 78 2e 3c 2f 70 3e 0a  n an index.</p>.
2430: 0a 3c 70 3e 49 66 20 74 68 65 20 55 4e 49 51 55  .<p>If the UNIQU
2440: 45 20 6b 65 79 77 6f 72 64 20 61 70 70 65 61 72  E keyword appear
2450: 73 20 62 65 74 77 65 65 6e 20 43 52 45 41 54 45  s between CREATE
2460: 20 61 6e 64 20 49 4e 44 45 58 20 74 68 65 6e 20   and INDEX then 
2470: 64 75 70 6c 69 63 61 74 65 0a 69 6e 64 65 78 20  duplicate.index 
2480: 65 6e 74 72 69 65 73 20 61 72 65 20 6e 6f 74 20  entries are not 
2490: 61 6c 6c 6f 77 65 64 2e 20 20 41 6e 79 20 61 74  allowed.  Any at
24a0: 74 65 6d 70 74 20 74 6f 20 69 6e 73 65 72 74 20  tempt to insert 
24b0: 61 20 64 75 70 6c 69 63 61 74 65 20 65 6e 74 72  a duplicate entr
24c0: 79 0a 77 69 6c 6c 20 72 65 73 75 6c 74 20 69 6e  y.will result in
24d0: 20 61 6e 20 65 72 72 6f 72 2e 3c 2f 70 3e 0a 0a   an error.</p>..
24e0: 3c 70 3e 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20  <p>The optional 
24f0: 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65 20  conflict-clause 
2500: 61 6c 6c 6f 77 73 20 74 68 65 20 73 70 65 63 69  allows the speci
2510: 66 69 63 61 74 69 6f 6e 20 6f 66 20 61 6e 20 61  fication of an a
2520: 6c 74 65 72 6e 61 74 69 76 65 0a 64 65 66 61 75  lternative.defau
2530: 6c 74 20 63 6f 6e 73 74 72 61 69 6e 74 20 63 6f  lt constraint co
2540: 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f  nflict resolutio
2550: 6e 20 61 6c 67 6f 72 69 74 68 6d 20 66 6f 72 20  n algorithm for 
2560: 74 68 69 73 20 69 6e 64 65 78 2e 0a 54 68 69 73  this index..This
2570: 20 6f 6e 6c 79 20 6d 61 6b 65 73 20 73 65 6e 73   only makes sens
2580: 65 20 69 66 20 74 68 65 20 55 4e 49 51 55 45 20  e if the UNIQUE 
2590: 6b 65 79 77 6f 72 64 20 69 73 20 75 73 65 64 20  keyword is used 
25a0: 73 69 6e 63 65 20 6f 74 68 65 72 77 69 73 65 0a  since otherwise.
25b0: 74 68 65 72 65 20 61 72 65 20 6e 6f 74 20 63 6f  there are not co
25c0: 6e 73 74 72 61 69 6e 74 73 20 6f 6e 20 74 68 65  nstraints on the
25d0: 20 69 6e 64 65 78 2e 20 20 54 68 65 20 64 65 66   index.  The def
25e0: 61 75 6c 74 20 61 6c 67 6f 72 69 74 68 6d 20 69  ault algorithm i
25f0: 73 0a 41 42 4f 52 54 2e 20 20 49 66 20 61 20 43  s.ABORT.  If a C
2600: 4f 50 59 2c 20 49 4e 53 45 52 54 2c 20 6f 72 20  OPY, INSERT, or 
2610: 55 50 44 41 54 45 20 73 74 61 74 65 6d 65 6e 74  UPDATE statement
2620: 20 73 70 65 63 69 66 69 65 73 20 61 20 70 61 72   specifies a par
2630: 74 69 63 75 6c 61 72 0a 63 6f 6e 66 6c 69 63 74  ticular.conflict
2640: 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f   resolution algo
2650: 72 69 74 68 6d 2c 20 74 68 61 74 20 61 6c 67 6f  rithm, that algo
2660: 72 69 74 68 6d 20 69 73 20 75 73 65 64 20 69 6e  rithm is used in
2670: 20 70 6c 61 63 65 20 6f 66 0a 74 68 65 20 64 65   place of.the de
2680: 66 61 75 6c 74 20 61 6c 67 6f 72 69 74 68 6d 20  fault algorithm 
2690: 73 70 65 63 69 66 69 65 64 20 68 65 72 65 2e 0a  specified here..
26a0: 53 65 65 20 74 68 65 20 73 65 63 74 69 6f 6e 20  See the section 
26b0: 74 69 74 6c 65 64 0a 3c 61 20 68 72 65 66 3d 22  titled.<a href="
26c0: 23 63 6f 6e 66 6c 69 63 74 22 3e 4f 4e 20 43 4f  #conflict">ON CO
26d0: 4e 46 4c 49 43 54 3c 2f 61 3e 20 66 6f 72 20 61  NFLICT</a> for a
26e0: 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d  dditional inform
26f0: 61 74 69 6f 6e 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54  ation.</p>..<p>T
2700: 68 65 20 65 78 61 63 74 20 74 65 78 74 0a 6f 66  he exact text.of
2710: 20 65 61 63 68 20 43 52 45 41 54 45 20 49 4e 44   each CREATE IND
2720: 45 58 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20  EX statement is 
2730: 73 74 6f 72 65 64 20 69 6e 20 74 68 65 20 3c 62  stored in the <b
2740: 3e 73 71 6c 69 74 65 5f 6d 61 73 74 65 72 3c 2f  >sqlite_master</
2750: 62 3e 0a 6f 72 20 3c 62 3e 73 71 6c 69 74 65 5f  b>.or <b>sqlite_
2760: 74 65 6d 70 5f 6d 61 73 74 65 72 3c 2f 62 3e 20  temp_master</b> 
2770: 74 61 62 6c 65 2c 20 64 65 70 65 6e 64 69 6e 67  table, depending
2780: 20 6f 6e 20 77 68 65 74 68 65 72 20 74 68 65 20   on whether the 
2790: 74 61 62 6c 65 0a 62 65 69 6e 67 20 69 6e 64 65  table.being inde
27a0: 78 65 64 20 69 73 20 74 65 6d 70 6f 72 61 72 79  xed is temporary
27b0: 2e 20 20 45 76 65 72 79 74 69 6d 65 20 74 68 65  .  Everytime the
27c0: 20 64 61 74 61 62 61 73 65 20 69 73 20 6f 70 65   database is ope
27d0: 6e 65 64 2c 0a 61 6c 6c 20 43 52 45 41 54 45 20  ned,.all CREATE 
27e0: 49 4e 44 45 58 20 73 74 61 74 65 6d 65 6e 74 73  INDEX statements
27f0: 0a 61 72 65 20 72 65 61 64 20 66 72 6f 6d 20 74  .are read from t
2800: 68 65 20 3c 62 3e 73 71 6c 69 74 65 5f 6d 61 73  he <b>sqlite_mas
2810: 74 65 72 3c 2f 62 3e 20 74 61 62 6c 65 20 61 6e  ter</b> table an
2820: 64 20 75 73 65 64 20 74 6f 20 72 65 67 65 6e 65  d used to regene
2830: 72 61 74 65 0a 53 51 4c 69 74 65 27 73 20 69 6e  rate.SQLite's in
2840: 74 65 72 6e 61 6c 20 72 65 70 72 65 73 65 6e 74  ternal represent
2850: 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 69 6e 64  ation of the ind
2860: 65 78 20 6c 61 79 6f 75 74 2e 3c 2f 70 3e 0a 7d  ex layout.</p>.}
2870: 0a 0a 0a 53 65 63 74 69 6f 6e 20 7b 43 52 45 41  ...Section {CREA
2880: 54 45 20 54 41 42 4c 45 7d 20 7b 63 72 65 61 74  TE TABLE} {creat
2890: 65 74 61 62 6c 65 7d 0a 0a 53 79 6e 74 61 78 20  etable}..Syntax 
28a0: 7b 73 71 6c 2d 63 6f 6d 6d 61 6e 64 7d 20 7b 0a  {sql-command} {.
28b0: 43 52 45 41 54 45 20 5b 54 45 4d 50 20 7c 20 54  CREATE [TEMP | T
28c0: 45 4d 50 4f 52 41 52 59 5d 20 54 41 42 4c 45 20  EMPORARY] TABLE 
28d0: 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 20 28 0a 20  <table-name> (. 
28e0: 20 3c 63 6f 6c 75 6d 6e 2d 64 65 66 3e 20 5b 2c   <column-def> [,
28f0: 20 3c 63 6f 6c 75 6d 6e 2d 64 65 66 3e 5d 2a 0a   <column-def>]*.
2900: 20 20 5b 2c 20 3c 63 6f 6e 73 74 72 61 69 6e 74    [, <constraint
2910: 3e 5d 2a 0a 29 0a 7d 20 7b 73 71 6c 2d 63 6f 6d  >]*.).} {sql-com
2920: 6d 61 6e 64 7d 20 7b 0a 43 52 45 41 54 45 20 5b  mand} {.CREATE [
2930: 54 45 4d 50 20 7c 20 54 45 4d 50 4f 52 41 52 59  TEMP | TEMPORARY
2940: 5d 20 54 41 42 4c 45 20 3c 74 61 62 6c 65 2d 6e  ] TABLE <table-n
2950: 61 6d 65 3e 20 41 53 20 3c 73 65 6c 65 63 74 2d  ame> AS <select-
2960: 73 74 61 74 65 6d 65 6e 74 3e 0a 7d 20 7b 63 6f  statement>.} {co
2970: 6c 75 6d 6e 2d 64 65 66 7d 20 7b 0a 3c 6e 61 6d  lumn-def} {.<nam
2980: 65 3e 20 5b 3c 74 79 70 65 3e 5d 20 5b 5b 43 4f  e> [<type>] [[CO
2990: 4e 53 54 52 41 49 4e 54 20 3c 6e 61 6d 65 3e 5d  NSTRAINT <name>]
29a0: 20 3c 63 6f 6c 75 6d 6e 2d 63 6f 6e 73 74 72 61   <column-constra
29b0: 69 6e 74 3e 5d 2a 0a 7d 20 7b 74 79 70 65 7d 20  int>]*.} {type} 
29c0: 7b 0a 3c 74 79 70 65 6e 61 6d 65 3e 20 7c 0a 3c  {.<typename> |.<
29d0: 74 79 70 65 6e 61 6d 65 3e 20 28 20 3c 6e 75 6d  typename> ( <num
29e0: 62 65 72 3e 20 29 20 7c 0a 3c 74 79 70 65 6e 61  ber> ) |.<typena
29f0: 6d 65 3e 20 28 20 3c 6e 75 6d 62 65 72 3e 20 2c  me> ( <number> ,
2a00: 20 3c 6e 75 6d 62 65 72 3e 20 29 0a 7d 20 7b 63   <number> ).} {c
2a10: 6f 6c 75 6d 6e 2d 63 6f 6e 73 74 72 61 69 6e 74  olumn-constraint
2a20: 7d 20 7b 0a 4e 4f 54 20 4e 55 4c 4c 20 5b 20 3c  } {.NOT NULL [ <
2a30: 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65 3e  conflict-clause>
2a40: 20 5d 20 7c 0a 50 52 49 4d 41 52 59 20 4b 45 59   ] |.PRIMARY KEY
2a50: 20 5b 3c 73 6f 72 74 2d 6f 72 64 65 72 3e 5d 20   [<sort-order>] 
2a60: 5b 20 3c 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75  [ <conflict-clau
2a70: 73 65 3e 20 5d 20 7c 0a 55 4e 49 51 55 45 20 5b  se> ] |.UNIQUE [
2a80: 20 3c 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73   <conflict-claus
2a90: 65 3e 20 5d 20 7c 0a 43 48 45 43 4b 20 28 20 3c  e> ] |.CHECK ( <
2aa0: 65 78 70 72 3e 20 29 20 5b 20 3c 63 6f 6e 66 6c  expr> ) [ <confl
2ab0: 69 63 74 2d 63 6c 61 75 73 65 3e 20 5d 20 7c 0a  ict-clause> ] |.
2ac0: 44 45 46 41 55 4c 54 20 3c 76 61 6c 75 65 3e 0a  DEFAULT <value>.
2ad0: 7d 20 7b 63 6f 6e 73 74 72 61 69 6e 74 7d 20 7b  } {constraint} {
2ae0: 0a 50 52 49 4d 41 52 59 20 4b 45 59 20 28 20 3c  .PRIMARY KEY ( <
2af0: 6e 61 6d 65 3e 20 5b 2c 20 3c 6e 61 6d 65 3e 5d  name> [, <name>]
2b00: 2a 20 29 20 5b 20 3c 63 6f 6e 66 6c 69 63 74 2d  * ) [ <conflict-
2b10: 63 6c 61 75 73 65 3e 20 5d 7c 0a 55 4e 49 51 55  clause> ]|.UNIQU
2b20: 45 20 28 20 3c 6e 61 6d 65 3e 20 5b 2c 20 3c 6e  E ( <name> [, <n
2b30: 61 6d 65 3e 5d 2a 20 29 20 5b 20 3c 63 6f 6e 66  ame>]* ) [ <conf
2b40: 6c 69 63 74 2d 63 6c 61 75 73 65 3e 20 5d 20 7c  lict-clause> ] |
2b50: 0a 43 48 45 43 4b 20 28 20 3c 65 78 70 72 3e 20  .CHECK ( <expr> 
2b60: 29 20 5b 20 3c 63 6f 6e 66 6c 69 63 74 2d 63 6c  ) [ <conflict-cl
2b70: 61 75 73 65 3e 20 5d 0a 7d 20 7b 63 6f 6e 66 6c  ause> ].} {confl
2b80: 69 63 74 2d 63 6c 61 75 73 65 7d 20 7b 0a 4f 4e  ict-clause} {.ON
2b90: 20 43 4f 4e 46 4c 49 43 54 20 3c 63 6f 6e 66 6c   CONFLICT <confl
2ba0: 69 63 74 2d 61 6c 67 6f 72 69 74 68 6d 3e 0a 7d  ict-algorithm>.}
2bb0: 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 41 20 43 52  ..puts {.<p>A CR
2bc0: 45 41 54 45 20 54 41 42 4c 45 20 73 74 61 74 65  EATE TABLE state
2bd0: 6d 65 6e 74 20 69 73 20 62 61 73 69 63 61 6c 6c  ment is basicall
2be0: 79 20 74 68 65 20 6b 65 79 77 6f 72 64 73 20 22  y the keywords "
2bf0: 43 52 45 41 54 45 20 54 41 42 4c 45 22 0a 66 6f  CREATE TABLE".fo
2c00: 6c 6c 6f 77 65 64 20 62 79 20 74 68 65 20 6e 61  llowed by the na
2c10: 6d 65 20 6f 66 20 61 20 6e 65 77 20 74 61 62 6c  me of a new tabl
2c20: 65 20 61 6e 64 20 61 20 70 61 72 65 6e 74 68 65  e and a parenthe
2c30: 73 69 7a 65 64 20 6c 69 73 74 20 6f 66 20 63 6f  sized list of co
2c40: 6c 75 6d 6e 0a 64 65 66 69 6e 69 74 69 6f 6e 73  lumn.definitions
2c50: 20 61 6e 64 20 63 6f 6e 73 74 72 61 69 6e 74 73   and constraints
2c60: 2e 20 20 54 68 65 20 74 61 62 6c 65 20 6e 61 6d  .  The table nam
2c70: 65 20 63 61 6e 20 62 65 20 65 69 74 68 65 72 20  e can be either 
2c80: 61 6e 20 69 64 65 6e 74 69 66 69 65 72 0a 6f 72  an identifier.or
2c90: 20 61 20 73 74 72 69 6e 67 2e 20 20 54 61 62 6c   a string.  Tabl
2ca0: 65 73 20 6e 61 6d 65 73 20 74 68 61 74 20 62 65  es names that be
2cb0: 67 69 6e 20 77 69 74 68 20 22 3c 62 3e 73 71 6c  gin with "<b>sql
2cc0: 69 74 65 5f 3c 2f 62 3e 22 20 61 72 65 20 72 65  ite_</b>" are re
2cd0: 73 65 72 76 65 64 0a 66 6f 72 20 75 73 65 20 62  served.for use b
2ce0: 79 20 74 68 65 20 65 6e 67 69 6e 65 2e 3c 2f 70  y the engine.</p
2cf0: 3e 0a 0a 3c 70 3e 45 61 63 68 20 63 6f 6c 75 6d  >..<p>Each colum
2d00: 6e 20 64 65 66 69 6e 69 74 69 6f 6e 20 69 73 20  n definition is 
2d10: 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  the name of the 
2d20: 63 6f 6c 75 6d 6e 20 66 6f 6c 6c 6f 77 65 64 20  column followed 
2d30: 62 79 20 74 68 65 0a 64 61 74 61 74 79 70 65 20  by the.datatype 
2d40: 66 6f 72 20 74 68 61 74 20 63 6f 6c 75 6d 6e 2c  for that column,
2d50: 20 74 68 65 6e 20 6f 6e 65 20 6f 72 20 6d 6f 72   then one or mor
2d60: 65 20 6f 70 74 69 6f 6e 61 6c 20 63 6f 6c 75 6d  e optional colum
2d70: 6e 20 63 6f 6e 73 74 72 61 69 6e 74 73 2e 0a 53  n constraints..S
2d80: 51 4c 69 74 65 20 69 73 20 3c 61 20 68 72 65 66  QLite is <a href
2d90: 3d 22 64 61 74 61 74 79 70 65 73 2e 68 74 6d 6c  ="datatypes.html
2da0: 22 3e 74 79 70 65 6c 65 73 73 3c 2f 61 3e 2e 0a  ">typeless</a>..
2db0: 54 68 65 20 64 61 74 61 74 79 70 65 20 66 6f 72  The datatype for
2dc0: 20 74 68 65 20 63 6f 6c 75 6d 6e 20 64 6f 65 73   the column does
2dd0: 20 6e 6f 74 20 72 65 73 74 72 69 63 74 20 77 68   not restrict wh
2de0: 61 74 20 64 61 74 61 20 6d 61 79 20 62 65 20 70  at data may be p
2df0: 75 74 0a 69 6e 20 74 68 61 74 20 63 6f 6c 75 6d  ut.in that colum
2e00: 6e 2e 0a 41 6c 6c 20 69 6e 66 6f 72 6d 61 74 69  n..All informati
2e10: 6f 6e 20 69 73 20 73 74 6f 72 65 64 20 61 73 20  on is stored as 
2e20: 6e 75 6c 6c 2d 74 65 72 6d 69 6e 61 74 65 64 20  null-terminated 
2e30: 73 74 72 69 6e 67 73 2e 0a 54 68 65 20 55 4e 49  strings..The UNI
2e40: 51 55 45 20 63 6f 6e 73 74 72 61 69 6e 74 20 63  QUE constraint c
2e50: 61 75 73 65 73 20 61 6e 20 69 6e 64 65 78 20 74  auses an index t
2e60: 6f 20 62 65 20 63 72 65 61 74 65 64 20 6f 6e 20  o be created on 
2e70: 74 68 65 20 73 70 65 63 69 66 69 65 64 0a 63 6f  the specified.co
2e80: 6c 75 6d 6e 73 2e 20 20 54 68 69 73 20 69 6e 64  lumns.  This ind
2e90: 65 78 20 6d 75 73 74 20 63 6f 6e 74 61 69 6e 20  ex must contain 
2ea0: 75 6e 69 71 75 65 20 6b 65 79 73 2e 0a 54 68 65  unique keys..The
2eb0: 20 44 45 46 41 55 4c 54 20 63 6f 6e 73 74 72 61   DEFAULT constra
2ec0: 69 6e 74 0a 73 70 65 63 69 66 69 65 73 20 61 20  int.specifies a 
2ed0: 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 74 6f  default value to
2ee0: 20 75 73 65 20 77 68 65 6e 20 64 6f 69 6e 67 20   use when doing 
2ef0: 61 6e 20 49 4e 53 45 52 54 2e 0a 3c 2f 70 3e 0a  an INSERT..</p>.
2f00: 0a 3c 70 3e 53 70 65 63 69 66 79 69 6e 67 20 61  .<p>Specifying a
2f10: 20 50 52 49 4d 41 52 59 20 4b 45 59 20 6e 6f 72   PRIMARY KEY nor
2f20: 6d 61 6c 6c 79 20 6a 75 73 74 20 63 72 65 61 74  mally just creat
2f30: 65 73 20 61 20 55 4e 49 51 55 45 20 69 6e 64 65  es a UNIQUE inde
2f40: 78 0a 6f 6e 20 74 68 65 20 70 72 69 6d 61 72 79  x.on the primary
2f50: 20 6b 65 79 2e 20 20 48 6f 77 65 76 65 72 2c 20   key.  However, 
2f60: 69 66 20 70 72 69 6d 61 72 79 20 6b 65 79 20 69  if primary key i
2f70: 73 20 6f 6e 20 61 20 73 69 6e 67 6c 65 20 63 6f  s on a single co
2f80: 6c 75 6d 6e 0a 74 68 61 74 20 68 61 73 20 64 61  lumn.that has da
2f90: 74 61 74 79 70 65 20 49 4e 54 45 47 45 52 2c 20  tatype INTEGER, 
2fa0: 74 68 65 6e 20 74 68 61 74 20 63 6f 6c 75 6d 6e  then that column
2fb0: 20 69 73 20 75 73 65 64 20 69 6e 74 65 72 6e 61   is used interna
2fc0: 6c 6c 79 0a 61 73 20 74 68 65 20 61 63 74 75 61  lly.as the actua
2fd0: 6c 20 6b 65 79 20 6f 66 20 74 68 65 20 42 2d 54  l key of the B-T
2fe0: 72 65 65 20 66 6f 72 20 74 68 65 20 74 61 62 6c  ree for the tabl
2ff0: 65 2e 20 20 54 68 69 73 20 6d 65 61 6e 73 20 74  e.  This means t
3000: 68 61 74 20 74 68 65 20 63 6f 6c 75 6d 6e 0a 6d  hat the column.m
3010: 61 79 20 6f 6e 6c 79 20 68 6f 6c 64 20 75 6e 69  ay only hold uni
3020: 71 75 65 20 69 6e 74 65 67 65 72 20 76 61 6c 75  que integer valu
3030: 65 73 2e 20 20 28 45 78 63 65 70 74 20 66 6f 72  es.  (Except for
3040: 20 74 68 69 73 20 6f 6e 65 20 63 61 73 65 2c 0a   this one case,.
3050: 53 51 4c 69 74 65 20 69 67 6e 6f 72 65 73 20 74  SQLite ignores t
3060: 68 65 20 64 61 74 61 74 79 70 65 20 73 70 65 63  he datatype spec
3070: 69 66 69 63 61 74 69 6f 6e 20 6f 66 20 63 6f 6c  ification of col
3080: 75 6d 6e 73 20 61 6e 64 20 61 6c 6c 6f 77 73 0a  umns and allows.
3090: 61 6e 79 20 6b 69 6e 64 20 6f 66 20 64 61 74 61  any kind of data
30a0: 20 74 6f 20 62 65 20 70 75 74 20 69 6e 20 61 20   to be put in a 
30b0: 63 6f 6c 75 6d 6e 20 72 65 67 61 72 64 6c 65 73  column regardles
30c0: 73 20 6f 66 20 69 74 73 20 64 65 63 6c 61 72 65  s of its declare
30d0: 64 0a 64 61 74 61 74 79 70 65 2e 29 20 20 49 66  d.datatype.)  If
30e0: 20 61 20 74 61 62 6c 65 20 64 6f 65 73 20 6e 6f   a table does no
30f0: 74 20 68 61 76 65 20 61 6e 20 49 4e 54 45 47 45  t have an INTEGE
3100: 52 20 50 52 49 4d 41 52 59 20 4b 45 59 20 63 6f  R PRIMARY KEY co
3110: 6c 75 6d 6e 2c 0a 74 68 65 6e 20 74 68 65 20 42  lumn,.then the B
3120: 2d 54 72 65 65 20 6b 65 79 20 77 69 6c 6c 20 62  -Tree key will b
3130: 65 20 61 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c  e a automaticall
3140: 79 20 67 65 6e 65 72 61 74 65 64 20 69 6e 74 65  y generated inte
3150: 67 65 72 2e 20 20 54 68 65 0a 42 2d 54 72 65 65  ger.  The.B-Tree
3160: 20 6b 65 79 20 66 6f 72 20 61 20 72 6f 77 20 63   key for a row c
3170: 61 6e 20 61 6c 77 61 79 73 20 62 65 20 61 63 63  an always be acc
3180: 65 73 73 65 64 20 75 73 69 6e 67 20 6f 6e 65 20  essed using one 
3190: 6f 66 20 74 68 65 0a 73 70 65 63 69 61 6c 20 6e  of the.special n
31a0: 61 6d 65 73 20 22 3c 62 3e 52 4f 57 49 44 3c 2f  ames "<b>ROWID</
31b0: 62 3e 22 2c 20 22 3c 62 3e 4f 49 44 3c 2f 62 3e  b>", "<b>OID</b>
31c0: 22 2c 20 6f 72 20 22 3c 62 3e 5f 52 4f 57 49 44  ", or "<b>_ROWID
31d0: 5f 3c 2f 62 3e 22 2e 0a 54 68 69 73 20 69 73 20  _</b>"..This is 
31e0: 74 72 75 65 20 72 65 67 61 72 64 6c 65 73 73 20  true regardless 
31f0: 6f 66 20 77 68 65 74 68 65 72 20 6f 72 20 6e 6f  of whether or no
3200: 74 20 74 68 65 72 65 20 69 73 20 61 6e 20 49 4e  t there is an IN
3210: 54 45 47 45 52 0a 50 52 49 4d 41 52 59 20 4b 45  TEGER.PRIMARY KE
3220: 59 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 74 68  Y.</p>..<p>If th
3230: 65 20 22 54 45 4d 50 22 20 6f 72 20 22 54 45 4d  e "TEMP" or "TEM
3240: 50 4f 52 41 52 59 22 20 6b 65 79 77 6f 72 64 20  PORARY" keyword 
3250: 6f 63 63 75 72 73 20 69 6e 20 62 65 74 77 65 65  occurs in betwee
3260: 6e 20 22 43 52 45 41 54 45 22 0a 61 6e 64 20 22  n "CREATE".and "
3270: 54 41 42 4c 45 22 20 74 68 65 6e 20 74 68 65 20  TABLE" then the 
3280: 74 61 62 6c 65 20 74 68 61 74 20 69 73 20 63 72  table that is cr
3290: 65 61 74 65 64 20 69 73 20 6f 6e 6c 79 20 76 69  eated is only vi
32a0: 73 69 62 6c 65 20 74 6f 20 74 68 65 0a 70 72 6f  sible to the.pro
32b0: 63 65 73 73 20 74 68 61 74 20 6f 70 65 6e 65 64  cess that opened
32c0: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 61 6e   the database an
32d0: 64 20 69 73 20 61 75 74 6f 6d 61 74 69 63 61 6c  d is automatical
32e0: 6c 79 20 64 65 6c 65 74 65 64 20 77 68 65 6e 0a  ly deleted when.
32f0: 74 68 65 20 64 61 74 61 62 61 73 65 20 69 73 20  the database is 
3300: 63 6c 6f 73 65 64 2e 20 20 41 6e 79 20 69 6e 64  closed.  Any ind
3310: 69 63 65 73 20 63 72 65 61 74 65 64 20 6f 6e 20  ices created on 
3320: 61 20 74 65 6d 70 6f 72 61 72 79 20 74 61 62 6c  a temporary tabl
3330: 65 0a 61 72 65 20 61 6c 73 6f 20 74 65 6d 70 6f  e.are also tempo
3340: 72 61 72 79 2e 20 20 54 65 6d 70 6f 72 61 72 79  rary.  Temporary
3350: 20 74 61 62 6c 65 73 20 61 6e 64 20 69 6e 64 69   tables and indi
3360: 63 65 73 20 61 72 65 20 73 74 6f 72 65 64 20 69  ces are stored i
3370: 6e 20 61 0a 73 65 70 61 72 61 74 65 20 66 69 6c  n a.separate fil
3380: 65 20 64 69 73 74 69 6e 63 74 20 66 72 6f 6d 20  e distinct from 
3390: 74 68 65 20 6d 61 69 6e 20 64 61 74 61 62 61 73  the main databas
33a0: 65 20 66 69 6c 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e  e file.</p>..<p>
33b0: 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20 63 6f 6e  The optional con
33c0: 66 6c 69 63 74 2d 63 6c 61 75 73 65 20 66 6f 6c  flict-clause fol
33d0: 6c 6f 77 69 6e 67 20 65 61 63 68 20 63 6f 6e 73  lowing each cons
33e0: 74 72 61 69 6e 74 0a 61 6c 6c 6f 77 73 20 74 68  traint.allows th
33f0: 65 20 73 70 65 63 69 66 69 63 61 74 69 6f 6e 20  e specification 
3400: 6f 66 20 61 6e 20 61 6c 74 65 72 6e 61 74 69 76  of an alternativ
3410: 65 20 64 65 66 61 75 6c 74 0a 63 6f 6e 73 74 72  e default.constr
3420: 61 69 6e 74 20 63 6f 6e 66 6c 69 63 74 20 72 65  aint conflict re
3430: 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74  solution algorit
3440: 68 6d 20 66 6f 72 20 74 68 61 74 20 63 6f 6e 73  hm for that cons
3450: 74 72 61 69 6e 74 2e 0a 54 68 65 20 64 65 66 61  traint..The defa
3460: 75 6c 74 20 69 73 20 61 62 6f 72 74 20 41 42 4f  ult is abort ABO
3470: 52 54 2e 20 20 44 69 66 66 65 72 65 6e 74 20 63  RT.  Different c
3480: 6f 6e 73 74 72 61 69 6e 74 73 20 77 69 74 68 69  onstraints withi
3490: 6e 20 74 68 65 20 73 61 6d 65 0a 74 61 62 6c 65  n the same.table
34a0: 20 6d 61 79 20 68 61 76 65 20 64 69 66 66 65 72   may have differ
34b0: 65 6e 74 20 64 65 66 61 75 6c 74 20 63 6f 6e 66  ent default conf
34c0: 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20  lict resolution 
34d0: 61 6c 67 6f 72 69 74 68 6d 73 2e 0a 49 66 20 61  algorithms..If a
34e0: 6e 20 43 4f 50 59 2c 20 49 4e 53 45 52 54 2c 20  n COPY, INSERT, 
34f0: 6f 72 20 55 50 44 41 54 45 20 63 6f 6d 6d 61 6e  or UPDATE comman
3500: 64 20 73 70 65 63 69 66 69 65 73 20 61 20 64 69  d specifies a di
3510: 66 66 65 72 65 6e 74 20 63 6f 6e 66 6c 69 63 74  fferent conflict
3520: 0a 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f  .resolution algo
3530: 72 69 74 68 6d 2c 20 74 68 65 6e 20 74 68 61 74  rithm, then that
3540: 20 61 6c 67 6f 72 69 74 68 6d 20 69 73 20 75 73   algorithm is us
3550: 65 64 20 69 6e 20 70 6c 61 63 65 20 6f 66 20 74  ed in place of t
3560: 68 65 0a 64 65 66 61 75 6c 74 20 61 6c 67 6f 72  he.default algor
3570: 69 74 68 6d 20 73 70 65 63 69 66 69 65 64 20 69  ithm specified i
3580: 6e 20 74 68 65 20 43 52 45 41 54 45 20 54 41 42  n the CREATE TAB
3590: 4c 45 20 73 74 61 74 65 6d 65 6e 74 2e 0a 53 65  LE statement..Se
35a0: 65 20 74 68 65 20 73 65 63 74 69 6f 6e 20 74 69  e the section ti
35b0: 74 6c 65 64 0a 3c 61 20 68 72 65 66 3d 22 23 63  tled.<a href="#c
35c0: 6f 6e 66 6c 69 63 74 22 3e 4f 4e 20 43 4f 4e 46  onflict">ON CONF
35d0: 4c 49 43 54 3c 2f 61 3e 20 66 6f 72 20 61 64 64  LICT</a> for add
35e0: 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74  itional informat
35f0: 69 6f 6e 2e 3c 2f 70 3e 0a 0a 3c 70 3e 43 48 45  ion.</p>..<p>CHE
3600: 43 4b 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 61  CK constraints a
3610: 72 65 20 69 67 6e 6f 72 65 64 20 69 6e 20 74 68  re ignored in th
3620: 65 20 63 75 72 72 65 6e 74 20 69 6d 70 6c 65 6d  e current implem
3630: 65 6e 74 61 74 69 6f 6e 2e 0a 53 75 70 70 6f 72  entation..Suppor
3640: 74 20 66 6f 72 20 43 48 45 43 4b 20 63 6f 6e 73  t for CHECK cons
3650: 74 72 61 69 6e 74 73 20 6d 61 79 20 62 65 20 61  traints may be a
3660: 64 64 65 64 20 69 6e 20 74 68 65 20 66 75 74 75  dded in the futu
3670: 72 65 2e 20 20 41 73 20 6f 66 0a 76 65 72 73 69  re.  As of.versi
3680: 6f 6e 20 32 2e 33 2e 30 2c 20 4e 4f 54 20 4e 55  on 2.3.0, NOT NU
3690: 4c 4c 2c 20 50 52 49 4d 41 52 59 20 4b 45 59 2c  LL, PRIMARY KEY,
36a0: 20 61 6e 64 20 55 4e 49 51 55 45 20 63 6f 6e 73   and UNIQUE cons
36b0: 74 72 61 69 6e 74 73 20 61 6c 6c 0a 77 6f 72 6b  traints all.work
36c0: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 72 65 20  .</p>..<p>There 
36d0: 61 72 65 20 6e 6f 20 61 72 62 69 74 72 61 72 79  are no arbitrary
36e0: 20 6c 69 6d 69 74 73 20 6f 6e 20 74 68 65 20 6e   limits on the n
36f0: 75 6d 62 65 72 0a 6f 66 20 63 6f 6c 75 6d 6e 73  umber.of columns
3700: 20 6f 72 20 6f 6e 20 74 68 65 20 6e 75 6d 62 65   or on the numbe
3710: 72 20 6f 66 20 63 6f 6e 73 74 72 61 69 6e 74 73  r of constraints
3720: 20 69 6e 20 61 20 74 61 62 6c 65 2e 0a 54 68 65   in a table..The
3730: 20 74 6f 74 61 6c 20 61 6d 6f 75 6e 74 20 6f 66   total amount of
3740: 20 64 61 74 61 20 69 6e 20 61 20 73 69 6e 67 6c   data in a singl
3750: 65 20 72 6f 77 20 69 73 20 6c 69 6d 69 74 65 64  e row is limited
3760: 20 74 6f 20 61 62 6f 75 74 0a 31 20 6d 65 67 61   to about.1 mega
3770: 62 79 74 65 73 2e 20 20 28 54 68 69 73 20 6c 69  bytes.  (This li
3780: 6d 69 74 20 63 61 6e 20 62 65 20 69 6e 63 72 65  mit can be incre
3790: 61 73 65 64 20 74 6f 20 31 36 4d 42 20 62 79 20  ased to 16MB by 
37a0: 63 68 61 6e 67 69 6e 67 0a 61 20 73 69 6e 67 6c  changing.a singl
37b0: 65 20 23 64 65 66 69 6e 65 20 69 6e 20 74 68 65  e #define in the
37c0: 20 73 6f 75 72 63 65 20 63 6f 64 65 20 61 6e 64   source code and
37d0: 20 72 65 63 6f 6d 70 69 6c 69 6e 67 2e 29 3c 2f   recompiling.)</
37e0: 70 3e 0a 0a 3c 70 3e 54 68 65 20 43 52 45 41 54  p>..<p>The CREAT
37f0: 45 20 54 41 42 4c 45 20 41 53 20 66 6f 72 6d 20  E TABLE AS form 
3800: 64 65 66 69 6e 65 73 20 74 68 65 20 74 61 62 6c  defines the tabl
3810: 65 20 74 6f 20 62 65 0a 74 68 65 20 72 65 73 75  e to be.the resu
3820: 6c 74 20 73 65 74 20 6f 66 20 61 20 71 75 65 72  lt set of a quer
3830: 79 2e 20 20 54 68 65 20 6e 61 6d 65 73 20 6f 66  y.  The names of
3840: 20 74 68 65 20 74 61 62 6c 65 20 63 6f 6c 75 6d   the table colum
3850: 6e 73 20 61 72 65 0a 74 68 65 20 6e 61 6d 65 73  ns are.the names
3860: 20 6f 66 20 74 68 65 20 63 6f 6c 75 6d 6e 73 20   of the columns 
3870: 69 6e 20 74 68 65 20 72 65 73 75 6c 74 2e 3c 2f  in the result.</
3880: 70 3e 0a 0a 3c 70 3e 54 68 65 20 65 78 61 63 74  p>..<p>The exact
3890: 20 74 65 78 74 0a 6f 66 20 65 61 63 68 20 43 52   text.of each CR
38a0: 45 41 54 45 20 54 41 42 4c 45 20 73 74 61 74 65  EATE TABLE state
38b0: 6d 65 6e 74 20 69 73 20 73 74 6f 72 65 64 20 69  ment is stored i
38c0: 6e 20 74 68 65 20 3c 62 3e 73 71 6c 69 74 65 5f  n the <b>sqlite_
38d0: 6d 61 73 74 65 72 3c 2f 62 3e 0a 74 61 62 6c 65  master</b>.table
38e0: 2e 20 20 45 76 65 72 79 74 69 6d 65 20 74 68 65  .  Everytime the
38f0: 20 64 61 74 61 62 61 73 65 20 69 73 20 6f 70 65   database is ope
3900: 6e 65 64 2c 20 61 6c 6c 20 43 52 45 41 54 45 20  ned, all CREATE 
3910: 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 73  TABLE statements
3920: 0a 61 72 65 20 72 65 61 64 20 66 72 6f 6d 20 74  .are read from t
3930: 68 65 20 3c 62 3e 73 71 6c 69 74 65 5f 6d 61 73  he <b>sqlite_mas
3940: 74 65 72 3c 2f 62 3e 20 74 61 62 6c 65 20 61 6e  ter</b> table an
3950: 64 20 75 73 65 64 20 74 6f 20 72 65 67 65 6e 65  d used to regene
3960: 72 61 74 65 0a 53 51 4c 69 74 65 27 73 20 69 6e  rate.SQLite's in
3970: 74 65 72 6e 61 6c 20 72 65 70 72 65 73 65 6e 74  ternal represent
3980: 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 74 61 62  ation of the tab
3990: 6c 65 20 6c 61 79 6f 75 74 2e 0a 49 66 20 74 68  le layout..If th
39a0: 65 20 6f 72 69 67 69 6e 61 6c 20 63 6f 6d 6d 61  e original comma
39b0: 6e 64 20 77 61 73 20 61 20 43 52 45 41 54 45 20  nd was a CREATE 
39c0: 54 41 42 4c 45 20 41 53 20 74 68 65 6e 20 74 68  TABLE AS then th
39d0: 65 6e 20 61 6e 20 65 71 75 69 76 61 6c 65 6e 74  en an equivalent
39e0: 0a 43 52 45 41 54 45 20 54 41 42 4c 45 20 73 74  .CREATE TABLE st
39f0: 61 74 65 6d 65 6e 74 20 69 73 20 73 79 6e 74 68  atement is synth
3a00: 65 73 69 7a 65 64 20 61 6e 64 20 73 74 6f 72 65  esized and store
3a10: 20 69 6e 20 3c 62 3e 73 71 6c 69 74 65 5f 6d 61   in <b>sqlite_ma
3a20: 73 74 65 72 3c 2f 62 3e 0a 69 6e 20 70 6c 61 63  ster</b>.in plac
3a30: 65 20 6f 66 20 74 68 65 20 6f 72 69 67 69 6e 61  e of the origina
3a40: 6c 20 63 6f 6d 6d 61 6e 64 2e 0a 54 68 65 20 74  l command..The t
3a50: 65 78 74 20 6f 66 20 43 52 45 41 54 45 20 54 45  ext of CREATE TE
3a60: 4d 50 4f 52 41 52 59 20 54 41 42 4c 45 20 73 74  MPORARY TABLE st
3a70: 61 74 65 6d 65 6e 74 73 20 61 72 65 20 73 74 6f  atements are sto
3a80: 72 65 64 20 69 6e 20 74 68 65 0a 3c 62 3e 73 71  red in the.<b>sq
3a90: 6c 69 74 65 5f 74 65 6d 70 5f 6d 61 73 74 65 72  lite_temp_master
3aa0: 3c 2f 62 3e 20 74 61 62 6c 65 2e 0a 3c 2f 70 3e  </b> table..</p>
3ab0: 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20 7b 43 52  .}...Section {CR
3ac0: 45 41 54 45 20 54 52 49 47 47 45 52 7d 20 63 72  EATE TRIGGER} cr
3ad0: 65 61 74 65 74 72 69 67 67 65 72 0a 0a 53 79 6e  eatetrigger..Syn
3ae0: 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65  tax {sql-stateme
3af0: 6e 74 7d 20 7b 0a 43 52 45 41 54 45 20 5b 54 45  nt} {.CREATE [TE
3b00: 4d 50 20 7c 20 54 45 4d 50 4f 52 41 52 59 5d 20  MP | TEMPORARY] 
3b10: 54 52 49 47 47 45 52 20 3c 74 72 69 67 67 65 72  TRIGGER <trigger
3b20: 2d 6e 61 6d 65 3e 20 5b 20 42 45 46 4f 52 45 20  -name> [ BEFORE 
3b30: 7c 20 41 46 54 45 52 20 5d 0a 3c 64 61 74 61 62  | AFTER ].<datab
3b40: 61 73 65 2d 65 76 65 6e 74 3e 20 4f 4e 20 3c 74  ase-event> ON <t
3b50: 61 62 6c 65 2d 6e 61 6d 65 3e 0a 3c 74 72 69 67  able-name>.<trig
3b60: 67 65 72 2d 61 63 74 69 6f 6e 3e 0a 7d 0a 0a 53  ger-action>.}..S
3b70: 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65  yntax {sql-state
3b80: 6d 65 6e 74 7d 20 7b 0a 43 52 45 41 54 45 20 5b  ment} {.CREATE [
3b90: 54 45 4d 50 20 7c 20 54 45 4d 50 4f 52 41 52 59  TEMP | TEMPORARY
3ba0: 5d 20 54 52 49 47 47 45 52 20 3c 74 72 69 67 67  ] TRIGGER <trigg
3bb0: 65 72 2d 6e 61 6d 65 3e 20 49 4e 53 54 45 41 44  er-name> INSTEAD
3bc0: 20 4f 46 0a 3c 64 61 74 61 62 61 73 65 2d 65 76   OF.<database-ev
3bd0: 65 6e 74 3e 20 4f 4e 20 3c 76 69 65 77 2d 6e 61  ent> ON <view-na
3be0: 6d 65 3e 0a 3c 74 72 69 67 67 65 72 2d 61 63 74  me>.<trigger-act
3bf0: 69 6f 6e 3e 0a 7d 0a 0a 53 79 6e 74 61 78 20 7b  ion>.}..Syntax {
3c00: 64 61 74 61 62 61 73 65 2d 65 76 65 6e 74 7d 20  database-event} 
3c10: 7b 0a 44 45 4c 45 54 45 20 7c 20 0a 49 4e 53 45  {.DELETE | .INSE
3c20: 52 54 20 7c 20 0a 55 50 44 41 54 45 20 7c 20 0a  RT | .UPDATE | .
3c30: 55 50 44 41 54 45 20 4f 46 20 3c 63 6f 6c 75 6d  UPDATE OF <colum
3c40: 6e 2d 6c 69 73 74 3e 0a 7d 0a 0a 53 79 6e 74 61  n-list>.}..Synta
3c50: 78 20 7b 74 72 69 67 67 65 72 2d 61 63 74 69 6f  x {trigger-actio
3c60: 6e 7d 20 7b 0a 5b 20 46 4f 52 20 45 41 43 48 20  n} {.[ FOR EACH 
3c70: 52 4f 57 20 5d 20 5b 20 57 48 45 4e 20 3c 65 78  ROW ] [ WHEN <ex
3c80: 70 72 65 73 73 69 6f 6e 3e 20 5d 20 0a 42 45 47  pression> ] .BEG
3c90: 49 4e 20 0a 20 20 3c 74 72 69 67 67 65 72 2d 73  IN .  <trigger-s
3ca0: 74 65 70 3e 20 3b 20 5b 20 3c 74 72 69 67 67 65  tep> ; [ <trigge
3cb0: 72 2d 73 74 65 70 3e 20 3b 20 5d 2a 0a 45 4e 44  r-step> ; ]*.END
3cc0: 0a 7d 0a 0a 53 79 6e 74 61 78 20 7b 74 72 69 67  .}..Syntax {trig
3cd0: 67 65 72 2d 73 74 65 70 7d 20 7b 0a 3c 75 70 64  ger-step} {.<upd
3ce0: 61 74 65 2d 73 74 61 74 65 6d 65 6e 74 3e 20 7c  ate-statement> |
3cf0: 20 3c 69 6e 73 65 72 74 2d 73 74 61 74 65 6d 65   <insert-stateme
3d00: 6e 74 3e 20 7c 20 0a 3c 64 65 6c 65 74 65 2d 73  nt> | .<delete-s
3d10: 74 61 74 65 6d 65 6e 74 3e 20 7c 20 3c 73 65 6c  tatement> | <sel
3d20: 65 63 74 2d 73 74 61 74 65 6d 65 6e 74 3e 20 0a  ect-statement> .
3d30: 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65  }..puts {.<p>The
3d40: 20 43 52 45 41 54 45 20 54 52 49 47 47 45 52 20   CREATE TRIGGER 
3d50: 73 74 61 74 65 6d 65 6e 74 20 69 73 20 75 73 65  statement is use
3d60: 64 20 74 6f 20 61 64 64 20 74 72 69 67 67 65 72  d to add trigger
3d70: 73 20 74 6f 20 74 68 65 20 0a 64 61 74 61 62 61  s to the .databa
3d80: 73 65 20 73 63 68 65 6d 61 2e 20 54 72 69 67 67  se schema. Trigg
3d90: 65 72 73 20 61 72 65 20 64 61 74 61 62 61 73 65  ers are database
3da0: 20 6f 70 65 72 61 74 69 6f 6e 73 20 28 74 68 65   operations (the
3db0: 20 3c 69 3e 74 72 69 67 67 65 72 2d 61 63 74 69   <i>trigger-acti
3dc0: 6f 6e 3c 2f 69 3e 29 20 0a 74 68 61 74 20 61 72  on</i>) .that ar
3dd0: 65 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20  e automatically 
3de0: 70 65 72 66 6f 72 6d 65 64 20 77 68 65 6e 20 61  performed when a
3df0: 20 73 70 65 63 69 66 69 65 64 20 64 61 74 61 62   specified datab
3e00: 61 73 65 20 65 76 65 6e 74 20 28 74 68 65 0a 3c  ase event (the.<
3e10: 69 3e 64 61 74 61 62 61 73 65 2d 65 76 65 6e 74  i>database-event
3e20: 3c 2f 69 3e 29 20 6f 63 63 75 72 73 2e 20 20 3c  </i>) occurs.  <
3e30: 2f 70 3e 0a 0a 3c 70 3e 41 20 74 72 69 67 67 65  /p>..<p>A trigge
3e40: 72 20 6d 61 79 20 62 65 20 73 70 65 63 69 66 69  r may be specifi
3e50: 65 64 20 74 6f 20 66 69 72 65 20 77 68 65 6e 65  ed to fire whene
3e60: 76 65 72 20 61 20 44 45 4c 45 54 45 2c 20 49 4e  ver a DELETE, IN
3e70: 53 45 52 54 20 6f 72 20 55 50 44 41 54 45 20 6f  SERT or UPDATE o
3e80: 66 20 61 0a 70 61 72 74 69 63 75 6c 61 72 20 64  f a.particular d
3e90: 61 74 61 62 61 73 65 20 74 61 62 6c 65 20 6f 63  atabase table oc
3ea0: 63 75 72 73 2c 20 6f 72 20 77 68 65 6e 65 76 65  curs, or wheneve
3eb0: 72 20 61 6e 20 55 50 44 41 54 45 20 6f 66 20 6f  r an UPDATE of o
3ec0: 6e 65 20 6f 72 20 6d 6f 72 65 0a 73 70 65 63 69  ne or more.speci
3ed0: 66 69 65 64 20 63 6f 6c 75 6d 6e 73 20 6f 66 20  fied columns of 
3ee0: 61 20 74 61 62 6c 65 20 61 72 65 20 75 70 64 61  a table are upda
3ef0: 74 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41 74 20  ted.</p>..<p>At 
3f00: 74 68 69 73 20 74 69 6d 65 20 53 51 4c 69 74 65  this time SQLite
3f10: 20 73 75 70 70 6f 72 74 73 20 6f 6e 6c 79 20 46   supports only F
3f20: 4f 52 20 45 41 43 48 20 52 4f 57 20 74 72 69 67  OR EACH ROW trig
3f30: 67 65 72 73 2c 20 6e 6f 74 20 46 4f 52 20 45 41  gers, not FOR EA
3f40: 43 48 0a 53 54 41 54 45 4d 45 4e 54 20 74 72 69  CH.STATEMENT tri
3f50: 67 67 65 72 73 2e 20 48 65 6e 63 65 20 65 78 70  ggers. Hence exp
3f60: 6c 69 63 69 74 6c 79 20 73 70 65 63 69 66 79 69  licitly specifyi
3f70: 6e 67 20 46 4f 52 20 45 41 43 48 20 52 4f 57 20  ng FOR EACH ROW 
3f80: 69 73 20 6f 70 74 69 6f 6e 61 6c 2e 20 20 46 4f  is optional.  FO
3f90: 52 0a 45 41 43 48 20 52 4f 57 20 69 6d 70 6c 69  R.EACH ROW impli
3fa0: 65 73 20 74 68 61 74 20 74 68 65 20 53 51 4c 20  es that the SQL 
3fb0: 73 74 61 74 65 6d 65 6e 74 73 20 73 70 65 63 69  statements speci
3fc0: 66 69 65 64 20 61 73 20 3c 69 3e 74 72 69 67 67  fied as <i>trigg
3fd0: 65 72 2d 73 74 65 70 73 3c 2f 69 3e 20 0a 6d 61  er-steps</i> .ma
3fe0: 79 20 62 65 20 65 78 65 63 75 74 65 64 20 28 64  y be executed (d
3ff0: 65 70 65 6e 64 69 6e 67 20 6f 6e 20 74 68 65 20  epending on the 
4000: 57 48 45 4e 20 63 6c 61 75 73 65 29 20 66 6f 72  WHEN clause) for
4010: 20 65 61 63 68 20 64 61 74 61 62 61 73 65 20 72   each database r
4020: 6f 77 20 62 65 69 6e 67 0a 69 6e 73 65 72 74 65  ow being.inserte
4030: 64 2c 20 75 70 64 61 74 65 64 20 6f 72 20 64 65  d, updated or de
4040: 6c 65 74 65 64 20 62 79 20 74 68 65 20 73 74 61  leted by the sta
4050: 74 65 6d 65 6e 74 20 63 61 75 73 69 6e 67 20 74  tement causing t
4060: 68 65 20 74 72 69 67 67 65 72 20 74 6f 20 66 69  he trigger to fi
4070: 72 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 42 6f 74 68  re.</p>..<p>Both
4080: 20 74 68 65 20 57 48 45 4e 20 63 6c 61 75 73 65   the WHEN clause
4090: 20 61 6e 64 20 74 68 65 20 3c 69 3e 74 72 69 67   and the <i>trig
40a0: 67 65 72 2d 73 74 65 70 73 3c 2f 69 3e 20 6d 61  ger-steps</i> ma
40b0: 79 20 61 63 63 65 73 73 20 65 6c 65 6d 65 6e 74  y access element
40c0: 73 20 6f 66 20 0a 74 68 65 20 72 6f 77 20 62 65  s of .the row be
40d0: 69 6e 67 20 69 6e 73 65 72 74 65 64 2c 20 64 65  ing inserted, de
40e0: 6c 65 74 65 64 20 6f 72 20 75 70 64 61 74 65 64  leted or updated
40f0: 20 75 73 69 6e 67 20 72 65 66 65 72 65 6e 63 65   using reference
4100: 73 20 6f 66 20 74 68 65 20 66 6f 72 6d 20 0a 22  s of the form ."
4110: 4e 45 57 2e 3c 69 3e 63 6f 6c 75 6d 6e 2d 6e 61  NEW.<i>column-na
4120: 6d 65 3c 2f 69 3e 22 20 61 6e 64 20 22 4f 4c 44  me</i>" and "OLD
4130: 2e 3c 69 3e 63 6f 6c 75 6d 6e 2d 6e 61 6d 65 3c  .<i>column-name<
4140: 2f 69 3e 22 2c 20 77 68 65 72 65 0a 3c 69 3e 63  /i>", where.<i>c
4150: 6f 6c 75 6d 6e 2d 6e 61 6d 65 3c 2f 69 3e 20 69  olumn-name</i> i
4160: 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 61 20  s the name of a 
4170: 63 6f 6c 75 6d 6e 20 66 72 6f 6d 20 74 68 65 20  column from the 
4180: 74 61 62 6c 65 20 74 68 61 74 20 74 68 65 20 74  table that the t
4190: 72 69 67 67 65 72 0a 69 73 20 61 73 73 6f 63 69  rigger.is associ
41a0: 61 74 65 64 20 77 69 74 68 2e 20 4f 4c 44 20 61  ated with. OLD a
41b0: 6e 64 20 4e 45 57 20 72 65 66 65 72 65 6e 63 65  nd NEW reference
41c0: 73 20 6d 61 79 20 6f 6e 6c 79 20 62 65 20 75 73  s may only be us
41d0: 65 64 20 69 6e 20 74 72 69 67 67 65 72 73 20 6f  ed in triggers o
41e0: 6e 0a 3c 69 3e 74 72 69 67 67 65 72 2d 65 76 65  n.<i>trigger-eve
41f0: 6e 74 3c 2f 69 3e 73 20 66 6f 72 20 77 68 69 63  nt</i>s for whic
4200: 68 20 74 68 65 79 20 61 72 65 20 72 65 6c 65 76  h they are relev
4210: 61 6e 74 2c 20 61 73 20 66 6f 6c 6c 6f 77 73 3a  ant, as follows:
4220: 3c 2f 70 3e 0a 0a 3c 74 61 62 6c 65 20 62 6f 72  </p>..<table bor
4230: 64 65 72 3d 30 20 63 65 6c 6c 70 61 64 64 69 6e  der=0 cellpaddin
4240: 67 3d 31 30 3e 0a 3c 74 72 3e 0a 3c 74 64 20 76  g=10>.<tr>.<td v
4250: 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67  align="top" alig
4260: 6e 3d 22 72 69 67 68 74 22 20 77 69 64 74 68 3d  n="right" width=
4270: 31 32 30 3e 3c 69 3e 49 4e 53 45 52 54 3c 2f 69  120><i>INSERT</i
4280: 3e 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67  ></td>.<td valig
4290: 6e 3d 22 74 6f 70 22 3e 4e 45 57 20 72 65 66 65  n="top">NEW refe
42a0: 72 65 6e 63 65 73 20 61 72 65 20 76 61 6c 69 64  rences are valid
42b0: 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 74 72 3e  </td>.</tr>.<tr>
42c0: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
42d0: 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 20  " align="right" 
42e0: 77 69 64 74 68 3d 31 32 30 3e 3c 69 3e 55 50 44  width=120><i>UPD
42f0: 41 54 45 3c 2f 69 3e 3c 2f 74 64 3e 0a 3c 74 64  ATE</i></td>.<td
4300: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 4e 45   valign="top">NE
4310: 57 20 61 6e 64 20 4f 4c 44 20 72 65 66 65 72 65  W and OLD refere
4320: 6e 63 65 73 20 61 72 65 20 76 61 6c 69 64 3c 2f  nces are valid</
4330: 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 74 72 3e 0a 3c  td>.</tr>.<tr>.<
4340: 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20  td valign="top" 
4350: 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 20 77 69  align="right" wi
4360: 64 74 68 3d 31 32 30 3e 3c 69 3e 44 45 4c 45 54  dth=120><i>DELET
4370: 45 3c 2f 69 3e 3c 2f 74 64 3e 0a 3c 74 64 20 76  E</i></td>.<td v
4380: 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 4f 4c 44 20  align="top">OLD 
4390: 72 65 66 65 72 65 6e 63 65 73 20 61 72 65 20 76  references are v
43a0: 61 6c 69 64 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a  alid</td>.</tr>.
43b0: 3c 2f 74 61 62 6c 65 3e 0a 3c 2f 70 3e 0a 0a 3c  </table>.</p>..<
43c0: 70 3e 49 66 20 61 20 57 48 45 4e 20 63 6c 61 75  p>If a WHEN clau
43d0: 73 65 20 69 73 20 73 75 70 70 6c 69 65 64 2c 20  se is supplied, 
43e0: 74 68 65 20 53 51 4c 20 73 74 61 74 65 6d 65 6e  the SQL statemen
43f0: 74 73 20 73 70 65 63 69 66 69 65 64 20 61 73 20  ts specified as 
4400: 3c 69 3e 74 72 69 67 67 65 72 2d 73 74 65 70 73  <i>trigger-steps
4410: 3c 2f 69 3e 20 61 72 65 20 6f 6e 6c 79 20 65 78  </i> are only ex
4420: 65 63 75 74 65 64 20 66 6f 72 20 72 6f 77 73 20  ecuted for rows 
4430: 66 6f 72 20 77 68 69 63 68 20 74 68 65 20 57 48  for which the WH
4440: 45 4e 20 63 6c 61 75 73 65 20 69 73 20 74 72 75  EN clause is tru
4450: 65 2e 20 49 66 20 6e 6f 20 57 48 45 4e 20 63 6c  e. If no WHEN cl
4460: 61 75 73 65 20 69 73 20 73 75 70 70 6c 69 65 64  ause is supplied
4470: 2c 20 74 68 65 20 53 51 4c 20 73 74 61 74 65 6d  , the SQL statem
4480: 65 6e 74 73 20 61 72 65 20 65 78 65 63 75 74 65  ents are execute
4490: 64 20 66 6f 72 20 61 6c 6c 20 72 6f 77 73 2e 3c  d for all rows.<
44a0: 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 73 70 65 63  /p>..<p>The spec
44b0: 69 66 69 65 64 20 3c 69 3e 74 72 69 67 67 65 72  ified <i>trigger
44c0: 2d 74 69 6d 65 3c 2f 69 3e 20 64 65 74 65 72 6d  -time</i> determ
44d0: 69 6e 65 73 20 77 68 65 6e 20 74 68 65 20 3c 69  ines when the <i
44e0: 3e 74 72 69 67 67 65 72 2d 73 74 65 70 73 3c 2f  >trigger-steps</
44f0: 69 3e 0a 77 69 6c 6c 20 62 65 20 65 78 65 63 75  i>.will be execu
4500: 74 65 64 20 72 65 6c 61 74 69 76 65 20 74 6f 20  ted relative to 
4510: 74 68 65 20 69 6e 73 65 72 74 69 6f 6e 2c 20 6d  the insertion, m
4520: 6f 64 69 66 69 63 61 74 69 6f 6e 20 6f 72 20 72  odification or r
4530: 65 6d 6f 76 61 6c 20 6f 66 20 74 68 65 0a 61 73  emoval of the.as
4540: 73 6f 63 69 61 74 65 64 20 72 6f 77 2e 3c 2f 70  sociated row.</p
4550: 3e 0a 0a 3c 70 3e 41 6e 20 4f 4e 20 43 4f 4e 46  >..<p>An ON CONF
4560: 4c 49 43 54 20 63 6c 61 75 73 65 20 6d 61 79 20  LICT clause may 
4570: 62 65 20 73 70 65 63 69 66 69 65 64 20 61 73 20  be specified as 
4580: 70 61 72 74 20 6f 66 20 61 6e 20 55 50 44 41 54  part of an UPDAT
4590: 45 20 6f 72 20 49 4e 53 45 52 54 0a 3c 69 3e 74  E or INSERT.<i>t
45a0: 72 69 67 67 65 72 2d 73 74 65 70 3c 2f 69 3e 2e  rigger-step</i>.
45b0: 20 48 6f 77 65 76 65 72 20 69 66 20 61 6e 20 4f   However if an O
45c0: 4e 20 43 4f 4e 46 4c 49 43 54 20 63 6c 61 75 73  N CONFLICT claus
45d0: 65 20 69 73 20 73 70 65 63 69 66 69 65 64 20 61  e is specified a
45e0: 73 20 70 61 72 74 20 6f 66 20 0a 74 68 65 20 73  s part of .the s
45f0: 74 61 74 65 6d 65 6e 74 20 63 61 75 73 69 6e 67  tatement causing
4600: 20 74 68 65 20 74 72 69 67 67 65 72 20 74 6f 20   the trigger to 
4610: 66 69 72 65 2c 20 74 68 65 6e 20 74 68 69 73 20  fire, then this 
4620: 63 6f 6e 66 6c 69 63 74 20 68 61 6e 64 6c 69 6e  conflict handlin
4630: 67 0a 70 6f 6c 69 63 79 20 69 73 20 75 73 65 64  g.policy is used
4640: 20 69 6e 73 74 65 61 64 2e 3c 2f 70 3e 0a 0a 3c   instead.</p>..<
4650: 70 3e 54 72 69 67 67 65 72 73 20 61 72 65 20 61  p>Triggers are a
4660: 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 64 72 6f  utomatically dro
4670: 70 70 65 64 20 77 68 65 6e 20 74 68 65 20 74 61  pped when the ta
4680: 62 6c 65 20 74 68 61 74 20 74 68 65 79 20 61 72  ble that they ar
4690: 65 20 0a 61 73 73 6f 63 69 61 74 65 64 20 77 69  e .associated wi
46a0: 74 68 20 69 73 20 64 72 6f 70 70 65 64 2e 3c 2f  th is dropped.</
46b0: 70 3e 0a 0a 3c 70 3e 54 72 69 67 67 65 72 73 20  p>..<p>Triggers 
46c0: 6d 61 79 20 62 65 20 63 72 65 61 74 65 64 20 6f  may be created o
46d0: 6e 20 76 69 65 77 73 2c 20 61 73 20 77 65 6c 6c  n views, as well
46e0: 20 61 73 20 6f 72 64 69 6e 61 72 79 20 74 61 62   as ordinary tab
46f0: 6c 65 73 2c 20 62 79 20 73 70 65 63 69 66 79 69  les, by specifyi
4700: 6e 67 0a 49 4e 53 54 45 41 44 20 4f 46 20 69 6e  ng.INSTEAD OF in
4710: 20 74 68 65 20 43 52 45 41 54 45 20 54 52 49 47   the CREATE TRIG
4720: 47 45 52 20 73 74 61 74 65 6d 65 6e 74 2e 20 49  GER statement. I
4730: 66 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 4f 4e  f one or more ON
4740: 20 49 4e 53 45 52 54 2c 20 4f 4e 20 44 45 4c 45   INSERT, ON DELE
4750: 54 45 0a 6f 72 20 4f 4e 20 55 50 44 41 54 45 20  TE.or ON UPDATE 
4760: 74 72 69 67 67 65 72 73 20 61 72 65 20 64 65 66  triggers are def
4770: 69 6e 65 64 20 6f 6e 20 61 20 76 69 65 77 2c 20  ined on a view, 
4780: 74 68 65 6e 20 69 74 20 69 73 20 6e 6f 74 20 61  then it is not a
4790: 6e 20 65 72 72 6f 72 20 74 6f 20 65 78 65 63 75  n error to execu
47a0: 74 65 0a 61 6e 20 49 4e 53 45 52 54 2c 20 44 45  te.an INSERT, DE
47b0: 4c 45 54 45 20 6f 72 20 55 50 44 41 54 45 20 73  LETE or UPDATE s
47c0: 74 61 74 65 6d 65 6e 74 20 6f 6e 20 74 68 65 20  tatement on the 
47d0: 76 69 65 77 2c 20 72 65 73 70 65 63 74 69 76 65  view, respective
47e0: 6c 79 2e 20 54 68 65 72 65 61 66 74 65 72 2c 0a  ly. Thereafter,.
47f0: 65 78 65 63 75 74 69 6e 67 20 61 6e 20 49 4e 53  executing an INS
4800: 45 52 54 2c 20 44 45 4c 45 54 45 20 6f 72 20 55  ERT, DELETE or U
4810: 50 44 41 54 45 20 6f 6e 20 74 68 65 20 76 69 65  PDATE on the vie
4820: 77 20 63 61 75 73 65 73 20 74 68 65 20 61 73 73  w causes the ass
4830: 6f 63 69 61 74 65 64 0a 20 20 74 72 69 67 67 65  ociated.  trigge
4840: 72 73 20 74 6f 20 66 69 72 65 2e 20 54 68 65 20  rs to fire. The 
4850: 72 65 61 6c 20 74 61 62 6c 65 73 20 75 6e 64 65  real tables unde
4860: 72 6c 79 69 6e 67 20 74 68 65 20 76 69 65 77 20  rlying the view 
4870: 61 72 65 20 6e 6f 74 20 6d 6f 64 69 66 69 65 64  are not modified
4880: 0a 20 20 28 65 78 63 65 70 74 20 70 6f 73 73 69  .  (except possi
4890: 62 6c 79 20 65 78 70 6c 69 63 69 74 6c 79 2c 20  bly explicitly, 
48a0: 62 79 20 61 20 74 72 69 67 67 65 72 20 70 72 6f  by a trigger pro
48b0: 67 72 61 6d 29 2e 3c 2f 70 3e 0a 0a 3c 70 3e 3c  gram).</p>..<p><
48c0: 62 3e 45 78 61 6d 70 6c 65 3a 3c 2f 62 3e 3c 2f  b>Example:</b></
48d0: 70 3e 0a 0a 3c 70 3e 41 73 73 75 6d 69 6e 67 20  p>..<p>Assuming 
48e0: 74 68 61 74 20 63 75 73 74 6f 6d 65 72 20 72 65  that customer re
48f0: 63 6f 72 64 73 20 61 72 65 20 73 74 6f 72 65 64  cords are stored
4900: 20 69 6e 20 74 68 65 20 22 63 75 73 74 6f 6d 65   in the "custome
4910: 72 73 22 20 74 61 62 6c 65 2c 20 61 6e 64 0a 74  rs" table, and.t
4920: 68 61 74 20 6f 72 64 65 72 20 72 65 63 6f 72 64  hat order record
4930: 73 20 61 72 65 20 73 74 6f 72 65 64 20 69 6e 20  s are stored in 
4940: 74 68 65 20 22 6f 72 64 65 72 73 22 20 74 61 62  the "orders" tab
4950: 6c 65 2c 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e  le, the followin
4960: 67 20 74 72 69 67 67 65 72 0a 65 6e 73 75 72 65  g trigger.ensure
4970: 73 20 74 68 61 74 20 61 6c 6c 20 61 73 73 6f 63  s that all assoc
4980: 69 61 74 65 64 20 6f 72 64 65 72 73 20 61 72 65  iated orders are
4990: 20 72 65 64 69 72 65 63 74 65 64 20 77 68 65 6e   redirected when
49a0: 20 61 20 63 75 73 74 6f 6d 65 72 20 63 68 61 6e   a customer chan
49b0: 67 65 73 0a 68 69 73 20 6f 72 20 68 65 72 20 61  ges.his or her a
49c0: 64 64 72 65 73 73 3a 3c 2f 70 3e 0a 7d 0a 45 78  ddress:</p>.}.Ex
49d0: 61 6d 70 6c 65 20 7b 0a 43 52 45 41 54 45 20 54  ample {.CREATE T
49e0: 52 49 47 47 45 52 20 75 70 64 61 74 65 5f 63 75  RIGGER update_cu
49f0: 73 74 6f 6d 65 72 5f 61 64 64 72 65 73 73 20 55  stomer_address U
4a00: 50 44 41 54 45 20 4f 46 20 61 64 64 72 65 73 73  PDATE OF address
4a10: 20 4f 4e 20 63 75 73 74 6f 6d 65 72 73 20 0a 20   ON customers . 
4a20: 20 42 45 47 49 4e 0a 20 20 20 20 55 50 44 41 54   BEGIN.    UPDAT
4a30: 45 20 6f 72 64 65 72 73 20 53 45 54 20 61 64 64  E orders SET add
4a40: 72 65 73 73 20 3d 20 6e 65 77 2e 61 64 64 72 65  ress = new.addre
4a50: 73 73 20 57 48 45 52 45 20 63 75 73 74 6f 6d 65  ss WHERE custome
4a60: 72 5f 6e 61 6d 65 20 3d 20 6f 6c 64 2e 6e 61 6d  r_name = old.nam
4a70: 65 3b 0a 20 20 45 4e 44 3b 0a 7d 0a 70 75 74 73  e;.  END;.}.puts
4a80: 20 7b 0a 3c 70 3e 57 69 74 68 20 74 68 69 73 20   {.<p>With this 
4a90: 74 72 69 67 67 65 72 20 69 6e 73 74 61 6c 6c 65  trigger installe
4aa0: 64 2c 20 65 78 65 63 75 74 69 6e 67 20 74 68 65  d, executing the
4ab0: 20 73 74 61 74 65 6d 65 6e 74 3a 3c 2f 70 3e 0a   statement:</p>.
4ac0: 7d 0a 0a 45 78 61 6d 70 6c 65 20 7b 0a 55 50 44  }..Example {.UPD
4ad0: 41 54 45 20 63 75 73 74 6f 6d 65 72 73 20 53 45  ATE customers SE
4ae0: 54 20 61 64 64 72 65 73 73 20 3d 20 27 31 20 4d  T address = '1 M
4af0: 61 69 6e 20 53 74 2e 27 20 57 48 45 52 45 20 6e  ain St.' WHERE n
4b00: 61 6d 65 20 3d 20 27 4a 61 63 6b 20 4a 6f 6e 65  ame = 'Jack Jone
4b10: 73 27 3b 0a 7d 0a 70 75 74 73 20 7b 0a 3c 70 3e  s';.}.puts {.<p>
4b20: 63 61 75 73 65 73 20 74 68 65 20 66 6f 6c 6c 6f  causes the follo
4b30: 77 69 6e 67 20 74 6f 20 62 65 20 61 75 74 6f 6d  wing to be autom
4b40: 61 74 69 63 61 6c 6c 79 20 65 78 65 63 75 74 65  atically execute
4b50: 64 3a 3c 2f 70 3e 0a 7d 0a 45 78 61 6d 70 6c 65  d:</p>.}.Example
4b60: 20 7b 0a 55 50 44 41 54 45 20 6f 72 64 65 72 73   {.UPDATE orders
4b70: 20 53 45 54 20 61 64 64 72 65 73 73 20 3d 20 27   SET address = '
4b80: 31 20 4d 61 69 6e 20 53 74 2e 27 20 57 48 45 52  1 Main St.' WHER
4b90: 45 20 63 75 73 74 6f 6d 65 72 5f 6e 61 6d 65 20  E customer_name 
4ba0: 3d 20 27 4a 61 63 6b 20 4a 6f 6e 65 73 27 3b 0a  = 'Jack Jones';.
4bb0: 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 4e 6f 74  }..puts {.<p>Not
4bc0: 65 20 74 68 61 74 20 63 75 72 72 65 6e 74 6c 79  e that currently
4bd0: 2c 20 74 72 69 67 67 65 72 73 20 6d 61 79 20 62  , triggers may b
4be0: 65 68 61 76 65 20 6f 64 64 6c 79 20 77 68 65 6e  ehave oddly when
4bf0: 20 63 72 65 61 74 65 64 20 6f 6e 20 74 61 62 6c   created on tabl
4c00: 65 73 0a 20 20 77 69 74 68 20 49 4e 54 45 47 45  es.  with INTEGE
4c10: 52 20 50 52 49 4d 41 52 59 20 4b 45 59 20 66 69  R PRIMARY KEY fi
4c20: 65 6c 64 73 2e 20 49 66 20 61 20 42 45 46 4f 52  elds. If a BEFOR
4c30: 45 20 74 72 69 67 67 65 72 20 70 72 6f 67 72 61  E trigger progra
4c40: 6d 20 6d 6f 64 69 66 69 65 73 20 74 68 65 20 0a  m modifies the .
4c50: 20 20 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52    INTEGER PRIMAR
4c60: 59 20 4b 45 59 20 66 69 65 6c 64 20 6f 66 20 61  Y KEY field of a
4c70: 20 72 6f 77 20 74 68 61 74 20 77 69 6c 6c 20 62   row that will b
4c80: 65 20 73 75 62 73 65 71 75 65 6e 74 6c 79 20 75  e subsequently u
4c90: 70 64 61 74 65 64 20 62 79 20 74 68 65 0a 20 20  pdated by the.  
4ca0: 73 74 61 74 65 6d 65 6e 74 20 74 68 61 74 20 63  statement that c
4cb0: 61 75 73 65 73 20 74 68 65 20 74 72 69 67 67 65  auses the trigge
4cc0: 72 20 74 6f 20 66 69 72 65 2c 20 74 68 65 6e 20  r to fire, then 
4cd0: 74 68 65 20 75 70 64 61 74 65 20 6d 61 79 20 6e  the update may n
4ce0: 6f 74 20 6f 63 63 75 72 2e 20 0a 20 20 54 68 65  ot occur. .  The
4cf0: 20 77 6f 72 6b 61 72 6f 75 6e 64 20 69 73 20 74   workaround is t
4d00: 6f 20 64 65 63 6c 61 72 65 20 74 68 65 20 74 61  o declare the ta
4d10: 62 6c 65 20 77 69 74 68 20 61 20 50 52 49 4d 41  ble with a PRIMA
4d20: 52 59 20 4b 45 59 20 63 6f 6c 75 6d 6e 20 69 6e  RY KEY column in
4d30: 73 74 65 61 64 0a 20 20 6f 66 20 61 6e 20 49 4e  stead.  of an IN
4d40: 54 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45  TEGER PRIMARY KE
4d50: 59 20 63 6f 6c 75 6d 6e 2e 3c 2f 70 3e 0a 7d 0a  Y column.</p>.}.
4d60: 0a 70 75 74 73 20 7b 0a 3c 70 3e 41 20 73 70 65  .puts {.<p>A spe
4d70: 63 69 61 6c 20 53 51 4c 20 66 75 6e 63 74 69 6f  cial SQL functio
4d80: 6e 20 52 41 49 53 45 28 29 20 6d 61 79 20 62 65  n RAISE() may be
4d90: 20 75 73 65 64 20 77 69 74 68 69 6e 20 61 20 74   used within a t
4da0: 72 69 67 67 65 72 2d 70 72 6f 67 72 61 6d 2c 20  rigger-program, 
4db0: 77 69 74 68 20 74 68 65 20 66 6f 6c 6c 6f 77 69  with the followi
4dc0: 6e 67 20 73 79 6e 74 61 78 3c 2f 70 3e 20 0a 7d  ng syntax</p> .}
4dd0: 0a 53 79 6e 74 61 78 20 7b 72 61 69 73 65 2d 66  .Syntax {raise-f
4de0: 75 6e 63 74 69 6f 6e 7d 20 7b 0a 52 41 49 53 45  unction} {.RAISE
4df0: 20 28 20 41 42 4f 52 54 2c 20 3c 65 72 72 6f 72   ( ABORT, <error
4e00: 2d 6d 65 73 73 61 67 65 3e 20 29 20 7c 20 0a 52  -message> ) | .R
4e10: 41 49 53 45 20 28 20 46 41 49 4c 2c 20 3c 65 72  AISE ( FAIL, <er
4e20: 72 6f 72 2d 6d 65 73 73 61 67 65 3e 20 29 20 7c  ror-message> ) |
4e30: 20 0a 52 41 49 53 45 20 28 20 52 4f 4c 4c 42 41   .RAISE ( ROLLBA
4e40: 43 4b 2c 20 3c 65 72 72 6f 72 2d 6d 65 73 73 61  CK, <error-messa
4e50: 67 65 3e 20 29 20 7c 20 0a 52 41 49 53 45 20 28  ge> ) | .RAISE (
4e60: 20 49 47 4e 4f 52 45 20 29 0a 7d 0a 70 75 74 73   IGNORE ).}.puts
4e70: 20 7b 0a 3c 70 3e 57 68 65 6e 20 6f 6e 65 20 6f   {.<p>When one o
4e80: 66 20 74 68 65 20 66 69 72 73 74 20 74 68 72 65  f the first thre
4e90: 65 20 66 6f 72 6d 73 20 69 73 20 63 61 6c 6c 65  e forms is calle
4ea0: 64 20 64 75 72 69 6e 67 20 74 72 69 67 67 65 72  d during trigger
4eb0: 2d 70 72 6f 67 72 61 6d 20 65 78 65 63 75 74 69  -program executi
4ec0: 6f 6e 2c 20 74 68 65 20 73 70 65 63 69 66 69 65  on, the specifie
4ed0: 64 20 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 70 72  d ON CONFLICT pr
4ee0: 6f 63 65 73 73 69 6e 67 20 69 73 20 70 65 72 66  ocessing is perf
4ef0: 6f 72 6d 65 64 20 28 65 69 74 68 65 72 20 41 42  ormed (either AB
4f00: 4f 52 54 2c 20 46 41 49 4c 20 6f 72 20 0a 20 52  ORT, FAIL or . R
4f10: 4f 4c 4c 42 41 43 4b 29 20 61 6e 64 20 74 68 65  OLLBACK) and the
4f20: 20 63 75 72 72 65 6e 74 20 71 75 65 72 79 20 74   current query t
4f30: 65 72 6d 69 6e 61 74 65 73 2e 20 41 6e 20 65 72  erminates. An er
4f40: 72 6f 72 20 63 6f 64 65 20 6f 66 20 53 51 4c 49  ror code of SQLI
4f50: 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 20 69 73  TE_CONSTRAINT is
4f60: 20 72 65 74 75 72 6e 65 64 20 74 6f 20 74 68 65   returned to the
4f70: 20 75 73 65 72 2c 20 61 6c 6f 6e 67 20 77 69 74   user, along wit
4f80: 68 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  h the specified 
4f90: 65 72 72 6f 72 20 6d 65 73 73 61 67 65 2e 3c 2f  error message.</
4fa0: 70 3e 0a 0a 3c 70 3e 57 68 65 6e 20 52 41 49 53  p>..<p>When RAIS
4fb0: 45 28 49 47 4e 4f 52 45 29 20 69 73 20 63 61 6c  E(IGNORE) is cal
4fc0: 6c 65 64 2c 20 74 68 65 20 72 65 6d 61 69 6e 64  led, the remaind
4fd0: 65 72 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e  er of the curren
4fe0: 74 20 74 72 69 67 67 65 72 20 70 72 6f 67 72 61  t trigger progra
4ff0: 6d 2c 0a 74 68 65 20 73 74 61 74 65 6d 65 6e 74  m,.the statement
5000: 20 74 68 61 74 20 63 61 75 73 65 64 20 74 68 65   that caused the
5010: 20 74 72 69 67 67 65 72 20 70 72 6f 67 72 61 6d   trigger program
5020: 20 74 6f 20 65 78 65 63 75 74 65 20 61 6e 64 20   to execute and 
5030: 61 6e 79 20 73 75 62 73 65 71 75 65 6e 74 0a 20  any subsequent. 
5040: 20 20 20 74 72 69 67 67 65 72 20 70 72 6f 67 72     trigger progr
5050: 61 6d 73 20 74 68 61 74 20 77 6f 75 6c 64 20 6f  ams that would o
5060: 66 20 62 65 65 6e 20 65 78 65 63 75 74 65 64 20  f been executed 
5070: 61 72 65 20 61 62 61 6e 64 6f 6e 65 64 2e 20 4e  are abandoned. N
5080: 6f 20 64 61 74 61 62 61 73 65 0a 20 20 20 20 63  o database.    c
5090: 68 61 6e 67 65 73 20 61 72 65 20 72 6f 6c 6c 65  hanges are rolle
50a0: 64 20 62 61 63 6b 2e 20 20 49 66 20 74 68 65 20  d back.  If the 
50b0: 73 74 61 74 65 6d 65 6e 74 20 74 68 61 74 20 63  statement that c
50c0: 61 75 73 65 64 20 74 68 65 20 74 72 69 67 67 65  aused the trigge
50d0: 72 20 70 72 6f 67 72 61 6d 0a 20 20 20 20 74 6f  r program.    to
50e0: 20 65 78 65 63 75 74 65 20 69 73 20 69 74 73 65   execute is itse
50f0: 6c 66 20 70 61 72 74 20 6f 66 20 61 20 74 72 69  lf part of a tri
5100: 67 67 65 72 20 70 72 6f 67 72 61 6d 2c 20 74 68  gger program, th
5110: 65 6e 20 74 68 61 74 20 74 72 69 67 67 65 72 20  en that trigger 
5120: 70 72 6f 67 72 61 6d 0a 20 20 20 20 72 65 73 75  program.    resu
5130: 6d 65 73 20 65 78 65 63 75 74 69 6f 6e 20 61 74  mes execution at
5140: 20 74 68 65 20 62 65 67 69 6e 6e 69 6e 67 20 6f   the beginning o
5150: 66 20 74 68 65 20 6e 65 78 74 20 73 74 65 70 2e  f the next step.
5160: 0a 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f  .</p>.}...Sectio
5170: 6e 20 7b 43 52 45 41 54 45 20 56 49 45 57 7d 20  n {CREATE VIEW} 
5180: 7b 63 72 65 61 74 65 76 69 65 77 7d 0a 0a 53 79  {createview}..Sy
5190: 6e 74 61 78 20 7b 73 71 6c 2d 63 6f 6d 6d 61 6e  ntax {sql-comman
51a0: 64 7d 20 7b 0a 43 52 45 41 54 45 20 5b 54 45 4d  d} {.CREATE [TEM
51b0: 50 20 7c 20 54 45 4d 50 4f 52 41 52 59 5d 20 56  P | TEMPORARY] V
51c0: 49 45 57 20 3c 76 69 65 77 2d 6e 61 6d 65 3e 20  IEW <view-name> 
51d0: 41 53 20 3c 73 65 6c 65 63 74 2d 73 74 61 74 65  AS <select-state
51e0: 6d 65 6e 74 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a  ment>.}..puts {.
51f0: 3c 70 3e 54 68 65 20 43 52 45 41 54 45 20 56 49  <p>The CREATE VI
5200: 45 57 20 63 6f 6d 6d 61 6e 64 20 61 73 73 69 67  EW command assig
5210: 6e 73 20 61 20 6e 61 6d 65 20 74 6f 20 61 20 70  ns a name to a p
5220: 72 65 2d 70 61 63 6b 61 67 65 64 20 53 45 4c 45  re-packaged SELE
5230: 43 54 0a 73 74 61 74 65 6d 65 6e 74 2e 20 20 4f  CT.statement.  O
5240: 6e 63 65 20 74 68 65 20 76 69 65 77 20 69 73 20  nce the view is 
5250: 63 72 65 61 74 65 64 2c 20 69 74 20 63 61 6e 20  created, it can 
5260: 62 65 20 75 73 65 64 20 69 6e 20 74 68 65 20 46  be used in the F
5270: 52 4f 4d 20 63 6c 61 75 73 65 0a 6f 66 20 61 6e  ROM clause.of an
5280: 6f 74 68 65 72 20 53 45 4c 45 43 54 20 69 6e 20  other SELECT in 
5290: 70 6c 61 63 65 20 6f 66 20 61 20 74 61 62 6c 65  place of a table
52a0: 20 6e 61 6d 65 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e   name..</p>..<p>
52b0: 59 6f 75 20 63 61 6e 6e 6f 74 20 43 4f 50 59 2c  You cannot COPY,
52c0: 20 49 4e 53 45 52 54 20 6f 72 20 55 50 44 41 54   INSERT or UPDAT
52d0: 45 20 61 20 76 69 65 77 2e 20 20 56 69 65 77 73  E a view.  Views
52e0: 20 61 72 65 20 72 65 61 64 2d 6f 6e 6c 79 2e 3c   are read-only.<
52f0: 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20  /p>.}...Section 
5300: 44 45 4c 45 54 45 20 64 65 6c 65 74 65 0a 0a 53  DELETE delete..S
5310: 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65  yntax {sql-state
5320: 6d 65 6e 74 7d 20 7b 0a 44 45 4c 45 54 45 20 46  ment} {.DELETE F
5330: 52 4f 4d 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e  ROM <table-name>
5340: 20 5b 57 48 45 52 45 20 3c 65 78 70 72 3e 5d 0a   [WHERE <expr>].
5350: 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65  }..puts {.<p>The
5360: 20 44 45 4c 45 54 45 20 63 6f 6d 6d 61 6e 64 20   DELETE command 
5370: 69 73 20 75 73 65 64 20 74 6f 20 72 65 6d 6f 76  is used to remov
5380: 65 20 72 65 63 6f 72 64 73 20 66 72 6f 6d 20 61  e records from a
5390: 20 74 61 62 6c 65 2e 0a 54 68 65 20 63 6f 6d 6d   table..The comm
53a0: 61 6e 64 20 63 6f 6e 73 69 73 74 73 20 6f 66 20  and consists of 
53b0: 74 68 65 20 22 44 45 4c 45 54 45 20 46 52 4f 4d  the "DELETE FROM
53c0: 22 20 6b 65 79 77 6f 72 64 73 20 66 6f 6c 6c 6f  " keywords follo
53d0: 77 65 64 20 62 79 0a 74 68 65 20 6e 61 6d 65 20  wed by.the name 
53e0: 6f 66 20 74 68 65 20 74 61 62 6c 65 20 66 72 6f  of the table fro
53f0: 6d 20 77 68 69 63 68 20 72 65 63 6f 72 64 73 20  m which records 
5400: 61 72 65 20 74 6f 20 62 65 20 72 65 6d 6f 76 65  are to be remove
5410: 64 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 57 69 74 68  d..</p>..<p>With
5420: 6f 75 74 20 61 20 57 48 45 52 45 20 63 6c 61 75  out a WHERE clau
5430: 73 65 2c 20 61 6c 6c 20 72 6f 77 73 20 6f 66 20  se, all rows of 
5440: 74 68 65 20 74 61 62 6c 65 20 61 72 65 20 72 65  the table are re
5450: 6d 6f 76 65 64 2e 0a 49 66 20 61 20 57 48 45 52  moved..If a WHER
5460: 45 20 63 6c 61 75 73 65 20 69 73 20 73 75 70 70  E clause is supp
5470: 6c 69 65 64 2c 20 74 68 65 6e 20 6f 6e 6c 79 20  lied, then only 
5480: 74 68 6f 73 65 20 72 6f 77 73 20 74 68 61 74 20  those rows that 
5490: 6d 61 74 63 68 0a 74 68 65 20 65 78 70 72 65 73  match.the expres
54a0: 73 69 6f 6e 20 61 72 65 20 72 65 6d 6f 76 65 64  sion are removed
54b0: 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f  .</p>.}...Sectio
54c0: 6e 20 7b 44 45 54 41 43 48 20 44 41 54 41 42 41  n {DETACH DATABA
54d0: 53 45 7d 20 64 65 74 61 63 68 64 61 74 61 62 61  SE} detachdataba
54e0: 73 65 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d  se..Syntax {sql-
54f0: 63 6f 6d 6d 61 6e 64 7d 20 7b 0a 44 45 54 41 43  command} {.DETAC
5500: 48 20 5b 44 41 54 41 42 41 53 45 5d 20 3c 64 61  H [DATABASE] <da
5510: 74 61 62 61 73 65 2d 6e 61 6d 65 3e 0a 7d 0a 0a  tabase-name>.}..
5520: 70 75 74 73 20 7b 0a 3c 70 3e 54 68 69 73 20 73  puts {.<p>This s
5530: 74 61 74 65 6d 65 6e 74 20 64 65 74 61 63 68 65  tatement detache
5540: 73 20 61 6e 20 61 64 64 69 74 69 6f 6e 61 6c 20  s an additional 
5550: 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 70 72  database file pr
5560: 65 76 69 6f 69 75 73 6c 79 20 61 74 74 61 63 68  evioiusly attach
5570: 65 64 0a 75 73 69 6e 67 20 74 68 65 20 41 54 54  ed.using the ATT
5580: 41 43 48 20 44 41 54 41 42 41 53 45 20 73 74 61  ACH DATABASE sta
5590: 74 65 6d 65 6e 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e  tement.</p>..<p>
55a0: 54 68 69 73 20 73 74 61 74 65 6d 65 6e 74 20 77  This statement w
55b0: 69 6c 6c 20 66 61 69 6c 20 69 66 20 53 51 4c 69  ill fail if SQLi
55c0: 74 65 20 69 73 20 69 6e 20 74 68 65 20 6d 69 64  te is in the mid
55d0: 64 6c 65 20 6f 66 20 61 20 74 72 61 6e 73 61 63  dle of a transac
55e0: 74 69 6f 6e 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65  tion.</p>.}...Se
55f0: 63 74 69 6f 6e 20 7b 44 52 4f 50 20 49 4e 44 45  ction {DROP INDE
5600: 58 7d 20 64 72 6f 70 69 6e 64 65 78 0a 0a 53 79  X} dropindex..Sy
5610: 6e 74 61 78 20 7b 73 71 6c 2d 63 6f 6d 6d 61 6e  ntax {sql-comman
5620: 64 7d 20 7b 0a 44 52 4f 50 20 49 4e 44 45 58 20  d} {.DROP INDEX 
5630: 3c 69 6e 64 65 78 2d 6e 61 6d 65 3e 0a 7d 0a 0a  <index-name>.}..
5640: 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20 44 52  puts {.<p>The DR
5650: 4f 50 20 49 4e 44 45 58 20 73 74 61 74 65 6d 65  OP INDEX stateme
5660: 6e 74 20 63 6f 6e 73 69 73 74 73 20 6f 66 20 74  nt consists of t
5670: 68 65 20 6b 65 79 77 6f 72 64 73 20 22 44 52 4f  he keywords "DRO
5680: 50 20 49 4e 44 45 58 22 20 66 6f 6c 6c 6f 77 65  P INDEX" followe
5690: 64 0a 62 79 20 74 68 65 20 6e 61 6d 65 20 6f 66  d.by the name of
56a0: 20 74 68 65 20 69 6e 64 65 78 2e 20 20 54 68 65   the index.  The
56b0: 20 69 6e 64 65 78 20 6e 61 6d 65 64 20 69 73 20   index named is 
56c0: 63 6f 6d 70 6c 65 74 65 6c 79 20 72 65 6d 6f 76  completely remov
56d0: 65 64 20 66 72 6f 6d 0a 74 68 65 20 64 69 73 6b  ed from.the disk
56e0: 2e 20 20 54 68 65 20 6f 6e 6c 79 20 77 61 79 20  .  The only way 
56f0: 74 6f 20 72 65 63 6f 76 65 72 20 74 68 65 20 69  to recover the i
5700: 6e 64 65 78 20 69 73 20 74 6f 20 72 65 65 6e 74  ndex is to reent
5710: 65 72 20 74 68 65 0a 61 70 70 72 6f 70 72 69 61  er the.appropria
5720: 74 65 20 43 52 45 41 54 45 20 49 4e 44 45 58 20  te CREATE INDEX 
5730: 63 6f 6d 6d 61 6e 64 2e 3c 2f 70 3e 0a 7d 0a 0a  command.</p>.}..
5740: 0a 53 65 63 74 69 6f 6e 20 7b 44 52 4f 50 20 54  .Section {DROP T
5750: 41 42 4c 45 7d 20 64 72 6f 70 74 61 62 6c 65 0a  ABLE} droptable.
5760: 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 63 6f 6d  .Syntax {sql-com
5770: 6d 61 6e 64 7d 20 7b 0a 44 52 4f 50 20 54 41 42  mand} {.DROP TAB
5780: 4c 45 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 0a  LE <table-name>.
5790: 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65  }..puts {.<p>The
57a0: 20 44 52 4f 50 20 54 41 42 4c 45 20 73 74 61 74   DROP TABLE stat
57b0: 65 6d 65 6e 74 20 63 6f 6e 73 69 73 74 73 20 6f  ement consists o
57c0: 66 20 74 68 65 20 6b 65 79 77 6f 72 64 73 20 22  f the keywords "
57d0: 44 52 4f 50 20 54 41 42 4c 45 22 20 66 6f 6c 6c  DROP TABLE" foll
57e0: 6f 77 65 64 0a 62 79 20 74 68 65 20 6e 61 6d 65  owed.by the name
57f0: 20 6f 66 20 74 68 65 20 74 61 62 6c 65 2e 20 20   of the table.  
5800: 54 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 64 20  The table named 
5810: 69 73 20 63 6f 6d 70 6c 65 74 65 6c 79 20 72 65  is completely re
5820: 6d 6f 76 65 64 20 66 72 6f 6d 0a 74 68 65 20 64  moved from.the d
5830: 69 73 6b 2e 20 20 54 68 65 20 74 61 62 6c 65 20  isk.  The table 
5840: 63 61 6e 20 6e 6f 74 20 62 65 20 72 65 63 6f 76  can not be recov
5850: 65 72 65 64 2e 20 20 41 6c 6c 20 69 6e 64 69 63  ered.  All indic
5860: 65 73 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  es associated wi
5870: 74 68 0a 74 68 65 20 74 61 62 6c 65 20 61 72 65  th.the table are
5880: 20 61 6c 73 6f 20 64 65 6c 65 74 65 64 2e 3c 2f   also deleted.</
5890: 70 3e 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20 7b 44  p>}...Section {D
58a0: 52 4f 50 20 54 52 49 47 47 45 52 7d 20 64 72 6f  ROP TRIGGER} dro
58b0: 70 74 72 69 67 67 65 72 0a 53 79 6e 74 61 78 20  ptrigger.Syntax 
58c0: 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20  {sql-statement} 
58d0: 7b 0a 44 52 4f 50 20 54 52 49 47 47 45 52 20 3c  {.DROP TRIGGER <
58e0: 74 72 69 67 67 65 72 2d 6e 61 6d 65 3e 0a 7d 0a  trigger-name>.}.
58f0: 70 75 74 73 20 7b 20 0a 20 20 3c 70 3e 55 73 65  puts { .  <p>Use
5900: 64 20 74 6f 20 64 72 6f 70 20 61 20 74 72 69 67  d to drop a trig
5910: 67 65 72 20 66 72 6f 6d 20 74 68 65 20 64 61 74  ger from the dat
5920: 61 62 61 73 65 20 73 63 68 65 6d 61 2e 20 4e 6f  abase schema. No
5930: 74 65 20 74 68 61 74 20 74 72 69 67 67 65 72 73  te that triggers
5940: 0a 20 20 61 72 65 20 61 75 74 6f 6d 61 74 69 63  .  are automatic
5950: 61 6c 6c 79 20 64 72 6f 70 70 65 64 20 77 68 65  ally dropped whe
5960: 6e 20 74 68 65 20 61 73 73 6f 63 69 61 74 65 64  n the associated
5970: 20 74 61 62 6c 65 20 69 73 20 64 72 6f 70 70 65   table is droppe
5980: 64 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69  d.</p>.}...Secti
5990: 6f 6e 20 7b 44 52 4f 50 20 56 49 45 57 7d 20 64  on {DROP VIEW} d
59a0: 72 6f 70 76 69 65 77 0a 0a 53 79 6e 74 61 78 20  ropview..Syntax 
59b0: 7b 73 71 6c 2d 63 6f 6d 6d 61 6e 64 7d 20 7b 0a  {sql-command} {.
59c0: 44 52 4f 50 20 56 49 45 57 20 3c 76 69 65 77 2d  DROP VIEW <view-
59d0: 6e 61 6d 65 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a  name>.}..puts {.
59e0: 3c 70 3e 54 68 65 20 44 52 4f 50 20 56 49 45 57  <p>The DROP VIEW
59f0: 20 73 74 61 74 65 6d 65 6e 74 20 63 6f 6e 73 69   statement consi
5a00: 73 74 73 20 6f 66 20 74 68 65 20 6b 65 79 77 6f  sts of the keywo
5a10: 72 64 73 20 22 44 52 4f 50 20 56 49 45 57 22 20  rds "DROP VIEW" 
5a20: 66 6f 6c 6c 6f 77 65 64 0a 62 79 20 74 68 65 20  followed.by the 
5a30: 6e 61 6d 65 20 6f 66 20 74 68 65 20 76 69 65 77  name of the view
5a40: 2e 20 20 54 68 65 20 76 69 65 77 20 6e 61 6d 65  .  The view name
5a50: 64 20 69 73 20 72 65 6d 6f 76 65 64 20 66 72 6f  d is removed fro
5a60: 6d 20 74 68 65 20 64 61 74 61 62 61 73 65 2e 0a  m the database..
5a70: 42 75 74 20 6e 6f 20 61 63 74 75 61 6c 20 64 61  But no actual da
5a80: 74 61 20 69 73 20 6d 6f 64 69 66 69 65 64 2e 3c  ta is modified.<
5a90: 2f 70 3e 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20 45  /p>}...Section E
5aa0: 58 50 4c 41 49 4e 20 65 78 70 6c 61 69 6e 0a 0a  XPLAIN explain..
5ab0: 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74  Syntax {sql-stat
5ac0: 65 6d 65 6e 74 7d 20 7b 0a 45 58 50 4c 41 49 4e  ement} {.EXPLAIN
5ad0: 20 3c 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74 3e   <sql-statement>
5ae0: 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68  .}..puts {.<p>Th
5af0: 65 20 45 58 50 4c 41 49 4e 20 63 6f 6d 6d 61 6e  e EXPLAIN comman
5b00: 64 20 6d 6f 64 69 66 69 65 72 20 69 73 20 61 20  d modifier is a 
5b10: 6e 6f 6e 2d 73 74 61 6e 64 61 72 64 20 65 78 74  non-standard ext
5b20: 65 6e 73 69 6f 6e 2e 20 20 54 68 65 0a 69 64 65  ension.  The.ide
5b30: 61 20 63 6f 6d 65 73 20 66 72 6f 6d 20 61 20 73  a comes from a s
5b40: 69 6d 69 6c 61 72 20 63 6f 6d 6d 61 6e 64 20 66  imilar command f
5b50: 6f 75 6e 64 20 69 6e 20 50 6f 73 74 67 72 65 53  ound in PostgreS
5b60: 51 4c 2c 20 62 75 74 20 74 68 65 20 6f 70 65 72  QL, but the oper
5b70: 61 74 69 6f 6e 0a 69 73 20 63 6f 6d 70 6c 65 74  ation.is complet
5b80: 65 6c 79 20 64 69 66 66 65 72 65 6e 74 2e 3c 2f  ely different.</
5b90: 70 3e 0a 0a 3c 70 3e 49 66 20 74 68 65 20 45 58  p>..<p>If the EX
5ba0: 50 4c 41 49 4e 20 6b 65 79 77 6f 72 64 20 61 70  PLAIN keyword ap
5bb0: 70 65 61 72 73 20 62 65 66 6f 72 65 20 61 6e 79  pears before any
5bc0: 20 6f 74 68 65 72 20 53 51 4c 69 74 65 20 53 51   other SQLite SQ
5bd0: 4c 20 63 6f 6d 6d 61 6e 64 0a 74 68 65 6e 20 69  L command.then i
5be0: 6e 73 74 65 61 64 20 6f 66 20 61 63 74 75 61 6c  nstead of actual
5bf0: 6c 79 20 65 78 65 63 75 74 69 6e 67 20 74 68 65  ly executing the
5c00: 20 63 6f 6d 6d 61 6e 64 2c 20 74 68 65 20 53 51   command, the SQ
5c10: 4c 69 74 65 20 6c 69 62 72 61 72 79 20 77 69 6c  Lite library wil
5c20: 6c 0a 72 65 70 6f 72 74 20 62 61 63 6b 20 74 68  l.report back th
5c30: 65 20 73 65 71 75 65 6e 63 65 20 6f 66 20 76 69  e sequence of vi
5c40: 72 74 75 61 6c 20 6d 61 63 68 69 6e 65 20 69 6e  rtual machine in
5c50: 73 74 72 75 63 74 69 6f 6e 73 20 69 74 20 77 6f  structions it wo
5c60: 75 6c 64 20 68 61 76 65 0a 75 73 65 64 20 74 6f  uld have.used to
5c70: 20 65 78 65 63 75 74 65 20 74 68 65 20 63 6f 6d   execute the com
5c80: 6d 61 6e 64 20 68 61 64 20 74 68 65 20 45 58 50  mand had the EXP
5c90: 4c 41 49 4e 20 6b 65 79 77 6f 72 64 20 6e 6f 74  LAIN keyword not
5ca0: 20 62 65 65 6e 20 70 72 65 73 65 6e 74 2e 0a 46   been present..F
5cb0: 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e  or additional in
5cc0: 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20  formation about 
5cd0: 76 69 72 74 75 61 6c 20 6d 61 63 68 69 6e 65 20  virtual machine 
5ce0: 69 6e 73 74 72 75 63 74 69 6f 6e 73 20 73 65 65  instructions see
5cf0: 0a 74 68 65 20 3c 61 20 68 72 65 66 3d 22 61 72  .the <a href="ar
5d00: 63 68 2e 68 74 6d 6c 22 3e 61 72 63 68 69 74 65  ch.html">archite
5d10: 63 74 75 72 65 20 64 65 73 63 72 69 70 74 69 6f  cture descriptio
5d20: 6e 3c 2f 61 3e 20 6f 72 20 74 68 65 20 64 6f 63  n</a> or the doc
5d30: 75 6d 65 6e 74 61 74 69 6f 6e 0a 6f 6e 20 3c 61  umentation.on <a
5d40: 20 68 72 65 66 3d 22 6f 70 63 6f 64 65 2e 68 74   href="opcode.ht
5d50: 6d 6c 22 3e 61 76 61 69 6c 61 62 6c 65 20 6f 70  ml">available op
5d60: 63 6f 64 65 73 3c 2f 61 3e 20 66 6f 72 20 74 68  codes</a> for th
5d70: 65 20 76 69 72 74 75 61 6c 20 6d 61 63 68 69 6e  e virtual machin
5d80: 65 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69  e.</p>.}...Secti
5d90: 6f 6e 20 65 78 70 72 65 73 73 69 6f 6e 20 65 78  on expression ex
5da0: 70 72 0a 0a 53 79 6e 74 61 78 20 7b 65 78 70 72  pr..Syntax {expr
5db0: 7d 20 7b 0a 3c 65 78 70 72 3e 20 3c 62 69 6e 61  } {.<expr> <bina
5dc0: 72 79 2d 6f 70 3e 20 3c 65 78 70 72 3e 20 7c 0a  ry-op> <expr> |.
5dd0: 3c 65 78 70 72 3e 20 3c 6c 69 6b 65 2d 6f 70 3e  <expr> <like-op>
5de0: 20 3c 65 78 70 72 3e 20 7c 0a 3c 75 6e 61 72 79   <expr> |.<unary
5df0: 2d 6f 70 3e 20 3c 65 78 70 72 3e 20 7c 0a 28 20  -op> <expr> |.( 
5e00: 3c 65 78 70 72 3e 20 29 20 7c 0a 3c 63 6f 6c 75  <expr> ) |.<colu
5e10: 6d 6e 2d 6e 61 6d 65 3e 20 7c 0a 3c 74 61 62 6c  mn-name> |.<tabl
5e20: 65 2d 6e 61 6d 65 3e 20 2e 20 3c 63 6f 6c 75 6d  e-name> . <colum
5e30: 6e 2d 6e 61 6d 65 3e 20 7c 0a 3c 6c 69 74 65 72  n-name> |.<liter
5e40: 61 6c 2d 76 61 6c 75 65 3e 20 7c 0a 3c 66 75 6e  al-value> |.<fun
5e50: 63 74 69 6f 6e 2d 6e 61 6d 65 3e 20 28 20 3c 65  ction-name> ( <e
5e60: 78 70 72 2d 6c 69 73 74 3e 20 7c 20 53 54 41 52  xpr-list> | STAR
5e70: 20 29 20 7c 0a 3c 65 78 70 72 3e 20 28 2b 29 20   ) |.<expr> (+) 
5e80: 7c 0a 3c 65 78 70 72 3e 20 49 53 4e 55 4c 4c 20  |.<expr> ISNULL 
5e90: 7c 0a 3c 65 78 70 72 3e 20 4e 4f 54 4e 55 4c 4c  |.<expr> NOTNULL
5ea0: 20 7c 0a 3c 65 78 70 72 3e 20 5b 4e 4f 54 5d 20   |.<expr> [NOT] 
5eb0: 42 45 54 57 45 45 4e 20 3c 65 78 70 72 3e 20 41  BETWEEN <expr> A
5ec0: 4e 44 20 3c 65 78 70 72 3e 20 7c 0a 3c 65 78 70  ND <expr> |.<exp
5ed0: 72 3e 20 5b 4e 4f 54 5d 20 49 4e 20 28 20 3c 76  r> [NOT] IN ( <v
5ee0: 61 6c 75 65 2d 6c 69 73 74 3e 20 29 20 7c 0a 3c  alue-list> ) |.<
5ef0: 65 78 70 72 3e 20 5b 4e 4f 54 5d 20 49 4e 20 28  expr> [NOT] IN (
5f00: 20 3c 73 65 6c 65 63 74 2d 73 74 61 74 65 6d 65   <select-stateme
5f10: 6e 74 3e 20 29 20 7c 0a 28 20 3c 73 65 6c 65 63  nt> ) |.( <selec
5f20: 74 2d 73 74 61 74 65 6d 65 6e 74 3e 20 29 20 7c  t-statement> ) |
5f30: 0a 43 41 53 45 20 5b 3c 65 78 70 72 3e 5d 20 28  .CASE [<expr>] (
5f40: 20 57 48 45 4e 20 3c 65 78 70 72 3e 20 54 48 45   WHEN <expr> THE
5f50: 4e 20 3c 65 78 70 72 3e 20 29 2b 20 5b 45 4c 53  N <expr> )+ [ELS
5f60: 45 20 3c 65 78 70 72 3e 5d 20 45 4e 44 0a 7d 20  E <expr>] END.} 
5f70: 7b 6c 69 6b 65 2d 6f 70 7d 20 7b 0a 4c 49 4b 45  {like-op} {.LIKE
5f80: 20 7c 20 47 4c 4f 42 20 7c 20 4e 4f 54 20 4c 49   | GLOB | NOT LI
5f90: 4b 45 20 7c 20 4e 4f 54 20 47 4c 4f 42 0a 7d 0a  KE | NOT GLOB.}.
5fa0: 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68 69 73 20  .puts {.<p>This 
5fb0: 73 65 63 74 69 6f 6e 20 69 73 20 64 69 66 66 65  section is diffe
5fc0: 72 65 6e 74 20 66 72 6f 6d 20 74 68 65 20 6f 74  rent from the ot
5fd0: 68 65 72 73 2e 20 20 4d 6f 73 74 20 6f 74 68 65  hers.  Most othe
5fe0: 72 20 73 65 63 74 69 6f 6e 73 20 6f 66 0a 74 68  r sections of.th
5ff0: 69 73 20 64 6f 63 75 6d 65 6e 74 20 74 61 6c 6b  is document talk
6000: 73 20 61 62 6f 75 74 20 61 20 70 61 72 74 69 63  s about a partic
6010: 75 6c 61 72 20 53 51 4c 20 63 6f 6d 6d 61 6e 64  ular SQL command
6020: 2e 20 20 54 68 69 73 20 73 65 63 74 69 6f 6e 20  .  This section 
6030: 64 6f 65 73 0a 6e 6f 74 20 74 61 6c 6b 20 61 62  does.not talk ab
6040: 6f 75 74 20 61 20 73 74 61 6e 64 61 6c 6f 6e 65  out a standalone
6050: 20 63 6f 6d 6d 61 6e 64 20 62 75 74 20 61 62 6f   command but abo
6060: 75 74 20 22 65 78 70 72 65 73 73 69 6f 6e 73 22  ut "expressions"
6070: 20 77 68 69 63 68 20 61 72 65 20 0a 73 75 62 63   which are .subc
6080: 6f 6d 70 6f 6e 65 6e 74 20 6f 66 20 6d 6f 73 74  omponent of most
6090: 20 6f 74 68 65 72 20 63 6f 6d 6d 61 6e 64 73 2e   other commands.
60a0: 3c 2f 70 3e 0a 0a 3c 70 3e 53 51 4c 69 74 65 20  </p>..<p>SQLite 
60b0: 75 6e 64 65 72 73 74 61 6e 64 73 20 74 68 65 20  understands the 
60c0: 66 6f 6c 6c 6f 77 69 6e 67 20 62 69 6e 61 72 79  following binary
60d0: 20 6f 70 65 72 61 74 6f 72 73 2c 20 69 6e 20 6f   operators, in o
60e0: 72 64 65 72 20 66 72 6f 6d 0a 68 69 67 68 65 73  rder from.highes
60f0: 74 20 74 6f 20 6c 6f 77 65 73 74 20 70 72 65 63  t to lowest prec
6100: 65 64 65 6e 63 65 3a 3c 2f 70 3e 0a 0a 3c 62 6c  edence:</p>..<bl
6110: 6f 63 6b 71 75 6f 74 65 3e 3c 70 72 65 3e 0a 3c  ockquote><pre>.<
6120: 66 6f 6e 74 20 63 6f 6c 6f 72 3d 22 23 32 63 32  font color="#2c2
6130: 63 66 30 22 3e 3c 62 69 67 3e 7c 7c 0a 2a 20 20  cf0"><big>||.*  
6140: 20 20 2f 20 20 20 20 25 0a 2b 20 20 20 20 2d 0a    /    %.+    -.
6150: 26 6c 74 3b 26 6c 74 3b 20 20 20 26 67 74 3b 26  &lt;&lt;   &gt;&
6160: 67 74 3b 20 20 20 26 61 6d 70 3b 20 20 20 20 7c  gt;   &amp;    |
6170: 0a 26 6c 74 3b 20 20 20 20 26 6c 74 3b 3d 20 20  .&lt;    &lt;=  
6180: 20 26 67 74 3b 20 20 20 20 26 67 74 3b 3d 0a 3d   &gt;    &gt;=.=
6190: 20 20 20 20 3d 3d 20 20 20 21 3d 20 20 20 26 6c      ==   !=   &l
61a0: 74 3b 26 67 74 3b 20 20 20 3c 2f 62 69 67 3e 49  t;&gt;   </big>I
61b0: 4e 0a 41 4e 44 20 20 20 0a 4f 52 3c 2f 66 6f 6e  N.AND   .OR</fon
61c0: 74 3e 0a 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b  t>.</pre></block
61d0: 71 75 6f 74 65 3e 0a 0a 3c 70 3e 53 75 70 70 6f  quote>..<p>Suppo
61e0: 72 74 65 64 20 75 6e 61 72 79 20 6f 70 65 72 61  rted unary opera
61f0: 74 65 72 73 20 61 72 65 20 74 68 65 73 65 3a 3c  ters are these:<
6200: 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65  /p>..<blockquote
6210: 3e 3c 70 72 65 3e 0a 3c 66 6f 6e 74 20 63 6f 6c  ><pre>.<font col
6220: 6f 72 3d 22 23 32 63 32 63 66 30 22 3e 3c 62 69  or="#2c2cf0"><bi
6230: 67 3e 2d 20 20 20 20 2b 20 20 20 20 21 20 20 20  g>-    +    !   
6240: 20 7e 3c 2f 62 69 67 3e 3c 2f 66 6f 6e 74 3e 0a   ~</big></font>.
6250: 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f  </pre></blockquo
6260: 74 65 3e 0a 0a 3c 70 3e 41 6e 79 20 53 51 4c 69  te>..<p>Any SQLi
6270: 74 65 20 76 61 6c 75 65 20 63 61 6e 20 62 65 20  te value can be 
6280: 75 73 65 64 20 61 73 20 70 61 72 74 20 6f 66 20  used as part of 
6290: 61 6e 20 65 78 70 72 65 73 73 69 6f 6e 2e 20 20  an expression.  
62a0: 0a 46 6f 72 20 61 72 69 74 68 6d 65 74 69 63 20  .For arithmetic 
62b0: 6f 70 65 72 61 74 69 6f 6e 73 2c 20 69 6e 74 65  operations, inte
62c0: 67 65 72 73 20 61 72 65 20 74 72 65 61 74 65 64  gers are treated
62d0: 20 61 73 20 69 6e 74 65 67 65 72 73 2e 0a 53 74   as integers..St
62e0: 72 69 6e 67 73 20 61 72 65 20 66 69 72 73 74 20  rings are first 
62f0: 63 6f 6e 76 65 72 74 65 64 20 74 6f 20 72 65 61  converted to rea
6300: 6c 20 6e 75 6d 62 65 72 73 20 75 73 69 6e 67 20  l numbers using 
6310: 3c 62 3e 61 74 6f 66 28 29 3c 2f 62 3e 2e 0a 46  <b>atof()</b>..F
6320: 6f 72 20 63 6f 6d 70 61 72 69 73 6f 6e 20 6f 70  or comparison op
6330: 65 72 61 74 6f 72 73 2c 20 6e 75 6d 62 65 72 73  erators, numbers
6340: 20 63 6f 6d 70 61 72 65 20 61 73 20 6e 75 6d 62   compare as numb
6350: 65 72 73 20 61 6e 64 20 73 74 72 69 6e 67 73 0a  ers and strings.
6360: 63 6f 6d 70 61 72 65 20 75 73 69 6e 67 20 74 68  compare using th
6370: 65 20 3c 62 3e 73 74 72 63 6d 70 28 29 3c 2f 62  e <b>strcmp()</b
6380: 3e 20 66 75 6e 63 74 69 6f 6e 2e 0a 4e 6f 74 65  > function..Note
6390: 20 74 68 61 74 20 74 68 65 72 65 20 61 72 65 20   that there are 
63a0: 74 77 6f 20 76 61 72 69 61 74 69 6f 6e 73 20 6f  two variations o
63b0: 66 20 74 68 65 20 65 71 75 61 6c 73 20 61 6e 64  f the equals and
63c0: 20 6e 6f 74 20 65 71 75 61 6c 73 0a 6f 70 65 72   not equals.oper
63d0: 61 74 6f 72 73 2e 20 20 45 71 75 61 6c 73 20 63  ators.  Equals c
63e0: 61 6e 20 62 65 20 65 69 74 68 65 72 7d 0a 70 75  an be either}.pu
63f0: 74 73 20 22 5b 4f 70 65 72 61 74 6f 72 20 3d 5d  ts "[Operator =]
6400: 20 6f 72 20 5b 4f 70 65 72 61 74 6f 72 20 3d 3d   or [Operator ==
6410: 5d 2e 0a 54 68 65 20 6e 6f 6e 2d 65 71 75 61 6c  ]..The non-equal
6420: 73 20 6f 70 65 72 61 74 6f 72 20 63 61 6e 20 62  s operator can b
6430: 65 20 65 69 74 68 65 72 0a 5b 4f 70 65 72 61 74  e either.[Operat
6440: 6f 72 20 21 3d 5d 20 6f 72 20 5b 4f 70 65 72 61  or !=] or [Opera
6450: 74 6f 72 20 7b 26 6c 74 3b 26 67 74 3b 7d 5d 2e  tor {&lt;&gt;}].
6460: 0a 54 68 65 20 5b 4f 70 65 72 61 74 6f 72 20 7c  .The [Operator |
6470: 7c 5d 20 6f 70 65 72 61 74 6f 72 20 69 73 20 5c  |] operator is \
6480: 22 63 6f 6e 63 61 74 65 6e 61 74 65 5c 22 20 2d  "concatenate\" -
6490: 20 69 74 20 6a 6f 69 6e 73 20 74 6f 67 65 74 68   it joins togeth
64a0: 65 72 0a 74 68 65 20 74 77 6f 20 73 74 72 69 6e  er.the two strin
64b0: 67 73 20 6f 66 20 69 74 73 20 6f 70 65 72 61 6e  gs of its operan
64c0: 64 73 2e 0a 54 68 65 20 6f 70 65 72 61 74 6f 72  ds..The operator
64d0: 20 5b 4f 70 65 72 61 74 6f 72 20 25 5d 20 6f 75   [Operator %] ou
64e0: 74 70 75 74 73 20 74 68 65 20 72 65 6d 61 69 6e  tputs the remain
64f0: 64 65 72 20 6f 66 20 69 74 73 20 6c 65 66 74 20  der of its left 
6500: 0a 6f 70 65 72 61 6e 64 20 6d 6f 64 75 6c 6f 20  .operand modulo 
6510: 69 74 73 20 72 69 67 68 74 20 6f 70 65 72 61 6e  its right operan
6520: 64 2e 3c 2f 70 3e 22 0a 70 75 74 73 20 7b 0a 0a  d.</p>".puts {..
6530: 3c 70 3e 54 68 65 20 4c 49 4b 45 20 6f 70 65 72  <p>The LIKE oper
6540: 61 74 6f 72 20 64 6f 65 73 20 61 20 77 69 6c 64  ator does a wild
6550: 63 61 72 64 20 63 6f 6d 70 61 72 69 73 69 6f 6e  card comparision
6560: 2e 20 20 54 68 65 20 6f 70 65 72 61 6e 64 0a 74  .  The operand.t
6570: 6f 20 74 68 65 20 72 69 67 68 74 20 63 6f 6e 74  o the right cont
6580: 61 69 6e 73 20 74 68 65 20 77 69 6c 64 63 61 72  ains the wildcar
6590: 64 73 2e 7d 0a 70 75 74 73 20 22 41 20 70 65 72  ds.}.puts "A per
65a0: 63 65 6e 74 20 73 79 6d 62 6f 6c 20 5b 4f 70 65  cent symbol [Ope
65b0: 72 61 74 6f 72 20 25 5d 20 69 6e 20 74 68 65 20  rator %] in the 
65c0: 72 69 67 68 74 20 6f 70 65 72 61 6e 64 0a 6d 61  right operand.ma
65d0: 74 63 68 65 73 20 61 6e 79 20 73 65 71 75 65 6e  tches any sequen
65e0: 63 65 20 6f 66 20 7a 65 72 6f 20 6f 72 20 6d 6f  ce of zero or mo
65f0: 72 65 20 63 68 61 72 61 63 74 65 72 73 20 6f 6e  re characters on
6600: 20 74 68 65 20 6c 65 66 74 2e 0a 41 6e 20 75 6e   the left..An un
6610: 64 65 72 73 63 6f 72 65 20 5b 4f 70 65 72 61 74  derscore [Operat
6620: 6f 72 20 5f 5d 20 6f 6e 20 74 68 65 20 72 69 67  or _] on the rig
6630: 68 74 0a 6d 61 74 63 68 65 73 20 61 6e 79 20 73  ht.matches any s
6640: 69 6e 67 6c 65 20 63 68 61 72 61 63 74 65 72 20  ingle character 
6650: 6f 6e 20 74 68 65 20 6c 65 66 74 2e 22 0a 70 75  on the left.".pu
6660: 74 73 20 7b 54 68 65 20 4c 49 4b 45 20 6f 70 65  ts {The LIKE ope
6670: 72 61 74 6f 72 20 69 73 0a 6e 6f 74 20 63 61 73  rator is.not cas
6680: 65 20 73 65 6e 73 69 74 69 76 65 20 61 6e 64 20  e sensitive and 
6690: 77 69 6c 6c 20 6d 61 74 63 68 20 75 70 70 65 72  will match upper
66a0: 20 63 61 73 65 20 63 68 61 72 61 63 74 65 72 73   case characters
66b0: 20 6f 6e 20 6f 6e 65 0a 73 69 64 65 20 61 67 61   on one.side aga
66c0: 69 6e 73 74 20 6c 6f 77 65 72 20 63 61 73 65 20  inst lower case 
66d0: 63 68 61 72 61 63 74 65 72 73 20 6f 6e 20 74 68  characters on th
66e0: 65 20 6f 74 68 65 72 2e 0a 28 41 20 62 75 67 3a  e other..(A bug:
66f0: 20 53 51 4c 69 74 65 20 6f 6e 6c 79 20 75 6e 64   SQLite only und
6700: 65 72 73 74 61 6e 64 73 20 75 70 70 65 72 2f 6c  erstands upper/l
6710: 6f 77 65 72 20 63 61 73 65 20 66 6f 72 20 37 2d  ower case for 7-
6720: 62 69 74 20 4c 61 74 69 6e 0a 63 68 61 72 61 63  bit Latin.charac
6730: 74 65 72 73 2e 20 20 48 65 6e 63 65 20 74 68 65  ters.  Hence the
6740: 20 4c 49 4b 45 20 6f 70 65 72 61 74 6f 72 20 69   LIKE operator i
6750: 73 20 63 61 73 65 20 73 65 6e 73 69 74 69 76 65  s case sensitive
6760: 20 66 6f 72 0a 38 2d 62 69 74 20 69 73 6f 38 38   for.8-bit iso88
6770: 35 39 20 63 68 61 72 61 63 74 65 72 73 20 6f 72  59 characters or
6780: 20 55 54 46 2d 38 20 63 68 61 72 61 63 74 65 72   UTF-8 character
6790: 73 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c  s.  For example,
67a0: 0a 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20  .the expression 
67b0: 3c 62 3e 27 61 27 26 6e 62 73 70 3b 4c 49 4b 45  <b>'a'&nbsp;LIKE
67c0: 26 6e 62 73 70 3b 27 41 27 3c 2f 62 3e 20 69 73  &nbsp;'A'</b> is
67d0: 20 54 52 55 45 20 62 75 74 0a 3c 62 3e 27 26 61   TRUE but.<b>'&a
67e0: 65 6c 69 67 3b 27 26 6e 62 73 70 3b 4c 49 4b 45  elig;'&nbsp;LIKE
67f0: 26 6e 62 73 70 3b 27 26 41 45 6c 69 67 3b 27 3c  &nbsp;'&AElig;'<
6800: 2f 62 3e 20 69 73 20 46 41 4c 53 45 2e 29 0a 3c  /b> is FALSE.).<
6810: 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 47 4c 4f 42  /p>..<p>The GLOB
6820: 20 6f 70 65 72 61 74 6f 72 20 69 73 20 73 69 6d   operator is sim
6830: 69 6c 61 72 20 74 6f 20 4c 49 4b 45 20 62 75 74  ilar to LIKE but
6840: 20 75 73 65 73 20 74 68 65 20 55 6e 69 78 0a 66   uses the Unix.f
6850: 69 6c 65 20 67 6c 6f 62 62 69 6e 67 20 73 79 6e  ile globbing syn
6860: 74 61 78 20 66 6f 72 20 69 74 73 20 77 69 6c 64  tax for its wild
6870: 63 61 72 64 73 2e 20 20 41 6c 73 6f 2c 20 47 4c  cards.  Also, GL
6880: 4f 42 20 69 73 20 63 61 73 65 0a 73 65 6e 73 69  OB is case.sensi
6890: 74 69 76 65 2c 20 75 6e 6c 69 6b 65 20 4c 49 4b  tive, unlike LIK
68a0: 45 2e 20 20 42 6f 74 68 20 47 4c 4f 42 20 61 6e  E.  Both GLOB an
68b0: 64 20 4c 49 4b 45 20 6d 61 79 20 62 65 20 70 72  d LIKE may be pr
68c0: 65 63 65 64 65 64 20 62 79 0a 74 68 65 20 4e 4f  eceded by.the NO
68d0: 54 20 6b 65 79 77 6f 72 64 20 74 6f 20 69 6e 76  T keyword to inv
68e0: 65 72 74 20 74 68 65 20 73 65 6e 73 65 20 6f 66  ert the sense of
68f0: 20 74 68 65 20 74 65 73 74 2e 3c 2f 70 3e 0a 0a   the test.</p>..
6900: 3c 70 3e 41 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65  <p>A column name
6910: 20 63 61 6e 20 62 65 20 61 6e 79 20 6f 66 20 74   can be any of t
6920: 68 65 20 6e 61 6d 65 73 20 64 65 66 69 6e 65 64  he names defined
6930: 20 69 6e 20 74 68 65 20 43 52 45 41 54 45 20 54   in the CREATE T
6940: 41 42 4c 45 0a 73 74 61 74 65 6d 65 6e 74 20 6f  ABLE.statement o
6950: 72 20 6f 6e 65 20 6f 66 20 74 68 65 20 66 6f 6c  r one of the fol
6960: 6c 6f 77 69 6e 67 20 73 70 65 63 69 61 6c 20 69  lowing special i
6970: 64 65 6e 74 69 66 69 65 72 73 3a 20 22 3c 62 3e  dentifiers: "<b>
6980: 52 4f 57 49 44 3c 2f 62 3e 22 2c 0a 22 3c 62 3e  ROWID</b>",."<b>
6990: 4f 49 44 3c 2f 62 3e 22 2c 20 6f 72 20 22 3c 62  OID</b>", or "<b
69a0: 3e 5f 52 4f 57 49 44 5f 3c 2f 62 3e 22 2e 0a 54  >_ROWID_</b>"..T
69b0: 68 65 73 65 20 73 70 65 63 69 61 6c 20 69 64 65  hese special ide
69c0: 6e 74 69 66 69 65 72 73 20 61 6c 6c 20 64 65 73  ntifiers all des
69d0: 63 72 69 62 65 20 74 68 65 0a 75 6e 69 71 75 65  cribe the.unique
69e0: 20 72 61 6e 64 6f 6d 20 69 6e 74 65 67 65 72 20   random integer 
69f0: 6b 65 79 20 28 74 68 65 20 22 72 6f 77 20 6b 65  key (the "row ke
6a00: 79 22 29 20 61 73 73 6f 63 69 61 74 65 64 20 77  y") associated w
6a10: 69 74 68 20 65 76 65 72 79 20 0a 72 6f 77 20 6f  ith every .row o
6a20: 66 20 65 76 65 72 79 20 74 61 62 6c 65 2e 0a 54  f every table..T
6a30: 68 65 20 73 70 65 63 69 61 6c 20 69 64 65 6e 74  he special ident
6a40: 69 66 69 65 72 73 20 6f 6e 6c 79 20 72 65 66 65  ifiers only refe
6a50: 72 20 74 6f 20 74 68 65 20 72 6f 77 20 6b 65 79  r to the row key
6a60: 20 69 66 20 74 68 65 20 43 52 45 41 54 45 20 54   if the CREATE T
6a70: 41 42 4c 45 0a 73 74 61 74 65 6d 65 6e 74 20 64  ABLE.statement d
6a80: 6f 65 73 20 6e 6f 74 20 64 65 66 69 6e 65 20 61  oes not define a
6a90: 20 72 65 61 6c 20 63 6f 6c 75 6d 6e 20 77 69 74   real column wit
6aa0: 68 20 74 68 65 20 73 61 6d 65 20 6e 61 6d 65 2e  h the same name.
6ab0: 20 20 52 6f 77 20 6b 65 79 73 0a 61 63 74 20 6c    Row keys.act l
6ac0: 69 6b 65 20 72 65 61 64 2d 6f 6e 6c 79 20 63 6f  ike read-only co
6ad0: 6c 75 6d 6e 73 2e 20 20 41 20 72 6f 77 20 6b 65  lumns.  A row ke
6ae0: 79 20 63 61 6e 20 62 65 20 75 73 65 64 20 61 6e  y can be used an
6af0: 79 77 68 65 72 65 20 61 20 72 65 67 75 6c 61 72  ywhere a regular
6b00: 0a 63 6f 6c 75 6d 6e 20 63 61 6e 20 62 65 20 75  .column can be u
6b10: 73 65 64 2c 20 65 78 63 65 70 74 20 74 68 61 74  sed, except that
6b20: 20 79 6f 75 20 63 61 6e 6e 6f 74 20 63 68 61 6e   you cannot chan
6b30: 67 65 20 74 68 65 20 76 61 6c 75 65 0a 6f 66 20  ge the value.of 
6b40: 61 20 72 6f 77 20 6b 65 79 20 69 6e 20 61 6e 20  a row key in an 
6b50: 55 50 44 41 54 45 20 6f 72 20 49 4e 53 45 52 54  UPDATE or INSERT
6b60: 20 73 74 61 74 65 6d 65 6e 74 2e 0a 22 53 45 4c   statement.."SEL
6b70: 45 43 54 20 2a 20 2e 2e 2e 22 20 64 6f 65 73 20  ECT * ..." does 
6b80: 6e 6f 74 20 72 65 74 75 72 6e 20 74 68 65 20 72  not return the r
6b90: 6f 77 20 6b 65 79 2e 3c 2f 70 3e 0a 0a 3c 70 3e  ow key.</p>..<p>
6ba0: 53 51 4c 69 74 65 20 73 75 70 70 6f 72 74 73 20  SQLite supports 
6bb0: 61 20 6d 69 6e 69 6d 61 6c 20 4f 72 61 63 6c 65  a minimal Oracle
6bc0: 38 20 6f 75 74 65 72 20 6a 6f 69 6e 20 62 65 68  8 outer join beh
6bd0: 61 76 69 6f 72 2e 20 41 20 63 6f 6c 75 6d 6e 20  avior. A column 
6be0: 0a 65 78 70 72 65 73 73 69 6f 6e 20 6f 66 20 74  .expression of t
6bf0: 68 65 20 66 6f 72 6d 20 22 63 6f 6c 75 6d 6e 22  he form "column"
6c00: 20 6f 72 20 22 74 61 62 6c 65 2e 63 6f 6c 75 6d   or "table.colum
6c10: 6e 22 20 63 61 6e 20 62 65 20 66 6f 6c 6c 6f 77  n" can be follow
6c20: 65 64 20 62 79 20 0a 74 68 65 20 73 70 65 63 69  ed by .the speci
6c30: 61 6c 20 22 3c 62 3e 28 2b 29 3c 2f 62 3e 22 20  al "<b>(+)</b>" 
6c40: 6f 70 65 72 61 74 6f 72 2e 20 20 49 66 20 74 68  operator.  If th
6c50: 65 20 74 61 62 6c 65 20 6f 66 20 74 68 65 20 63  e table of the c
6c60: 6f 6c 75 6d 6e 20 65 78 70 72 65 73 73 69 6f 6e  olumn expression
6c70: 20 0a 69 73 20 74 68 65 20 73 65 63 6f 6e 64 20   .is the second 
6c80: 6f 72 20 73 75 62 73 65 71 75 65 6e 74 20 74 61  or subsequent ta
6c90: 62 6c 65 20 69 6e 20 61 20 6a 6f 69 6e 2c 20 74  ble in a join, t
6ca0: 68 65 6e 20 74 68 61 74 20 74 61 62 6c 65 20 62  hen that table b
6cb0: 65 63 6f 6d 65 73 20 0a 74 68 65 20 6c 65 66 74  ecomes .the left
6cc0: 20 74 61 62 6c 65 20 69 6e 20 61 20 4c 45 46 54   table in a LEFT
6cd0: 20 4f 55 54 45 52 20 4a 4f 49 4e 2e 20 20 54 68   OUTER JOIN.  Th
6ce0: 65 20 65 78 70 72 65 73 73 69 6f 6e 20 74 68 61  e expression tha
6cf0: 74 20 75 73 65 73 20 74 68 61 74 20 0a 74 61 62  t uses that .tab
6d00: 6c 65 20 62 65 63 6f 6d 65 73 20 70 61 72 74 20  le becomes part 
6d10: 6f 66 20 74 68 65 20 4f 4e 20 63 6c 61 75 73 65  of the ON clause
6d20: 20 66 6f 72 20 74 68 65 20 6a 6f 69 6e 2e 0a 54   for the join..T
6d30: 68 65 20 65 78 61 63 74 20 4f 72 61 63 6c 65 38  he exact Oracle8
6d40: 20 62 65 68 61 76 69 6f 72 20 69 73 20 6e 6f 74   behavior is not
6d50: 20 69 6d 70 6c 65 6d 65 6e 74 65 64 2c 20 62 75   implemented, bu
6d60: 74 20 69 74 20 69 73 20 70 6f 73 73 69 62 6c 65  t it is possible
6d70: 20 74 6f 20 0a 63 6f 6e 73 74 72 75 63 74 20 71   to .construct q
6d80: 75 65 72 69 65 73 20 74 68 61 74 20 77 69 6c 6c  ueries that will
6d90: 20 77 6f 72 6b 20 63 6f 72 72 65 63 74 6c 79 20   work correctly 
6da0: 66 6f 72 20 62 6f 74 68 20 53 51 4c 69 74 65 20  for both SQLite 
6db0: 61 6e 64 20 4f 72 61 63 6c 65 38 2e 3c 2f 70 3e  and Oracle8.</p>
6dc0: 0a 0a 3c 70 3e 53 45 4c 45 43 54 20 73 74 61 74  ..<p>SELECT stat
6dd0: 65 6d 65 6e 74 73 20 63 61 6e 20 61 70 70 65 61  ements can appea
6de0: 72 20 69 6e 20 65 78 70 72 65 73 73 69 6f 6e 73  r in expressions
6df0: 20 61 73 20 65 69 74 68 65 72 20 74 68 65 0a 72   as either the.r
6e00: 69 67 68 74 2d 68 61 6e 64 20 6f 70 65 72 61 6e  ight-hand operan
6e10: 64 20 6f 66 20 74 68 65 20 49 4e 20 6f 70 65 72  d of the IN oper
6e20: 61 74 6f 72 20 6f 72 20 61 73 20 61 20 73 63 61  ator or as a sca
6e30: 6c 61 72 20 71 75 61 6e 74 69 74 79 2e 0a 49 6e  lar quantity..In
6e40: 20 62 6f 74 68 20 63 61 73 65 73 2c 20 74 68 65   both cases, the
6e50: 20 53 45 4c 45 43 54 20 73 68 6f 75 6c 64 20 68   SELECT should h
6e60: 61 76 65 20 6f 6e 6c 79 20 61 20 73 69 6e 67 6c  ave only a singl
6e70: 65 20 63 6f 6c 75 6d 6e 20 69 6e 20 69 74 73 0a  e column in its.
6e80: 72 65 73 75 6c 74 2e 20 20 43 6f 6d 70 6f 75 6e  result.  Compoun
6e90: 64 20 53 45 4c 45 43 54 73 20 28 63 6f 6e 6e 65  d SELECTs (conne
6ea0: 63 74 65 64 20 77 69 74 68 20 6b 65 79 77 6f 72  cted with keywor
6eb0: 64 73 20 6c 69 6b 65 20 55 4e 49 4f 4e 20 6f 72  ds like UNION or
6ec0: 0a 45 58 43 45 50 54 29 20 61 72 65 20 61 6c 6c  .EXCEPT) are all
6ed0: 6f 77 65 64 2e 0a 41 20 53 45 4c 45 43 54 20 69  owed..A SELECT i
6ee0: 6e 20 61 6e 20 65 78 70 72 65 73 73 69 6f 6e 20  n an expression 
6ef0: 69 73 20 65 76 61 6c 75 61 74 65 64 20 6f 6e 63  is evaluated onc
6f00: 65 20 62 65 66 6f 72 65 20 61 6e 79 20 6f 74 68  e before any oth
6f10: 65 72 20 70 72 6f 63 65 73 73 69 6e 67 0a 69 73  er processing.is
6f20: 20 70 65 72 66 6f 72 6d 65 64 2c 20 73 6f 20 6e   performed, so n
6f30: 6f 6e 65 20 6f 66 20 74 68 65 20 65 78 70 72 65  one of the expre
6f40: 73 73 69 6f 6e 73 20 77 69 74 68 69 6e 20 74 68  ssions within th
6f50: 65 20 73 65 6c 65 63 74 20 69 74 73 65 6c 66 20  e select itself 
6f60: 63 61 6e 0a 72 65 66 65 72 20 74 6f 20 71 75 61  can.refer to qua
6f70: 6e 74 69 74 69 65 73 20 69 6e 20 74 68 65 20 63  ntities in the c
6f80: 6f 6e 74 61 69 6e 69 6e 67 20 65 78 70 72 65 73  ontaining expres
6f90: 73 69 6f 6e 2e 3c 2f 70 3e 0a 0a 3c 70 3e 57 68  sion.</p>..<p>Wh
6fa0: 65 6e 20 61 20 53 45 4c 45 43 54 20 69 73 20 74  en a SELECT is t
6fb0: 68 65 20 72 69 67 68 74 20 6f 70 65 72 61 6e 64  he right operand
6fc0: 20 6f 66 20 74 68 65 20 49 4e 20 6f 70 65 72 61   of the IN opera
6fd0: 74 6f 72 2c 20 74 68 65 20 49 4e 0a 6f 70 65 72  tor, the IN.oper
6fe0: 61 74 6f 72 20 72 65 74 75 72 6e 73 20 54 52 55  ator returns TRU
6ff0: 45 20 69 66 20 74 68 65 20 72 65 73 75 6c 74 20  E if the result 
7000: 6f 66 20 74 68 65 20 6c 65 66 74 20 6f 70 65 72  of the left oper
7010: 61 6e 64 20 69 73 20 61 6e 79 20 6f 66 0a 74 68  and is any of.th
7020: 65 20 76 61 6c 75 65 73 20 67 65 6e 65 72 61 74  e values generat
7030: 65 64 20 62 79 20 74 68 65 20 73 65 6c 65 63 74  ed by the select
7040: 2e 20 20 54 68 65 20 49 4e 20 6f 70 65 72 61 74  .  The IN operat
7050: 6f 72 20 6d 61 79 20 62 65 20 70 72 65 63 65 64  or may be preced
7060: 65 64 0a 62 79 20 74 68 65 20 4e 4f 54 20 6b 65  ed.by the NOT ke
7070: 79 77 6f 72 64 20 74 6f 20 69 6e 76 65 72 74 20  yword to invert 
7080: 74 68 65 20 73 65 6e 73 65 20 6f 66 20 74 68 65  the sense of the
7090: 20 74 65 73 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 57   test.</p>..<p>W
70a0: 68 65 6e 20 61 20 53 45 4c 45 43 54 20 61 70 70  hen a SELECT app
70b0: 65 61 72 73 20 77 69 74 68 69 6e 20 61 6e 20 65  ears within an e
70c0: 78 70 72 65 73 73 69 6f 6e 20 62 75 74 20 69 73  xpression but is
70d0: 20 6e 6f 74 20 74 68 65 20 72 69 67 68 74 0a 6f   not the right.o
70e0: 70 65 72 61 6e 64 20 6f 66 20 61 6e 20 49 4e 20  perand of an IN 
70f0: 6f 70 65 72 61 74 6f 72 2c 20 74 68 65 6e 20 74  operator, then t
7100: 68 65 20 66 69 72 73 74 20 72 6f 77 20 6f 66 20  he first row of 
7110: 74 68 65 20 72 65 73 75 6c 74 20 6f 66 20 74 68  the result of th
7120: 65 0a 53 45 4c 45 43 54 20 62 65 63 6f 6d 65 73  e.SELECT becomes
7130: 20 74 68 65 20 76 61 6c 75 65 20 75 73 65 64 20   the value used 
7140: 69 6e 20 74 68 65 20 65 78 70 72 65 73 73 69 6f  in the expressio
7150: 6e 2e 20 20 49 66 20 74 68 65 20 53 45 4c 45 43  n.  If the SELEC
7160: 54 20 79 69 65 6c 64 73 0a 6d 6f 72 65 20 74 68  T yields.more th
7170: 61 6e 20 6f 6e 65 20 72 65 73 75 6c 74 20 72 6f  an one result ro
7180: 77 2c 20 61 6c 6c 20 72 6f 77 73 20 61 66 74 65  w, all rows afte
7190: 72 20 74 68 65 20 66 69 72 73 74 20 61 72 65 20  r the first are 
71a0: 69 67 6e 6f 72 65 64 2e 20 20 49 66 0a 74 68 65  ignored.  If.the
71b0: 20 53 45 4c 45 43 54 20 79 65 69 6c 64 73 20 6e   SELECT yeilds n
71c0: 6f 20 72 6f 77 73 2c 20 74 68 65 6e 20 74 68 65  o rows, then the
71d0: 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 53 45   value of the SE
71e0: 4c 45 43 54 20 69 73 20 4e 55 4c 4c 2e 3c 2f 70  LECT is NULL.</p
71f0: 3e 0a 0a 3c 70 3e 42 6f 74 68 20 73 69 6d 70 6c  >..<p>Both simpl
7200: 65 20 61 6e 64 20 61 67 67 72 65 67 61 74 65 20  e and aggregate 
7210: 66 75 6e 63 74 69 6f 6e 73 20 61 72 65 20 73 75  functions are su
7220: 70 70 6f 72 74 65 64 2e 20 20 41 20 73 69 6d 70  pported.  A simp
7230: 6c 65 0a 66 75 6e 63 74 69 6f 6e 20 63 61 6e 20  le.function can 
7240: 62 65 20 75 73 65 64 20 69 6e 20 61 6e 79 20 65  be used in any e
7250: 78 70 72 65 73 73 69 6f 6e 2e 20 20 53 69 6d 70  xpression.  Simp
7260: 6c 65 20 66 75 6e 63 74 69 6f 6e 73 20 72 65 74  le functions ret
7270: 75 72 6e 0a 61 20 72 65 73 75 6c 74 20 69 6d 6d  urn.a result imm
7280: 65 64 69 61 74 65 6c 79 20 62 61 73 65 64 20 6f  ediately based o
7290: 6e 20 74 68 65 69 72 20 69 6e 70 75 74 73 2e 20  n their inputs. 
72a0: 20 41 67 67 72 65 67 61 74 65 20 66 75 6e 63 74   Aggregate funct
72b0: 69 6f 6e 73 0a 6d 61 79 20 6f 6e 6c 79 20 62 65  ions.may only be
72c0: 20 75 73 65 64 20 69 6e 20 61 20 53 45 4c 45 43   used in a SELEC
72d0: 54 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 41 67  T statement.  Ag
72e0: 67 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e  gregate function
72f0: 73 20 63 6f 6d 70 75 74 65 0a 74 68 65 69 72 20  s compute.their 
7300: 72 65 73 75 6c 74 20 61 63 72 6f 73 73 20 61 6c  result across al
7310: 6c 20 72 6f 77 73 20 6f 66 20 74 68 65 20 72 65  l rows of the re
7320: 73 75 6c 74 20 73 65 74 2e 3c 2f 70 3e 0a 0a 3c  sult set.</p>..<
7330: 70 3e 54 68 65 20 66 75 6e 63 74 69 6f 6e 73 20  p>The functions 
7340: 73 68 6f 77 6e 20 62 65 6c 6f 77 20 61 72 65 20  shown below are 
7350: 61 76 61 69 6c 61 62 6c 65 20 62 79 20 64 65 66  available by def
7360: 61 75 6c 74 2e 20 20 41 64 64 69 74 69 6f 6e 61  ault.  Additiona
7370: 6c 0a 66 75 6e 63 74 69 6f 6e 73 20 6d 61 79 20  l.functions may 
7380: 62 65 20 77 72 69 74 74 65 6e 20 69 6e 20 43 20  be written in C 
7390: 61 6e 64 20 61 64 64 65 64 20 74 6f 20 74 68 65  and added to the
73a0: 20 64 61 74 61 62 61 73 65 20 65 6e 67 69 6e 65   database engine
73b0: 20 75 73 69 6e 67 0a 74 68 65 20 3c 61 20 68 72   using.the <a hr
73c0: 65 66 3d 22 63 5f 69 6e 74 65 72 66 61 63 65 2e  ef="c_interface.
73d0: 68 74 6d 6c 23 63 66 75 6e 63 22 3e 73 71 6c 69  html#cfunc">sqli
73e0: 74 65 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69  te_create_functi
73f0: 6f 6e 28 29 3c 2f 61 3e 0a 41 50 49 2e 3c 2f 70  on()</a>.API.</p
7400: 3e 0a 0a 3c 74 61 62 6c 65 20 62 6f 72 64 65 72  >..<table border
7410: 3d 30 20 63 65 6c 6c 70 61 64 64 69 6e 67 3d 31  =0 cellpadding=1
7420: 30 3e 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69  0>.<tr>.<td vali
7430: 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22  gn="top" align="
7440: 72 69 67 68 74 22 20 77 69 64 74 68 3d 31 32 30  right" width=120
7450: 3e 61 62 73 28 3c 69 3e 58 3c 2f 69 3e 29 3c 2f  >abs(<i>X</i>)</
7460: 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22  td>.<td valign="
7470: 74 6f 70 22 3e 52 65 74 75 72 6e 20 74 68 65 20  top">Return the 
7480: 61 62 73 6f 6c 75 74 65 20 76 61 6c 75 65 20 6f  absolute value o
7490: 66 20 61 72 67 75 6d 65 6e 74 20 3c 69 3e 58 3c  f argument <i>X<
74a0: 2f 69 3e 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a  /i>.</td>.</tr>.
74b0: 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e  .<tr>.<td valign
74c0: 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69  ="top" align="ri
74d0: 67 68 74 22 3e 63 6f 61 6c 65 73 63 65 28 3c 69  ght">coalesce(<i
74e0: 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 2c  >X</i>,<i>Y</i>,
74f0: 2e 2e 2e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61  ...)</td>.<td va
7500: 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72  lign="top">Retur
7510: 6e 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20  n a copy of the 
7520: 66 69 72 73 74 20 6e 6f 6e 2d 4e 55 4c 4c 20 61  first non-NULL a
7530: 72 67 75 6d 65 6e 74 2e 20 20 49 66 0a 61 6c 6c  rgument.  If.all
7540: 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20 4e   arguments are N
7550: 55 4c 4c 20 74 68 65 6e 20 4e 55 4c 4c 20 69 73  ULL then NULL is
7560: 20 72 65 74 75 72 6e 65 64 2e 3c 2f 74 64 3e 0a   returned.</td>.
7570: 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20  </tr>..<tr>.<td 
7580: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69  valign="top" ali
7590: 67 6e 3d 22 72 69 67 68 74 22 3e 67 6c 6f 62 28  gn="right">glob(
75a0: 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69  <i>X</i>,<i>Y</i
75b0: 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69  >)</td>.<td vali
75c0: 67 6e 3d 22 74 6f 70 22 3e 54 68 69 73 20 66 75  gn="top">This fu
75d0: 6e 63 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74  nction is used t
75e0: 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 74 68 65 0a  o implement the.
75f0: 22 3c 62 3e 59 20 47 4c 4f 42 20 58 3c 2f 62 3e  "<b>Y GLOB X</b>
7600: 22 20 73 79 6e 74 61 78 20 6f 66 20 53 51 4c 69  " syntax of SQLi
7610: 74 65 2e 20 20 54 68 65 0a 3c 61 20 68 72 65 66  te.  The.<a href
7620: 3d 22 63 5f 69 6e 74 65 72 66 61 63 65 2e 68 74  ="c_interface.ht
7630: 6d 6c 23 63 66 75 6e 63 22 3e 73 71 6c 69 74 65  ml#cfunc">sqlite
7640: 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e  _create_function
7650: 28 29 3c 2f 61 3e 20 0a 69 6e 74 65 72 66 61 63  ()</a> .interfac
7660: 65 20 63 61 6e 0a 62 65 20 75 73 65 64 20 74 6f  e can.be used to
7670: 20 6f 76 65 72 72 69 64 65 20 74 68 69 73 20 66   override this f
7680: 75 6e 63 74 69 6f 6e 20 61 6e 64 20 74 68 65 72  unction and ther
7690: 65 62 79 20 63 68 61 6e 67 65 20 74 68 65 20 6f  eby change the o
76a0: 70 65 72 61 74 69 6f 6e 0a 6f 66 20 74 68 65 20  peration.of the 
76b0: 47 4c 4f 42 20 6f 70 65 72 61 74 6f 72 2e 3c 2f  GLOB operator.</
76c0: 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a  td>.</tr>..<tr>.
76d0: 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  <td valign="top"
76e0: 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e 6c   align="right">l
76f0: 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64  ast_insert_rowid
7700: 28 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69  ()</td>.<td vali
7710: 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72 6e 20  gn="top">Return 
7720: 74 68 65 20 52 4f 57 49 44 20 6f 66 20 74 68 65  the ROWID of the
7730: 20 6c 61 73 74 20 72 6f 77 20 69 6e 73 65 72 74   last row insert
7740: 20 66 72 6f 6d 20 74 68 69 73 0a 63 6f 6e 6e 65   from this.conne
7750: 63 74 69 6f 6e 20 74 6f 20 74 68 65 20 64 61 74  ction to the dat
7760: 61 62 61 73 65 2e 20 20 54 68 69 73 20 69 73 20  abase.  This is 
7770: 74 68 65 20 73 61 6d 65 20 76 61 6c 75 65 20 74  the same value t
7780: 68 61 74 20 77 6f 75 6c 64 20 62 65 20 72 65 74  hat would be ret
7790: 75 72 6e 65 64 0a 66 72 6f 6d 20 74 68 65 20 3c  urned.from the <
77a0: 62 3e 73 71 6c 69 74 65 5f 6c 61 73 74 5f 69 6e  b>sqlite_last_in
77b0: 73 65 72 74 5f 72 6f 77 69 64 28 29 3c 2f 62 3e  sert_rowid()</b>
77c0: 20 41 50 49 20 66 75 6e 63 74 69 6f 6e 2e 3c 2f   API function.</
77d0: 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a  td>.</tr>..<tr>.
77e0: 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  <td valign="top"
77f0: 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e 6c   align="right">l
7800: 65 6e 67 74 68 28 3c 69 3e 58 3c 2f 69 3e 29 3c  ength(<i>X</i>)<
7810: 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  /td>.<td valign=
7820: 22 74 6f 70 22 3e 52 65 74 75 72 6e 20 74 68 65  "top">Return the
7830: 20 73 74 72 69 6e 67 20 6c 65 6e 67 74 68 20 6f   string length o
7840: 66 20 3c 69 3e 58 3c 2f 69 3e 20 69 6e 20 63 68  f <i>X</i> in ch
7850: 61 72 61 63 74 65 72 73 2e 0a 49 66 20 53 51 4c  aracters..If SQL
7860: 69 74 65 20 69 73 20 63 6f 6e 66 69 67 75 72 65  ite is configure
7870: 64 20 74 6f 20 73 75 70 70 6f 72 74 20 55 54 46  d to support UTF
7880: 2d 38 2c 20 74 68 65 6e 20 74 68 65 20 6e 75 6d  -8, then the num
7890: 62 65 72 20 6f 66 20 55 54 46 2d 38 0a 63 68 61  ber of UTF-8.cha
78a0: 72 61 63 74 65 72 73 20 69 73 20 72 65 74 75 72  racters is retur
78b0: 6e 65 64 2c 20 6e 6f 74 20 74 68 65 20 6e 75 6d  ned, not the num
78c0: 62 65 72 20 6f 66 20 62 79 74 65 73 2e 3c 2f 74  ber of bytes.</t
78d0: 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c  d>.</tr>..<tr>.<
78e0: 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20  td valign="top" 
78f0: 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e 6c 69  align="right">li
7900: 6b 65 28 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e 59  ke(<i>X</i>,<i>Y
7910: 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76  </i>)</td>.<td v
7920: 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 54 68 69 73  align="top">This
7930: 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 75 73 65   function is use
7940: 64 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 74  d to implement t
7950: 68 65 0a 22 3c 62 3e 59 20 4c 49 4b 45 20 58 3c  he."<b>Y LIKE X<
7960: 2f 62 3e 22 20 73 79 6e 74 61 78 20 6f 66 20 53  /b>" syntax of S
7970: 51 4c 2e 20 20 54 68 65 0a 3c 61 20 68 72 65 66  QL.  The.<a href
7980: 3d 22 63 5f 69 6e 74 65 72 66 61 63 65 2e 68 74  ="c_interface.ht
7990: 6d 6c 23 63 66 75 6e 63 22 3e 73 71 6c 69 74 65  ml#cfunc">sqlite
79a0: 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e  _create_function
79b0: 28 29 3c 2f 61 3e 20 0a 69 6e 74 65 72 66 61 63  ()</a> .interfac
79c0: 65 20 63 61 6e 0a 62 65 20 75 73 65 64 20 74 6f  e can.be used to
79d0: 20 6f 76 65 72 72 69 64 65 20 74 68 69 73 20 66   override this f
79e0: 75 6e 63 74 69 6f 6e 20 61 6e 64 20 74 68 65 72  unction and ther
79f0: 65 62 79 20 63 68 61 6e 67 65 20 74 68 65 20 6f  eby change the o
7a00: 70 65 72 61 74 69 6f 6e 0a 6f 66 20 74 68 65 20  peration.of the 
7a10: 4c 49 4b 45 20 6f 70 65 72 61 74 6f 72 2e 3c 2f  LIKE operator.</
7a20: 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a  td>.</tr>..<tr>.
7a30: 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  <td valign="top"
7a40: 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e 6c   align="right">l
7a50: 6f 77 65 72 28 3c 69 3e 58 3c 2f 69 3e 29 3c 2f  ower(<i>X</i>)</
7a60: 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22  td>.<td valign="
7a70: 74 6f 70 22 3e 52 65 74 75 72 6e 20 61 20 63 6f  top">Return a co
7a80: 70 79 20 6f 66 20 73 74 72 69 6e 67 20 3c 69 3e  py of string <i>
7a90: 58 3c 2f 69 3e 20 77 69 6c 6c 20 61 6c 6c 20 63  X</i> will all c
7aa0: 68 61 72 61 63 74 65 72 73 0a 63 6f 6e 76 65 72  haracters.conver
7ab0: 74 65 64 20 74 6f 20 6c 6f 77 65 72 20 63 61 73  ted to lower cas
7ac0: 65 2e 20 20 54 68 65 20 43 20 6c 69 62 72 61 72  e.  The C librar
7ad0: 79 20 3c 62 3e 74 6f 6c 6f 77 65 72 28 29 3c 2f  y <b>tolower()</
7ae0: 62 3e 20 72 6f 75 74 69 6e 65 20 69 73 20 75 73  b> routine is us
7af0: 65 64 0a 66 6f 72 20 74 68 65 20 63 6f 6e 76 65  ed.for the conve
7b00: 72 73 69 6f 6e 2c 20 77 68 69 63 68 20 6d 65 61  rsion, which mea
7b10: 6e 73 20 74 68 61 74 20 74 68 69 73 20 66 75 6e  ns that this fun
7b20: 63 74 69 6f 6e 20 6d 69 67 68 74 20 6e 6f 74 0a  ction might not.
7b30: 77 6f 72 6b 20 63 6f 72 72 65 63 74 6c 79 20 6f  work correctly o
7b40: 6e 20 55 54 46 2d 38 20 63 68 61 72 61 63 74 65  n UTF-8 characte
7b50: 72 73 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a  rs.</td>.</tr>..
7b60: 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  <tr>.<td valign=
7b70: 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67  "top" align="rig
7b80: 68 74 22 3e 6d 61 78 28 3c 69 3e 58 3c 2f 69 3e  ht">max(<i>X</i>
7b90: 2c 3c 69 3e 59 3c 2f 69 3e 2c 2e 2e 2e 29 3c 2f  ,<i>Y</i>,...)</
7ba0: 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22  td>.<td valign="
7bb0: 74 6f 70 22 3e 52 65 74 75 72 6e 20 74 68 65 20  top">Return the 
7bc0: 61 72 67 75 6d 65 6e 74 20 77 69 74 68 20 74 68  argument with th
7bd0: 65 20 6d 61 78 69 6d 75 6d 20 76 61 6c 75 65 2e  e maximum value.
7be0: 20 20 41 72 67 75 6d 65 6e 74 73 0a 6d 61 79 20    Arguments.may 
7bf0: 62 65 20 73 74 72 69 6e 67 73 20 69 6e 20 61 64  be strings in ad
7c00: 64 69 74 69 6f 6e 20 74 6f 20 6e 75 6d 62 65 72  dition to number
7c10: 73 2e 20 20 54 68 65 20 6d 61 78 69 6d 75 6d 20  s.  The maximum 
7c20: 76 61 6c 75 65 20 69 73 20 64 65 74 65 72 6d 69  value is determi
7c30: 6e 65 64 0a 62 79 20 74 68 65 20 75 73 75 61 6c  ned.by the usual
7c40: 20 73 6f 72 74 20 6f 72 64 65 72 2e 20 20 4e 6f   sort order.  No
7c50: 74 65 20 74 68 61 74 20 3c 62 3e 6d 61 78 28 29  te that <b>max()
7c60: 3c 2f 62 3e 20 69 73 20 61 20 73 69 6d 70 6c 65  </b> is a simple
7c70: 20 66 75 6e 63 74 69 6f 6e 20 77 68 65 6e 0a 69   function when.i
7c80: 74 20 68 61 73 20 32 20 6f 72 20 6d 6f 72 65 20  t has 2 or more 
7c90: 61 72 67 75 6d 65 6e 74 73 20 62 75 74 20 63 6f  arguments but co
7ca0: 6e 76 65 72 74 73 20 74 6f 20 61 6e 20 61 67 67  nverts to an agg
7cb0: 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 20  regate function 
7cc0: 69 66 20 67 69 76 65 6e 0a 6f 6e 6c 79 20 61 20  if given.only a 
7cd0: 73 69 6e 67 6c 65 20 61 72 67 75 6d 65 6e 74 2e  single argument.
7ce0: 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72  </td>.</tr>..<tr
7cf0: 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
7d00: 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22  p" align="right"
7d10: 3e 6d 69 6e 28 3c 69 3e 58 3c 2f 69 3e 2c 3c 69  >min(<i>X</i>,<i
7d20: 3e 59 3c 2f 69 3e 2c 2e 2e 2e 29 3c 2f 74 64 3e  >Y</i>,...)</td>
7d30: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
7d40: 22 3e 52 65 74 75 72 6e 20 74 68 65 20 61 72 67  ">Return the arg
7d50: 75 6d 65 6e 74 20 77 69 74 68 20 74 68 65 20 6d  ument with the m
7d60: 69 6e 69 6d 75 6d 20 76 61 6c 75 65 2e 20 20 41  inimum value.  A
7d70: 72 67 75 6d 65 6e 74 73 0a 6d 61 79 20 62 65 20  rguments.may be 
7d80: 73 74 72 69 6e 67 73 20 69 6e 20 61 64 64 69 74  strings in addit
7d90: 69 6f 6e 20 74 6f 20 6e 75 6d 62 65 72 73 2e 20  ion to numbers. 
7da0: 20 54 68 65 20 6d 6d 69 6e 69 6d 75 6d 20 76 61   The mminimum va
7db0: 6c 75 65 20 69 73 20 64 65 74 65 72 6d 69 6e 65  lue is determine
7dc0: 64 0a 62 79 20 74 68 65 20 75 73 75 61 6c 20 73  d.by the usual s
7dd0: 6f 72 74 20 6f 72 64 65 72 2e 20 20 4e 6f 74 65  ort order.  Note
7de0: 20 74 68 61 74 20 3c 62 3e 6d 69 6e 28 29 3c 2f   that <b>min()</
7df0: 62 3e 20 69 73 20 61 20 73 69 6d 70 6c 65 20 66  b> is a simple f
7e00: 75 6e 63 74 69 6f 6e 20 77 68 65 6e 0a 69 74 20  unction when.it 
7e10: 68 61 73 20 32 20 6f 72 20 6d 6f 72 65 20 61 72  has 2 or more ar
7e20: 67 75 6d 65 6e 74 73 20 62 75 74 20 63 6f 6e 76  guments but conv
7e30: 65 72 74 73 20 74 6f 20 61 6e 20 61 67 67 72 65  erts to an aggre
7e40: 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 20 69 66  gate function if
7e50: 20 67 69 76 65 6e 0a 6f 6e 6c 79 20 61 20 73 69   given.only a si
7e60: 6e 67 6c 65 20 61 72 67 75 6d 65 6e 74 2e 3c 2f  ngle argument.</
7e70: 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a  td>.</tr>..<tr>.
7e80: 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  <td valign="top"
7e90: 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e 72   align="right">r
7ea0: 61 6e 64 6f 6d 28 2a 29 3c 2f 74 64 3e 0a 3c 74  andom(*)</td>.<t
7eb0: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52  d valign="top">R
7ec0: 65 74 75 72 6e 20 61 20 72 61 6e 64 6f 6d 20 69  eturn a random i
7ed0: 6e 74 65 67 65 72 20 62 65 74 77 65 65 6e 20 2d  nteger between -
7ee0: 32 31 34 37 34 38 33 36 34 38 20 61 6e 64 0a 2b  2147483648 and.+
7ef0: 32 31 34 37 34 38 33 36 34 37 2e 3c 2f 74 64 3e  2147483647.</td>
7f00: 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64  .</tr>..<tr>.<td
7f10: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c   valign="top" al
7f20: 69 67 6e 3d 22 72 69 67 68 74 22 3e 72 6f 75 6e  ign="right">roun
7f30: 64 28 3c 69 3e 58 3c 2f 69 3e 29 3c 62 72 3e 72  d(<i>X</i>)<br>r
7f40: 6f 75 6e 64 28 3c 69 3e 58 3c 2f 69 3e 2c 3c 69  ound(<i>X</i>,<i
7f50: 3e 59 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64  >Y</i>)</td>.<td
7f60: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 6f   valign="top">Ro
7f70: 75 6e 64 20 6f 66 66 20 74 68 65 20 6e 75 6d 62  und off the numb
7f80: 65 72 20 3c 69 3e 58 3c 2f 69 3e 20 74 6f 20 3c  er <i>X</i> to <
7f90: 69 3e 59 3c 2f 69 3e 20 64 69 67 69 74 73 20 74  i>Y</i> digits t
7fa0: 6f 20 74 68 65 0a 72 69 67 68 74 20 6f 66 20 74  o the.right of t
7fb0: 68 65 20 64 65 63 69 6d 61 6c 20 70 6f 69 6e 74  he decimal point
7fc0: 2e 20 20 49 66 20 74 68 65 20 3c 69 3e 59 3c 2f  .  If the <i>Y</
7fd0: 69 3e 20 61 72 67 75 6d 65 6e 74 20 69 73 20 6f  i> argument is o
7fe0: 6d 69 74 74 65 64 2c 20 30 20 69 73 20 0a 61 73  mitted, 0 is .as
7ff0: 73 75 6d 65 64 2e 3c 2f 74 64 3e 0a 3c 2f 74 72  sumed.</td>.</tr
8000: 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69  >..<tr>.<td vali
8010: 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22  gn="top" align="
8020: 72 69 67 68 74 22 3e 73 6f 75 6e 64 65 78 28 3c  right">soundex(<
8030: 69 3e 58 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74  i>X</i>)</td>.<t
8040: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 43  d valign="top">C
8050: 6f 6d 70 75 74 65 20 74 68 65 20 73 6f 75 6e 64  ompute the sound
8060: 65 78 20 65 6e 63 6f 64 69 6e 67 20 6f 66 20 74  ex encoding of t
8070: 68 65 20 73 74 72 69 6e 67 20 3c 69 3e 58 3c 2f  he string <i>X</
8080: 69 3e 2e 0a 54 68 65 20 73 74 72 69 6e 67 20 22  i>..The string "
8090: 3f 30 30 30 22 20 69 73 20 72 65 74 75 72 6e 65  ?000" is returne
80a0: 64 20 69 66 20 74 68 65 20 61 72 67 75 6d 65 6e  d if the argumen
80b0: 74 20 69 73 20 4e 55 4c 4c 2e 0a 54 68 69 73 20  t is NULL..This 
80c0: 66 75 6e 63 74 69 6f 6e 20 69 73 20 6f 6d 69 74  function is omit
80d0: 74 65 64 20 66 72 6f 6d 20 53 51 4c 69 74 65 20  ted from SQLite 
80e0: 62 79 20 64 65 66 61 75 6c 74 2e 0a 49 74 20 69  by default..It i
80f0: 73 20 6f 6e 6c 79 20 61 76 61 69 6c 61 62 6c 65  s only available
8100: 20 74 68 65 20 2d 44 53 51 4c 49 54 45 5f 53 4f   the -DSQLITE_SO
8110: 55 4e 44 45 58 3d 31 20 63 6f 6d 70 69 6c 65 72  UNDEX=1 compiler
8120: 20 6f 70 74 69 6f 6e 0a 69 73 20 75 73 65 64 20   option.is used 
8130: 77 68 65 6e 20 53 51 4c 69 74 65 20 69 73 20 62  when SQLite is b
8140: 75 69 6c 74 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e  uilt.</td>.</tr>
8150: 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67  ..<tr>.<td valig
8160: 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72  n="top" align="r
8170: 69 67 68 74 22 3e 73 71 6c 69 74 65 5f 76 65 72  ight">sqlite_ver
8180: 73 69 6f 6e 28 2a 29 3c 2f 74 64 3e 0a 3c 74 64  sion(*)</td>.<td
8190: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65   valign="top">Re
81a0: 74 75 72 6e 20 74 68 65 20 76 65 72 73 69 6f 6e  turn the version
81b0: 20 73 74 72 69 6e 67 20 66 6f 72 20 74 68 65 20   string for the 
81c0: 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 0a 74  SQLite library.t
81d0: 68 61 74 20 69 73 20 72 75 6e 6e 69 6e 67 2e 20  hat is running. 
81e0: 20 45 78 61 6d 70 6c 65 3a 20 20 22 32 2e 38 2e   Example:  "2.8.
81f0: 30 22 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c  0"</td>.</tr>..<
8200: 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22  tr>.<td valign="
8210: 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68  top" align="righ
8220: 74 22 3e 73 75 62 73 74 72 28 3c 69 3e 58 3c 2f  t">substr(<i>X</
8230: 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 2c 3c 69 3e 5a  i>,<i>Y</i>,<i>Z
8240: 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76  </i>)</td>.<td v
8250: 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75  align="top">Retu
8260: 72 6e 20 61 20 73 75 62 73 74 72 69 6e 67 20 6f  rn a substring o
8270: 66 20 69 6e 70 75 74 20 73 74 72 69 6e 67 20 3c  f input string <
8280: 69 3e 58 3c 2f 69 3e 20 74 68 61 74 20 62 65 67  i>X</i> that beg
8290: 69 6e 73 0a 77 69 74 68 20 74 68 65 20 3c 69 3e  ins.with the <i>
82a0: 59 3c 2f 69 3e 2d 74 68 20 63 68 61 72 61 63 74  Y</i>-th charact
82b0: 65 72 20 61 6e 64 20 77 68 69 63 68 20 69 73 20  er and which is 
82c0: 3c 69 3e 5a 3c 2f 69 3e 20 63 68 61 72 61 63 74  <i>Z</i> charact
82d0: 65 72 73 20 6c 6f 6e 67 2e 0a 54 68 65 20 6c 65  ers long..The le
82e0: 66 74 2d 6d 6f 73 74 20 63 68 61 72 61 63 74 65  ft-most characte
82f0: 72 20 6f 66 20 3c 69 3e 58 3c 2f 69 3e 20 69 73  r of <i>X</i> is
8300: 20 6e 75 6d 62 65 72 20 31 2e 20 20 49 66 20 3c   number 1.  If <
8310: 69 3e 59 3c 2f 69 3e 20 69 73 20 6e 65 67 61 74  i>Y</i> is negat
8320: 69 76 65 0a 74 68 65 20 74 68 65 20 66 69 72 73  ive.the the firs
8330: 74 20 63 68 61 72 61 63 74 65 72 20 6f 66 20 74  t character of t
8340: 68 65 20 73 75 62 73 74 72 69 6e 67 20 69 73 20  he substring is 
8350: 66 6f 75 6e 64 20 62 79 20 63 6f 75 6e 74 69 6e  found by countin
8360: 67 20 66 72 6f 6d 20 74 68 65 0a 72 69 67 68 74  g from the.right
8370: 20 72 61 74 68 65 72 20 74 68 61 6e 20 74 68 65   rather than the
8380: 20 6c 65 66 74 2e 20 20 49 66 20 53 51 4c 69 74   left.  If SQLit
8390: 65 20 69 73 20 63 6f 6e 66 69 67 75 72 65 64 20  e is configured 
83a0: 74 6f 20 73 75 70 70 6f 72 74 20 55 54 46 2d 38  to support UTF-8
83b0: 2c 0a 74 68 65 6e 20 63 68 61 72 61 63 74 65 72  ,.then character
83c0: 73 20 69 6e 64 69 63 65 73 20 72 65 66 65 72 20  s indices refer 
83d0: 74 6f 20 61 63 74 75 61 6c 20 55 54 46 2d 38 20  to actual UTF-8 
83e0: 63 68 61 72 61 63 74 65 72 73 2c 20 6e 6f 74 20  characters, not 
83f0: 62 79 74 65 73 2e 3c 2f 74 64 3e 0a 3c 2f 74 72  bytes.</td>.</tr
8400: 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69  >..<tr>.<td vali
8410: 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22  gn="top" align="
8420: 72 69 67 68 74 22 3e 75 70 70 65 72 28 3c 69 3e  right">upper(<i>
8430: 58 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20  X</i>)</td>.<td 
8440: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74  valign="top">Ret
8450: 75 72 6e 20 61 20 63 6f 70 79 20 6f 66 20 69 6e  urn a copy of in
8460: 70 75 74 20 73 74 72 69 6e 67 20 3c 69 3e 58 3c  put string <i>X<
8470: 2f 69 3e 20 63 6f 6e 76 65 72 74 65 64 20 74 6f  /i> converted to
8480: 20 61 6c 6c 0a 75 70 70 65 72 2d 63 61 73 65 20   all.upper-case 
8490: 6c 65 74 74 65 72 73 2e 20 20 54 68 65 20 69 6d  letters.  The im
84a0: 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20  plementation of 
84b0: 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 75 73  this function us
84c0: 65 73 20 74 68 65 20 43 20 6c 69 62 72 61 72 79  es the C library
84d0: 0a 72 6f 75 74 69 6e 65 20 3c 62 3e 74 6f 75 70  .routine <b>toup
84e0: 70 65 72 28 29 3c 2f 62 3e 20 77 68 69 63 68 20  per()</b> which 
84f0: 6d 65 61 6e 73 20 69 74 20 6d 61 79 20 6e 6f 74  means it may not
8500: 20 77 6f 72 6b 20 63 6f 72 72 65 63 74 6c 79 20   work correctly 
8510: 6f 6e 20 0a 55 54 46 2d 38 20 73 74 72 69 6e 67  on .UTF-8 string
8520: 73 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 2f  s.</td>.</tr>.</
8530: 74 61 62 6c 65 3e 0a 0a 3c 70 3e 0a 54 68 65 20  table>..<p>.The 
8540: 66 6f 6c 6c 6f 77 69 6e 67 20 61 67 67 72 65 67  following aggreg
8550: 61 74 65 20 66 75 6e 63 74 69 6f 6e 73 20 61 72  ate functions ar
8560: 65 20 61 76 61 69 6c 61 62 6c 65 20 62 79 20 64  e available by d
8570: 65 66 61 75 6c 74 2e 20 20 41 64 64 69 74 69 6f  efault.  Additio
8580: 6e 61 6c 0a 61 67 67 72 65 67 61 74 65 20 66 75  nal.aggregate fu
8590: 6e 63 74 69 6f 6e 73 20 77 72 69 74 74 65 6e 20  nctions written 
85a0: 69 6e 20 43 20 6d 61 79 20 62 65 20 61 64 64 65  in C may be adde
85b0: 64 20 75 73 69 6e 67 20 74 68 65 20 0a 3c 61 20  d using the .<a 
85c0: 68 72 65 66 3d 22 63 5f 69 6e 74 65 72 66 61 63  href="c_interfac
85d0: 65 2e 68 74 6d 6c 23 63 66 75 6e 63 22 3e 73 71  e.html#cfunc">sq
85e0: 6c 69 74 65 5f 63 72 65 61 74 65 5f 61 67 67 72  lite_create_aggr
85f0: 65 67 61 74 65 28 29 3c 2f 61 3e 20 41 50 49 2e  egate()</a> API.
8600: 3c 2f 70 3e 0a 0a 3c 74 61 62 6c 65 20 62 6f 72  </p>..<table bor
8610: 64 65 72 3d 30 20 63 65 6c 6c 70 61 64 64 69 6e  der=0 cellpaddin
8620: 67 3d 31 30 3e 0a 3c 74 72 3e 0a 3c 74 64 20 76  g=10>.<tr>.<td v
8630: 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67  align="top" alig
8640: 6e 3d 22 72 69 67 68 74 22 20 77 69 64 74 68 3d  n="right" width=
8650: 31 32 30 3e 61 76 67 28 3c 69 3e 58 3c 2f 69 3e  120>avg(<i>X</i>
8660: 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67  )</td>.<td valig
8670: 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72 6e 20 74  n="top">Return t
8680: 68 65 20 61 76 65 72 61 67 65 20 76 61 6c 75 65  he average value
8690: 20 6f 66 20 61 6c 6c 20 3c 69 3e 58 3c 2f 69 3e   of all <i>X</i>
86a0: 20 77 69 74 68 69 6e 20 61 20 67 72 6f 75 70 2e   within a group.
86b0: 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72  </td>.</tr>..<tr
86c0: 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
86d0: 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22  p" align="right"
86e0: 3e 63 6f 75 6e 74 28 3c 69 3e 58 3c 2f 69 3e 29  >count(<i>X</i>)
86f0: 3c 62 72 3e 63 6f 75 6e 74 28 2a 29 3c 2f 74 64  <br>count(*)</td
8700: 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
8710: 70 22 3e 54 68 65 20 66 69 72 73 74 20 66 6f 72  p">The first for
8720: 6d 20 72 65 74 75 72 6e 20 61 20 63 6f 75 6e 74  m return a count
8730: 20 6f 66 20 74 68 65 20 6e 75 6d 62 65 72 20 6f   of the number o
8740: 66 20 74 69 6d 65 73 0a 74 68 61 74 20 3c 69 3e  f times.that <i>
8750: 58 3c 2f 69 3e 20 69 73 20 6e 6f 74 20 4e 55 4c  X</i> is not NUL
8760: 4c 20 69 6e 20 61 20 67 72 6f 75 70 2e 20 20 54  L in a group.  T
8770: 68 65 20 73 65 63 6f 6e 64 20 66 6f 72 6d 20 28  he second form (
8780: 77 69 74 68 20 6e 6f 20 61 72 67 75 6d 65 6e 74  with no argument
8790: 29 0a 72 65 74 75 72 6e 73 20 74 68 65 20 74 6f  ).returns the to
87a0: 74 61 6c 20 6e 75 6d 62 65 72 20 6f 66 20 72 6f  tal number of ro
87b0: 77 73 20 69 6e 20 74 68 65 20 67 72 6f 75 70 2e  ws in the group.
87c0: 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72  </td>.</tr>..<tr
87d0: 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
87e0: 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22  p" align="right"
87f0: 3e 6d 61 78 28 3c 69 3e 58 3c 2f 69 3e 29 3c 2f  >max(<i>X</i>)</
8800: 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22  td>.<td valign="
8810: 74 6f 70 22 3e 52 65 74 75 72 6e 20 74 68 65 20  top">Return the 
8820: 6d 61 78 69 6d 75 6d 20 76 61 6c 75 65 20 6f 66  maximum value of
8830: 20 61 6c 6c 20 76 61 6c 75 65 73 20 69 6e 20 74   all values in t
8840: 68 65 20 67 72 6f 75 70 2e 0a 54 68 65 20 75 73  he group..The us
8850: 75 61 6c 20 73 6f 72 74 20 6f 72 64 65 72 20 69  ual sort order i
8860: 73 20 75 73 65 64 20 74 6f 20 64 65 74 65 72 6d  s used to determ
8870: 69 6e 65 20 74 68 65 20 6d 61 78 69 6d 75 6d 2e  ine the maximum.
8880: 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72  </td>.</tr>..<tr
8890: 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
88a0: 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22  p" align="right"
88b0: 3e 6d 69 6e 28 3c 69 3e 58 3c 2f 69 3e 29 3c 2f  >min(<i>X</i>)</
88c0: 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22  td>.<td valign="
88d0: 74 6f 70 22 3e 52 65 74 75 72 6e 20 74 68 65 20  top">Return the 
88e0: 6d 69 6e 69 6d 75 6d 20 76 61 6c 75 65 20 6f 66  minimum value of
88f0: 20 61 6c 6c 20 76 61 6c 75 65 73 20 69 6e 20 74   all values in t
8900: 68 65 20 67 72 6f 75 70 2e 0a 54 68 65 20 75 73  he group..The us
8910: 75 61 6c 20 73 6f 72 74 20 6f 72 64 65 72 20 69  ual sort order i
8920: 73 20 75 73 65 64 20 74 6f 20 64 65 74 65 72 6d  s used to determ
8930: 69 6e 65 20 74 68 65 20 6d 69 6e 69 6d 75 6d 2e  ine the minimum.
8940: 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72  </td>.</tr>..<tr
8950: 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
8960: 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22  p" align="right"
8970: 3e 73 75 6d 28 3c 69 3e 58 3c 2f 69 3e 29 3c 2f  >sum(<i>X</i>)</
8980: 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22  td>.<td valign="
8990: 74 6f 70 22 3e 52 65 74 75 72 6e 20 74 68 65 20  top">Return the 
89a0: 6e 75 6d 65 72 69 63 20 73 75 6d 20 6f 66 20 61  numeric sum of a
89b0: 6c 6c 20 76 61 6c 75 65 73 20 69 6e 20 74 68 65  ll values in the
89c0: 20 67 72 6f 75 70 2e 3c 2f 74 64 3e 0a 3c 2f 74   group.</td>.</t
89d0: 72 3e 0a 3c 2f 74 61 62 6c 65 3e 0a 7d 0a 0a 0a  r>.</table>.}...
89e0: 53 65 63 74 69 6f 6e 20 49 4e 53 45 52 54 20 69  Section INSERT i
89f0: 6e 73 65 72 74 0a 0a 53 79 6e 74 61 78 20 7b 73  nsert..Syntax {s
8a00: 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a  ql-statement} {.
8a10: 49 4e 53 45 52 54 20 5b 4f 52 20 3c 63 6f 6e 66  INSERT [OR <conf
8a20: 6c 69 63 74 2d 61 6c 67 6f 72 69 74 68 6d 3e 5d  lict-algorithm>]
8a30: 20 49 4e 54 4f 20 3c 74 61 62 6c 65 2d 6e 61 6d   INTO <table-nam
8a40: 65 3e 20 5b 28 3c 63 6f 6c 75 6d 6e 2d 6c 69 73  e> [(<column-lis
8a50: 74 3e 29 5d 20 56 41 4c 55 45 53 28 3c 76 61 6c  t>)] VALUES(<val
8a60: 75 65 2d 6c 69 73 74 3e 29 20 7c 0a 49 4e 53 45  ue-list>) |.INSE
8a70: 52 54 20 5b 4f 52 20 3c 63 6f 6e 66 6c 69 63 74  RT [OR <conflict
8a80: 2d 61 6c 67 6f 72 69 74 68 6d 3e 5d 20 49 4e 54  -algorithm>] INT
8a90: 4f 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 20 5b  O <table-name> [
8aa0: 28 3c 63 6f 6c 75 6d 6e 2d 6c 69 73 74 3e 29 5d  (<column-list>)]
8ab0: 20 3c 73 65 6c 65 63 74 2d 73 74 61 74 65 6d 65   <select-stateme
8ac0: 6e 74 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70  nt>.}..puts {.<p
8ad0: 3e 54 68 65 20 49 4e 53 45 52 54 20 73 74 61 74  >The INSERT stat
8ae0: 65 6d 65 6e 74 20 63 6f 6d 65 73 20 69 6e 20 74  ement comes in t
8af0: 77 6f 20 62 61 73 69 63 20 66 6f 72 6d 73 2e 20  wo basic forms. 
8b00: 20 54 68 65 20 66 69 72 73 74 20 66 6f 72 6d 0a   The first form.
8b10: 28 77 69 74 68 20 74 68 65 20 22 56 41 4c 55 45  (with the "VALUE
8b20: 53 22 20 6b 65 79 77 6f 72 64 29 20 63 72 65 61  S" keyword) crea
8b30: 74 65 73 20 61 20 73 69 6e 67 6c 65 20 6e 65 77  tes a single new
8b40: 20 72 6f 77 20 69 6e 20 61 6e 20 65 78 69 73 74   row in an exist
8b50: 69 6e 67 20 74 61 62 6c 65 2e 0a 49 66 20 6e 6f  ing table..If no
8b60: 20 63 6f 6c 75 6d 6e 2d 6c 69 73 74 20 69 73 20   column-list is 
8b70: 73 70 65 63 69 66 69 65 64 20 74 68 65 6e 20 74  specified then t
8b80: 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 76 61 6c  he number of val
8b90: 75 65 73 20 6d 75 73 74 0a 62 65 20 74 68 65 20  ues must.be the 
8ba0: 73 61 6d 65 20 61 73 20 74 68 65 20 6e 75 6d 62  same as the numb
8bb0: 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e  er of columns in
8bc0: 20 74 68 65 20 74 61 62 6c 65 2e 20 20 49 66 20   the table.  If 
8bd0: 61 20 63 6f 6c 75 6d 6e 2d 6c 69 73 74 0a 69 73  a column-list.is
8be0: 20 73 70 65 63 69 66 69 65 64 2c 20 74 68 65 6e   specified, then
8bf0: 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 76   the number of v
8c00: 61 6c 75 65 73 20 6d 75 73 74 20 6d 61 74 63 68  alues must match
8c10: 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 0a 73   the number of.s
8c20: 70 65 63 69 66 69 65 64 20 63 6f 6c 75 6d 6e 73  pecified columns
8c30: 2e 20 20 43 6f 6c 75 6d 6e 73 20 6f 66 20 74 68  .  Columns of th
8c40: 65 20 74 61 62 6c 65 20 74 68 61 74 20 64 6f 20  e table that do 
8c50: 6e 6f 74 20 61 70 70 65 61 72 20 69 6e 20 74 68  not appear in th
8c60: 65 0a 63 6f 6c 75 6d 6e 20 6c 69 73 74 20 61 72  e.column list ar
8c70: 65 20 66 69 6c 6c 20 77 69 74 68 20 74 68 65 20  e fill with the 
8c80: 64 65 66 61 75 6c 74 20 76 61 6c 75 65 2c 20 6f  default value, o
8c90: 72 20 77 69 74 68 20 4e 55 4c 4c 20 69 66 20 6e  r with NULL if n
8ca0: 6f 74 0a 64 65 66 61 75 6c 74 20 76 61 6c 75 65  ot.default value
8cb0: 20 69 73 20 73 70 65 63 69 66 69 65 64 2e 0a 3c   is specified..<
8cc0: 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 73 65 63 6f  /p>..<p>The seco
8cd0: 6e 64 20 66 6f 72 6d 20 6f 66 20 74 68 65 20 49  nd form of the I
8ce0: 4e 53 45 52 54 20 73 74 61 74 65 6d 65 6e 74 20  NSERT statement 
8cf0: 74 61 6b 65 73 20 69 74 20 64 61 74 61 20 66 72  takes it data fr
8d00: 6f 6d 20 61 0a 53 45 4c 45 43 54 20 73 74 61 74  om a.SELECT stat
8d10: 65 6d 65 6e 74 2e 20 20 54 68 65 20 6e 75 6d 62  ement.  The numb
8d20: 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e  er of columns in
8d30: 20 74 68 65 20 72 65 73 75 6c 74 20 6f 66 20 74   the result of t
8d40: 68 65 0a 53 45 4c 45 43 54 20 6d 75 73 74 20 65  he.SELECT must e
8d50: 78 61 63 74 6c 79 20 6d 61 74 63 68 20 74 68 65  xactly match the
8d60: 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d   number of colum
8d70: 6e 73 20 69 6e 20 74 68 65 20 74 61 62 6c 65 20  ns in the table 
8d80: 69 66 0a 6e 6f 20 63 6f 6c 75 6d 6e 20 6c 69 73  if.no column lis
8d90: 74 20 69 73 20 73 70 65 63 69 66 69 65 64 2c 20  t is specified, 
8da0: 6f 72 20 69 74 20 6d 75 73 74 20 6d 61 74 63 68  or it must match
8db0: 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 63   the number of c
8dc0: 6f 6c 75 6d 6e 73 0a 6e 61 6d 65 20 69 6e 20 74  olumns.name in t
8dd0: 68 65 20 63 6f 6c 75 6d 6e 20 6c 69 73 74 2e 20  he column list. 
8de0: 20 41 20 6e 65 77 20 65 6e 74 72 79 20 69 73 20   A new entry is 
8df0: 6d 61 64 65 20 69 6e 20 74 68 65 20 74 61 62 6c  made in the tabl
8e00: 65 0a 66 6f 72 20 65 76 65 72 79 20 72 6f 77 20  e.for every row 
8e10: 6f 66 20 74 68 65 20 53 45 4c 45 43 54 20 72 65  of the SELECT re
8e20: 73 75 6c 74 2e 20 20 54 68 65 20 53 45 4c 45 43  sult.  The SELEC
8e30: 54 20 6d 61 79 20 62 65 20 73 69 6d 70 6c 65 0a  T may be simple.
8e40: 6f 72 20 63 6f 6d 70 6f 75 6e 64 2e 20 20 49 66  or compound.  If
8e50: 20 74 68 65 20 53 45 4c 45 43 54 20 73 74 61 74   the SELECT stat
8e60: 65 6d 65 6e 74 20 68 61 73 20 61 6e 20 4f 52 44  ement has an ORD
8e70: 45 52 20 42 59 20 63 6c 61 75 73 65 2c 0a 74 68  ER BY clause,.th
8e80: 65 20 4f 52 44 45 52 20 42 59 20 69 73 20 69 67  e ORDER BY is ig
8e90: 6e 6f 72 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54  nored.</p>..<p>T
8ea0: 68 65 20 6f 70 74 69 6f 6e 61 6c 20 63 6f 6e 66  he optional conf
8eb0: 6c 69 63 74 2d 63 6c 61 75 73 65 20 61 6c 6c 6f  lict-clause allo
8ec0: 77 73 20 74 68 65 20 73 70 65 63 69 66 69 63 61  ws the specifica
8ed0: 74 69 6f 6e 20 6f 66 20 61 6e 20 61 6c 74 65 72  tion of an alter
8ee0: 6e 61 74 69 76 65 0a 63 6f 6e 73 74 72 61 69 6e  native.constrain
8ef0: 74 20 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c  t conflict resol
8f00: 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 20  ution algorithm 
8f10: 74 6f 20 75 73 65 20 64 75 72 69 6e 67 20 74 68  to use during th
8f20: 69 73 20 6f 6e 65 20 63 6f 6d 6d 61 6e 64 2e 0a  is one command..
8f30: 53 65 65 20 74 68 65 20 73 65 63 74 69 6f 6e 20  See the section 
8f40: 74 69 74 6c 65 64 0a 3c 61 20 68 72 65 66 3d 22  titled.<a href="
8f50: 23 63 6f 6e 66 6c 69 63 74 22 3e 4f 4e 20 43 4f  #conflict">ON CO
8f60: 4e 46 4c 49 43 54 3c 2f 61 3e 20 66 6f 72 20 61  NFLICT</a> for a
8f70: 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d  dditional inform
8f80: 61 74 69 6f 6e 2e 0a 46 6f 72 20 63 6f 6d 70 61  ation..For compa
8f90: 74 69 62 69 6c 69 74 79 20 77 69 74 68 20 4d 79  tibility with My
8fa0: 53 51 4c 2c 20 74 68 65 20 70 61 72 73 65 72 20  SQL, the parser 
8fb0: 61 6c 6c 6f 77 73 20 74 68 65 20 75 73 65 20 6f  allows the use o
8fc0: 66 20 74 68 65 0a 73 69 6e 67 6c 65 20 6b 65 79  f the.single key
8fd0: 77 6f 72 64 20 3c 61 20 68 72 65 66 3d 22 23 72  word <a href="#r
8fe0: 65 70 6c 61 63 65 22 3e 52 45 50 4c 41 43 45 3c  eplace">REPLACE<
8ff0: 2f 61 3e 20 61 73 20 61 6e 20 61 6c 69 61 73 20  /a> as an alias 
9000: 66 6f 72 20 22 49 4e 53 45 52 54 20 4f 52 20 52  for "INSERT OR R
9010: 45 50 4c 41 43 45 22 2e 0a 3c 2f 70 3e 0a 7d 0a  EPLACE"..</p>.}.
9020: 0a 0a 53 65 63 74 69 6f 6e 20 7b 4f 4e 20 43 4f  ..Section {ON CO
9030: 4e 46 4c 49 43 54 20 63 6c 61 75 73 65 7d 20 63  NFLICT clause} c
9040: 6f 6e 66 6c 69 63 74 0a 0a 53 79 6e 74 61 78 20  onflict..Syntax 
9050: 7b 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65  {conflict-clause
9060: 7d 20 7b 0a 4f 4e 20 43 4f 4e 46 4c 49 43 54 20  } {.ON CONFLICT 
9070: 3c 63 6f 6e 66 6c 69 63 74 2d 61 6c 67 6f 72 69  <conflict-algori
9080: 74 68 6d 3e 0a 7d 20 7b 63 6f 6e 66 6c 69 63 74  thm>.} {conflict
9090: 2d 61 6c 67 6f 72 69 74 68 6d 7d 20 7b 0a 52 4f  -algorithm} {.RO
90a0: 4c 4c 42 41 43 4b 20 7c 20 41 42 4f 52 54 20 7c  LLBACK | ABORT |
90b0: 20 46 41 49 4c 20 7c 20 49 47 4e 4f 52 45 20 7c   FAIL | IGNORE |
90c0: 20 52 45 50 4c 41 43 45 0a 7d 0a 0a 70 75 74 73   REPLACE.}..puts
90d0: 20 7b 0a 3c 70 3e 54 68 65 20 4f 4e 20 43 4f 4e   {.<p>The ON CON
90e0: 46 4c 49 43 54 20 63 6c 61 75 73 65 20 69 73 20  FLICT clause is 
90f0: 6e 6f 74 20 61 20 73 65 70 61 72 61 74 65 20 53  not a separate S
9100: 51 4c 20 63 6f 6d 6d 61 6e 64 2e 20 20 49 74 20  QL command.  It 
9110: 69 73 20 61 0a 6e 6f 6e 2d 73 74 61 6e 64 61 72  is a.non-standar
9120: 64 20 63 6c 61 75 73 65 20 74 68 61 74 20 63 61  d clause that ca
9130: 6e 20 61 70 70 65 61 72 20 69 6e 20 6d 61 6e 79  n appear in many
9140: 20 6f 74 68 65 72 20 53 51 4c 20 63 6f 6d 6d 61   other SQL comma
9150: 6e 64 73 2e 0a 49 74 20 69 73 20 67 69 76 65 6e  nds..It is given
9160: 20 69 74 73 20 6f 77 6e 20 73 65 63 74 69 6f 6e   its own section
9170: 20 69 6e 20 74 68 69 73 20 64 6f 63 75 6d 65 6e   in this documen
9180: 74 20 62 65 63 61 75 73 65 20 69 74 20 69 73 20  t because it is 
9190: 6e 6f 74 0a 70 61 72 74 20 6f 66 20 73 74 61 6e  not.part of stan
91a0: 64 61 72 64 20 53 51 4c 20 61 6e 64 20 74 68 65  dard SQL and the
91b0: 72 65 66 6f 72 65 20 6d 69 67 68 74 20 6e 6f 74  refore might not
91c0: 20 62 65 20 66 61 6d 69 6c 69 61 72 2e 3c 2f 70   be familiar.</p
91d0: 3e 0a 0a 3c 70 3e 54 68 65 20 73 79 6e 74 61 78  >..<p>The syntax
91e0: 20 66 6f 72 20 74 68 65 20 4f 4e 20 43 4f 4e 46   for the ON CONF
91f0: 4c 49 43 54 20 63 6c 61 75 73 65 20 69 73 20 61  LICT clause is a
9200: 73 20 73 68 6f 77 6e 20 61 62 6f 76 65 20 66 6f  s shown above fo
9210: 72 0a 74 68 65 20 43 52 45 41 54 45 20 54 41 42  r.the CREATE TAB
9220: 4c 45 2c 20 43 52 45 41 54 45 20 49 4e 44 45 58  LE, CREATE INDEX
9230: 2c 20 61 6e 64 20 42 45 47 49 4e 20 54 52 41 4e  , and BEGIN TRAN
9240: 53 41 43 54 49 4f 4e 20 63 6f 6d 6d 61 6e 64 73  SACTION commands
9250: 2e 0a 46 6f 72 20 74 68 65 20 43 4f 50 59 2c 20  ..For the COPY, 
9260: 49 4e 53 45 52 54 2c 20 61 6e 64 20 55 50 44 41  INSERT, and UPDA
9270: 54 45 20 63 6f 6d 6d 61 6e 64 73 2c 20 74 68 65  TE commands, the
9280: 20 6b 65 79 77 6f 72 64 73 0a 22 4f 4e 20 43 4f   keywords."ON CO
9290: 4e 46 4c 49 43 54 22 20 61 72 65 20 72 65 70 6c  NFLICT" are repl
92a0: 61 63 65 64 20 62 79 20 22 4f 52 22 2c 20 74 6f  aced by "OR", to
92b0: 20 6d 61 6b 65 20 74 68 65 20 73 79 6e 74 61 78   make the syntax
92c0: 20 73 65 65 6d 20 6d 6f 72 65 0a 6e 61 74 75 72   seem more.natur
92d0: 61 6c 2e 20 20 42 75 74 20 74 68 65 20 6d 65 61  al.  But the mea
92e0: 6e 69 6e 67 20 6f 66 20 74 68 65 20 63 6c 61 75  ning of the clau
92f0: 73 65 20 69 73 20 74 68 65 20 73 61 6d 65 20 65  se is the same e
9300: 69 74 68 65 72 20 77 61 79 2e 3c 2f 70 3e 0a 0a  ither way.</p>..
9310: 3c 70 3e 54 68 65 20 4f 4e 20 43 4f 4e 46 4c 49  <p>The ON CONFLI
9320: 43 54 20 63 6c 61 75 73 65 20 73 70 65 63 69 66  CT clause specif
9330: 69 65 73 20 61 6e 20 61 6c 67 6f 72 69 74 68 6d  ies an algorithm
9340: 20 75 73 65 64 20 74 6f 20 72 65 73 6f 6c 76 65   used to resolve
9350: 0a 63 6f 6e 73 74 72 61 69 6e 74 20 63 6f 6e 66  .constraint conf
9360: 6c 69 63 74 73 2e 20 20 54 68 65 72 65 20 61 72  licts.  There ar
9370: 65 20 66 69 76 65 20 63 68 6f 69 63 65 73 3a 20  e five choices: 
9380: 52 4f 4c 4c 42 41 43 4b 2c 20 41 42 4f 52 54 2c  ROLLBACK, ABORT,
9390: 0a 46 41 49 4c 2c 20 49 47 4e 4f 52 45 2c 20 61  .FAIL, IGNORE, a
93a0: 6e 64 20 52 45 50 4c 41 43 45 2e 20 54 68 65 20  nd REPLACE. The 
93b0: 64 65 66 61 75 6c 74 20 61 6c 67 6f 72 69 74 68  default algorith
93c0: 6d 20 69 73 20 41 42 4f 52 54 2e 20 20 54 68 69  m is ABORT.  Thi
93d0: 73 0a 69 73 20 77 68 61 74 20 74 68 65 79 20 6d  s.is what they m
93e0: 65 61 6e 3a 3c 2f 70 3e 0a 0a 3c 64 6c 3e 0a 3c  ean:</p>..<dl>.<
93f0: 64 74 3e 3c 62 3e 52 4f 4c 4c 42 41 43 4b 3c 2f  dt><b>ROLLBACK</
9400: 62 3e 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 57  b></dt>.<dd><p>W
9410: 68 65 6e 20 61 20 63 6f 6e 73 74 72 61 69 6e 74  hen a constraint
9420: 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72   violation occur
9430: 73 2c 20 61 6e 20 69 6d 6d 65 64 69 61 74 65 20  s, an immediate 
9440: 52 4f 4c 4c 42 41 43 4b 0a 6f 63 63 75 72 73 2c  ROLLBACK.occurs,
9450: 20 74 68 75 73 20 65 6e 64 69 6e 67 20 74 68 65   thus ending the
9460: 20 63 75 72 72 65 6e 74 20 74 72 61 6e 73 61 63   current transac
9470: 74 69 6f 6e 2c 20 61 6e 64 20 74 68 65 20 63 6f  tion, and the co
9480: 6d 6d 61 6e 64 20 61 62 6f 72 74 73 0a 77 69 74  mmand aborts.wit
9490: 68 20 61 20 72 65 74 75 72 6e 20 63 6f 64 65 20  h a return code 
94a0: 6f 66 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52  of SQLITE_CONSTR
94b0: 41 49 4e 54 2e 20 20 49 66 20 6e 6f 20 74 72 61  AINT.  If no tra
94c0: 6e 73 61 63 74 69 6f 6e 20 69 73 0a 61 63 74 69  nsaction is.acti
94d0: 76 65 20 28 6f 74 68 65 72 20 74 68 61 6e 20 74  ve (other than t
94e0: 68 65 20 69 6d 70 6c 69 65 64 20 74 72 61 6e 73  he implied trans
94f0: 61 63 74 69 6f 6e 20 74 68 61 74 20 69 73 20 63  action that is c
9500: 72 65 61 74 65 64 20 6f 6e 20 65 76 65 72 79 0a  reated on every.
9510: 63 6f 6d 6d 61 6e 64 29 20 74 68 65 6e 20 74 68  command) then th
9520: 69 73 20 61 6c 67 6f 72 69 74 68 6d 20 77 6f 72  is algorithm wor
9530: 6b 73 20 74 68 65 20 73 61 6d 65 20 61 73 20 41  ks the same as A
9540: 42 4f 52 54 2e 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a  BORT.</p></dd>..
9550: 3c 64 74 3e 3c 62 3e 41 42 4f 52 54 3c 2f 62 3e  <dt><b>ABORT</b>
9560: 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 57 68 65  </dt>.<dd><p>Whe
9570: 6e 20 61 20 63 6f 6e 73 74 72 61 69 6e 74 20 76  n a constraint v
9580: 69 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72 73 2c  iolation occurs,
9590: 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20 62 61 63   the command bac
95a0: 6b 73 20 6f 75 74 0a 61 6e 79 20 70 72 69 6f 72  ks out.any prior
95b0: 20 63 68 61 6e 67 65 73 20 69 74 20 6d 69 67 68   changes it migh
95c0: 74 20 68 61 76 65 20 6d 61 64 65 20 61 6e 64 20  t have made and 
95d0: 61 62 6f 72 74 73 20 77 69 74 68 20 61 20 72 65  aborts with a re
95e0: 74 75 72 6e 20 63 6f 64 65 0a 6f 66 20 53 51 4c  turn code.of SQL
95f0: 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 2e 20  ITE_CONSTRAINT. 
9600: 20 42 75 74 20 6e 6f 20 52 4f 4c 4c 42 41 43 4b   But no ROLLBACK
9610: 20 69 73 20 65 78 65 63 75 74 65 64 20 73 6f 20   is executed so 
9620: 63 68 61 6e 67 65 73 0a 66 72 6f 6d 20 70 72 69  changes.from pri
9630: 6f 72 20 63 6f 6d 6d 61 6e 64 73 20 77 69 74 68  or commands with
9640: 69 6e 20 74 68 65 20 73 61 6d 65 20 74 72 61 6e  in the same tran
9650: 73 61 63 74 69 6f 6e 0a 61 72 65 20 70 72 65 73  saction.are pres
9660: 65 72 76 65 64 2e 20 20 54 68 69 73 20 69 73 20  erved.  This is 
9670: 74 68 65 20 64 65 66 61 75 6c 74 20 62 65 68 61  the default beha
9680: 76 69 6f 72 2e 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a  vior.</p></dd>..
9690: 3c 64 74 3e 3c 62 3e 46 41 49 4c 3c 2f 62 3e 3c  <dt><b>FAIL</b><
96a0: 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 57 68 65 6e  /dt>.<dd><p>When
96b0: 20 61 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69   a constraint vi
96c0: 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72 73 2c 20  olation occurs, 
96d0: 74 68 65 20 63 6f 6d 6d 61 6e 64 20 61 62 6f 72  the command abor
96e0: 74 73 20 77 69 74 68 20 61 0a 72 65 74 75 72 6e  ts with a.return
96f0: 20 63 6f 64 65 20 53 51 4c 49 54 45 5f 43 4f 4e   code SQLITE_CON
9700: 53 54 52 41 49 4e 54 2e 20 20 42 75 74 20 61 6e  STRAINT.  But an
9710: 79 20 63 68 61 6e 67 65 73 20 74 6f 20 74 68 65  y changes to the
9720: 20 64 61 74 61 62 61 73 65 20 74 68 61 74 0a 74   database that.t
9730: 68 65 20 63 6f 6d 6d 61 6e 64 20 6d 61 64 65 20  he command made 
9740: 70 72 69 6f 72 20 74 6f 20 65 6e 63 6f 75 6e 74  prior to encount
9750: 65 72 69 6e 67 20 74 68 65 20 63 6f 6e 73 74 72  ering the constr
9760: 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 0a 61  aint violation.a
9770: 72 65 20 70 72 65 73 65 72 76 65 64 20 61 6e 64  re preserved and
9780: 20 61 72 65 20 6e 6f 74 20 62 61 63 6b 65 64 20   are not backed 
9790: 6f 75 74 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c  out.  For exampl
97a0: 65 2c 20 69 66 20 61 6e 20 55 50 44 41 54 45 0a  e, if an UPDATE.
97b0: 73 74 61 74 65 6d 65 6e 74 20 65 6e 63 6f 75 6e  statement encoun
97c0: 74 65 72 65 64 20 61 20 63 6f 6e 73 74 72 61 69  tered a constrai
97d0: 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 6e 20  nt violation on 
97e0: 74 68 65 20 31 30 30 74 68 20 72 6f 77 20 74 68  the 100th row th
97f0: 61 74 0a 69 74 20 61 74 74 65 6d 70 74 73 20 74  at.it attempts t
9800: 6f 20 75 70 64 61 74 65 2c 20 74 68 65 6e 20 74  o update, then t
9810: 68 65 20 66 69 72 73 74 20 39 39 20 72 6f 77 20  he first 99 row 
9820: 63 68 61 6e 67 65 73 20 61 72 65 20 70 72 65 73  changes are pres
9830: 65 72 76 65 64 0a 62 75 74 20 63 68 61 6e 67 65  erved.but change
9840: 73 20 74 6f 20 72 6f 77 73 20 31 30 30 20 61 6e  s to rows 100 an
9850: 64 20 62 65 79 6f 6e 64 20 6e 65 76 65 72 20 6f  d beyond never o
9860: 63 63 75 72 2e 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a  ccur.</p></dd>..
9870: 3c 64 74 3e 3c 62 3e 49 47 4e 4f 52 45 3c 2f 62  <dt><b>IGNORE</b
9880: 3e 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 57 68  ></dt>.<dd><p>Wh
9890: 65 6e 20 61 20 63 6f 6e 73 74 72 61 69 6e 74 20  en a constraint 
98a0: 76 69 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72 73  violation occurs
98b0: 2c 20 74 68 65 20 6f 6e 65 20 72 6f 77 20 74 68  , the one row th
98c0: 61 74 20 63 6f 6e 74 61 69 6e 73 0a 74 68 65 20  at contains.the 
98d0: 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61  constraint viola
98e0: 74 69 6f 6e 20 69 73 20 6e 6f 74 20 69 6e 73 65  tion is not inse
98f0: 72 74 65 64 20 6f 72 20 63 68 61 6e 67 65 64 2e  rted or changed.
9900: 20 20 42 75 74 20 74 68 65 20 63 6f 6d 6d 61 6e    But the comman
9910: 64 0a 63 6f 6e 74 69 6e 75 65 73 20 65 78 65 63  d.continues exec
9920: 75 74 69 6e 67 20 6e 6f 72 6d 61 6c 6c 79 2e 20  uting normally. 
9930: 20 4f 74 68 65 72 20 72 6f 77 73 20 62 65 66 6f   Other rows befo
9940: 72 65 20 61 6e 64 20 61 66 74 65 72 20 74 68 65  re and after the
9950: 20 72 6f 77 20 74 68 61 74 0a 63 6f 6e 74 61 69   row that.contai
9960: 6e 65 64 20 74 68 65 20 63 6f 6e 73 74 72 61 69  ned the constrai
9970: 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 63 6f 6e  nt violation con
9980: 74 69 6e 75 65 20 74 6f 20 62 65 20 69 6e 73 65  tinue to be inse
9990: 72 74 65 64 20 6f 72 20 75 70 64 61 74 65 64 0a  rted or updated.
99a0: 6e 6f 72 6d 61 6c 6c 79 2e 20 20 4e 6f 20 65 72  normally.  No er
99b0: 72 6f 72 20 69 73 20 72 65 74 75 72 6e 65 64 2e  ror is returned.
99c0: 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a 3c 64 74 3e 3c  </p></dd>..<dt><
99d0: 62 3e 52 45 50 4c 41 43 45 3c 2f 62 3e 3c 2f 64  b>REPLACE</b></d
99e0: 74 3e 0a 3c 64 64 3e 3c 70 3e 57 68 65 6e 20 61  t>.<dd><p>When a
99f0: 20 55 4e 49 51 55 45 20 63 6f 6e 73 74 72 61 69   UNIQUE constrai
9a00: 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 63 63  nt violation occ
9a10: 75 72 73 2c 20 74 68 65 20 70 72 65 2d 65 78 69  urs, the pre-exi
9a20: 73 74 69 6e 67 20 72 6f 77 73 0a 74 68 61 74 20  sting rows.that 
9a30: 61 72 65 20 63 61 75 73 69 6e 67 20 74 68 65 20  are causing the 
9a40: 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61  constraint viola
9a50: 74 69 6f 6e 20 61 72 65 20 72 65 6d 6f 76 65 64  tion are removed
9a60: 20 70 72 69 6f 72 20 74 6f 20 69 6e 73 65 72 74   prior to insert
9a70: 69 6e 67 0a 6f 72 20 75 70 64 61 74 69 6e 67 20  ing.or updating 
9a80: 74 68 65 20 63 75 72 72 65 6e 74 20 72 6f 77 2e  the current row.
9a90: 20 20 54 68 75 73 20 74 68 65 20 69 6e 73 65 72    Thus the inser
9aa0: 74 20 6f 72 20 75 70 64 61 74 65 20 61 6c 77 61  t or update alwa
9ab0: 79 73 20 6f 63 63 75 72 73 2e 0a 54 68 65 20 63  ys occurs..The c
9ac0: 6f 6d 6d 61 6e 64 20 63 6f 6e 74 69 6e 75 65 73  ommand continues
9ad0: 20 65 78 65 63 75 74 69 6e 67 20 6e 6f 72 6d 61   executing norma
9ae0: 6c 6c 79 2e 20 20 4e 6f 20 65 72 72 6f 72 20 69  lly.  No error i
9af0: 73 20 72 65 74 75 72 6e 65 64 2e 0a 49 66 20 61  s returned..If a
9b00: 20 4e 4f 54 20 4e 55 4c 4c 20 63 6f 6e 73 74 72   NOT NULL constr
9b10: 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 6f  aint violation o
9b20: 63 63 75 72 73 2c 20 74 68 65 20 4e 55 4c 4c 20  ccurs, the NULL 
9b30: 76 61 6c 75 65 20 69 73 20 72 65 70 6c 61 63 65  value is replace
9b40: 64 0a 62 79 20 74 68 65 20 64 65 66 61 75 6c 74  d.by the default
9b50: 20 76 61 6c 75 65 20 66 6f 72 20 74 68 61 74 20   value for that 
9b60: 63 6f 6c 75 6d 6e 2e 20 20 49 66 20 74 68 65 20  column.  If the 
9b70: 63 6f 6c 75 6d 6e 20 68 61 73 20 6e 6f 20 64 65  column has no de
9b80: 66 61 75 6c 74 0a 76 61 6c 75 65 2c 20 74 68 65  fault.value, the
9b90: 6e 20 74 68 65 20 41 42 4f 52 54 20 61 6c 67 6f  n the ABORT algo
9ba0: 72 69 74 68 6d 20 69 73 20 75 73 65 64 2e 3c 2f  rithm is used.</
9bb0: 70 3e 0a 0a 3c 70 3e 57 68 65 6e 20 74 68 69 73  p>..<p>When this
9bc0: 20 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75   conflict resolu
9bd0: 74 69 6f 6e 20 73 74 72 61 74 65 67 79 20 64 65  tion strategy de
9be0: 6c 65 74 65 20 72 6f 77 73 20 69 6e 20 6f 72 64  lete rows in ord
9bf0: 65 72 20 74 6f 0a 73 74 61 74 69 73 66 79 20 61  er to.statisfy a
9c00: 20 63 6f 6e 73 74 72 61 69 6e 74 2c 20 69 74 20   constraint, it 
9c10: 64 6f 65 73 20 6e 6f 74 20 69 6e 76 6f 6b 65 20  does not invoke 
9c20: 64 65 6c 65 74 65 20 74 72 69 67 67 65 72 73 20  delete triggers 
9c30: 6f 6e 20 74 68 6f 73 65 0a 72 6f 77 73 2e 20 20  on those.rows.  
9c40: 42 75 74 20 74 68 61 74 20 6d 61 79 20 63 68 61  But that may cha
9c50: 6e 67 65 20 69 6e 20 61 20 66 75 74 75 72 65 20  nge in a future 
9c60: 72 65 6c 65 61 73 65 2e 3c 2f 70 3e 0a 0a 3c 2f  release.</p>..</
9c70: 64 64 3e 0a 3c 2f 64 6c 3e 0a 0a 3c 70 3e 0a 54  dd>.</dl>..<p>.T
9c80: 68 65 20 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f  he conflict reso
9c90: 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d  lution algorithm
9ca0: 20 63 61 6e 20 62 65 20 73 70 65 63 69 66 69 65   can be specifie
9cb0: 64 20 69 6e 20 74 68 72 65 65 20 70 6c 61 63 65  d in three place
9cc0: 73 2c 0a 69 6e 20 6f 72 64 65 72 20 66 72 6f 6d  s,.in order from
9cd0: 20 6c 6f 77 65 73 74 20 74 6f 20 68 69 67 68 65   lowest to highe
9ce0: 73 74 20 70 72 65 63 65 64 65 6e 63 65 3a 0a 3c  st precedence:.<
9cf0: 2f 70 3e 0a 0a 3c 6f 6c 3e 0a 3c 6c 69 3e 3c 70  /p>..<ol>.<li><p
9d00: 3e 0a 4f 6e 20 61 20 42 45 47 49 4e 20 54 52 41  >.On a BEGIN TRA
9d10: 4e 53 41 43 54 49 4f 4e 20 63 6f 6d 6d 61 6e 64  NSACTION command
9d20: 2e 0a 3c 2f 70 3e 3c 2f 6c 69 3e 0a 0a 3c 6c 69  ..</p></li>..<li
9d30: 3e 3c 70 3e 0a 4f 6e 20 69 6e 64 69 76 69 64 75  ><p>.On individu
9d40: 61 6c 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 77  al constraints w
9d50: 69 74 68 69 6e 20 61 20 43 52 45 41 54 45 20 54  ithin a CREATE T
9d60: 41 42 4c 45 20 6f 72 20 43 52 45 41 54 45 20 49  ABLE or CREATE I
9d70: 4e 44 45 58 0a 73 74 61 74 65 6d 65 6e 74 2e 0a  NDEX.statement..
9d80: 3c 2f 70 3e 3c 2f 6c 69 3e 0a 0a 3c 6c 69 3e 3c  </p></li>..<li><
9d90: 70 3e 0a 49 6e 20 74 68 65 20 4f 52 20 63 6c 61  p>.In the OR cla
9da0: 75 73 65 20 6f 66 20 61 20 43 4f 50 59 2c 20 49  use of a COPY, I
9db0: 4e 53 45 52 54 2c 20 6f 72 20 55 50 44 41 54 45  NSERT, or UPDATE
9dc0: 20 63 6f 6d 6d 61 6e 64 2e 0a 3c 2f 70 3e 3c 2f   command..</p></
9dd0: 6c 69 3e 0a 3c 2f 6f 6c 3e 0a 0a 3c 70 3e 54 68  li>.</ol>..<p>Th
9de0: 65 20 61 6c 67 6f 72 69 74 68 6d 20 73 70 65 63  e algorithm spec
9df0: 69 66 69 65 64 20 69 6e 20 74 68 65 20 4f 52 20  ified in the OR 
9e00: 63 6c 61 75 73 65 20 6f 66 20 61 20 43 4f 50 59  clause of a COPY
9e10: 2c 20 49 4e 53 45 52 54 2c 20 6f 72 20 55 50 44  , INSERT, or UPD
9e20: 41 54 45 0a 6f 76 65 72 72 69 64 65 73 20 61 6e  ATE.overrides an
9e30: 79 20 61 6c 67 6f 72 69 74 68 6d 20 73 70 65 63  y algorithm spec
9e40: 69 66 69 65 64 20 62 79 20 61 20 43 52 45 41 54  ified by a CREAT
9e50: 45 20 54 41 42 4c 45 20 6f 72 20 43 52 45 41 54  E TABLE or CREAT
9e60: 45 20 49 4e 44 45 58 2e 0a 54 68 65 20 61 6c 67  E INDEX..The alg
9e70: 6f 72 69 74 68 6d 20 73 70 65 63 69 66 69 65 64  orithm specified
9e80: 20 77 69 74 68 69 6e 20 61 20 43 52 45 41 54 45   within a CREATE
9e90: 20 54 41 42 4c 45 20 6f 72 20 43 52 45 41 54 45   TABLE or CREATE
9ea0: 20 49 4e 44 45 58 20 77 69 6c 6c 2c 20 69 6e 20   INDEX will, in 
9eb0: 74 75 72 6e 2c 0a 6f 76 65 72 72 69 64 65 20 74  turn,.override t
9ec0: 68 65 20 61 6c 67 6f 72 69 74 68 6d 20 73 70 65  he algorithm spe
9ed0: 63 69 66 69 65 64 20 62 79 20 61 20 42 45 47 49  cified by a BEGI
9ee0: 4e 20 54 52 41 4e 53 41 43 54 49 4f 4e 20 63 6f  N TRANSACTION co
9ef0: 6d 6d 61 6e 64 2e 0a 49 66 20 6e 6f 20 61 6c 67  mmand..If no alg
9f00: 6f 72 69 74 68 6d 20 69 73 20 73 70 65 63 69 66  orithm is specif
9f10: 69 65 64 20 61 6e 79 77 68 65 72 65 2c 20 74 68  ied anywhere, th
9f20: 65 20 41 42 4f 52 54 20 61 6c 67 6f 72 69 74 68  e ABORT algorith
9f30: 6d 20 69 73 20 75 73 65 64 2e 3c 2f 70 3e 0a 0a  m is used.</p>..
9f40: 7d 0a 23 20 3c 70 3e 46 6f 72 20 61 64 64 69 74  }.# <p>For addit
9f50: 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f  ional informatio
9f60: 6e 2c 20 73 65 65 20 0a 23 20 3c 61 20 68 72 65  n, see .# <a hre
9f70: 66 3d 22 63 6f 6e 66 6c 69 63 74 2e 68 74 6d 6c  f="conflict.html
9f80: 22 3e 63 6f 6e 66 6c 69 63 74 2e 68 74 6d 6c 3c  ">conflict.html<
9f90: 2f 61 3e 2e 3c 2f 70 3e 0a 0a 0a 53 65 63 74 69  /a>.</p>...Secti
9fa0: 6f 6e 20 50 52 41 47 4d 41 20 70 72 61 67 6d 61  on PRAGMA pragma
9fb0: 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74  ..Syntax {sql-st
9fc0: 61 74 65 6d 65 6e 74 7d 20 7b 0a 50 52 41 47 4d  atement} {.PRAGM
9fd0: 41 20 3c 6e 61 6d 65 3e 20 5b 3d 20 3c 76 61 6c  A <name> [= <val
9fe0: 75 65 3e 5d 20 7c 0a 50 52 41 47 4d 41 20 3c 66  ue>] |.PRAGMA <f
9ff0: 75 6e 63 74 69 6f 6e 3e 28 3c 61 72 67 3e 29 0a  unction>(<arg>).
a000: 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65  }..puts {.<p>The
a010: 20 50 52 41 47 4d 41 20 63 6f 6d 6d 61 6e 64 20   PRAGMA command 
a020: 69 73 20 75 73 65 64 20 74 6f 20 6d 6f 64 69 66  is used to modif
a030: 79 20 74 68 65 20 6f 70 65 72 61 74 69 6f 6e 20  y the operation 
a040: 6f 66 20 74 68 65 20 53 51 4c 69 74 65 20 6c 69  of the SQLite li
a050: 62 72 61 72 79 2e 0a 54 68 65 20 70 72 61 67 6d  brary..The pragm
a060: 61 20 63 6f 6d 6d 61 6e 64 20 69 73 20 65 78 70  a command is exp
a070: 65 72 69 6d 65 6e 74 61 6c 20 61 6e 64 20 73 70  erimental and sp
a080: 65 63 69 66 69 63 20 70 72 61 67 6d 61 20 73 74  ecific pragma st
a090: 61 74 65 6d 65 6e 74 73 20 6d 61 79 20 62 65 0a  atements may be.
a0a0: 72 65 6d 6f 76 65 64 20 6f 72 20 61 64 64 65 64  removed or added
a0b0: 20 69 6e 20 66 75 74 75 72 65 20 72 65 6c 65 61   in future relea
a0c0: 73 65 73 20 6f 66 20 53 51 4c 69 74 65 2e 20 20  ses of SQLite.  
a0d0: 55 73 65 20 74 68 69 73 20 63 6f 6d 6d 61 6e 64  Use this command
a0e0: 0a 77 69 74 68 20 63 61 75 74 69 6f 6e 2e 3c 2f  .with caution.</
a0f0: 70 3e 0a 0a 3c 70 3e 54 68 65 20 63 75 72 72 65  p>..<p>The curre
a100: 6e 74 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  nt implementatio
a110: 6e 20 73 75 70 70 6f 72 74 73 20 74 68 65 20 66  n supports the f
a120: 6f 6c 6c 6f 77 69 6e 67 20 70 72 61 67 6d 61 73  ollowing pragmas
a130: 3a 3c 2f 70 3e 0a 0a 3c 75 6c 3e 0a 3c 6c 69 3e  :</p>..<ul>.<li>
a140: 3c 70 3e 3c 62 3e 50 52 41 47 4d 41 20 63 61 63  <p><b>PRAGMA cac
a150: 68 65 5f 73 69 7a 65 3b 0a 20 20 20 20 20 20 20  he_size;.       
a160: 3c 62 72 3e 50 52 41 47 4d 41 20 63 61 63 68 65  <br>PRAGMA cache
a170: 5f 73 69 7a 65 20 3d 20 3c 2f 62 3e 3c 69 3e 4e  _size = </b><i>N
a180: 75 6d 62 65 72 2d 6f 66 2d 70 61 67 65 73 3c 2f  umber-of-pages</
a190: 69 3e 3c 62 3e 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20  i><b>;</b></p>. 
a1a0: 20 20 20 3c 70 3e 51 75 65 72 79 20 6f 72 20 63     <p>Query or c
a1b0: 68 61 6e 67 65 20 74 68 65 20 6d 61 78 69 6d 75  hange the maximu
a1c0: 6d 20 6e 75 6d 62 65 72 20 6f 66 20 64 61 74 61  m number of data
a1d0: 62 61 73 65 20 64 69 73 6b 20 70 61 67 65 73 20  base disk pages 
a1e0: 74 68 61 74 20 53 51 4c 69 74 65 0a 20 20 20 20  that SQLite.    
a1f0: 77 69 6c 6c 20 68 6f 6c 64 20 69 6e 20 6d 65 6d  will hold in mem
a200: 6f 72 79 20 61 74 20 6f 6e 63 65 2e 20 20 45 61  ory at once.  Ea
a210: 63 68 20 70 61 67 65 20 75 73 65 73 20 61 62 6f  ch page uses abo
a220: 75 74 20 31 2e 35 4b 20 6f 66 20 6d 65 6d 6f 72  ut 1.5K of memor
a230: 79 2e 0a 20 20 20 20 54 68 65 20 64 65 66 61 75  y..    The defau
a240: 6c 74 20 63 61 63 68 65 20 73 69 7a 65 20 69 73  lt cache size is
a250: 20 32 30 30 30 2e 20 20 49 66 20 79 6f 75 20 61   2000.  If you a
a260: 72 65 20 64 6f 69 6e 67 20 55 50 44 41 54 45 73  re doing UPDATEs
a270: 20 6f 72 20 44 45 4c 45 54 45 73 0a 20 20 20 20   or DELETEs.    
a280: 74 68 61 74 20 63 68 61 6e 67 65 20 6d 61 6e 79  that change many
a290: 20 72 6f 77 73 20 6f 66 20 61 20 64 61 74 61 62   rows of a datab
a2a0: 61 73 65 20 61 6e 64 20 79 6f 75 20 64 6f 20 6e  ase and you do n
a2b0: 6f 74 20 6d 69 6e 64 20 69 66 20 53 51 4c 69 74  ot mind if SQLit
a2c0: 65 0a 20 20 20 20 75 73 65 73 20 6d 6f 72 65 20  e.    uses more 
a2d0: 6d 65 6d 6f 72 79 2c 20 79 6f 75 20 63 61 6e 20  memory, you can 
a2e0: 69 6e 63 72 65 61 73 65 20 74 68 65 20 63 61 63  increase the cac
a2f0: 68 65 20 73 69 7a 65 20 66 6f 72 20 61 20 70 6f  he size for a po
a300: 73 73 69 62 6c 65 20 73 70 65 65 64 0a 20 20 20  ssible speed.   
a310: 20 69 6d 70 72 6f 76 65 6d 65 6e 74 2e 3c 2f 70   improvement.</p
a320: 3e 0a 20 20 20 20 3c 70 3e 57 68 65 6e 20 79 6f  >.    <p>When yo
a330: 75 20 63 68 61 6e 67 65 20 74 68 65 20 63 61 63  u change the cac
a340: 68 65 20 73 69 7a 65 20 75 73 69 6e 67 20 74 68  he size using th
a350: 65 20 63 61 63 68 65 5f 73 69 7a 65 20 70 72 61  e cache_size pra
a360: 67 6d 61 2c 20 74 68 65 0a 20 20 20 20 63 68 61  gma, the.    cha
a370: 6e 67 65 20 6f 6e 6c 79 20 65 6e 64 75 72 65 73  nge only endures
a380: 20 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74   for the current
a390: 20 73 65 73 73 69 6f 6e 2e 20 20 54 68 65 20 63   session.  The c
a3a0: 61 63 68 65 20 73 69 7a 65 20 72 65 76 65 72 74  ache size revert
a3b0: 73 0a 20 20 20 20 74 6f 20 74 68 65 20 64 65 66  s.    to the def
a3c0: 61 75 6c 74 20 76 61 6c 75 65 20 77 68 65 6e 20  ault value when 
a3d0: 74 68 65 20 64 61 74 61 62 61 73 65 20 69 73 20  the database is 
a3e0: 63 6c 6f 73 65 64 20 61 6e 64 20 72 65 6f 70 65  closed and reope
a3f0: 6e 65 64 2e 20 20 55 73 65 0a 20 20 20 20 74 68  ned.  Use.    th
a400: 65 20 3c 62 3e 64 65 66 61 75 6c 74 5f 63 61 63  e <b>default_cac
a410: 68 65 5f 73 69 7a 65 3c 2f 62 3e 20 70 72 61 67  he_size</b> prag
a420: 6d 61 20 74 6f 20 63 68 65 63 6b 20 74 68 65 20  ma to check the 
a430: 63 61 63 68 65 20 73 69 7a 65 20 70 65 72 6d 61  cache size perma
a440: 6e 65 6e 74 6c 79 0a 20 20 20 20 3c 2f 70 3e 3c  nently.    </p><
a450: 2f 6c 69 3e 0a 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e  /li>..<li><p><b>
a460: 50 52 41 47 4d 41 20 63 6f 75 6e 74 5f 63 68 61  PRAGMA count_cha
a470: 6e 67 65 73 20 3d 20 4f 4e 3b 0a 20 20 20 20 20  nges = ON;.     
a480: 20 20 3c 62 72 3e 50 52 41 47 4d 41 20 63 6f 75    <br>PRAGMA cou
a490: 6e 74 5f 63 68 61 6e 67 65 73 20 3d 20 4f 46 46  nt_changes = OFF
a4a0: 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20 20 20 20 3c 70  ;</b></p>.    <p
a4b0: 3e 57 68 65 6e 20 6f 6e 2c 20 74 68 65 20 43 4f  >When on, the CO
a4c0: 55 4e 54 5f 43 48 41 4e 47 45 53 20 70 72 61 67  UNT_CHANGES prag
a4d0: 6d 61 20 63 61 75 73 65 73 20 74 68 65 20 63 61  ma causes the ca
a4e0: 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 20  llback function 
a4f0: 74 6f 0a 20 20 20 20 62 65 20 69 6e 76 6f 6b 65  to.    be invoke
a500: 64 20 6f 6e 63 65 20 66 6f 72 20 65 61 63 68 20  d once for each 
a510: 44 45 4c 45 54 45 2c 20 49 4e 53 45 52 54 2c 20  DELETE, INSERT, 
a520: 6f 72 20 55 50 44 41 54 45 20 6f 70 65 72 61 74  or UPDATE operat
a530: 69 6f 6e 2e 20 20 54 68 65 0a 20 20 20 20 61 72  ion.  The.    ar
a540: 67 75 6d 65 6e 74 20 69 73 20 74 68 65 20 6e 75  gument is the nu
a550: 6d 62 65 72 20 6f 66 20 72 6f 77 73 20 74 68 61  mber of rows tha
a560: 74 20 77 65 72 65 20 63 68 61 6e 67 65 64 2e 3c  t were changed.<
a570: 2f 70 3e 0a 20 20 20 20 3c 70 3e 54 68 69 73 20  /p>.    <p>This 
a580: 70 72 61 67 6d 61 20 6d 61 79 20 62 65 20 72 65  pragma may be re
a590: 6d 6f 76 65 64 20 66 72 6f 6d 20 66 75 74 75 72  moved from futur
a5a0: 65 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 53 51  e versions of SQ
a5b0: 4c 69 74 65 2e 0a 20 20 20 20 43 6f 6e 73 69 64  Lite..    Consid
a5c0: 65 72 20 75 73 69 6e 67 20 74 68 65 20 3c 62 3e  er using the <b>
a5d0: 73 71 6c 69 74 65 5f 63 68 61 6e 67 65 73 28 29  sqlite_changes()
a5e0: 3c 2f 62 3e 20 41 50 49 20 66 75 6e 63 74 69 6f  </b> API functio
a5f0: 6e 20 69 6e 73 74 65 61 64 2e 3c 2f 70 3e 3c 2f  n instead.</p></
a600: 6c 69 3e 0a 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e 50  li>..<li><p><b>P
a610: 52 41 47 4d 41 20 64 65 66 61 75 6c 74 5f 63 61  RAGMA default_ca
a620: 63 68 65 5f 73 69 7a 65 3b 0a 20 20 20 20 20 20  che_size;.      
a630: 20 3c 62 72 3e 50 52 41 47 4d 41 20 64 65 66 61   <br>PRAGMA defa
a640: 75 6c 74 5f 63 61 63 68 65 5f 73 69 7a 65 20 3d  ult_cache_size =
a650: 20 3c 2f 62 3e 3c 69 3e 4e 75 6d 62 65 72 2d 6f   </b><i>Number-o
a660: 66 2d 70 61 67 65 73 3c 2f 69 3e 3c 62 3e 3b 3c  f-pages</i><b>;<
a670: 2f 62 3e 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e 51  /b></p>.    <p>Q
a680: 75 65 72 79 20 6f 72 20 63 68 61 6e 67 65 20 74  uery or change t
a690: 68 65 20 6d 61 78 69 6d 75 6d 20 6e 75 6d 62 65  he maximum numbe
a6a0: 72 20 6f 66 20 64 61 74 61 62 61 73 65 20 64 69  r of database di
a6b0: 73 6b 20 70 61 67 65 73 20 74 68 61 74 20 53 51  sk pages that SQ
a6c0: 4c 69 74 65 0a 20 20 20 20 77 69 6c 6c 20 68 6f  Lite.    will ho
a6d0: 6c 64 20 69 6e 20 6d 65 6d 6f 72 79 20 61 74 20  ld in memory at 
a6e0: 6f 6e 63 65 2e 20 20 45 61 63 68 20 70 61 67 65  once.  Each page
a6f0: 20 75 73 65 73 20 61 62 6f 75 74 20 31 2e 35 4b   uses about 1.5K
a700: 20 6f 66 20 6d 65 6d 6f 72 79 2e 0a 20 20 20 20   of memory..    
a710: 54 68 69 73 20 70 72 61 67 6d 61 20 77 6f 72 6b  This pragma work
a720: 73 20 6c 69 6b 65 20 74 68 65 20 3c 62 3e 63 61  s like the <b>ca
a730: 63 68 65 5f 73 69 7a 65 3c 2f 62 3e 20 70 72 61  che_size</b> pra
a740: 67 6d 61 20 77 69 74 68 20 74 68 65 20 61 64 64  gma with the add
a750: 69 74 69 6f 6e 0a 20 20 20 20 66 65 61 74 75 72  ition.    featur
a760: 65 20 74 68 61 74 20 69 74 20 63 68 61 6e 67 65  e that it change
a770: 73 20 74 68 65 20 63 61 63 68 65 20 73 69 7a 65  s the cache size
a780: 20 70 65 72 73 69 73 74 65 6e 74 6c 79 2e 20 20   persistently.  
a790: 57 69 74 68 20 74 68 69 73 20 70 72 61 67 6d 61  With this pragma
a7a0: 2c 0a 20 20 20 20 79 6f 75 20 63 61 6e 20 73 65  ,.    you can se
a7b0: 74 20 74 68 65 20 63 61 63 68 65 20 73 69 7a 65  t the cache size
a7c0: 20 6f 6e 63 65 20 61 6e 64 20 74 68 61 74 20 73   once and that s
a7d0: 65 74 74 69 6e 67 20 69 73 20 72 65 74 61 69 6e  etting is retain
a7e0: 65 64 20 61 6e 64 20 72 65 75 73 65 64 0a 20 20  ed and reused.  
a7f0: 20 20 65 76 65 72 79 74 69 6d 65 20 79 6f 75 20    everytime you 
a800: 72 65 6f 70 65 6e 20 74 68 65 20 64 61 74 61 62  reopen the datab
a810: 61 73 65 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a 0a 3c  ase.</p></li>..<
a820: 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d 41 20  li><p><b>PRAGMA 
a830: 64 65 66 61 75 6c 74 5f 73 79 6e 63 68 72 6f 6e  default_synchron
a840: 6f 75 73 3b 0a 20 20 20 20 20 20 20 3c 62 72 3e  ous;.       <br>
a850: 50 52 41 47 4d 41 20 64 65 66 61 75 6c 74 5f 73  PRAGMA default_s
a860: 79 6e 63 68 72 6f 6e 6f 75 73 20 3d 20 46 55 4c  ynchronous = FUL
a870: 4c 3b 0a 20 20 20 20 20 20 20 3c 62 72 3e 50 52  L;.       <br>PR
a880: 41 47 4d 41 20 64 65 66 61 75 6c 74 5f 73 79 6e  AGMA default_syn
a890: 63 68 72 6f 6e 6f 75 73 20 3d 20 4e 4f 52 4d 41  chronous = NORMA
a8a0: 4c 3b 0a 20 20 20 20 20 20 20 3c 62 72 3e 50 52  L;.       <br>PR
a8b0: 41 47 4d 41 20 64 65 66 61 75 6c 74 5f 73 79 6e  AGMA default_syn
a8c0: 63 68 72 6f 6e 6f 75 73 20 3d 20 4f 46 46 3b 3c  chronous = OFF;<
a8d0: 2f 62 3e 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e 51  /b></p>.    <p>Q
a8e0: 75 65 72 79 20 6f 72 20 63 68 61 6e 67 65 20 74  uery or change t
a8f0: 68 65 20 73 65 74 74 69 6e 67 20 6f 66 20 74 68  he setting of th
a900: 65 20 22 73 79 6e 63 68 72 6f 6e 6f 75 73 22 20  e "synchronous" 
a910: 66 6c 61 67 20 69 6e 0a 20 20 20 20 74 68 65 20  flag in.    the 
a920: 64 61 74 61 62 61 73 65 2e 20 20 57 68 65 6e 20  database.  When 
a930: 73 79 6e 63 68 72 6f 6e 6f 75 73 20 69 73 20 46  synchronous is F
a940: 55 4c 4c 2c 20 74 68 65 20 53 51 4c 69 74 65 20  ULL, the SQLite 
a950: 64 61 74 61 62 61 73 65 20 65 6e 67 69 6e 65 20  database engine 
a960: 77 69 6c 6c 0a 20 20 20 20 70 61 75 73 65 20 61  will.    pause a
a970: 74 20 63 72 69 74 69 63 61 6c 20 6d 6f 6d 65 6e  t critical momen
a980: 74 73 20 74 6f 20 6d 61 6b 65 20 73 75 72 65 20  ts to make sure 
a990: 74 68 61 74 20 64 61 74 61 20 68 61 73 20 61 63  that data has ac
a9a0: 74 75 61 6c 6c 79 20 62 65 65 6e 20 0a 20 20 20  tually been .   
a9b0: 20 77 72 69 74 74 65 6e 20 74 6f 20 74 68 65 20   written to the 
a9c0: 64 69 73 6b 20 73 75 72 66 61 63 65 20 62 65 66  disk surface bef
a9d0: 6f 72 65 20 63 6f 6e 74 69 6e 75 69 6e 67 2e 20  ore continuing. 
a9e0: 20 54 68 69 73 20 65 6e 73 75 72 65 73 20 74 68   This ensures th
a9f0: 61 74 20 69 66 0a 20 20 20 20 74 68 65 20 6f 70  at if.    the op
aa00: 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 20 63  erating system c
aa10: 72 61 73 68 65 73 20 6f 72 20 69 66 20 74 68 65  rashes or if the
aa20: 72 65 20 69 73 20 61 20 70 6f 77 65 72 20 66 61  re is a power fa
aa30: 69 6c 75 72 65 2c 20 74 68 65 20 64 61 74 61 62  ilure, the datab
aa40: 61 73 65 0a 20 20 20 20 77 69 6c 6c 20 62 65 20  ase.    will be 
aa50: 75 6e 63 6f 72 72 75 70 74 65 64 20 61 66 74 65  uncorrupted afte
aa60: 72 20 72 65 62 6f 6f 74 69 6e 67 2e 20 20 46 55  r rebooting.  FU
aa70: 4c 4c 20 73 79 6e 63 68 72 6f 6e 6f 75 73 20 69  LL synchronous i
aa80: 73 20 76 65 72 79 20 0a 20 20 20 20 73 61 66 65  s very .    safe
aa90: 2c 20 62 75 74 20 69 74 20 69 73 20 61 6c 73 6f  , but it is also
aaa0: 20 73 6c 6f 77 2e 20 20 0a 20 20 20 20 57 68 65   slow.  .    Whe
aab0: 6e 20 73 79 6e 63 68 72 6f 6e 6f 75 73 20 69 73  n synchronous is
aac0: 20 4e 4f 52 4d 41 4c 20 28 74 68 65 20 64 65 66   NORMAL (the def
aad0: 61 75 6c 74 29 2c 20 74 68 65 20 53 51 4c 69 74  ault), the SQLit
aae0: 65 20 64 61 74 61 62 61 73 65 0a 20 20 20 20 65  e database.    e
aaf0: 6e 67 69 6e 65 20 77 69 6c 6c 20 73 74 69 6c 6c  ngine will still
ab00: 20 70 61 75 73 65 20 61 74 20 74 68 65 20 6d 6f   pause at the mo
ab10: 73 74 20 63 72 69 74 69 63 61 6c 20 6d 6f 6d 65  st critical mome
ab20: 6e 74 73 2c 20 62 75 74 20 6c 65 73 73 20 6f 66  nts, but less of
ab30: 74 65 6e 0a 20 20 20 20 74 68 61 6e 20 69 6e 20  ten.    than in 
ab40: 46 55 4c 4c 20 6d 6f 64 65 2e 20 20 54 68 65 72  FULL mode.  Ther
ab50: 65 20 69 73 20 61 20 76 65 72 79 20 73 6d 61 6c  e is a very smal
ab60: 6c 20 28 74 68 6f 75 67 68 20 6e 6f 6e 2d 7a 65  l (though non-ze
ab70: 72 6f 29 20 63 68 61 6e 63 65 20 74 68 61 74 0a  ro) chance that.
ab80: 20 20 20 20 61 20 70 6f 77 65 72 20 66 61 69 6c      a power fail
ab90: 75 72 65 20 61 74 20 6a 75 73 74 20 74 68 65 20  ure at just the 
aba0: 77 72 6f 6e 67 20 74 69 6d 65 20 63 6f 75 6c 64  wrong time could
abb0: 20 63 6f 72 72 75 70 74 20 74 68 65 20 64 61 74   corrupt the dat
abc0: 61 62 61 73 65 20 69 6e 0a 20 20 20 20 4e 4f 52  abase in.    NOR
abd0: 4d 41 4c 20 6d 6f 64 65 2e 20 20 42 75 74 20 69  MAL mode.  But i
abe0: 6e 20 70 72 61 63 74 69 63 65 2c 20 79 6f 75 20  n practice, you 
abf0: 61 72 65 20 6d 6f 72 65 20 6c 69 6b 65 6c 79 20  are more likely 
ac00: 74 6f 20 73 75 66 66 65 72 0a 20 20 20 20 61 20  to suffer.    a 
ac10: 63 61 74 61 73 74 72 6f 70 68 69 63 20 64 69 73  catastrophic dis
ac20: 6b 20 66 61 69 6c 75 72 65 20 6f 72 20 73 6f 6d  k failure or som
ac30: 65 20 6f 74 68 65 72 20 75 6e 72 65 63 6f 76 65  e other unrecove
ac40: 72 61 62 6c 65 20 68 61 72 64 77 61 72 65 0a 20  rable hardware. 
ac50: 20 20 20 66 61 75 6c 74 2e 20 20 53 6f 20 4e 4f     fault.  So NO
ac60: 52 4d 41 4c 20 69 73 20 74 68 65 20 64 65 66 61  RMAL is the defa
ac70: 75 6c 74 20 6d 6f 64 65 2e 0a 20 20 20 20 57 69  ult mode..    Wi
ac80: 74 68 20 73 79 6e 63 68 72 6f 6e 6f 75 73 20 4f  th synchronous O
ac90: 46 46 2c 20 53 51 4c 69 74 65 20 63 6f 6e 74 69  FF, SQLite conti
aca0: 6e 75 65 73 20 77 69 74 68 6f 75 74 20 70 61 75  nues without pau
acb0: 73 69 6e 67 0a 20 20 20 20 61 73 20 73 6f 6f 6e  sing.    as soon
acc0: 20 61 73 20 69 74 20 68 61 73 20 68 61 6e 64 65   as it has hande
acd0: 64 20 64 61 74 61 20 6f 66 66 20 74 6f 20 74 68  d data off to th
ace0: 65 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74  e operating syst
acf0: 65 6d 2e 0a 20 20 20 20 49 66 20 74 68 65 20 61  em..    If the a
ad00: 70 70 6c 69 63 61 74 69 6f 6e 20 72 75 6e 6e 69  pplication runni
ad10: 6e 67 20 53 51 4c 69 74 65 20 63 72 61 73 68 65  ng SQLite crashe
ad20: 73 2c 20 74 68 65 20 64 61 74 61 20 77 69 6c 6c  s, the data will
ad30: 20 62 65 20 73 61 66 65 2c 20 62 75 74 0a 20 20   be safe, but.  
ad40: 20 20 74 68 65 20 64 61 74 61 62 61 73 65 20 6d    the database m
ad50: 69 67 68 74 20 62 65 63 6f 6d 65 20 63 6f 72 72  ight become corr
ad60: 75 70 74 65 64 20 69 66 20 74 68 65 20 6f 70 65  upted if the ope
ad70: 72 61 74 69 6e 67 20 73 79 73 74 65 6d 0a 20 20  rating system.  
ad80: 20 20 63 72 61 73 68 65 73 20 6f 72 20 74 68 65    crashes or the
ad90: 20 63 6f 6d 70 75 74 65 72 20 6c 6f 73 65 73 20   computer loses 
ada0: 70 6f 77 65 72 20 62 65 66 6f 72 65 20 74 68 61  power before tha
adb0: 74 20 64 61 74 61 20 68 61 73 20 62 65 65 6e 20  t data has been 
adc0: 77 72 69 74 74 65 6e 0a 20 20 20 20 74 6f 20 74  written.    to t
add0: 68 65 20 64 69 73 6b 20 73 75 72 66 61 63 65 2e  he disk surface.
ade0: 20 20 4f 6e 20 74 68 65 20 6f 74 68 65 72 20 68    On the other h
adf0: 61 6e 64 2c 20 73 6f 6d 65 0a 20 20 20 20 6f 70  and, some.    op
ae00: 65 72 61 74 69 6f 6e 73 20 61 72 65 20 61 73 20  erations are as 
ae10: 6d 75 63 68 20 61 73 20 35 30 20 6f 72 20 6d 6f  much as 50 or mo
ae20: 72 65 20 74 69 6d 65 73 20 66 61 73 74 65 72 20  re times faster 
ae30: 77 69 74 68 20 73 79 6e 63 68 72 6f 6e 6f 75 73  with synchronous
ae40: 20 4f 46 46 2e 0a 20 20 20 20 3c 2f 70 3e 0a 20   OFF..    </p>. 
ae50: 20 20 20 3c 70 3e 54 68 69 73 20 70 72 61 67 6d     <p>This pragm
ae60: 61 20 63 68 61 6e 67 65 73 20 74 68 65 20 73 79  a changes the sy
ae70: 6e 63 68 72 6f 6e 6f 75 73 20 6d 6f 64 65 20 70  nchronous mode p
ae80: 65 72 73 69 73 74 65 6e 74 6c 79 2e 20 20 4f 6e  ersistently.  On
ae90: 63 65 20 63 68 61 6e 67 65 64 2c 0a 20 20 20 20  ce changed,.    
aea0: 74 68 65 20 6d 6f 64 65 20 73 74 61 79 73 20 61  the mode stays a
aeb0: 73 20 73 65 74 20 65 76 65 6e 20 69 66 20 74 68  s set even if th
aec0: 65 20 64 61 74 61 62 61 73 65 20 69 73 20 63 6c  e database is cl
aed0: 6f 73 65 64 20 61 6e 64 20 72 65 6f 70 65 6e 65  osed and reopene
aee0: 64 2e 20 20 54 68 65 0a 20 20 20 20 3c 62 3e 73  d.  The.    <b>s
aef0: 79 6e 63 68 72 6f 6e 6f 75 73 3c 2f 62 3e 20 70  ynchronous</b> p
af00: 72 61 67 6d 61 20 64 6f 65 73 20 74 68 65 20 73  ragma does the s
af10: 61 6d 65 20 74 68 69 6e 67 20 62 75 74 20 6f 6e  ame thing but on
af20: 6c 79 20 61 70 70 6c 69 65 73 20 74 68 65 20 73  ly applies the s
af30: 65 74 74 69 6e 67 0a 20 20 20 20 74 6f 20 74 68  etting.    to th
af40: 65 20 63 75 72 72 65 6e 74 20 73 65 73 73 69 6f  e current sessio
af50: 6e 2e 3c 2f 70 3e 0a 0a 3c 61 20 6e 61 6d 65 3d  n.</p>..<a name=
af60: 22 70 72 61 67 6d 61 5f 65 6d 70 74 79 5f 72 65  "pragma_empty_re
af70: 73 75 6c 74 5f 63 61 6c 6c 62 61 63 6b 73 22 3e  sult_callbacks">
af80: 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d  .<li><p><b>PRAGM
af90: 41 20 65 6d 70 74 79 5f 72 65 73 75 6c 74 5f 63  A empty_result_c
afa0: 61 6c 6c 62 61 63 6b 73 20 3d 20 4f 4e 3b 0a 20  allbacks = ON;. 
afb0: 20 20 20 20 20 20 3c 62 72 3e 50 52 41 47 4d 41        <br>PRAGMA
afc0: 20 65 6d 70 74 79 5f 72 65 73 75 6c 74 5f 63 61   empty_result_ca
afd0: 6c 6c 62 61 63 6b 73 20 3d 20 4f 46 46 3b 3c 2f  llbacks = OFF;</
afe0: 62 3e 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e 57 68  b></p>.    <p>Wh
aff0: 65 6e 20 6f 6e 2c 20 74 68 65 20 45 4d 50 54 59  en on, the EMPTY
b000: 5f 52 45 53 55 4c 54 5f 43 41 4c 4c 42 41 43 4b  _RESULT_CALLBACK
b010: 53 20 70 72 61 67 6d 61 20 63 61 75 73 65 73 20  S pragma causes 
b020: 74 68 65 20 63 61 6c 6c 62 61 63 6b 0a 20 20 20  the callback.   
b030: 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20 62 65 20   function to be 
b040: 69 6e 76 6f 6b 65 64 20 6f 6e 63 65 20 66 6f 72  invoked once for
b050: 20 65 61 63 68 20 71 75 65 72 79 20 74 68 61 74   each query that
b060: 20 68 61 73 20 61 6e 20 65 6d 70 74 79 20 72 65   has an empty re
b070: 73 75 6c 74 0a 20 20 20 20 73 65 74 2e 20 20 54  sult.    set.  T
b080: 68 65 20 74 68 69 72 64 20 22 3c 62 3e 61 72 67  he third "<b>arg
b090: 76 3c 2f 62 3e 22 20 70 61 72 61 6d 65 74 65 72  v</b>" parameter
b0a0: 20 74 6f 20 74 68 65 20 63 61 6c 6c 62 61 63 6b   to the callback
b0b0: 20 69 73 20 73 65 74 20 74 6f 20 4e 55 4c 4c 0a   is set to NULL.
b0c0: 20 20 20 20 62 65 63 61 75 73 65 20 74 68 65 72      because ther
b0d0: 65 20 69 73 20 6e 6f 20 64 61 74 61 20 74 6f 20  e is no data to 
b0e0: 72 65 70 6f 72 74 2e 20 20 42 75 74 20 74 68 65  report.  But the
b0f0: 20 73 65 63 6f 6e 64 20 22 3c 62 3e 61 72 67 63   second "<b>argc
b100: 3c 2f 62 3e 22 20 61 6e 64 0a 20 20 20 20 66 6f  </b>" and.    fo
b110: 75 72 74 68 20 22 3c 62 3e 63 6f 6c 75 6d 6e 4e  urth "<b>columnN
b120: 61 6d 65 73 3c 2f 62 3e 22 20 70 61 72 61 6d 65  ames</b>" parame
b130: 74 65 72 73 20 61 72 65 20 76 61 6c 69 64 20 61  ters are valid a
b140: 6e 64 20 63 61 6e 20 62 65 20 75 73 65 64 20 74  nd can be used t
b150: 6f 0a 20 20 20 20 64 65 74 65 72 6d 69 6e 65 20  o.    determine 
b160: 74 68 65 20 6e 75 6d 62 65 72 20 61 6e 64 20 6e  the number and n
b170: 61 6d 65 73 20 6f 66 20 74 68 65 20 63 6f 6c 75  ames of the colu
b180: 6d 6e 73 20 74 68 61 74 20 77 6f 75 6c 64 20 68  mns that would h
b190: 61 76 65 20 62 65 65 6e 20 69 6e 0a 20 20 20 20  ave been in.    
b1a0: 74 68 65 20 72 65 73 75 6c 74 20 73 65 74 20 68  the result set h
b1b0: 61 64 20 74 68 65 20 73 65 74 20 6e 6f 74 20 62  ad the set not b
b1c0: 65 65 6e 20 65 6d 70 74 79 2e 3c 2f 70 3e 0a 0a  een empty.</p>..
b1d0: 3c 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d 41  <li><p><b>PRAGMA
b1e0: 20 66 75 6c 6c 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d   full_column_nam
b1f0: 65 73 20 3d 20 4f 4e 3b 0a 20 20 20 20 20 20 20  es = ON;.       
b200: 3c 62 72 3e 50 52 41 47 4d 41 20 66 75 6c 6c 5f  <br>PRAGMA full_
b210: 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 73 20 3d 20 4f  column_names = O
b220: 46 46 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20 20 20 20  FF;</b></p>.    
b230: 3c 70 3e 54 68 65 20 63 6f 6c 75 6d 6e 20 6e 61  <p>The column na
b240: 6d 65 73 20 72 65 70 6f 72 74 65 64 20 69 6e 20  mes reported in 
b250: 61 6e 20 53 51 4c 69 74 65 20 63 61 6c 6c 62 61  an SQLite callba
b260: 63 6b 20 61 72 65 20 6e 6f 72 6d 61 6c 6c 79 20  ck are normally 
b270: 6a 75 73 74 0a 20 20 20 20 74 68 65 20 6e 61 6d  just.    the nam
b280: 65 20 6f 66 20 74 68 65 20 63 6f 6c 75 6d 6e 20  e of the column 
b290: 69 74 73 65 6c 66 2c 20 65 78 63 65 70 74 20 66  itself, except f
b2a0: 6f 72 20 6a 6f 69 6e 73 20 77 68 65 6e 20 22 54  or joins when "T
b2b0: 41 42 4c 45 2e 43 4f 4c 55 4d 4e 22 0a 20 20 20  ABLE.COLUMN".   
b2c0: 20 69 73 20 75 73 65 64 2e 20 20 42 75 74 20 77   is used.  But w
b2d0: 68 65 6e 20 66 75 6c 6c 5f 63 6f 6c 75 6d 6e 5f  hen full_column_
b2e0: 6e 61 6d 65 73 20 69 73 20 74 75 72 6e 65 64 20  names is turned 
b2f0: 6f 6e 2c 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 73  on, column names
b300: 20 61 72 65 0a 20 20 20 20 61 6c 77 61 79 73 20   are.    always 
b310: 72 65 70 6f 72 74 65 64 20 61 73 20 22 54 41 42  reported as "TAB
b320: 4c 45 2e 43 4f 4c 55 4d 4e 22 20 65 76 65 6e 20  LE.COLUMN" even 
b330: 66 6f 72 20 73 69 6d 70 6c 65 20 71 75 65 72 69  for simple queri
b340: 65 73 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a 0a 3c 6c  es.</p></li>..<l
b350: 69 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d 41 20 69  i><p><b>PRAGMA i
b360: 6e 64 65 78 5f 69 6e 66 6f 28 3c 2f 62 3e 3c 69  ndex_info(</b><i
b370: 3e 69 6e 64 65 78 2d 6e 61 6d 65 3c 2f 69 3e 3c  >index-name</i><
b380: 62 3e 29 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20 20 20  b>);</b></p>.   
b390: 20 3c 70 3e 46 6f 72 20 65 61 63 68 20 63 6f 6c   <p>For each col
b3a0: 75 6d 6e 20 74 68 61 74 20 74 68 65 20 6e 61 6d  umn that the nam
b3b0: 65 64 20 69 6e 64 65 78 20 72 65 66 65 72 65 6e  ed index referen
b3c0: 63 65 73 2c 20 69 6e 76 6f 6b 65 20 74 68 65 20  ces, invoke the 
b3d0: 0a 20 20 20 20 63 61 6c 6c 62 61 63 6b 20 66 75  .    callback fu
b3e0: 6e 63 74 69 6f 6e 0a 20 20 20 20 6f 6e 63 65 20  nction.    once 
b3f0: 77 69 74 68 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  with information
b400: 20 61 62 6f 75 74 20 74 68 61 74 20 63 6f 6c 75   about that colu
b410: 6d 6e 2c 20 69 6e 63 6c 75 64 69 6e 67 20 74 68  mn, including th
b420: 65 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 2c 0a 20  e column name,. 
b430: 20 20 20 61 6e 64 20 74 68 65 20 63 6f 6c 75 6d     and the colum
b440: 6e 20 6e 75 6d 62 65 72 2e 3c 2f 70 3e 0a 0a 3c  n number.</p>..<
b450: 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d 41 20  li><p><b>PRAGMA 
b460: 69 6e 64 65 78 5f 6c 69 73 74 28 3c 2f 62 3e 3c  index_list(</b><
b470: 69 3e 74 61 62 6c 65 2d 6e 61 6d 65 3c 2f 69 3e  i>table-name</i>
b480: 3c 62 3e 29 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20 20  <b>);</b></p>.  
b490: 20 20 3c 70 3e 46 6f 72 20 65 61 63 68 20 69 6e    <p>For each in
b4a0: 64 65 78 20 6f 6e 20 74 68 65 20 6e 61 6d 65 64  dex on the named
b4b0: 20 74 61 62 6c 65 2c 20 69 6e 76 6f 6b 65 20 74   table, invoke t
b4c0: 68 65 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63  he callback func
b4d0: 74 69 6f 6e 0a 20 20 20 20 6f 6e 63 65 20 77 69  tion.    once wi
b4e0: 74 68 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61  th information a
b4f0: 62 6f 75 74 20 74 68 61 74 20 69 6e 64 65 78 2e  bout that index.
b500: 20 20 41 72 67 75 6d 65 6e 74 73 20 69 6e 63 6c    Arguments incl
b510: 75 64 65 20 74 68 65 0a 20 20 20 20 69 6e 64 65  ude the.    inde
b520: 78 20 6e 61 6d 65 20 61 6e 64 20 61 20 66 6c 61  x name and a fla
b530: 67 20 74 6f 20 69 6e 64 69 63 61 74 65 20 77 68  g to indicate wh
b540: 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 74 68 65  ether or not the
b550: 20 69 6e 64 65 78 20 6d 75 73 74 20 62 65 0a 20   index must be. 
b560: 20 20 20 75 6e 69 71 75 65 2e 3c 2f 70 3e 0a 0a     unique.</p>..
b570: 3c 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d 41  <li><p><b>PRAGMA
b580: 20 70 61 72 73 65 72 5f 74 72 61 63 65 20 3d 20   parser_trace = 
b590: 4f 4e 3b 3c 62 72 3e 50 52 41 47 4d 41 20 70 61  ON;<br>PRAGMA pa
b5a0: 72 73 65 72 5f 74 72 61 63 65 20 3d 20 4f 46 46  rser_trace = OFF
b5b0: 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20 20 20 20 3c 70  ;</b></p>.    <p
b5c0: 3e 54 75 72 6e 20 74 72 61 63 69 6e 67 20 6f 66  >Turn tracing of
b5d0: 20 74 68 65 20 53 51 4c 20 70 61 72 73 65 72 20   the SQL parser 
b5e0: 69 6e 73 69 64 65 20 6f 66 20 74 68 65 0a 20 20  inside of the.  
b5f0: 20 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79    SQLite library
b600: 20 6f 6e 20 61 6e 64 20 6f 66 66 2e 20 20 54 68   on and off.  Th
b610: 69 73 20 69 73 20 75 73 65 64 20 66 6f 72 20 64  is is used for d
b620: 65 62 75 67 67 69 6e 67 2e 0a 20 20 20 20 54 68  ebugging..    Th
b630: 69 73 20 6f 6e 6c 79 20 77 6f 72 6b 73 20 69 66  is only works if
b640: 20 74 68 65 20 6c 69 62 72 61 72 79 20 69 73 20   the library is 
b650: 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 6f 75 74  compiled without
b660: 20 74 68 65 20 4e 44 45 42 55 47 20 6d 61 63 72   the NDEBUG macr
b670: 6f 2e 0a 20 20 20 20 3c 2f 70 3e 3c 2f 6c 69 3e  o..    </p></li>
b680: 0a 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41 47  ..<li><p><b>PRAG
b690: 4d 41 20 69 6e 74 65 67 72 69 74 79 5f 63 68 65  MA integrity_che
b6a0: 63 6b 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20 20 20 20  ck;</b></p>.    
b6b0: 3c 70 3e 54 68 65 20 63 6f 6d 6d 61 6e 64 20 64  <p>The command d
b6c0: 6f 65 73 20 61 6e 20 69 6e 74 65 67 72 69 74 79  oes an integrity
b6d0: 20 63 68 65 63 6b 20 6f 66 20 74 68 65 20 65 6e   check of the en
b6e0: 74 69 72 65 20 64 61 74 61 62 61 73 65 2e 20 20  tire database.  
b6f0: 49 74 0a 20 20 20 20 6c 6f 6f 6b 73 20 66 6f 72  It.    looks for
b700: 20 6f 75 74 2d 6f 66 2d 6f 72 64 65 72 20 72 65   out-of-order re
b710: 63 6f 72 64 73 2c 20 6d 69 73 73 69 6e 67 20 70  cords, missing p
b720: 61 67 65 73 2c 20 61 6e 64 20 6d 61 6c 66 6f 72  ages, and malfor
b730: 6d 65 64 20 72 65 63 6f 72 64 73 2e 0a 20 20 20  med records..   
b740: 20 49 66 20 61 6e 79 20 70 72 6f 62 6c 65 6d 73   If any problems
b750: 20 61 72 65 20 66 6f 75 6e 64 2c 20 74 68 65 6e   are found, then
b760: 20 61 20 73 69 6e 67 6c 65 20 73 74 72 69 6e 67   a single string
b770: 20 69 73 20 72 65 74 75 72 6e 65 64 20 77 68 69   is returned whi
b780: 63 68 20 69 73 0a 20 20 20 20 61 20 64 65 73 63  ch is.    a desc
b790: 72 69 70 74 69 6f 6e 20 6f 66 20 61 6c 6c 20 70  ription of all p
b7a0: 72 6f 62 6c 65 6d 73 2e 20 20 49 66 20 65 76 65  roblems.  If eve
b7b0: 72 79 74 68 69 6e 67 20 69 73 20 69 6e 20 6f 72  rything is in or
b7c0: 64 65 72 2c 20 22 6f 6b 22 20 69 73 0a 20 20 20  der, "ok" is.   
b7d0: 20 72 65 74 75 72 6e 65 64 2e 3c 2f 70 3e 0a 0a   returned.</p>..
b7e0: 3c 61 20 6e 61 6d 65 3d 22 70 72 61 67 6d 61 5f  <a name="pragma_
b7f0: 73 68 6f 77 5f 64 61 74 61 74 79 70 65 73 22 3e  show_datatypes">
b800: 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d  .<li><p><b>PRAGM
b810: 41 20 73 68 6f 77 5f 64 61 74 61 74 79 70 65 73  A show_datatypes
b820: 20 3d 20 4f 4e 3b 3c 62 72 3e 50 52 41 47 4d 41   = ON;<br>PRAGMA
b830: 20 73 68 6f 77 5f 64 61 74 61 74 79 70 65 73 20   show_datatypes 
b840: 3d 20 4f 46 46 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20  = OFF;</b></p>. 
b850: 20 20 20 3c 70 3e 57 68 65 6e 20 74 75 72 6e 65     <p>When turne
b860: 64 20 6f 6e 2c 20 74 68 65 20 53 48 4f 57 5f 44  d on, the SHOW_D
b870: 41 54 41 54 59 50 45 53 20 70 72 61 67 6d 61 20  ATATYPES pragma 
b880: 63 61 75 73 65 73 20 65 78 74 72 61 20 65 6e 74  causes extra ent
b890: 72 69 65 73 20 63 6f 6e 74 61 69 6e 69 6e 67 0a  ries containing.
b8a0: 20 20 20 20 74 68 65 20 6e 61 6d 65 73 20 6f 66      the names of
b8b0: 20 3c 61 20 68 72 65 66 3d 22 64 61 74 61 74 79   <a href="dataty
b8c0: 70 65 73 2e 68 74 6d 6c 22 3e 64 61 74 61 74 79  pes.html">dataty
b8d0: 70 65 73 3c 2f 61 3e 20 6f 66 20 63 6f 6c 75 6d  pes</a> of colum
b8e0: 6e 73 20 74 6f 20 62 65 0a 20 20 20 20 61 70 70  ns to be.    app
b8f0: 65 6e 64 65 64 20 74 6f 20 74 68 65 20 34 74 68  ended to the 4th
b900: 20 28 22 63 6f 6c 75 6d 6e 4e 61 6d 65 73 22 29   ("columnNames")
b910: 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 3c 62 3e   argument to <b>
b920: 73 71 6c 69 74 65 5f 65 78 65 63 28 29 3c 2f 62  sqlite_exec()</b
b930: 3e 0a 20 20 20 20 63 61 6c 6c 62 61 63 6b 73 2e  >.    callbacks.
b940: 20 20 57 68 65 6e 0a 20 20 20 20 74 75 72 6e 65    When.    turne
b950: 64 20 6f 66 66 2c 20 74 68 65 20 34 74 68 20 61  d off, the 4th a
b960: 72 67 75 6d 65 6e 74 20 74 6f 20 63 61 6c 6c 62  rgument to callb
b970: 61 63 6b 73 20 63 6f 6e 74 61 69 6e 73 20 6f 6e  acks contains on
b980: 6c 79 20 74 68 65 20 63 6f 6c 75 6d 6e 20 6e 61  ly the column na
b990: 6d 65 73 2e 0a 20 20 20 20 54 68 65 20 64 61 74  mes..    The dat
b9a0: 61 74 79 70 65 20 66 6f 72 20 74 61 62 6c 65 20  atype for table 
b9b0: 63 6f 6c 75 6d 6e 73 20 69 73 20 74 61 6b 65 6e  columns is taken
b9c0: 20 66 72 6f 6d 20 74 68 65 20 43 52 45 41 54 45   from the CREATE
b9d0: 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74   TABLE statement
b9e0: 0a 20 20 20 20 74 68 61 74 20 64 65 66 69 6e 65  .    that define
b9f0: 73 20 74 68 65 20 74 61 62 6c 65 2e 20 20 43 6f  s the table.  Co
ba00: 6c 75 6d 6e 73 20 77 69 74 68 20 61 6e 20 75 6e  lumns with an un
ba10: 73 70 65 63 69 66 69 65 64 20 64 61 74 61 74 79  specified dataty
ba20: 70 65 20 68 61 76 65 20 61 0a 20 20 20 20 64 61  pe have a.    da
ba30: 74 61 74 79 70 65 20 6f 66 20 22 4e 55 4d 45 52  tatype of "NUMER
ba40: 49 43 22 20 61 6e 64 20 74 68 65 20 72 65 73 75  IC" and the resu
ba50: 6c 74 73 20 6f 66 20 65 78 70 72 65 73 73 69 6f  lts of expressio
ba60: 6e 20 68 61 76 65 20 61 20 64 61 74 61 74 79 70  n have a datatyp
ba70: 65 20 6f 66 0a 20 20 20 20 65 69 74 68 65 72 20  e of.    either 
ba80: 22 54 45 58 54 22 20 6f 72 20 22 4e 55 4d 45 52  "TEXT" or "NUMER
ba90: 49 43 22 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e  IC" depending on
baa0: 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 2e   the expression.
bab0: 0a 20 20 20 20 54 68 65 20 66 6f 6c 6c 6f 77 69  .    The followi
bac0: 6e 67 20 63 68 61 72 74 20 69 6c 6c 75 73 74 72  ng chart illustr
bad0: 61 74 65 73 20 74 68 65 20 64 69 66 66 65 72 65  ates the differe
bae0: 6e 63 65 20 66 6f 72 20 74 68 65 20 71 75 65 72  nce for the quer
baf0: 79 0a 20 20 20 20 22 53 45 4c 45 43 54 20 27 78  y.    "SELECT 'x
bb00: 79 7a 7a 79 27 2c 20 35 2c 20 4e 55 4c 4c 20 41  yzzy', 5, NULL A
bb10: 53 20 65 6d 70 74 79 20 22 3a 3c 2f 70 3e 0a 0a  S empty ":</p>..
bb20: 20 20 20 20 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e      <blockquote>
bb30: 3c 74 61 62 6c 65 20 62 6f 72 64 65 72 3d 30 3e  <table border=0>
bb40: 0a 20 20 20 20 3c 74 72 3e 3c 74 68 3e 73 68 6f  .    <tr><th>sho
bb50: 77 5f 64 61 74 61 74 79 70 65 73 3d 4f 46 46 3c  w_datatypes=OFF<
bb60: 2f 74 68 3e 3c 74 68 20 77 69 64 74 68 3d 33 30  /th><th width=30
bb70: 3e 3c 2f 74 68 3e 0a 20 20 20 20 20 20 20 20 3c  ></th>.        <
bb80: 74 68 3e 73 68 6f 77 5f 64 61 74 61 74 79 70 65  th>show_datatype
bb90: 73 3d 4f 4e 3c 2f 74 68 3e 3c 2f 74 72 3e 0a 20  s=ON</th></tr>. 
bba0: 20 20 20 3c 74 72 3e 3c 74 64 20 76 61 6c 69 67     <tr><td valig
bbb0: 6e 3d 22 74 6f 70 22 3e 0a 20 20 20 20 20 20 20  n="top">.       
bbc0: 61 7a 43 6f 6c 5b 30 5d 20 3d 20 22 78 79 7a 7a  azCol[0] = "xyzz
bbd0: 79 22 3b 3c 62 72 3e 0a 20 20 20 20 20 20 20 61  y";<br>.       a
bbe0: 7a 43 6f 6c 5b 31 5d 20 3d 20 22 35 22 3b 3c 62  zCol[1] = "5";<b
bbf0: 72 3e 0a 20 20 20 20 20 20 20 61 7a 43 6f 6c 5b  r>.       azCol[
bc00: 32 5d 20 3d 20 22 65 6d 70 74 79 22 3b 3c 62 72  2] = "empty";<br
bc10: 3e 0a 20 20 20 20 20 20 20 61 7a 43 6f 6c 5b 33  >.       azCol[3
bc20: 5d 20 3d 20 30 3b 0a 20 20 20 20 3c 2f 74 64 3e  ] = 0;.    </td>
bc30: 3c 74 64 3e 3c 2f 74 64 3e 3c 74 64 20 76 61 6c  <td></td><td val
bc40: 69 67 6e 3d 22 74 6f 70 22 3e 0a 20 20 20 20 20  ign="top">.     
bc50: 20 20 61 7a 43 6f 6c 5b 30 5d 20 3d 20 22 78 79    azCol[0] = "xy
bc60: 7a 7a 79 22 3b 3c 62 72 3e 0a 20 20 20 20 20 20  zzy";<br>.      
bc70: 20 61 7a 43 6f 6c 5b 31 5d 20 3d 20 22 35 22 3b   azCol[1] = "5";
bc80: 3c 62 72 3e 0a 20 20 20 20 20 20 20 61 7a 43 6f  <br>.       azCo
bc90: 6c 5b 32 5d 20 3d 20 22 65 6d 70 74 79 22 3b 3c  l[2] = "empty";<
bca0: 62 72 3e 0a 20 20 20 20 20 20 20 61 7a 43 6f 6c  br>.       azCol
bcb0: 5b 33 5d 20 3d 20 22 54 45 58 54 22 3b 3c 62 72  [3] = "TEXT";<br
bcc0: 3e 0a 20 20 20 20 20 20 20 61 7a 43 6f 6c 5b 34  >.       azCol[4
bcd0: 5d 20 3d 20 22 4e 55 4d 45 52 49 43 22 3b 3c 62  ] = "NUMERIC";<b
bce0: 72 3e 0a 20 20 20 20 20 20 20 61 7a 43 6f 6c 5b  r>.       azCol[
bcf0: 35 5d 20 3d 20 22 54 45 58 54 22 3b 3c 62 72 3e  5] = "TEXT";<br>
bd00: 0a 20 20 20 20 20 20 20 61 7a 43 6f 6c 5b 36 5d  .       azCol[6]
bd10: 20 3d 20 30 3b 0a 20 20 20 20 3c 2f 74 64 3e 3c   = 0;.    </td><
bd20: 2f 74 61 62 6c 65 3e 3c 2f 62 6c 6f 63 6b 71 75  /table></blockqu
bd30: 6f 74 65 3e 3c 2f 6c 69 3e 0a 0a 3c 6c 69 3e 3c  ote></li>..<li><
bd40: 70 3e 3c 62 3e 50 52 41 47 4d 41 20 73 79 6e 63  p><b>PRAGMA sync
bd50: 68 72 6f 6e 6f 75 73 3b 0a 20 20 20 20 20 20 20  hronous;.       
bd60: 3c 62 72 3e 50 52 41 47 4d 41 20 73 79 6e 63 68  <br>PRAGMA synch
bd70: 72 6f 6e 6f 75 73 20 3d 20 46 55 4c 4c 3b 0a 20  ronous = FULL;. 
bd80: 20 20 20 20 20 20 3c 62 72 3e 50 52 41 47 4d 41        <br>PRAGMA
bd90: 20 73 79 6e 63 68 72 6f 6e 6f 75 73 20 3d 20 4e   synchronous = N
bda0: 4f 52 4d 41 4c 3b 0a 20 20 20 20 20 20 20 3c 62  ORMAL;.       <b
bdb0: 72 3e 50 52 41 47 4d 41 20 73 79 6e 63 68 72 6f  r>PRAGMA synchro
bdc0: 6e 6f 75 73 20 3d 20 4f 46 46 3b 3c 2f 62 3e 3c  nous = OFF;</b><
bdd0: 2f 70 3e 0a 20 20 20 20 3c 70 3e 51 75 65 72 79  /p>.    <p>Query
bde0: 20 6f 72 20 63 68 61 6e 67 65 20 74 68 65 20 73   or change the s
bdf0: 65 74 74 69 6e 67 20 6f 66 20 74 68 65 20 22 73  etting of the "s
be00: 79 6e 63 68 72 6f 6e 6f 75 73 22 20 66 6c 61 67  ynchronous" flag
be10: 20 69 6e 0a 20 20 20 20 74 68 65 20 64 61 74 61   in.    the data
be20: 62 61 73 65 20 66 6f 72 20 74 68 65 20 64 75 72  base for the dur
be30: 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 63 75 72  ation of the cur
be40: 72 65 6e 74 20 64 61 74 61 62 61 73 65 20 63 6f  rent database co
be50: 6e 6e 65 63 74 2e 0a 20 20 20 20 54 68 65 20 73  nnect..    The s
be60: 79 6e 63 68 72 6f 6e 6f 75 73 20 66 6c 61 67 20  ynchronous flag 
be70: 72 65 76 65 72 74 73 20 74 6f 20 69 74 73 20 64  reverts to its d
be80: 65 66 61 75 6c 74 20 76 61 6c 75 65 20 77 68 65  efault value whe
be90: 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 0a 20  n the database. 
bea0: 20 20 20 69 73 20 63 6c 6f 73 65 64 20 61 6e 64     is closed and
beb0: 20 72 65 6f 70 65 6e 65 64 2e 20 20 46 6f 72 20   reopened.  For 
bec0: 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72  additional infor
bed0: 6d 61 74 69 6f 6e 20 6f 6e 20 74 68 65 20 73 79  mation on the sy
bee0: 6e 63 68 72 6f 6e 6f 75 73 0a 20 20 20 20 66 6c  nchronous.    fl
bef0: 61 67 2c 20 73 65 65 20 74 68 65 20 64 65 73 63  ag, see the desc
bf00: 72 69 70 74 69 6f 6e 20 6f 66 20 74 68 65 20 3c  ription of the <
bf10: 62 3e 64 65 66 61 75 6c 74 5f 73 79 6e 63 68 72  b>default_synchr
bf20: 6f 6e 6f 75 73 3c 2f 62 3e 20 70 72 61 67 6d 61  onous</b> pragma
bf30: 2e 3c 2f 70 3e 0a 20 20 20 20 3c 2f 6c 69 3e 0a  .</p>.    </li>.
bf40: 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d  .<li><p><b>PRAGM
bf50: 41 20 74 61 62 6c 65 5f 69 6e 66 6f 28 3c 2f 62  A table_info(</b
bf60: 3e 3c 69 3e 74 61 62 6c 65 2d 6e 61 6d 65 3c 2f  ><i>table-name</
bf70: 69 3e 3c 62 3e 29 3b 3c 2f 62 3e 3c 2f 70 3e 0a  i><b>);</b></p>.
bf80: 20 20 20 20 3c 70 3e 46 6f 72 20 65 61 63 68 20      <p>For each 
bf90: 63 6f 6c 75 6d 6e 20 69 6e 20 74 68 65 20 6e 61  column in the na
bfa0: 6d 65 64 20 74 61 62 6c 65 2c 20 69 6e 76 6f 6b  med table, invok
bfb0: 65 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 66  e the callback f
bfc0: 75 6e 63 74 69 6f 6e 0a 20 20 20 20 6f 6e 63 65  unction.    once
bfd0: 20 77 69 74 68 20 69 6e 66 6f 72 6d 61 74 69 6f   with informatio
bfe0: 6e 20 61 62 6f 75 74 20 74 68 61 74 20 63 6f 6c  n about that col
bff0: 75 6d 6e 2c 20 69 6e 63 6c 75 64 69 6e 67 20 74  umn, including t
c000: 68 65 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 2c 0a  he column name,.
c010: 20 20 20 20 64 61 74 61 20 74 79 70 65 2c 20 77      data type, w
c020: 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 74 68  hether or not th
c030: 65 20 63 6f 6c 75 6d 6e 20 63 61 6e 20 62 65 20  e column can be 
c040: 4e 55 4c 4c 2c 20 61 6e 64 20 74 68 65 20 64 65  NULL, and the de
c050: 66 61 75 6c 74 0a 20 20 20 20 76 61 6c 75 65 20  fault.    value 
c060: 66 6f 72 20 74 68 65 20 63 6f 6c 75 6d 6e 2e 3c  for the column.<
c070: 2f 70 3e 0a 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e 50  /p>..<li><p><b>P
c080: 52 41 47 4d 41 20 76 64 62 65 5f 74 72 61 63 65  RAGMA vdbe_trace
c090: 20 3d 20 4f 4e 3b 3c 62 72 3e 50 52 41 47 4d 41   = ON;<br>PRAGMA
c0a0: 20 76 64 62 65 5f 74 72 61 63 65 20 3d 20 4f 46   vdbe_trace = OF
c0b0: 46 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20 20 20 20 3c  F;</b></p>.    <
c0c0: 70 3e 54 75 72 6e 20 74 72 61 63 69 6e 67 20 6f  p>Turn tracing o
c0d0: 66 20 74 68 65 20 76 69 72 74 75 61 6c 20 64 61  f the virtual da
c0e0: 74 61 62 61 73 65 20 65 6e 67 69 6e 65 20 69 6e  tabase engine in
c0f0: 73 69 64 65 20 6f 66 20 74 68 65 0a 20 20 20 20  side of the.    
c100: 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 6f  SQLite library o
c110: 6e 20 61 6e 64 20 6f 66 66 2e 20 20 54 68 69 73  n and off.  This
c120: 20 69 73 20 75 73 65 64 20 66 6f 72 20 64 65 62   is used for deb
c130: 75 67 67 69 6e 67 2e 3c 2f 70 3e 3c 2f 6c 69 3e  ugging.</p></li>
c140: 0a 3c 2f 75 6c 3e 0a 0a 3c 70 3e 4e 6f 20 65 72  .</ul>..<p>No er
c150: 72 6f 72 20 6d 65 73 73 61 67 65 20 69 73 20 67  ror message is g
c160: 65 6e 65 72 61 74 65 64 20 69 66 20 61 6e 20 75  enerated if an u
c170: 6e 6b 6e 6f 77 6e 20 70 72 61 67 6d 61 20 69 73  nknown pragma is
c180: 20 69 73 73 75 65 64 2e 0a 55 6e 6b 6e 6f 77 6e   issued..Unknown
c190: 20 70 72 61 67 6d 61 73 20 61 72 65 20 69 67 6e   pragmas are ign
c1a0: 6f 72 65 64 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65  ored.</p>.}...Se
c1b0: 63 74 69 6f 6e 20 52 45 50 4c 41 43 45 20 72 65  ction REPLACE re
c1c0: 70 6c 61 63 65 0a 0a 53 79 6e 74 61 78 20 7b 73  place..Syntax {s
c1d0: 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a  ql-statement} {.
c1e0: 52 45 50 4c 41 43 45 20 49 4e 54 4f 20 3c 74 61  REPLACE INTO <ta
c1f0: 62 6c 65 2d 6e 61 6d 65 3e 20 5b 28 20 3c 63 6f  ble-name> [( <co
c200: 6c 75 6d 6e 2d 6c 69 73 74 3e 20 29 5d 20 56 41  lumn-list> )] VA
c210: 4c 55 45 53 20 28 20 3c 76 61 6c 75 65 2d 6c 69  LUES ( <value-li
c220: 73 74 3e 20 29 20 7c 0a 52 45 50 4c 41 43 45 20  st> ) |.REPLACE 
c230: 49 4e 54 4f 20 3c 74 61 62 6c 65 2d 6e 61 6d 65  INTO <table-name
c240: 3e 20 5b 28 20 3c 63 6f 6c 75 6d 6e 2d 6c 69 73  > [( <column-lis
c250: 74 3e 20 29 5d 20 3c 73 65 6c 65 63 74 2d 73 74  t> )] <select-st
c260: 61 74 65 6d 65 6e 74 3e 0a 7d 0a 0a 70 75 74 73  atement>.}..puts
c270: 20 7b 0a 3c 70 3e 54 68 65 20 52 45 50 4c 41 43   {.<p>The REPLAC
c280: 45 20 63 6f 6d 6d 61 6e 64 20 69 73 20 61 6e 20  E command is an 
c290: 61 6c 69 61 73 20 66 6f 72 20 74 68 65 20 22 49  alias for the "I
c2a0: 4e 53 45 52 54 20 4f 52 20 52 45 50 4c 41 43 45  NSERT OR REPLACE
c2b0: 22 20 76 61 72 69 61 6e 74 0a 6f 66 20 74 68 65  " variant.of the
c2c0: 20 3c 61 20 68 72 65 66 3d 22 23 69 6e 73 65 72   <a href="#inser
c2d0: 74 22 3e 49 4e 53 45 52 54 20 63 6f 6d 6d 61 6e  t">INSERT comman
c2e0: 64 3c 2f 61 3e 2e 20 20 54 68 69 73 20 61 6c 69  d</a>.  This ali
c2f0: 61 73 20 69 73 20 70 72 6f 76 69 64 65 64 20 66  as is provided f
c300: 6f 72 0a 63 6f 6d 70 61 74 69 62 69 6c 69 74 79  or.compatibility
c310: 20 77 69 74 68 20 4d 79 53 51 4c 2e 20 20 53 65   with MySQL.  Se
c320: 65 20 74 68 65 20 0a 3c 61 20 68 72 65 66 3d 22  e the .<a href="
c330: 23 69 6e 73 65 72 74 22 3e 49 4e 53 45 52 54 20  #insert">INSERT 
c340: 63 6f 6d 6d 61 6e 64 3c 2f 61 3e 20 64 6f 63 75  command</a> docu
c350: 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 61 64  mentation for ad
c360: 64 69 74 69 6f 6e 61 6c 0a 69 6e 66 6f 72 6d 61  ditional.informa
c370: 74 69 6f 6e 2e 3c 2f 70 3e 20 20 0a 7d 0a 0a 0a  tion.</p>  .}...
c380: 53 65 63 74 69 6f 6e 20 53 45 4c 45 43 54 20 73  Section SELECT s
c390: 65 6c 65 63 74 0a 0a 53 79 6e 74 61 78 20 7b 73  elect..Syntax {s
c3a0: 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a  ql-statement} {.
c3b0: 53 45 4c 45 43 54 20 5b 41 4c 4c 20 7c 20 44 49  SELECT [ALL | DI
c3c0: 53 54 49 4e 43 54 5d 20 3c 72 65 73 75 6c 74 3e  STINCT] <result>
c3d0: 20 5b 46 52 4f 4d 20 3c 74 61 62 6c 65 2d 6c 69   [FROM <table-li
c3e0: 73 74 3e 5d 0a 5b 57 48 45 52 45 20 3c 65 78 70  st>].[WHERE <exp
c3f0: 72 3e 5d 0a 5b 47 52 4f 55 50 20 42 59 20 3c 65  r>].[GROUP BY <e
c400: 78 70 72 2d 6c 69 73 74 3e 5d 0a 5b 48 41 56 49  xpr-list>].[HAVI
c410: 4e 47 20 3c 65 78 70 72 3e 5d 0a 5b 3c 63 6f 6d  NG <expr>].[<com
c420: 70 6f 75 6e 64 2d 6f 70 3e 20 3c 73 65 6c 65 63  pound-op> <selec
c430: 74 3e 5d 2a 0a 5b 4f 52 44 45 52 20 42 59 20 3c  t>]*.[ORDER BY <
c440: 73 6f 72 74 2d 65 78 70 72 2d 6c 69 73 74 3e 5d  sort-expr-list>]
c450: 0a 5b 4c 49 4d 49 54 20 3c 69 6e 74 65 67 65 72  .[LIMIT <integer
c460: 3e 20 5b 4f 46 46 53 45 54 20 3c 69 6e 74 65 67  > [OFFSET <integ
c470: 65 72 3e 5d 5d 0a 7d 20 7b 72 65 73 75 6c 74 7d  er>]].} {result}
c480: 20 7b 0a 3c 72 65 73 75 6c 74 2d 63 6f 6c 75 6d   {.<result-colum
c490: 6e 3e 20 5b 2c 20 3c 72 65 73 75 6c 74 2d 63 6f  n> [, <result-co
c4a0: 6c 75 6d 6e 3e 5d 2a 0a 7d 20 7b 72 65 73 75 6c  lumn>]*.} {resul
c4b0: 74 2d 63 6f 6c 75 6d 6e 7d 20 7b 0a 53 54 41 52  t-column} {.STAR
c4c0: 20 7c 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 20   | <table-name> 
c4d0: 2e 20 53 54 41 52 20 7c 20 3c 65 78 70 72 3e 20  . STAR | <expr> 
c4e0: 5b 20 5b 41 53 5d 20 3c 73 74 72 69 6e 67 3e 20  [ [AS] <string> 
c4f0: 5d 0a 7d 20 7b 74 61 62 6c 65 2d 6c 69 73 74 7d  ].} {table-list}
c500: 20 7b 0a 3c 74 61 62 6c 65 3e 20 5b 3c 6a 6f 69   {.<table> [<joi
c510: 6e 2d 6f 70 3e 20 3c 74 61 62 6c 65 3e 20 3c 6a  n-op> <table> <j
c520: 6f 69 6e 2d 61 72 67 73 3e 5d 2a 0a 7d 20 7b 74  oin-args>]*.} {t
c530: 61 62 6c 65 7d 20 7b 0a 3c 74 61 62 6c 65 2d 6e  able} {.<table-n
c540: 61 6d 65 3e 20 5b 41 53 20 3c 61 6c 69 61 73 3e  ame> [AS <alias>
c550: 5d 20 7c 0a 28 20 3c 73 65 6c 65 63 74 3e 20 29  ] |.( <select> )
c560: 20 5b 41 53 20 3c 61 6c 69 61 73 3e 5d 0a 7d 20   [AS <alias>].} 
c570: 7b 6a 6f 69 6e 2d 6f 70 7d 20 7b 0a 2c 20 7c 20  {join-op} {., | 
c580: 5b 4e 41 54 55 52 41 4c 5d 20 5b 4c 45 46 54 20  [NATURAL] [LEFT 
c590: 7c 20 52 49 47 48 54 20 7c 20 46 55 4c 4c 5d 20  | RIGHT | FULL] 
c5a0: 5b 4f 55 54 45 52 20 7c 20 49 4e 4e 45 52 5d 20  [OUTER | INNER] 
c5b0: 4a 4f 49 4e 0a 7d 20 7b 6a 6f 69 6e 2d 61 72 67  JOIN.} {join-arg
c5c0: 73 7d 20 7b 0a 5b 4f 4e 20 3c 65 78 70 72 3e 5d  s} {.[ON <expr>]
c5d0: 20 5b 55 53 49 4e 47 20 28 20 3c 69 64 2d 6c 69   [USING ( <id-li
c5e0: 73 74 3e 20 29 5d 0a 7d 20 7b 73 6f 72 74 2d 65  st> )].} {sort-e
c5f0: 78 70 72 2d 6c 69 73 74 7d 20 7b 0a 3c 65 78 70  xpr-list} {.<exp
c600: 72 3e 20 5b 3c 73 6f 72 74 2d 6f 72 64 65 72 3e  r> [<sort-order>
c610: 5d 20 5b 2c 20 3c 65 78 70 72 3e 20 5b 3c 73 6f  ] [, <expr> [<so
c620: 72 74 2d 6f 72 64 65 72 3e 5d 5d 2a 0a 7d 20 7b  rt-order>]]*.} {
c630: 73 6f 72 74 2d 6f 72 64 65 72 7d 20 7b 0a 41 53  sort-order} {.AS
c640: 43 20 7c 20 44 45 53 43 0a 7d 20 7b 63 6f 6d 70  C | DESC.} {comp
c650: 6f 75 6e 64 5f 6f 70 7d 20 7b 0a 55 4e 49 4f 4e  ound_op} {.UNION
c660: 20 7c 20 55 4e 49 4f 4e 20 41 4c 4c 20 7c 20 49   | UNION ALL | I
c670: 4e 54 45 52 53 45 43 54 20 7c 20 45 58 43 45 50  NTERSECT | EXCEP
c680: 54 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54  T.}..puts {.<p>T
c690: 68 65 20 53 45 4c 45 43 54 20 73 74 61 74 65 6d  he SELECT statem
c6a0: 65 6e 74 20 69 73 20 75 73 65 64 20 74 6f 20 71  ent is used to q
c6b0: 75 65 72 79 20 74 68 65 20 64 61 74 61 62 61 73  uery the databas
c6c0: 65 2e 20 20 54 68 65 0a 72 65 73 75 6c 74 20 6f  e.  The.result o
c6d0: 66 20 61 20 53 45 4c 45 43 54 20 69 73 20 7a 65  f a SELECT is ze
c6e0: 72 6f 20 6f 72 20 6d 6f 72 65 20 72 6f 77 73 20  ro or more rows 
c6f0: 6f 66 20 64 61 74 61 20 77 68 65 72 65 20 65 61  of data where ea
c700: 63 68 20 72 6f 77 0a 68 61 73 20 61 20 66 69 78  ch row.has a fix
c710: 65 64 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c  ed number of col
c720: 75 6d 6e 73 2e 20 20 54 68 65 20 6e 75 6d 62 65  umns.  The numbe
c730: 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20  r of columns in 
c740: 74 68 65 0a 72 65 73 75 6c 74 20 69 73 20 73 70  the.result is sp
c750: 65 63 69 66 69 65 64 20 62 79 20 74 68 65 20 65  ecified by the e
c760: 78 70 72 65 73 73 69 6f 6e 20 6c 69 73 74 20 69  xpression list i
c770: 6e 20 62 65 74 77 65 65 6e 20 74 68 65 0a 53 45  n between the.SE
c780: 4c 45 43 54 20 61 6e 64 20 46 52 4f 4d 20 6b 65  LECT and FROM ke
c790: 79 77 6f 72 64 73 2e 20 20 41 6e 79 20 61 72 62  ywords.  Any arb
c7a0: 69 74 72 61 72 79 20 65 78 70 72 65 73 73 69 6f  itrary expressio
c7b0: 6e 20 63 61 6e 20 62 65 20 75 73 65 64 0a 61 73  n can be used.as
c7c0: 20 61 20 72 65 73 75 6c 74 2e 20 20 49 66 20 61   a result.  If a
c7d0: 20 72 65 73 75 6c 74 20 65 78 70 72 65 73 73 69   result expressi
c7e0: 6f 6e 20 69 73 20 7d 0a 70 75 74 73 20 22 5b 4f  on is }.puts "[O
c7f0: 70 65 72 61 74 6f 72 20 2a 5d 20 74 68 65 6e 20  perator *] then 
c800: 61 6c 6c 20 63 6f 6c 75 6d 6e 73 20 6f 66 20 61  all columns of a
c810: 6c 6c 20 74 61 62 6c 65 73 20 61 72 65 20 73 75  ll tables are su
c820: 62 73 74 69 74 75 74 65 64 22 0a 70 75 74 73 20  bstituted".puts 
c830: 7b 66 6f 72 20 74 68 61 74 20 6f 6e 65 20 65 78  {for that one ex
c840: 70 72 65 73 73 69 6f 6e 2e 20 20 49 66 20 74 68  pression.  If th
c850: 65 20 65 78 70 72 65 73 73 69 6f 6e 20 69 73 20  e expression is 
c860: 74 68 65 20 6e 61 6d 65 20 6f 66 7d 0a 70 75 74  the name of}.put
c870: 73 20 22 61 20 74 61 62 6c 65 20 66 6f 6c 6c 6f  s "a table follo
c880: 77 65 64 20 62 79 20 5b 4f 70 65 72 61 74 6f 72  wed by [Operator
c890: 20 2e 2a 5d 20 74 68 65 6e 20 74 68 65 20 72 65   .*] then the re
c8a0: 73 75 6c 74 20 69 73 20 61 6c 6c 20 63 6f 6c 75  sult is all colu
c8b0: 6d 6e 73 22 0a 70 75 74 73 20 7b 69 6e 20 74 68  mns".puts {in th
c8c0: 61 74 20 6f 6e 65 20 74 61 62 6c 65 2e 3c 2f 70  at one table.</p
c8d0: 3e 0a 0a 3c 70 3e 54 68 65 20 71 75 65 72 79 20  >..<p>The query 
c8e0: 69 73 20 65 78 65 63 75 74 65 64 20 61 67 61 69  is executed agai
c8f0: 6e 73 74 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20  nst one or more 
c900: 74 61 62 6c 65 73 20 73 70 65 63 69 66 69 65 64  tables specified
c910: 20 61 66 74 65 72 0a 74 68 65 20 46 52 4f 4d 20   after.the FROM 
c920: 6b 65 79 77 6f 72 64 2e 20 20 49 66 20 6d 75 6c  keyword.  If mul
c930: 74 69 70 6c 65 20 74 61 62 6c 65 73 20 6e 61 6d  tiple tables nam
c940: 65 73 20 61 72 65 20 73 65 70 61 72 61 74 65 64  es are separated
c950: 20 62 79 20 63 6f 6d 6d 61 73 2c 0a 74 68 65 6e   by commas,.then
c960: 20 74 68 65 20 71 75 65 72 79 20 69 73 20 61 67   the query is ag
c970: 61 69 6e 73 74 20 74 68 65 20 63 72 6f 73 73 20  ainst the cross 
c980: 6a 6f 69 6e 20 6f 66 20 74 68 65 20 76 61 72 69  join of the vari
c990: 6f 75 73 20 74 61 62 6c 65 73 2e 0a 54 68 65 20  ous tables..The 
c9a0: 66 75 6c 6c 20 53 51 4c 2d 39 32 20 6a 6f 69 6e  full SQL-92 join
c9b0: 20 73 79 6e 74 61 78 20 63 61 6e 20 61 6c 73 6f   syntax can also
c9c0: 20 62 65 20 75 73 65 64 20 74 6f 20 73 70 65 63   be used to spec
c9d0: 69 66 79 20 6a 6f 69 6e 73 2e 0a 41 20 73 75 62  ify joins..A sub
c9e0: 2d 71 75 65 72 79 0a 69 6e 20 70 61 72 65 6e 74  -query.in parent
c9f0: 68 65 73 65 73 20 6d 61 79 20 62 65 20 73 75 62  heses may be sub
ca00: 73 74 69 74 75 74 65 64 20 66 6f 72 20 61 6e 79  stituted for any
ca10: 20 74 61 62 6c 65 20 6e 61 6d 65 20 69 6e 20 74   table name in t
ca20: 68 65 20 46 52 4f 4d 20 63 6c 61 75 73 65 2e 0a  he FROM clause..
ca30: 54 68 65 20 65 6e 74 69 72 65 20 46 52 4f 4d 20  The entire FROM 
ca40: 63 6c 61 75 73 65 20 6d 61 79 20 62 65 20 6f 6d  clause may be om
ca50: 69 74 74 65 64 2c 20 69 6e 20 77 68 69 63 68 20  itted, in which 
ca60: 63 61 73 65 20 74 68 65 20 72 65 73 75 6c 74 20  case the result 
ca70: 69 73 20 61 0a 73 69 6e 67 6c 65 20 72 6f 77 20  is a.single row 
ca80: 63 6f 6e 73 69 73 74 69 6e 67 20 6f 66 20 74 68  consisting of th
ca90: 65 20 76 61 6c 75 65 73 20 6f 66 20 74 68 65 20  e values of the 
caa0: 65 78 70 72 65 73 73 69 6f 6e 20 6c 69 73 74 2e  expression list.
cab0: 0a 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 57 48  .</p>..<p>The WH
cac0: 45 52 45 20 63 6c 61 75 73 65 20 63 61 6e 20 62  ERE clause can b
cad0: 65 20 75 73 65 64 20 74 6f 20 6c 69 6d 69 74 20  e used to limit 
cae0: 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 72 6f  the number of ro
caf0: 77 73 20 6f 76 65 72 0a 77 68 69 63 68 20 74 68  ws over.which th
cb00: 65 20 71 75 65 72 79 20 6f 70 65 72 61 74 65 73  e query operates
cb10: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 47 52  .</p>..<p>The GR
cb20: 4f 55 50 20 42 59 20 63 6c 61 75 73 65 73 20 63  OUP BY clauses c
cb30: 61 75 73 65 73 20 6f 6e 65 20 6f 72 20 6d 6f 72  auses one or mor
cb40: 65 20 72 6f 77 73 20 6f 66 20 74 68 65 20 72 65  e rows of the re
cb50: 73 75 6c 74 20 74 6f 0a 62 65 20 63 6f 6d 62 69  sult to.be combi
cb60: 6e 65 64 20 69 6e 74 6f 20 61 20 73 69 6e 67 6c  ned into a singl
cb70: 65 20 72 6f 77 20 6f 66 20 6f 75 74 70 75 74 2e  e row of output.
cb80: 20 20 54 68 69 73 20 69 73 20 65 73 70 65 63 69    This is especi
cb90: 61 6c 6c 79 20 75 73 65 66 75 6c 0a 77 68 65 6e  ally useful.when
cba0: 20 74 68 65 20 72 65 73 75 6c 74 20 63 6f 6e 74   the result cont
cbb0: 61 69 6e 73 20 61 67 67 72 65 67 61 74 65 20 66  ains aggregate f
cbc0: 75 6e 63 74 69 6f 6e 73 2e 20 20 54 68 65 20 65  unctions.  The e
cbd0: 78 70 72 65 73 73 69 6f 6e 73 20 69 6e 0a 74 68  xpressions in.th
cbe0: 65 20 47 52 4f 55 50 20 42 59 20 63 6c 61 75 73  e GROUP BY claus
cbf0: 65 20 64 6f 20 3c 65 6d 3e 6e 6f 74 3c 2f 65 6d  e do <em>not</em
cc00: 3e 20 68 61 76 65 20 74 6f 20 62 65 20 65 78 70  > have to be exp
cc10: 72 65 73 73 69 6f 6e 73 20 74 68 61 74 0a 61 70  ressions that.ap
cc20: 70 65 61 72 20 69 6e 20 74 68 65 20 72 65 73 75  pear in the resu
cc30: 6c 74 2e 20 20 54 68 65 20 48 41 56 49 4e 47 20  lt.  The HAVING 
cc40: 63 6c 61 75 73 65 20 69 73 20 73 69 6d 69 6c 61  clause is simila
cc50: 72 20 74 6f 20 57 48 45 52 45 20 65 78 63 65 70  r to WHERE excep
cc60: 74 0a 74 68 61 74 20 48 41 56 49 4e 47 20 61 70  t.that HAVING ap
cc70: 70 6c 69 65 73 20 61 66 74 65 72 20 67 72 6f 75  plies after grou
cc80: 70 69 6e 67 20 68 61 73 20 6f 63 63 75 72 72 65  ping has occurre
cc90: 64 2e 20 20 54 68 65 20 48 41 56 49 4e 47 20 65  d.  The HAVING e
cca0: 78 70 72 65 73 73 69 6f 6e 0a 6d 61 79 20 72 65  xpression.may re
ccb0: 66 65 72 20 74 6f 20 76 61 6c 75 65 73 2c 20 65  fer to values, e
ccc0: 76 65 6e 20 61 67 67 72 65 67 61 74 65 20 66 75  ven aggregate fu
ccd0: 6e 63 74 69 6f 6e 73 2c 20 74 68 61 74 20 61 72  nctions, that ar
cce0: 65 20 6e 6f 74 20 69 6e 20 74 68 65 20 72 65 73  e not in the res
ccf0: 75 6c 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  ult.</p>..<p>The
cd00: 20 4f 52 44 45 52 20 42 59 20 63 6c 61 75 73 65   ORDER BY clause
cd10: 20 63 61 75 73 65 73 20 74 68 65 20 6f 75 74 70   causes the outp
cd20: 75 74 20 72 6f 77 73 20 74 6f 20 62 65 20 73 6f  ut rows to be so
cd30: 72 74 65 64 2e 20 20 0a 54 68 65 20 61 72 67 75  rted.  .The argu
cd40: 6d 65 6e 74 20 74 6f 20 4f 52 44 45 52 20 42 59  ment to ORDER BY
cd50: 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20 65 78   is a list of ex
cd60: 70 72 65 73 73 69 6f 6e 73 20 74 68 61 74 20 61  pressions that a
cd70: 72 65 20 75 73 65 64 20 61 73 20 74 68 65 0a 6b  re used as the.k
cd80: 65 79 20 66 6f 72 20 74 68 65 20 73 6f 72 74 2e  ey for the sort.
cd90: 20 20 54 68 65 20 65 78 70 72 65 73 73 69 6f 6e    The expression
cda0: 73 20 64 6f 20 6e 6f 74 20 68 61 76 65 20 74 6f  s do not have to
cdb0: 20 62 65 20 70 61 72 74 20 6f 66 20 74 68 65 0a   be part of the.
cdc0: 72 65 73 75 6c 74 20 66 6f 72 20 61 20 73 69 6d  result for a sim
cdd0: 70 6c 65 20 53 45 4c 45 43 54 2c 20 62 75 74 20  ple SELECT, but 
cde0: 69 6e 20 61 20 63 6f 6d 70 6f 75 6e 64 20 53 45  in a compound SE
cdf0: 4c 45 43 54 20 65 61 63 68 20 73 6f 72 74 0a 65  LECT each sort.e
ce00: 78 70 72 65 73 73 69 6f 6e 20 6d 75 73 74 20 65  xpression must e
ce10: 78 61 63 74 6c 79 20 6d 61 74 63 68 20 6f 6e 65  xactly match one
ce20: 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74 20 63   of the result c
ce30: 6f 6c 75 6d 6e 73 2e 20 20 45 61 63 68 0a 73 6f  olumns.  Each.so
ce40: 72 74 20 65 78 70 72 65 73 73 69 6f 6e 20 6d 61  rt expression ma
ce50: 79 20 62 65 20 6f 70 74 69 6f 6e 61 6c 6c 79 20  y be optionally 
ce60: 66 6f 6c 6c 6f 77 65 64 20 62 79 20 41 53 43 20  followed by ASC 
ce70: 6f 72 20 44 45 53 43 20 74 6f 20 73 70 65 63 69  or DESC to speci
ce80: 66 79 0a 74 68 65 20 73 6f 72 74 20 6f 72 64 65  fy.the sort orde
ce90: 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 4c  r.</p>..<p>The L
cea0: 49 4d 49 54 20 63 6c 61 75 73 65 20 70 6c 61 63  IMIT clause plac
ceb0: 65 73 20 61 6e 20 75 70 70 65 72 20 62 6f 75 6e  es an upper boun
cec0: 64 20 6f 6e 20 74 68 65 20 6e 75 6d 62 65 72 20  d on the number 
ced0: 6f 66 20 72 6f 77 73 0a 72 65 74 75 72 6e 65 64  of rows.returned
cee0: 20 69 6e 20 74 68 65 20 72 65 73 75 6c 74 2e 20   in the result. 
cef0: 20 41 20 4c 49 4d 49 54 20 6f 66 20 30 20 69 6e   A LIMIT of 0 in
cf00: 64 69 63 61 74 65 73 20 6e 6f 20 75 70 70 65 72  dicates no upper
cf10: 20 62 6f 75 6e 64 2e 0a 54 68 65 20 6f 70 74 69   bound..The opti
cf20: 6f 6e 61 6c 20 4f 46 46 53 45 54 20 66 6f 6c 6c  onal OFFSET foll
cf30: 6f 77 69 6e 67 20 4c 49 4d 49 54 20 73 70 65 63  owing LIMIT spec
cf40: 69 66 69 65 73 20 68 6f 77 20 6d 61 6e 79 0a 72  ifies how many.r
cf50: 6f 77 73 20 74 6f 20 73 6b 69 70 20 61 74 20 74  ows to skip at t
cf60: 68 65 20 62 65 67 69 6e 6e 69 6e 67 20 6f 66 20  he beginning of 
cf70: 74 68 65 20 72 65 73 75 6c 74 20 73 65 74 2e 3c  the result set.<
cf80: 2f 70 3e 0a 0a 3c 70 3e 41 20 63 6f 6d 70 6f 75  /p>..<p>A compou
cf90: 6e 64 20 53 45 4c 45 43 54 20 69 73 20 66 6f 72  nd SELECT is for
cfa0: 6d 65 64 20 66 72 6f 6d 20 74 77 6f 20 6f 72 20  med from two or 
cfb0: 6d 6f 72 65 20 73 69 6d 70 6c 65 20 53 45 4c 45  more simple SELE
cfc0: 43 54 73 20 63 6f 6e 6e 65 63 74 65 64 0a 62 79  CTs connected.by
cfd0: 20 6f 6e 65 20 6f 66 20 74 68 65 20 6f 70 65 72   one of the oper
cfe0: 61 74 6f 72 73 20 55 4e 49 4f 4e 2c 20 55 4e 49  ators UNION, UNI
cff0: 4f 4e 20 41 4c 4c 2c 20 49 4e 54 45 52 53 45 43  ON ALL, INTERSEC
d000: 54 2c 20 6f 72 20 45 58 43 45 50 54 2e 20 20 49  T, or EXCEPT.  I
d010: 6e 0a 61 20 63 6f 6d 70 6f 75 6e 64 20 53 45 4c  n.a compound SEL
d020: 45 43 54 2c 20 61 6c 6c 20 74 68 65 20 63 6f 6e  ECT, all the con
d030: 73 74 69 74 75 65 6e 74 20 53 45 4c 45 43 54 73  stituent SELECTs
d040: 20 6d 75 73 74 20 73 70 65 63 69 66 79 20 74 68   must specify th
d050: 65 0a 73 61 6d 65 20 6e 75 6d 62 65 72 20 6f 66  e.same number of
d060: 20 72 65 73 75 6c 74 20 63 6f 6c 75 6d 6e 73 2e   result columns.
d070: 20 20 54 68 65 72 65 20 6d 61 79 20 62 65 20 6f    There may be o
d080: 6e 6c 79 20 61 20 73 69 6e 67 6c 65 20 4f 52 44  nly a single ORD
d090: 45 52 20 42 59 0a 63 6c 61 75 73 65 20 61 74 20  ER BY.clause at 
d0a0: 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65 20 63  the end of the c
d0b0: 6f 6d 70 6f 75 6e 64 20 53 45 4c 45 43 54 2e 20  ompound SELECT. 
d0c0: 20 54 68 65 20 55 4e 49 4f 4e 20 61 6e 64 20 55   The UNION and U
d0d0: 4e 49 4f 4e 20 41 4c 4c 0a 6f 70 65 72 61 74 6f  NION ALL.operato
d0e0: 72 73 20 63 6f 6d 62 69 6e 65 20 74 68 65 20 72  rs combine the r
d0f0: 65 73 75 6c 74 73 20 6f 66 20 74 68 65 20 53 45  esults of the SE
d100: 4c 45 43 54 73 20 74 6f 20 74 68 65 20 72 69 67  LECTs to the rig
d110: 68 74 20 61 6e 64 20 6c 65 66 74 20 69 6e 74 6f  ht and left into
d120: 0a 61 20 73 69 6e 67 6c 65 20 62 69 67 20 74 61  .a single big ta
d130: 62 6c 65 2e 20 20 54 68 65 20 64 69 66 66 65 72  ble.  The differ
d140: 65 6e 63 65 20 69 73 20 74 68 61 74 20 69 6e 20  ence is that in 
d150: 55 4e 49 4f 4e 20 61 6c 6c 20 72 65 73 75 6c 74  UNION all result
d160: 20 72 6f 77 73 0a 61 72 65 20 64 69 73 74 69 6e   rows.are distin
d170: 63 74 20 77 68 65 72 65 20 69 6e 20 55 4e 49 4f  ct where in UNIO
d180: 4e 20 41 4c 4c 20 74 68 65 72 65 20 6d 61 79 20  N ALL there may 
d190: 62 65 20 64 75 70 6c 69 63 61 74 65 73 2e 0a 54  be duplicates..T
d1a0: 68 65 20 49 4e 54 45 52 53 45 43 54 20 6f 70 65  he INTERSECT ope
d1b0: 72 61 74 6f 72 20 74 61 6b 65 73 20 74 68 65 20  rator takes the 
d1c0: 69 6e 74 65 72 73 65 63 74 69 6f 6e 20 6f 66 20  intersection of 
d1d0: 74 68 65 20 72 65 73 75 6c 74 73 20 6f 66 20 74  the results of t
d1e0: 68 65 0a 6c 65 66 74 20 61 6e 64 20 72 69 67 68  he.left and righ
d1f0: 74 20 53 45 4c 45 43 54 73 2e 20 20 45 58 43 45  t SELECTs.  EXCE
d200: 50 54 20 74 61 6b 65 73 20 74 68 65 20 72 65 73  PT takes the res
d210: 75 6c 74 20 6f 66 20 6c 65 66 74 20 53 45 4c 45  ult of left SELE
d220: 43 54 20 61 66 74 65 72 0a 72 65 6d 6f 76 69 6e  CT after.removin
d230: 67 20 74 68 65 20 72 65 73 75 6c 74 73 20 6f 66  g the results of
d240: 20 74 68 65 20 72 69 67 68 74 20 53 45 4c 45 43   the right SELEC
d250: 54 2e 20 20 57 68 65 6e 20 74 68 72 65 65 20 61  T.  When three a
d260: 72 65 20 6d 6f 72 65 20 53 45 4c 45 43 54 73 0a  re more SELECTs.
d270: 61 72 65 20 63 6f 6e 6e 65 63 74 65 64 20 69 6e  are connected in
d280: 74 6f 20 61 20 63 6f 6d 70 6f 75 6e 64 2c 20 74  to a compound, t
d290: 68 65 79 20 67 72 6f 75 70 20 66 72 6f 6d 20 6c  hey group from l
d2a0: 65 66 74 20 74 6f 20 72 69 67 68 74 2e 3c 2f 70  eft to right.</p
d2b0: 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20 55 50  >.}...Section UP
d2c0: 44 41 54 45 20 75 70 64 61 74 65 0a 0a 53 79 6e  DATE update..Syn
d2d0: 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65  tax {sql-stateme
d2e0: 6e 74 7d 20 7b 0a 55 50 44 41 54 45 20 5b 20 4f  nt} {.UPDATE [ O
d2f0: 52 20 3c 63 6f 6e 66 6c 69 63 74 2d 61 6c 67 6f  R <conflict-algo
d300: 72 69 74 68 6d 3e 20 5d 20 3c 74 61 62 6c 65 2d  rithm> ] <table-
d310: 6e 61 6d 65 3e 0a 53 45 54 20 3c 61 73 73 69 67  name>.SET <assig
d320: 6e 6d 65 6e 74 3e 20 5b 2c 20 3c 61 73 73 69 67  nment> [, <assig
d330: 6e 6d 65 6e 74 3e 5d 2a 0a 5b 57 48 45 52 45 20  nment>]*.[WHERE 
d340: 3c 65 78 70 72 3e 5d 0a 7d 20 7b 61 73 73 69 67  <expr>].} {assig
d350: 6e 6d 65 6e 74 7d 20 7b 0a 3c 63 6f 6c 75 6d 6e  nment} {.<column
d360: 2d 6e 61 6d 65 3e 20 3d 20 3c 65 78 70 72 3e 0a  -name> = <expr>.
d370: 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65  }..puts {.<p>The
d380: 20 55 50 44 41 54 45 20 73 74 61 74 65 6d 65 6e   UPDATE statemen
d390: 74 20 69 73 20 75 73 65 64 20 74 6f 20 63 68 61  t is used to cha
d3a0: 6e 67 65 20 74 68 65 20 76 61 6c 75 65 20 6f 66  nge the value of
d3b0: 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 0a 73 65 6c   columns in .sel
d3c0: 65 63 74 65 64 20 72 6f 77 73 20 6f 66 20 61 20  ected rows of a 
d3d0: 74 61 62 6c 65 2e 20 20 45 61 63 68 20 61 73 73  table.  Each ass
d3e0: 69 67 6e 6d 65 6e 74 20 69 6e 20 61 6e 20 55 50  ignment in an UP
d3f0: 44 41 54 45 20 73 70 65 63 69 66 69 65 73 0a 61  DATE specifies.a
d400: 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 20 74 6f 20   column name to 
d410: 74 68 65 20 6c 65 66 74 20 6f 66 20 74 68 65 20  the left of the 
d420: 65 71 75 61 6c 73 20 73 69 67 6e 20 61 6e 64 20  equals sign and 
d430: 61 6e 20 61 72 62 69 74 72 61 72 79 20 65 78 70  an arbitrary exp
d440: 72 65 73 73 69 6f 6e 0a 74 6f 20 74 68 65 20 72  ression.to the r
d450: 69 67 68 74 2e 20 20 54 68 65 20 65 78 70 72 65  ight.  The expre
d460: 73 73 69 6f 6e 73 20 6d 61 79 20 75 73 65 20 74  ssions may use t
d470: 68 65 20 76 61 6c 75 65 73 20 6f 66 20 6f 74 68  he values of oth
d480: 65 72 20 63 6f 6c 75 6d 6e 73 2e 0a 41 6c 6c 20  er columns..All 
d490: 65 78 70 72 65 73 73 69 6f 6e 73 20 61 72 65 20  expressions are 
d4a0: 65 76 61 6c 75 61 74 65 64 20 62 65 66 6f 72 65  evaluated before
d4b0: 20 61 6e 79 20 61 73 73 69 67 6e 6d 65 6e 74 73   any assignments
d4c0: 20 61 72 65 20 6d 61 64 65 2e 0a 41 20 57 48 45   are made..A WHE
d4d0: 52 45 20 63 6c 61 75 73 65 20 63 61 6e 20 62 65  RE clause can be
d4e0: 20 75 73 65 64 20 74 6f 20 72 65 73 74 72 69 63   used to restric
d4f0: 74 20 77 68 69 63 68 20 72 6f 77 73 20 61 72 65  t which rows are
d500: 20 75 70 64 61 74 65 64 2e 3c 2f 70 3e 0a 0a 3c   updated.</p>..<
d510: 70 3e 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20 63  p>The optional c
d520: 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65 20 61  onflict-clause a
d530: 6c 6c 6f 77 73 20 74 68 65 20 73 70 65 63 69 66  llows the specif
d540: 69 63 61 74 69 6f 6e 20 6f 66 20 61 6e 20 61 6c  ication of an al
d550: 74 65 72 6e 61 74 69 76 65 0a 63 6f 6e 73 74 72  ternative.constr
d560: 61 69 6e 74 20 63 6f 6e 66 6c 69 63 74 20 72 65  aint conflict re
d570: 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74  solution algorit
d580: 68 6d 20 74 6f 20 75 73 65 20 64 75 72 69 6e 67  hm to use during
d590: 20 74 68 69 73 20 6f 6e 65 20 63 6f 6d 6d 61 6e   this one comman
d5a0: 64 2e 0a 53 65 65 20 74 68 65 20 73 65 63 74 69  d..See the secti
d5b0: 6f 6e 20 74 69 74 6c 65 64 0a 3c 61 20 68 72 65  on titled.<a hre
d5c0: 66 3d 22 23 63 6f 6e 66 6c 69 63 74 22 3e 4f 4e  f="#conflict">ON
d5d0: 20 43 4f 4e 46 4c 49 43 54 3c 2f 61 3e 20 66 6f   CONFLICT</a> fo
d5e0: 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66  r additional inf
d5f0: 6f 72 6d 61 74 69 6f 6e 2e 3c 2f 70 3e 0a 7d 0a  ormation.</p>.}.
d600: 0a 0a 53 65 63 74 69 6f 6e 20 56 41 43 55 55 4d  ..Section VACUUM
d610: 20 76 61 63 75 75 6d 0a 0a 53 79 6e 74 61 78 20   vacuum..Syntax 
d620: 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20  {sql-statement} 
d630: 7b 0a 56 41 43 55 55 4d 20 5b 3c 69 6e 64 65 78  {.VACUUM [<index
d640: 2d 6f 72 2d 74 61 62 6c 65 2d 6e 61 6d 65 3e 5d  -or-table-name>]
d650: 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68  .}..puts {.<p>Th
d660: 65 20 56 41 43 55 55 4d 20 63 6f 6d 6d 61 6e 64  e VACUUM command
d670: 20 69 73 20 61 6e 20 53 51 4c 69 74 65 20 65 78   is an SQLite ex
d680: 74 65 6e 73 69 6f 6e 20 6d 6f 64 65 6c 6c 65 64  tension modelled
d690: 20 61 66 74 65 72 20 61 20 73 69 6d 69 6c 61 72   after a similar
d6a0: 0a 63 6f 6d 6d 61 6e 64 20 66 6f 75 6e 64 20 69  .command found i
d6b0: 6e 20 50 6f 73 74 67 72 65 53 51 4c 2e 20 20 49  n PostgreSQL.  I
d6c0: 66 20 56 41 43 55 55 4d 20 69 73 20 69 6e 76 6f  f VACUUM is invo
d6d0: 6b 65 64 20 77 69 74 68 20 74 68 65 20 6e 61 6d  ked with the nam
d6e0: 65 20 6f 66 20 61 0a 74 61 62 6c 65 20 6f 72 20  e of a.table or 
d6f0: 69 6e 64 65 78 20 74 68 65 6e 20 69 74 20 69 73  index then it is
d700: 20 73 75 70 70 6f 73 65 20 74 6f 20 63 6c 65 61   suppose to clea
d710: 6e 20 75 70 20 74 68 65 20 6e 61 6d 65 64 20 74  n up the named t
d720: 61 62 6c 65 20 6f 72 20 69 6e 64 65 78 2e 0a 49  able or index..I
d730: 6e 20 76 65 72 73 69 6f 6e 20 31 2e 30 20 6f 66  n version 1.0 of
d740: 20 53 51 4c 69 74 65 2c 20 74 68 65 20 56 41 43   SQLite, the VAC
d750: 55 55 4d 20 63 6f 6d 6d 61 6e 64 20 77 6f 75 6c  UUM command woul
d760: 64 20 69 6e 76 6f 6b 65 20 0a 3c 62 3e 67 64 62  d invoke .<b>gdb
d770: 6d 5f 72 65 6f 72 67 61 6e 69 7a 65 28 29 3c 2f  m_reorganize()</
d780: 62 3e 20 74 6f 20 63 6c 65 61 6e 20 75 70 20 74  b> to clean up t
d790: 68 65 20 62 61 63 6b 65 6e 64 20 64 61 74 61 62  he backend datab
d7a0: 61 73 65 20 66 69 6c 65 2e 3c 2f 70 3e 0a 0a 3c  ase file.</p>..<
d7b0: 70 3e 0a 56 41 43 55 55 4d 20 62 65 63 61 6d 65  p>.VACUUM became
d7c0: 20 61 20 6e 6f 2d 6f 70 20 66 6f 72 20 76 65 72   a no-op for ver
d7d0: 73 69 6f 6e 20 32 2e 30 2e 30 20 6f 66 20 53 51  sion 2.0.0 of SQ
d7e0: 4c 69 74 65 2e 20 0a 54 68 65 20 63 6f 6d 6d 61  Lite. .The comma
d7f0: 6e 64 20 77 61 73 20 72 65 61 63 74 69 76 61 74  nd was reactivat
d800: 65 64 20 77 69 74 68 20 76 65 72 73 69 6f 6e 20  ed with version 
d810: 32 2e 38 2e 31 2e 20 20 49 74 20 6e 6f 77 20 63  2.8.1.  It now c
d820: 6c 65 61 6e 73 0a 74 68 65 20 64 61 74 61 62 61  leans.the databa
d830: 73 65 20 62 79 20 63 6f 70 79 69 6e 67 20 69 74  se by copying it
d840: 73 20 63 6f 6e 74 65 6e 74 73 20 74 6f 20 61 20  s contents to a 
d850: 74 65 6d 70 6f 72 61 72 79 20 64 61 74 61 62 61  temporary databa
d860: 73 65 20 66 69 6c 65 2c 20 61 6e 64 20 0a 72 65  se file, and .re
d870: 6c 6f 61 64 69 6e 67 20 74 68 65 20 64 61 74 61  loading the data
d880: 62 61 73 65 20 66 69 6c 65 20 66 72 6f 6d 20 69  base file from i
d890: 74 2e 20 20 54 68 69 73 20 77 69 6c 6c 20 65 6c  t.  This will el
d8a0: 69 6d 69 6e 61 74 65 20 66 72 65 65 20 70 61 67  iminate free pag
d8b0: 65 73 2c 20 0a 61 6c 69 67 6e 20 74 61 62 6c 65  es, .align table
d8c0: 20 64 61 74 61 20 74 6f 20 62 65 20 63 6f 6e 74   data to be cont
d8d0: 69 67 75 6f 75 73 2c 20 61 6e 64 20 6f 74 68 65  iguous, and othe
d8e0: 72 77 69 73 65 20 63 6c 65 61 6e 20 75 70 20 74  rwise clean up t
d8f0: 68 65 20 64 61 74 61 62 61 73 65 20 0a 66 69 6c  he database .fil
d900: 65 20 73 74 72 75 63 74 75 72 65 2e 20 20 54 68  e structure.  Th
d910: 65 20 69 6e 64 65 78 20 6f 72 20 74 61 62 6c 65  e index or table
d920: 20 6e 61 6d 65 20 61 72 67 75 6d 65 6e 74 20 69   name argument i
d930: 73 20 6e 6f 77 20 69 67 6e 6f 72 65 64 2e 3c 2f  s now ignored.</
d940: 70 3e 0a 0a 3c 70 3e 54 68 69 73 20 63 6f 6d 6d  p>..<p>This comm
d950: 61 6e 64 20 77 69 6c 6c 20 66 61 69 6c 20 69 66  and will fail if
d960: 20 74 68 65 72 65 20 69 73 20 61 6e 20 61 63 74   there is an act
d970: 69 76 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 2e  ive transaction.
d980: 20 20 54 68 69 73 20 0a 63 6f 6d 6d 61 6e 64 20    This .command 
d990: 68 61 73 20 6e 6f 20 65 66 66 65 63 74 20 6f 6e  has no effect on
d9a0: 20 61 6e 20 69 6e 2d 6d 65 6d 6f 72 79 20 64 61   an in-memory da
d9b0: 74 61 62 61 73 65 2e 3c 2f 70 3e 0a 7d 0a 0a 0a  tabase.</p>.}...
d9c0: 70 75 74 73 20 7b 0a 3c 70 3e 3c 68 72 20 2f 3e  puts {.<p><hr />
d9d0: 3c 2f 70 3e 0a 3c 70 3e 3c 61 20 68 72 65 66 3d  </p>.<p><a href=
d9e0: 22 69 6e 64 65 78 2e 68 74 6d 6c 22 3e 3c 69 6d  "index.html"><im
d9f0: 67 20 73 72 63 3d 22 2f 67 6f 62 61 63 6b 2e 6a  g src="/goback.j
da00: 70 67 22 20 62 6f 72 64 65 72 3d 30 20 2f 3e 0a  pg" border=0 />.
da10: 42 61 63 6b 20 74 6f 20 74 68 65 20 53 51 4c 69  Back to the SQLi
da20: 74 65 20 48 6f 6d 65 20 50 61 67 65 3c 2f 61 3e  te Home Page</a>
da30: 0a 3c 2f 70 3e 0a 0a 3c 2f 62 6f 64 79 3e 3c 2f  .</p>..</body></
da40: 68 74 6d 6c 3e 7d 0a                             html>}.