/ Hex Artifact Content
Login

Artifact e87aa6b305d92977a6bd84bfcddd18fa76dff60a:


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 33 36 20 32 30 30 32  .tcl,v 1.36 2002
0060: 2f 30 35 2f 32 36 20 32 33 3a 32 34 3a 34 31 20  /05/26 23:24:41 
0070: 64 61 6e 69 65 6c 6b 31 39 37 37 20 45 78 70 20  danielk1977 Exp 
0080: 24 7d 0a 0a 70 75 74 73 20 7b 3c 68 74 6d 6c 3e  $}..puts {<html>
0090: 0a 3c 68 65 61 64 3e 0a 20 20 3c 74 69 74 6c 65  .<head>.  <title
00a0: 3e 51 75 65 72 79 20 4c 61 6e 67 75 61 67 65 20  >Query Language 
00b0: 55 6e 64 65 72 73 74 6f 6f 64 20 42 79 20 53 51  Understood By SQ
00c0: 4c 69 74 65 3c 2f 74 69 74 6c 65 3e 0a 3c 2f 68  Lite</title>.</h
00d0: 65 61 64 3e 0a 3c 62 6f 64 79 20 62 67 63 6f 6c  ead>.<body bgcol
00e0: 6f 72 3d 77 68 69 74 65 3e 0a 3c 68 31 20 61 6c  or=white>.<h1 al
00f0: 69 67 6e 3d 63 65 6e 74 65 72 3e 0a 53 51 4c 20  ign=center>.SQL 
0100: 41 73 20 55 6e 64 65 72 73 74 6f 6f 64 20 42 79  As Understood By
0110: 20 53 51 4c 69 74 65 0a 3c 2f 68 31 3e 7d 0a 70   SQLite.</h1>}.p
0120: 75 74 73 20 22 3c 70 20 61 6c 69 67 6e 3d 63 65  uts "<p align=ce
0130: 6e 74 65 72 3e 0a 28 54 68 69 73 20 70 61 67 65  nter>.(This page
0140: 20 77 61 73 20 6c 61 73 74 20 6d 6f 64 69 66 69   was last modifi
0150: 65 64 20 6f 6e 20 5b 6c 72 61 6e 67 65 20 24 72  ed on [lrange $r
0160: 63 73 69 64 20 33 20 34 5d 20 55 54 43 29 0a 3c  csid 3 4] UTC).<
0170: 2f 70 3e 22 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e  /p>"..puts {.<p>
0180: 54 68 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61  The SQLite libra
0190: 72 79 20 75 6e 64 65 72 73 74 61 6e 64 73 20 6d  ry understands m
01a0: 6f 73 74 20 6f 66 20 74 68 65 20 73 74 61 6e 64  ost of the stand
01b0: 61 72 64 20 53 51 4c 0a 6c 61 6e 67 75 61 67 65  ard SQL.language
01c0: 2e 20 20 42 75 74 20 69 74 20 64 6f 65 73 20 6f  .  But it does o
01d0: 6d 69 74 20 73 6f 6d 65 20 66 65 61 74 75 72 65  mit some feature
01e0: 73 20 77 68 69 6c 65 20 61 74 20 74 68 65 20 73  s while at the s
01f0: 61 6d 65 20 74 69 6d 65 0a 61 64 64 69 6e 67 20  ame time.adding 
0200: 61 20 66 65 77 20 66 65 61 74 75 72 65 73 20 6f  a few features o
0210: 66 20 69 74 73 20 6f 77 6e 2e 20 20 54 68 69 73  f its own.  This
0220: 20 64 6f 63 75 6d 65 6e 74 20 61 74 74 65 6d 70   document attemp
0230: 74 73 20 74 6f 0a 64 65 73 63 72 69 62 65 20 70  ts to.describe p
0240: 65 72 63 69 73 65 6c 79 20 77 68 61 74 20 70 61  ercisely what pa
0250: 72 74 73 20 6f 66 20 74 68 65 20 53 51 4c 20 6c  rts of the SQL l
0260: 61 6e 67 75 61 67 65 20 53 51 4c 69 74 65 20 64  anguage SQLite d
0270: 6f 65 73 0a 61 6e 64 20 64 6f 65 73 20 6e 6f 74  oes.and does not
0280: 20 73 75 70 70 6f 72 74 2e 3c 2f 70 3e 0a 0a 3c   support.</p>..<
0290: 70 3e 49 6e 20 61 6c 6c 20 6f 66 20 74 68 65 20  p>In all of the 
02a0: 73 79 6e 74 61 78 20 64 69 61 67 72 61 6d 73 20  syntax diagrams 
02b0: 74 68 61 74 20 66 6f 6c 6c 6f 77 2c 20 6c 69 74  that follow, lit
02c0: 65 72 61 6c 20 74 65 78 74 20 69 73 20 73 68 6f  eral text is sho
02d0: 77 6e 20 69 6e 0a 62 6f 6c 64 20 62 6c 75 65 2e  wn in.bold blue.
02e0: 20 20 4e 6f 6e 2d 74 65 72 6d 69 6e 61 6c 20 73    Non-terminal s
02f0: 79 6d 62 6f 6c 73 20 61 72 65 20 73 68 6f 77 6e  ymbols are shown
0300: 20 69 6e 20 69 74 61 6c 69 63 20 72 65 64 2e 20   in italic red. 
0310: 20 4f 70 65 72 61 74 6f 72 73 0a 74 68 61 74 20   Operators.that 
0320: 61 72 65 20 70 61 72 74 20 6f 66 20 74 68 65 20  are part of the 
0330: 73 79 6e 74 61 63 74 69 63 20 6d 61 72 6b 75 70  syntactic markup
0340: 20 69 74 73 65 6c 66 20 61 72 65 20 73 68 6f 77   itself are show
0350: 6e 20 69 6e 20 62 6c 61 63 6b 20 72 6f 6d 61 6e  n in black roman
0360: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 69 73 20 64  .</p>..<p>This d
0370: 6f 63 75 6d 65 6e 74 20 69 73 20 6a 75 73 74 20  ocument is just 
0380: 61 6e 20 6f 76 65 72 76 69 65 77 20 6f 66 20 74  an overview of t
0390: 68 65 20 53 51 4c 20 73 79 6e 74 61 78 20 69 6d  he SQL syntax im
03a0: 70 6c 65 6d 65 6e 74 65 64 0a 62 79 20 53 51 4c  plemented.by SQL
03b0: 69 74 65 2e 20 20 4d 61 6e 79 20 6c 6f 77 2d 6c  ite.  Many low-l
03c0: 65 76 65 6c 20 70 72 6f 64 75 63 74 69 6f 6e 73  evel productions
03d0: 20 61 72 65 20 6f 6d 69 74 74 65 64 2e 20 20 46   are omitted.  F
03e0: 6f 72 20 64 65 74 61 69 6c 65 64 20 69 6e 66 6f  or detailed info
03f0: 72 6d 61 74 69 6f 6e 0a 6f 6e 20 74 68 65 20 6c  rmation.on the l
0400: 61 6e 67 75 61 67 65 20 74 68 61 74 20 53 51 4c  anguage that SQL
0410: 69 74 65 20 75 6e 64 65 72 73 74 61 6e 64 73 2c  ite understands,
0420: 20 72 65 66 65 72 20 74 6f 20 74 68 65 20 73 6f   refer to the so
0430: 75 72 63 65 20 63 6f 64 65 2e 3c 2f 70 3e 0a 0a  urce code.</p>..
0440: 0a 3c 70 3e 53 51 4c 69 74 65 20 69 6d 70 6c 65  .<p>SQLite imple
0450: 6d 65 6e 74 73 20 74 68 65 20 66 6f 6c 6c 6f 77  ments the follow
0460: 20 73 79 6e 74 61 78 3a 3c 2f 70 3e 0a 3c 70 3e   syntax:</p>.<p>
0470: 3c 75 6c 3e 0a 7d 0a 0a 66 6f 72 65 61 63 68 20  <ul>.}..foreach 
0480: 7b 73 65 63 74 69 6f 6e 7d 20 5b 6c 73 6f 72 74  {section} [lsort
0490: 20 2d 69 6e 64 65 78 20 30 20 2d 64 69 63 74 69   -index 0 -dicti
04a0: 6f 6e 61 72 79 20 7b 0a 20 20 7b 7b 43 52 45 41  onary {.  {{CREA
04b0: 54 45 20 54 41 42 4c 45 7d 20 63 72 65 61 74 65  TE TABLE} create
04c0: 74 61 62 6c 65 7d 0a 20 20 7b 7b 43 52 45 41 54  table}.  {{CREAT
04d0: 45 20 49 4e 44 45 58 7d 20 63 72 65 61 74 65 69  E INDEX} createi
04e0: 6e 64 65 78 7d 0a 20 20 7b 56 41 43 55 55 4d 20  ndex}.  {VACUUM 
04f0: 76 61 63 75 75 6d 7d 0a 20 20 7b 7b 44 52 4f 50  vacuum}.  {{DROP
0500: 20 54 41 42 4c 45 7d 20 64 72 6f 70 74 61 62 6c   TABLE} droptabl
0510: 65 7d 0a 20 20 7b 7b 44 52 4f 50 20 49 4e 44 45  e}.  {{DROP INDE
0520: 58 7d 20 64 72 6f 70 69 6e 64 65 78 7d 0a 20 20  X} dropindex}.  
0530: 7b 49 4e 53 45 52 54 20 69 6e 73 65 72 74 7d 0a  {INSERT insert}.
0540: 20 20 7b 52 45 50 4c 41 43 45 20 72 65 70 6c 61    {REPLACE repla
0550: 63 65 7d 0a 20 20 7b 44 45 4c 45 54 45 20 64 65  ce}.  {DELETE de
0560: 6c 65 74 65 7d 0a 20 20 7b 55 50 44 41 54 45 20  lete}.  {UPDATE 
0570: 75 70 64 61 74 65 7d 0a 20 20 7b 53 45 4c 45 43  update}.  {SELEC
0580: 54 20 73 65 6c 65 63 74 7d 0a 20 20 7b 43 4f 50  T select}.  {COP
0590: 59 20 63 6f 70 79 7d 0a 20 20 7b 45 58 50 4c 41  Y copy}.  {EXPLA
05a0: 49 4e 20 65 78 70 6c 61 69 6e 7d 0a 20 20 7b 65  IN explain}.  {e
05b0: 78 70 72 65 73 73 69 6f 6e 20 65 78 70 72 7d 0a  xpression expr}.
05c0: 20 20 7b 7b 42 45 47 49 4e 20 54 52 41 4e 53 41    {{BEGIN TRANSA
05d0: 43 54 49 4f 4e 7d 20 74 72 61 6e 73 61 63 74 69  CTION} transacti
05e0: 6f 6e 7d 0a 20 20 7b 50 52 41 47 4d 41 20 70 72  on}.  {PRAGMA pr
05f0: 61 67 6d 61 7d 0a 20 20 7b 7b 4f 4e 20 43 4f 4e  agma}.  {{ON CON
0600: 46 4c 49 43 54 20 63 6c 61 75 73 65 7d 20 63 6f  FLICT clause} co
0610: 6e 66 6c 69 63 74 7d 0a 20 20 7b 7b 43 52 45 41  nflict}.  {{CREA
0620: 54 45 20 56 49 45 57 7d 20 63 72 65 61 74 65 76  TE VIEW} createv
0630: 69 65 77 7d 0a 20 20 7b 7b 44 52 4f 50 20 56 49  iew}.  {{DROP VI
0640: 45 57 7d 20 64 72 6f 70 76 69 65 77 7d 0a 20 20  EW} dropview}.  
0650: 7b 7b 43 52 45 41 54 45 20 54 52 49 47 47 45 52  {{CREATE TRIGGER
0660: 7d 20 63 72 65 61 74 65 74 72 69 67 67 65 72 7d  } createtrigger}
0670: 0a 20 20 7b 7b 44 52 4f 50 20 54 52 49 47 47 45  .  {{DROP TRIGGE
0680: 52 7d 20 64 72 6f 70 74 72 69 67 67 65 72 7d 0a  R} droptrigger}.
0690: 7d 5d 20 7b 0a 20 20 70 75 74 73 20 22 3c 6c 69  }] {.  puts "<li
06a0: 3e 3c 61 20 68 72 65 66 3d 5c 22 23 5b 6c 69 6e  ><a href=\"#[lin
06b0: 64 65 78 20 24 73 65 63 74 69 6f 6e 20 31 5d 5c  dex $section 1]\
06c0: 22 3e 5b 6c 69 6e 64 65 78 20 24 73 65 63 74 69  ">[lindex $secti
06d0: 6f 6e 20 30 5d 3c 2f 61 3e 3c 2f 6c 69 3e 22 0a  on 0]</a></li>".
06e0: 7d 0a 70 75 74 73 20 7b 3c 2f 75 6c 3e 3c 2f 70  }.puts {</ul></p
06f0: 3e 0a 0a 3c 70 3e 44 65 74 61 69 6c 73 20 6f 6e  >..<p>Details on
0700: 20 74 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74   the implementat
0710: 69 6f 6e 20 6f 66 20 65 61 63 68 20 63 6f 6d 6d  ion of each comm
0720: 61 6e 64 20 61 72 65 20 70 72 6f 76 69 64 65 64  and are provided
0730: 20 69 6e 0a 74 68 65 20 73 65 71 75 65 6c 2e 3c   in.the sequel.<
0740: 2f 70 3e 0a 7d 0a 0a 70 72 6f 63 20 53 79 6e 74  /p>.}..proc Synt
0750: 61 78 20 7b 61 72 67 73 7d 20 7b 0a 20 20 70 75  ax {args} {.  pu
0760: 74 73 20 7b 3c 74 61 62 6c 65 20 63 65 6c 6c 70  ts {<table cellp
0770: 61 64 64 69 6e 67 3d 22 31 30 22 3e 7d 0a 20 20  adding="10">}.  
0780: 66 6f 72 65 61 63 68 20 7b 72 75 6c 65 20 62 6f  foreach {rule bo
0790: 64 79 7d 20 24 61 72 67 73 20 7b 0a 20 20 20 20  dy} $args {.    
07a0: 70 75 74 73 20 22 3c 74 72 3e 3c 74 64 20 61 6c  puts "<tr><td al
07b0: 69 67 6e 3d 5c 22 72 69 67 68 74 5c 22 20 76 61  ign=\"right\" va
07c0: 6c 69 67 6e 3d 5c 22 74 6f 70 5c 22 3e 22 0a 20  lign=\"top\">". 
07d0: 20 20 20 70 75 74 73 20 22 3c 69 3e 3c 66 6f 6e     puts "<i><fon
07e0: 74 20 63 6f 6c 6f 72 3d 5c 22 23 66 66 33 34 33  t color=\"#ff343
07f0: 34 5c 22 3e 24 72 75 6c 65 3c 2f 66 6f 6e 74 3e  4\">$rule</font>
0800: 3c 2f 69 3e 26 6e 62 73 70 3b 3a 3a 3d 3c 2f 74  </i>&nbsp;::=</t
0810: 64 3e 22 0a 20 20 20 20 72 65 67 73 75 62 20 2d  d>".    regsub -
0820: 61 6c 6c 20 3c 20 24 62 6f 64 79 20 7b 25 4c 54  all < $body {%LT
0830: 7d 20 62 6f 64 79 0a 20 20 20 20 72 65 67 73 75  } body.    regsu
0840: 62 20 2d 61 6c 6c 20 3e 20 24 62 6f 64 79 20 7b  b -all > $body {
0850: 25 47 54 7d 20 62 6f 64 79 0a 20 20 20 20 72 65  %GT} body.    re
0860: 67 73 75 62 20 2d 61 6c 6c 20 25 4c 54 20 24 62  gsub -all %LT $b
0870: 6f 64 79 20 7b 3c 2f 66 6f 6e 74 3e 3c 2f 62 3e  ody {</font></b>
0880: 3c 69 3e 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 22  <i><font color="
0890: 23 66 66 33 34 33 34 22 3e 7d 20 62 6f 64 79 0a  #ff3434">} body.
08a0: 20 20 20 20 72 65 67 73 75 62 20 2d 61 6c 6c 20      regsub -all 
08b0: 25 47 54 20 24 62 6f 64 79 20 7b 3c 2f 66 6f 6e  %GT $body {</fon
08c0: 74 3e 3c 2f 69 3e 3c 62 3e 3c 66 6f 6e 74 20 63  t></i><b><font c
08d0: 6f 6c 6f 72 3d 22 23 32 63 32 63 66 30 22 3e 7d  olor="#2c2cf0">}
08e0: 20 62 6f 64 79 0a 20 20 20 20 72 65 67 73 75 62   body.    regsub
08f0: 20 2d 61 6c 6c 20 7b 5b 5d 7c 5b 2a 3f 5d 7d 20   -all {[]|[*?]} 
0900: 24 62 6f 64 79 20 7b 3c 2f 66 6f 6e 74 3e 3c 2f  $body {</font></
0910: 62 3e 26 3c 62 3e 3c 66 6f 6e 74 20 63 6f 6c 6f  b>&<b><font colo
0920: 72 3d 22 23 32 63 32 63 66 30 22 3e 7d 20 62 6f  r="#2c2cf0">} bo
0930: 64 79 0a 20 20 20 20 72 65 67 73 75 62 20 2d 61  dy.    regsub -a
0940: 6c 6c 20 22 5c 6e 22 20 5b 73 74 72 69 6e 67 20  ll "\n" [string 
0950: 74 72 69 6d 20 24 62 6f 64 79 5d 20 22 3c 62 72  trim $body] "<br
0960: 3e 5c 6e 22 20 62 6f 64 79 0a 20 20 20 20 72 65  >\n" body.    re
0970: 67 73 75 62 20 2d 61 6c 6c 20 22 5c 6e 20 20 2a  gsub -all "\n  *
0980: 22 20 24 62 6f 64 79 20 22 5c 6e 5c 5c 26 6e 62  " $body "\n\\&nb
0990: 73 70 3b 5c 5c 26 6e 62 73 70 3b 5c 5c 26 6e 62  sp;\\&nbsp;\\&nb
09a0: 73 70 3b 5c 5c 26 6e 62 73 70 3b 22 20 62 6f 64  sp;\\&nbsp;" bod
09b0: 79 0a 20 20 20 20 72 65 67 73 75 62 20 2d 61 6c  y.    regsub -al
09c0: 6c 20 7b 5b 7c 2c 2e 2a 28 29 5d 7d 20 24 62 6f  l {[|,.*()]} $bo
09d0: 64 79 20 7b 3c 62 69 67 3e 26 3c 2f 62 69 67 3e  dy {<big>&</big>
09e0: 7d 20 62 6f 64 79 0a 20 20 20 20 72 65 67 73 75  } body.    regsu
09f0: 62 20 2d 61 6c 6c 20 7b 20 3d 20 7d 20 24 62 6f  b -all { = } $bo
0a00: 64 79 20 7b 20 3c 62 69 67 3e 3d 3c 2f 62 69 67  dy { <big>=</big
0a10: 3e 20 7d 20 62 6f 64 79 0a 20 20 20 20 72 65 67  > } body.    reg
0a20: 73 75 62 20 2d 61 6c 6c 20 7b 53 54 41 52 7d 20  sub -all {STAR} 
0a30: 24 62 6f 64 79 20 7b 3c 62 69 67 3e 2a 3c 2f 62  $body {<big>*</b
0a40: 69 67 3e 7d 20 62 6f 64 79 0a 20 20 20 20 70 75  ig>} body.    pu
0a50: 74 73 20 22 3c 74 64 3e 3c 62 3e 3c 66 6f 6e 74  ts "<td><b><font
0a60: 20 63 6f 6c 6f 72 3d 5c 22 23 32 63 32 63 66 30   color=\"#2c2cf0
0a70: 5c 22 3e 24 62 6f 64 79 3c 2f 66 6f 6e 74 3e 3c  \">$body</font><
0a80: 2f 62 3e 3c 2f 74 64 3e 3c 2f 74 72 3e 22 0a 20  /b></td></tr>". 
0a90: 20 7d 0a 20 20 70 75 74 73 20 7b 3c 2f 74 61 62   }.  puts {</tab
0aa0: 6c 65 3e 7d 0a 7d 0a 70 72 6f 63 20 4f 70 65 72  le>}.}.proc Oper
0ab0: 61 74 6f 72 20 7b 6e 61 6d 65 7d 20 7b 0a 20 20  ator {name} {.  
0ac0: 72 65 74 75 72 6e 20 22 3c 66 6f 6e 74 20 63 6f  return "<font co
0ad0: 6c 6f 72 3d 5c 22 23 32 63 32 63 66 30 5c 22 3e  lor=\"#2c2cf0\">
0ae0: 3c 62 69 67 3e 24 6e 61 6d 65 3c 2f 62 69 67 3e  <big>$name</big>
0af0: 3c 2f 66 6f 6e 74 3e 22 0a 7d 0a 70 72 6f 63 20  </font>".}.proc 
0b00: 4e 6f 6e 74 65 72 6d 69 6e 61 6c 20 7b 6e 61 6d  Nonterminal {nam
0b10: 65 7d 20 7b 0a 20 20 72 65 74 75 72 6e 20 22 3c  e} {.  return "<
0b20: 69 3e 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 5c 22  i><font color=\"
0b30: 23 66 66 33 34 33 34 5c 22 3e 24 6e 61 6d 65 3c  #ff3434\">$name<
0b40: 2f 66 6f 6e 74 3e 3c 2f 69 3e 22 0a 7d 0a 70 72  /font></i>".}.pr
0b50: 6f 63 20 4b 65 79 77 6f 72 64 20 7b 6e 61 6d 65  oc Keyword {name
0b60: 7d 20 7b 0a 20 20 72 65 74 75 72 6e 20 22 3c 66  } {.  return "<f
0b70: 6f 6e 74 20 63 6f 6c 6f 72 3d 5c 22 23 32 63 32  ont color=\"#2c2
0b80: 63 66 30 5c 22 3e 24 6e 61 6d 65 3c 2f 66 6f 6e  cf0\">$name</fon
0b90: 74 3e 22 0a 7d 0a 20 0a 0a 70 72 6f 63 20 53 65  t>".}. ..proc Se
0ba0: 63 74 69 6f 6e 20 7b 6e 61 6d 65 20 7b 6c 61 62  ction {name {lab
0bb0: 65 6c 20 7b 7d 7d 7d 20 7b 0a 20 20 70 75 74 73  el {}}} {.  puts
0bc0: 20 22 5c 6e 3c 68 72 20 2f 3e 22 0a 20 20 69 66   "\n<hr />".  if
0bd0: 20 7b 24 6c 61 62 65 6c 21 3d 22 22 7d 20 7b 0a   {$label!=""} {.
0be0: 20 20 20 20 70 75 74 73 20 22 3c 61 20 6e 61 6d      puts "<a nam
0bf0: 65 3d 5c 22 24 6c 61 62 65 6c 5c 22 3e 22 0a 20  e=\"$label\">". 
0c00: 20 7d 0a 20 20 70 75 74 73 20 22 3c 68 31 3e 24   }.  puts "<h1>$
0c10: 6e 61 6d 65 3c 2f 68 31 3e 5c 6e 22 0a 7d 0a 0a  name</h1>\n".}..
0c20: 70 72 6f 63 20 45 78 61 6d 70 6c 65 20 7b 74 65  proc Example {te
0c30: 78 74 7d 20 7b 0a 20 20 70 75 74 73 20 22 3c 62  xt} {.  puts "<b
0c40: 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70 72 65 3e 24  lockquote><pre>$
0c50: 74 65 78 74 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63  text</pre></bloc
0c60: 6b 71 75 6f 74 65 3e 22 0a 7d 0a 0a 53 65 63 74  kquote>".}..Sect
0c70: 69 6f 6e 20 7b 42 45 47 49 4e 20 54 52 41 4e 53  ion {BEGIN TRANS
0c80: 41 43 54 49 4f 4e 7d 20 63 72 65 61 74 65 69 6e  ACTION} createin
0c90: 64 65 78 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c  dex..Syntax {sql
0ca0: 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 42 45  -statement} {.BE
0cb0: 47 49 4e 20 5b 54 52 41 4e 53 41 43 54 49 4f 4e  GIN [TRANSACTION
0cc0: 20 5b 3c 6e 61 6d 65 3e 5d 5d 20 5b 4f 4e 20 43   [<name>]] [ON C
0cd0: 4f 4e 46 4c 49 43 54 20 3c 63 6f 6e 66 6c 69 63  ONFLICT <conflic
0ce0: 74 2d 61 6c 67 6f 72 69 74 68 6d 3e 5d 0a 7d 0a  t-algorithm>].}.
0cf0: 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74  Syntax {sql-stat
0d00: 65 6d 65 6e 74 7d 20 7b 0a 45 4e 44 20 5b 54 52  ement} {.END [TR
0d10: 41 4e 53 41 43 54 49 4f 4e 20 5b 3c 6e 61 6d 65  ANSACTION [<name
0d20: 3e 5d 5d 0a 7d 0a 53 79 6e 74 61 78 20 7b 73 71  >]].}.Syntax {sq
0d30: 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 43  l-statement} {.C
0d40: 4f 4d 4d 49 54 20 5b 54 52 41 4e 53 41 43 54 49  OMMIT [TRANSACTI
0d50: 4f 4e 20 5b 3c 6e 61 6d 65 3e 5d 5d 0a 7d 0a 53  ON [<name>]].}.S
0d60: 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65  yntax {sql-state
0d70: 6d 65 6e 74 7d 20 7b 0a 52 4f 4c 4c 42 41 43 4b  ment} {.ROLLBACK
0d80: 20 5b 54 52 41 4e 53 41 43 54 49 4f 4e 20 5b 3c   [TRANSACTION [<
0d90: 6e 61 6d 65 3e 5d 5d 0a 7d 0a 0a 70 75 74 73 20  name>]].}..puts 
0da0: 7b 0a 3c 70 3e 42 65 67 69 6e 6e 69 6e 67 20 69  {.<p>Beginning i
0db0: 6e 20 76 65 72 73 69 6f 6e 20 32 2e 30 2c 20 53  n version 2.0, S
0dc0: 51 4c 69 74 65 20 73 75 70 70 6f 72 74 73 20 74  QLite supports t
0dd0: 72 61 6e 73 61 63 74 69 6f 6e 73 20 77 69 74 68  ransactions with
0de0: 0a 72 6f 6c 6c 62 61 63 6b 20 61 6e 64 20 61 74  .rollback and at
0df0: 6f 6d 69 63 20 63 6f 6d 6d 69 74 2e 3c 2f 70 3e  omic commit.</p>
0e00: 0a 0a 3c 70 3e 0a 4e 6f 20 63 68 61 6e 67 65 73  ..<p>.No changes
0e10: 20 63 61 6e 20 62 65 20 6d 61 64 65 20 74 6f 20   can be made to 
0e20: 74 68 65 20 64 61 74 61 62 61 73 65 20 65 78 63  the database exc
0e30: 65 70 74 20 77 69 74 68 69 6e 20 61 20 74 72 61  ept within a tra
0e40: 6e 73 61 63 74 69 6f 6e 2e 0a 41 6e 79 20 63 6f  nsaction..Any co
0e50: 6d 6d 61 6e 64 20 74 68 61 74 20 63 68 61 6e 67  mmand that chang
0e60: 65 73 20 74 68 65 20 64 61 74 61 62 61 73 65 20  es the database 
0e70: 28 62 61 73 69 63 61 6c 6c 79 2c 20 61 6e 79 20  (basically, any 
0e80: 53 51 4c 20 63 6f 6d 6d 61 6e 64 0a 6f 74 68 65  SQL command.othe
0e90: 72 20 74 68 61 6e 20 53 45 4c 45 43 54 29 20 77  r than SELECT) w
0ea0: 69 6c 6c 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c  ill automaticall
0eb0: 79 20 73 74 61 72 74 73 20 61 20 74 72 61 6e 73  y starts a trans
0ec0: 61 63 74 69 6f 6e 20 69 66 0a 6f 6e 65 20 69 73  action if.one is
0ed0: 20 6e 6f 74 20 61 6c 72 65 61 64 79 20 69 6e 20   not already in 
0ee0: 65 66 66 65 63 74 2e 20 20 41 75 74 6f 6d 61 74  effect.  Automat
0ef0: 69 63 61 6c 6c 79 20 73 74 61 72 65 64 20 74 72  ically stared tr
0f00: 61 6e 73 61 63 74 69 6f 6e 73 0a 61 72 65 20 63  ansactions.are c
0f10: 6f 6d 6d 69 74 74 65 64 20 61 74 20 74 68 65 20  ommitted at the 
0f20: 63 6f 6e 63 6c 75 73 69 6f 6e 20 6f 66 20 74 68  conclusion of th
0f30: 65 20 63 6f 6d 6d 61 6e 64 2e 0a 3c 2f 70 3e 0a  e command..</p>.
0f40: 0a 3c 70 3e 0a 54 72 61 6e 73 61 63 74 69 6f 6e  .<p>.Transaction
0f50: 73 20 63 61 6e 20 62 65 20 73 74 61 72 74 65 64  s can be started
0f60: 20 6d 61 6e 75 61 6c 6c 79 20 75 73 69 6e 67 20   manually using 
0f70: 74 68 65 20 42 45 47 49 4e 0a 63 6f 6d 6d 61 6e  the BEGIN.comman
0f80: 64 2e 20 53 75 63 68 20 74 72 61 6e 73 61 63 74  d. Such transact
0f90: 69 6f 6e 73 20 75 73 75 61 6c 6c 79 20 70 65 72  ions usually per
0fa0: 73 69 73 74 20 75 6e 74 69 6c 20 74 68 65 20 6e  sist until the n
0fb0: 65 78 74 0a 43 4f 4d 4d 49 54 20 6f 72 20 52 4f  ext.COMMIT or RO
0fc0: 4c 4c 42 41 43 4b 20 63 6f 6d 6d 61 6e 64 2e 20  LLBACK command. 
0fd0: 42 75 74 20 61 20 74 72 61 6e 73 61 63 74 69 6f  But a transactio
0fe0: 6e 20 77 69 6c 6c 20 61 6c 73 6f 20 0a 52 4f 4c  n will also .ROL
0ff0: 4c 42 41 43 4b 20 69 66 20 74 68 65 20 64 61 74  LBACK if the dat
1000: 61 62 61 73 65 20 69 73 20 63 6c 6f 73 65 64 20  abase is closed 
1010: 6f 72 20 69 66 20 61 6e 20 65 72 72 6f 72 20 6f  or if an error o
1020: 63 63 75 72 73 0a 61 6e 64 20 74 68 65 20 52 4f  ccurs.and the RO
1030: 4c 4c 42 41 43 4b 20 63 6f 6e 66 6c 69 63 74 20  LLBACK conflict 
1040: 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72  resolution algor
1050: 69 74 68 6d 20 69 73 20 73 70 65 63 69 66 69 65  ithm is specifie
1060: 64 2e 0a 53 65 65 20 74 68 65 20 64 6f 63 75 6d  d..See the docum
1070: 65 6e 74 69 6f 6e 20 6f 6e 20 74 68 65 20 3c 61  ention on the <a
1080: 20 68 72 65 66 3d 22 23 63 6f 6e 66 6c 69 63 74   href="#conflict
1090: 22 3e 4f 4e 20 43 4f 4e 46 4c 49 43 54 3c 2f 61  ">ON CONFLICT</a
10a0: 3e 0a 63 6c 61 75 73 65 20 66 6f 72 20 61 64 64  >.clause for add
10b0: 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74  itional informat
10c0: 69 6f 6e 20 61 62 6f 75 74 20 74 68 65 20 52 4f  ion about the RO
10d0: 4c 4c 42 41 43 4b 0a 63 6f 6e 66 6c 69 63 74 20  LLBACK.conflict 
10e0: 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72  resolution algor
10f0: 69 74 68 6d 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a  ithm..</p>..<p>.
1100: 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20 4f 4e 20  The optional ON 
1110: 43 4f 4e 46 4c 49 43 54 20 63 6c 61 75 73 65 20  CONFLICT clause 
1120: 61 74 20 74 68 65 20 65 6e 64 20 6f 66 20 61 20  at the end of a 
1130: 42 45 47 49 4e 20 73 74 61 74 65 6d 65 6e 74 0a  BEGIN statement.
1140: 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 63  can be used to c
1150: 68 61 6e 67 65 64 20 74 68 65 20 64 65 66 61 75  hanged the defau
1160: 6c 74 20 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f  lt conflict reso
1170: 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d  lution algorithm
1180: 2e 0a 54 68 65 20 6e 6f 72 6d 61 6c 20 64 65 66  ..The normal def
1190: 61 75 6c 74 20 69 73 20 41 42 4f 52 54 2e 20 20  ault is ABORT.  
11a0: 49 66 20 61 6e 20 61 6c 74 65 72 6e 61 74 69 76  If an alternativ
11b0: 65 20 69 73 20 73 70 65 63 69 66 69 65 64 20 62  e is specified b
11c0: 79 0a 74 68 65 20 4f 4e 20 43 4f 4e 46 4c 49 43  y.the ON CONFLIC
11d0: 54 20 63 6c 61 75 73 65 20 6f 66 20 61 20 42 45  T clause of a BE
11e0: 47 49 4e 2c 20 74 68 65 6e 20 74 68 61 74 20 61  GIN, then that a
11f0: 6c 74 65 72 6e 61 74 69 76 65 20 69 73 20 75 73  lternative is us
1200: 65 64 0a 61 73 20 74 68 65 20 64 65 66 61 75 6c  ed.as the defaul
1210: 74 20 66 6f 72 20 61 6c 6c 20 63 6f 6d 6d 61 6e  t for all comman
1220: 64 73 20 77 69 74 68 69 6e 20 74 68 65 20 74 72  ds within the tr
1230: 61 6e 73 61 63 74 69 6f 6e 2e 20 20 54 68 65 20  ansaction.  The 
1240: 64 65 66 61 75 6c 74 0a 61 6c 67 6f 72 69 74 68  default.algorith
1250: 6d 20 69 73 20 6f 76 65 72 72 69 64 64 65 6e 20  m is overridden 
1260: 62 79 20 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 63  by ON CONFLICT c
1270: 6c 61 75 73 65 73 20 6f 6e 20 69 6e 64 69 76 69  lauses on indivi
1280: 64 75 61 6c 0a 63 6f 6e 73 74 72 61 69 6e 74 73  dual.constraints
1290: 20 77 69 74 68 69 6e 20 74 68 65 20 43 52 45 41   within the CREA
12a0: 54 45 20 54 41 42 4c 45 20 6f 72 20 43 52 45 41  TE TABLE or CREA
12b0: 54 45 20 49 4e 44 45 58 20 73 74 61 74 65 6d 65  TE INDEX stateme
12c0: 6e 74 73 0a 61 6e 64 20 62 79 20 74 68 65 20 4f  nts.and by the O
12d0: 52 20 63 6c 61 75 73 65 73 20 6f 6e 20 43 4f 50  R clauses on COP
12e0: 59 2c 20 49 4e 53 45 52 54 2c 20 61 6e 64 20 55  Y, INSERT, and U
12f0: 50 44 41 54 45 20 63 6f 6d 6d 61 6e 64 73 2e 0a  PDATE commands..
1300: 3c 2f 70 3e 0a 7d 0a 0a 53 65 63 74 69 6f 6e 20  </p>.}..Section 
1310: 43 4f 50 59 20 63 6f 70 79 0a 0a 53 79 6e 74 61  COPY copy..Synta
1320: 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74  x {sql-statement
1330: 7d 20 7b 0a 43 4f 50 59 20 5b 20 4f 52 20 3c 63  } {.COPY [ OR <c
1340: 6f 6e 66 6c 69 63 74 2d 61 6c 67 6f 72 69 74 68  onflict-algorith
1350: 6d 3e 20 5d 20 3c 74 61 62 6c 65 2d 6e 61 6d 65  m> ] <table-name
1360: 3e 20 46 52 4f 4d 20 3c 66 69 6c 65 6e 61 6d 65  > FROM <filename
1370: 3e 0a 5b 20 55 53 49 4e 47 20 44 45 4c 49 4d 49  >.[ USING DELIMI
1380: 54 45 52 53 20 3c 64 65 6c 69 6d 3e 20 5d 0a 7d  TERS <delim> ].}
1390: 0a 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65  ...puts {.<p>The
13a0: 20 43 4f 50 59 20 63 6f 6d 6d 61 6e 64 20 69 73   COPY command is
13b0: 20 61 6e 20 65 78 74 65 6e 73 69 6f 6e 20 75 73   an extension us
13c0: 65 64 20 74 6f 20 6c 6f 61 64 20 6c 61 72 67 65  ed to load large
13d0: 20 61 6d 6f 75 6e 74 73 20 6f 66 0a 64 61 74 61   amounts of.data
13e0: 20 69 6e 74 6f 20 61 20 74 61 62 6c 65 2e 20 20   into a table.  
13f0: 49 74 20 69 73 20 6d 6f 64 65 6c 65 64 20 61 66  It is modeled af
1400: 74 65 72 20 61 20 73 69 6d 69 6c 61 72 20 63 6f  ter a similar co
1410: 6d 6d 61 6e 64 20 66 6f 75 6e 64 0a 69 6e 20 50  mmand found.in P
1420: 6f 73 74 67 72 65 53 51 4c 2e 20 20 49 6e 20 66  ostgreSQL.  In f
1430: 61 63 74 2c 20 74 68 65 20 53 51 4c 69 74 65 20  act, the SQLite 
1440: 43 4f 50 59 20 63 6f 6d 6d 61 6e 64 20 69 73 20  COPY command is 
1450: 73 70 65 63 69 66 69 63 61 6c 6c 79 0a 64 65 73  specifically.des
1460: 69 67 6e 65 64 20 74 6f 20 62 65 20 61 62 6c 65  igned to be able
1470: 20 74 6f 20 72 65 61 64 20 74 68 65 20 6f 75 74   to read the out
1480: 70 75 74 20 6f 66 20 74 68 65 20 50 6f 73 74 67  put of the Postg
1490: 72 65 53 51 4c 20 64 75 6d 70 0a 75 74 69 6c 69  reSQL dump.utili
14a0: 74 79 20 3c 62 3e 70 67 5f 64 75 6d 70 3c 2f 62  ty <b>pg_dump</b
14b0: 3e 20 73 6f 20 74 68 61 74 20 64 61 74 61 20 63  > so that data c
14c0: 61 6e 20 62 65 20 65 61 73 69 6c 79 20 74 72 61  an be easily tra
14d0: 6e 73 66 65 72 72 65 64 20 66 72 6f 6d 0a 50 6f  nsferred from.Po
14e0: 73 74 67 72 65 53 51 4c 20 69 6e 74 6f 20 53 51  stgreSQL into SQ
14f0: 4c 69 74 65 2e 3c 70 3e 0a 0a 3c 70 3e 54 68 65  Lite.<p>..<p>The
1500: 20 74 61 62 6c 65 2d 6e 61 6d 65 20 69 73 20 74   table-name is t
1510: 68 65 20 6e 61 6d 65 20 6f 66 20 61 6e 20 65 78  he name of an ex
1520: 69 73 74 69 6e 67 20 74 61 62 6c 65 20 77 68 69  isting table whi
1530: 63 68 20 69 73 20 74 6f 0a 62 65 20 66 69 6c 6c  ch is to.be fill
1540: 65 64 20 77 69 74 68 20 64 61 74 61 2e 20 20 54  ed with data.  T
1550: 68 65 20 66 69 6c 65 6e 61 6d 65 20 69 73 20 61  he filename is a
1560: 20 73 74 72 69 6e 67 20 6f 72 20 69 64 65 6e 74   string or ident
1570: 69 66 69 65 72 20 74 68 61 74 0a 6e 61 6d 65 73  ifier that.names
1580: 20 61 20 66 69 6c 65 20 66 72 6f 6d 20 77 68 69   a file from whi
1590: 63 68 20 64 61 74 61 20 77 69 6c 6c 20 62 65 20  ch data will be 
15a0: 72 65 61 64 2e 20 20 54 68 65 20 66 69 6c 65 6e  read.  The filen
15b0: 61 6d 65 20 63 61 6e 20 62 65 0a 74 68 65 20 3c  ame can be.the <
15c0: 62 3e 53 54 44 49 4e 3c 2f 62 3e 20 74 6f 20 72  b>STDIN</b> to r
15d0: 65 61 64 20 64 61 74 61 20 66 72 6f 6d 20 73 74  ead data from st
15e0: 61 6e 64 61 72 64 20 69 6e 70 75 74 2e 3c 70 3e  andard input.<p>
15f0: 0a 0a 3c 70 3e 45 61 63 68 20 6c 69 6e 65 20 6f  ..<p>Each line o
1600: 66 20 74 68 65 20 69 6e 70 75 74 20 66 69 6c 65  f the input file
1610: 20 69 73 20 63 6f 6e 76 65 72 74 65 64 20 69 6e   is converted in
1620: 74 6f 20 61 20 73 69 6e 67 6c 65 20 72 65 63 6f  to a single reco
1630: 72 64 0a 69 6e 20 74 68 65 20 74 61 62 6c 65 2e  rd.in the table.
1640: 20 20 43 6f 6c 75 6d 6e 73 20 61 72 65 20 73 65    Columns are se
1650: 70 61 72 61 74 65 64 20 62 79 20 74 61 62 73 2e  parated by tabs.
1660: 20 20 49 66 20 61 20 74 61 62 20 6f 63 63 75 72    If a tab occur
1670: 73 20 61 73 0a 64 61 74 61 20 77 69 74 68 69 6e  s as.data within
1680: 20 61 20 63 6f 6c 75 6d 6e 2c 20 74 68 65 6e 20   a column, then 
1690: 74 68 61 74 20 74 61 62 20 69 73 20 70 72 65 63  that tab is prec
16a0: 65 64 65 64 20 62 79 20 61 20 62 61 73 6b 73 6c  eded by a basksl
16b0: 61 73 68 20 22 5c 22 0a 63 68 61 72 61 63 74 65  ash "\".characte
16c0: 72 2e 20 20 41 20 62 61 73 6b 73 6c 61 73 68 20  r.  A baskslash 
16d0: 69 6e 20 74 68 65 20 64 61 74 61 20 61 70 70 65  in the data appe
16e0: 61 72 73 20 61 73 20 74 77 6f 20 62 61 63 6b 73  ars as two backs
16f0: 6c 61 73 68 65 73 20 69 6e 0a 61 20 72 6f 77 2e  lashes in.a row.
1700: 20 20 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20 55    The optional U
1710: 53 49 4e 47 20 44 45 4c 49 4d 49 54 45 52 53 20  SING DELIMITERS 
1720: 63 6c 61 75 73 65 20 63 61 6e 20 73 70 65 63 69  clause can speci
1730: 66 79 20 61 20 64 65 6c 69 6d 69 74 65 72 0a 6f  fy a delimiter.o
1740: 74 68 65 72 20 74 68 61 6e 20 74 61 62 2e 3c 2f  ther than tab.</
1750: 70 3e 0a 0a 3c 70 3e 49 66 20 61 20 63 6f 6c 75  p>..<p>If a colu
1760: 6d 6e 20 63 6f 6e 73 69 73 74 73 20 6f 66 20 74  mn consists of t
1770: 68 65 20 63 68 61 72 61 63 74 65 72 20 22 5c 4e  he character "\N
1780: 22 2c 20 74 68 61 74 20 63 6f 6c 75 6d 6e 20 69  ", that column i
1790: 73 20 66 69 6c 6c 65 64 0a 77 69 74 68 20 74 68  s filled.with th
17a0: 65 20 76 61 6c 75 65 20 4e 55 4c 4c 2e 3c 2f 70  e value NULL.</p
17b0: 3e 0a 0a 3c 70 3e 54 68 65 20 6f 70 74 69 6f 6e  >..<p>The option
17c0: 61 6c 20 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75  al conflict-clau
17d0: 73 65 20 61 6c 6c 6f 77 73 20 74 68 65 20 73 70  se allows the sp
17e0: 65 63 69 66 69 63 61 74 69 6f 6e 20 6f 66 20 61  ecification of a
17f0: 6e 20 61 6c 74 65 72 6e 61 74 69 76 65 0a 63 6f  n alternative.co
1800: 6e 73 74 72 61 69 6e 74 20 63 6f 6e 66 6c 69 63  nstraint conflic
1810: 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67  t resolution alg
1820: 6f 72 69 74 68 6d 20 74 6f 20 75 73 65 20 66 6f  orithm to use fo
1830: 72 20 74 68 69 73 20 6f 6e 65 20 63 6f 6d 6d 61  r this one comma
1840: 6e 64 2e 0a 53 65 65 20 74 68 65 20 73 65 63 74  nd..See the sect
1850: 69 6f 6e 20 74 69 74 6c 65 64 0a 3c 61 20 68 72  ion titled.<a hr
1860: 65 66 3d 22 23 63 6f 6e 66 6c 69 63 74 22 3e 4f  ef="#conflict">O
1870: 4e 20 43 4f 4e 46 4c 49 43 54 3c 2f 61 3e 20 66  N CONFLICT</a> f
1880: 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e  or additional in
1890: 66 6f 72 6d 61 74 69 6f 6e 2e 3c 2f 70 3e 0a 0a  formation.</p>..
18a0: 3c 70 3e 57 68 65 6e 20 74 68 65 20 69 6e 70 75  <p>When the inpu
18b0: 74 20 64 61 74 61 20 73 6f 75 72 63 65 20 69 73  t data source is
18c0: 20 53 54 44 49 4e 2c 20 74 68 65 20 69 6e 70 75   STDIN, the inpu
18d0: 74 20 63 61 6e 20 62 65 20 74 65 72 6d 69 6e 61  t can be termina
18e0: 74 65 64 0a 62 79 20 61 20 6c 69 6e 65 20 74 68  ted.by a line th
18f0: 61 74 20 63 6f 6e 74 61 69 6e 73 20 6f 6e 6c 79  at contains only
1900: 20 61 20 62 61 73 6b 73 6c 61 73 68 20 61 6e 64   a baskslash and
1910: 20 61 20 64 6f 74 3a 7d 0a 70 75 74 73 20 22 5c   a dot:}.puts "\
1920: 22 5b 4f 70 65 72 61 74 6f 72 20 5c 5c 2e 5d 5c  "[Operator \\.]\
1930: 22 2e 3c 2f 70 3e 22 0a 0a 53 65 63 74 69 6f 6e  ".</p>"..Section
1940: 20 7b 43 52 45 41 54 45 20 49 4e 44 45 58 7d 20   {CREATE INDEX} 
1950: 63 72 65 61 74 65 69 6e 64 65 78 0a 0a 53 79 6e  createindex..Syn
1960: 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65  tax {sql-stateme
1970: 6e 74 7d 20 7b 0a 43 52 45 41 54 45 20 5b 55 4e  nt} {.CREATE [UN
1980: 49 51 55 45 5d 20 49 4e 44 45 58 20 3c 69 6e 64  IQUE] INDEX <ind
1990: 65 78 2d 6e 61 6d 65 3e 20 0a 4f 4e 20 3c 74 61  ex-name> .ON <ta
19a0: 62 6c 65 2d 6e 61 6d 65 3e 20 28 20 3c 63 6f 6c  ble-name> ( <col
19b0: 75 6d 6e 2d 6e 61 6d 65 3e 20 5b 2c 20 3c 63 6f  umn-name> [, <co
19c0: 6c 75 6d 6e 2d 6e 61 6d 65 3e 5d 2a 20 29 0a 5b  lumn-name>]* ).[
19d0: 20 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 3c 63 6f   ON CONFLICT <co
19e0: 6e 66 6c 69 63 74 2d 61 6c 67 6f 72 69 74 68 6d  nflict-algorithm
19f0: 3e 20 5d 0a 7d 20 7b 63 6f 6c 75 6d 6e 2d 6e 61  > ].} {column-na
1a00: 6d 65 7d 20 7b 0a 3c 6e 61 6d 65 3e 20 5b 20 41  me} {.<name> [ A
1a10: 53 43 20 7c 20 44 45 53 43 20 5d 0a 7d 0a 0a 0a  SC | DESC ].}...
1a20: 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20 43 52  puts {.<p>The CR
1a30: 45 41 54 45 20 49 4e 44 45 58 20 63 6f 6d 6d 61  EATE INDEX comma
1a40: 6e 64 20 63 6f 6e 73 69 73 74 73 20 6f 66 20 74  nd consists of t
1a50: 68 65 20 6b 65 79 77 6f 72 64 73 20 22 43 52 45  he keywords "CRE
1a60: 41 54 45 20 49 4e 44 45 58 22 20 66 6f 6c 6c 6f  ATE INDEX" follo
1a70: 77 65 64 0a 62 79 20 74 68 65 20 6e 61 6d 65 20  wed.by the name 
1a80: 6f 66 20 74 68 65 20 6e 65 77 20 69 6e 64 65 78  of the new index
1a90: 2c 20 74 68 65 20 6b 65 79 77 6f 72 64 20 22 4f  , the keyword "O
1aa0: 4e 22 2c 20 74 68 65 20 6e 61 6d 65 20 6f 66 20  N", the name of 
1ab0: 61 20 70 72 65 76 69 6f 75 73 6c 79 0a 63 72 65  a previously.cre
1ac0: 61 74 65 64 20 74 61 62 6c 65 20 74 68 61 74 20  ated table that 
1ad0: 69 73 20 74 6f 20 62 65 20 69 6e 64 65 78 65 64  is to be indexed
1ae0: 2c 20 61 6e 64 20 61 20 70 61 72 65 6e 74 68 65  , and a parenthe
1af0: 73 69 7a 65 64 20 6c 69 73 74 20 6f 66 20 6e 61  sized list of na
1b00: 6d 65 73 20 6f 66 0a 63 6f 6c 75 6d 6e 73 20 69  mes of.columns i
1b10: 6e 20 74 68 65 20 74 61 62 6c 65 20 74 68 61 74  n the table that
1b20: 20 61 72 65 20 75 73 65 64 20 66 6f 72 20 74 68   are used for th
1b30: 65 20 69 6e 64 65 78 20 6b 65 79 2e 0a 45 61 63  e index key..Eac
1b40: 68 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 20 63 61  h column name ca
1b50: 6e 20 62 65 20 66 6f 6c 6c 6f 77 65 64 20 62 79  n be followed by
1b60: 20 6f 6e 65 20 6f 66 20 74 68 65 20 22 41 53 43   one of the "ASC
1b70: 22 20 6f 72 20 22 44 45 53 43 22 20 6b 65 79 77  " or "DESC" keyw
1b80: 6f 72 64 73 0a 74 6f 20 69 6e 64 69 63 61 74 65  ords.to indicate
1b90: 20 73 6f 72 74 20 6f 72 64 65 72 2c 20 62 75 74   sort order, but
1ba0: 20 74 68 65 20 73 6f 72 74 20 6f 72 64 65 72 20   the sort order 
1bb0: 69 73 20 69 67 6e 6f 72 65 64 20 69 6e 20 74 68  is ignored in th
1bc0: 65 20 63 75 72 72 65 6e 74 0a 69 6d 70 6c 65 6d  e current.implem
1bd0: 65 6e 74 61 74 69 6f 6e 2e 3c 2f 70 3e 0a 0a 3c  entation.</p>..<
1be0: 70 3e 54 68 65 72 65 20 61 72 65 20 6e 6f 20 61  p>There are no a
1bf0: 72 62 69 74 72 61 72 79 20 6c 69 6d 69 74 73 20  rbitrary limits 
1c00: 6f 6e 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  on the number of
1c10: 20 69 6e 64 69 63 65 73 20 74 68 61 74 20 63 61   indices that ca
1c20: 6e 20 62 65 0a 61 74 74 61 63 68 65 64 20 74 6f  n be.attached to
1c30: 20 61 20 73 69 6e 67 6c 65 20 74 61 62 6c 65 2c   a single table,
1c40: 20 6e 6f 72 20 6f 6e 20 74 68 65 20 6e 75 6d 62   nor on the numb
1c50: 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e  er of columns in
1c60: 20 61 6e 20 69 6e 64 65 78 2e 3c 2f 70 3e 0a 0a   an index.</p>..
1c70: 3c 70 3e 49 66 20 74 68 65 20 55 4e 49 51 55 45  <p>If the UNIQUE
1c80: 20 6b 65 79 77 6f 72 64 20 61 70 70 65 61 72 73   keyword appears
1c90: 20 62 65 74 77 65 65 6e 20 43 52 45 41 54 45 20   between CREATE 
1ca0: 61 6e 64 20 49 4e 44 45 58 20 74 68 65 6e 20 64  and INDEX then d
1cb0: 75 70 6c 69 63 61 74 65 0a 69 6e 64 65 78 20 65  uplicate.index e
1cc0: 6e 74 72 69 65 73 20 61 72 65 20 6e 6f 74 20 61  ntries are not a
1cd0: 6c 6c 6f 77 65 64 2e 20 20 41 6e 79 20 61 74 74  llowed.  Any att
1ce0: 65 6d 70 74 20 74 6f 20 69 6e 73 65 72 74 20 61  empt to insert a
1cf0: 20 64 75 70 6c 69 63 61 74 65 20 65 6e 74 72 79   duplicate entry
1d00: 0a 77 69 6c 6c 20 72 65 73 75 6c 74 20 69 6e 20  .will result in 
1d10: 61 20 72 6f 6c 6c 62 61 63 6b 20 61 6e 64 20 61  a rollback and a
1d20: 6e 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 2e  n error message.
1d30: 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 6f 70 74  </p>..<p>The opt
1d40: 69 6f 6e 61 6c 20 63 6f 6e 66 6c 69 63 74 2d 63  ional conflict-c
1d50: 6c 61 75 73 65 20 61 6c 6c 6f 77 73 20 74 68 65  lause allows the
1d60: 20 73 70 65 63 69 66 69 63 61 74 69 6f 6e 20 6f   specification o
1d70: 66 20 61 6c 20 61 6c 74 65 72 6e 61 74 69 76 65  f al alternative
1d80: 0a 64 65 66 61 75 6c 74 20 63 6f 6e 73 74 72 61  .default constra
1d90: 69 6e 74 20 63 6f 6e 66 6c 69 63 74 20 72 65 73  int conflict res
1da0: 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68  olution algorith
1db0: 6d 20 66 6f 72 20 74 68 69 73 20 69 6e 64 65 78  m for this index
1dc0: 2e 0a 54 68 69 73 20 6f 6e 6c 79 20 6d 61 6b 65  ..This only make
1dd0: 73 20 73 65 6e 73 65 20 69 66 20 74 68 65 20 55  s sense if the U
1de0: 4e 49 51 55 45 20 6b 65 79 77 6f 72 64 20 69 73  NIQUE keyword is
1df0: 20 75 73 65 64 20 73 69 6e 63 65 20 6f 74 68 65   used since othe
1e00: 72 77 69 73 65 0a 74 68 65 72 65 20 61 72 65 20  rwise.there are 
1e10: 6e 6f 74 20 63 6f 6e 73 74 72 61 69 6e 74 73 20  not constraints 
1e20: 6f 6e 20 74 68 65 20 69 6e 64 65 78 2e 20 20 54  on the index.  T
1e30: 68 65 20 64 65 66 61 75 6c 74 20 61 6c 67 6f 72  he default algor
1e40: 69 74 68 6d 20 69 73 0a 41 42 4f 52 54 2e 20 20  ithm is.ABORT.  
1e50: 49 66 20 61 20 43 4f 50 59 2c 20 49 4e 53 45 52  If a COPY, INSER
1e60: 54 2c 20 6f 72 20 55 50 44 41 54 45 20 73 74 61  T, or UPDATE sta
1e70: 74 65 6d 65 6e 74 20 73 70 65 63 69 66 69 65 73  tement specifies
1e80: 20 61 20 70 61 72 74 69 63 75 6c 61 72 0a 63 6f   a particular.co
1e90: 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f  nflict resolutio
1ea0: 6e 20 61 6c 67 6f 72 69 74 68 6d 2c 20 74 68 61  n algorithm, tha
1eb0: 74 20 61 6c 67 6f 72 69 74 68 6d 20 69 73 20 75  t algorithm is u
1ec0: 73 65 64 20 69 6e 20 70 6c 61 63 65 20 6f 66 0a  sed in place of.
1ed0: 74 68 65 20 64 65 66 61 75 6c 74 20 61 6c 67 6f  the default algo
1ee0: 72 69 74 68 6d 20 73 70 65 63 69 66 69 65 64 20  rithm specified 
1ef0: 68 65 72 65 2e 0a 53 65 65 20 74 68 65 20 73 65  here..See the se
1f00: 63 74 69 6f 6e 20 74 69 74 6c 65 64 0a 3c 61 20  ction titled.<a 
1f10: 68 72 65 66 3d 22 23 63 6f 6e 66 6c 69 63 74 22  href="#conflict"
1f20: 3e 4f 4e 20 43 4f 4e 46 4c 49 43 54 3c 2f 61 3e  >ON CONFLICT</a>
1f30: 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20   for additional 
1f40: 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 3c 2f 70 3e  information.</p>
1f50: 0a 0a 3c 70 3e 54 68 65 20 65 78 61 63 74 20 74  ..<p>The exact t
1f60: 65 78 74 0a 6f 66 20 65 61 63 68 20 43 52 45 41  ext.of each CREA
1f70: 54 45 20 49 4e 44 45 58 20 73 74 61 74 65 6d 65  TE INDEX stateme
1f80: 6e 74 20 69 73 20 73 74 6f 72 65 64 20 69 6e 20  nt is stored in 
1f90: 74 68 65 20 3c 62 3e 73 71 6c 69 74 65 5f 6d 61  the <b>sqlite_ma
1fa0: 73 74 65 72 3c 2f 62 3e 0a 74 61 62 6c 65 2e 20  ster</b>.table. 
1fb0: 20 45 76 65 72 79 74 69 6d 65 20 74 68 65 20 64   Everytime the d
1fc0: 61 74 61 62 61 73 65 20 69 73 20 6f 70 65 6e 65  atabase is opene
1fd0: 64 2c 20 61 6c 6c 20 43 52 45 41 54 45 20 49 4e  d, all CREATE IN
1fe0: 44 45 58 20 73 74 61 74 65 6d 65 6e 74 73 0a 61  DEX statements.a
1ff0: 72 65 20 72 65 61 64 20 66 72 6f 6d 20 74 68 65  re read from the
2000: 20 3c 62 3e 73 71 6c 69 74 65 5f 6d 61 73 74 65   <b>sqlite_maste
2010: 72 3c 2f 62 3e 20 74 61 62 6c 65 20 61 6e 64 20  r</b> table and 
2020: 75 73 65 64 20 74 6f 20 72 65 67 65 6e 65 72 61  used to regenera
2030: 74 65 0a 53 51 4c 69 74 65 27 73 20 69 6e 74 65  te.SQLite's inte
2040: 72 6e 61 6c 20 72 65 70 72 65 73 65 6e 74 61 74  rnal representat
2050: 69 6f 6e 20 6f 66 20 74 68 65 20 69 6e 64 65 78  ion of the index
2060: 20 6c 61 79 6f 75 74 2e 3c 2f 70 3e 0a 7d 0a 0a   layout.</p>.}..
2070: 0a 53 65 63 74 69 6f 6e 20 7b 43 52 45 41 54 45  .Section {CREATE
2080: 20 54 41 42 4c 45 7d 20 7b 63 72 65 61 74 65 74   TABLE} {createt
2090: 61 62 6c 65 7d 0a 0a 53 79 6e 74 61 78 20 7b 73  able}..Syntax {s
20a0: 71 6c 2d 63 6f 6d 6d 61 6e 64 7d 20 7b 0a 43 52  ql-command} {.CR
20b0: 45 41 54 45 20 5b 54 45 4d 50 20 7c 20 54 45 4d  EATE [TEMP | TEM
20c0: 50 4f 52 41 52 59 5d 20 54 41 42 4c 45 20 3c 74  PORARY] TABLE <t
20d0: 61 62 6c 65 2d 6e 61 6d 65 3e 20 28 0a 20 20 3c  able-name> (.  <
20e0: 63 6f 6c 75 6d 6e 2d 64 65 66 3e 20 5b 2c 20 3c  column-def> [, <
20f0: 63 6f 6c 75 6d 6e 2d 64 65 66 3e 5d 2a 0a 20 20  column-def>]*.  
2100: 5b 2c 20 3c 63 6f 6e 73 74 72 61 69 6e 74 3e 5d  [, <constraint>]
2110: 2a 0a 29 0a 7d 20 7b 73 71 6c 2d 63 6f 6d 6d 61  *.).} {sql-comma
2120: 6e 64 7d 20 7b 0a 43 52 45 41 54 45 20 5b 54 45  nd} {.CREATE [TE
2130: 4d 50 20 7c 20 54 45 4d 50 4f 52 41 52 59 5d 20  MP | TEMPORARY] 
2140: 54 41 42 4c 45 20 3c 74 61 62 6c 65 2d 6e 61 6d  TABLE <table-nam
2150: 65 3e 20 41 53 20 3c 73 65 6c 65 63 74 2d 73 74  e> AS <select-st
2160: 61 74 65 6d 65 6e 74 3e 0a 7d 20 7b 63 6f 6c 75  atement>.} {colu
2170: 6d 6e 2d 64 65 66 7d 20 7b 0a 3c 6e 61 6d 65 3e  mn-def} {.<name>
2180: 20 5b 3c 74 79 70 65 3e 5d 20 5b 3c 63 6f 6c 75   [<type>] [<colu
2190: 6d 6e 2d 63 6f 6e 73 74 72 61 69 6e 74 3e 5d 2a  mn-constraint>]*
21a0: 0a 7d 20 7b 74 79 70 65 7d 20 7b 0a 3c 74 79 70  .} {type} {.<typ
21b0: 65 6e 61 6d 65 3e 20 7c 0a 3c 74 79 70 65 6e 61  ename> |.<typena
21c0: 6d 65 3e 20 28 20 3c 6e 75 6d 62 65 72 3e 20 29  me> ( <number> )
21d0: 20 7c 0a 3c 74 79 70 65 6e 61 6d 65 3e 20 28 20   |.<typename> ( 
21e0: 3c 6e 75 6d 62 65 72 3e 20 2c 20 3c 6e 75 6d 62  <number> , <numb
21f0: 65 72 3e 20 29 0a 7d 20 7b 63 6f 6c 75 6d 6e 2d  er> ).} {column-
2200: 63 6f 6e 73 74 72 61 69 6e 74 7d 20 7b 0a 4e 4f  constraint} {.NO
2210: 54 20 4e 55 4c 4c 20 5b 20 3c 63 6f 6e 66 6c 69  T NULL [ <confli
2220: 63 74 2d 63 6c 61 75 73 65 3e 20 5d 20 7c 0a 50  ct-clause> ] |.P
2230: 52 49 4d 41 52 59 20 4b 45 59 20 5b 3c 73 6f 72  RIMARY KEY [<sor
2240: 74 2d 6f 72 64 65 72 3e 5d 20 5b 20 3c 63 6f 6e  t-order>] [ <con
2250: 66 6c 69 63 74 2d 63 6c 61 75 73 65 3e 20 5d 20  flict-clause> ] 
2260: 7c 0a 55 4e 49 51 55 45 20 5b 20 3c 63 6f 6e 66  |.UNIQUE [ <conf
2270: 6c 69 63 74 2d 63 6c 61 75 73 65 3e 20 5d 20 7c  lict-clause> ] |
2280: 0a 43 48 45 43 4b 20 28 20 3c 65 78 70 72 3e 20  .CHECK ( <expr> 
2290: 29 20 5b 20 3c 63 6f 6e 66 6c 69 63 74 2d 63 6c  ) [ <conflict-cl
22a0: 61 75 73 65 3e 20 5d 20 7c 0a 44 45 46 41 55 4c  ause> ] |.DEFAUL
22b0: 54 20 3c 76 61 6c 75 65 3e 0a 7d 20 7b 63 6f 6e  T <value>.} {con
22c0: 73 74 72 61 69 6e 74 7d 20 7b 0a 50 52 49 4d 41  straint} {.PRIMA
22d0: 52 59 20 4b 45 59 20 28 20 3c 6e 61 6d 65 3e 20  RY KEY ( <name> 
22e0: 5b 2c 20 3c 6e 61 6d 65 3e 5d 2a 20 29 20 5b 20  [, <name>]* ) [ 
22f0: 3c 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65  <conflict-clause
2300: 3e 20 5d 7c 0a 55 4e 49 51 55 45 20 28 20 3c 6e  > ]|.UNIQUE ( <n
2310: 61 6d 65 3e 20 5b 2c 20 3c 6e 61 6d 65 3e 5d 2a  ame> [, <name>]*
2320: 20 29 20 5b 20 3c 63 6f 6e 66 6c 69 63 74 2d 63   ) [ <conflict-c
2330: 6c 61 75 73 65 3e 20 5d 20 7c 0a 43 48 45 43 4b  lause> ] |.CHECK
2340: 20 28 20 3c 65 78 70 72 3e 20 29 20 5b 20 3c 63   ( <expr> ) [ <c
2350: 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65 3e 20  onflict-clause> 
2360: 5d 0a 7d 20 7b 63 6f 6e 66 6c 69 63 74 2d 63 6c  ].} {conflict-cl
2370: 61 75 73 65 7d 20 7b 0a 4f 4e 20 43 4f 4e 46 4c  ause} {.ON CONFL
2380: 49 43 54 20 3c 63 6f 6e 66 6c 69 63 74 2d 61 6c  ICT <conflict-al
2390: 67 6f 72 69 74 68 6d 3e 0a 7d 0a 0a 70 75 74 73  gorithm>.}..puts
23a0: 20 7b 0a 3c 70 3e 41 20 43 52 45 41 54 45 20 54   {.<p>A CREATE T
23b0: 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 20 69  ABLE statement i
23c0: 73 20 62 61 73 69 63 61 6c 6c 79 20 74 68 65 20  s basically the 
23d0: 6b 65 79 77 6f 72 64 73 20 22 43 52 45 41 54 45  keywords "CREATE
23e0: 20 54 41 42 4c 45 22 0a 66 6f 6c 6c 6f 77 65 64   TABLE".followed
23f0: 20 62 79 20 74 68 65 20 6e 61 6d 65 20 6f 66 20   by the name of 
2400: 61 20 6e 65 77 20 74 61 62 6c 65 20 61 6e 64 20  a new table and 
2410: 61 20 70 61 72 65 6e 74 68 65 73 69 7a 65 64 20  a parenthesized 
2420: 6c 69 73 74 20 6f 66 20 63 6f 6c 75 6d 6e 0a 64  list of column.d
2430: 65 66 69 6e 69 74 69 6f 6e 73 20 61 6e 64 20 63  efinitions and c
2440: 6f 6e 73 74 72 61 69 6e 74 73 2e 20 20 54 68 65  onstraints.  The
2450: 20 74 61 62 6c 65 20 6e 61 6d 65 20 63 61 6e 20   table name can 
2460: 62 65 20 65 69 74 68 65 72 20 61 6e 20 69 64 65  be either an ide
2470: 6e 74 69 66 69 65 72 0a 6f 72 20 61 20 73 74 72  ntifier.or a str
2480: 69 6e 67 2e 20 20 54 68 65 20 6f 6e 6c 79 20 72  ing.  The only r
2490: 65 73 65 72 76 65 64 20 74 61 62 6c 65 20 6e 61  eserved table na
24a0: 6d 65 20 69 73 20 22 3c 62 3e 73 71 6c 69 74 65  me is "<b>sqlite
24b0: 5f 6d 61 73 74 65 72 3c 2f 62 3e 22 20 77 68 69  _master</b>" whi
24c0: 63 68 0a 69 73 20 74 68 65 20 6e 61 6d 65 20 6f  ch.is the name o
24d0: 66 20 74 68 65 20 74 61 62 6c 65 20 74 68 61 74  f the table that
24e0: 20 72 65 63 6f 72 64 73 20 74 68 65 20 64 61 74   records the dat
24f0: 61 62 61 73 65 20 73 63 68 65 6d 61 2e 3c 2f 70  abase schema.</p
2500: 3e 0a 0a 3c 70 3e 45 61 63 68 20 63 6f 6c 75 6d  >..<p>Each colum
2510: 6e 20 64 65 66 69 6e 69 74 69 6f 6e 20 69 73 20  n definition is 
2520: 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  the name of the 
2530: 63 6f 6c 75 6d 6e 20 66 6f 6c 6c 6f 77 65 64 20  column followed 
2540: 62 79 20 74 68 65 0a 64 61 74 61 74 79 70 65 20  by the.datatype 
2550: 66 6f 72 20 74 68 61 74 20 63 6f 6c 75 6d 6e 2c  for that column,
2560: 20 74 68 65 6e 20 6f 6e 65 20 6f 72 20 6d 6f 72   then one or mor
2570: 65 20 6f 70 74 69 6f 6e 61 6c 20 63 6f 6c 75 6d  e optional colum
2580: 6e 20 63 6f 6e 73 74 72 61 69 6e 74 73 2e 0a 54  n constraints..T
2590: 68 65 20 64 61 74 61 74 79 70 65 20 66 6f 72 20  he datatype for 
25a0: 74 68 65 20 63 6f 6c 75 6d 6e 20 69 73 20 28 75  the column is (u
25b0: 73 75 61 6c 6c 79 29 20 69 67 6e 6f 72 65 64 20  sually) ignored 
25c0: 61 6e 64 20 6d 61 79 20 62 65 20 6f 6d 69 74 74  and may be omitt
25d0: 65 64 2e 0a 41 6c 6c 20 69 6e 66 6f 72 6d 61 74  ed..All informat
25e0: 69 6f 6e 20 69 73 20 73 74 6f 72 65 64 20 61 73  ion is stored as
25f0: 20 6e 75 6c 6c 2d 74 65 72 6d 69 6e 61 74 65 64   null-terminated
2600: 20 73 74 72 69 6e 67 73 2e 0a 54 68 65 20 55 4e   strings..The UN
2610: 49 51 55 45 20 63 6f 6e 73 74 72 61 69 6e 74 20  IQUE constraint 
2620: 63 61 75 73 65 73 20 61 6e 20 69 6e 64 65 78 20  causes an index 
2630: 74 6f 20 62 65 20 63 72 65 61 74 65 64 20 6f 6e  to be created on
2640: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 0a 63   the specified.c
2650: 6f 6c 75 6d 6e 73 2e 20 20 54 68 69 73 20 69 6e  olumns.  This in
2660: 64 65 78 20 6d 75 73 74 20 63 6f 6e 74 61 69 6e  dex must contain
2670: 20 75 6e 69 71 75 65 20 6b 65 79 73 2e 0a 54 68   unique keys..Th
2680: 65 20 44 45 46 41 55 4c 54 20 63 6f 6e 73 74 72  e DEFAULT constr
2690: 61 69 6e 74 0a 73 70 65 63 69 66 69 65 73 20 61  aint.specifies a
26a0: 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 74   default value t
26b0: 6f 20 75 73 65 20 77 68 65 6e 20 64 6f 69 6e 67  o use when doing
26c0: 20 61 6e 20 49 4e 53 45 52 54 2e 0a 3c 2f 70 3e   an INSERT..</p>
26d0: 0a 0a 3c 70 3e 53 70 65 63 69 66 79 69 6e 67 20  ..<p>Specifying 
26e0: 61 20 50 52 49 4d 41 52 59 20 4b 45 59 20 6e 6f  a PRIMARY KEY no
26f0: 72 6d 61 6c 6c 79 20 6a 75 73 74 20 63 72 65 61  rmally just crea
2700: 74 65 73 20 61 20 55 4e 49 51 55 45 20 69 6e 64  tes a UNIQUE ind
2710: 65 78 0a 6f 6e 20 74 68 65 20 70 72 69 6d 61 72  ex.on the primar
2720: 79 20 6b 65 79 2e 20 20 48 6f 77 65 76 65 72 2c  y key.  However,
2730: 20 69 66 20 70 72 69 6d 61 72 79 20 6b 65 79 20   if primary key 
2740: 69 73 20 6f 6e 20 61 20 73 69 6e 67 6c 65 20 63  is on a single c
2750: 6f 6c 75 6d 6e 0a 74 68 61 74 20 68 61 73 20 64  olumn.that has d
2760: 61 74 61 74 79 70 65 20 49 4e 54 45 47 45 52 2c  atatype INTEGER,
2770: 20 74 68 65 6e 20 74 68 61 74 20 63 6f 6c 75 6d   then that colum
2780: 6e 20 69 73 20 75 73 65 64 20 69 6e 74 65 72 6e  n is used intern
2790: 61 6c 6c 79 0a 61 73 20 74 68 65 20 61 63 74 75  ally.as the actu
27a0: 61 6c 20 6b 65 79 20 6f 66 20 74 68 65 20 42 2d  al key of the B-
27b0: 54 72 65 65 20 66 6f 72 20 74 68 65 20 74 61 62  Tree for the tab
27c0: 6c 65 2e 20 20 54 68 69 73 20 6d 65 61 6e 73 20  le.  This means 
27d0: 74 68 61 74 20 74 68 65 20 63 6f 6c 75 6d 6e 0a  that the column.
27e0: 6d 61 79 20 6f 6e 6c 79 20 68 6f 6c 64 20 75 6e  may only hold un
27f0: 69 71 75 65 20 69 6e 74 65 67 65 72 20 76 61 6c  ique integer val
2800: 75 65 73 2e 20 20 28 45 78 63 65 70 74 20 66 6f  ues.  (Except fo
2810: 72 20 74 68 69 73 20 6f 6e 65 20 63 61 73 65 2c  r this one case,
2820: 0a 53 51 4c 69 74 65 20 69 67 6e 6f 72 65 73 20  .SQLite ignores 
2830: 74 68 65 20 64 61 74 61 74 79 70 65 20 73 70 65  the datatype spe
2840: 63 69 66 69 63 61 74 69 6f 6e 20 6f 66 20 63 6f  cification of co
2850: 6c 75 6d 6e 73 20 61 6e 64 20 61 6c 6c 6f 77 73  lumns and allows
2860: 0a 61 6e 79 20 6b 69 6e 64 20 6f 66 20 64 61 74  .any kind of dat
2870: 61 20 74 6f 20 62 65 20 70 75 74 20 69 6e 20 61  a to be put in a
2880: 20 63 6f 6c 75 6d 6e 20 72 65 67 61 72 64 6c 65   column regardle
2890: 73 73 20 6f 66 20 69 74 73 20 64 65 63 6c 61 72  ss of its declar
28a0: 65 64 0a 64 61 74 61 74 79 70 65 2e 29 20 20 49  ed.datatype.)  I
28b0: 66 20 61 20 74 61 62 6c 65 20 64 6f 65 73 20 6e  f a table does n
28c0: 6f 74 20 68 61 76 65 20 61 6e 20 49 4e 54 45 47  ot have an INTEG
28d0: 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 20 63  ER PRIMARY KEY c
28e0: 6f 6c 75 6d 6e 2c 0a 74 68 65 6e 20 74 68 65 20  olumn,.then the 
28f0: 42 2d 54 72 65 65 20 6b 65 79 20 77 69 6c 6c 20  B-Tree key will 
2900: 62 65 20 61 20 61 75 74 6f 6d 61 74 69 63 61 6c  be a automatical
2910: 6c 79 20 67 65 6e 65 72 61 74 65 64 20 69 6e 74  ly generated int
2920: 65 67 65 72 2e 20 20 54 68 65 0a 42 2d 54 72 65  eger.  The.B-Tre
2930: 65 20 6b 65 79 20 66 6f 72 20 61 20 72 6f 77 20  e key for a row 
2940: 63 61 6e 20 61 6c 77 61 79 73 20 62 65 20 61 63  can always be ac
2950: 63 65 73 73 65 64 20 75 73 69 6e 67 20 6f 6e 65  cessed using one
2960: 20 6f 66 20 74 68 65 0a 73 70 65 63 69 61 6c 20   of the.special 
2970: 6e 61 6d 65 73 20 22 3c 62 3e 52 4f 57 49 44 3c  names "<b>ROWID<
2980: 2f 62 3e 22 2c 20 22 3c 62 3e 4f 49 44 3c 2f 62  /b>", "<b>OID</b
2990: 3e 22 2c 20 6f 72 20 22 3c 62 3e 5f 52 4f 57 49  >", or "<b>_ROWI
29a0: 44 5f 3c 2f 62 3e 22 2e 0a 54 68 69 73 20 69 73  D_</b>"..This is
29b0: 20 74 72 75 65 20 72 65 67 61 72 64 6c 65 73 73   true regardless
29c0: 20 6f 66 20 77 68 65 74 68 65 72 20 6f 72 20 6e   of whether or n
29d0: 6f 74 20 74 68 65 72 65 20 69 73 20 61 6e 20 49  ot there is an I
29e0: 4e 54 45 47 45 52 0a 50 52 49 4d 41 52 59 20 4b  NTEGER.PRIMARY K
29f0: 45 59 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 74  EY.</p>..<p>If t
2a00: 68 65 20 22 54 45 4d 50 22 20 6f 72 20 22 54 45  he "TEMP" or "TE
2a10: 4d 50 4f 52 41 52 59 22 20 6b 65 79 77 6f 72 64  MPORARY" keyword
2a20: 20 6f 63 63 75 72 73 20 69 6e 20 62 65 74 77 65   occurs in betwe
2a30: 65 6e 20 22 43 52 45 41 54 45 22 0a 61 6e 64 20  en "CREATE".and 
2a40: 22 54 41 42 4c 45 22 20 74 68 65 6e 20 74 68 65  "TABLE" then the
2a50: 20 74 61 62 6c 65 20 74 68 61 74 20 69 73 20 63   table that is c
2a60: 72 65 61 74 65 64 20 69 73 20 6f 6e 6c 79 20 76  reated is only v
2a70: 69 73 69 62 6c 65 20 74 6f 20 74 68 65 0a 70 72  isible to the.pr
2a80: 6f 63 65 73 73 20 74 68 61 74 20 6f 70 65 6e 65  ocess that opene
2a90: 64 20 74 68 65 20 64 61 74 61 62 61 73 65 20 61  d the database a
2aa0: 6e 64 20 69 73 20 61 75 74 6f 6d 61 74 69 63 61  nd is automatica
2ab0: 6c 6c 79 20 64 65 6c 65 74 65 64 20 77 68 65 6e  lly deleted when
2ac0: 0a 74 68 65 20 64 61 74 61 62 61 73 65 20 69 73  .the database is
2ad0: 20 63 6c 6f 73 65 64 2e 20 20 41 6e 79 20 69 6e   closed.  Any in
2ae0: 64 69 63 65 73 20 63 72 65 61 74 65 64 20 6f 6e  dices created on
2af0: 20 61 20 74 65 6d 70 6f 72 61 72 79 20 74 61 62   a temporary tab
2b00: 6c 65 0a 61 72 65 20 61 6c 73 6f 20 74 65 6d 70  le.are also temp
2b10: 6f 72 61 72 79 2e 20 20 54 65 6d 70 6f 72 61 72  orary.  Temporar
2b20: 79 20 74 61 62 6c 65 73 20 61 6e 64 20 69 6e 64  y tables and ind
2b30: 69 63 65 73 20 61 72 65 20 73 74 6f 72 65 64 20  ices are stored 
2b40: 69 6e 20 61 0a 73 65 70 61 72 61 74 65 20 66 69  in a.separate fi
2b50: 6c 65 20 64 69 73 74 69 6e 63 74 20 66 72 6f 6d  le distinct from
2b60: 20 74 68 65 20 6d 61 69 6e 20 64 61 74 61 62 61   the main databa
2b70: 73 65 20 66 69 6c 65 2e 3c 2f 70 3e 0a 0a 3c 70  se file.</p>..<p
2b80: 3e 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20 63 6f  >The optional co
2b90: 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65 20 66 6f  nflict-clause fo
2ba0: 6c 6c 6f 77 69 6e 67 20 65 61 63 68 20 63 6f 6e  llowing each con
2bb0: 73 74 72 61 69 6e 74 0a 61 6c 6c 6f 77 73 20 74  straint.allows t
2bc0: 68 65 20 73 70 65 63 69 66 69 63 61 74 69 6f 6e  he specification
2bd0: 20 6f 66 20 61 6e 20 61 6c 74 65 72 6e 61 74 69   of an alternati
2be0: 76 65 20 64 65 66 61 75 6c 74 0a 63 6f 6e 73 74  ve default.const
2bf0: 72 61 69 6e 74 20 63 6f 6e 66 6c 69 63 74 20 72  raint conflict r
2c00: 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69  esolution algori
2c10: 74 68 6d 20 66 6f 72 20 74 68 61 74 20 63 6f 6e  thm for that con
2c20: 73 74 72 61 69 6e 74 2e 0a 54 68 65 20 64 65 66  straint..The def
2c30: 61 75 6c 74 20 69 73 20 61 62 6f 72 74 20 41 42  ault is abort AB
2c40: 4f 52 54 2e 20 20 44 69 66 66 65 72 65 6e 74 20  ORT.  Different 
2c50: 63 6f 6e 73 74 72 61 69 6e 74 73 20 77 69 74 68  constraints with
2c60: 69 6e 20 74 68 65 20 73 61 6d 65 0a 74 61 62 6c  in the same.tabl
2c70: 65 20 6d 61 79 20 68 61 76 65 20 64 69 66 66 65  e may have diffe
2c80: 72 65 6e 74 20 64 65 66 61 75 6c 74 20 63 6f 6e  rent default con
2c90: 66 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e  flict resolution
2ca0: 20 61 6c 67 6f 72 69 74 68 6d 73 2e 0a 49 66 20   algorithms..If 
2cb0: 61 6e 20 43 4f 50 59 2c 20 49 4e 53 45 52 54 2c  an COPY, INSERT,
2cc0: 20 6f 72 20 55 50 44 41 54 45 20 63 6f 6d 6d 61   or UPDATE comma
2cd0: 6e 64 20 73 70 65 63 69 66 69 65 73 20 61 20 64  nd specifies a d
2ce0: 69 66 66 65 72 65 6e 74 20 63 6f 6e 66 6c 69 63  ifferent conflic
2cf0: 74 0a 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67  t.resolution alg
2d00: 6f 72 69 74 68 6d 2c 20 74 68 65 6e 20 74 68 61  orithm, then tha
2d10: 74 20 61 6c 67 6f 72 69 74 68 6d 20 69 73 20 75  t algorithm is u
2d20: 73 65 64 20 69 6e 20 70 6c 61 63 65 20 6f 66 20  sed in place of 
2d30: 74 68 65 0a 64 65 66 61 75 6c 74 20 61 6c 67 6f  the.default algo
2d40: 72 69 74 68 6d 20 73 70 65 63 69 66 69 65 64 20  rithm specified 
2d50: 69 6e 20 74 68 65 20 43 52 45 41 54 45 20 54 41  in the CREATE TA
2d60: 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 2e 0a 53  BLE statement..S
2d70: 65 65 20 74 68 65 20 73 65 63 74 69 6f 6e 20 74  ee the section t
2d80: 69 74 6c 65 64 0a 3c 61 20 68 72 65 66 3d 22 23  itled.<a href="#
2d90: 63 6f 6e 66 6c 69 63 74 22 3e 4f 4e 20 43 4f 4e  conflict">ON CON
2da0: 46 4c 49 43 54 3c 2f 61 3e 20 66 6f 72 20 61 64  FLICT</a> for ad
2db0: 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61  ditional informa
2dc0: 74 69 6f 6e 2e 3c 2f 70 3e 0a 0a 3c 70 3e 43 48  tion.</p>..<p>CH
2dd0: 45 43 4b 20 63 6f 6e 73 74 72 61 69 6e 74 73 20  ECK constraints 
2de0: 61 72 65 20 69 67 6e 6f 72 65 64 20 69 6e 20 74  are ignored in t
2df0: 68 65 20 63 75 72 72 65 6e 74 20 69 6d 70 6c 65  he current imple
2e00: 6d 65 6e 74 61 74 69 6f 6e 2e 0a 53 75 70 70 6f  mentation..Suppo
2e10: 72 74 20 66 6f 72 20 43 48 45 43 4b 20 63 6f 6e  rt for CHECK con
2e20: 73 74 72 61 69 6e 74 73 20 6d 61 79 20 62 65 20  straints may be 
2e30: 61 64 64 65 64 20 69 6e 20 74 68 65 20 66 75 74  added in the fut
2e40: 75 72 65 2e 20 20 41 73 20 6f 66 0a 76 65 72 73  ure.  As of.vers
2e50: 69 6f 6e 20 32 2e 33 2e 30 2c 20 4e 4f 54 20 4e  ion 2.3.0, NOT N
2e60: 55 4c 4c 2c 20 50 52 49 4d 41 52 59 20 4b 45 59  ULL, PRIMARY KEY
2e70: 2c 20 61 6e 64 20 55 4e 49 51 55 45 20 63 6f 6e  , and UNIQUE con
2e80: 73 74 72 61 69 6e 74 73 20 61 6c 6c 0a 77 6f 72  straints all.wor
2e90: 6b 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 72 65  k.</p>..<p>There
2ea0: 20 61 72 65 20 6e 6f 20 61 72 62 69 74 72 61 72   are no arbitrar
2eb0: 79 20 6c 69 6d 69 74 73 20 6f 6e 20 74 68 65 20  y limits on the 
2ec0: 6e 75 6d 62 65 72 0a 6f 66 20 63 6f 6c 75 6d 6e  number.of column
2ed0: 73 20 6f 72 20 6f 6e 20 74 68 65 20 6e 75 6d 62  s or on the numb
2ee0: 65 72 20 6f 66 20 63 6f 6e 73 74 72 61 69 6e 74  er of constraint
2ef0: 73 20 69 6e 20 61 20 74 61 62 6c 65 2e 0a 54 68  s in a table..Th
2f00: 65 20 74 6f 74 61 6c 20 61 6d 6f 75 6e 74 20 6f  e total amount o
2f10: 66 20 64 61 74 61 20 69 6e 20 61 20 73 69 6e 67  f data in a sing
2f20: 6c 65 20 72 6f 77 20 69 73 20 6c 69 6d 69 74 65  le row is limite
2f30: 64 20 74 6f 20 61 62 6f 75 74 0a 31 20 6d 65 67  d to about.1 meg
2f40: 61 62 79 74 65 73 2e 20 20 28 54 68 69 73 20 6c  abytes.  (This l
2f50: 69 6d 69 74 20 63 61 6e 20 62 65 20 69 6e 63 72  imit can be incr
2f60: 65 61 73 65 64 20 74 6f 20 31 36 4d 42 20 62 79  eased to 16MB by
2f70: 20 63 68 61 6e 67 69 6e 67 0a 61 20 73 69 6e 67   changing.a sing
2f80: 6c 65 20 23 64 65 66 69 6e 65 20 69 6e 20 74 68  le #define in th
2f90: 65 20 73 6f 75 72 63 65 20 63 6f 64 65 20 61 6e  e source code an
2fa0: 64 20 72 65 63 6f 6d 70 69 6c 69 6e 67 2e 29 3c  d recompiling.)<
2fb0: 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 43 52 45 41  /p>..<p>The CREA
2fc0: 54 45 20 54 41 42 4c 45 20 41 53 20 66 6f 72 6d  TE TABLE AS form
2fd0: 20 64 65 66 69 6e 65 73 20 74 68 65 20 74 61 62   defines the tab
2fe0: 6c 65 20 74 6f 20 62 65 0a 74 68 65 20 72 65 73  le to be.the res
2ff0: 75 6c 74 20 73 65 74 20 6f 66 20 61 20 71 75 65  ult set of a que
3000: 72 79 2e 20 20 54 68 65 20 6e 61 6d 65 73 20 6f  ry.  The names o
3010: 66 20 74 68 65 20 74 61 62 6c 65 20 63 6f 6c 75  f the table colu
3020: 6d 6e 73 20 61 72 65 0a 74 68 65 20 6e 61 6d 65  mns are.the name
3030: 73 20 6f 66 20 74 68 65 20 63 6f 6c 75 6d 6e 73  s of the columns
3040: 20 69 6e 20 74 68 65 20 72 65 73 75 6c 74 2e 3c   in the result.<
3050: 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 65 78 61 63  /p>..<p>The exac
3060: 74 20 74 65 78 74 0a 6f 66 20 65 61 63 68 20 43  t text.of each C
3070: 52 45 41 54 45 20 54 41 42 4c 45 20 73 74 61 74  REATE TABLE stat
3080: 65 6d 65 6e 74 20 69 73 20 73 74 6f 72 65 64 20  ement is stored 
3090: 69 6e 20 74 68 65 20 3c 62 3e 73 71 6c 69 74 65  in the <b>sqlite
30a0: 5f 6d 61 73 74 65 72 3c 2f 62 3e 0a 74 61 62 6c  _master</b>.tabl
30b0: 65 2e 20 20 45 76 65 72 79 74 69 6d 65 20 74 68  e.  Everytime th
30c0: 65 20 64 61 74 61 62 61 73 65 20 69 73 20 6f 70  e database is op
30d0: 65 6e 65 64 2c 20 61 6c 6c 20 43 52 45 41 54 45  ened, all CREATE
30e0: 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74   TABLE statement
30f0: 73 0a 61 72 65 20 72 65 61 64 20 66 72 6f 6d 20  s.are read from 
3100: 74 68 65 20 3c 62 3e 73 71 6c 69 74 65 5f 6d 61  the <b>sqlite_ma
3110: 73 74 65 72 3c 2f 62 3e 20 74 61 62 6c 65 20 61  ster</b> table a
3120: 6e 64 20 75 73 65 64 20 74 6f 20 72 65 67 65 6e  nd used to regen
3130: 65 72 61 74 65 0a 53 51 4c 69 74 65 27 73 20 69  erate.SQLite's i
3140: 6e 74 65 72 6e 61 6c 20 72 65 70 72 65 73 65 6e  nternal represen
3150: 74 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 74 61  tation of the ta
3160: 62 6c 65 20 6c 61 79 6f 75 74 2e 0a 49 66 20 74  ble layout..If t
3170: 68 65 20 6f 72 69 67 69 6e 61 6c 20 63 6f 6d 6d  he original comm
3180: 61 6e 64 20 77 61 73 20 61 20 43 52 45 41 54 45  and was a CREATE
3190: 20 54 41 42 4c 45 20 41 53 20 74 68 65 6e 20 74   TABLE AS then t
31a0: 68 65 6e 20 61 6e 20 65 71 75 69 76 61 6c 65 6e  hen an equivalen
31b0: 74 0a 43 52 45 41 54 45 20 54 41 42 4c 45 20 73  t.CREATE TABLE s
31c0: 74 61 74 65 6d 65 6e 74 20 69 73 20 73 79 6e 74  tatement is synt
31d0: 68 65 73 69 7a 65 64 20 61 6e 64 20 73 74 6f 72  hesized and stor
31e0: 65 20 69 6e 20 3c 62 3e 73 71 6c 69 74 65 5f 6d  e in <b>sqlite_m
31f0: 61 73 74 65 72 3c 2f 62 3e 0a 69 6e 20 70 6c 61  aster</b>.in pla
3200: 63 65 20 6f 66 20 74 68 65 20 6f 72 69 67 69 6e  ce of the origin
3210: 61 6c 20 63 6f 6d 6d 61 6e 64 2e 0a 3c 2f 70 3e  al command..</p>
3220: 0a 7d 0a 53 65 63 74 69 6f 6e 20 7b 43 52 45 41  .}.Section {CREA
3230: 54 45 20 54 52 49 47 47 45 52 7d 20 63 72 65 61  TE TRIGGER} crea
3240: 74 65 74 72 69 67 67 65 72 0a 0a 53 79 6e 74 61  tetrigger..Synta
3250: 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74  x {sql-statement
3260: 7d 20 7b 0a 43 52 45 41 54 45 20 54 52 49 47 47  } {.CREATE TRIGG
3270: 45 52 20 3c 74 72 69 67 67 65 72 2d 6e 61 6d 65  ER <trigger-name
3280: 3e 20 5b 20 42 45 46 4f 52 45 20 7c 20 41 46 54  > [ BEFORE | AFT
3290: 45 52 20 5d 0a 3c 64 61 74 61 62 61 73 65 2d 65  ER ].<database-e
32a0: 76 65 6e 74 3e 20 4f 4e 20 3c 74 61 62 6c 65 2d  vent> ON <table-
32b0: 6e 61 6d 65 3e 0a 3c 74 72 69 67 67 65 72 2d 61  name>.<trigger-a
32c0: 63 74 69 6f 6e 3e 0a 7d 0a 0a 53 79 6e 74 61 78  ction>.}..Syntax
32d0: 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d   {sql-statement}
32e0: 20 7b 0a 43 52 45 41 54 45 20 54 52 49 47 47 45   {.CREATE TRIGGE
32f0: 52 20 3c 74 72 69 67 67 65 72 2d 6e 61 6d 65 3e  R <trigger-name>
3300: 20 49 4e 53 54 45 41 44 20 4f 46 0a 3c 64 61 74   INSTEAD OF.<dat
3310: 61 62 61 73 65 2d 65 76 65 6e 74 3e 20 4f 4e 20  abase-event> ON 
3320: 3c 76 69 65 77 2d 6e 61 6d 65 3e 0a 3c 74 72 69  <view-name>.<tri
3330: 67 67 65 72 2d 61 63 74 69 6f 6e 3e 0a 7d 0a 0a  gger-action>.}..
3340: 53 79 6e 74 61 78 20 7b 64 61 74 61 62 61 73 65  Syntax {database
3350: 2d 65 76 65 6e 74 7d 20 7b 0a 44 45 4c 45 54 45  -event} {.DELETE
3360: 20 7c 20 0a 49 4e 53 45 52 54 20 7c 20 0a 55 50   | .INSERT | .UP
3370: 44 41 54 45 20 7c 20 0a 55 50 44 41 54 45 20 4f  DATE | .UPDATE O
3380: 46 20 3c 63 6f 6c 75 6d 6e 2d 6c 69 73 74 3e 0a  F <column-list>.
3390: 7d 0a 0a 53 79 6e 74 61 78 20 7b 74 72 69 67 67  }..Syntax {trigg
33a0: 65 72 2d 61 63 74 69 6f 6e 7d 20 7b 0a 5b 20 46  er-action} {.[ F
33b0: 4f 52 20 45 41 43 48 20 52 4f 57 20 5d 20 5b 20  OR EACH ROW ] [ 
33c0: 57 48 45 4e 20 3c 65 78 70 72 65 73 73 69 6f 6e  WHEN <expression
33d0: 3e 20 5d 20 0a 42 45 47 49 4e 20 0a 20 20 3c 74  > ] .BEGIN .  <t
33e0: 72 69 67 67 65 72 2d 73 74 65 70 3e 20 3b 20 5b  rigger-step> ; [
33f0: 20 3c 74 72 69 67 67 65 72 2d 73 74 65 70 3e 20   <trigger-step> 
3400: 3b 20 5d 2a 0a 45 4e 44 0a 7d 0a 0a 53 79 6e 74  ; ]*.END.}..Synt
3410: 61 78 20 7b 74 72 69 67 67 65 72 2d 73 74 65 70  ax {trigger-step
3420: 7d 20 7b 0a 3c 75 70 64 61 74 65 2d 73 74 61 74  } {.<update-stat
3430: 65 6d 65 6e 74 3e 20 7c 20 3c 69 6e 73 65 72 74  ement> | <insert
3440: 2d 73 74 61 74 65 6d 65 6e 74 3e 20 7c 20 0a 3c  -statement> | .<
3450: 64 65 6c 65 74 65 2d 73 74 61 74 65 6d 65 6e 74  delete-statement
3460: 3e 20 7c 20 3c 73 65 6c 65 63 74 2d 73 74 61 74  > | <select-stat
3470: 65 6d 65 6e 74 3e 20 0a 7d 0a 0a 70 75 74 73 20  ement> .}..puts 
3480: 7b 0a 3c 70 3e 54 68 65 20 43 52 45 41 54 45 20  {.<p>The CREATE 
3490: 54 52 49 47 47 45 52 20 73 74 61 74 65 6d 65 6e  TRIGGER statemen
34a0: 74 20 69 73 20 75 73 65 64 20 74 6f 20 61 64 64  t is used to add
34b0: 20 74 72 69 67 67 65 72 73 20 74 6f 20 74 68 65   triggers to the
34c0: 20 0a 64 61 74 61 62 61 73 65 20 73 63 68 65 6d   .database schem
34d0: 61 2e 20 54 72 69 67 67 65 72 73 20 61 72 65 20  a. Triggers are 
34e0: 64 61 74 61 62 61 73 65 20 6f 70 65 72 61 74 69  database operati
34f0: 6f 6e 73 20 28 74 68 65 20 3c 69 3e 74 72 69 67  ons (the <i>trig
3500: 67 65 72 2d 61 63 74 69 6f 6e 3c 2f 69 3e 29 20  ger-action</i>) 
3510: 0a 74 68 61 74 20 61 72 65 20 61 75 74 6f 6d 61  .that are automa
3520: 74 69 63 61 6c 6c 79 20 70 65 72 66 6f 72 6d 65  tically performe
3530: 64 20 77 68 65 6e 20 61 20 73 70 65 63 69 66 69  d when a specifi
3540: 65 64 20 64 61 74 61 62 61 73 65 20 65 76 65 6e  ed database even
3550: 74 20 28 74 68 65 0a 3c 69 3e 64 61 74 61 62 61  t (the.<i>databa
3560: 73 65 2d 65 76 65 6e 74 3c 2f 69 3e 29 20 6f 63  se-event</i>) oc
3570: 63 75 72 73 2e 20 20 3c 2f 70 3e 0a 0a 3c 70 3e  curs.  </p>..<p>
3580: 41 20 74 72 69 67 67 65 72 20 6d 61 79 20 62 65  A trigger may be
3590: 20 73 70 65 63 69 66 69 65 64 20 74 6f 20 66 69   specified to fi
35a0: 72 65 20 77 68 65 6e 65 76 65 72 20 61 20 44 45  re whenever a DE
35b0: 4c 45 54 45 2c 20 49 4e 53 45 52 54 20 6f 72 20  LETE, INSERT or 
35c0: 55 50 44 41 54 45 20 6f 66 20 61 0a 70 61 72 74  UPDATE of a.part
35d0: 69 63 75 6c 61 72 20 64 61 74 61 62 61 73 65 20  icular database 
35e0: 74 61 62 6c 65 20 6f 63 63 75 72 73 2c 20 6f 72  table occurs, or
35f0: 20 77 68 65 6e 65 76 65 72 20 61 6e 20 55 50 44   whenever an UPD
3600: 41 54 45 20 6f 66 20 6f 6e 65 20 6f 72 20 6d 6f  ATE of one or mo
3610: 72 65 0a 73 70 65 63 69 66 69 65 64 20 63 6f 6c  re.specified col
3620: 75 6d 6e 73 20 6f 66 20 61 20 74 61 62 6c 65 20  umns of a table 
3630: 61 72 65 20 75 70 64 61 74 65 64 2e 3c 2f 70 3e  are updated.</p>
3640: 0a 0a 3c 70 3e 41 74 20 74 68 69 73 20 74 69 6d  ..<p>At this tim
3650: 65 20 53 51 4c 69 74 65 20 73 75 70 70 6f 72 74  e SQLite support
3660: 73 20 6f 6e 6c 79 20 46 4f 52 20 45 41 43 48 20  s only FOR EACH 
3670: 52 4f 57 20 74 72 69 67 67 65 72 73 2c 20 6e 6f  ROW triggers, no
3680: 74 20 46 4f 52 20 45 41 43 48 0a 53 54 41 54 45  t FOR EACH.STATE
3690: 4d 45 4e 54 20 74 72 69 67 67 65 72 73 2e 20 48  MENT triggers. H
36a0: 65 6e 63 65 20 65 78 70 6c 69 63 69 74 6c 79 20  ence explicitly 
36b0: 73 70 65 63 69 66 79 69 6e 67 20 46 4f 52 20 45  specifying FOR E
36c0: 41 43 48 20 52 4f 57 20 69 73 20 6f 70 74 69 6f  ACH ROW is optio
36d0: 6e 61 6c 2e 20 20 46 4f 52 0a 45 41 43 48 20 52  nal.  FOR.EACH R
36e0: 4f 57 20 69 6d 70 6c 69 65 73 20 74 68 61 74 20  OW implies that 
36f0: 74 68 65 20 53 51 4c 20 73 74 61 74 65 6d 65 6e  the SQL statemen
3700: 74 73 20 73 70 65 63 69 66 69 65 64 20 61 73 20  ts specified as 
3710: 3c 69 3e 74 72 69 67 67 65 72 2d 73 74 65 70 73  <i>trigger-steps
3720: 3c 2f 69 3e 20 0a 6d 61 79 20 62 65 20 65 78 65  </i> .may be exe
3730: 63 75 74 65 64 20 28 64 65 70 65 6e 64 69 6e 67  cuted (depending
3740: 20 6f 6e 20 74 68 65 20 57 48 45 4e 20 63 6c 61   on the WHEN cla
3750: 75 73 65 29 20 66 6f 72 20 65 61 63 68 20 64 61  use) for each da
3760: 74 61 62 61 73 65 20 72 6f 77 20 62 65 69 6e 67  tabase row being
3770: 0a 69 6e 73 65 72 74 65 64 2c 20 75 70 64 61 74  .inserted, updat
3780: 65 64 20 6f 72 20 64 65 6c 65 74 65 64 20 62 79  ed or deleted by
3790: 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74 20 63   the statement c
37a0: 61 75 73 69 6e 67 20 74 68 65 20 74 72 69 67 67  ausing the trigg
37b0: 65 72 20 74 6f 20 66 69 72 65 2e 3c 2f 70 3e 0a  er to fire.</p>.
37c0: 0a 3c 70 3e 42 6f 74 68 20 74 68 65 20 57 48 45  .<p>Both the WHE
37d0: 4e 20 63 6c 61 75 73 65 20 61 6e 64 20 74 68 65  N clause and the
37e0: 20 3c 69 3e 74 72 69 67 67 65 72 2d 73 74 65 70   <i>trigger-step
37f0: 73 3c 2f 69 3e 20 6d 61 79 20 61 63 63 65 73 73  s</i> may access
3800: 20 65 6c 65 6d 65 6e 74 73 20 6f 66 20 0a 74 68   elements of .th
3810: 65 20 72 6f 77 20 62 65 69 6e 67 20 69 6e 73 65  e row being inse
3820: 72 74 65 64 2c 20 64 65 6c 65 74 65 64 20 6f 72  rted, deleted or
3830: 20 75 70 64 61 74 65 64 20 75 73 69 6e 67 20 72   updated using r
3840: 65 66 65 72 65 6e 63 65 73 20 6f 66 20 74 68 65  eferences of the
3850: 20 66 6f 72 6d 20 0a 22 4e 45 57 2e 3c 69 3e 63   form ."NEW.<i>c
3860: 6f 6c 75 6d 6e 2d 6e 61 6d 65 3c 2f 69 3e 22 20  olumn-name</i>" 
3870: 61 6e 64 20 22 4f 4c 44 2e 3c 69 3e 63 6f 6c 75  and "OLD.<i>colu
3880: 6d 6e 2d 6e 61 6d 65 3c 2f 69 3e 22 2c 20 77 68  mn-name</i>", wh
3890: 65 72 65 0a 3c 69 3e 63 6f 6c 75 6d 6e 2d 6e 61  ere.<i>column-na
38a0: 6d 65 3c 2f 69 3e 20 69 73 20 74 68 65 20 6e 61  me</i> is the na
38b0: 6d 65 20 6f 66 20 61 20 63 6f 6c 75 6d 6e 20 66  me of a column f
38c0: 72 6f 6d 20 74 68 65 20 74 61 62 6c 65 20 74 68  rom the table th
38d0: 61 74 20 74 68 65 20 74 72 69 67 67 65 72 0a 69  at the trigger.i
38e0: 73 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  s associated wit
38f0: 68 2e 20 4f 4c 44 20 61 6e 64 20 4e 45 57 20 72  h. OLD and NEW r
3900: 65 66 65 72 65 6e 63 65 73 20 6d 61 79 20 6f 6e  eferences may on
3910: 6c 79 20 62 65 20 75 73 65 64 20 69 6e 20 74 72  ly be used in tr
3920: 69 67 67 65 72 73 20 6f 6e 0a 3c 69 3e 74 72 69  iggers on.<i>tri
3930: 67 67 65 72 2d 65 76 65 6e 74 3c 2f 69 3e 73 20  gger-event</i>s 
3940: 66 6f 72 20 77 68 69 63 68 20 74 68 65 79 20 61  for which they a
3950: 72 65 20 72 65 6c 65 76 61 6e 74 2c 20 61 73 20  re relevant, as 
3960: 66 6f 6c 6c 6f 77 73 3a 3c 2f 70 3e 0a 0a 3c 74  follows:</p>..<t
3970: 61 62 6c 65 20 62 6f 72 64 65 72 3d 30 20 63 65  able border=0 ce
3980: 6c 6c 70 61 64 64 69 6e 67 3d 31 30 3e 0a 3c 74  llpadding=10>.<t
3990: 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  r>.<td valign="t
39a0: 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74  op" align="right
39b0: 22 20 77 69 64 74 68 3d 31 32 30 3e 3c 69 3e 49  " width=120><i>I
39c0: 4e 53 45 52 54 3c 2f 69 3e 3c 2f 74 64 3e 0a 3c  NSERT</i></td>.<
39d0: 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e  td valign="top">
39e0: 4e 45 57 20 72 65 66 65 72 65 6e 63 65 73 20 61  NEW references a
39f0: 72 65 20 76 61 6c 69 64 3c 2f 74 64 3e 0a 3c 2f  re valid</td>.</
3a00: 74 72 3e 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c  tr>.<tr>.<td val
3a10: 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d  ign="top" align=
3a20: 22 72 69 67 68 74 22 20 77 69 64 74 68 3d 31 32  "right" width=12
3a30: 30 3e 3c 69 3e 55 50 44 41 54 45 3c 2f 69 3e 3c  0><i>UPDATE</i><
3a40: 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  /td>.<td valign=
3a50: 22 74 6f 70 22 3e 4e 45 57 20 61 6e 64 20 4f 4c  "top">NEW and OL
3a60: 44 20 72 65 66 65 72 65 6e 63 65 73 20 61 72 65  D references are
3a70: 20 76 61 6c 69 64 3c 2f 74 64 3e 0a 3c 2f 74 72   valid</td>.</tr
3a80: 3e 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67  >.<tr>.<td valig
3a90: 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72  n="top" align="r
3aa0: 69 67 68 74 22 20 77 69 64 74 68 3d 31 32 30 3e  ight" width=120>
3ab0: 3c 69 3e 44 45 4c 45 54 45 3c 2f 69 3e 3c 2f 74  <i>DELETE</i></t
3ac0: 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  d>.<td valign="t
3ad0: 6f 70 22 3e 4f 4c 44 20 72 65 66 65 72 65 6e 63  op">OLD referenc
3ae0: 65 73 20 61 72 65 20 76 61 6c 69 64 3c 2f 74 64  es are valid</td
3af0: 3e 0a 3c 2f 74 72 3e 0a 3c 2f 74 61 62 6c 65 3e  >.</tr>.</table>
3b00: 0a 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 61 20 57  .</p>..<p>If a W
3b10: 48 45 4e 20 63 6c 61 75 73 65 20 69 73 20 73 75  HEN clause is su
3b20: 70 70 6c 69 65 64 2c 20 74 68 65 20 53 51 4c 20  pplied, the SQL 
3b30: 73 74 61 74 65 6d 65 6e 74 73 20 73 70 65 63 69  statements speci
3b40: 66 69 65 64 20 61 73 20 3c 69 3e 74 72 69 67 67  fied as <i>trigg
3b50: 65 72 2d 73 74 65 70 73 3c 2f 69 3e 20 61 72 65  er-steps</i> are
3b60: 20 6f 6e 6c 79 20 65 78 65 63 75 74 65 64 20 66   only executed f
3b70: 6f 72 20 72 6f 77 73 20 66 6f 72 20 77 68 69 63  or rows for whic
3b80: 68 20 74 68 65 20 57 48 45 4e 20 63 6c 61 75 73  h the WHEN claus
3b90: 65 20 69 73 20 74 72 75 65 2e 20 49 66 20 6e 6f  e is true. If no
3ba0: 20 57 48 45 4e 20 63 6c 61 75 73 65 20 69 73 20   WHEN clause is 
3bb0: 73 75 70 70 6c 69 65 64 2c 20 74 68 65 20 53 51  supplied, the SQ
3bc0: 4c 20 73 74 61 74 65 6d 65 6e 74 73 20 61 72 65  L statements are
3bd0: 20 65 78 65 63 75 74 65 64 20 66 6f 72 20 61 6c   executed for al
3be0: 6c 20 72 6f 77 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e  l rows.</p>..<p>
3bf0: 54 68 65 20 73 70 65 63 69 66 69 65 64 20 3c 69  The specified <i
3c00: 3e 74 72 69 67 67 65 72 2d 74 69 6d 65 3c 2f 69  >trigger-time</i
3c10: 3e 20 64 65 74 65 72 6d 69 6e 65 73 20 77 68 65  > determines whe
3c20: 6e 20 74 68 65 20 3c 69 3e 74 72 69 67 67 65 72  n the <i>trigger
3c30: 2d 73 74 65 70 73 3c 2f 69 3e 0a 77 69 6c 6c 20  -steps</i>.will 
3c40: 62 65 20 65 78 65 63 75 74 65 64 20 72 65 6c 61  be executed rela
3c50: 74 69 76 65 20 74 6f 20 74 68 65 20 69 6e 73 65  tive to the inse
3c60: 72 74 69 6f 6e 2c 20 6d 6f 64 69 66 69 63 61 74  rtion, modificat
3c70: 69 6f 6e 20 6f 72 20 72 65 6d 6f 76 61 6c 20 6f  ion or removal o
3c80: 66 20 74 68 65 0a 61 73 73 6f 63 69 61 74 65 64  f the.associated
3c90: 20 72 6f 77 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41 6e   row.</p>..<p>An
3ca0: 20 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 63 6c 61   ON CONFLICT cla
3cb0: 75 73 65 20 6d 61 79 20 62 65 20 73 70 65 63 69  use may be speci
3cc0: 66 69 65 64 20 61 73 20 70 61 72 74 20 6f 66 20  fied as part of 
3cd0: 61 6e 20 55 50 44 41 54 45 20 6f 72 20 49 4e 53  an UPDATE or INS
3ce0: 45 52 54 0a 3c 69 3e 74 72 69 67 67 65 72 2d 73  ERT.<i>trigger-s
3cf0: 74 65 70 3c 2f 69 3e 2e 20 48 6f 77 65 76 65 72  tep</i>. However
3d00: 20 69 66 20 61 6e 20 4f 4e 20 43 4f 4e 46 4c 49   if an ON CONFLI
3d10: 43 54 20 63 6c 61 75 73 65 20 69 73 20 73 70 65  CT clause is spe
3d20: 63 69 66 69 65 64 20 61 73 20 70 61 72 74 20 6f  cified as part o
3d30: 66 20 0a 74 68 65 20 73 74 61 74 65 6d 65 6e 74  f .the statement
3d40: 20 63 61 75 73 69 6e 67 20 74 68 65 20 74 72 69   causing the tri
3d50: 67 67 65 72 20 74 6f 20 66 69 72 65 2c 20 74 68  gger to fire, th
3d60: 65 6e 20 74 68 69 73 20 63 6f 6e 66 6c 69 63 74  en this conflict
3d70: 20 68 61 6e 64 6c 69 6e 67 0a 70 6f 6c 69 63 79   handling.policy
3d80: 20 69 73 20 75 73 65 64 20 69 6e 73 74 65 61 64   is used instead
3d90: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 72 69 67 67 65  .</p>..<p>Trigge
3da0: 72 73 20 61 72 65 20 61 75 74 6f 6d 61 74 69 63  rs are automatic
3db0: 61 6c 6c 79 20 64 72 6f 70 70 65 64 20 77 68 65  ally dropped whe
3dc0: 6e 20 74 68 65 20 74 61 62 6c 65 20 74 68 61 74  n the table that
3dd0: 20 74 68 65 79 20 61 72 65 20 0a 61 73 73 6f 63   they are .assoc
3de0: 69 61 74 65 64 20 77 69 74 68 20 69 73 20 64 72  iated with is dr
3df0: 6f 70 70 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54  opped.</p>..<p>T
3e00: 72 69 67 67 65 72 73 20 6d 61 79 20 62 65 20 63  riggers may be c
3e10: 72 65 61 74 65 64 20 6f 6e 20 76 69 65 77 73 2c  reated on views,
3e20: 20 61 73 20 77 65 6c 6c 20 61 73 20 6f 72 64 69   as well as ordi
3e30: 6e 61 72 79 20 74 61 62 6c 65 73 2c 20 62 79 20  nary tables, by 
3e40: 73 70 65 63 69 66 79 69 6e 67 0a 49 4e 53 54 45  specifying.INSTE
3e50: 41 44 20 4f 46 20 69 6e 20 74 68 65 20 43 52 45  AD OF in the CRE
3e60: 41 54 45 20 54 52 49 47 47 45 52 20 73 74 61 74  ATE TRIGGER stat
3e70: 65 6d 65 6e 74 2e 20 49 66 20 6f 6e 65 20 6f 72  ement. If one or
3e80: 20 6d 6f 72 65 20 4f 4e 20 49 4e 53 45 52 54 2c   more ON INSERT,
3e90: 20 4f 4e 20 44 45 4c 45 54 45 0a 6f 72 20 4f 4e   ON DELETE.or ON
3ea0: 20 55 50 44 41 54 45 20 74 72 69 67 67 65 72 73   UPDATE triggers
3eb0: 20 61 72 65 20 64 65 66 69 6e 65 64 20 6f 6e 20   are defined on 
3ec0: 61 20 76 69 65 77 2c 20 74 68 65 6e 20 69 74 20  a view, then it 
3ed0: 69 73 20 6e 6f 74 20 61 6e 20 65 72 72 6f 72 20  is not an error 
3ee0: 74 6f 20 65 78 65 63 75 74 65 0a 61 6e 20 49 4e  to execute.an IN
3ef0: 53 45 52 54 2c 20 44 45 4c 45 54 45 20 6f 72 20  SERT, DELETE or 
3f00: 55 50 44 41 54 45 20 73 74 61 74 65 6d 65 6e 74  UPDATE statement
3f10: 20 6f 6e 20 74 68 65 20 76 69 65 77 2c 20 72 65   on the view, re
3f20: 73 70 65 63 74 69 76 65 6c 79 2e 20 54 68 65 72  spectively. Ther
3f30: 65 61 66 74 65 72 2c 0a 65 78 65 63 75 74 69 6e  eafter,.executin
3f40: 67 20 61 6e 20 49 4e 53 45 52 54 2c 20 44 45 4c  g an INSERT, DEL
3f50: 45 54 45 20 6f 72 20 55 50 44 41 54 45 20 6f 6e  ETE or UPDATE on
3f60: 20 74 68 65 20 76 69 65 77 20 63 61 75 73 65 73   the view causes
3f70: 20 74 68 65 20 61 73 73 6f 63 69 61 74 65 64 0a   the associated.
3f80: 20 20 74 72 69 67 67 65 72 73 20 74 6f 20 66 69    triggers to fi
3f90: 72 65 2e 20 54 68 65 20 72 65 61 6c 20 74 61 62  re. The real tab
3fa0: 6c 65 73 20 75 6e 64 65 72 6c 79 69 6e 67 20 74  les underlying t
3fb0: 68 65 20 76 69 65 77 20 61 72 65 20 6e 6f 74 20  he view are not 
3fc0: 6d 6f 64 69 66 69 65 64 0a 20 20 28 65 78 63 65  modified.  (exce
3fd0: 70 74 20 70 6f 73 73 69 62 6c 79 20 65 78 70 6c  pt possibly expl
3fe0: 69 63 69 74 6c 79 2c 20 62 79 20 61 20 74 72 69  icitly, by a tri
3ff0: 67 67 65 72 20 70 72 6f 67 72 61 6d 29 2e 3c 2f  gger program).</
4000: 70 3e 0a 0a 3c 70 3e 3c 62 3e 45 78 61 6d 70 6c  p>..<p><b>Exampl
4010: 65 3a 3c 2f 62 3e 3c 2f 70 3e 0a 0a 3c 70 3e 41  e:</b></p>..<p>A
4020: 73 73 75 6d 69 6e 67 20 74 68 61 74 20 63 75 73  ssuming that cus
4030: 74 6f 6d 65 72 20 72 65 63 6f 72 64 73 20 61 72  tomer records ar
4040: 65 20 73 74 6f 72 65 64 20 69 6e 20 74 68 65 20  e stored in the 
4050: 22 63 75 73 74 6f 6d 65 72 73 22 20 74 61 62 6c  "customers" tabl
4060: 65 2c 20 61 6e 64 0a 74 68 61 74 20 6f 72 64 65  e, and.that orde
4070: 72 20 72 65 63 6f 72 64 73 20 61 72 65 20 73 74  r records are st
4080: 6f 72 65 64 20 69 6e 20 74 68 65 20 22 6f 72 64  ored in the "ord
4090: 65 72 73 22 20 74 61 62 6c 65 2c 20 74 68 65 20  ers" table, the 
40a0: 66 6f 6c 6c 6f 77 69 6e 67 20 74 72 69 67 67 65  following trigge
40b0: 72 0a 65 6e 73 75 72 65 73 20 74 68 61 74 20 61  r.ensures that a
40c0: 6c 6c 20 61 73 73 6f 63 69 61 74 65 64 20 6f 72  ll associated or
40d0: 64 65 72 73 20 61 72 65 20 72 65 64 69 72 65 63  ders are redirec
40e0: 74 65 64 20 77 68 65 6e 20 61 20 63 75 73 74 6f  ted when a custo
40f0: 6d 65 72 20 63 68 61 6e 67 65 73 0a 68 69 73 20  mer changes.his 
4100: 6f 72 20 68 65 72 20 61 64 64 72 65 73 73 3a 3c  or her address:<
4110: 2f 70 3e 0a 7d 0a 45 78 61 6d 70 6c 65 20 7b 0a  /p>.}.Example {.
4120: 43 52 45 41 54 45 20 54 52 49 47 47 45 52 20 75  CREATE TRIGGER u
4130: 70 64 61 74 65 5f 63 75 73 74 6f 6d 65 72 5f 61  pdate_customer_a
4140: 64 64 72 65 73 73 20 55 50 44 41 54 45 20 4f 46  ddress UPDATE OF
4150: 20 61 64 64 72 65 73 73 20 4f 4e 20 63 75 73 74   address ON cust
4160: 6f 6d 65 72 73 20 0a 20 20 42 45 47 49 4e 0a 20  omers .  BEGIN. 
4170: 20 20 20 55 50 44 41 54 45 20 6f 72 64 65 72 73     UPDATE orders
4180: 20 53 45 54 20 61 64 64 72 65 73 73 20 3d 20 6e   SET address = n
4190: 65 77 2e 61 64 64 72 65 73 73 20 57 48 45 52 45  ew.address WHERE
41a0: 20 63 75 73 74 6f 6d 65 72 5f 6e 61 6d 65 20 3d   customer_name =
41b0: 20 6f 6c 64 2e 6e 61 6d 65 3b 0a 20 20 45 4e 44   old.name;.  END
41c0: 3b 0a 7d 0a 70 75 74 73 20 7b 0a 3c 70 3e 57 69  ;.}.puts {.<p>Wi
41d0: 74 68 20 74 68 69 73 20 74 72 69 67 67 65 72 20  th this trigger 
41e0: 69 6e 73 74 61 6c 6c 65 64 2c 20 65 78 65 63 75  installed, execu
41f0: 74 69 6e 67 20 74 68 65 20 73 74 61 74 65 6d 65  ting the stateme
4200: 6e 74 3a 3c 2f 70 3e 0a 7d 0a 45 78 61 6d 70 6c  nt:</p>.}.Exampl
4210: 65 20 7b 0a 55 50 44 41 54 45 20 63 75 73 74 6f  e {.UPDATE custo
4220: 6d 65 72 73 20 53 45 54 20 61 64 64 72 65 73 73  mers SET address
4230: 20 3d 20 27 31 20 4d 61 69 6e 20 53 74 2e 27 20   = '1 Main St.' 
4240: 57 48 45 52 45 20 6e 61 6d 65 20 3d 20 27 4a 61  WHERE name = 'Ja
4250: 63 6b 20 4a 6f 6e 65 73 27 3b 0a 7d 0a 70 75 74  ck Jones';.}.put
4260: 73 20 7b 0a 3c 70 3e 63 61 75 73 65 73 20 74 68  s {.<p>causes th
4270: 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 6f 20 62  e following to b
4280: 65 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20  e automatically 
4290: 65 78 65 63 75 74 65 64 3a 3c 2f 70 3e 0a 7d 0a  executed:</p>.}.
42a0: 45 78 61 6d 70 6c 65 20 7b 0a 55 50 44 41 54 45  Example {.UPDATE
42b0: 20 6f 72 64 65 72 73 20 53 45 54 20 61 64 64 72   orders SET addr
42c0: 65 73 73 20 3d 20 27 31 20 4d 61 69 6e 20 53 74  ess = '1 Main St
42d0: 2e 27 20 57 48 45 52 45 20 63 75 73 74 6f 6d 65  .' WHERE custome
42e0: 72 5f 6e 61 6d 65 20 3d 20 27 4a 61 63 6b 20 4a  r_name = 'Jack J
42f0: 6f 6e 65 73 27 3b 0a 7d 0a 0a 53 65 63 74 69 6f  ones';.}..Sectio
4300: 6e 20 7b 43 52 45 41 54 45 20 56 49 45 57 7d 20  n {CREATE VIEW} 
4310: 7b 63 72 65 61 74 65 76 69 65 77 7d 0a 0a 53 79  {createview}..Sy
4320: 6e 74 61 78 20 7b 73 71 6c 2d 63 6f 6d 6d 61 6e  ntax {sql-comman
4330: 64 7d 20 7b 0a 43 52 45 41 54 45 20 56 49 45 57  d} {.CREATE VIEW
4340: 20 3c 76 69 65 77 2d 6e 61 6d 65 3e 20 41 53 20   <view-name> AS 
4350: 3c 73 65 6c 65 63 74 2d 73 74 61 74 65 6d 65 6e  <select-statemen
4360: 74 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e  t>.}..puts {.<p>
4370: 54 68 65 20 43 52 45 41 54 45 20 56 49 45 57 20  The CREATE VIEW 
4380: 63 6f 6d 6d 61 6e 64 20 61 73 73 69 67 6e 73 20  command assigns 
4390: 61 20 6e 61 6d 65 20 74 6f 20 61 20 70 72 65 2d  a name to a pre-
43a0: 70 61 63 6b 61 67 65 64 20 53 45 4c 45 43 54 0a  packaged SELECT.
43b0: 73 74 61 74 65 6d 65 6e 74 2e 20 20 4f 6e 63 65  statement.  Once
43c0: 20 74 68 65 20 76 69 65 77 20 69 73 20 63 72 65   the view is cre
43d0: 61 74 65 64 2c 20 69 74 20 63 61 6e 20 62 65 20  ated, it can be 
43e0: 75 73 65 64 20 69 6e 20 74 68 65 20 46 52 4f 4d  used in the FROM
43f0: 20 63 6c 61 75 73 65 0a 6f 66 20 61 6e 6f 74 68   clause.of anoth
4400: 65 72 20 53 45 4c 45 43 54 20 69 6e 20 70 6c 61  er SELECT in pla
4410: 63 65 20 6f 66 20 61 20 74 61 62 6c 65 20 6e 61  ce of a table na
4420: 6d 65 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 59 6f 75  me..</p>..<p>You
4430: 20 63 61 6e 6e 6f 74 20 43 4f 50 59 2c 20 49 4e   cannot COPY, IN
4440: 53 45 52 54 20 6f 72 20 55 50 44 41 54 45 20 61  SERT or UPDATE a
4450: 20 76 69 65 77 2e 20 20 56 69 65 77 73 20 61 72   view.  Views ar
4460: 65 20 72 65 61 64 2d 6f 6e 6c 79 2e 3c 2f 70 3e  e read-only.</p>
4470: 0a 7d 0a 0a 53 65 63 74 69 6f 6e 20 44 45 4c 45  .}..Section DELE
4480: 54 45 20 64 65 6c 65 74 65 0a 0a 53 79 6e 74 61  TE delete..Synta
4490: 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74  x {sql-statement
44a0: 7d 20 7b 0a 44 45 4c 45 54 45 20 46 52 4f 4d 20  } {.DELETE FROM 
44b0: 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 20 5b 57 48  <table-name> [WH
44c0: 45 52 45 20 3c 65 78 70 72 3e 5d 0a 7d 0a 0a 70  ERE <expr>].}..p
44d0: 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20 44 45 4c  uts {.<p>The DEL
44e0: 45 54 45 20 63 6f 6d 6d 61 6e 64 20 69 73 20 75  ETE command is u
44f0: 73 65 64 20 74 6f 20 72 65 6d 6f 76 65 20 72 65  sed to remove re
4500: 63 6f 72 64 73 20 66 72 6f 6d 20 61 20 74 61 62  cords from a tab
4510: 6c 65 2e 0a 54 68 65 20 63 6f 6d 6d 61 6e 64 20  le..The command 
4520: 63 6f 6e 73 69 73 74 73 20 6f 66 20 74 68 65 20  consists of the 
4530: 22 44 45 4c 45 54 45 20 46 52 4f 4d 22 20 6b 65  "DELETE FROM" ke
4540: 79 77 6f 72 64 73 20 66 6f 6c 6c 6f 77 65 64 20  ywords followed 
4550: 62 79 0a 74 68 65 20 6e 61 6d 65 20 6f 66 20 74  by.the name of t
4560: 68 65 20 74 61 62 6c 65 20 66 72 6f 6d 20 77 68  he table from wh
4570: 69 63 68 20 72 65 63 6f 72 64 73 20 61 72 65 20  ich records are 
4580: 74 6f 20 62 65 20 72 65 6d 6f 76 65 64 2e 0a 3c  to be removed..<
4590: 2f 70 3e 0a 0a 3c 70 3e 57 69 74 68 6f 75 74 20  /p>..<p>Without 
45a0: 61 20 57 48 45 52 45 20 63 6c 61 75 73 65 2c 20  a WHERE clause, 
45b0: 61 6c 6c 20 72 6f 77 73 20 6f 66 20 74 68 65 20  all rows of the 
45c0: 74 61 62 6c 65 20 61 72 65 20 72 65 6d 6f 76 65  table are remove
45d0: 64 2e 0a 49 66 20 61 20 57 48 45 52 45 20 63 6c  d..If a WHERE cl
45e0: 61 75 73 65 20 69 73 20 73 75 70 70 6c 69 65 64  ause is supplied
45f0: 2c 20 74 68 65 6e 20 6f 6e 6c 79 20 74 68 6f 73  , then only thos
4600: 65 20 72 6f 77 73 20 74 68 61 74 20 6d 61 74 63  e rows that matc
4610: 68 0a 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e  h.the expression
4620: 20 61 72 65 20 72 65 6d 6f 76 65 64 2e 3c 2f 70   are removed.</p
4630: 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20 7b 44  >.}...Section {D
4640: 52 4f 50 20 49 4e 44 45 58 7d 20 64 72 6f 70 69  ROP INDEX} dropi
4650: 6e 64 65 78 0a 0a 53 79 6e 74 61 78 20 7b 73 71  ndex..Syntax {sq
4660: 6c 2d 63 6f 6d 6d 61 6e 64 7d 20 7b 0a 44 52 4f  l-command} {.DRO
4670: 50 20 49 4e 44 45 58 20 3c 69 6e 64 65 78 2d 6e  P INDEX <index-n
4680: 61 6d 65 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c  ame>.}..puts {.<
4690: 70 3e 54 68 65 20 44 52 4f 50 20 49 4e 44 45 58  p>The DROP INDEX
46a0: 20 73 74 61 74 65 6d 65 6e 74 20 63 6f 6e 73 69   statement consi
46b0: 73 74 73 20 6f 66 20 74 68 65 20 6b 65 79 77 6f  sts of the keywo
46c0: 72 64 73 20 22 44 52 4f 50 20 49 4e 44 45 58 22  rds "DROP INDEX"
46d0: 20 66 6f 6c 6c 6f 77 65 64 0a 62 79 20 74 68 65   followed.by the
46e0: 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 69 6e 64   name of the ind
46f0: 65 78 2e 20 20 54 68 65 20 69 6e 64 65 78 20 6e  ex.  The index n
4700: 61 6d 65 64 20 69 73 20 63 6f 6d 70 6c 65 74 65  amed is complete
4710: 6c 79 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d 0a  ly removed from.
4720: 74 68 65 20 64 69 73 6b 2e 20 20 54 68 65 20 6f  the disk.  The o
4730: 6e 6c 79 20 77 61 79 20 74 6f 20 72 65 63 6f 76  nly way to recov
4740: 65 72 20 74 68 65 20 69 6e 64 65 78 20 69 73 20  er the index is 
4750: 74 6f 20 72 65 65 6e 74 65 72 20 74 68 65 0a 61  to reenter the.a
4760: 70 70 72 6f 70 72 69 61 74 65 20 43 52 45 41 54  ppropriate CREAT
4770: 45 20 49 4e 44 45 58 20 63 6f 6d 6d 61 6e 64 2e  E INDEX command.
4780: 3c 2f 70 3e 0a 7d 0a 0a 53 65 63 74 69 6f 6e 20  </p>.}..Section 
4790: 7b 44 52 4f 50 20 54 41 42 4c 45 7d 20 64 72 6f  {DROP TABLE} dro
47a0: 70 74 61 62 6c 65 0a 0a 53 79 6e 74 61 78 20 7b  ptable..Syntax {
47b0: 73 71 6c 2d 63 6f 6d 6d 61 6e 64 7d 20 7b 0a 44  sql-command} {.D
47c0: 52 4f 50 20 54 41 42 4c 45 20 3c 74 61 62 6c 65  ROP TABLE <table
47d0: 2d 6e 61 6d 65 3e 0a 7d 0a 0a 53 65 63 74 69 6f  -name>.}..Sectio
47e0: 6e 20 7b 44 52 4f 50 20 54 52 49 47 47 45 52 7d  n {DROP TRIGGER}
47f0: 20 64 72 6f 70 74 72 69 67 67 65 72 0a 53 79 6e   droptrigger.Syn
4800: 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65  tax {sql-stateme
4810: 6e 74 7d 20 7b 0a 44 52 4f 50 20 54 52 49 47 47  nt} {.DROP TRIGG
4820: 45 52 20 3c 74 72 69 67 67 65 72 2d 6e 61 6d 65  ER <trigger-name
4830: 3e 0a 7d 0a 70 75 74 73 20 7b 20 0a 20 20 3c 70  >.}.puts { .  <p
4840: 3e 55 73 65 64 20 74 6f 20 64 72 6f 70 20 61 20  >Used to drop a 
4850: 74 72 69 67 67 65 72 20 66 72 6f 6d 20 74 68 65  trigger from the
4860: 20 64 61 74 61 62 61 73 65 20 73 63 68 65 6d 61   database schema
4870: 2e 20 4e 6f 74 65 20 74 68 61 74 20 74 72 69 67  . Note that trig
4880: 67 65 72 73 0a 20 20 61 72 65 20 61 75 74 6f 6d  gers.  are autom
4890: 61 74 69 63 61 6c 6c 79 20 64 72 6f 70 70 65 64  atically dropped
48a0: 20 77 68 65 6e 20 74 68 65 20 61 73 73 6f 63 69   when the associ
48b0: 61 74 65 64 20 74 61 62 6c 65 20 69 73 20 64 72  ated table is dr
48c0: 6f 70 70 65 64 2e 3c 2f 70 3e 0a 7d 0a 0a 70 75  opped.</p>.}..pu
48d0: 74 73 20 7b 0a 3c 70 3e 54 68 65 20 44 52 4f 50  ts {.<p>The DROP
48e0: 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74   TABLE statement
48f0: 20 63 6f 6e 73 69 73 74 73 20 6f 66 20 74 68 65   consists of the
4900: 20 6b 65 79 77 6f 72 64 73 20 22 44 52 4f 50 20   keywords "DROP 
4910: 54 41 42 4c 45 22 20 66 6f 6c 6c 6f 77 65 64 0a  TABLE" followed.
4920: 62 79 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74  by the name of t
4930: 68 65 20 74 61 62 6c 65 2e 20 20 54 68 65 20 74  he table.  The t
4940: 61 62 6c 65 20 6e 61 6d 65 64 20 69 73 20 63 6f  able named is co
4950: 6d 70 6c 65 74 65 6c 79 20 72 65 6d 6f 76 65 64  mpletely removed
4960: 20 66 72 6f 6d 0a 74 68 65 20 64 69 73 6b 2e 20   from.the disk. 
4970: 20 54 68 65 20 74 61 62 6c 65 20 63 61 6e 20 6e   The table can n
4980: 6f 74 20 62 65 20 72 65 63 6f 76 65 72 65 64 2e  ot be recovered.
4990: 20 20 41 6c 6c 20 69 6e 64 69 63 65 73 20 61 73    All indices as
49a0: 73 6f 63 69 61 74 65 64 20 77 69 74 68 0a 74 68  sociated with.th
49b0: 65 20 74 61 62 6c 65 20 61 72 65 20 61 6c 73 6f  e table are also
49c0: 20 64 65 6c 65 74 65 64 2e 3c 2f 70 3e 7d 0a 0a   deleted.</p>}..
49d0: 53 65 63 74 69 6f 6e 20 7b 44 52 4f 50 20 56 49  Section {DROP VI
49e0: 45 57 7d 20 64 72 6f 70 76 69 65 77 0a 0a 53 79  EW} dropview..Sy
49f0: 6e 74 61 78 20 7b 73 71 6c 2d 63 6f 6d 6d 61 6e  ntax {sql-comman
4a00: 64 7d 20 7b 0a 44 52 4f 50 20 56 49 45 57 20 3c  d} {.DROP VIEW <
4a10: 76 69 65 77 2d 6e 61 6d 65 3e 0a 7d 0a 0a 70 75  view-name>.}..pu
4a20: 74 73 20 7b 0a 3c 70 3e 54 68 65 20 44 52 4f 50  ts {.<p>The DROP
4a30: 20 56 49 45 57 20 73 74 61 74 65 6d 65 6e 74 20   VIEW statement 
4a40: 63 6f 6e 73 69 73 74 73 20 6f 66 20 74 68 65 20  consists of the 
4a50: 6b 65 79 77 6f 72 64 73 20 22 44 52 4f 50 20 54  keywords "DROP T
4a60: 41 42 4c 45 22 20 66 6f 6c 6c 6f 77 65 64 0a 62  ABLE" followed.b
4a70: 79 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68  y the name of th
4a80: 65 20 76 69 65 77 2e 20 20 54 68 65 20 76 69 65  e view.  The vie
4a90: 77 20 6e 61 6d 65 64 20 69 73 20 72 65 6d 6f 76  w named is remov
4aa0: 65 64 20 66 72 6f 6d 20 74 68 65 20 64 61 74 61  ed from the data
4ab0: 62 61 73 65 2e 0a 42 75 74 20 6e 6f 20 61 63 74  base..But no act
4ac0: 75 61 6c 20 64 61 74 61 20 69 73 20 6d 6f 64 69  ual data is modi
4ad0: 66 69 65 64 2e 3c 2f 70 3e 7d 0a 0a 53 65 63 74  fied.</p>}..Sect
4ae0: 69 6f 6e 20 45 58 50 4c 41 49 4e 20 65 78 70 6c  ion EXPLAIN expl
4af0: 61 69 6e 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c  ain..Syntax {sql
4b00: 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 45 58  -statement} {.EX
4b10: 50 4c 41 49 4e 20 3c 73 71 6c 2d 73 74 61 74 65  PLAIN <sql-state
4b20: 6d 65 6e 74 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a  ment>.}..puts {.
4b30: 3c 70 3e 54 68 65 20 45 58 50 4c 41 49 4e 20 63  <p>The EXPLAIN c
4b40: 6f 6d 6d 61 6e 64 20 6d 6f 64 69 66 69 65 72 20  ommand modifier 
4b50: 69 73 20 61 20 6e 6f 6e 2d 73 74 61 6e 64 61 72  is a non-standar
4b60: 64 20 65 78 74 65 6e 73 69 6f 6e 2e 20 20 54 68  d extension.  Th
4b70: 65 0a 69 64 65 61 20 63 6f 6d 65 73 20 66 72 6f  e.idea comes fro
4b80: 6d 20 61 20 73 69 6d 69 6c 61 72 20 63 6f 6d 6d  m a similar comm
4b90: 61 6e 64 20 66 6f 75 6e 64 20 69 6e 20 50 6f 73  and found in Pos
4ba0: 74 67 72 65 53 51 4c 2c 20 62 75 74 20 74 68 65  tgreSQL, but the
4bb0: 20 6f 70 65 72 61 74 69 6f 6e 0a 69 73 20 63 6f   operation.is co
4bc0: 6d 70 6c 65 74 65 6c 79 20 64 69 66 66 65 72 65  mpletely differe
4bd0: 6e 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 74  nt.</p>..<p>If t
4be0: 68 65 20 45 58 50 4c 41 49 4e 20 6b 65 79 77 6f  he EXPLAIN keywo
4bf0: 72 64 20 61 70 70 65 61 72 73 20 62 65 66 6f 72  rd appears befor
4c00: 65 20 61 6e 79 20 6f 74 68 65 72 20 53 51 4c 69  e any other SQLi
4c10: 74 65 20 53 51 4c 20 63 6f 6d 6d 61 6e 64 0a 74  te SQL command.t
4c20: 68 65 6e 20 69 6e 73 74 65 61 64 20 6f 66 20 61  hen instead of a
4c30: 63 74 75 61 6c 6c 79 20 65 78 65 63 75 74 69 6e  ctually executin
4c40: 67 20 74 68 65 20 63 6f 6d 6d 61 6e 64 2c 20 74  g the command, t
4c50: 68 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72  he SQLite librar
4c60: 79 20 77 69 6c 6c 0a 72 65 70 6f 72 74 20 62 61  y will.report ba
4c70: 63 6b 20 74 68 65 20 73 65 71 75 65 6e 63 65 20  ck the sequence 
4c80: 6f 66 20 76 69 72 74 75 61 6c 20 6d 61 63 68 69  of virtual machi
4c90: 6e 65 20 69 6e 73 74 72 75 63 74 69 6f 6e 73 20  ne instructions 
4ca0: 69 74 20 77 6f 75 6c 64 20 68 61 76 65 0a 75 73  it would have.us
4cb0: 65 64 20 74 6f 20 65 78 65 63 75 74 65 20 74 68  ed to execute th
4cc0: 65 20 63 6f 6d 6d 61 6e 64 20 68 61 64 20 74 68  e command had th
4cd0: 65 20 45 58 50 4c 41 49 4e 20 6b 65 79 77 6f 72  e EXPLAIN keywor
4ce0: 64 20 6e 6f 74 20 62 65 65 6e 20 70 72 65 73 65  d not been prese
4cf0: 6e 74 2e 0a 46 6f 72 20 61 64 64 69 74 69 6f 6e  nt..For addition
4d00: 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61  al information a
4d10: 62 6f 75 74 20 76 69 72 74 75 61 6c 20 6d 61 63  bout virtual mac
4d20: 68 69 6e 65 20 69 6e 73 74 72 75 63 74 69 6f 6e  hine instruction
4d30: 73 20 73 65 65 0a 74 68 65 20 3c 61 20 68 72 65  s see.the <a hre
4d40: 66 3d 22 61 72 63 68 2e 68 74 6d 6c 22 3e 61 72  f="arch.html">ar
4d50: 63 68 69 74 65 63 74 75 72 65 20 64 65 73 63 72  chitecture descr
4d60: 69 70 74 69 6f 6e 3c 2f 61 3e 20 6f 72 20 74 68  iption</a> or th
4d70: 65 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 0a  e documentation.
4d80: 6f 6e 20 3c 61 20 68 72 65 66 3d 22 6f 70 63 6f  on <a href="opco
4d90: 64 65 2e 68 74 6d 6c 22 3e 61 76 61 69 6c 61 62  de.html">availab
4da0: 6c 65 20 6f 70 63 6f 64 65 73 3c 2f 61 3e 20 66  le opcodes</a> f
4db0: 6f 72 20 74 68 65 20 76 69 72 74 75 61 6c 20 6d  or the virtual m
4dc0: 61 63 68 69 6e 65 2e 3c 2f 70 3e 0a 7d 0a 0a 53  achine.</p>.}..S
4dd0: 65 63 74 69 6f 6e 20 65 78 70 72 65 73 73 69 6f  ection expressio
4de0: 6e 20 65 78 70 72 0a 0a 53 79 6e 74 61 78 20 7b  n expr..Syntax {
4df0: 65 78 70 72 7d 20 7b 0a 3c 65 78 70 72 3e 20 3c  expr} {.<expr> <
4e00: 62 69 6e 61 72 79 2d 6f 70 3e 20 3c 65 78 70 72  binary-op> <expr
4e10: 3e 20 7c 0a 3c 65 78 70 72 3e 20 3c 6c 69 6b 65  > |.<expr> <like
4e20: 2d 6f 70 3e 20 3c 65 78 70 72 3e 20 7c 0a 3c 75  -op> <expr> |.<u
4e30: 6e 61 72 79 2d 6f 70 3e 20 3c 65 78 70 72 3e 20  nary-op> <expr> 
4e40: 7c 0a 28 20 3c 65 78 70 72 3e 20 29 20 7c 0a 3c  |.( <expr> ) |.<
4e50: 63 6f 6c 75 6d 6e 2d 6e 61 6d 65 3e 20 7c 0a 3c  column-name> |.<
4e60: 74 61 62 6c 65 2d 6e 61 6d 65 3e 20 2e 20 3c 63  table-name> . <c
4e70: 6f 6c 75 6d 6e 2d 6e 61 6d 65 3e 20 7c 0a 3c 6c  olumn-name> |.<l
4e80: 69 74 65 72 61 6c 2d 76 61 6c 75 65 3e 20 7c 0a  iteral-value> |.
4e90: 3c 66 75 6e 63 74 69 6f 6e 2d 6e 61 6d 65 3e 20  <function-name> 
4ea0: 28 20 3c 65 78 70 72 2d 6c 69 73 74 3e 20 7c 20  ( <expr-list> | 
4eb0: 53 54 41 52 20 29 20 7c 0a 3c 65 78 70 72 3e 20  STAR ) |.<expr> 
4ec0: 49 53 4e 55 4c 4c 20 7c 0a 3c 65 78 70 72 3e 20  ISNULL |.<expr> 
4ed0: 4e 4f 54 4e 55 4c 4c 20 7c 0a 3c 65 78 70 72 3e  NOTNULL |.<expr>
4ee0: 20 5b 4e 4f 54 5d 20 42 45 54 57 45 45 4e 20 3c   [NOT] BETWEEN <
4ef0: 65 78 70 72 3e 20 41 4e 44 20 3c 65 78 70 72 3e  expr> AND <expr>
4f00: 20 7c 0a 3c 65 78 70 72 3e 20 5b 4e 4f 54 5d 20   |.<expr> [NOT] 
4f10: 49 4e 20 28 20 3c 76 61 6c 75 65 2d 6c 69 73 74  IN ( <value-list
4f20: 3e 20 29 20 7c 0a 3c 65 78 70 72 3e 20 5b 4e 4f  > ) |.<expr> [NO
4f30: 54 5d 20 49 4e 20 28 20 3c 73 65 6c 65 63 74 2d  T] IN ( <select-
4f40: 73 74 61 74 65 6d 65 6e 74 3e 20 29 20 7c 0a 28  statement> ) |.(
4f50: 20 3c 73 65 6c 65 63 74 2d 73 74 61 74 65 6d 65   <select-stateme
4f60: 6e 74 3e 20 29 20 7c 0a 43 41 53 45 20 5b 3c 65  nt> ) |.CASE [<e
4f70: 78 70 72 3e 5d 20 28 20 57 48 45 4e 20 3c 65 78  xpr>] ( WHEN <ex
4f80: 70 72 3e 20 54 48 45 4e 20 3c 65 78 70 72 3e 20  pr> THEN <expr> 
4f90: 29 2b 20 5b 45 4c 53 45 20 3c 65 78 70 72 3e 5d  )+ [ELSE <expr>]
4fa0: 20 45 4e 44 0a 7d 20 7b 6c 69 6b 65 2d 6f 70 7d   END.} {like-op}
4fb0: 20 7b 0a 4c 49 4b 45 20 7c 20 47 4c 4f 42 20 7c   {.LIKE | GLOB |
4fc0: 20 4e 4f 54 20 4c 49 4b 45 20 7c 20 4e 4f 54 20   NOT LIKE | NOT 
4fd0: 47 4c 4f 42 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c  GLOB.}..puts {.<
4fe0: 70 3e 54 68 69 73 20 73 65 63 74 69 6f 6e 20 69  p>This section i
4ff0: 73 20 64 69 66 66 65 72 65 6e 74 20 66 72 6f 6d  s different from
5000: 20 74 68 65 20 6f 74 68 65 72 73 2e 20 20 4d 6f   the others.  Mo
5010: 73 74 20 6f 74 68 65 72 20 73 65 63 74 69 6f 6e  st other section
5020: 73 20 6f 66 0a 74 68 69 73 20 64 6f 63 75 6d 65  s of.this docume
5030: 6e 74 20 74 61 6c 6b 73 20 61 62 6f 75 74 20 61  nt talks about a
5040: 20 70 61 72 74 69 63 75 6c 61 72 20 53 51 4c 20   particular SQL 
5050: 63 6f 6d 6d 61 6e 64 2e 20 20 54 68 69 73 20 73  command.  This s
5060: 65 63 74 69 6f 6e 20 64 6f 65 73 0a 6e 6f 74 20  ection does.not 
5070: 74 61 6c 6b 20 61 62 6f 75 74 20 61 20 73 74 61  talk about a sta
5080: 6e 64 61 6c 6f 6e 65 20 63 6f 6d 6d 61 6e 64 20  ndalone command 
5090: 62 75 74 20 61 62 6f 75 74 20 22 65 78 70 72 65  but about "expre
50a0: 73 73 69 6f 6e 73 22 20 77 68 69 63 68 20 61 72  ssions" which ar
50b0: 65 20 0a 73 75 62 63 6f 6d 70 6f 6e 65 6e 74 20  e .subcomponent 
50c0: 6f 66 20 6d 6f 73 74 20 6f 74 68 65 72 20 63 6f  of most other co
50d0: 6d 6d 61 6e 64 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e  mmands.</p>..<p>
50e0: 53 51 4c 69 74 65 20 75 6e 64 65 72 73 74 61 6e  SQLite understan
50f0: 64 73 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  ds the following
5100: 20 62 69 6e 61 72 79 20 6f 70 65 72 61 74 6f 72   binary operator
5110: 73 2c 20 69 6e 20 6f 72 64 65 72 20 66 72 6f 6d  s, in order from
5120: 0a 68 69 67 68 65 73 74 20 74 6f 20 6c 6f 77 65  .highest to lowe
5130: 73 74 20 70 72 65 63 65 64 65 6e 63 65 3a 3c 2f  st precedence:</
5140: 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e  p>..<blockquote>
5150: 3c 70 72 65 3e 0a 3c 66 6f 6e 74 20 63 6f 6c 6f  <pre>.<font colo
5160: 72 3d 22 23 32 63 32 63 66 30 22 3e 3c 62 69 67  r="#2c2cf0"><big
5170: 3e 2a 20 20 20 20 2f 20 20 20 20 25 0a 2b 20 20  >*    /    %.+  
5180: 20 20 2d 0a 26 6c 74 3b 26 6c 74 3b 20 20 20 26    -.&lt;&lt;   &
5190: 67 74 3b 26 67 74 3b 20 20 20 26 61 6d 70 3b 20  gt;&gt;   &amp; 
51a0: 20 20 20 7c 0a 26 6c 74 3b 20 20 20 20 26 6c 74     |.&lt;    &lt
51b0: 3b 3d 20 20 20 26 67 74 3b 20 20 20 20 26 67 74  ;=   &gt;    &gt
51c0: 3b 3d 0a 3d 20 20 20 20 3d 3d 20 20 20 21 3d 20  ;=.=    ==   != 
51d0: 20 20 26 6c 74 3b 26 67 74 3b 20 20 20 3c 2f 62    &lt;&gt;   </b
51e0: 69 67 3e 49 4e 0a 41 4e 44 0a 4f 52 3c 2f 66 6f  ig>IN.AND.OR</fo
51f0: 6e 74 3e 0a 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63  nt>.</pre></bloc
5200: 6b 71 75 6f 74 65 3e 0a 0a 3c 70 3e 53 75 70 70  kquote>..<p>Supp
5210: 6f 72 74 65 64 20 75 6e 61 72 79 20 6f 70 65 72  orted unary oper
5220: 61 74 65 72 73 20 61 72 65 20 74 68 65 73 65 3a  aters are these:
5230: 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74  </p>..<blockquot
5240: 65 3e 3c 70 72 65 3e 0a 3c 66 6f 6e 74 20 63 6f  e><pre>.<font co
5250: 6c 6f 72 3d 22 23 32 63 32 63 66 30 22 3e 3c 62  lor="#2c2cf0"><b
5260: 69 67 3e 2d 20 20 20 20 2b 20 20 20 20 21 20 20  ig>-    +    !  
5270: 20 20 7e 3c 2f 62 69 67 3e 3c 2f 66 6f 6e 74 3e    ~</big></font>
5280: 0a 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75  .</pre></blockqu
5290: 6f 74 65 3e 0a 0a 3c 70 3e 41 6e 79 20 53 51 4c  ote>..<p>Any SQL
52a0: 69 74 65 20 76 61 6c 75 65 20 63 61 6e 20 62 65  ite value can be
52b0: 20 75 73 65 64 20 61 73 20 70 61 72 74 20 6f 66   used as part of
52c0: 20 61 6e 20 65 78 70 72 65 73 73 69 6f 6e 2e 20   an expression. 
52d0: 20 0a 46 6f 72 20 61 72 69 74 68 6d 65 74 69 63   .For arithmetic
52e0: 20 6f 70 65 72 61 74 69 6f 6e 73 2c 20 69 6e 74   operations, int
52f0: 65 67 65 72 73 20 61 72 65 20 74 72 65 61 74 65  egers are treate
5300: 64 20 61 73 20 69 6e 74 65 67 65 72 73 2e 0a 53  d as integers..S
5310: 74 72 69 6e 67 73 20 61 72 65 20 66 69 72 73 74  trings are first
5320: 20 63 6f 6e 76 65 72 74 65 64 20 74 6f 20 72 65   converted to re
5330: 61 6c 20 6e 75 6d 62 65 72 73 20 75 73 69 6e 67  al numbers using
5340: 20 3c 62 3e 61 74 6f 66 28 29 3c 2f 62 3e 2e 0a   <b>atof()</b>..
5350: 46 6f 72 20 63 6f 6d 70 61 72 69 73 6f 6e 20 6f  For comparison o
5360: 70 65 72 61 74 6f 72 73 2c 20 6e 75 6d 62 65 72  perators, number
5370: 73 20 63 6f 6d 70 61 72 65 20 61 73 20 6e 75 6d  s compare as num
5380: 62 65 72 73 20 61 6e 64 20 73 74 72 69 6e 67 73  bers and strings
5390: 0a 63 6f 6d 70 61 72 65 20 61 73 20 73 74 72 69  .compare as stri
53a0: 6e 67 73 2e 20 20 46 6f 72 20 73 74 72 69 6e 67  ngs.  For string
53b0: 20 63 6f 6d 70 61 72 69 73 6f 6e 73 2c 20 63 61   comparisons, ca
53c0: 73 65 20 69 73 20 73 69 67 6e 69 66 69 63 61 6e  se is significan
53d0: 74 0a 62 75 74 20 69 73 20 6f 6e 6c 79 20 75 73  t.but is only us
53e0: 65 64 20 74 6f 20 62 72 65 61 6b 20 61 20 74 69  ed to break a ti
53f0: 65 2e 0a 4e 6f 74 65 20 74 68 61 74 20 74 68 65  e..Note that the
5400: 72 65 20 61 72 65 20 74 77 6f 20 76 61 72 69 61  re are two varia
5410: 74 69 6f 6e 73 20 6f 66 20 74 68 65 20 65 71 75  tions of the equ
5420: 61 6c 73 20 61 6e 64 20 6e 6f 74 20 65 71 75 61  als and not equa
5430: 6c 73 0a 6f 70 65 72 61 74 6f 72 73 2e 20 20 45  ls.operators.  E
5440: 71 75 61 6c 73 20 63 61 6e 20 62 65 20 65 69 74  quals can be eit
5450: 68 65 72 7d 0a 70 75 74 73 20 22 5b 4f 70 65 72  her}.puts "[Oper
5460: 61 74 6f 72 20 3d 5d 20 6f 72 20 5b 4f 70 65 72  ator =] or [Oper
5470: 61 74 6f 72 20 3d 3d 5d 2e 0a 54 68 65 20 6e 6f  ator ==]..The no
5480: 6e 2d 65 71 75 61 6c 73 20 6f 70 65 72 61 74 6f  n-equals operato
5490: 72 20 63 61 6e 20 62 65 20 65 69 74 68 65 72 0a  r can be either.
54a0: 5b 4f 70 65 72 61 74 6f 72 20 21 3d 5d 20 6f 72  [Operator !=] or
54b0: 20 5b 4f 70 65 72 61 74 6f 72 20 7b 26 6c 74 3b   [Operator {&lt;
54c0: 26 67 74 3b 7d 5d 2e 3c 2f 70 3e 22 0a 70 75 74  &gt;}].</p>".put
54d0: 73 20 7b 0a 0a 3c 70 3e 54 68 65 20 4c 49 4b 45  s {..<p>The LIKE
54e0: 20 6f 70 65 72 61 74 6f 72 20 64 6f 65 73 20 61   operator does a
54f0: 20 77 69 6c 64 63 61 72 64 20 63 6f 6d 70 61 72   wildcard compar
5500: 69 73 69 6f 6e 2e 20 20 54 68 65 20 6f 70 65 72  ision.  The oper
5510: 61 6e 64 0a 74 6f 20 74 68 65 20 72 69 67 68 74  and.to the right
5520: 20 63 6f 6e 74 61 69 6e 73 20 74 68 65 20 77 69   contains the wi
5530: 6c 64 63 61 72 64 73 2e 7d 0a 70 75 74 73 20 22  ldcards.}.puts "
5540: 41 20 70 65 72 63 65 6e 74 20 73 79 6d 62 6f 6c  A percent symbol
5550: 20 5b 4f 70 65 72 61 74 6f 72 20 25 5d 20 69 6e   [Operator %] in
5560: 20 74 68 65 20 72 69 67 68 74 20 6f 70 65 72 61   the right opera
5570: 6e 64 0a 6d 61 74 63 68 65 73 20 61 6e 79 20 73  nd.matches any s
5580: 65 71 75 65 6e 63 65 20 6f 66 20 7a 65 72 6f 20  equence of zero 
5590: 6f 72 20 6d 6f 72 65 20 63 68 61 72 61 63 74 65  or more characte
55a0: 72 73 20 6f 6e 20 74 68 65 20 6c 65 66 74 2e 0a  rs on the left..
55b0: 41 6e 20 75 6e 64 65 72 73 63 6f 72 65 20 5b 4f  An underscore [O
55c0: 70 65 72 61 74 6f 72 20 5f 5d 20 6f 6e 20 74 68  perator _] on th
55d0: 65 20 72 69 67 68 74 0a 6d 61 74 63 68 65 73 20  e right.matches 
55e0: 61 6e 79 20 73 69 6e 67 6c 65 20 63 68 61 72 61  any single chara
55f0: 63 74 65 72 20 6f 6e 20 74 68 65 20 6c 65 66 74  cter on the left
5600: 2e 22 0a 70 75 74 73 20 7b 54 68 65 20 4c 49 4b  .".puts {The LIK
5610: 45 20 6f 70 65 72 61 74 6f 72 20 69 73 0a 6e 6f  E operator is.no
5620: 74 20 63 61 73 65 20 73 65 6e 73 69 74 69 76 65  t case sensitive
5630: 20 61 6e 64 20 77 69 6c 6c 20 6d 61 74 63 68 20   and will match 
5640: 75 70 70 65 72 20 63 61 73 65 20 63 68 61 72 61  upper case chara
5650: 63 74 65 72 73 20 6f 6e 20 6f 6e 65 0a 73 69 64  cters on one.sid
5660: 65 20 61 67 61 69 6e 73 74 20 6c 6f 77 65 72 20  e against lower 
5670: 63 61 73 65 20 63 68 61 72 61 63 74 65 72 73 20  case characters 
5680: 6f 6e 20 74 68 65 20 6f 74 68 65 72 2e 0a 28 41  on the other..(A
5690: 20 62 75 67 3a 20 53 51 4c 69 74 65 20 6f 6e 6c   bug: SQLite onl
56a0: 79 20 75 6e 64 65 72 73 74 61 6e 64 73 20 75 70  y understands up
56b0: 70 65 72 2f 6c 6f 77 65 72 20 63 61 73 65 20 66  per/lower case f
56c0: 6f 72 20 37 2d 62 69 74 20 4c 61 74 69 6e 0a 63  or 7-bit Latin.c
56d0: 68 61 72 61 63 74 65 72 73 2e 20 20 48 65 6e 63  haracters.  Henc
56e0: 65 20 74 68 65 20 4c 49 4b 45 20 6f 70 65 72 61  e the LIKE opera
56f0: 74 6f 72 20 69 73 20 63 61 73 65 20 73 65 6e 73  tor is case sens
5700: 69 74 69 76 65 20 66 6f 72 0a 38 2d 62 69 74 20  itive for.8-bit 
5710: 69 73 6f 38 38 35 39 20 63 68 61 72 61 63 74 65  iso8859 characte
5720: 72 73 20 6f 72 20 55 54 46 2d 38 20 63 68 61 72  rs or UTF-8 char
5730: 61 63 74 65 72 73 2e 20 20 46 6f 72 20 65 78 61  acters.  For exa
5740: 6d 70 6c 65 2c 0a 74 68 65 20 65 78 70 72 65 73  mple,.the expres
5750: 73 69 6f 6e 20 3c 62 3e 27 61 27 26 6e 62 73 70  sion <b>'a'&nbsp
5760: 3b 4c 49 4b 45 26 6e 62 73 70 3b 27 41 27 3c 2f  ;LIKE&nbsp;'A'</
5770: 62 3e 20 69 73 20 54 52 55 45 20 62 75 74 0a 3c  b> is TRUE but.<
5780: 62 3e 27 26 61 65 6c 69 67 3b 27 26 6e 62 73 70  b>'&aelig;'&nbsp
5790: 3b 4c 49 4b 45 26 6e 62 73 70 3b 27 26 41 45 6c  ;LIKE&nbsp;'&AEl
57a0: 69 67 3b 27 3c 2f 62 3e 20 69 73 20 46 41 4c 53  ig;'</b> is FALS
57b0: 45 2e 29 0a 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  E.).</p>..<p>The
57c0: 20 47 4c 4f 42 20 6f 70 65 72 61 74 6f 72 20 69   GLOB operator i
57d0: 73 20 73 69 6d 69 6c 61 72 20 74 6f 20 4c 49 4b  s similar to LIK
57e0: 45 20 62 75 74 20 75 73 65 73 20 74 68 65 20 55  E but uses the U
57f0: 6e 69 78 0a 66 69 6c 65 20 67 6c 6f 62 62 69 6e  nix.file globbin
5800: 67 20 73 79 6e 74 61 78 20 66 6f 72 20 69 74 73  g syntax for its
5810: 20 77 69 6c 64 63 61 72 64 73 2e 20 20 41 6c 73   wildcards.  Als
5820: 6f 2c 20 47 4c 4f 42 20 69 73 20 63 61 73 65 0a  o, GLOB is case.
5830: 73 65 6e 73 69 74 69 76 65 2c 20 75 6e 6c 69 6b  sensitive, unlik
5840: 65 20 4c 49 4b 45 2e 20 20 42 6f 74 68 20 47 4c  e LIKE.  Both GL
5850: 4f 42 20 61 6e 64 20 4c 49 4b 45 20 6d 61 79 20  OB and LIKE may 
5860: 62 65 20 70 72 65 63 65 64 65 64 20 62 79 0a 74  be preceded by.t
5870: 68 65 20 4e 4f 54 20 6b 65 79 77 6f 72 64 20 74  he NOT keyword t
5880: 6f 20 69 6e 76 65 72 74 20 74 68 65 20 73 65 6e  o invert the sen
5890: 73 65 20 6f 66 20 74 68 65 20 74 65 73 74 2e 3c  se of the test.<
58a0: 2f 70 3e 0a 0a 3c 70 3e 41 20 63 6f 6c 75 6d 6e  /p>..<p>A column
58b0: 20 6e 61 6d 65 20 63 61 6e 20 62 65 20 61 6e 79   name can be any
58c0: 20 6f 66 20 74 68 65 20 6e 61 6d 65 73 20 64 65   of the names de
58d0: 66 69 6e 65 64 20 69 6e 20 74 68 65 20 43 52 45  fined in the CRE
58e0: 41 54 45 20 54 41 42 4c 45 0a 73 74 61 74 65 6d  ATE TABLE.statem
58f0: 65 6e 74 20 6f 72 20 6f 6e 65 20 6f 66 20 74 68  ent or one of th
5900: 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 73 70 65 63  e following spec
5910: 69 61 6c 20 69 64 65 6e 74 69 66 69 65 72 73 3a  ial identifiers:
5920: 20 22 3c 62 3e 52 4f 57 49 44 3c 2f 62 3e 22 2c   "<b>ROWID</b>",
5930: 0a 22 3c 62 3e 4f 49 44 3c 2f 62 3e 22 2c 20 6f  ."<b>OID</b>", o
5940: 72 20 22 3c 62 3e 5f 52 4f 57 49 44 5f 3c 2f 62  r "<b>_ROWID_</b
5950: 3e 22 2e 0a 54 68 65 73 65 20 73 70 65 63 69 61  >"..These specia
5960: 6c 20 69 64 65 6e 74 69 66 69 65 72 73 20 61 6c  l identifiers al
5970: 6c 20 64 65 73 63 72 69 62 65 20 74 68 65 0a 75  l describe the.u
5980: 6e 69 71 75 65 20 72 61 6e 64 6f 6d 20 69 6e 74  nique random int
5990: 65 67 65 72 20 6b 65 79 20 28 74 68 65 20 22 72  eger key (the "r
59a0: 6f 77 20 6b 65 79 22 29 20 61 73 73 6f 63 69 61  ow key") associa
59b0: 74 65 64 20 77 69 74 68 20 65 76 65 72 79 20 0a  ted with every .
59c0: 72 6f 77 20 6f 66 20 65 76 65 72 79 20 74 61 62  row of every tab
59d0: 6c 65 2e 0a 54 68 65 20 73 70 65 63 69 61 6c 20  le..The special 
59e0: 69 64 65 6e 74 69 66 69 65 72 73 20 6f 6e 6c 79  identifiers only
59f0: 20 72 65 66 65 72 20 74 6f 20 74 68 65 20 72 6f   refer to the ro
5a00: 77 20 6b 65 79 20 69 66 20 74 68 65 20 43 52 45  w key if the CRE
5a10: 41 54 45 20 54 41 42 4c 45 0a 73 74 61 74 65 6d  ATE TABLE.statem
5a20: 65 6e 74 20 64 6f 65 73 20 6e 6f 74 20 64 65 66  ent does not def
5a30: 69 6e 65 20 61 20 72 65 61 6c 20 63 6f 6c 75 6d  ine a real colum
5a40: 6e 20 77 69 74 68 20 74 68 65 20 73 61 6d 65 20  n with the same 
5a50: 6e 61 6d 65 2e 20 20 52 6f 77 20 6b 65 79 73 0a  name.  Row keys.
5a60: 61 63 74 20 6c 69 6b 65 20 72 65 61 64 2d 6f 6e  act like read-on
5a70: 6c 79 20 63 6f 6c 75 6d 6e 73 2e 20 20 41 20 72  ly columns.  A r
5a80: 6f 77 20 6b 65 79 20 63 61 6e 20 62 65 20 75 73  ow key can be us
5a90: 65 64 20 61 6e 79 77 68 65 72 65 20 61 20 72 65  ed anywhere a re
5aa0: 67 75 6c 61 72 0a 63 6f 6c 75 6d 6e 20 63 61 6e  gular.column can
5ab0: 20 62 65 20 75 73 65 64 2c 20 65 78 63 65 70 74   be used, except
5ac0: 20 74 68 61 74 20 79 6f 75 20 63 61 6e 6e 6f 74   that you cannot
5ad0: 20 63 68 61 6e 67 65 20 74 68 65 20 76 61 6c 75   change the valu
5ae0: 65 0a 6f 66 20 61 20 72 6f 77 20 6b 65 79 20 69  e.of a row key i
5af0: 6e 20 61 6e 20 55 50 44 41 54 45 20 6f 72 20 49  n an UPDATE or I
5b00: 4e 53 45 52 54 20 73 74 61 74 65 6d 65 6e 74 2e  NSERT statement.
5b10: 0a 22 53 45 4c 45 43 54 20 2a 20 2e 2e 2e 22 20  ."SELECT * ..." 
5b20: 64 6f 65 73 20 6e 6f 74 20 72 65 74 75 72 6e 20  does not return 
5b30: 74 68 65 20 72 6f 77 20 6b 65 79 2e 3c 2f 70 3e  the row key.</p>
5b40: 0a 0a 3c 70 3e 53 45 4c 45 43 54 20 73 74 61 74  ..<p>SELECT stat
5b50: 65 6d 65 6e 74 73 20 63 61 6e 20 61 70 70 65 61  ements can appea
5b60: 72 20 69 6e 20 65 78 70 72 65 73 73 69 6f 6e 73  r in expressions
5b70: 20 61 73 20 65 69 74 68 65 72 20 74 68 65 0a 72   as either the.r
5b80: 69 67 68 74 2d 68 61 6e 64 20 6f 70 65 72 61 6e  ight-hand operan
5b90: 64 20 6f 66 20 74 68 65 20 49 4e 20 6f 70 65 72  d of the IN oper
5ba0: 61 74 6f 72 20 6f 72 20 61 73 20 61 20 73 63 61  ator or as a sca
5bb0: 6c 61 72 20 71 75 61 6e 74 69 74 79 2e 0a 49 6e  lar quantity..In
5bc0: 20 62 6f 74 68 20 63 61 73 65 73 2c 20 74 68 65   both cases, the
5bd0: 20 53 45 4c 45 43 54 20 73 68 6f 75 6c 64 20 68   SELECT should h
5be0: 61 76 65 20 6f 6e 6c 79 20 61 20 73 69 6e 67 6c  ave only a singl
5bf0: 65 20 63 6f 6c 75 6d 6e 20 69 6e 20 69 74 73 0a  e column in its.
5c00: 72 65 73 75 6c 74 2e 20 20 43 6f 6d 70 6f 75 6e  result.  Compoun
5c10: 64 20 53 45 4c 45 43 54 73 20 28 63 6f 6e 6e 65  d SELECTs (conne
5c20: 63 74 65 64 20 77 69 74 68 20 6b 65 79 77 6f 72  cted with keywor
5c30: 64 73 20 6c 69 6b 65 20 55 4e 49 4f 4e 20 6f 72  ds like UNION or
5c40: 0a 45 58 43 45 50 54 29 20 61 72 65 20 61 6c 6c  .EXCEPT) are all
5c50: 6f 77 65 64 2e 20 20 41 6e 79 20 4f 52 44 45 52  owed.  Any ORDER
5c60: 20 42 59 20 63 6c 61 75 73 65 20 6f 6e 20 74 68   BY clause on th
5c70: 65 20 73 65 6c 65 63 74 20 69 73 20 69 67 6e 6f  e select is igno
5c80: 72 65 64 2e 0a 41 20 53 45 4c 45 43 54 20 69 6e  red..A SELECT in
5c90: 20 61 6e 20 65 78 70 72 65 73 73 69 6f 6e 20 69   an expression i
5ca0: 73 20 65 76 61 6c 75 61 74 65 64 20 6f 6e 63 65  s evaluated once
5cb0: 20 62 65 66 6f 72 65 20 61 6e 79 20 6f 74 68 65   before any othe
5cc0: 72 20 70 72 6f 63 65 73 73 69 6e 67 0a 69 73 20  r processing.is 
5cd0: 70 65 72 66 6f 72 6d 65 64 2c 20 73 6f 20 6e 6f  performed, so no
5ce0: 6e 65 20 6f 66 20 74 68 65 20 65 78 70 72 65 73  ne of the expres
5cf0: 73 69 6f 6e 73 20 77 69 74 68 69 6e 20 74 68 65  sions within the
5d00: 20 73 65 6c 65 63 74 20 69 74 73 65 6c 66 20 63   select itself c
5d10: 61 6e 0a 72 65 66 65 72 20 74 6f 20 71 75 61 6e  an.refer to quan
5d20: 74 69 74 69 65 73 20 69 6e 20 74 68 65 20 63 6f  tities in the co
5d30: 6e 74 61 69 6e 69 6e 67 20 65 78 70 72 65 73 73  ntaining express
5d40: 69 6f 6e 2e 3c 2f 70 3e 0a 0a 3c 70 3e 57 68 65  ion.</p>..<p>Whe
5d50: 6e 20 61 20 53 45 4c 45 43 54 20 69 73 20 74 68  n a SELECT is th
5d60: 65 20 72 69 67 68 74 20 6f 70 65 72 61 6e 64 20  e right operand 
5d70: 6f 66 20 74 68 65 20 49 4e 20 6f 70 65 72 61 74  of the IN operat
5d80: 6f 72 2c 20 74 68 65 20 49 4e 0a 6f 70 65 72 61  or, the IN.opera
5d90: 74 6f 72 20 72 65 74 75 72 6e 73 20 54 52 55 45  tor returns TRUE
5da0: 20 69 66 20 74 68 65 20 72 65 73 75 6c 74 20 6f   if the result o
5db0: 66 20 74 68 65 20 6c 65 66 74 20 6f 70 65 72 61  f the left opera
5dc0: 6e 64 20 69 73 20 61 6e 79 20 6f 66 0a 74 68 65  nd is any of.the
5dd0: 20 76 61 6c 75 65 73 20 67 65 6e 65 72 61 74 65   values generate
5de0: 64 20 62 79 20 74 68 65 20 73 65 6c 65 63 74 2e  d by the select.
5df0: 20 20 54 68 65 20 49 4e 20 6f 70 65 72 61 74 6f    The IN operato
5e00: 72 20 6d 61 79 20 62 65 20 70 72 65 63 65 64 65  r may be precede
5e10: 64 0a 62 79 20 74 68 65 20 4e 4f 54 20 6b 65 79  d.by the NOT key
5e20: 77 6f 72 64 20 74 6f 20 69 6e 76 65 72 74 20 74  word to invert t
5e30: 68 65 20 73 65 6e 73 65 20 6f 66 20 74 68 65 20  he sense of the 
5e40: 74 65 73 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 57 68  test.</p>..<p>Wh
5e50: 65 6e 20 61 20 53 45 4c 45 43 54 20 61 70 70 65  en a SELECT appe
5e60: 61 72 73 20 77 69 74 68 69 6e 20 61 6e 20 65 78  ars within an ex
5e70: 70 72 65 73 73 69 6f 6e 20 62 75 74 20 69 73 20  pression but is 
5e80: 6e 6f 74 20 74 68 65 20 72 69 67 68 74 0a 6f 70  not the right.op
5e90: 65 72 61 6e 64 20 6f 66 20 61 6e 20 49 4e 20 6f  erand of an IN o
5ea0: 70 65 72 61 74 6f 72 2c 20 74 68 65 6e 20 74 68  perator, then th
5eb0: 65 20 66 69 72 73 74 20 72 6f 77 20 6f 66 20 74  e first row of t
5ec0: 68 65 20 72 65 73 75 6c 74 20 6f 66 20 74 68 65  he result of the
5ed0: 0a 53 45 4c 45 43 54 20 62 65 63 6f 6d 65 73 20  .SELECT becomes 
5ee0: 74 68 65 20 76 61 6c 75 65 20 75 73 65 64 20 69  the value used i
5ef0: 6e 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e  n the expression
5f00: 2e 20 20 49 66 20 74 68 65 20 53 45 4c 45 43 54  .  If the SELECT
5f10: 20 79 69 65 6c 64 73 0a 6d 6f 72 65 20 74 68 61   yields.more tha
5f20: 6e 20 6f 6e 65 20 72 65 73 75 6c 74 20 72 6f 77  n one result row
5f30: 2c 20 61 6c 6c 20 72 6f 77 73 20 61 66 74 65 72  , all rows after
5f40: 20 74 68 65 20 66 69 72 73 74 20 61 72 65 20 69   the first are i
5f50: 67 6e 6f 72 65 64 2e 20 20 49 66 0a 74 68 65 20  gnored.  If.the 
5f60: 53 45 4c 45 43 54 20 79 65 69 6c 64 73 20 6e 6f  SELECT yeilds no
5f70: 20 72 6f 77 73 2c 20 74 68 65 6e 20 74 68 65 20   rows, then the 
5f80: 76 61 6c 75 65 20 6f 66 20 74 68 65 20 53 45 4c  value of the SEL
5f90: 45 43 54 20 69 73 20 4e 55 4c 4c 2e 3c 2f 70 3e  ECT is NULL.</p>
5fa0: 0a 0a 3c 70 3e 42 6f 74 68 20 73 69 6d 70 6c 65  ..<p>Both simple
5fb0: 20 61 6e 64 20 61 67 67 72 65 67 61 74 65 20 66   and aggregate f
5fc0: 75 6e 63 74 69 6f 6e 73 20 61 72 65 20 73 75 70  unctions are sup
5fd0: 70 6f 72 74 65 64 2e 20 20 41 20 73 69 6d 70 6c  ported.  A simpl
5fe0: 65 0a 66 75 6e 63 74 69 6f 6e 20 63 61 6e 20 62  e.function can b
5ff0: 65 20 75 73 65 64 20 69 6e 20 61 6e 79 20 65 78  e used in any ex
6000: 70 72 65 73 73 69 6f 6e 2e 20 20 53 69 6d 70 6c  pression.  Simpl
6010: 65 20 66 75 6e 63 74 69 6f 6e 73 20 72 65 74 75  e functions retu
6020: 72 6e 0a 61 20 72 65 73 75 6c 74 20 69 6d 6d 65  rn.a result imme
6030: 64 69 61 74 65 6c 79 20 62 61 73 65 64 20 6f 6e  diately based on
6040: 20 74 68 65 69 72 20 69 6e 70 75 74 73 2e 20 20   their inputs.  
6050: 41 67 67 72 65 67 61 74 65 20 66 75 6e 63 74 69  Aggregate functi
6060: 6f 6e 73 0a 6d 61 79 20 6f 6e 6c 79 20 62 65 20  ons.may only be 
6070: 75 73 65 64 20 69 6e 20 61 20 53 45 4c 45 43 54  used in a SELECT
6080: 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 41 67 67   statement.  Agg
6090: 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 73  regate functions
60a0: 20 63 6f 6d 70 75 74 65 0a 74 68 65 69 72 20 72   compute.their r
60b0: 65 73 75 6c 74 20 61 63 72 6f 73 73 20 61 6c 6c  esult across all
60c0: 20 72 6f 77 73 20 6f 66 20 74 68 65 20 72 65 73   rows of the res
60d0: 75 6c 74 20 73 65 74 2e 3c 2f 70 3e 0a 0a 3c 70  ult set.</p>..<p
60e0: 3e 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 73  >The following s
60f0: 69 6d 70 6c 65 20 66 75 6e 63 74 69 6f 6e 73 20  imple functions 
6100: 61 72 65 20 63 75 72 72 65 6e 74 6c 79 20 73 75  are currently su
6110: 70 70 6f 72 74 65 64 3a 3c 2f 70 3e 0a 0a 3c 74  pported:</p>..<t
6120: 61 62 6c 65 20 62 6f 72 64 65 72 3d 30 20 63 65  able border=0 ce
6130: 6c 6c 70 61 64 64 69 6e 67 3d 31 30 3e 0a 3c 74  llpadding=10>.<t
6140: 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  r>.<td valign="t
6150: 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74  op" align="right
6160: 22 20 77 69 64 74 68 3d 31 32 30 3e 61 62 73 28  " width=120>abs(
6170: 3c 69 3e 58 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c  <i>X</i>)</td>.<
6180: 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e  td valign="top">
6190: 52 65 74 75 72 6e 20 74 68 65 20 61 62 73 6f 6c  Return the absol
61a0: 75 74 65 20 76 61 6c 75 65 20 6f 66 20 61 72 67  ute value of arg
61b0: 75 6d 65 6e 74 20 3c 69 3e 58 3c 2f 69 3e 2e 3c  ument <i>X</i>.<
61c0: 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e  /td>.</tr>..<tr>
61d0: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
61e0: 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e  " align="right">
61f0: 63 6f 61 6c 65 73 63 65 28 3c 69 3e 58 3c 2f 69  coalesce(<i>X</i
6200: 3e 2c 3c 69 3e 59 3c 2f 69 3e 2c 2e 2e 2e 29 3c  >,<i>Y</i>,...)<
6210: 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  /td>.<td valign=
6220: 22 74 6f 70 22 3e 52 65 74 75 72 6e 20 61 20 63  "top">Return a c
6230: 6f 70 79 20 6f 66 20 74 68 65 20 66 69 72 73 74  opy of the first
6240: 20 6e 6f 6e 2d 4e 55 4c 4c 20 61 72 67 75 6d 65   non-NULL argume
6250: 6e 74 2e 20 20 49 66 0a 61 6c 6c 20 61 72 67 75  nt.  If.all argu
6260: 6d 65 6e 74 73 20 61 72 65 20 4e 55 4c 4c 20 74  ments are NULL t
6270: 68 65 6e 20 4e 55 4c 4c 20 69 73 20 72 65 74 75  hen NULL is retu
6280: 72 6e 65 64 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e  rned.</td>.</tr>
6290: 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67  ..<tr>.<td valig
62a0: 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72  n="top" align="r
62b0: 69 67 68 74 22 3e 6c 61 73 74 5f 69 6e 73 65 72  ight">last_inser
62c0: 74 5f 72 6f 77 69 64 28 29 3c 2f 74 64 3e 0a 3c  t_rowid()</td>.<
62d0: 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e  td valign="top">
62e0: 52 65 74 75 72 6e 20 74 68 65 20 52 4f 57 49 44  Return the ROWID
62f0: 20 6f 66 20 74 68 65 20 6c 61 73 74 20 72 6f 77   of the last row
6300: 20 69 6e 73 65 72 74 20 66 72 6f 6d 20 74 68 69   insert from thi
6310: 73 0a 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 6f 20  s.connection to 
6320: 74 68 65 20 64 61 74 61 62 61 73 65 2e 20 20 54  the database.  T
6330: 68 69 73 20 69 73 20 74 68 65 20 73 61 6d 65 20  his is the same 
6340: 76 61 6c 75 65 20 74 68 61 74 20 77 6f 75 6c 64  value that would
6350: 20 62 65 20 72 65 74 75 72 6e 65 64 0a 66 72 6f   be returned.fro
6360: 6d 20 74 68 65 20 3c 62 3e 73 71 6c 69 74 65 5f  m the <b>sqlite_
6370: 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69  last_insert_rowi
6380: 64 28 29 3c 2f 62 3e 20 41 50 49 20 66 75 6e 63  d()</b> API func
6390: 74 69 6f 6e 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e  tion.</td>.</tr>
63a0: 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67  ..<tr>.<td valig
63b0: 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72  n="top" align="r
63c0: 69 67 68 74 22 3e 6c 65 6e 67 74 68 28 3c 69 3e  ight">length(<i>
63d0: 58 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20  X</i>)</td>.<td 
63e0: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74  valign="top">Ret
63f0: 75 72 6e 20 74 68 65 20 73 74 72 69 6e 67 20 6c  urn the string l
6400: 65 6e 67 74 68 20 6f 66 20 3c 69 3e 58 3c 2f 69  ength of <i>X</i
6410: 3e 20 69 6e 20 63 68 61 72 61 63 74 65 72 73 2e  > in characters.
6420: 0a 49 66 20 53 51 4c 69 74 65 20 69 73 20 63 6f  .If SQLite is co
6430: 6e 66 69 67 75 72 65 64 20 74 6f 20 73 75 70 70  nfigured to supp
6440: 6f 72 74 20 55 54 46 2d 38 2c 20 74 68 65 6e 20  ort UTF-8, then 
6450: 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 55 54  the number of UT
6460: 46 2d 38 0a 63 68 61 72 61 63 74 65 72 73 20 69  F-8.characters i
6470: 73 20 72 65 74 75 72 6e 65 64 2c 20 6e 6f 74 20  s returned, not 
6480: 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 62 79  the number of by
6490: 74 65 73 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a  tes.</td>.</tr>.
64a0: 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e  .<tr>.<td valign
64b0: 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69  ="top" align="ri
64c0: 67 68 74 22 3e 6c 6f 77 65 72 28 3c 69 3e 58 3c  ght">lower(<i>X<
64d0: 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61  /i>)</td>.<td va
64e0: 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72  lign="top">Retur
64f0: 6e 20 61 20 63 6f 70 79 20 6f 66 20 73 74 72 69  n a copy of stri
6500: 6e 67 20 3c 69 3e 58 3c 2f 69 3e 20 77 69 6c 6c  ng <i>X</i> will
6510: 20 61 6c 6c 20 63 68 61 72 61 63 74 65 72 73 0a   all characters.
6520: 63 6f 6e 76 65 72 74 65 64 20 74 6f 20 6c 6f 77  converted to low
6530: 65 72 20 63 61 73 65 2e 20 20 54 68 65 20 43 20  er case.  The C 
6540: 6c 69 62 72 61 72 79 20 3c 62 3e 74 6f 6c 6f 77  library <b>tolow
6550: 65 72 28 29 3c 2f 62 3e 20 72 6f 75 74 69 6e 65  er()</b> routine
6560: 20 69 73 20 75 73 65 64 0a 66 6f 72 20 74 68 65   is used.for the
6570: 20 63 6f 6e 76 65 72 73 69 6f 6e 2c 20 77 68 69   conversion, whi
6580: 63 68 20 6d 65 61 6e 73 20 74 68 61 74 20 74 68  ch means that th
6590: 69 73 20 66 75 6e 63 74 69 6f 6e 20 6d 69 67 68  is function migh
65a0: 74 20 6e 6f 74 0a 77 6f 72 6b 20 63 6f 72 72 65  t not.work corre
65b0: 63 74 6c 79 20 6f 6e 20 55 54 46 2d 38 20 63 68  ctly on UTF-8 ch
65c0: 61 72 61 63 74 65 72 73 2e 3c 2f 74 64 3e 0a 3c  aracters.</td>.<
65d0: 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76  /tr>..<tr>.<td v
65e0: 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67  align="top" alig
65f0: 6e 3d 22 72 69 67 68 74 22 3e 6d 61 78 28 3c 69  n="right">max(<i
6600: 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 2c  >X</i>,<i>Y</i>,
6610: 2e 2e 2e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61  ...)</td>.<td va
6620: 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72  lign="top">Retur
6630: 6e 20 74 68 65 20 61 72 67 75 6d 65 6e 74 20 77  n the argument w
6640: 69 74 68 20 74 68 65 20 6d 61 78 69 6d 75 6d 20  ith the maximum 
6650: 76 61 6c 75 65 2e 20 20 41 72 67 75 6d 65 6e 74  value.  Argument
6660: 73 0a 6d 61 79 20 62 65 20 73 74 72 69 6e 67 73  s.may be strings
6670: 20 69 6e 20 61 64 64 69 74 69 6f 6e 20 74 6f 20   in addition to 
6680: 6e 75 6d 62 65 72 73 2e 20 20 54 68 65 20 6d 61  numbers.  The ma
6690: 78 69 6d 75 6d 20 76 61 6c 75 65 20 69 73 20 64  ximum value is d
66a0: 65 74 65 72 6d 69 6e 65 64 0a 62 79 20 74 68 65  etermined.by the
66b0: 20 75 73 75 61 6c 20 73 6f 72 74 20 6f 72 64 65   usual sort orde
66c0: 72 2e 20 20 4e 6f 74 65 20 74 68 61 74 20 3c 62  r.  Note that <b
66d0: 3e 6d 61 78 28 29 3c 2f 62 3e 20 69 73 20 61 20  >max()</b> is a 
66e0: 73 69 6d 70 6c 65 20 66 75 6e 63 74 69 6f 6e 20  simple function 
66f0: 77 68 65 6e 0a 69 74 20 68 61 73 20 32 20 6f 72  when.it has 2 or
6700: 20 6d 6f 72 65 20 61 72 67 75 6d 65 6e 74 73 20   more arguments 
6710: 62 75 74 20 63 6f 6e 76 65 72 74 73 20 74 6f 20  but converts to 
6720: 61 6e 20 61 67 67 72 65 67 61 74 65 20 66 75 6e  an aggregate fun
6730: 63 74 69 6f 6e 20 69 66 20 67 69 76 65 6e 0a 6f  ction if given.o
6740: 6e 6c 79 20 61 20 73 69 6e 67 6c 65 20 61 72 67  nly a single arg
6750: 75 6d 65 6e 74 2e 3c 2f 74 64 3e 0a 3c 2f 74 72  ument.</td>.</tr
6760: 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69  >..<tr>.<td vali
6770: 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22  gn="top" align="
6780: 72 69 67 68 74 22 3e 6d 69 6e 28 3c 69 3e 58 3c  right">min(<i>X<
6790: 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 2c 2e 2e 2e  /i>,<i>Y</i>,...
67a0: 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67  )</td>.<td valig
67b0: 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72 6e 20 74  n="top">Return t
67c0: 68 65 20 61 72 67 75 6d 65 6e 74 20 77 69 74 68  he argument with
67d0: 20 74 68 65 20 6d 69 6e 69 6d 75 6d 20 76 61 6c   the minimum val
67e0: 75 65 2e 20 20 41 72 67 75 6d 65 6e 74 73 0a 6d  ue.  Arguments.m
67f0: 61 79 20 62 65 20 73 74 72 69 6e 67 73 20 69 6e  ay be strings in
6800: 20 61 64 64 69 74 69 6f 6e 20 74 6f 20 6e 75 6d   addition to num
6810: 62 65 72 73 2e 20 20 54 68 65 20 6d 6d 69 6e 69  bers.  The mmini
6820: 6d 75 6d 20 76 61 6c 75 65 20 69 73 20 64 65 74  mum value is det
6830: 65 72 6d 69 6e 65 64 0a 62 79 20 74 68 65 20 75  ermined.by the u
6840: 73 75 61 6c 20 73 6f 72 74 20 6f 72 64 65 72 2e  sual sort order.
6850: 20 20 4e 6f 74 65 20 74 68 61 74 20 3c 62 3e 6d    Note that <b>m
6860: 69 6e 28 29 3c 2f 62 3e 20 69 73 20 61 20 73 69  in()</b> is a si
6870: 6d 70 6c 65 20 66 75 6e 63 74 69 6f 6e 20 77 68  mple function wh
6880: 65 6e 0a 69 74 20 68 61 73 20 32 20 6f 72 20 6d  en.it has 2 or m
6890: 6f 72 65 20 61 72 67 75 6d 65 6e 74 73 20 62 75  ore arguments bu
68a0: 74 20 63 6f 6e 76 65 72 74 73 20 74 6f 20 61 6e  t converts to an
68b0: 20 61 67 67 72 65 67 61 74 65 20 66 75 6e 63 74   aggregate funct
68c0: 69 6f 6e 20 69 66 20 67 69 76 65 6e 0a 6f 6e 6c  ion if given.onl
68d0: 79 20 61 20 73 69 6e 67 6c 65 20 61 72 67 75 6d  y a single argum
68e0: 65 6e 74 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a  ent.</td>.</tr>.
68f0: 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e  .<tr>.<td valign
6900: 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69  ="top" align="ri
6910: 67 68 74 22 3e 72 61 6e 64 6f 6d 28 2a 29 3c 2f  ght">random(*)</
6920: 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22  td>.<td valign="
6930: 74 6f 70 22 3e 52 65 74 75 72 6e 20 61 20 72 61  top">Return a ra
6940: 6e 64 6f 6d 20 69 6e 74 65 67 65 72 20 62 65 74  ndom integer bet
6950: 77 65 65 6e 20 2d 32 31 34 37 34 38 33 36 34 38  ween -2147483648
6960: 20 61 6e 64 0a 2b 32 31 34 37 34 38 33 36 34 37   and.+2147483647
6970: 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74  .</td>.</tr>..<t
6980: 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  r>.<td valign="t
6990: 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74  op" align="right
69a0: 22 3e 72 6f 75 6e 64 28 3c 69 3e 58 3c 2f 69 3e  ">round(<i>X</i>
69b0: 29 3c 62 72 3e 72 6f 75 6e 64 28 3c 69 3e 58 3c  )<br>round(<i>X<
69c0: 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 29 3c 2f 74  /i>,<i>Y</i>)</t
69d0: 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  d>.<td valign="t
69e0: 6f 70 22 3e 52 6f 75 6e 64 20 6f 66 66 20 74 68  op">Round off th
69f0: 65 20 6e 75 6d 62 65 72 20 3c 69 3e 58 3c 2f 69  e number <i>X</i
6a00: 3e 20 74 6f 20 3c 69 3e 59 3c 2f 69 3e 20 64 69  > to <i>Y</i> di
6a10: 67 69 74 73 20 74 6f 20 74 68 65 0a 72 69 67 68  gits to the.righ
6a20: 74 20 6f 66 20 74 68 65 20 64 65 63 69 6d 61 6c  t of the decimal
6a30: 20 70 6f 69 6e 74 2e 20 20 49 66 20 74 68 65 20   point.  If the 
6a40: 3c 69 3e 59 3c 2f 69 3e 20 61 72 67 75 6d 65 6e  <i>Y</i> argumen
6a50: 74 20 69 73 20 6f 6d 69 74 74 65 64 2c 20 30 20  t is omitted, 0 
6a60: 69 73 20 0a 61 73 73 75 6d 65 64 2e 3c 2f 74 64  is .assumed.</td
6a70: 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74  >.</tr>..<tr>.<t
6a80: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61  d valign="top" a
6a90: 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e 73 75 62  lign="right">sub
6aa0: 73 74 72 28 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e  str(<i>X</i>,<i>
6ab0: 59 3c 2f 69 3e 2c 3c 69 3e 5a 3c 2f 69 3e 29 3c  Y</i>,<i>Z</i>)<
6ac0: 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  /td>.<td valign=
6ad0: 22 74 6f 70 22 3e 52 65 74 75 72 6e 20 61 20 73  "top">Return a s
6ae0: 75 62 73 74 72 69 6e 67 20 6f 66 20 69 6e 70 75  ubstring of inpu
6af0: 74 20 73 74 72 69 6e 67 20 3c 69 3e 58 3c 2f 69  t string <i>X</i
6b00: 3e 20 74 68 61 74 20 62 65 67 69 6e 73 0a 77 69  > that begins.wi
6b10: 74 68 20 74 68 65 20 3c 69 3e 59 3c 2f 69 3e 2d  th the <i>Y</i>-
6b20: 74 68 20 63 68 61 72 61 63 74 65 72 20 61 6e 64  th character and
6b30: 20 77 68 69 63 68 20 69 73 20 3c 69 3e 5a 3c 2f   which is <i>Z</
6b40: 69 3e 20 63 68 61 72 61 63 74 65 72 73 20 6c 6f  i> characters lo
6b50: 6e 67 2e 0a 54 68 65 20 6c 65 66 74 2d 6d 6f 73  ng..The left-mos
6b60: 74 20 63 68 61 72 61 63 74 65 72 20 6f 66 20 3c  t character of <
6b70: 69 3e 58 3c 2f 69 3e 20 69 73 20 6e 75 6d 62 65  i>X</i> is numbe
6b80: 72 20 31 2e 20 20 49 66 20 3c 69 3e 59 3c 2f 69  r 1.  If <i>Y</i
6b90: 3e 20 69 73 20 6e 65 67 61 74 69 76 65 0a 74 68  > is negative.th
6ba0: 65 20 74 68 65 20 66 69 72 73 74 20 63 68 61 72  e the first char
6bb0: 61 63 74 65 72 20 6f 66 20 74 68 65 20 73 75 62  acter of the sub
6bc0: 73 74 72 69 6e 67 20 69 73 20 66 6f 75 6e 64 20  string is found 
6bd0: 62 79 20 63 6f 75 6e 74 69 6e 67 20 66 72 6f 6d  by counting from
6be0: 20 74 68 65 0a 72 69 67 68 74 20 72 61 74 68 65   the.right rathe
6bf0: 72 20 74 68 61 6e 20 74 68 65 20 6c 65 66 74 2e  r than the left.
6c00: 20 20 49 66 20 53 51 4c 69 74 65 20 69 73 20 63    If SQLite is c
6c10: 6f 6e 66 69 67 75 72 65 64 20 74 6f 20 73 75 70  onfigured to sup
6c20: 70 6f 72 74 20 55 54 46 2d 38 2c 0a 74 68 65 6e  port UTF-8,.then
6c30: 20 63 68 61 72 61 63 74 65 72 73 20 69 6e 64 69   characters indi
6c40: 63 65 73 20 72 65 66 65 72 20 74 6f 20 61 63 74  ces refer to act
6c50: 75 61 6c 20 55 54 46 2d 38 20 63 68 61 72 61 63  ual UTF-8 charac
6c60: 74 65 72 73 2c 20 6e 6f 74 20 62 79 74 65 73 2e  ters, not bytes.
6c70: 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72  </td>.</tr>..<tr
6c80: 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
6c90: 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22  p" align="right"
6ca0: 3e 75 70 70 65 72 28 3c 69 3e 58 3c 2f 69 3e 29  >upper(<i>X</i>)
6cb0: 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e  </td>.<td valign
6cc0: 3d 22 74 6f 70 22 3e 52 65 74 75 72 6e 20 61 20  ="top">Return a 
6cd0: 63 6f 70 79 20 6f 66 20 69 6e 70 75 74 20 73 74  copy of input st
6ce0: 72 69 6e 67 20 3c 69 3e 58 3c 2f 69 3e 20 63 6f  ring <i>X</i> co
6cf0: 6e 76 65 72 74 65 64 20 74 6f 20 61 6c 6c 0a 75  nverted to all.u
6d00: 70 70 65 72 2d 63 61 73 65 20 6c 65 74 74 65 72  pper-case letter
6d10: 73 2e 20 20 54 68 65 20 69 6d 70 6c 65 6d 65 6e  s.  The implemen
6d20: 74 61 74 69 6f 6e 20 6f 66 20 74 68 69 73 20 66  tation of this f
6d30: 75 6e 63 74 69 6f 6e 20 75 73 65 73 20 74 68 65  unction uses the
6d40: 20 43 20 6c 69 62 72 61 72 79 0a 72 6f 75 74 69   C library.routi
6d50: 6e 65 20 3c 62 3e 74 6f 75 70 70 65 72 28 29 3c  ne <b>toupper()<
6d60: 2f 62 3e 20 77 68 69 63 68 20 6d 65 61 6e 73 20  /b> which means 
6d70: 69 74 20 6d 61 79 20 6e 6f 74 20 77 6f 72 6b 20  it may not work 
6d80: 63 6f 72 72 65 63 74 6c 79 20 6f 6e 20 0a 55 54  correctly on .UT
6d90: 46 2d 38 20 73 74 72 69 6e 67 73 2e 3c 2f 74 64  F-8 strings.</td
6da0: 3e 0a 3c 2f 74 72 3e 0a 3c 2f 74 61 62 6c 65 3e  >.</tr>.</table>
6db0: 0a 0a 3c 70 3e 0a 54 68 65 20 66 6f 6c 6c 6f 77  ..<p>.The follow
6dc0: 69 6e 67 20 61 67 67 72 65 67 61 74 65 20 66 75  ing aggregate fu
6dd0: 6e 63 74 69 6f 6e 73 20 61 72 65 20 73 75 70 70  nctions are supp
6de0: 6f 72 74 65 64 3a 0a 3c 2f 70 3e 0a 0a 3c 74 61  orted:.</p>..<ta
6df0: 62 6c 65 20 62 6f 72 64 65 72 3d 30 20 63 65 6c  ble border=0 cel
6e00: 6c 70 61 64 64 69 6e 67 3d 31 30 3e 0a 3c 74 72  lpadding=10>.<tr
6e10: 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
6e20: 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22  p" align="right"
6e30: 20 77 69 64 74 68 3d 31 32 30 3e 61 76 67 28 3c   width=120>avg(<
6e40: 69 3e 58 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74  i>X</i>)</td>.<t
6e50: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52  d valign="top">R
6e60: 65 74 75 72 6e 20 74 68 65 20 61 76 65 72 61 67  eturn the averag
6e70: 65 20 76 61 6c 75 65 20 6f 66 20 61 6c 6c 20 3c  e value of all <
6e80: 69 3e 58 3c 2f 69 3e 20 77 69 74 68 69 6e 20 61  i>X</i> within a
6e90: 20 67 72 6f 75 70 2e 3c 2f 74 64 3e 0a 3c 2f 74   group.</td>.</t
6ea0: 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c  r>..<tr>.<td val
6eb0: 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d  ign="top" align=
6ec0: 22 72 69 67 68 74 22 3e 63 6f 75 6e 74 28 3c 69  "right">count(<i
6ed0: 3e 58 3c 2f 69 3e 29 3c 62 72 3e 63 6f 75 6e 74  >X</i>)<br>count
6ee0: 28 2a 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c  (*)</td>.<td val
6ef0: 69 67 6e 3d 22 74 6f 70 22 3e 54 68 65 20 66 69  ign="top">The fi
6f00: 72 73 74 20 66 6f 72 6d 20 72 65 74 75 72 6e 20  rst form return 
6f10: 61 20 63 6f 75 6e 74 20 6f 66 20 74 68 65 20 6e  a count of the n
6f20: 75 6d 62 65 72 20 6f 66 20 74 69 6d 65 73 0a 74  umber of times.t
6f30: 68 61 74 20 3c 69 3e 58 3c 2f 69 3e 20 69 73 20  hat <i>X</i> is 
6f40: 6e 6f 74 20 4e 55 4c 4c 20 69 6e 20 61 20 67 72  not NULL in a gr
6f50: 6f 75 70 2e 20 20 54 68 65 20 73 65 63 6f 6e 64  oup.  The second
6f60: 20 66 6f 72 6d 20 28 77 69 74 68 20 6e 6f 20 61   form (with no a
6f70: 72 67 75 6d 65 6e 74 29 0a 72 65 74 75 72 6e 73  rgument).returns
6f80: 20 74 68 65 20 74 6f 74 61 6c 20 6e 75 6d 62 65   the total numbe
6f90: 72 20 6f 66 20 72 6f 77 73 20 69 6e 20 74 68 65  r of rows in the
6fa0: 20 67 72 6f 75 70 2e 3c 2f 74 64 3e 0a 3c 2f 74   group.</td>.</t
6fb0: 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c  r>..<tr>.<td val
6fc0: 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d  ign="top" align=
6fd0: 22 72 69 67 68 74 22 3e 6d 61 78 28 3c 69 3e 58  "right">max(<i>X
6fe0: 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76  </i>)</td>.<td v
6ff0: 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75  align="top">Retu
7000: 72 6e 20 74 68 65 20 6d 61 78 69 6d 75 6d 20 76  rn the maximum v
7010: 61 6c 75 65 20 6f 66 20 61 6c 6c 20 76 61 6c 75  alue of all valu
7020: 65 73 20 69 6e 20 74 68 65 20 67 72 6f 75 70 2e  es in the group.
7030: 0a 54 68 65 20 75 73 75 61 6c 20 73 6f 72 74 20  .The usual sort 
7040: 6f 72 64 65 72 20 69 73 20 75 73 65 64 20 74 6f  order is used to
7050: 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20 6d   determine the m
7060: 61 78 69 6d 75 6d 2e 3c 2f 74 64 3e 0a 3c 2f 74  aximum.</td>.</t
7070: 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c  r>..<tr>.<td val
7080: 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d  ign="top" align=
7090: 22 72 69 67 68 74 22 3e 6d 69 6e 28 3c 69 3e 58  "right">min(<i>X
70a0: 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76  </i>)</td>.<td v
70b0: 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75  align="top">Retu
70c0: 72 6e 20 74 68 65 20 6d 69 6e 69 6d 75 6d 20 76  rn the minimum v
70d0: 61 6c 75 65 20 6f 66 20 61 6c 6c 20 76 61 6c 75  alue of all valu
70e0: 65 73 20 69 6e 20 74 68 65 20 67 72 6f 75 70 2e  es in the group.
70f0: 0a 54 68 65 20 75 73 75 61 6c 20 73 6f 72 74 20  .The usual sort 
7100: 6f 72 64 65 72 20 69 73 20 75 73 65 64 20 74 6f  order is used to
7110: 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20 6d   determine the m
7120: 69 6e 69 6d 75 6d 2e 3c 2f 74 64 3e 0a 3c 2f 74  inimum.</td>.</t
7130: 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c  r>..<tr>.<td val
7140: 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d  ign="top" align=
7150: 22 72 69 67 68 74 22 3e 73 75 6d 28 3c 69 3e 58  "right">sum(<i>X
7160: 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76  </i>)</td>.<td v
7170: 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75  align="top">Retu
7180: 72 6e 20 74 68 65 20 6e 75 6d 65 72 69 63 20 73  rn the numeric s
7190: 75 6d 20 6f 66 20 61 6c 6c 20 76 61 6c 75 65 73  um of all values
71a0: 20 69 6e 20 74 68 65 20 67 72 6f 75 70 2e 3c 2f   in the group.</
71b0: 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 2f 74 61 62 6c  td>.</tr>.</tabl
71c0: 65 3e 0a 7d 0a 0a 53 65 63 74 69 6f 6e 20 49 4e  e>.}..Section IN
71d0: 53 45 52 54 20 69 6e 73 65 72 74 0a 0a 53 79 6e  SERT insert..Syn
71e0: 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65  tax {sql-stateme
71f0: 6e 74 7d 20 7b 0a 49 4e 53 45 52 54 20 5b 4f 52  nt} {.INSERT [OR
7200: 20 3c 63 6f 6e 66 6c 69 63 74 2d 61 6c 67 6f 72   <conflict-algor
7210: 69 74 68 6d 3e 5d 20 49 4e 54 4f 20 3c 74 61 62  ithm>] INTO <tab
7220: 6c 65 2d 6e 61 6d 65 3e 20 5b 28 3c 63 6f 6c 75  le-name> [(<colu
7230: 6d 6e 2d 6c 69 73 74 3e 29 5d 20 56 41 4c 55 45  mn-list>)] VALUE
7240: 53 28 3c 76 61 6c 75 65 2d 6c 69 73 74 3e 29 20  S(<value-list>) 
7250: 7c 0a 49 4e 53 45 52 54 20 5b 4f 52 20 3c 63 6f  |.INSERT [OR <co
7260: 6e 66 6c 69 63 74 2d 61 6c 67 6f 72 69 74 68 6d  nflict-algorithm
7270: 3e 5d 20 49 4e 54 4f 20 3c 74 61 62 6c 65 2d 6e  >] INTO <table-n
7280: 61 6d 65 3e 20 5b 28 3c 63 6f 6c 75 6d 6e 2d 6c  ame> [(<column-l
7290: 69 73 74 3e 29 5d 20 3c 73 65 6c 65 63 74 2d 73  ist>)] <select-s
72a0: 74 61 74 65 6d 65 6e 74 3e 0a 7d 0a 0a 70 75 74  tatement>.}..put
72b0: 73 20 7b 0a 3c 70 3e 54 68 65 20 49 4e 53 45 52  s {.<p>The INSER
72c0: 54 20 73 74 61 74 65 6d 65 6e 74 20 63 6f 6d 65  T statement come
72d0: 73 20 69 6e 20 74 77 6f 20 62 61 73 69 63 20 66  s in two basic f
72e0: 6f 72 6d 73 2e 20 20 54 68 65 20 66 69 72 73 74  orms.  The first
72f0: 20 66 6f 72 6d 0a 28 77 69 74 68 20 74 68 65 20   form.(with the 
7300: 22 56 41 4c 55 45 53 22 20 6b 65 79 77 6f 72 64  "VALUES" keyword
7310: 29 20 63 72 65 61 74 65 73 20 61 20 73 69 6e 67  ) creates a sing
7320: 6c 65 20 6e 65 77 20 72 6f 77 20 69 6e 20 61 6e  le new row in an
7330: 20 65 78 69 73 74 69 6e 67 20 74 61 62 6c 65 2e   existing table.
7340: 0a 49 66 20 6e 6f 20 63 6f 6c 75 6d 6e 2d 6c 69  .If no column-li
7350: 73 74 20 69 73 20 73 70 65 63 69 66 69 65 64 20  st is specified 
7360: 74 68 65 6e 20 74 68 65 20 6e 75 6d 62 65 72 20  then the number 
7370: 6f 66 20 76 61 6c 75 65 73 20 6d 75 73 74 0a 62  of values must.b
7380: 65 20 74 68 65 20 73 61 6d 65 20 61 73 20 74 68  e the same as th
7390: 65 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75  e number of colu
73a0: 6d 6e 73 20 69 6e 20 74 68 65 20 74 61 62 6c 65  mns in the table
73b0: 2e 20 20 49 66 20 61 20 63 6f 6c 75 6d 6e 2d 6c  .  If a column-l
73c0: 69 73 74 0a 69 73 20 73 70 65 63 69 66 69 65 64  ist.is specified
73d0: 2c 20 74 68 65 6e 20 74 68 65 20 6e 75 6d 62 65  , then the numbe
73e0: 72 20 6f 66 20 76 61 6c 75 65 73 20 6d 75 73 74  r of values must
73f0: 20 6d 61 74 63 68 20 74 68 65 20 6e 75 6d 62 65   match the numbe
7400: 72 20 6f 66 0a 73 70 65 63 69 66 69 65 64 20 63  r of.specified c
7410: 6f 6c 75 6d 6e 73 2e 20 20 43 6f 6c 75 6d 6e 73  olumns.  Columns
7420: 20 6f 66 20 74 68 65 20 74 61 62 6c 65 20 74 68   of the table th
7430: 61 74 20 64 6f 20 6e 6f 74 20 61 70 70 65 61 72  at do not appear
7440: 20 69 6e 20 74 68 65 0a 63 6f 6c 75 6d 6e 20 6c   in the.column l
7450: 69 73 74 20 61 72 65 20 66 69 6c 6c 20 77 69 74  ist are fill wit
7460: 68 20 74 68 65 20 64 65 66 61 75 6c 74 20 76 61  h the default va
7470: 6c 75 65 2c 20 6f 72 20 77 69 74 68 20 4e 55 4c  lue, or with NUL
7480: 4c 20 69 66 20 6e 6f 74 0a 64 65 66 61 75 6c 74  L if not.default
7490: 20 76 61 6c 75 65 20 69 73 20 73 70 65 63 69 66   value is specif
74a0: 69 65 64 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 54 68  ied..</p>..<p>Th
74b0: 65 20 73 65 63 6f 6e 64 20 66 6f 72 6d 20 6f 66  e second form of
74c0: 20 74 68 65 20 49 4e 53 45 52 54 20 73 74 61 74   the INSERT stat
74d0: 65 6d 65 6e 74 20 74 61 6b 65 73 20 69 74 20 64  ement takes it d
74e0: 61 74 61 20 66 72 6f 6d 20 61 0a 53 45 4c 45 43  ata from a.SELEC
74f0: 54 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 54 68  T statement.  Th
7500: 65 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75  e number of colu
7510: 6d 6e 73 20 69 6e 20 74 68 65 20 72 65 73 75 6c  mns in the resul
7520: 74 20 6f 66 20 74 68 65 0a 53 45 4c 45 43 54 20  t of the.SELECT 
7530: 6d 75 73 74 20 65 78 61 63 74 6c 79 20 6d 61 74  must exactly mat
7540: 63 68 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  ch the number of
7550: 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65 20   columns in the 
7560: 74 61 62 6c 65 20 69 66 0a 6e 6f 20 63 6f 6c 75  table if.no colu
7570: 6d 6e 20 6c 69 73 74 20 69 73 20 73 70 65 63 69  mn list is speci
7580: 66 69 65 64 2c 20 6f 72 20 69 74 20 6d 75 73 74  fied, or it must
7590: 20 6d 61 74 63 68 20 74 68 65 20 6e 75 6d 62 65   match the numbe
75a0: 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 0a 6e 61 6d  r of columns.nam
75b0: 65 20 69 6e 20 74 68 65 20 63 6f 6c 75 6d 6e 20  e in the column 
75c0: 6c 69 73 74 2e 20 20 41 20 6e 65 77 20 65 6e 74  list.  A new ent
75d0: 72 79 20 69 73 20 6d 61 64 65 20 69 6e 20 74 68  ry is made in th
75e0: 65 20 74 61 62 6c 65 0a 66 6f 72 20 65 76 65 72  e table.for ever
75f0: 79 20 72 6f 77 20 6f 66 20 74 68 65 20 53 45 4c  y row of the SEL
7600: 45 43 54 20 72 65 73 75 6c 74 2e 20 20 54 68 65  ECT result.  The
7610: 20 53 45 4c 45 43 54 20 6d 61 79 20 62 65 20 73   SELECT may be s
7620: 69 6d 70 6c 65 0a 6f 72 20 63 6f 6d 70 6f 75 6e  imple.or compoun
7630: 64 2e 20 20 49 66 20 74 68 65 20 53 45 4c 45 43  d.  If the SELEC
7640: 54 20 73 74 61 74 65 6d 65 6e 74 20 68 61 73 20  T statement has 
7650: 61 6e 20 4f 52 44 45 52 20 42 59 20 63 6c 61 75  an ORDER BY clau
7660: 73 65 2c 0a 74 68 65 20 4f 52 44 45 52 20 42 59  se,.the ORDER BY
7670: 20 69 73 20 69 67 6e 6f 72 65 64 2e 3c 2f 70 3e   is ignored.</p>
7680: 0a 0a 3c 70 3e 54 68 65 20 6f 70 74 69 6f 6e 61  ..<p>The optiona
7690: 6c 20 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73  l conflict-claus
76a0: 65 20 61 6c 6c 6f 77 73 20 74 68 65 20 73 70 65  e allows the spe
76b0: 63 69 66 69 63 61 74 69 6f 6e 20 6f 66 20 61 6e  cification of an
76c0: 20 61 6c 74 65 72 6e 61 74 69 76 65 0a 63 6f 6e   alternative.con
76d0: 73 74 72 61 69 6e 74 20 63 6f 6e 66 6c 69 63 74  straint conflict
76e0: 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f   resolution algo
76f0: 72 69 74 68 6d 20 74 6f 20 75 73 65 20 64 75 72  rithm to use dur
7700: 69 6e 67 20 74 68 69 73 20 6f 6e 65 20 63 6f 6d  ing this one com
7710: 6d 61 6e 64 2e 0a 53 65 65 20 74 68 65 20 73 65  mand..See the se
7720: 63 74 69 6f 6e 20 74 69 74 6c 65 64 0a 3c 61 20  ction titled.<a 
7730: 68 72 65 66 3d 22 23 63 6f 6e 66 6c 69 63 74 22  href="#conflict"
7740: 3e 4f 4e 20 43 4f 4e 46 4c 49 43 54 3c 2f 61 3e  >ON CONFLICT</a>
7750: 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20   for additional 
7760: 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a 46 6f 72  information..For
7770: 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 77   compatibility w
7780: 69 74 68 20 4d 79 53 51 4c 2c 20 74 68 65 20 70  ith MySQL, the p
7790: 61 72 73 65 72 20 61 6c 6c 6f 77 73 20 74 68 65  arser allows the
77a0: 20 75 73 65 20 6f 66 20 74 68 65 0a 73 69 6e 67   use of the.sing
77b0: 6c 65 20 6b 65 79 77 6f 72 64 20 22 52 45 50 4c  le keyword "REPL
77c0: 41 43 45 22 20 61 73 20 61 6e 20 61 6c 69 61 73  ACE" as an alias
77d0: 20 66 6f 72 20 22 49 4e 53 45 52 54 20 4f 52 20   for "INSERT OR 
77e0: 52 45 50 4c 41 43 45 22 2e 0a 3c 2f 70 3e 0a 7d  REPLACE"..</p>.}
77f0: 0a 0a 53 65 63 74 69 6f 6e 20 7b 4f 4e 20 43 4f  ..Section {ON CO
7800: 4e 46 4c 49 43 54 20 63 6c 61 75 73 65 7d 20 63  NFLICT clause} c
7810: 6f 6e 66 6c 69 63 74 0a 0a 53 79 6e 74 61 78 20  onflict..Syntax 
7820: 7b 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65  {conflict-clause
7830: 7d 20 7b 0a 4f 4e 20 43 4f 4e 46 4c 49 43 54 20  } {.ON CONFLICT 
7840: 3c 63 6f 6e 66 6c 69 63 74 2d 61 6c 67 6f 72 69  <conflict-algori
7850: 74 68 6d 3e 0a 7d 20 7b 63 6f 6e 66 6c 69 63 74  thm>.} {conflict
7860: 2d 61 6c 67 6f 72 69 74 68 6d 7d 20 7b 0a 52 4f  -algorithm} {.RO
7870: 4c 4c 42 41 43 4b 20 7c 20 41 42 4f 52 54 20 7c  LLBACK | ABORT |
7880: 20 46 41 49 4c 20 7c 20 49 47 4e 4f 52 45 20 7c   FAIL | IGNORE |
7890: 20 52 45 50 4c 41 43 45 0a 7d 0a 0a 70 75 74 73   REPLACE.}..puts
78a0: 20 7b 0a 3c 70 3e 54 68 65 20 4f 4e 20 43 4f 4e   {.<p>The ON CON
78b0: 46 4c 49 43 54 20 63 6c 61 75 73 65 20 69 73 20  FLICT clause is 
78c0: 6e 6f 74 20 61 20 73 65 70 61 72 61 74 65 20 53  not a separate S
78d0: 51 4c 20 63 6f 6d 6d 61 6e 64 2e 20 20 49 74 20  QL command.  It 
78e0: 69 73 20 61 0a 6e 6f 6e 2d 73 74 61 6e 64 61 72  is a.non-standar
78f0: 64 20 63 6c 61 75 73 65 20 74 68 61 74 20 63 61  d clause that ca
7900: 6e 20 61 70 70 65 61 72 20 69 6e 20 6d 61 6e 79  n appear in many
7910: 20 6f 74 68 65 72 20 53 51 4c 20 63 6f 6d 6d 61   other SQL comma
7920: 6e 64 73 2e 0a 49 74 20 69 73 20 67 69 76 65 6e  nds..It is given
7930: 20 69 74 73 20 6f 77 6e 20 73 65 63 74 69 6f 6e   its own section
7940: 20 69 6e 20 74 68 69 73 20 64 6f 63 75 6d 65 6e   in this documen
7950: 74 20 62 65 63 61 75 73 65 20 69 74 20 69 73 20  t because it is 
7960: 6e 6f 74 0a 70 61 72 74 20 6f 66 20 73 74 61 6e  not.part of stan
7970: 64 61 72 64 20 53 51 4c 20 61 6e 64 20 74 68 65  dard SQL and the
7980: 72 65 66 6f 72 65 20 6d 69 67 68 74 20 6e 6f 74  refore might not
7990: 20 62 65 20 66 61 6d 69 6c 69 61 72 2e 3c 2f 70   be familiar.</p
79a0: 3e 0a 0a 3c 70 3e 54 68 65 20 73 79 6e 74 61 78  >..<p>The syntax
79b0: 20 66 6f 72 20 74 68 65 20 4f 4e 20 43 4f 4e 46   for the ON CONF
79c0: 4c 49 43 54 20 63 6c 61 75 73 65 20 69 73 20 61  LICT clause is a
79d0: 73 20 73 68 6f 77 6e 20 61 62 6f 76 65 20 66 6f  s shown above fo
79e0: 72 0a 74 68 65 20 43 52 45 41 54 45 20 54 41 42  r.the CREATE TAB
79f0: 4c 45 2c 20 43 52 45 41 54 45 20 49 4e 44 45 58  LE, CREATE INDEX
7a00: 2c 20 61 6e 64 20 42 45 47 49 4e 20 54 52 41 4e  , and BEGIN TRAN
7a10: 53 41 43 54 49 4f 4e 20 63 6f 6d 6d 61 6e 64 73  SACTION commands
7a20: 2e 0a 46 6f 72 20 74 68 65 20 43 4f 50 59 2c 20  ..For the COPY, 
7a30: 49 4e 53 45 52 54 2c 20 61 6e 64 20 55 50 44 41  INSERT, and UPDA
7a40: 54 45 20 63 6f 6d 6d 61 6e 64 73 2c 20 74 68 65  TE commands, the
7a50: 20 6b 65 79 77 6f 72 64 73 0a 22 4f 4e 20 43 4f   keywords."ON CO
7a60: 4e 46 4c 49 43 54 22 20 61 72 65 20 72 65 70 6c  NFLICT" are repl
7a70: 61 63 65 64 20 62 79 20 22 4f 52 22 2c 20 74 6f  aced by "OR", to
7a80: 20 6d 61 6b 65 20 74 68 65 20 73 79 6e 74 61 78   make the syntax
7a90: 20 73 65 65 6d 20 6d 6f 72 65 0a 6e 61 74 75 72   seem more.natur
7aa0: 61 6c 2e 20 20 42 75 74 20 74 68 65 20 6d 65 61  al.  But the mea
7ab0: 6e 69 6e 67 20 6f 66 20 74 68 65 20 63 6c 61 75  ning of the clau
7ac0: 73 65 20 69 73 20 74 68 65 20 73 61 6d 65 20 65  se is the same e
7ad0: 69 74 68 65 72 20 77 61 79 2e 3c 2f 70 3e 0a 0a  ither way.</p>..
7ae0: 3c 70 3e 54 68 65 20 4f 4e 20 43 4f 4e 46 4c 49  <p>The ON CONFLI
7af0: 43 54 20 63 6c 61 75 73 65 20 73 70 65 63 69 66  CT clause specif
7b00: 69 65 73 20 61 6e 20 61 6c 67 6f 72 69 74 68 6d  ies an algorithm
7b10: 20 75 73 65 64 20 74 6f 20 72 65 73 6f 6c 76 65   used to resolve
7b20: 0a 63 6f 6e 73 74 72 61 69 6e 74 20 63 6f 6e 66  .constraint conf
7b30: 6c 69 63 74 73 2e 20 20 54 68 65 72 65 20 61 72  licts.  There ar
7b40: 65 20 66 69 76 65 20 63 68 6f 69 63 65 73 3a 20  e five choices: 
7b50: 52 4f 4c 4c 42 41 43 4b 2c 20 41 42 4f 52 54 2c  ROLLBACK, ABORT,
7b60: 0a 46 41 49 4c 2c 20 49 47 4e 4f 52 45 2c 20 61  .FAIL, IGNORE, a
7b70: 6e 64 20 52 45 50 4c 41 43 45 2e 20 54 68 65 20  nd REPLACE. The 
7b80: 64 65 66 61 75 6c 74 20 61 6c 67 6f 72 69 74 68  default algorith
7b90: 6d 20 69 73 20 41 42 4f 52 54 2e 20 20 54 68 69  m is ABORT.  Thi
7ba0: 73 0a 69 73 20 77 68 61 74 20 74 68 65 79 20 6d  s.is what they m
7bb0: 65 61 6e 3a 3c 2f 70 3e 0a 0a 3c 64 6c 3e 0a 3c  ean:</p>..<dl>.<
7bc0: 64 74 3e 3c 62 3e 52 4f 4c 4c 42 41 43 4b 3c 2f  dt><b>ROLLBACK</
7bd0: 62 3e 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 57  b></dt>.<dd><p>W
7be0: 68 65 6e 20 61 20 63 6f 6e 73 74 72 61 69 6e 74  hen a constraint
7bf0: 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72   violation occur
7c00: 73 2c 20 61 6e 20 69 6d 6d 65 64 69 61 74 65 20  s, an immediate 
7c10: 52 4f 4c 4c 42 41 43 4b 0a 6f 63 63 75 72 73 2c  ROLLBACK.occurs,
7c20: 20 74 68 75 73 20 65 6e 64 69 6e 67 20 74 68 65   thus ending the
7c30: 20 63 75 72 72 65 6e 74 20 74 72 61 6e 73 61 63   current transac
7c40: 74 69 6f 6e 2c 20 61 6e 64 20 74 68 65 20 63 6f  tion, and the co
7c50: 6d 6d 61 6e 64 20 61 62 6f 72 74 73 0a 77 69 74  mmand aborts.wit
7c60: 68 20 61 20 72 65 74 75 72 6e 20 63 6f 64 65 20  h a return code 
7c70: 6f 66 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52  of SQLITE_CONSTR
7c80: 41 49 4e 54 2e 20 20 49 66 20 6e 6f 20 74 72 61  AINT.  If no tra
7c90: 6e 73 61 63 74 69 6f 6e 20 69 73 0a 61 63 74 69  nsaction is.acti
7ca0: 76 65 20 28 6f 74 68 65 72 20 74 68 61 6e 20 74  ve (other than t
7cb0: 68 65 20 69 6d 70 6c 69 65 64 20 74 72 61 6e 73  he implied trans
7cc0: 61 63 74 69 6f 6e 20 74 68 61 74 20 69 73 20 63  action that is c
7cd0: 72 65 61 74 65 64 20 6f 6e 20 65 76 65 72 79 0a  reated on every.
7ce0: 63 6f 6d 6d 61 6e 64 29 20 74 68 65 6e 20 74 68  command) then th
7cf0: 69 73 20 61 6c 67 6f 72 69 74 68 6d 20 77 6f 72  is algorithm wor
7d00: 6b 73 20 74 68 65 20 73 61 6d 65 20 61 73 20 41  ks the same as A
7d10: 42 4f 52 54 2e 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a  BORT.</p></dd>..
7d20: 3c 64 74 3e 3c 62 3e 41 42 4f 52 54 3c 2f 62 3e  <dt><b>ABORT</b>
7d30: 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 57 68 65  </dt>.<dd><p>Whe
7d40: 6e 20 61 20 63 6f 6e 73 74 72 61 69 6e 74 20 76  n a constraint v
7d50: 69 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72 73 2c  iolation occurs,
7d60: 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20 62 61 63   the command bac
7d70: 6b 73 20 6f 75 74 0a 61 6e 79 20 70 72 69 6f 72  ks out.any prior
7d80: 20 63 68 61 6e 67 65 73 20 69 74 20 6d 69 67 68   changes it migh
7d90: 74 20 68 61 76 65 20 6d 61 64 65 20 61 6e 64 20  t have made and 
7da0: 61 62 6f 72 74 73 20 77 69 74 68 20 61 20 72 65  aborts with a re
7db0: 74 75 72 6e 20 63 6f 64 65 0a 6f 66 20 53 51 4c  turn code.of SQL
7dc0: 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 2e 20  ITE_CONSTRAINT. 
7dd0: 20 42 75 74 20 6e 6f 20 52 4f 4c 4c 42 41 43 4b   But no ROLLBACK
7de0: 20 69 73 20 65 78 65 63 75 74 65 64 20 73 6f 20   is executed so 
7df0: 63 68 61 6e 67 65 73 0a 66 72 6f 6d 20 70 72 69  changes.from pri
7e00: 6f 72 20 63 6f 6d 6d 61 6e 64 73 20 77 69 74 68  or commands with
7e10: 69 6e 20 74 68 65 20 73 61 6d 65 20 74 72 61 6e  in the same tran
7e20: 73 61 63 74 69 6f 6e 0a 61 72 65 20 70 72 65 73  saction.are pres
7e30: 65 72 76 65 64 2e 20 20 54 68 69 73 20 69 73 20  erved.  This is 
7e40: 74 68 65 20 64 65 66 61 75 6c 74 20 62 65 68 61  the default beha
7e50: 76 69 6f 72 2e 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a  vior.</p></dd>..
7e60: 3c 64 74 3e 3c 62 3e 46 41 49 4c 3c 2f 62 3e 3c  <dt><b>FAIL</b><
7e70: 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 57 68 65 6e  /dt>.<dd><p>When
7e80: 20 61 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69   a constraint vi
7e90: 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72 73 2c 20  olation occurs, 
7ea0: 74 68 65 20 63 6f 6d 6d 61 6e 64 20 61 62 6f 72  the command abor
7eb0: 74 73 20 77 69 74 68 20 61 0a 72 65 74 75 72 6e  ts with a.return
7ec0: 20 63 6f 64 65 20 53 51 4c 49 54 45 5f 43 4f 4e   code SQLITE_CON
7ed0: 53 54 52 41 49 4e 54 2e 20 20 42 75 74 20 61 6e  STRAINT.  But an
7ee0: 79 20 63 68 61 6e 67 65 73 20 74 6f 20 74 68 65  y changes to the
7ef0: 20 64 61 74 61 62 61 73 65 20 74 68 61 74 0a 74   database that.t
7f00: 68 65 20 63 6f 6d 6d 61 6e 64 20 6d 61 64 65 20  he command made 
7f10: 70 72 69 6f 72 20 74 6f 20 65 6e 63 6f 75 6e 74  prior to encount
7f20: 65 72 69 6e 67 20 74 68 65 20 63 6f 6e 73 74 72  ering the constr
7f30: 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 0a 61  aint violation.a
7f40: 72 65 20 70 72 65 73 65 72 76 65 64 20 61 6e 64  re preserved and
7f50: 20 61 72 65 20 6e 6f 74 20 62 61 63 6b 65 64 20   are not backed 
7f60: 6f 75 74 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c  out.  For exampl
7f70: 65 2c 20 69 66 20 61 6e 20 55 50 44 41 54 45 0a  e, if an UPDATE.
7f80: 73 74 61 74 65 6d 65 6e 74 20 65 6e 63 6f 75 6e  statement encoun
7f90: 74 65 72 65 64 20 61 20 63 6f 6e 73 74 72 61 69  tered a constrai
7fa0: 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 6e 20  nt violation on 
7fb0: 74 68 65 20 31 30 30 74 68 20 72 6f 77 20 74 68  the 100th row th
7fc0: 61 74 0a 69 74 20 61 74 74 65 6d 70 74 73 20 74  at.it attempts t
7fd0: 6f 20 75 70 64 61 74 65 2c 20 74 68 65 6e 20 74  o update, then t
7fe0: 68 65 20 66 69 72 73 74 20 39 39 20 72 6f 77 20  he first 99 row 
7ff0: 63 68 61 6e 67 65 73 20 61 72 65 20 70 72 65 73  changes are pres
8000: 65 72 76 65 64 0a 62 75 74 20 63 68 61 6e 67 65  erved.but change
8010: 73 20 74 6f 20 72 6f 77 73 20 31 30 30 20 61 6e  s to rows 100 an
8020: 64 20 62 65 79 6f 6e 64 20 6e 65 76 65 72 20 6f  d beyond never o
8030: 63 63 75 72 2e 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a  ccur.</p></dd>..
8040: 3c 64 74 3e 3c 62 3e 49 47 4e 4f 52 45 3c 2f 62  <dt><b>IGNORE</b
8050: 3e 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 57 68  ></dt>.<dd><p>Wh
8060: 65 6e 20 61 20 63 6f 6e 73 74 72 61 69 6e 74 20  en a constraint 
8070: 76 69 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72 73  violation occurs
8080: 2c 20 74 68 65 20 6f 6e 65 20 72 6f 77 20 74 68  , the one row th
8090: 61 74 20 63 6f 6e 74 61 69 6e 73 0a 74 68 65 20  at contains.the 
80a0: 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61  constraint viola
80b0: 74 69 6f 6e 20 69 73 20 6e 6f 74 20 69 6e 73 65  tion is not inse
80c0: 72 74 65 64 20 6f 72 20 63 68 61 6e 67 65 64 2e  rted or changed.
80d0: 20 20 42 75 74 20 74 68 65 20 63 6f 6d 6d 61 6e    But the comman
80e0: 64 0a 63 6f 6e 74 69 6e 75 65 73 20 65 78 65 63  d.continues exec
80f0: 75 74 69 6e 67 20 6e 6f 72 6d 61 6c 6c 79 2e 20  uting normally. 
8100: 20 4f 74 68 65 72 20 72 6f 77 73 20 62 65 66 6f   Other rows befo
8110: 72 65 20 61 6e 64 20 61 66 74 65 72 20 74 68 65  re and after the
8120: 20 72 6f 77 20 74 68 61 74 0a 63 6f 6e 74 61 69   row that.contai
8130: 6e 65 64 20 74 68 65 20 63 6f 6e 73 74 72 61 69  ned the constrai
8140: 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 63 6f 6e  nt violation con
8150: 74 69 6e 75 65 20 74 6f 20 62 65 20 69 6e 73 65  tinue to be inse
8160: 72 74 65 64 20 6f 72 20 75 70 64 61 74 65 64 0a  rted or updated.
8170: 6e 6f 72 6d 61 6c 6c 79 2e 20 20 4e 6f 20 65 72  normally.  No er
8180: 72 6f 72 20 69 73 20 72 65 74 75 72 6e 65 64 2e  ror is returned.
8190: 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a 3c 64 74 3e 3c  </p></dd>..<dt><
81a0: 62 3e 52 45 50 4c 41 43 45 3c 2f 62 3e 3c 2f 64  b>REPLACE</b></d
81b0: 74 3e 0a 3c 64 64 3e 3c 70 3e 57 68 65 6e 20 61  t>.<dd><p>When a
81c0: 20 55 4e 49 51 55 45 20 63 6f 6e 73 74 72 61 69   UNIQUE constrai
81d0: 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 63 63  nt violation occ
81e0: 75 72 73 2c 20 74 68 65 20 70 72 65 2d 65 78 69  urs, the pre-exi
81f0: 73 74 69 6e 67 20 72 6f 77 0a 74 68 61 74 20 69  sting row.that i
8200: 73 20 63 61 75 73 69 6e 67 20 74 68 65 20 63 6f  s causing the co
8210: 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69  nstraint violati
8220: 6f 6e 20 69 73 20 72 65 6d 6f 76 65 64 20 70 72  on is removed pr
8230: 69 6f 72 20 74 6f 20 69 6e 73 65 72 74 69 6e 67  ior to inserting
8240: 0a 6f 72 20 75 70 64 61 74 69 6e 67 20 74 68 65  .or updating the
8250: 20 63 75 72 72 65 6e 74 20 72 6f 77 2e 20 20 54   current row.  T
8260: 68 75 73 20 74 68 65 20 69 6e 73 65 72 74 20 6f  hus the insert o
8270: 72 20 75 70 64 61 74 65 20 61 6c 77 61 79 73 20  r update always 
8280: 6f 63 63 75 72 73 2e 0a 54 68 65 20 63 6f 6d 6d  occurs..The comm
8290: 61 6e 64 20 63 6f 6e 74 69 6e 75 65 73 20 65 78  and continues ex
82a0: 65 63 75 74 69 6e 67 20 6e 6f 72 6d 61 6c 6c 79  ecuting normally
82b0: 2e 20 20 4e 6f 20 65 72 72 6f 72 20 69 73 20 72  .  No error is r
82c0: 65 74 75 72 6e 65 64 2e 3c 2f 70 3e 0a 3c 70 3e  eturned.</p>.<p>
82d0: 49 66 20 61 20 4e 4f 54 20 4e 55 4c 4c 20 63 6f  If a NOT NULL co
82e0: 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69  nstraint violati
82f0: 6f 6e 20 6f 63 63 75 72 73 2c 20 74 68 65 20 4e  on occurs, the N
8300: 55 4c 4c 20 76 61 6c 75 65 20 69 73 20 72 65 70  ULL value is rep
8310: 6c 61 63 65 64 0a 62 79 20 74 68 65 20 64 65 66  laced.by the def
8320: 61 75 6c 74 20 76 61 6c 75 65 20 66 6f 72 20 74  ault value for t
8330: 68 61 74 20 63 6f 6c 75 6d 6e 2e 20 20 49 66 20  hat column.  If 
8340: 74 68 65 20 63 6f 6c 75 6d 6e 20 68 61 73 20 6e  the column has n
8350: 6f 20 64 65 66 61 75 6c 74 0a 76 61 6c 75 65 2c  o default.value,
8360: 20 74 68 65 6e 20 74 68 65 20 41 42 4f 52 54 20   then the ABORT 
8370: 61 6c 67 6f 72 69 74 68 6d 20 69 73 20 75 73 65  algorithm is use
8380: 64 2e 3c 2f 70 3e 0a 3c 2f 64 64 3e 0a 3c 2f 64  d.</p>.</dd>.</d
8390: 6c 3e 0a 0a 3c 70 3e 0a 54 68 65 20 63 6f 6e 66  l>..<p>.The conf
83a0: 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20  lict resolution 
83b0: 61 6c 67 6f 72 69 74 68 6d 20 63 61 6e 20 62 65  algorithm can be
83c0: 20 73 70 65 63 69 66 69 65 64 20 69 6e 20 74 68   specified in th
83d0: 72 65 65 20 70 6c 61 63 65 73 2c 0a 69 6e 20 6f  ree places,.in o
83e0: 72 64 65 72 20 66 72 6f 6d 20 6c 6f 77 65 73 74  rder from lowest
83f0: 20 74 6f 20 68 69 67 68 65 73 74 20 70 72 65 63   to highest prec
8400: 65 64 65 6e 63 65 3a 0a 3c 2f 70 3e 0a 0a 3c 6f  edence:.</p>..<o
8410: 6c 3e 0a 3c 6c 69 3e 3c 70 3e 0a 4f 6e 20 61 20  l>.<li><p>.On a 
8420: 42 45 47 49 4e 20 54 52 41 4e 53 41 43 54 49 4f  BEGIN TRANSACTIO
8430: 4e 20 63 6f 6d 6d 61 6e 64 2e 0a 3c 2f 70 3e 3c  N command..</p><
8440: 2f 6c 69 3e 0a 0a 3c 6c 69 3e 3c 70 3e 0a 4f 6e  /li>..<li><p>.On
8450: 20 69 6e 64 69 76 69 64 75 61 6c 20 63 6f 6e 73   individual cons
8460: 74 72 61 69 6e 74 73 20 77 69 74 68 69 6e 20 61  traints within a
8470: 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 6f 72   CREATE TABLE or
8480: 20 43 52 45 41 54 45 20 49 4e 44 45 58 0a 73 74   CREATE INDEX.st
8490: 61 74 65 6d 65 6e 74 2e 0a 3c 2f 70 3e 3c 2f 6c  atement..</p></l
84a0: 69 3e 0a 0a 3c 6c 69 3e 3c 70 3e 0a 49 6e 20 74  i>..<li><p>.In t
84b0: 68 65 20 4f 52 20 63 6c 61 75 73 65 20 6f 66 20  he OR clause of 
84c0: 61 20 43 4f 50 59 2c 20 49 4e 53 45 52 54 2c 20  a COPY, INSERT, 
84d0: 6f 72 20 55 50 44 41 54 45 20 63 6f 6d 6d 61 6e  or UPDATE comman
84e0: 64 2e 0a 3c 2f 70 3e 3c 2f 6c 69 3e 0a 3c 2f 6f  d..</p></li>.</o
84f0: 6c 3e 0a 0a 3c 70 3e 54 68 65 20 61 6c 67 6f 72  l>..<p>The algor
8500: 69 74 68 6d 20 73 70 65 63 69 66 69 65 64 20 69  ithm specified i
8510: 6e 20 74 68 65 20 4f 52 20 63 6c 61 75 73 65 20  n the OR clause 
8520: 6f 66 20 61 20 43 4f 50 59 2c 20 49 4e 53 45 52  of a COPY, INSER
8530: 54 2c 20 6f 72 20 55 50 44 41 54 45 0a 6f 76 65  T, or UPDATE.ove
8540: 72 72 69 64 65 73 20 61 6e 79 20 61 6c 67 6f 72  rrides any algor
8550: 69 74 68 6d 20 73 70 65 63 69 66 69 65 64 20 62  ithm specified b
8560: 79 20 61 20 43 52 45 41 54 45 20 54 41 42 4c 45  y a CREATE TABLE
8570: 20 6f 72 20 43 52 45 41 54 45 20 49 4e 44 45 58   or CREATE INDEX
8580: 2e 0a 54 68 65 20 61 6c 67 6f 72 69 74 68 6d 20  ..The algorithm 
8590: 73 70 65 63 69 66 69 65 64 20 77 69 74 68 69 6e  specified within
85a0: 20 61 20 43 52 45 41 54 45 20 54 41 42 4c 45 20   a CREATE TABLE 
85b0: 6f 72 20 43 52 45 41 54 45 20 49 4e 44 45 58 20  or CREATE INDEX 
85c0: 77 69 6c 6c 2c 20 69 6e 20 74 75 72 6e 2c 0a 6f  will, in turn,.o
85d0: 76 65 72 72 69 64 65 20 74 68 65 20 61 6c 67 6f  verride the algo
85e0: 72 69 74 68 6d 20 73 70 65 63 69 66 69 65 64 20  rithm specified 
85f0: 62 79 20 61 20 42 45 47 49 4e 20 54 52 41 4e 53  by a BEGIN TRANS
8600: 41 43 54 49 4f 4e 20 63 6f 6d 6d 61 6e 64 2e 0a  ACTION command..
8610: 49 66 20 6e 6f 20 61 6c 67 6f 72 69 74 68 6d 20  If no algorithm 
8620: 69 73 20 73 70 65 63 69 66 69 65 64 20 61 6e 79  is specified any
8630: 77 68 65 72 65 2c 20 74 68 65 20 41 42 4f 52 54  where, the ABORT
8640: 20 61 6c 67 6f 72 69 74 68 6d 20 69 73 20 75 73   algorithm is us
8650: 65 64 2e 3c 2f 70 3e 0a 0a 7d 0a 23 20 3c 70 3e  ed.</p>..}.# <p>
8660: 46 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 69  For additional i
8670: 6e 66 6f 72 6d 61 74 69 6f 6e 2c 20 73 65 65 20  nformation, see 
8680: 0a 23 20 3c 61 20 68 72 65 66 3d 22 63 6f 6e 66  .# <a href="conf
8690: 6c 69 63 74 2e 68 74 6d 6c 22 3e 63 6f 6e 66 6c  lict.html">confl
86a0: 69 63 74 2e 68 74 6d 6c 3c 2f 61 3e 2e 3c 2f 70  ict.html</a>.</p
86b0: 3e 0a 0a 0a 53 65 63 74 69 6f 6e 20 50 52 41 47  >...Section PRAG
86c0: 4d 41 20 70 72 61 67 6d 61 0a 0a 53 79 6e 74 61  MA pragma..Synta
86d0: 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74  x {sql-statement
86e0: 7d 20 7b 0a 50 52 41 47 4d 41 20 3c 6e 61 6d 65  } {.PRAGMA <name
86f0: 3e 20 3d 20 3c 76 61 6c 75 65 3e 20 7c 0a 50 52  > = <value> |.PR
8700: 41 47 4d 41 20 3c 66 75 6e 63 74 69 6f 6e 3e 28  AGMA <function>(
8710: 3c 61 72 67 3e 29 0a 7d 0a 0a 70 75 74 73 20 7b  <arg>).}..puts {
8720: 0a 3c 70 3e 54 68 65 20 50 52 41 47 4d 41 20 63  .<p>The PRAGMA c
8730: 6f 6d 6d 61 6e 64 20 69 73 20 75 73 65 64 20 74  ommand is used t
8740: 6f 20 6d 6f 64 69 66 79 20 74 68 65 20 6f 70 65  o modify the ope
8750: 72 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 53 51  ration of the SQ
8760: 4c 69 74 65 20 6c 69 62 72 61 72 79 2e 0a 54 68  Lite library..Th
8770: 65 20 70 72 61 67 6d 61 20 63 6f 6d 6d 61 6e 64  e pragma command
8780: 20 69 73 20 65 78 70 65 72 69 6d 65 6e 74 61 6c   is experimental
8790: 20 61 6e 64 20 73 70 65 63 69 66 69 63 20 70 72   and specific pr
87a0: 61 67 6d 61 20 73 74 61 74 65 6d 65 6e 74 73 20  agma statements 
87b0: 6d 61 79 0a 72 65 6d 6f 76 65 64 20 6f 72 20 61  may.removed or a
87c0: 64 64 65 64 20 69 6e 20 66 75 74 75 72 65 20 72  dded in future r
87d0: 65 6c 65 61 73 65 73 20 6f 66 20 53 51 4c 69 74  eleases of SQLit
87e0: 65 2e 20 20 55 73 65 20 74 68 69 73 20 63 6f 6d  e.  Use this com
87f0: 6d 61 6e 64 0a 77 69 74 68 20 63 61 75 74 69 6f  mand.with cautio
8800: 6e 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 63  n.</p>..<p>The c
8810: 75 72 72 65 6e 74 20 69 6d 70 6c 65 6d 65 6e 74  urrent implement
8820: 61 74 69 6f 6e 20 73 75 70 70 6f 72 74 73 20 74  ation supports t
8830: 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 70 72 61  he following pra
8840: 67 6d 61 73 3a 3c 2f 70 3e 0a 0a 3c 75 6c 3e 0a  gmas:</p>..<ul>.
8850: 3c 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d 41  <li><p><b>PRAGMA
8860: 20 63 61 63 68 65 5f 73 69 7a 65 3b 0a 20 20 20   cache_size;.   
8870: 20 20 20 20 3c 62 72 3e 50 52 41 47 4d 41 20 63      <br>PRAGMA c
8880: 61 63 68 65 5f 73 69 7a 65 20 3d 20 3c 2f 62 3e  ache_size = </b>
8890: 3c 69 3e 4e 75 6d 62 65 72 2d 6f 66 2d 70 61 67  <i>Number-of-pag
88a0: 65 73 3c 2f 69 3e 3c 62 3e 3b 3c 2f 62 3e 3c 2f  es</i><b>;</b></
88b0: 70 3e 0a 20 20 20 20 3c 70 3e 51 75 65 72 79 20  p>.    <p>Query 
88c0: 6f 72 20 63 68 61 6e 67 65 20 74 68 65 20 6d 61  or change the ma
88d0: 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66 20  ximum number of 
88e0: 64 61 74 61 62 61 73 65 20 64 69 73 6b 20 70 61  database disk pa
88f0: 67 65 73 20 74 68 61 74 20 53 51 4c 69 74 65 0a  ges that SQLite.
8900: 20 20 20 20 77 69 6c 6c 20 68 6f 6c 64 20 69 6e      will hold in
8910: 20 6d 65 6d 6f 72 79 20 61 74 20 6f 6e 63 65 2e   memory at once.
8920: 20 20 45 61 63 68 20 70 61 67 65 20 75 73 65 73    Each page uses
8930: 20 61 62 6f 75 74 20 31 2e 35 4b 20 6f 66 20 6d   about 1.5K of m
8940: 65 6d 6f 72 79 2e 0a 20 20 20 20 54 68 65 20 64  emory..    The d
8950: 65 66 61 75 6c 74 20 63 61 63 68 65 20 73 69 7a  efault cache siz
8960: 65 20 69 73 20 32 30 30 30 2e 20 20 49 66 20 79  e is 2000.  If y
8970: 6f 75 20 61 72 65 20 64 6f 69 6e 67 20 55 50 44  ou are doing UPD
8980: 41 54 45 73 20 6f 72 20 44 45 4c 45 54 45 73 0a  ATEs or DELETEs.
8990: 20 20 20 20 74 68 61 74 20 63 68 61 6e 67 65 20      that change 
89a0: 6d 61 6e 79 20 72 6f 77 73 20 6f 66 20 61 20 64  many rows of a d
89b0: 61 74 61 62 61 73 65 20 61 6e 64 20 79 6f 75 20  atabase and you 
89c0: 64 6f 20 6e 6f 74 20 6d 69 6e 64 20 69 66 20 53  do not mind if S
89d0: 51 4c 69 74 65 0a 20 20 20 20 75 73 65 73 20 6d  QLite.    uses m
89e0: 6f 72 65 20 6d 65 6d 6f 72 79 2c 20 79 6f 75 20  ore memory, you 
89f0: 63 61 6e 20 69 6e 63 72 65 61 73 65 20 74 68 65  can increase the
8a00: 20 63 61 63 68 65 20 73 69 7a 65 20 66 6f 72 20   cache size for 
8a10: 61 20 70 6f 73 73 69 62 6c 65 20 73 70 65 65 64  a possible speed
8a20: 0a 20 20 20 20 69 6d 70 72 6f 76 65 6d 65 6e 74  .    improvement
8a30: 2e 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e 57 68 65  .</p>.    <p>Whe
8a40: 6e 20 79 6f 75 20 63 68 61 6e 67 65 20 74 68 65  n you change the
8a50: 20 63 61 63 68 65 20 73 69 7a 65 20 75 73 69 6e   cache size usin
8a60: 67 20 74 68 65 20 63 61 63 68 65 5f 73 69 7a 65  g the cache_size
8a70: 20 70 72 61 67 6d 61 2c 20 74 68 65 0a 20 20 20   pragma, the.   
8a80: 20 63 68 61 6e 67 65 20 6f 6e 6c 79 20 65 6e 64   change only end
8a90: 75 72 65 73 20 66 6f 72 20 74 68 65 20 63 75 72  ures for the cur
8aa0: 72 65 6e 74 20 73 65 73 73 69 6f 6e 2e 20 20 54  rent session.  T
8ab0: 68 65 20 63 61 63 68 65 20 73 69 7a 65 20 72 65  he cache size re
8ac0: 76 65 72 74 73 0a 20 20 20 20 74 6f 20 74 68 65  verts.    to the
8ad0: 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 77   default value w
8ae0: 68 65 6e 20 74 68 65 20 64 61 74 61 62 61 73 65  hen the database
8af0: 20 69 73 20 63 6c 6f 73 65 64 20 61 6e 64 20 72   is closed and r
8b00: 65 6f 70 65 6e 65 64 2e 20 20 55 73 65 0a 20 20  eopened.  Use.  
8b10: 20 20 74 68 65 20 3c 62 3e 64 65 66 61 75 6c 74    the <b>default
8b20: 5f 63 61 63 68 65 5f 73 69 7a 65 3c 2f 62 3e 20  _cache_size</b> 
8b30: 70 72 61 67 6d 61 20 74 6f 20 63 68 65 63 6b 20  pragma to check 
8b40: 74 68 65 20 63 61 63 68 65 20 73 69 7a 65 20 70  the cache size p
8b50: 65 72 6d 61 6e 65 6e 74 6c 79 0a 20 20 20 20 3c  ermanently.    <
8b60: 2f 70 3e 3c 2f 6c 69 3e 0a 0a 3c 6c 69 3e 3c 70  /p></li>..<li><p
8b70: 3e 3c 62 3e 50 52 41 47 4d 41 20 63 6f 75 6e 74  ><b>PRAGMA count
8b80: 5f 63 68 61 6e 67 65 73 20 3d 20 4f 4e 3b 0a 20  _changes = ON;. 
8b90: 20 20 20 20 20 20 3c 62 72 3e 50 52 41 47 4d 41        <br>PRAGMA
8ba0: 20 63 6f 75 6e 74 5f 63 68 61 6e 67 65 73 20 3d   count_changes =
8bb0: 20 4f 46 46 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20 20   OFF;</b></p>.  
8bc0: 20 20 3c 70 3e 57 68 65 6e 20 6f 6e 2c 20 74 68    <p>When on, th
8bd0: 65 20 43 4f 55 4e 54 5f 43 48 41 4e 47 45 53 20  e COUNT_CHANGES 
8be0: 70 72 61 67 6d 61 20 63 61 75 73 65 73 20 74 68  pragma causes th
8bf0: 65 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74  e callback funct
8c00: 69 6f 6e 20 74 6f 0a 20 20 20 20 62 65 20 69 6e  ion to.    be in
8c10: 76 6f 6b 65 64 20 6f 6e 63 65 20 66 6f 72 20 65  voked once for e
8c20: 61 63 68 20 44 45 4c 45 54 45 2c 20 49 4e 53 45  ach DELETE, INSE
8c30: 52 54 2c 20 6f 72 20 55 50 44 41 54 45 20 6f 70  RT, or UPDATE op
8c40: 65 72 61 74 69 6f 6e 2e 20 20 54 68 65 0a 20 20  eration.  The.  
8c50: 20 20 61 72 67 75 6d 65 6e 74 20 69 73 20 74 68    argument is th
8c60: 65 20 6e 75 6d 62 65 72 20 6f 66 20 72 6f 77 73  e number of rows
8c70: 20 74 68 61 74 20 77 65 72 65 20 63 68 61 6e 67   that were chang
8c80: 65 64 2e 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e 54  ed.</p>.    <p>T
8c90: 68 69 73 20 70 72 61 67 6d 61 20 6d 61 79 20 62  his pragma may b
8ca0: 65 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d 20 66  e removed from f
8cb0: 75 74 75 72 65 20 76 65 72 73 69 6f 6e 73 20 6f  uture versions o
8cc0: 66 20 53 51 4c 69 74 65 2e 0a 20 20 20 20 43 6f  f SQLite..    Co
8cd0: 6e 73 69 64 65 72 20 75 73 69 6e 67 20 74 68 65  nsider using the
8ce0: 20 3c 62 3e 73 71 6c 69 74 65 5f 63 68 61 6e 67   <b>sqlite_chang
8cf0: 65 73 28 29 3c 2f 62 3e 20 41 50 49 20 66 75 6e  es()</b> API fun
8d00: 63 74 69 6f 6e 20 69 6e 73 74 65 61 64 2e 3c 2f  ction instead.</
8d10: 70 3e 3c 2f 6c 69 3e 0a 0a 3c 6c 69 3e 3c 70 3e  p></li>..<li><p>
8d20: 3c 62 3e 50 52 41 47 4d 41 20 64 65 66 61 75 6c  <b>PRAGMA defaul
8d30: 74 5f 63 61 63 68 65 5f 73 69 7a 65 3b 0a 20 20  t_cache_size;.  
8d40: 20 20 20 20 20 3c 62 72 3e 50 52 41 47 4d 41 20       <br>PRAGMA 
8d50: 64 65 66 61 75 6c 74 5f 63 61 63 68 65 5f 73 69  default_cache_si
8d60: 7a 65 20 3d 20 3c 2f 62 3e 3c 69 3e 4e 75 6d 62  ze = </b><i>Numb
8d70: 65 72 2d 6f 66 2d 70 61 67 65 73 3c 2f 69 3e 3c  er-of-pages</i><
8d80: 62 3e 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20 20 20 20  b>;</b></p>.    
8d90: 3c 70 3e 51 75 65 72 79 20 6f 72 20 63 68 61 6e  <p>Query or chan
8da0: 67 65 20 74 68 65 20 6d 61 78 69 6d 75 6d 20 6e  ge the maximum n
8db0: 75 6d 62 65 72 20 6f 66 20 64 61 74 61 62 61 73  umber of databas
8dc0: 65 20 64 69 73 6b 20 70 61 67 65 73 20 74 68 61  e disk pages tha
8dd0: 74 20 53 51 4c 69 74 65 0a 20 20 20 20 77 69 6c  t SQLite.    wil
8de0: 6c 20 68 6f 6c 64 20 69 6e 20 6d 65 6d 6f 72 79  l hold in memory
8df0: 20 61 74 20 6f 6e 63 65 2e 20 20 45 61 63 68 20   at once.  Each 
8e00: 70 61 67 65 20 75 73 65 73 20 61 62 6f 75 74 20  page uses about 
8e10: 31 2e 35 4b 20 6f 66 20 6d 65 6d 6f 72 79 2e 0a  1.5K of memory..
8e20: 20 20 20 20 54 68 69 73 20 70 72 61 67 6d 61 20      This pragma 
8e30: 77 6f 72 6b 73 20 6c 69 6b 65 20 74 68 65 20 3c  works like the <
8e40: 62 3e 63 61 63 68 65 5f 73 69 7a 65 3c 2f 62 3e  b>cache_size</b>
8e50: 20 70 72 61 67 6d 61 20 77 69 74 68 20 74 68 65   pragma with the
8e60: 20 61 64 64 69 74 69 6f 6e 0a 20 20 20 20 66 65   addition.    fe
8e70: 61 74 75 72 65 20 74 68 61 74 20 69 74 20 63 68  ature that it ch
8e80: 61 6e 67 65 73 20 74 68 65 20 63 61 63 68 65 20  anges the cache 
8e90: 73 69 7a 65 20 70 65 72 73 69 73 74 65 6e 74 6c  size persistentl
8ea0: 79 2e 20 20 57 69 74 68 20 74 68 69 73 20 70 72  y.  With this pr
8eb0: 61 67 6d 61 2c 0a 20 20 20 20 79 6f 75 20 63 61  agma,.    you ca
8ec0: 6e 20 73 65 74 20 74 68 65 20 63 61 63 68 65 20  n set the cache 
8ed0: 73 69 7a 65 20 6f 6e 63 65 20 61 6e 64 20 74 68  size once and th
8ee0: 61 74 20 73 65 74 74 69 6e 67 20 69 73 20 72 65  at setting is re
8ef0: 74 61 69 6e 65 64 20 61 6e 64 20 72 65 75 73 65  tained and reuse
8f00: 64 0a 20 20 20 20 65 76 65 72 79 74 69 6d 65 20  d.    everytime 
8f10: 79 6f 75 20 72 65 6f 70 65 6e 20 74 68 65 20 64  you reopen the d
8f20: 61 74 61 62 61 73 65 2e 3c 2f 70 3e 3c 2f 6c 69  atabase.</p></li
8f30: 3e 0a 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41  >..<li><p><b>PRA
8f40: 47 4d 41 20 64 65 66 61 75 6c 74 5f 73 79 6e 63  GMA default_sync
8f50: 68 72 6f 6e 6f 75 73 3b 0a 20 20 20 20 20 20 20  hronous;.       
8f60: 3c 62 72 3e 50 52 41 47 4d 41 20 64 65 66 61 75  <br>PRAGMA defau
8f70: 6c 74 5f 73 79 6e 63 68 72 6f 6e 6f 75 73 20 3d  lt_synchronous =
8f80: 20 4f 4e 3b 0a 20 20 20 20 20 20 20 3c 62 72 3e   ON;.       <br>
8f90: 50 52 41 47 4d 41 20 64 65 66 61 75 6c 74 5f 73  PRAGMA default_s
8fa0: 79 6e 63 68 72 6f 6e 6f 75 73 20 3d 20 4f 46 46  ynchronous = OFF
8fb0: 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20 20 20 20 3c 70  ;</b></p>.    <p
8fc0: 3e 51 75 65 72 79 20 6f 72 20 63 68 61 6e 67 65  >Query or change
8fd0: 20 74 68 65 20 73 65 74 74 69 6e 67 20 6f 66 20   the setting of 
8fe0: 74 68 65 20 22 73 79 6e 63 68 72 6f 6e 6f 75 73  the "synchronous
8ff0: 22 20 66 6c 61 67 20 69 6e 0a 20 20 20 20 74 68  " flag in.    th
9000: 65 20 64 61 74 61 62 61 73 65 2e 20 20 57 68 65  e database.  Whe
9010: 6e 20 73 79 6e 63 68 72 6f 6e 6f 75 73 20 69 73  n synchronous is
9020: 20 6f 6e 20 28 74 68 65 20 64 65 66 61 75 6c 74   on (the default
9030: 29 2c 20 74 68 65 20 53 51 4c 69 74 65 20 64 61  ), the SQLite da
9040: 74 61 62 61 73 65 0a 20 20 20 20 65 6e 67 69 6e  tabase.    engin
9050: 65 20 77 69 6c 6c 20 70 61 75 73 65 20 61 74 20  e will pause at 
9060: 63 72 69 74 69 63 61 6c 20 6d 6f 6d 65 6e 74 73  critical moments
9070: 20 74 6f 20 6d 61 6b 65 20 73 75 72 65 20 74 68   to make sure th
9080: 61 74 20 64 61 74 61 20 68 61 73 20 61 63 74 75  at data has actu
9090: 61 6c 6c 79 0a 20 20 20 20 62 65 20 77 72 69 74  ally.    be writ
90a0: 74 65 6e 20 74 6f 20 74 68 65 20 64 69 73 6b 20  ten to the disk 
90b0: 73 75 72 66 61 63 65 2e 20 20 28 49 6e 20 6f 74  surface.  (In ot
90c0: 68 65 72 20 77 6f 72 64 73 2c 20 69 74 20 69 6e  her words, it in
90d0: 76 6f 6b 65 73 20 74 68 65 0a 20 20 20 20 65 71  vokes the.    eq
90e0: 75 69 76 61 6c 65 6e 74 20 6f 66 20 74 68 65 20  uivalent of the 
90f0: 3c 62 3e 66 73 79 6e 63 28 29 3c 2f 62 3e 20 73  <b>fsync()</b> s
9100: 79 73 74 65 6d 20 63 61 6c 6c 2e 29 20 20 49 6e  ystem call.)  In
9110: 20 73 79 6e 63 68 72 6f 6e 6f 75 73 20 6d 6f 64   synchronous mod
9120: 65 2c 0a 20 20 20 20 61 6e 20 53 51 4c 69 74 65  e,.    an SQLite
9130: 20 64 61 74 61 62 61 73 65 20 73 68 6f 75 6c 64   database should
9140: 20 62 65 20 66 75 6c 6c 79 20 72 65 63 6f 76 65   be fully recove
9150: 72 61 62 6c 65 20 65 76 65 6e 20 69 66 20 74 68  rable even if th
9160: 65 20 6f 70 65 72 61 74 69 6e 67 0a 20 20 20 20  e operating.    
9170: 73 79 73 74 65 6d 20 63 72 61 73 68 65 73 20 6f  system crashes o
9180: 72 20 70 6f 77 65 72 20 69 73 20 69 6e 74 65 72  r power is inter
9190: 72 75 70 74 65 64 20 75 6e 65 78 70 65 63 74 65  rupted unexpecte
91a0: 64 6c 79 2e 20 20 54 68 65 20 70 65 6e 61 6c 74  dly.  The penalt
91b0: 79 20 66 6f 72 0a 20 20 20 20 74 68 69 73 20 61  y for.    this a
91c0: 73 73 75 72 61 6e 63 65 20 69 73 20 74 68 61 74  ssurance is that
91d0: 20 73 6f 6d 65 20 64 61 74 61 62 61 73 65 20 6f   some database o
91e0: 70 65 72 61 74 69 6f 6e 73 20 74 61 6b 65 20 6c  perations take l
91f0: 6f 6e 67 65 72 20 62 65 63 61 75 73 65 20 74 68  onger because th
9200: 65 0a 20 20 20 20 65 6e 67 69 6e 65 20 68 61 73  e.    engine has
9210: 20 74 6f 20 77 61 69 74 20 6f 6e 20 74 68 65 20   to wait on the 
9220: 28 72 65 6c 61 74 69 76 65 6c 79 20 73 6c 6f 77  (relatively slow
9230: 29 20 64 69 73 6b 20 64 72 69 76 65 2e 20 20 54  ) disk drive.  T
9240: 68 65 20 61 6c 74 65 72 6e 61 74 69 76 65 0a 20  he alternative. 
9250: 20 20 20 69 73 20 74 6f 20 74 75 72 6e 20 73 79     is to turn sy
9260: 6e 63 68 72 6f 6e 6f 75 73 20 6f 66 66 2e 20 20  nchronous off.  
9270: 57 69 74 68 20 73 79 6e 63 68 72 6f 6e 6f 75 73  With synchronous
9280: 20 6f 66 66 2c 20 53 51 4c 69 74 65 20 63 6f 6e   off, SQLite con
9290: 74 69 6e 75 65 73 0a 20 20 20 20 70 72 6f 63 65  tinues.    proce
92a0: 73 73 69 6e 67 20 61 73 20 73 6f 6f 6e 20 61 73  ssing as soon as
92b0: 20 69 74 20 68 61 73 20 68 61 6e 64 65 64 20 64   it has handed d
92c0: 61 74 61 20 6f 66 66 20 74 6f 20 74 68 65 20 6f  ata off to the o
92d0: 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 2e  perating system.
92e0: 0a 20 20 20 20 49 66 20 74 68 65 20 61 70 70 6c  .    If the appl
92f0: 69 63 61 74 69 6f 6e 20 72 75 6e 6e 69 6e 67 20  ication running 
9300: 53 51 4c 69 74 65 20 63 72 61 73 68 65 73 2c 20  SQLite crashes, 
9310: 74 68 65 20 64 61 74 61 20 77 69 6c 6c 20 62 65  the data will be
9320: 20 73 61 66 65 2c 20 62 75 74 0a 20 20 20 20 74   safe, but.    t
9330: 68 65 20 64 61 74 61 62 61 73 65 20 63 6f 75 6c  he database coul
9340: 64 20 28 69 6e 20 74 68 65 6f 72 79 29 20 62 65  d (in theory) be
9350: 63 6f 6d 65 20 63 6f 72 72 75 70 74 65 64 20 69  come corrupted i
9360: 66 20 74 68 65 20 6f 70 65 72 61 74 69 6e 67 20  f the operating 
9370: 73 79 73 74 65 6d 0a 20 20 20 20 63 72 61 73 68  system.    crash
9380: 65 73 20 6f 72 20 74 68 65 20 63 6f 6d 70 75 74  es or the comput
9390: 65 72 20 73 75 64 64 65 6e 6c 79 20 6c 6f 73 65  er suddenly lose
93a0: 73 20 70 6f 77 65 72 2e 20 20 4f 6e 20 74 68 65  s power.  On the
93b0: 20 6f 74 68 65 72 20 68 61 6e 64 2c 20 73 6f 6d   other hand, som
93c0: 65 0a 20 20 20 20 6f 70 65 72 61 74 69 6f 6e 73  e.    operations
93d0: 20 61 72 65 20 61 73 20 6d 75 63 68 20 61 73 20   are as much as 
93e0: 35 30 20 6f 72 20 6d 6f 72 65 20 74 69 6d 65 73  50 or more times
93f0: 20 66 61 73 74 65 72 20 77 69 74 68 20 73 79 6e   faster with syn
9400: 63 68 72 6f 6e 6f 75 73 20 6f 66 66 2e 0a 20 20  chronous off..  
9410: 20 20 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e 54 68    </p>.    <p>Th
9420: 69 73 20 70 72 61 67 6d 61 20 63 68 61 6e 67 65  is pragma change
9430: 73 20 74 68 65 20 73 79 6e 63 68 72 6f 6e 6f 75  s the synchronou
9440: 73 20 6d 6f 64 65 20 70 65 72 73 69 73 74 65 6e  s mode persisten
9450: 74 6c 79 2e 20 20 4f 6e 63 65 20 63 68 61 6e 67  tly.  Once chang
9460: 65 64 2c 0a 20 20 20 20 74 68 65 20 6d 6f 64 65  ed,.    the mode
9470: 20 73 74 61 79 73 20 61 73 20 73 65 74 20 65 76   stays as set ev
9480: 65 6e 20 69 66 20 74 68 65 20 64 61 74 61 62 61  en if the databa
9490: 73 65 20 69 73 20 63 6c 6f 73 65 64 20 61 6e 64  se is closed and
94a0: 20 72 65 6f 70 65 6e 65 64 2e 20 20 54 68 65 0a   reopened.  The.
94b0: 20 20 20 20 3c 62 3e 73 79 6e 63 68 72 6f 6e 6f      <b>synchrono
94c0: 75 73 3c 2f 62 3e 20 70 72 61 67 6d 61 20 64 6f  us</b> pragma do
94d0: 65 73 20 74 68 65 20 73 61 6d 65 20 74 68 69 6e  es the same thin
94e0: 67 20 62 75 74 20 6f 6e 6c 79 20 61 70 70 6c 69  g but only appli
94f0: 65 73 20 74 68 65 20 73 65 74 74 69 6e 67 0a 20  es the setting. 
9500: 20 20 20 74 6f 20 74 68 65 20 63 75 72 72 65 6e     to the curren
9510: 74 20 73 65 73 73 69 6f 6e 2e 3c 2f 70 3e 0a 0a  t session.</p>..
9520: 3c 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d 41  <li><p><b>PRAGMA
9530: 20 65 6d 70 74 79 5f 72 65 73 75 6c 74 5f 63 61   empty_result_ca
9540: 6c 6c 62 61 63 6b 73 20 3d 20 4f 4e 3b 0a 20 20  llbacks = ON;.  
9550: 20 20 20 20 20 3c 62 72 3e 50 52 41 47 4d 41 20       <br>PRAGMA 
9560: 65 6d 70 74 79 5f 72 65 73 75 6c 74 5f 63 61 6c  empty_result_cal
9570: 6c 62 61 63 6b 73 20 3d 20 4f 46 46 3b 3c 2f 62  lbacks = OFF;</b
9580: 3e 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e 57 68 65  ></p>.    <p>Whe
9590: 6e 20 6f 6e 2c 20 74 68 65 20 45 4d 50 54 59 5f  n on, the EMPTY_
95a0: 52 45 53 55 4c 54 5f 43 41 4c 4c 42 41 43 4b 53  RESULT_CALLBACKS
95b0: 20 70 72 61 67 6d 61 20 63 61 75 73 65 73 20 74   pragma causes t
95c0: 68 65 20 63 61 6c 6c 62 61 63 6b 0a 20 20 20 20  he callback.    
95d0: 66 75 6e 63 74 69 6f 6e 20 74 6f 20 62 65 20 69  function to be i
95e0: 6e 76 6f 6b 65 64 20 6f 6e 63 65 20 66 6f 72 20  nvoked once for 
95f0: 65 61 63 68 20 71 75 65 72 79 20 74 68 61 74 20  each query that 
9600: 68 61 73 20 61 6e 20 65 6d 70 74 79 20 72 65 73  has an empty res
9610: 75 6c 74 0a 20 20 20 20 73 65 74 2e 20 20 54 68  ult.    set.  Th
9620: 65 20 74 68 69 72 64 20 22 3c 62 3e 61 72 67 76  e third "<b>argv
9630: 3c 2f 62 3e 22 20 70 61 72 61 6d 65 74 65 72 20  </b>" parameter 
9640: 74 6f 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20  to the callback 
9650: 69 73 20 73 65 74 20 74 6f 20 4e 55 4c 4c 0a 20  is set to NULL. 
9660: 20 20 20 62 65 63 61 75 73 65 20 74 68 65 72 65     because there
9670: 20 69 73 20 6e 6f 20 64 61 74 61 20 74 6f 20 72   is no data to r
9680: 65 70 6f 72 74 2e 20 20 42 75 74 20 74 68 65 20  eport.  But the 
9690: 73 65 63 6f 6e 64 20 22 3c 62 3e 61 72 67 63 3c  second "<b>argc<
96a0: 2f 62 3e 22 20 61 6e 64 0a 20 20 20 20 66 6f 75  /b>" and.    fou
96b0: 72 74 68 20 22 3c 62 3e 63 6f 6c 75 6d 6e 4e 61  rth "<b>columnNa
96c0: 6d 65 73 3c 2f 62 3e 22 20 70 61 72 61 6d 65 74  mes</b>" paramet
96d0: 65 72 73 20 61 72 65 20 76 61 6c 69 64 20 61 6e  ers are valid an
96e0: 64 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f  d can be used to
96f0: 0a 20 20 20 20 64 65 74 65 72 6d 69 6e 65 20 74  .    determine t
9700: 68 65 20 6e 75 6d 62 65 72 20 61 6e 64 20 6e 61  he number and na
9710: 6d 65 73 20 6f 66 20 74 68 65 20 63 6f 6c 75 6d  mes of the colum
9720: 6e 73 20 74 68 61 74 20 77 6f 75 6c 64 20 68 61  ns that would ha
9730: 76 65 20 62 65 65 6e 20 69 6e 0a 20 20 20 20 74  ve been in.    t
9740: 68 65 20 72 65 73 75 6c 74 20 73 65 74 20 68 61  he result set ha
9750: 64 20 74 68 65 20 73 65 74 20 6e 6f 74 20 62 65  d the set not be
9760: 65 6e 20 65 6d 70 74 79 2e 3c 2f 70 3e 0a 0a 3c  en empty.</p>..<
9770: 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d 41 20  li><p><b>PRAGMA 
9780: 66 75 6c 6c 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65  full_column_name
9790: 73 20 3d 20 4f 4e 3b 0a 20 20 20 20 20 20 20 3c  s = ON;.       <
97a0: 62 72 3e 50 52 41 47 4d 41 20 66 75 6c 6c 5f 63  br>PRAGMA full_c
97b0: 6f 6c 75 6d 6e 5f 6e 61 6d 65 73 20 3d 20 4f 46  olumn_names = OF
97c0: 46 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20 20 20 20 3c  F;</b></p>.    <
97d0: 70 3e 54 68 65 20 63 6f 6c 75 6d 6e 20 6e 61 6d  p>The column nam
97e0: 65 73 20 72 65 70 6f 72 74 65 64 20 69 6e 20 61  es reported in a
97f0: 6e 20 53 51 4c 69 74 65 20 63 61 6c 6c 62 61 63  n SQLite callbac
9800: 6b 20 61 72 65 20 6e 6f 72 6d 61 6c 6c 79 20 6a  k are normally j
9810: 75 73 74 0a 20 20 20 20 74 68 65 20 6e 61 6d 65  ust.    the name
9820: 20 6f 66 20 74 68 65 20 63 6f 6c 75 6d 6e 20 69   of the column i
9830: 74 73 65 6c 66 2c 20 65 78 63 65 70 74 20 66 6f  tself, except fo
9840: 72 20 6a 6f 69 6e 73 20 77 68 65 6e 20 22 54 41  r joins when "TA
9850: 42 4c 45 2e 43 4f 4c 55 4d 4e 22 0a 20 20 20 20  BLE.COLUMN".    
9860: 69 73 20 75 73 65 64 2e 20 20 42 75 74 20 77 68  is used.  But wh
9870: 65 6e 20 66 75 6c 6c 5f 63 6f 6c 75 6d 6e 5f 6e  en full_column_n
9880: 61 6d 65 73 20 69 73 20 74 75 72 6e 65 64 20 6f  ames is turned o
9890: 6e 2c 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 73 20  n, column names 
98a0: 61 72 65 0a 20 20 20 20 61 6c 77 61 79 73 20 72  are.    always r
98b0: 65 70 6f 72 74 65 64 20 61 73 20 22 54 41 42 4c  eported as "TABL
98c0: 45 2e 43 4f 4c 55 4d 4e 22 20 65 76 65 6e 20 66  E.COLUMN" even f
98d0: 6f 72 20 73 69 6d 70 6c 65 20 71 75 65 72 69 65  or simple querie
98e0: 73 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a 0a 3c 6c 69  s.</p></li>..<li
98f0: 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d 41 20 69 6e  ><p><b>PRAGMA in
9900: 64 65 78 5f 69 6e 66 6f 28 3c 2f 62 3e 3c 69 3e  dex_info(</b><i>
9910: 69 6e 64 65 78 2d 6e 61 6d 65 3c 2f 69 3e 3c 62  index-name</i><b
9920: 3e 29 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20 20 20 20  >);</b></p>.    
9930: 3c 70 3e 46 6f 72 20 65 61 63 68 20 63 6f 6c 75  <p>For each colu
9940: 6d 6e 20 74 68 61 74 20 74 68 65 20 6e 61 6d 65  mn that the name
9950: 64 20 69 6e 64 65 78 20 72 65 66 65 72 65 6e 63  d index referenc
9960: 65 73 2c 20 69 6e 76 6f 6b 65 20 74 68 65 20 0a  es, invoke the .
9970: 20 20 20 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e      callback fun
9980: 63 74 69 6f 6e 0a 20 20 20 20 6f 6e 63 65 20 77  ction.    once w
9990: 69 74 68 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20  ith information 
99a0: 61 62 6f 75 74 20 74 68 61 74 20 63 6f 6c 75 6d  about that colum
99b0: 6e 2c 20 69 6e 63 6c 75 64 69 6e 67 20 74 68 65  n, including the
99c0: 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 2c 0a 20 20   column name,.  
99d0: 20 20 61 6e 64 20 74 68 65 20 63 6f 6c 75 6d 6e    and the column
99e0: 20 6e 75 6d 62 65 72 2e 3c 2f 70 3e 0a 0a 3c 6c   number.</p>..<l
99f0: 69 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d 41 20 69  i><p><b>PRAGMA i
9a00: 6e 64 65 78 5f 6c 69 73 74 28 3c 2f 62 3e 3c 69  ndex_list(</b><i
9a10: 3e 74 61 62 6c 65 2d 6e 61 6d 65 3c 2f 69 3e 3c  >table-name</i><
9a20: 62 3e 29 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20 20 20  b>);</b></p>.   
9a30: 20 3c 70 3e 46 6f 72 20 65 61 63 68 20 69 6e 64   <p>For each ind
9a40: 65 78 20 6f 6e 20 74 68 65 20 6e 61 6d 65 64 20  ex on the named 
9a50: 74 61 62 6c 65 2c 20 69 6e 76 6f 6b 65 20 74 68  table, invoke th
9a60: 65 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74  e callback funct
9a70: 69 6f 6e 0a 20 20 20 20 6f 6e 63 65 20 77 69 74  ion.    once wit
9a80: 68 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62  h information ab
9a90: 6f 75 74 20 74 68 61 74 20 69 6e 64 65 78 2e 20  out that index. 
9aa0: 20 41 72 67 75 6d 65 6e 74 73 20 69 6e 63 6c 75   Arguments inclu
9ab0: 64 65 20 74 68 65 0a 20 20 20 20 69 6e 64 65 78  de the.    index
9ac0: 20 6e 61 6d 65 20 61 6e 64 20 61 20 66 6c 61 67   name and a flag
9ad0: 20 74 6f 20 69 6e 64 69 63 61 74 65 20 77 68 65   to indicate whe
9ae0: 74 68 65 72 20 6f 72 20 6e 6f 74 20 74 68 65 20  ther or not the 
9af0: 69 6e 64 65 78 20 6d 75 73 74 20 62 65 0a 20 20  index must be.  
9b00: 20 20 75 6e 69 71 75 65 2e 3c 2f 70 3e 0a 0a 3c    unique.</p>..<
9b10: 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d 41 20  li><p><b>PRAGMA 
9b20: 70 61 72 73 65 72 5f 74 72 61 63 65 20 3d 20 4f  parser_trace = O
9b30: 4e 3b 3c 62 72 3e 50 52 41 47 4d 41 20 70 61 72  N;<br>PRAGMA par
9b40: 73 65 72 5f 74 72 61 63 65 20 3d 20 4f 46 46 3b  ser_trace = OFF;
9b50: 3c 2f 62 3e 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e  </b></p>.    <p>
9b60: 54 75 72 6e 20 74 72 61 63 69 6e 67 20 6f 66 20  Turn tracing of 
9b70: 74 68 65 20 53 51 4c 20 70 61 72 73 65 72 20 69  the SQL parser i
9b80: 6e 73 69 64 65 20 6f 66 20 74 68 65 0a 20 20 20  nside of the.   
9b90: 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20   SQLite library 
9ba0: 6f 6e 20 61 6e 64 20 6f 66 66 2e 20 20 54 68 69  on and off.  Thi
9bb0: 73 20 69 73 20 75 73 65 64 20 66 6f 72 20 64 65  s is used for de
9bc0: 62 75 67 67 69 6e 67 2e 0a 20 20 20 20 54 68 69  bugging..    Thi
9bd0: 73 20 6f 6e 6c 79 20 77 6f 72 6b 73 20 69 66 20  s only works if 
9be0: 74 68 65 20 6c 69 62 72 61 72 79 20 69 73 20 63  the library is c
9bf0: 6f 6d 70 69 6c 65 64 20 77 69 74 68 6f 75 74 20  ompiled without 
9c00: 74 68 65 20 4e 44 45 42 55 47 20 6d 61 63 72 6f  the NDEBUG macro
9c10: 2e 0a 20 20 20 20 3c 2f 70 3e 3c 2f 6c 69 3e 0a  ..    </p></li>.
9c20: 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d  .<li><p><b>PRAGM
9c30: 41 20 69 6e 74 65 67 72 69 74 79 5f 63 68 65 63  A integrity_chec
9c40: 6b 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20 20 20 20 3c  k;</b></p>.    <
9c50: 70 3e 54 68 65 20 63 6f 6d 6d 61 6e 64 20 64 6f  p>The command do
9c60: 65 73 20 61 6e 20 69 6e 74 65 67 72 69 74 79 20  es an integrity 
9c70: 63 68 65 63 6b 20 6f 66 20 74 68 65 20 65 6e 74  check of the ent
9c80: 69 72 65 20 64 61 74 61 62 61 73 65 2e 20 20 49  ire database.  I
9c90: 74 0a 20 20 20 20 6c 6f 6f 6b 73 20 66 6f 72 20  t.    looks for 
9ca0: 6f 75 74 2d 6f 66 2d 6f 72 64 65 72 20 72 65 63  out-of-order rec
9cb0: 6f 72 64 73 2c 20 6d 69 73 73 69 6e 67 20 70 61  ords, missing pa
9cc0: 67 65 73 2c 20 61 6e 64 20 6d 61 6c 66 6f 72 6d  ges, and malform
9cd0: 65 64 20 72 65 63 6f 72 64 73 2e 0a 20 20 20 20  ed records..    
9ce0: 49 66 20 61 6e 79 20 70 72 6f 62 6c 65 6d 73 20  If any problems 
9cf0: 61 72 65 20 66 6f 75 6e 64 2c 20 74 68 65 6e 20  are found, then 
9d00: 61 20 73 69 6e 67 6c 65 20 73 74 72 69 6e 67 20  a single string 
9d10: 69 73 20 72 65 74 75 72 6e 65 64 20 77 68 69 63  is returned whic
9d20: 68 20 69 73 0a 20 20 20 20 61 20 64 65 73 63 72  h is.    a descr
9d30: 69 70 74 69 6f 6e 20 6f 66 20 61 6c 6c 20 70 72  iption of all pr
9d40: 6f 62 6c 65 6d 73 2e 20 20 49 66 20 65 76 65 72  oblems.  If ever
9d50: 79 74 68 69 6e 67 20 69 73 20 69 6e 20 6f 72 64  ything is in ord
9d60: 65 72 2c 20 22 6f 6b 22 20 69 73 0a 20 20 20 20  er, "ok" is.    
9d70: 72 65 74 75 72 6e 65 64 2e 3c 2f 70 3e 0a 0a 3c  returned.</p>..<
9d80: 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d 41 20  li><p><b>PRAGMA 
9d90: 73 79 6e 63 68 72 6f 6e 6f 75 73 3b 0a 20 20 20  synchronous;.   
9da0: 20 20 20 20 3c 62 72 3e 50 52 41 47 4d 41 20 73      <br>PRAGMA s
9db0: 79 6e 63 68 72 6f 6e 6f 75 73 20 3d 20 4f 4e 3b  ynchronous = ON;
9dc0: 0a 20 20 20 20 20 20 20 3c 62 72 3e 50 52 41 47  .       <br>PRAG
9dd0: 4d 41 20 73 79 6e 63 68 72 6f 6e 6f 75 73 20 3d  MA synchronous =
9de0: 20 4f 46 46 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20 20   OFF;</b></p>.  
9df0: 20 20 3c 70 3e 51 75 65 72 79 20 6f 72 20 63 68    <p>Query or ch
9e00: 61 6e 67 65 20 74 68 65 20 73 65 74 74 69 6e 67  ange the setting
9e10: 20 6f 66 20 74 68 65 20 22 73 79 6e 63 68 72 6f   of the "synchro
9e20: 6e 6f 75 73 22 20 66 6c 61 67 20 69 6e 0a 20 20  nous" flag in.  
9e30: 20 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66    the database f
9e40: 6f 72 20 74 68 65 20 64 75 72 61 74 69 6f 6e 20  or the duration 
9e50: 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 64  of the current d
9e60: 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 2e  atabase connect.
9e70: 0a 20 20 20 20 54 68 65 20 73 79 6e 63 68 72 6f  .    The synchro
9e80: 6e 6f 75 73 20 66 6c 61 67 20 72 65 76 65 72 74  nous flag revert
9e90: 73 20 74 6f 20 69 74 73 20 64 65 66 61 75 6c 74  s to its default
9ea0: 20 76 61 6c 75 65 20 77 68 65 6e 20 74 68 65 20   value when the 
9eb0: 64 61 74 61 62 61 73 65 0a 20 20 20 20 69 73 20  database.    is 
9ec0: 63 6c 6f 73 65 64 20 61 6e 64 20 72 65 6f 70 65  closed and reope
9ed0: 6e 65 64 2e 20 20 46 6f 72 20 61 64 64 69 74 69  ned.  For additi
9ee0: 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  onal information
9ef0: 20 6f 6e 20 74 68 65 20 73 79 6e 63 68 72 6f 6e   on the synchron
9f00: 6f 75 73 0a 20 20 20 20 66 6c 61 67 2c 20 73 65  ous.    flag, se
9f10: 65 20 74 68 65 20 64 65 73 63 72 69 70 74 69 6f  e the descriptio
9f20: 6e 20 6f 66 20 74 68 65 20 3c 62 3e 64 65 66 61  n of the <b>defa
9f30: 75 6c 74 5f 73 79 6e 63 68 72 6f 6e 6f 75 73 3c  ult_synchronous<
9f40: 2f 62 3e 20 70 72 61 67 6d 61 2e 3c 2f 70 3e 0a  /b> pragma.</p>.
9f50: 20 20 20 20 3c 2f 6c 69 3e 0a 0a 3c 6c 69 3e 3c      </li>..<li><
9f60: 70 3e 3c 62 3e 50 52 41 47 4d 41 20 74 61 62 6c  p><b>PRAGMA tabl
9f70: 65 5f 69 6e 66 6f 28 3c 2f 62 3e 3c 69 3e 74 61  e_info(</b><i>ta
9f80: 62 6c 65 2d 6e 61 6d 65 3c 2f 69 3e 3c 62 3e 29  ble-name</i><b>)
9f90: 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20 20 20 20 3c 70  ;</b></p>.    <p
9fa0: 3e 46 6f 72 20 65 61 63 68 20 63 6f 6c 75 6d 6e  >For each column
9fb0: 20 69 6e 20 74 68 65 20 6e 61 6d 65 64 20 74 61   in the named ta
9fc0: 62 6c 65 2c 20 69 6e 76 6f 6b 65 20 74 68 65 20  ble, invoke the 
9fd0: 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f  callback functio
9fe0: 6e 0a 20 20 20 20 6f 6e 63 65 20 77 69 74 68 20  n.    once with 
9ff0: 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75  information abou
a000: 74 20 74 68 61 74 20 63 6f 6c 75 6d 6e 2c 20 69  t that column, i
a010: 6e 63 6c 75 64 69 6e 67 20 74 68 65 20 63 6f 6c  ncluding the col
a020: 75 6d 6e 20 6e 61 6d 65 2c 0a 20 20 20 20 64 61  umn name,.    da
a030: 74 61 20 74 79 70 65 2c 20 77 68 65 74 68 65 72  ta type, whether
a040: 20 6f 72 20 6e 6f 74 20 74 68 65 20 63 6f 6c 75   or not the colu
a050: 6d 6e 20 63 61 6e 20 62 65 20 4e 55 4c 4c 2c 20  mn can be NULL, 
a060: 61 6e 64 20 74 68 65 20 64 65 66 61 75 6c 74 0a  and the default.
a070: 20 20 20 20 76 61 6c 75 65 20 66 6f 72 20 74 68      value for th
a080: 65 20 63 6f 6c 75 6d 6e 2e 3c 2f 70 3e 0a 0a 3c  e column.</p>..<
a090: 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d 41 20  li><p><b>PRAGMA 
a0a0: 76 64 62 65 5f 74 72 61 63 65 20 3d 20 4f 4e 3b  vdbe_trace = ON;
a0b0: 3c 62 72 3e 50 52 41 47 4d 41 20 76 64 62 65 5f  <br>PRAGMA vdbe_
a0c0: 74 72 61 63 65 20 3d 20 4f 46 46 3b 3c 2f 62 3e  trace = OFF;</b>
a0d0: 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e 54 75 72 6e  </p>.    <p>Turn
a0e0: 20 74 72 61 63 69 6e 67 20 6f 66 20 74 68 65 20   tracing of the 
a0f0: 76 69 72 74 75 61 6c 20 64 61 74 61 62 61 73 65  virtual database
a100: 20 65 6e 67 69 6e 65 20 69 6e 73 69 64 65 20 6f   engine inside o
a110: 66 20 74 68 65 0a 20 20 20 20 53 51 4c 69 74 65  f the.    SQLite
a120: 20 6c 69 62 72 61 72 79 20 6f 6e 20 61 6e 64 20   library on and 
a130: 6f 66 66 2e 20 20 54 68 69 73 20 69 73 20 75 73  off.  This is us
a140: 65 64 20 66 6f 72 20 64 65 62 75 67 67 69 6e 67  ed for debugging
a150: 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e  .</p></li>.</ul>
a160: 0a 0a 3c 70 3e 4e 6f 20 65 72 72 6f 72 20 6d 65  ..<p>No error me
a170: 73 73 61 67 65 20 69 73 20 67 65 6e 65 72 61 74  ssage is generat
a180: 65 64 20 69 66 20 61 6e 20 75 6e 6b 6e 6f 77 6e  ed if an unknown
a190: 20 70 72 61 67 6d 61 20 69 73 20 69 73 73 75 65   pragma is issue
a1a0: 64 2e 0a 55 6e 6b 6e 6f 77 6e 20 70 72 61 67 6d  d..Unknown pragm
a1b0: 61 73 20 61 72 65 20 69 67 6e 6f 72 65 64 2e 3c  as are ignored.<
a1c0: 2f 70 3e 0a 7d 0a 0a 53 65 63 74 69 6f 6e 20 52  /p>.}..Section R
a1d0: 45 50 4c 41 43 45 20 72 65 70 6c 61 63 65 0a 0a  EPLACE replace..
a1e0: 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74  Syntax {sql-stat
a1f0: 65 6d 65 6e 74 7d 20 7b 0a 52 45 50 4c 41 43 45  ement} {.REPLACE
a200: 20 49 4e 54 4f 20 3c 74 61 62 6c 65 2d 6e 61 6d   INTO <table-nam
a210: 65 3e 20 5b 28 20 3c 63 6f 6c 75 6d 6e 2d 6c 69  e> [( <column-li
a220: 73 74 3e 20 29 5d 20 56 41 4c 55 45 53 20 28 20  st> )] VALUES ( 
a230: 3c 76 61 6c 75 65 2d 6c 69 73 74 3e 20 29 20 7c  <value-list> ) |
a240: 0a 52 45 50 4c 41 43 45 20 49 4e 54 4f 20 3c 74  .REPLACE INTO <t
a250: 61 62 6c 65 2d 6e 61 6d 65 3e 20 5b 28 20 3c 63  able-name> [( <c
a260: 6f 6c 75 6d 6e 2d 6c 69 73 74 3e 20 29 5d 20 3c  olumn-list> )] <
a270: 73 65 6c 65 63 74 2d 73 74 61 74 65 6d 65 6e 74  select-statement
a280: 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54  >.}..puts {.<p>T
a290: 68 65 20 52 45 50 4c 41 43 45 20 63 6f 6d 6d 61  he REPLACE comma
a2a0: 6e 64 20 69 73 20 61 6e 20 61 6c 69 61 73 20 66  nd is an alias f
a2b0: 6f 72 20 74 68 65 20 22 49 4e 53 45 52 54 20 4f  or the "INSERT O
a2c0: 52 20 52 45 50 4c 41 43 45 22 20 76 61 72 69 61  R REPLACE" varia
a2d0: 6e 74 0a 6f 66 20 74 68 65 20 3c 61 20 68 72 65  nt.of the <a hre
a2e0: 66 3d 22 23 69 6e 73 65 72 74 22 3e 49 4e 53 45  f="#insert">INSE
a2f0: 52 54 20 63 6f 6d 6d 61 6e 64 3c 2f 61 3e 2e 20  RT command</a>. 
a300: 20 54 68 69 73 20 61 6c 69 61 73 20 69 73 20 70   This alias is p
a310: 72 6f 76 69 64 65 64 20 66 6f 72 0a 63 6f 6d 70  rovided for.comp
a320: 61 74 69 62 69 6c 69 74 79 20 77 69 74 68 20 4d  atibility with M
a330: 79 53 51 4c 2e 20 20 53 65 65 20 74 68 65 20 0a  ySQL.  See the .
a340: 3c 61 20 68 72 65 66 3d 22 23 69 6e 73 65 72 74  <a href="#insert
a350: 22 3e 49 4e 53 45 52 54 20 63 6f 6d 6d 61 6e 64  ">INSERT command
a360: 3c 2f 61 3e 20 64 6f 63 75 6d 65 6e 74 61 74 69  </a> documentati
a370: 6f 6e 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61  on for additiona
a380: 6c 0a 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 3c 2f  l.information.</
a390: 70 3e 20 20 0a 7d 0a 0a 53 65 63 74 69 6f 6e 20  p>  .}..Section 
a3a0: 53 45 4c 45 43 54 20 73 65 6c 65 63 74 0a 0a 53  SELECT select..S
a3b0: 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65  yntax {sql-state
a3c0: 6d 65 6e 74 7d 20 7b 0a 53 45 4c 45 43 54 20 3c  ment} {.SELECT <
a3d0: 72 65 73 75 6c 74 3e 20 5b 46 52 4f 4d 20 3c 74  result> [FROM <t
a3e0: 61 62 6c 65 2d 6c 69 73 74 3e 5d 0a 5b 57 48 45  able-list>].[WHE
a3f0: 52 45 20 3c 65 78 70 72 3e 5d 0a 5b 47 52 4f 55  RE <expr>].[GROU
a400: 50 20 42 59 20 3c 65 78 70 72 2d 6c 69 73 74 3e  P BY <expr-list>
a410: 5d 0a 5b 48 41 56 49 4e 47 20 3c 65 78 70 72 3e  ].[HAVING <expr>
a420: 5d 0a 5b 3c 63 6f 6d 70 6f 75 6e 64 2d 6f 70 3e  ].[<compound-op>
a430: 20 3c 73 65 6c 65 63 74 3e 5d 2a 0a 5b 4f 52 44   <select>]*.[ORD
a440: 45 52 20 42 59 20 3c 73 6f 72 74 2d 65 78 70 72  ER BY <sort-expr
a450: 2d 6c 69 73 74 3e 5d 0a 5b 4c 49 4d 49 54 20 3c  -list>].[LIMIT <
a460: 69 6e 74 65 67 65 72 3e 20 5b 4f 46 46 53 45 54  integer> [OFFSET
a470: 20 3c 69 6e 74 65 67 65 72 3e 5d 5d 0a 7d 20 7b   <integer>]].} {
a480: 72 65 73 75 6c 74 7d 20 7b 0a 3c 72 65 73 75 6c  result} {.<resul
a490: 74 2d 63 6f 6c 75 6d 6e 3e 20 5b 2c 20 3c 72 65  t-column> [, <re
a4a0: 73 75 6c 74 2d 63 6f 6c 75 6d 6e 3e 5d 2a 0a 7d  sult-column>]*.}
a4b0: 20 7b 72 65 73 75 6c 74 2d 63 6f 6c 75 6d 6e 7d   {result-column}
a4c0: 20 7b 0a 53 54 41 52 20 7c 20 3c 65 78 70 72 3e   {.STAR | <expr>
a4d0: 20 5b 20 5b 41 53 5d 20 3c 73 74 72 69 6e 67 3e   [ [AS] <string>
a4e0: 20 5d 0a 7d 20 7b 74 61 62 6c 65 2d 6c 69 73 74   ].} {table-list
a4f0: 7d 20 7b 0a 3c 74 61 62 6c 65 3e 20 5b 2c 20 3c  } {.<table> [, <
a500: 74 61 62 6c 65 3e 5d 2a 0a 7d 20 7b 74 61 62 6c  table>]*.} {tabl
a510: 65 7d 20 7b 0a 3c 74 61 62 6c 65 2d 6e 61 6d 65  e} {.<table-name
a520: 3e 20 5b 41 53 20 3c 61 6c 69 61 73 3e 5d 20 7c  > [AS <alias>] |
a530: 0a 28 20 3c 73 65 6c 65 63 74 3e 20 29 20 5b 41  .( <select> ) [A
a540: 53 20 3c 61 6c 69 61 73 3e 5d 0a 7d 20 7b 73 6f  S <alias>].} {so
a550: 72 74 2d 65 78 70 72 2d 6c 69 73 74 7d 20 7b 0a  rt-expr-list} {.
a560: 3c 65 78 70 72 3e 20 5b 3c 73 6f 72 74 2d 6f 72  <expr> [<sort-or
a570: 64 65 72 3e 5d 20 5b 2c 20 3c 65 78 70 72 3e 20  der>] [, <expr> 
a580: 5b 3c 73 6f 72 74 2d 6f 72 64 65 72 3e 5d 5d 2a  [<sort-order>]]*
a590: 0a 7d 20 7b 73 6f 72 74 2d 6f 72 64 65 72 7d 20  .} {sort-order} 
a5a0: 7b 0a 41 53 43 20 7c 20 44 45 53 43 0a 7d 20 7b  {.ASC | DESC.} {
a5b0: 63 6f 6d 70 6f 75 6e 64 5f 6f 70 7d 20 7b 0a 55  compound_op} {.U
a5c0: 4e 49 4f 4e 20 7c 20 55 4e 49 4f 4e 20 41 4c 4c  NION | UNION ALL
a5d0: 20 7c 20 49 4e 54 45 52 53 45 43 54 20 7c 20 45   | INTERSECT | E
a5e0: 58 43 45 50 54 0a 7d 0a 0a 70 75 74 73 20 7b 0a  XCEPT.}..puts {.
a5f0: 3c 70 3e 54 68 65 20 53 45 4c 45 43 54 20 73 74  <p>The SELECT st
a600: 61 74 65 6d 65 6e 74 20 69 73 20 75 73 65 64 20  atement is used 
a610: 74 6f 20 71 75 65 72 79 20 74 68 65 20 64 61 74  to query the dat
a620: 61 62 61 73 65 2e 20 20 54 68 65 0a 72 65 73 75  abase.  The.resu
a630: 6c 74 20 6f 66 20 61 20 53 45 4c 45 43 54 20 69  lt of a SELECT i
a640: 73 20 7a 65 72 6f 20 6f 72 20 6d 6f 72 65 20 72  s zero or more r
a650: 6f 77 73 20 6f 66 20 64 61 74 61 20 77 68 65 72  ows of data wher
a660: 65 20 65 61 63 68 20 72 6f 77 0a 68 61 73 20 61  e each row.has a
a670: 20 66 69 78 65 64 20 6e 75 6d 62 65 72 20 6f 66   fixed number of
a680: 20 63 6f 6c 75 6d 6e 73 2e 20 20 54 68 65 20 6e   columns.  The n
a690: 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73  umber of columns
a6a0: 20 69 6e 20 74 68 65 0a 72 65 73 75 6c 74 20 69   in the.result i
a6b0: 73 20 73 70 65 63 69 66 69 65 64 20 62 79 20 74  s specified by t
a6c0: 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20 6c 69  he expression li
a6d0: 73 74 20 69 6e 20 62 65 74 77 65 65 6e 20 74 68  st in between th
a6e0: 65 0a 53 45 4c 45 43 54 20 61 6e 64 20 46 52 4f  e.SELECT and FRO
a6f0: 4d 20 6b 65 79 77 6f 72 64 73 2e 20 20 41 6e 79  M keywords.  Any
a700: 20 61 72 62 69 74 72 61 72 79 20 65 78 70 72 65   arbitrary expre
a710: 73 73 69 6f 6e 20 63 61 6e 20 62 65 20 75 73 65  ssion can be use
a720: 64 0a 61 73 20 61 20 72 65 73 75 6c 74 2e 20 20  d.as a result.  
a730: 49 66 20 61 20 72 65 73 75 6c 74 20 65 78 70 72  If a result expr
a740: 65 73 73 69 6f 6e 20 69 73 20 7d 0a 70 75 74 73  ession is }.puts
a750: 20 22 5b 4f 70 65 72 61 74 6f 72 20 2a 5d 20 74   "[Operator *] t
a760: 68 65 6e 20 61 6c 6c 20 63 6f 6c 75 6d 6e 73 20  hen all columns 
a770: 6f 66 20 61 6c 6c 20 74 61 62 6c 65 73 20 61 72  of all tables ar
a780: 65 20 73 75 62 73 74 69 74 75 74 65 64 22 0a 70  e substituted".p
a790: 75 74 73 20 7b 66 6f 72 20 74 68 61 74 20 6f 6e  uts {for that on
a7a0: 65 20 65 78 70 72 65 73 73 69 6f 6e 2e 3c 2f 70  e expression.</p
a7b0: 3e 0a 0a 3c 70 3e 54 68 65 20 71 75 65 72 79 20  >..<p>The query 
a7c0: 69 73 20 65 78 65 63 75 74 65 64 20 61 67 61 69  is executed agai
a7d0: 6e 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 74 61  n one or more ta
a7e0: 62 6c 65 73 20 73 70 65 63 69 66 69 65 64 20 61  bles specified a
a7f0: 66 74 65 72 0a 74 68 65 20 46 52 4f 4d 20 6b 65  fter.the FROM ke
a800: 79 77 6f 72 64 2e 20 20 49 66 20 6d 6f 72 65 20  yword.  If more 
a810: 74 68 61 6e 20 6f 6e 65 20 74 61 62 6c 65 20 69  than one table i
a820: 73 20 73 70 65 63 69 66 69 65 64 2c 20 74 68 65  s specified, the
a830: 6e 20 74 68 65 0a 71 75 65 72 79 20 69 73 20 61  n the.query is a
a840: 67 61 69 6e 73 74 20 74 68 65 20 28 69 6e 6e 65  gainst the (inne
a850: 72 29 20 6a 6f 69 6e 20 6f 66 20 74 68 65 20 76  r) join of the v
a860: 61 72 69 6f 75 73 20 74 61 62 6c 65 73 2e 20 20  arious tables.  
a870: 41 20 73 75 62 2d 71 75 65 72 79 0a 69 6e 20 70  A sub-query.in p
a880: 61 72 65 6e 74 68 65 73 65 73 20 6d 61 79 20 62  arentheses may b
a890: 65 20 73 75 62 73 74 69 74 75 74 65 64 20 66 6f  e substituted fo
a8a0: 72 20 61 6e 79 20 74 61 62 6c 65 20 6e 61 6d 65  r any table name
a8b0: 20 69 6e 20 74 68 65 20 46 52 4f 4d 20 63 6c 61   in the FROM cla
a8c0: 75 73 65 2e 0a 54 68 65 20 65 6e 74 69 72 65 20  use..The entire 
a8d0: 46 52 4f 4d 20 63 6c 61 75 73 65 20 6d 61 79 20  FROM clause may 
a8e0: 62 65 20 6f 6d 69 74 74 65 64 2c 20 69 6e 20 77  be omitted, in w
a8f0: 68 69 63 68 20 63 61 73 65 20 74 68 65 20 72 65  hich case the re
a900: 73 75 6c 74 20 69 73 20 61 0a 73 69 6e 67 6c 65  sult is a.single
a910: 20 72 6f 77 20 63 6f 6e 73 69 73 74 69 6e 67 20   row consisting 
a920: 6f 66 20 74 68 65 20 76 61 6c 75 65 73 20 6f 66  of the values of
a930: 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20   the expression 
a940: 6c 69 73 74 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 54  list..</p>..<p>T
a950: 68 65 20 57 48 45 52 45 20 63 6c 61 75 73 65 20  he WHERE clause 
a960: 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 6c  can be used to l
a970: 69 6d 69 74 20 74 68 65 20 6e 75 6d 62 65 72 20  imit the number 
a980: 6f 66 20 72 6f 77 73 20 6f 76 65 72 0a 77 68 69  of rows over.whi
a990: 63 68 20 74 68 65 20 71 75 65 72 79 20 6f 70 65  ch the query ope
a9a0: 72 61 74 65 73 2e 20 20 49 6e 20 74 68 65 20 63  rates.  In the c
a9b0: 75 72 72 65 6e 74 20 69 6d 70 6c 65 6d 65 6e 74  urrent implement
a9c0: 61 74 69 6f 6e 2c 0a 69 6e 64 69 63 65 73 20 77  ation,.indices w
a9d0: 69 6c 6c 20 6f 6e 6c 79 20 62 65 20 75 73 65 64  ill only be used
a9e0: 20 74 6f 0a 6f 70 74 69 6d 69 7a 65 20 74 68 65   to.optimize the
a9f0: 20 71 75 65 72 79 20 69 66 20 57 48 45 52 45 20   query if WHERE 
aa00: 65 78 70 72 65 73 73 69 6f 6e 20 63 6f 6e 74 61  expression conta
aa10: 69 6e 73 20 65 71 75 61 6c 69 74 79 20 63 6f 6d  ins equality com
aa20: 70 61 72 69 73 6f 6e 73 0a 63 6f 6e 6e 65 63 74  parisons.connect
aa30: 65 64 20 62 79 20 74 68 65 20 41 4e 44 20 6f 70  ed by the AND op
aa40: 65 72 61 74 6f 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e  erator.</p>..<p>
aa50: 54 68 65 20 47 52 4f 55 50 20 42 59 20 63 6c 61  The GROUP BY cla
aa60: 75 73 65 73 20 63 61 75 73 65 73 20 6f 6e 65 20  uses causes one 
aa70: 6f 72 20 6d 6f 72 65 20 72 6f 77 73 20 6f 66 20  or more rows of 
aa80: 74 68 65 20 72 65 73 75 6c 74 20 74 6f 0a 62 65  the result to.be
aa90: 20 63 6f 6d 62 69 6e 65 64 20 69 6e 74 6f 20 61   combined into a
aaa0: 20 73 69 6e 67 6c 65 20 72 6f 77 20 6f 66 20 6f   single row of o
aab0: 75 74 70 75 74 2e 20 20 54 68 69 73 20 69 73 20  utput.  This is 
aac0: 65 73 70 65 63 69 61 6c 6c 79 20 75 73 65 66 75  especially usefu
aad0: 6c 0a 77 68 65 6e 20 74 68 65 20 72 65 73 75 6c  l.when the resul
aae0: 74 20 63 6f 6e 74 61 69 6e 73 20 61 67 67 72 65  t contains aggre
aaf0: 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 73 2e 20  gate functions. 
ab00: 20 54 68 65 20 65 78 70 72 65 73 73 69 6f 6e 73   The expressions
ab10: 20 69 6e 0a 74 68 65 20 47 52 4f 55 50 20 42 59   in.the GROUP BY
ab20: 20 63 6c 61 75 73 65 20 64 6f 20 3c 65 6d 3e 6e   clause do <em>n
ab30: 6f 74 3c 2f 65 6d 3e 20 68 61 76 65 20 74 6f 20  ot</em> have to 
ab40: 62 65 20 65 78 70 72 65 73 73 69 6f 6e 73 20 74  be expressions t
ab50: 68 61 74 0a 61 70 70 65 61 72 20 69 6e 20 74 68  hat.appear in th
ab60: 65 20 72 65 73 75 6c 74 2e 20 20 54 68 65 20 48  e result.  The H
ab70: 41 56 49 4e 47 20 63 6c 61 75 73 65 20 69 73 20  AVING clause is 
ab80: 73 69 6d 69 6c 61 72 20 74 6f 20 57 48 45 52 45  similar to WHERE
ab90: 20 65 78 63 65 70 74 0a 74 68 61 74 20 48 41 56   except.that HAV
aba0: 49 4e 47 20 61 70 70 6c 69 65 73 20 61 66 74 65  ING applies afte
abb0: 72 20 67 72 6f 75 70 69 6e 67 20 68 61 73 20 6f  r grouping has o
abc0: 63 63 75 72 72 65 64 2e 20 20 54 68 65 20 48 41  ccurred.  The HA
abd0: 56 49 4e 47 20 65 78 70 72 65 73 73 69 6f 6e 0a  VING expression.
abe0: 6d 61 79 20 72 65 66 65 72 20 74 6f 20 76 61 6c  may refer to val
abf0: 75 65 73 2c 20 65 76 65 6e 20 61 67 67 72 65 67  ues, even aggreg
ac00: 61 74 65 20 66 75 6e 63 74 69 6f 6e 73 2c 20 74  ate functions, t
ac10: 68 61 74 20 61 72 65 20 6e 6f 74 20 69 6e 20 74  hat are not in t
ac20: 68 65 20 72 65 73 75 6c 74 2e 3c 2f 70 3e 0a 0a  he result.</p>..
ac30: 3c 70 3e 54 68 65 20 4f 52 44 45 52 20 42 59 20  <p>The ORDER BY 
ac40: 63 6c 61 75 73 65 20 63 61 75 73 65 73 20 74 68  clause causes th
ac50: 65 20 6f 75 74 70 75 74 20 72 6f 77 73 20 74 6f  e output rows to
ac60: 20 62 65 20 73 6f 72 74 65 64 2e 20 20 0a 54 68   be sorted.  .Th
ac70: 65 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 4f 52  e argument to OR
ac80: 44 45 52 20 42 59 20 69 73 20 61 20 6c 69 73 74  DER BY is a list
ac90: 20 6f 66 20 65 78 70 72 65 73 73 69 6f 6e 73 20   of expressions 
aca0: 74 68 61 74 20 61 72 65 20 75 73 65 64 20 61 73  that are used as
acb0: 20 74 68 65 0a 6b 65 79 20 66 6f 72 20 74 68 65   the.key for the
acc0: 20 73 6f 72 74 2e 20 20 54 68 65 20 65 78 70 72   sort.  The expr
acd0: 65 73 73 69 6f 6e 73 20 64 6f 20 6e 6f 74 20 68  essions do not h
ace0: 61 76 65 20 74 6f 20 62 65 20 70 61 72 74 20 6f  ave to be part o
acf0: 66 20 74 68 65 0a 72 65 73 75 6c 74 20 66 6f 72  f the.result for
ad00: 20 61 20 73 69 6d 70 6c 65 20 53 45 4c 45 43 54   a simple SELECT
ad10: 2c 20 62 75 74 20 69 6e 20 61 20 63 6f 6d 70 6f  , but in a compo
ad20: 75 6e 64 20 53 45 4c 45 43 54 20 65 61 63 68 20  und SELECT each 
ad30: 73 6f 72 74 0a 65 78 70 72 65 73 73 69 6f 6e 20  sort.expression 
ad40: 6d 75 73 74 20 65 78 61 63 74 6c 79 20 6d 61 74  must exactly mat
ad50: 63 68 20 6f 6e 65 20 6f 66 20 74 68 65 20 72 65  ch one of the re
ad60: 73 75 6c 74 20 63 6f 6c 75 6d 6e 73 2e 20 20 45  sult columns.  E
ad70: 61 63 68 0a 73 6f 72 74 20 65 78 70 72 65 73 73  ach.sort express
ad80: 69 6f 6e 20 6d 61 79 20 62 65 20 6f 70 74 69 6f  ion may be optio
ad90: 6e 61 6c 6c 79 20 66 6f 6c 6c 6f 77 65 64 20 62  nally followed b
ada0: 79 20 41 53 43 20 6f 72 20 44 45 53 43 20 74 6f  y ASC or DESC to
adb0: 20 73 70 65 63 69 66 79 0a 74 68 65 20 73 6f 72   specify.the sor
adc0: 74 20 6f 72 64 65 72 2e 3c 2f 70 3e 0a 0a 3c 70  t order.</p>..<p
add0: 3e 54 68 65 20 4c 49 4d 49 54 20 63 6c 61 75 73  >The LIMIT claus
ade0: 65 20 70 6c 61 63 65 73 20 61 6e 20 75 70 70 65  e places an uppe
adf0: 72 20 62 6f 75 6e 64 20 6f 6e 20 74 68 65 20 6e  r bound on the n
ae00: 75 6d 62 65 72 20 6f 66 20 72 6f 77 73 0a 72 65  umber of rows.re
ae10: 74 75 72 6e 65 64 20 69 6e 20 74 68 65 20 72 65  turned in the re
ae20: 73 75 6c 74 2e 20 20 41 20 4c 49 4d 49 54 20 6f  sult.  A LIMIT o
ae30: 66 20 30 20 69 6e 64 69 63 61 74 65 73 20 6e 6f  f 0 indicates no
ae40: 20 75 70 70 65 72 20 62 6f 75 6e 64 2e 0a 54 68   upper bound..Th
ae50: 65 20 6f 70 74 69 6f 6e 61 6c 20 4f 46 46 53 45  e optional OFFSE
ae60: 54 20 66 6f 6c 6c 6f 77 69 6e 67 20 4c 49 4d 49  T following LIMI
ae70: 54 20 73 70 65 63 69 66 69 65 73 20 68 6f 77 20  T specifies how 
ae80: 6d 61 6e 79 0a 72 6f 77 73 20 74 6f 20 73 6b 69  many.rows to ski
ae90: 70 20 61 74 20 74 68 65 20 62 65 67 69 6e 6e 69  p at the beginni
aea0: 6e 67 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74  ng of the result
aeb0: 20 73 65 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41 20   set.</p>..<p>A 
aec0: 63 6f 6d 70 6f 75 6e 64 20 53 45 4c 45 43 54 20  compound SELECT 
aed0: 69 73 20 66 6f 72 6d 65 64 20 66 72 6f 6d 20 74  is formed from t
aee0: 77 6f 20 6f 72 20 6d 6f 72 65 20 73 69 6d 70 6c  wo or more simpl
aef0: 65 20 53 45 4c 45 43 54 73 20 63 6f 6e 6e 65 63  e SELECTs connec
af00: 74 65 64 0a 62 79 20 6f 6e 65 20 6f 66 20 74 68  ted.by one of th
af10: 65 20 6f 70 65 72 61 74 6f 72 73 20 55 4e 49 4f  e operators UNIO
af20: 4e 2c 20 55 4e 49 4f 4e 20 41 4c 4c 2c 20 49 4e  N, UNION ALL, IN
af30: 54 45 52 53 45 43 54 2c 20 6f 72 20 45 58 43 45  TERSECT, or EXCE
af40: 50 54 2e 20 20 49 6e 0a 61 20 63 6f 6d 70 6f 75  PT.  In.a compou
af50: 6e 64 20 53 45 4c 45 43 54 2c 20 61 6c 6c 20 74  nd SELECT, all t
af60: 68 65 20 63 6f 6e 73 74 69 74 75 65 6e 74 20 53  he constituent S
af70: 45 4c 45 43 54 73 20 6d 75 73 74 20 73 70 65 63  ELECTs must spec
af80: 69 66 79 20 74 68 65 0a 73 61 6d 65 20 6e 75 6d  ify the.same num
af90: 62 65 72 20 6f 66 20 72 65 73 75 6c 74 20 63 6f  ber of result co
afa0: 6c 75 6d 6e 73 2e 20 20 54 68 65 72 65 20 6d 61  lumns.  There ma
afb0: 79 20 62 65 20 6f 6e 6c 79 20 61 20 73 69 6e 67  y be only a sing
afc0: 6c 65 20 4f 52 44 45 52 20 42 59 0a 63 6c 61 75  le ORDER BY.clau
afd0: 73 65 20 61 74 20 74 68 65 20 65 6e 64 20 6f 66  se at the end of
afe0: 20 74 68 65 20 63 6f 6d 70 6f 75 6e 64 20 53 45   the compound SE
aff0: 4c 45 43 54 2e 20 20 54 68 65 20 55 4e 49 4f 4e  LECT.  The UNION
b000: 20 61 6e 64 20 55 4e 49 4f 4e 20 41 4c 4c 0a 6f   and UNION ALL.o
b010: 70 65 72 61 74 6f 72 73 20 63 6f 6d 62 69 6e 65  perators combine
b020: 20 74 68 65 20 72 65 73 75 6c 74 73 20 6f 66 20   the results of 
b030: 74 68 65 20 53 45 4c 45 43 54 73 20 74 6f 20 74  the SELECTs to t
b040: 68 65 20 72 69 67 68 74 20 61 6e 64 20 6c 65 66  he right and lef
b050: 74 20 69 6e 74 6f 0a 61 20 73 69 6e 67 6c 65 20  t into.a single 
b060: 62 69 67 20 74 61 62 6c 65 2e 20 20 54 68 65 20  big table.  The 
b070: 64 69 66 66 65 72 65 6e 63 65 20 69 73 20 74 68  difference is th
b080: 61 74 20 69 6e 20 55 4e 49 4f 4e 20 61 6c 6c 20  at in UNION all 
b090: 72 65 73 75 6c 74 20 72 6f 77 73 0a 61 72 65 20  result rows.are 
b0a0: 64 69 73 74 69 6e 63 74 20 77 68 65 72 65 20 69  distinct where i
b0b0: 6e 20 55 4e 49 4f 4e 20 41 4c 4c 20 74 68 65 72  n UNION ALL ther
b0c0: 65 20 6d 61 79 20 62 65 20 64 75 70 6c 69 63 61  e may be duplica
b0d0: 74 65 73 2e 0a 54 68 65 20 49 4e 54 45 52 53 45  tes..The INTERSE
b0e0: 43 54 20 6f 70 65 72 61 74 6f 72 20 74 61 6b 65  CT operator take
b0f0: 73 20 74 68 65 20 69 6e 74 65 72 73 65 63 74 69  s the intersecti
b100: 6f 6e 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74  on of the result
b110: 73 20 6f 66 20 74 68 65 0a 6c 65 66 74 20 61 6e  s of the.left an
b120: 64 20 72 69 67 68 74 20 53 45 4c 45 43 54 73 2e  d right SELECTs.
b130: 20 20 45 58 43 45 50 54 20 74 61 6b 65 73 20 74    EXCEPT takes t
b140: 68 65 20 72 65 73 75 6c 74 20 6f 66 20 6c 65 66  he result of lef
b150: 74 20 53 45 4c 45 43 54 20 61 66 74 65 72 0a 72  t SELECT after.r
b160: 65 6d 6f 76 69 6e 67 20 74 68 65 20 72 65 73 75  emoving the resu
b170: 6c 74 73 20 6f 66 20 74 68 65 20 72 69 67 68 74  lts of the right
b180: 20 53 45 4c 45 43 54 2e 20 20 57 68 65 6e 20 74   SELECT.  When t
b190: 68 72 65 65 20 61 72 65 20 6d 6f 72 65 20 53 45  hree are more SE
b1a0: 4c 45 43 54 73 0a 61 72 65 20 63 6f 6e 6e 65 63  LECTs.are connec
b1b0: 74 65 64 20 69 6e 74 6f 20 61 20 63 6f 6d 70 6f  ted into a compo
b1c0: 75 6e 64 2c 20 74 68 65 79 20 67 72 6f 75 70 20  und, they group 
b1d0: 66 72 6f 6d 20 6c 65 66 74 20 74 6f 20 72 69 67  from left to rig
b1e0: 68 74 2e 3c 2f 70 3e 0a 7d 0a 0a 53 65 63 74 69  ht.</p>.}..Secti
b1f0: 6f 6e 20 55 50 44 41 54 45 20 75 70 64 61 74 65  on UPDATE update
b200: 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74  ..Syntax {sql-st
b210: 61 74 65 6d 65 6e 74 7d 20 7b 0a 55 50 44 41 54  atement} {.UPDAT
b220: 45 20 5b 20 4f 52 20 3c 63 6f 6e 66 6c 69 63 74  E [ OR <conflict
b230: 2d 61 6c 67 6f 72 69 74 68 6d 3e 20 5d 20 3c 74  -algorithm> ] <t
b240: 61 62 6c 65 2d 6e 61 6d 65 3e 0a 53 45 54 20 3c  able-name>.SET <
b250: 61 73 73 69 67 6e 6d 65 6e 74 3e 20 5b 2c 20 3c  assignment> [, <
b260: 61 73 73 69 67 6e 6d 65 6e 74 3e 5d 20 0a 5b 57  assignment>] .[W
b270: 48 45 52 45 20 3c 65 78 70 72 3e 5d 0a 7d 20 7b  HERE <expr>].} {
b280: 61 73 73 69 67 6e 6d 65 6e 74 7d 20 7b 0a 3c 63  assignment} {.<c
b290: 6f 6c 75 6d 6e 2d 6e 61 6d 65 3e 20 3d 20 3c 65  olumn-name> = <e
b2a0: 78 70 72 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c  xpr>.}..puts {.<
b2b0: 70 3e 54 68 65 20 55 50 44 41 54 45 20 73 74 61  p>The UPDATE sta
b2c0: 74 65 6d 65 6e 74 20 69 73 20 75 73 65 64 20 74  tement is used t
b2d0: 6f 20 63 68 61 6e 67 65 20 74 68 65 20 76 61 6c  o change the val
b2e0: 75 65 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e  ue of columns in
b2f0: 20 0a 73 65 6c 65 63 74 65 64 20 72 6f 77 73 20   .selected rows 
b300: 6f 66 20 61 20 74 61 62 6c 65 2e 20 20 45 61 63  of a table.  Eac
b310: 68 20 61 73 73 69 67 6e 6d 65 6e 74 20 69 6e 20  h assignment in 
b320: 61 6e 20 55 50 44 41 54 45 20 73 70 65 63 69 66  an UPDATE specif
b330: 69 65 73 0a 61 20 63 6f 6c 75 6d 6e 20 6e 61 6d  ies.a column nam
b340: 65 20 74 6f 20 74 68 65 20 6c 65 66 74 20 6f 66  e to the left of
b350: 20 74 68 65 20 65 71 75 61 6c 73 20 73 69 67 6e   the equals sign
b360: 20 61 6e 64 20 61 6e 20 61 72 62 69 74 72 61 72   and an arbitrar
b370: 79 20 65 78 70 72 65 73 73 69 6f 6e 0a 74 6f 20  y expression.to 
b380: 74 68 65 20 72 69 67 68 74 2e 20 20 54 68 65 20  the right.  The 
b390: 65 78 70 72 65 73 73 69 6f 6e 73 20 6d 61 79 20  expressions may 
b3a0: 75 73 65 20 74 68 65 20 76 61 6c 75 65 73 20 6f  use the values o
b3b0: 66 20 6f 74 68 65 72 20 63 6f 6c 75 6d 6e 73 2e  f other columns.
b3c0: 0a 41 6c 6c 20 65 78 70 72 65 73 73 69 6f 6e 73  .All expressions
b3d0: 20 61 72 65 20 65 76 61 6c 75 61 74 65 64 20 62   are evaluated b
b3e0: 65 66 6f 72 65 20 61 6e 79 20 61 73 73 69 67 6e  efore any assign
b3f0: 6d 65 6e 74 73 20 61 72 65 20 6d 61 64 65 2e 0a  ments are made..
b400: 41 20 57 48 45 52 45 20 63 6c 61 75 73 65 20 63  A WHERE clause c
b410: 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 72 65  an be used to re
b420: 73 74 72 69 63 74 20 77 68 69 63 68 20 72 6f 77  strict which row
b430: 73 20 61 72 65 20 75 70 64 61 74 65 64 2e 3c 2f  s are updated.</
b440: 70 3e 0a 0a 3c 70 3e 54 68 65 20 6f 70 74 69 6f  p>..<p>The optio
b450: 6e 61 6c 20 63 6f 6e 66 6c 69 63 74 2d 63 6c 61  nal conflict-cla
b460: 75 73 65 20 61 6c 6c 6f 77 73 20 74 68 65 20 73  use allows the s
b470: 70 65 63 69 66 69 63 61 74 69 6f 6e 20 6f 66 20  pecification of 
b480: 61 6e 20 61 6c 74 65 72 6e 61 74 69 76 65 0a 63  an alternative.c
b490: 6f 6e 73 74 72 61 69 6e 74 20 63 6f 6e 66 6c 69  onstraint confli
b4a0: 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c  ct resolution al
b4b0: 67 6f 72 69 74 68 6d 20 74 6f 20 75 73 65 20 64  gorithm to use d
b4c0: 75 72 69 6e 67 20 74 68 69 73 20 6f 6e 65 20 63  uring this one c
b4d0: 6f 6d 6d 61 6e 64 2e 0a 53 65 65 20 74 68 65 20  ommand..See the 
b4e0: 73 65 63 74 69 6f 6e 20 74 69 74 6c 65 64 0a 3c  section titled.<
b4f0: 61 20 68 72 65 66 3d 22 23 63 6f 6e 66 6c 69 63  a href="#conflic
b500: 74 22 3e 4f 4e 20 43 4f 4e 46 4c 49 43 54 3c 2f  t">ON CONFLICT</
b510: 61 3e 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61  a> for additiona
b520: 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 3c 2f  l information.</
b530: 70 3e 0a 7d 0a 0a 53 65 63 74 69 6f 6e 20 56 41  p>.}..Section VA
b540: 43 55 55 4d 20 76 61 63 75 75 6d 0a 0a 53 79 6e  CUUM vacuum..Syn
b550: 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65  tax {sql-stateme
b560: 6e 74 7d 20 7b 0a 56 41 43 55 55 4d 20 5b 3c 69  nt} {.VACUUM [<i
b570: 6e 64 65 78 2d 6f 72 2d 74 61 62 6c 65 2d 6e 61  ndex-or-table-na
b580: 6d 65 3e 5d 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c  me>].}..puts {.<
b590: 70 3e 54 68 65 20 56 41 43 55 55 4d 20 63 6f 6d  p>The VACUUM com
b5a0: 6d 61 6e 64 20 69 73 20 61 6e 20 53 51 4c 69 74  mand is an SQLit
b5b0: 65 20 65 78 74 65 6e 73 69 6f 6e 20 6d 6f 64 65  e extension mode
b5c0: 6c 6c 65 64 20 61 66 74 65 72 20 61 20 73 69 6d  lled after a sim
b5d0: 69 6c 61 72 0a 63 6f 6d 6d 61 6e 64 20 66 6f 75  ilar.command fou
b5e0: 6e 64 20 69 6e 20 50 6f 73 74 67 72 65 53 51 4c  nd in PostgreSQL
b5f0: 2e 20 20 49 66 20 56 41 43 55 55 4d 20 69 73 20  .  If VACUUM is 
b600: 69 6e 76 6f 6b 65 64 20 77 69 74 68 20 74 68 65  invoked with the
b610: 20 6e 61 6d 65 20 6f 66 20 61 0a 74 61 62 6c 65   name of a.table
b620: 20 6f 72 20 69 6e 64 65 78 20 74 68 65 6e 20 69   or index then i
b630: 74 20 69 73 20 73 75 70 70 6f 73 65 20 74 6f 20  t is suppose to 
b640: 63 6c 65 61 6e 20 75 70 20 74 68 65 20 6e 61 6d  clean up the nam
b650: 65 64 20 74 61 62 6c 65 20 6f 72 20 69 6e 64 65  ed table or inde
b660: 78 2e 0a 49 6e 20 76 65 72 73 69 6f 6e 20 31 2e  x..In version 1.
b670: 30 20 6f 66 20 53 51 4c 69 74 65 2c 20 74 68 65  0 of SQLite, the
b680: 20 56 41 43 55 55 4d 20 63 6f 6d 6d 61 6e 64 20   VACUUM command 
b690: 77 6f 75 6c 64 20 69 6e 76 6f 6b 65 20 0a 3c 62  would invoke .<b
b6a0: 3e 67 64 62 6d 5f 72 65 6f 72 67 61 6e 69 7a 65  >gdbm_reorganize
b6b0: 28 29 3c 2f 62 3e 20 74 6f 20 63 6c 65 61 6e 20  ()</b> to clean 
b6c0: 75 70 20 74 68 65 20 62 61 63 6b 65 6e 64 20 64  up the backend d
b6d0: 61 74 61 62 61 73 65 20 66 69 6c 65 2e 0a 42 65  atabase file..Be
b6e0: 67 69 6e 6e 69 6e 67 20 77 69 74 68 20 76 65 72  ginning with ver
b6f0: 73 69 6f 6e 20 32 2e 30 20 6f 66 20 53 51 4c 69  sion 2.0 of SQLi
b700: 74 65 2c 20 47 44 42 4d 20 69 73 20 6e 6f 20 6c  te, GDBM is no l
b710: 6f 6e 67 65 72 20 75 73 65 64 20 66 6f 72 0a 74  onger used for.t
b720: 68 65 20 64 61 74 61 62 61 73 65 20 62 61 63 6b  he database back
b730: 65 6e 64 20 61 6e 64 20 56 41 43 55 55 4d 20 68  end and VACUUM h
b740: 61 73 20 62 65 63 6f 6d 65 20 61 20 6e 6f 2d 6f  as become a no-o
b750: 70 2e 0a 3c 2f 70 3e 0a 7d 0a 0a 0a 70 75 74 73  p..</p>.}...puts
b760: 20 7b 0a 3c 70 3e 3c 68 72 20 2f 3e 3c 2f 70 3e   {.<p><hr /></p>
b770: 0a 3c 70 3e 3c 61 20 68 72 65 66 3d 22 69 6e 64  .<p><a href="ind
b780: 65 78 2e 68 74 6d 6c 22 3e 3c 69 6d 67 20 73 72  ex.html"><img sr
b790: 63 3d 22 2f 67 6f 62 61 63 6b 2e 6a 70 67 22 20  c="/goback.jpg" 
b7a0: 62 6f 72 64 65 72 3d 30 20 2f 3e 0a 42 61 63 6b  border=0 />.Back
b7b0: 20 74 6f 20 74 68 65 20 53 51 4c 69 74 65 20 48   to the SQLite H
b7c0: 6f 6d 65 20 50 61 67 65 3c 2f 61 3e 0a 3c 2f 70  ome Page</a>.</p
b7d0: 3e 0a 0a 3c 2f 62 6f 64 79 3e 3c 2f 68 74 6d 6c  >..</body></html
b7e0: 3e 7d 0a                                         >}.