/ Hex Artifact Content
Login

Artifact bbff2febcccbe34de75e4eebfea3799483d224ce:


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 37 20 32 30 30 32  .tcl,v 1.37 2002
0060: 2f 30 35 2f 32 38 20 30 36 3a 35 35 3a 32 37 20  /05/28 06:55:27 
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 70 75 74 73 20 7b  nt:</p>.}.puts {
4210: 0a 3c 70 3e 4e 6f 74 65 20 74 68 61 74 20 63 75  .<p>Note that cu
4220: 72 72 65 6e 74 6c 79 2c 20 74 72 69 67 67 65 72  rrently, trigger
4230: 73 20 6d 61 79 20 62 65 68 61 76 65 20 6f 64 64  s may behave odd
4240: 6c 79 20 77 68 65 6e 20 63 72 65 61 74 65 64 20  ly when created 
4250: 6f 6e 20 74 61 62 6c 65 73 0a 20 20 77 69 74 68  on tables.  with
4260: 20 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59   INTEGER PRIMARY
4270: 20 4b 45 59 20 66 69 65 6c 64 73 2e 20 49 66 20   KEY fields. If 
4280: 61 20 42 45 46 4f 52 45 20 74 72 69 67 67 65 72  a BEFORE trigger
4290: 20 70 72 6f 67 72 61 6d 20 6d 6f 64 69 66 69 65   program modifie
42a0: 73 20 74 68 65 20 0a 20 20 49 4e 54 45 47 45 52  s the .  INTEGER
42b0: 20 50 52 49 4d 41 52 59 20 4b 45 59 20 66 69 65   PRIMARY KEY fie
42c0: 6c 64 20 6f 66 20 61 20 72 6f 77 20 74 68 61 74  ld of a row that
42d0: 20 77 69 6c 6c 20 62 65 20 73 75 62 73 65 71 75   will be subsequ
42e0: 65 6e 74 6c 79 20 75 70 64 61 74 65 64 20 62 79  ently updated by
42f0: 20 74 68 65 0a 20 20 73 74 61 74 65 6d 65 6e 74   the.  statement
4300: 20 74 68 61 74 20 63 61 75 73 65 73 20 74 68 65   that causes the
4310: 20 74 72 69 67 67 65 72 20 74 6f 20 66 69 72 65   trigger to fire
4320: 2c 20 74 68 65 6e 20 74 68 65 20 75 70 64 61 74  , then the updat
4330: 65 20 6d 61 79 20 6e 6f 74 20 6f 63 63 75 72 2e  e may not occur.
4340: 20 0a 20 20 54 68 65 20 77 6f 72 6b 61 72 6f 75   .  The workarou
4350: 6e 64 20 69 73 20 74 6f 20 64 65 63 6c 61 72 65  nd is to declare
4360: 20 74 68 65 20 74 61 62 6c 65 20 77 69 74 68 20   the table with 
4370: 61 20 50 52 49 4d 41 52 59 20 4b 45 59 20 63 6f  a PRIMARY KEY co
4380: 6c 75 6d 6e 20 69 6e 73 74 65 61 64 0a 20 20 6f  lumn instead.  o
4390: 66 20 61 6e 20 49 4e 54 45 47 45 52 20 50 52 49  f an INTEGER PRI
43a0: 4d 41 52 59 20 4b 45 59 20 63 6f 6c 75 6d 6e 2e  MARY KEY column.
43b0: 3c 2f 70 3e 0a 7d 0a 0a 45 78 61 6d 70 6c 65 20  </p>.}..Example 
43c0: 7b 0a 55 50 44 41 54 45 20 63 75 73 74 6f 6d 65  {.UPDATE custome
43d0: 72 73 20 53 45 54 20 61 64 64 72 65 73 73 20 3d  rs SET address =
43e0: 20 27 31 20 4d 61 69 6e 20 53 74 2e 27 20 57 48   '1 Main St.' WH
43f0: 45 52 45 20 6e 61 6d 65 20 3d 20 27 4a 61 63 6b  ERE name = 'Jack
4400: 20 4a 6f 6e 65 73 27 3b 0a 7d 0a 70 75 74 73 20   Jones';.}.puts 
4410: 7b 0a 3c 70 3e 63 61 75 73 65 73 20 74 68 65 20  {.<p>causes the 
4420: 66 6f 6c 6c 6f 77 69 6e 67 20 74 6f 20 62 65 20  following to be 
4430: 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 65 78  automatically ex
4440: 65 63 75 74 65 64 3a 3c 2f 70 3e 0a 7d 0a 45 78  ecuted:</p>.}.Ex
4450: 61 6d 70 6c 65 20 7b 0a 55 50 44 41 54 45 20 6f  ample {.UPDATE o
4460: 72 64 65 72 73 20 53 45 54 20 61 64 64 72 65 73  rders SET addres
4470: 73 20 3d 20 27 31 20 4d 61 69 6e 20 53 74 2e 27  s = '1 Main St.'
4480: 20 57 48 45 52 45 20 63 75 73 74 6f 6d 65 72 5f   WHERE customer_
4490: 6e 61 6d 65 20 3d 20 27 4a 61 63 6b 20 4a 6f 6e  name = 'Jack Jon
44a0: 65 73 27 3b 0a 7d 0a 0a 53 65 63 74 69 6f 6e 20  es';.}..Section 
44b0: 7b 43 52 45 41 54 45 20 56 49 45 57 7d 20 7b 63  {CREATE VIEW} {c
44c0: 72 65 61 74 65 76 69 65 77 7d 0a 0a 53 79 6e 74  reateview}..Synt
44d0: 61 78 20 7b 73 71 6c 2d 63 6f 6d 6d 61 6e 64 7d  ax {sql-command}
44e0: 20 7b 0a 43 52 45 41 54 45 20 56 49 45 57 20 3c   {.CREATE VIEW <
44f0: 76 69 65 77 2d 6e 61 6d 65 3e 20 41 53 20 3c 73  view-name> AS <s
4500: 65 6c 65 63 74 2d 73 74 61 74 65 6d 65 6e 74 3e  elect-statement>
4510: 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68  .}..puts {.<p>Th
4520: 65 20 43 52 45 41 54 45 20 56 49 45 57 20 63 6f  e CREATE VIEW co
4530: 6d 6d 61 6e 64 20 61 73 73 69 67 6e 73 20 61 20  mmand assigns a 
4540: 6e 61 6d 65 20 74 6f 20 61 20 70 72 65 2d 70 61  name to a pre-pa
4550: 63 6b 61 67 65 64 20 53 45 4c 45 43 54 0a 73 74  ckaged SELECT.st
4560: 61 74 65 6d 65 6e 74 2e 20 20 4f 6e 63 65 20 74  atement.  Once t
4570: 68 65 20 76 69 65 77 20 69 73 20 63 72 65 61 74  he view is creat
4580: 65 64 2c 20 69 74 20 63 61 6e 20 62 65 20 75 73  ed, it can be us
4590: 65 64 20 69 6e 20 74 68 65 20 46 52 4f 4d 20 63  ed in the FROM c
45a0: 6c 61 75 73 65 0a 6f 66 20 61 6e 6f 74 68 65 72  lause.of another
45b0: 20 53 45 4c 45 43 54 20 69 6e 20 70 6c 61 63 65   SELECT in place
45c0: 20 6f 66 20 61 20 74 61 62 6c 65 20 6e 61 6d 65   of a table name
45d0: 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 59 6f 75 20 63  ..</p>..<p>You c
45e0: 61 6e 6e 6f 74 20 43 4f 50 59 2c 20 49 4e 53 45  annot COPY, INSE
45f0: 52 54 20 6f 72 20 55 50 44 41 54 45 20 61 20 76  RT or UPDATE a v
4600: 69 65 77 2e 20 20 56 69 65 77 73 20 61 72 65 20  iew.  Views are 
4610: 72 65 61 64 2d 6f 6e 6c 79 2e 3c 2f 70 3e 0a 7d  read-only.</p>.}
4620: 0a 0a 53 65 63 74 69 6f 6e 20 44 45 4c 45 54 45  ..Section DELETE
4630: 20 64 65 6c 65 74 65 0a 0a 53 79 6e 74 61 78 20   delete..Syntax 
4640: 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20  {sql-statement} 
4650: 7b 0a 44 45 4c 45 54 45 20 46 52 4f 4d 20 3c 74  {.DELETE FROM <t
4660: 61 62 6c 65 2d 6e 61 6d 65 3e 20 5b 57 48 45 52  able-name> [WHER
4670: 45 20 3c 65 78 70 72 3e 5d 0a 7d 0a 0a 70 75 74  E <expr>].}..put
4680: 73 20 7b 0a 3c 70 3e 54 68 65 20 44 45 4c 45 54  s {.<p>The DELET
4690: 45 20 63 6f 6d 6d 61 6e 64 20 69 73 20 75 73 65  E command is use
46a0: 64 20 74 6f 20 72 65 6d 6f 76 65 20 72 65 63 6f  d to remove reco
46b0: 72 64 73 20 66 72 6f 6d 20 61 20 74 61 62 6c 65  rds from a table
46c0: 2e 0a 54 68 65 20 63 6f 6d 6d 61 6e 64 20 63 6f  ..The command co
46d0: 6e 73 69 73 74 73 20 6f 66 20 74 68 65 20 22 44  nsists of the "D
46e0: 45 4c 45 54 45 20 46 52 4f 4d 22 20 6b 65 79 77  ELETE FROM" keyw
46f0: 6f 72 64 73 20 66 6f 6c 6c 6f 77 65 64 20 62 79  ords followed by
4700: 0a 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65  .the name of the
4710: 20 74 61 62 6c 65 20 66 72 6f 6d 20 77 68 69 63   table from whic
4720: 68 20 72 65 63 6f 72 64 73 20 61 72 65 20 74 6f  h records are to
4730: 20 62 65 20 72 65 6d 6f 76 65 64 2e 0a 3c 2f 70   be removed..</p
4740: 3e 0a 0a 3c 70 3e 57 69 74 68 6f 75 74 20 61 20  >..<p>Without a 
4750: 57 48 45 52 45 20 63 6c 61 75 73 65 2c 20 61 6c  WHERE clause, al
4760: 6c 20 72 6f 77 73 20 6f 66 20 74 68 65 20 74 61  l rows of the ta
4770: 62 6c 65 20 61 72 65 20 72 65 6d 6f 76 65 64 2e  ble are removed.
4780: 0a 49 66 20 61 20 57 48 45 52 45 20 63 6c 61 75  .If a WHERE clau
4790: 73 65 20 69 73 20 73 75 70 70 6c 69 65 64 2c 20  se is supplied, 
47a0: 74 68 65 6e 20 6f 6e 6c 79 20 74 68 6f 73 65 20  then only those 
47b0: 72 6f 77 73 20 74 68 61 74 20 6d 61 74 63 68 0a  rows that match.
47c0: 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20 61  the expression a
47d0: 72 65 20 72 65 6d 6f 76 65 64 2e 3c 2f 70 3e 0a  re removed.</p>.
47e0: 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20 7b 44 52 4f  }...Section {DRO
47f0: 50 20 49 4e 44 45 58 7d 20 64 72 6f 70 69 6e 64  P INDEX} dropind
4800: 65 78 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d  ex..Syntax {sql-
4810: 63 6f 6d 6d 61 6e 64 7d 20 7b 0a 44 52 4f 50 20  command} {.DROP 
4820: 49 4e 44 45 58 20 3c 69 6e 64 65 78 2d 6e 61 6d  INDEX <index-nam
4830: 65 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e  e>.}..puts {.<p>
4840: 54 68 65 20 44 52 4f 50 20 49 4e 44 45 58 20 73  The DROP INDEX s
4850: 74 61 74 65 6d 65 6e 74 20 63 6f 6e 73 69 73 74  tatement consist
4860: 73 20 6f 66 20 74 68 65 20 6b 65 79 77 6f 72 64  s of the keyword
4870: 73 20 22 44 52 4f 50 20 49 4e 44 45 58 22 20 66  s "DROP INDEX" f
4880: 6f 6c 6c 6f 77 65 64 0a 62 79 20 74 68 65 20 6e  ollowed.by the n
4890: 61 6d 65 20 6f 66 20 74 68 65 20 69 6e 64 65 78  ame of the index
48a0: 2e 20 20 54 68 65 20 69 6e 64 65 78 20 6e 61 6d  .  The index nam
48b0: 65 64 20 69 73 20 63 6f 6d 70 6c 65 74 65 6c 79  ed is completely
48c0: 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d 0a 74 68   removed from.th
48d0: 65 20 64 69 73 6b 2e 20 20 54 68 65 20 6f 6e 6c  e disk.  The onl
48e0: 79 20 77 61 79 20 74 6f 20 72 65 63 6f 76 65 72  y way to recover
48f0: 20 74 68 65 20 69 6e 64 65 78 20 69 73 20 74 6f   the index is to
4900: 20 72 65 65 6e 74 65 72 20 74 68 65 0a 61 70 70   reenter the.app
4910: 72 6f 70 72 69 61 74 65 20 43 52 45 41 54 45 20  ropriate CREATE 
4920: 49 4e 44 45 58 20 63 6f 6d 6d 61 6e 64 2e 3c 2f  INDEX command.</
4930: 70 3e 0a 7d 0a 0a 53 65 63 74 69 6f 6e 20 7b 44  p>.}..Section {D
4940: 52 4f 50 20 54 41 42 4c 45 7d 20 64 72 6f 70 74  ROP TABLE} dropt
4950: 61 62 6c 65 0a 0a 53 79 6e 74 61 78 20 7b 73 71  able..Syntax {sq
4960: 6c 2d 63 6f 6d 6d 61 6e 64 7d 20 7b 0a 44 52 4f  l-command} {.DRO
4970: 50 20 54 41 42 4c 45 20 3c 74 61 62 6c 65 2d 6e  P TABLE <table-n
4980: 61 6d 65 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c  ame>.}..puts {.<
4990: 70 3e 54 68 65 20 44 52 4f 50 20 54 41 42 4c 45  p>The DROP TABLE
49a0: 20 73 74 61 74 65 6d 65 6e 74 20 63 6f 6e 73 69   statement consi
49b0: 73 74 73 20 6f 66 20 74 68 65 20 6b 65 79 77 6f  sts of the keywo
49c0: 72 64 73 20 22 44 52 4f 50 20 54 41 42 4c 45 22  rds "DROP TABLE"
49d0: 20 66 6f 6c 6c 6f 77 65 64 0a 62 79 20 74 68 65   followed.by the
49e0: 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 74 61 62   name of the tab
49f0: 6c 65 2e 20 20 54 68 65 20 74 61 62 6c 65 20 6e  le.  The table n
4a00: 61 6d 65 64 20 69 73 20 63 6f 6d 70 6c 65 74 65  amed is complete
4a10: 6c 79 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d 0a  ly removed from.
4a20: 74 68 65 20 64 69 73 6b 2e 20 20 54 68 65 20 74  the disk.  The t
4a30: 61 62 6c 65 20 63 61 6e 20 6e 6f 74 20 62 65 20  able can not be 
4a40: 72 65 63 6f 76 65 72 65 64 2e 20 20 41 6c 6c 20  recovered.  All 
4a50: 69 6e 64 69 63 65 73 20 61 73 73 6f 63 69 61 74  indices associat
4a60: 65 64 20 77 69 74 68 0a 74 68 65 20 74 61 62 6c  ed with.the tabl
4a70: 65 20 61 72 65 20 61 6c 73 6f 20 64 65 6c 65 74  e are also delet
4a80: 65 64 2e 3c 2f 70 3e 7d 0a 0a 53 65 63 74 69 6f  ed.</p>}..Sectio
4a90: 6e 20 7b 44 52 4f 50 20 54 52 49 47 47 45 52 7d  n {DROP TRIGGER}
4aa0: 20 64 72 6f 70 74 72 69 67 67 65 72 0a 53 79 6e   droptrigger.Syn
4ab0: 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65  tax {sql-stateme
4ac0: 6e 74 7d 20 7b 0a 44 52 4f 50 20 54 52 49 47 47  nt} {.DROP TRIGG
4ad0: 45 52 20 3c 74 72 69 67 67 65 72 2d 6e 61 6d 65  ER <trigger-name
4ae0: 3e 0a 7d 0a 70 75 74 73 20 7b 20 0a 20 20 3c 70  >.}.puts { .  <p
4af0: 3e 55 73 65 64 20 74 6f 20 64 72 6f 70 20 61 20  >Used to drop a 
4b00: 74 72 69 67 67 65 72 20 66 72 6f 6d 20 74 68 65  trigger from the
4b10: 20 64 61 74 61 62 61 73 65 20 73 63 68 65 6d 61   database schema
4b20: 2e 20 4e 6f 74 65 20 74 68 61 74 20 74 72 69 67  . Note that trig
4b30: 67 65 72 73 0a 20 20 61 72 65 20 61 75 74 6f 6d  gers.  are autom
4b40: 61 74 69 63 61 6c 6c 79 20 64 72 6f 70 70 65 64  atically dropped
4b50: 20 77 68 65 6e 20 74 68 65 20 61 73 73 6f 63 69   when the associ
4b60: 61 74 65 64 20 74 61 62 6c 65 20 69 73 20 64 72  ated table is dr
4b70: 6f 70 70 65 64 2e 3c 2f 70 3e 0a 7d 0a 0a 53 65  opped.</p>.}..Se
4b80: 63 74 69 6f 6e 20 7b 44 52 4f 50 20 56 49 45 57  ction {DROP VIEW
4b90: 7d 20 64 72 6f 70 76 69 65 77 0a 0a 53 79 6e 74  } dropview..Synt
4ba0: 61 78 20 7b 73 71 6c 2d 63 6f 6d 6d 61 6e 64 7d  ax {sql-command}
4bb0: 20 7b 0a 44 52 4f 50 20 56 49 45 57 20 3c 76 69   {.DROP VIEW <vi
4bc0: 65 77 2d 6e 61 6d 65 3e 0a 7d 0a 0a 70 75 74 73  ew-name>.}..puts
4bd0: 20 7b 0a 3c 70 3e 54 68 65 20 44 52 4f 50 20 56   {.<p>The DROP V
4be0: 49 45 57 20 73 74 61 74 65 6d 65 6e 74 20 63 6f  IEW statement co
4bf0: 6e 73 69 73 74 73 20 6f 66 20 74 68 65 20 6b 65  nsists of the ke
4c00: 79 77 6f 72 64 73 20 22 44 52 4f 50 20 54 41 42  ywords "DROP TAB
4c10: 4c 45 22 20 66 6f 6c 6c 6f 77 65 64 0a 62 79 20  LE" followed.by 
4c20: 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  the name of the 
4c30: 76 69 65 77 2e 20 20 54 68 65 20 76 69 65 77 20  view.  The view 
4c40: 6e 61 6d 65 64 20 69 73 20 72 65 6d 6f 76 65 64  named is removed
4c50: 20 66 72 6f 6d 20 74 68 65 20 64 61 74 61 62 61   from the databa
4c60: 73 65 2e 0a 42 75 74 20 6e 6f 20 61 63 74 75 61  se..But no actua
4c70: 6c 20 64 61 74 61 20 69 73 20 6d 6f 64 69 66 69  l data is modifi
4c80: 65 64 2e 3c 2f 70 3e 7d 0a 0a 53 65 63 74 69 6f  ed.</p>}..Sectio
4c90: 6e 20 45 58 50 4c 41 49 4e 20 65 78 70 6c 61 69  n EXPLAIN explai
4ca0: 6e 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73  n..Syntax {sql-s
4cb0: 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 45 58 50 4c  tatement} {.EXPL
4cc0: 41 49 4e 20 3c 73 71 6c 2d 73 74 61 74 65 6d 65  AIN <sql-stateme
4cd0: 6e 74 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70  nt>.}..puts {.<p
4ce0: 3e 54 68 65 20 45 58 50 4c 41 49 4e 20 63 6f 6d  >The EXPLAIN com
4cf0: 6d 61 6e 64 20 6d 6f 64 69 66 69 65 72 20 69 73  mand modifier is
4d00: 20 61 20 6e 6f 6e 2d 73 74 61 6e 64 61 72 64 20   a non-standard 
4d10: 65 78 74 65 6e 73 69 6f 6e 2e 20 20 54 68 65 0a  extension.  The.
4d20: 69 64 65 61 20 63 6f 6d 65 73 20 66 72 6f 6d 20  idea comes from 
4d30: 61 20 73 69 6d 69 6c 61 72 20 63 6f 6d 6d 61 6e  a similar comman
4d40: 64 20 66 6f 75 6e 64 20 69 6e 20 50 6f 73 74 67  d found in Postg
4d50: 72 65 53 51 4c 2c 20 62 75 74 20 74 68 65 20 6f  reSQL, but the o
4d60: 70 65 72 61 74 69 6f 6e 0a 69 73 20 63 6f 6d 70  peration.is comp
4d70: 6c 65 74 65 6c 79 20 64 69 66 66 65 72 65 6e 74  letely different
4d80: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 74 68 65  .</p>..<p>If the
4d90: 20 45 58 50 4c 41 49 4e 20 6b 65 79 77 6f 72 64   EXPLAIN keyword
4da0: 20 61 70 70 65 61 72 73 20 62 65 66 6f 72 65 20   appears before 
4db0: 61 6e 79 20 6f 74 68 65 72 20 53 51 4c 69 74 65  any other SQLite
4dc0: 20 53 51 4c 20 63 6f 6d 6d 61 6e 64 0a 74 68 65   SQL command.the
4dd0: 6e 20 69 6e 73 74 65 61 64 20 6f 66 20 61 63 74  n instead of act
4de0: 75 61 6c 6c 79 20 65 78 65 63 75 74 69 6e 67 20  ually executing 
4df0: 74 68 65 20 63 6f 6d 6d 61 6e 64 2c 20 74 68 65  the command, the
4e00: 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20   SQLite library 
4e10: 77 69 6c 6c 0a 72 65 70 6f 72 74 20 62 61 63 6b  will.report back
4e20: 20 74 68 65 20 73 65 71 75 65 6e 63 65 20 6f 66   the sequence of
4e30: 20 76 69 72 74 75 61 6c 20 6d 61 63 68 69 6e 65   virtual machine
4e40: 20 69 6e 73 74 72 75 63 74 69 6f 6e 73 20 69 74   instructions it
4e50: 20 77 6f 75 6c 64 20 68 61 76 65 0a 75 73 65 64   would have.used
4e60: 20 74 6f 20 65 78 65 63 75 74 65 20 74 68 65 20   to execute the 
4e70: 63 6f 6d 6d 61 6e 64 20 68 61 64 20 74 68 65 20  command had the 
4e80: 45 58 50 4c 41 49 4e 20 6b 65 79 77 6f 72 64 20  EXPLAIN keyword 
4e90: 6e 6f 74 20 62 65 65 6e 20 70 72 65 73 65 6e 74  not been present
4ea0: 2e 0a 46 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c  ..For additional
4eb0: 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f   information abo
4ec0: 75 74 20 76 69 72 74 75 61 6c 20 6d 61 63 68 69  ut virtual machi
4ed0: 6e 65 20 69 6e 73 74 72 75 63 74 69 6f 6e 73 20  ne instructions 
4ee0: 73 65 65 0a 74 68 65 20 3c 61 20 68 72 65 66 3d  see.the <a href=
4ef0: 22 61 72 63 68 2e 68 74 6d 6c 22 3e 61 72 63 68  "arch.html">arch
4f00: 69 74 65 63 74 75 72 65 20 64 65 73 63 72 69 70  itecture descrip
4f10: 74 69 6f 6e 3c 2f 61 3e 20 6f 72 20 74 68 65 20  tion</a> or the 
4f20: 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 0a 6f 6e  documentation.on
4f30: 20 3c 61 20 68 72 65 66 3d 22 6f 70 63 6f 64 65   <a href="opcode
4f40: 2e 68 74 6d 6c 22 3e 61 76 61 69 6c 61 62 6c 65  .html">available
4f50: 20 6f 70 63 6f 64 65 73 3c 2f 61 3e 20 66 6f 72   opcodes</a> for
4f60: 20 74 68 65 20 76 69 72 74 75 61 6c 20 6d 61 63   the virtual mac
4f70: 68 69 6e 65 2e 3c 2f 70 3e 0a 7d 0a 0a 53 65 63  hine.</p>.}..Sec
4f80: 74 69 6f 6e 20 65 78 70 72 65 73 73 69 6f 6e 20  tion expression 
4f90: 65 78 70 72 0a 0a 53 79 6e 74 61 78 20 7b 65 78  expr..Syntax {ex
4fa0: 70 72 7d 20 7b 0a 3c 65 78 70 72 3e 20 3c 62 69  pr} {.<expr> <bi
4fb0: 6e 61 72 79 2d 6f 70 3e 20 3c 65 78 70 72 3e 20  nary-op> <expr> 
4fc0: 7c 0a 3c 65 78 70 72 3e 20 3c 6c 69 6b 65 2d 6f  |.<expr> <like-o
4fd0: 70 3e 20 3c 65 78 70 72 3e 20 7c 0a 3c 75 6e 61  p> <expr> |.<una
4fe0: 72 79 2d 6f 70 3e 20 3c 65 78 70 72 3e 20 7c 0a  ry-op> <expr> |.
4ff0: 28 20 3c 65 78 70 72 3e 20 29 20 7c 0a 3c 63 6f  ( <expr> ) |.<co
5000: 6c 75 6d 6e 2d 6e 61 6d 65 3e 20 7c 0a 3c 74 61  lumn-name> |.<ta
5010: 62 6c 65 2d 6e 61 6d 65 3e 20 2e 20 3c 63 6f 6c  ble-name> . <col
5020: 75 6d 6e 2d 6e 61 6d 65 3e 20 7c 0a 3c 6c 69 74  umn-name> |.<lit
5030: 65 72 61 6c 2d 76 61 6c 75 65 3e 20 7c 0a 3c 66  eral-value> |.<f
5040: 75 6e 63 74 69 6f 6e 2d 6e 61 6d 65 3e 20 28 20  unction-name> ( 
5050: 3c 65 78 70 72 2d 6c 69 73 74 3e 20 7c 20 53 54  <expr-list> | ST
5060: 41 52 20 29 20 7c 0a 3c 65 78 70 72 3e 20 49 53  AR ) |.<expr> IS
5070: 4e 55 4c 4c 20 7c 0a 3c 65 78 70 72 3e 20 4e 4f  NULL |.<expr> NO
5080: 54 4e 55 4c 4c 20 7c 0a 3c 65 78 70 72 3e 20 5b  TNULL |.<expr> [
5090: 4e 4f 54 5d 20 42 45 54 57 45 45 4e 20 3c 65 78  NOT] BETWEEN <ex
50a0: 70 72 3e 20 41 4e 44 20 3c 65 78 70 72 3e 20 7c  pr> AND <expr> |
50b0: 0a 3c 65 78 70 72 3e 20 5b 4e 4f 54 5d 20 49 4e  .<expr> [NOT] IN
50c0: 20 28 20 3c 76 61 6c 75 65 2d 6c 69 73 74 3e 20   ( <value-list> 
50d0: 29 20 7c 0a 3c 65 78 70 72 3e 20 5b 4e 4f 54 5d  ) |.<expr> [NOT]
50e0: 20 49 4e 20 28 20 3c 73 65 6c 65 63 74 2d 73 74   IN ( <select-st
50f0: 61 74 65 6d 65 6e 74 3e 20 29 20 7c 0a 28 20 3c  atement> ) |.( <
5100: 73 65 6c 65 63 74 2d 73 74 61 74 65 6d 65 6e 74  select-statement
5110: 3e 20 29 20 7c 0a 43 41 53 45 20 5b 3c 65 78 70  > ) |.CASE [<exp
5120: 72 3e 5d 20 28 20 57 48 45 4e 20 3c 65 78 70 72  r>] ( WHEN <expr
5130: 3e 20 54 48 45 4e 20 3c 65 78 70 72 3e 20 29 2b  > THEN <expr> )+
5140: 20 5b 45 4c 53 45 20 3c 65 78 70 72 3e 5d 20 45   [ELSE <expr>] E
5150: 4e 44 0a 7d 20 7b 6c 69 6b 65 2d 6f 70 7d 20 7b  ND.} {like-op} {
5160: 0a 4c 49 4b 45 20 7c 20 47 4c 4f 42 20 7c 20 4e  .LIKE | GLOB | N
5170: 4f 54 20 4c 49 4b 45 20 7c 20 4e 4f 54 20 47 4c  OT LIKE | NOT GL
5180: 4f 42 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e  OB.}..puts {.<p>
5190: 54 68 69 73 20 73 65 63 74 69 6f 6e 20 69 73 20  This section is 
51a0: 64 69 66 66 65 72 65 6e 74 20 66 72 6f 6d 20 74  different from t
51b0: 68 65 20 6f 74 68 65 72 73 2e 20 20 4d 6f 73 74  he others.  Most
51c0: 20 6f 74 68 65 72 20 73 65 63 74 69 6f 6e 73 20   other sections 
51d0: 6f 66 0a 74 68 69 73 20 64 6f 63 75 6d 65 6e 74  of.this document
51e0: 20 74 61 6c 6b 73 20 61 62 6f 75 74 20 61 20 70   talks about a p
51f0: 61 72 74 69 63 75 6c 61 72 20 53 51 4c 20 63 6f  articular SQL co
5200: 6d 6d 61 6e 64 2e 20 20 54 68 69 73 20 73 65 63  mmand.  This sec
5210: 74 69 6f 6e 20 64 6f 65 73 0a 6e 6f 74 20 74 61  tion does.not ta
5220: 6c 6b 20 61 62 6f 75 74 20 61 20 73 74 61 6e 64  lk about a stand
5230: 61 6c 6f 6e 65 20 63 6f 6d 6d 61 6e 64 20 62 75  alone command bu
5240: 74 20 61 62 6f 75 74 20 22 65 78 70 72 65 73 73  t about "express
5250: 69 6f 6e 73 22 20 77 68 69 63 68 20 61 72 65 20  ions" which are 
5260: 0a 73 75 62 63 6f 6d 70 6f 6e 65 6e 74 20 6f 66  .subcomponent of
5270: 20 6d 6f 73 74 20 6f 74 68 65 72 20 63 6f 6d 6d   most other comm
5280: 61 6e 64 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 53 51  ands.</p>..<p>SQ
5290: 4c 69 74 65 20 75 6e 64 65 72 73 74 61 6e 64 73  Lite understands
52a0: 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 62   the following b
52b0: 69 6e 61 72 79 20 6f 70 65 72 61 74 6f 72 73 2c  inary operators,
52c0: 20 69 6e 20 6f 72 64 65 72 20 66 72 6f 6d 0a 68   in order from.h
52d0: 69 67 68 65 73 74 20 74 6f 20 6c 6f 77 65 73 74  ighest to lowest
52e0: 20 70 72 65 63 65 64 65 6e 63 65 3a 3c 2f 70 3e   precedence:</p>
52f0: 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70  ..<blockquote><p
5300: 72 65 3e 0a 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d  re>.<font color=
5310: 22 23 32 63 32 63 66 30 22 3e 3c 62 69 67 3e 2a  "#2c2cf0"><big>*
5320: 20 20 20 20 2f 20 20 20 20 25 0a 2b 20 20 20 20      /    %.+    
5330: 2d 0a 26 6c 74 3b 26 6c 74 3b 20 20 20 26 67 74  -.&lt;&lt;   &gt
5340: 3b 26 67 74 3b 20 20 20 26 61 6d 70 3b 20 20 20  ;&gt;   &amp;   
5350: 20 7c 0a 26 6c 74 3b 20 20 20 20 26 6c 74 3b 3d   |.&lt;    &lt;=
5360: 20 20 20 26 67 74 3b 20 20 20 20 26 67 74 3b 3d     &gt;    &gt;=
5370: 0a 3d 20 20 20 20 3d 3d 20 20 20 21 3d 20 20 20  .=    ==   !=   
5380: 26 6c 74 3b 26 67 74 3b 20 20 20 3c 2f 62 69 67  &lt;&gt;   </big
5390: 3e 49 4e 0a 41 4e 44 0a 4f 52 3c 2f 66 6f 6e 74  >IN.AND.OR</font
53a0: 3e 0a 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b 71  >.</pre></blockq
53b0: 75 6f 74 65 3e 0a 0a 3c 70 3e 53 75 70 70 6f 72  uote>..<p>Suppor
53c0: 74 65 64 20 75 6e 61 72 79 20 6f 70 65 72 61 74  ted unary operat
53d0: 65 72 73 20 61 72 65 20 74 68 65 73 65 3a 3c 2f  ers are these:</
53e0: 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e  p>..<blockquote>
53f0: 3c 70 72 65 3e 0a 3c 66 6f 6e 74 20 63 6f 6c 6f  <pre>.<font colo
5400: 72 3d 22 23 32 63 32 63 66 30 22 3e 3c 62 69 67  r="#2c2cf0"><big
5410: 3e 2d 20 20 20 20 2b 20 20 20 20 21 20 20 20 20  >-    +    !    
5420: 7e 3c 2f 62 69 67 3e 3c 2f 66 6f 6e 74 3e 0a 3c  ~</big></font>.<
5430: 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74  /pre></blockquot
5440: 65 3e 0a 0a 3c 70 3e 41 6e 79 20 53 51 4c 69 74  e>..<p>Any SQLit
5450: 65 20 76 61 6c 75 65 20 63 61 6e 20 62 65 20 75  e value can be u
5460: 73 65 64 20 61 73 20 70 61 72 74 20 6f 66 20 61  sed as part of a
5470: 6e 20 65 78 70 72 65 73 73 69 6f 6e 2e 20 20 0a  n expression.  .
5480: 46 6f 72 20 61 72 69 74 68 6d 65 74 69 63 20 6f  For arithmetic o
5490: 70 65 72 61 74 69 6f 6e 73 2c 20 69 6e 74 65 67  perations, integ
54a0: 65 72 73 20 61 72 65 20 74 72 65 61 74 65 64 20  ers are treated 
54b0: 61 73 20 69 6e 74 65 67 65 72 73 2e 0a 53 74 72  as integers..Str
54c0: 69 6e 67 73 20 61 72 65 20 66 69 72 73 74 20 63  ings are first c
54d0: 6f 6e 76 65 72 74 65 64 20 74 6f 20 72 65 61 6c  onverted to real
54e0: 20 6e 75 6d 62 65 72 73 20 75 73 69 6e 67 20 3c   numbers using <
54f0: 62 3e 61 74 6f 66 28 29 3c 2f 62 3e 2e 0a 46 6f  b>atof()</b>..Fo
5500: 72 20 63 6f 6d 70 61 72 69 73 6f 6e 20 6f 70 65  r comparison ope
5510: 72 61 74 6f 72 73 2c 20 6e 75 6d 62 65 72 73 20  rators, numbers 
5520: 63 6f 6d 70 61 72 65 20 61 73 20 6e 75 6d 62 65  compare as numbe
5530: 72 73 20 61 6e 64 20 73 74 72 69 6e 67 73 0a 63  rs and strings.c
5540: 6f 6d 70 61 72 65 20 61 73 20 73 74 72 69 6e 67  ompare as string
5550: 73 2e 20 20 46 6f 72 20 73 74 72 69 6e 67 20 63  s.  For string c
5560: 6f 6d 70 61 72 69 73 6f 6e 73 2c 20 63 61 73 65  omparisons, case
5570: 20 69 73 20 73 69 67 6e 69 66 69 63 61 6e 74 0a   is significant.
5580: 62 75 74 20 69 73 20 6f 6e 6c 79 20 75 73 65 64  but is only used
5590: 20 74 6f 20 62 72 65 61 6b 20 61 20 74 69 65 2e   to break a tie.
55a0: 0a 4e 6f 74 65 20 74 68 61 74 20 74 68 65 72 65  .Note that there
55b0: 20 61 72 65 20 74 77 6f 20 76 61 72 69 61 74 69   are two variati
55c0: 6f 6e 73 20 6f 66 20 74 68 65 20 65 71 75 61 6c  ons of the equal
55d0: 73 20 61 6e 64 20 6e 6f 74 20 65 71 75 61 6c 73  s and not equals
55e0: 0a 6f 70 65 72 61 74 6f 72 73 2e 20 20 45 71 75  .operators.  Equ
55f0: 61 6c 73 20 63 61 6e 20 62 65 20 65 69 74 68 65  als can be eithe
5600: 72 7d 0a 70 75 74 73 20 22 5b 4f 70 65 72 61 74  r}.puts "[Operat
5610: 6f 72 20 3d 5d 20 6f 72 20 5b 4f 70 65 72 61 74  or =] or [Operat
5620: 6f 72 20 3d 3d 5d 2e 0a 54 68 65 20 6e 6f 6e 2d  or ==]..The non-
5630: 65 71 75 61 6c 73 20 6f 70 65 72 61 74 6f 72 20  equals operator 
5640: 63 61 6e 20 62 65 20 65 69 74 68 65 72 0a 5b 4f  can be either.[O
5650: 70 65 72 61 74 6f 72 20 21 3d 5d 20 6f 72 20 5b  perator !=] or [
5660: 4f 70 65 72 61 74 6f 72 20 7b 26 6c 74 3b 26 67  Operator {&lt;&g
5670: 74 3b 7d 5d 2e 3c 2f 70 3e 22 0a 70 75 74 73 20  t;}].</p>".puts 
5680: 7b 0a 0a 3c 70 3e 54 68 65 20 4c 49 4b 45 20 6f  {..<p>The LIKE o
5690: 70 65 72 61 74 6f 72 20 64 6f 65 73 20 61 20 77  perator does a w
56a0: 69 6c 64 63 61 72 64 20 63 6f 6d 70 61 72 69 73  ildcard comparis
56b0: 69 6f 6e 2e 20 20 54 68 65 20 6f 70 65 72 61 6e  ion.  The operan
56c0: 64 0a 74 6f 20 74 68 65 20 72 69 67 68 74 20 63  d.to the right c
56d0: 6f 6e 74 61 69 6e 73 20 74 68 65 20 77 69 6c 64  ontains the wild
56e0: 63 61 72 64 73 2e 7d 0a 70 75 74 73 20 22 41 20  cards.}.puts "A 
56f0: 70 65 72 63 65 6e 74 20 73 79 6d 62 6f 6c 20 5b  percent symbol [
5700: 4f 70 65 72 61 74 6f 72 20 25 5d 20 69 6e 20 74  Operator %] in t
5710: 68 65 20 72 69 67 68 74 20 6f 70 65 72 61 6e 64  he right operand
5720: 0a 6d 61 74 63 68 65 73 20 61 6e 79 20 73 65 71  .matches any seq
5730: 75 65 6e 63 65 20 6f 66 20 7a 65 72 6f 20 6f 72  uence of zero or
5740: 20 6d 6f 72 65 20 63 68 61 72 61 63 74 65 72 73   more characters
5750: 20 6f 6e 20 74 68 65 20 6c 65 66 74 2e 0a 41 6e   on the left..An
5760: 20 75 6e 64 65 72 73 63 6f 72 65 20 5b 4f 70 65   underscore [Ope
5770: 72 61 74 6f 72 20 5f 5d 20 6f 6e 20 74 68 65 20  rator _] on the 
5780: 72 69 67 68 74 0a 6d 61 74 63 68 65 73 20 61 6e  right.matches an
5790: 79 20 73 69 6e 67 6c 65 20 63 68 61 72 61 63 74  y single charact
57a0: 65 72 20 6f 6e 20 74 68 65 20 6c 65 66 74 2e 22  er on the left."
57b0: 0a 70 75 74 73 20 7b 54 68 65 20 4c 49 4b 45 20  .puts {The LIKE 
57c0: 6f 70 65 72 61 74 6f 72 20 69 73 0a 6e 6f 74 20  operator is.not 
57d0: 63 61 73 65 20 73 65 6e 73 69 74 69 76 65 20 61  case sensitive a
57e0: 6e 64 20 77 69 6c 6c 20 6d 61 74 63 68 20 75 70  nd will match up
57f0: 70 65 72 20 63 61 73 65 20 63 68 61 72 61 63 74  per case charact
5800: 65 72 73 20 6f 6e 20 6f 6e 65 0a 73 69 64 65 20  ers on one.side 
5810: 61 67 61 69 6e 73 74 20 6c 6f 77 65 72 20 63 61  against lower ca
5820: 73 65 20 63 68 61 72 61 63 74 65 72 73 20 6f 6e  se characters on
5830: 20 74 68 65 20 6f 74 68 65 72 2e 0a 28 41 20 62   the other..(A b
5840: 75 67 3a 20 53 51 4c 69 74 65 20 6f 6e 6c 79 20  ug: SQLite only 
5850: 75 6e 64 65 72 73 74 61 6e 64 73 20 75 70 70 65  understands uppe
5860: 72 2f 6c 6f 77 65 72 20 63 61 73 65 20 66 6f 72  r/lower case for
5870: 20 37 2d 62 69 74 20 4c 61 74 69 6e 0a 63 68 61   7-bit Latin.cha
5880: 72 61 63 74 65 72 73 2e 20 20 48 65 6e 63 65 20  racters.  Hence 
5890: 74 68 65 20 4c 49 4b 45 20 6f 70 65 72 61 74 6f  the LIKE operato
58a0: 72 20 69 73 20 63 61 73 65 20 73 65 6e 73 69 74  r is case sensit
58b0: 69 76 65 20 66 6f 72 0a 38 2d 62 69 74 20 69 73  ive for.8-bit is
58c0: 6f 38 38 35 39 20 63 68 61 72 61 63 74 65 72 73  o8859 characters
58d0: 20 6f 72 20 55 54 46 2d 38 20 63 68 61 72 61 63   or UTF-8 charac
58e0: 74 65 72 73 2e 20 20 46 6f 72 20 65 78 61 6d 70  ters.  For examp
58f0: 6c 65 2c 0a 74 68 65 20 65 78 70 72 65 73 73 69  le,.the expressi
5900: 6f 6e 20 3c 62 3e 27 61 27 26 6e 62 73 70 3b 4c  on <b>'a'&nbsp;L
5910: 49 4b 45 26 6e 62 73 70 3b 27 41 27 3c 2f 62 3e  IKE&nbsp;'A'</b>
5920: 20 69 73 20 54 52 55 45 20 62 75 74 0a 3c 62 3e   is TRUE but.<b>
5930: 27 26 61 65 6c 69 67 3b 27 26 6e 62 73 70 3b 4c  '&aelig;'&nbsp;L
5940: 49 4b 45 26 6e 62 73 70 3b 27 26 41 45 6c 69 67  IKE&nbsp;'&AElig
5950: 3b 27 3c 2f 62 3e 20 69 73 20 46 41 4c 53 45 2e  ;'</b> is FALSE.
5960: 29 0a 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 47  ).</p>..<p>The G
5970: 4c 4f 42 20 6f 70 65 72 61 74 6f 72 20 69 73 20  LOB operator is 
5980: 73 69 6d 69 6c 61 72 20 74 6f 20 4c 49 4b 45 20  similar to LIKE 
5990: 62 75 74 20 75 73 65 73 20 74 68 65 20 55 6e 69  but uses the Uni
59a0: 78 0a 66 69 6c 65 20 67 6c 6f 62 62 69 6e 67 20  x.file globbing 
59b0: 73 79 6e 74 61 78 20 66 6f 72 20 69 74 73 20 77  syntax for its w
59c0: 69 6c 64 63 61 72 64 73 2e 20 20 41 6c 73 6f 2c  ildcards.  Also,
59d0: 20 47 4c 4f 42 20 69 73 20 63 61 73 65 0a 73 65   GLOB is case.se
59e0: 6e 73 69 74 69 76 65 2c 20 75 6e 6c 69 6b 65 20  nsitive, unlike 
59f0: 4c 49 4b 45 2e 20 20 42 6f 74 68 20 47 4c 4f 42  LIKE.  Both GLOB
5a00: 20 61 6e 64 20 4c 49 4b 45 20 6d 61 79 20 62 65   and LIKE may be
5a10: 20 70 72 65 63 65 64 65 64 20 62 79 0a 74 68 65   preceded by.the
5a20: 20 4e 4f 54 20 6b 65 79 77 6f 72 64 20 74 6f 20   NOT keyword to 
5a30: 69 6e 76 65 72 74 20 74 68 65 20 73 65 6e 73 65  invert the sense
5a40: 20 6f 66 20 74 68 65 20 74 65 73 74 2e 3c 2f 70   of the test.</p
5a50: 3e 0a 0a 3c 70 3e 41 20 63 6f 6c 75 6d 6e 20 6e  >..<p>A column n
5a60: 61 6d 65 20 63 61 6e 20 62 65 20 61 6e 79 20 6f  ame can be any o
5a70: 66 20 74 68 65 20 6e 61 6d 65 73 20 64 65 66 69  f the names defi
5a80: 6e 65 64 20 69 6e 20 74 68 65 20 43 52 45 41 54  ned in the CREAT
5a90: 45 20 54 41 42 4c 45 0a 73 74 61 74 65 6d 65 6e  E TABLE.statemen
5aa0: 74 20 6f 72 20 6f 6e 65 20 6f 66 20 74 68 65 20  t or one of the 
5ab0: 66 6f 6c 6c 6f 77 69 6e 67 20 73 70 65 63 69 61  following specia
5ac0: 6c 20 69 64 65 6e 74 69 66 69 65 72 73 3a 20 22  l identifiers: "
5ad0: 3c 62 3e 52 4f 57 49 44 3c 2f 62 3e 22 2c 0a 22  <b>ROWID</b>",."
5ae0: 3c 62 3e 4f 49 44 3c 2f 62 3e 22 2c 20 6f 72 20  <b>OID</b>", or 
5af0: 22 3c 62 3e 5f 52 4f 57 49 44 5f 3c 2f 62 3e 22  "<b>_ROWID_</b>"
5b00: 2e 0a 54 68 65 73 65 20 73 70 65 63 69 61 6c 20  ..These special 
5b10: 69 64 65 6e 74 69 66 69 65 72 73 20 61 6c 6c 20  identifiers all 
5b20: 64 65 73 63 72 69 62 65 20 74 68 65 0a 75 6e 69  describe the.uni
5b30: 71 75 65 20 72 61 6e 64 6f 6d 20 69 6e 74 65 67  que random integ
5b40: 65 72 20 6b 65 79 20 28 74 68 65 20 22 72 6f 77  er key (the "row
5b50: 20 6b 65 79 22 29 20 61 73 73 6f 63 69 61 74 65   key") associate
5b60: 64 20 77 69 74 68 20 65 76 65 72 79 20 0a 72 6f  d with every .ro
5b70: 77 20 6f 66 20 65 76 65 72 79 20 74 61 62 6c 65  w of every table
5b80: 2e 0a 54 68 65 20 73 70 65 63 69 61 6c 20 69 64  ..The special id
5b90: 65 6e 74 69 66 69 65 72 73 20 6f 6e 6c 79 20 72  entifiers only r
5ba0: 65 66 65 72 20 74 6f 20 74 68 65 20 72 6f 77 20  efer to the row 
5bb0: 6b 65 79 20 69 66 20 74 68 65 20 43 52 45 41 54  key if the CREAT
5bc0: 45 20 54 41 42 4c 45 0a 73 74 61 74 65 6d 65 6e  E TABLE.statemen
5bd0: 74 20 64 6f 65 73 20 6e 6f 74 20 64 65 66 69 6e  t does not defin
5be0: 65 20 61 20 72 65 61 6c 20 63 6f 6c 75 6d 6e 20  e a real column 
5bf0: 77 69 74 68 20 74 68 65 20 73 61 6d 65 20 6e 61  with the same na
5c00: 6d 65 2e 20 20 52 6f 77 20 6b 65 79 73 0a 61 63  me.  Row keys.ac
5c10: 74 20 6c 69 6b 65 20 72 65 61 64 2d 6f 6e 6c 79  t like read-only
5c20: 20 63 6f 6c 75 6d 6e 73 2e 20 20 41 20 72 6f 77   columns.  A row
5c30: 20 6b 65 79 20 63 61 6e 20 62 65 20 75 73 65 64   key can be used
5c40: 20 61 6e 79 77 68 65 72 65 20 61 20 72 65 67 75   anywhere a regu
5c50: 6c 61 72 0a 63 6f 6c 75 6d 6e 20 63 61 6e 20 62  lar.column can b
5c60: 65 20 75 73 65 64 2c 20 65 78 63 65 70 74 20 74  e used, except t
5c70: 68 61 74 20 79 6f 75 20 63 61 6e 6e 6f 74 20 63  hat you cannot c
5c80: 68 61 6e 67 65 20 74 68 65 20 76 61 6c 75 65 0a  hange the value.
5c90: 6f 66 20 61 20 72 6f 77 20 6b 65 79 20 69 6e 20  of a row key in 
5ca0: 61 6e 20 55 50 44 41 54 45 20 6f 72 20 49 4e 53  an UPDATE or INS
5cb0: 45 52 54 20 73 74 61 74 65 6d 65 6e 74 2e 0a 22  ERT statement.."
5cc0: 53 45 4c 45 43 54 20 2a 20 2e 2e 2e 22 20 64 6f  SELECT * ..." do
5cd0: 65 73 20 6e 6f 74 20 72 65 74 75 72 6e 20 74 68  es not return th
5ce0: 65 20 72 6f 77 20 6b 65 79 2e 3c 2f 70 3e 0a 0a  e row key.</p>..
5cf0: 3c 70 3e 53 45 4c 45 43 54 20 73 74 61 74 65 6d  <p>SELECT statem
5d00: 65 6e 74 73 20 63 61 6e 20 61 70 70 65 61 72 20  ents can appear 
5d10: 69 6e 20 65 78 70 72 65 73 73 69 6f 6e 73 20 61  in expressions a
5d20: 73 20 65 69 74 68 65 72 20 74 68 65 0a 72 69 67  s either the.rig
5d30: 68 74 2d 68 61 6e 64 20 6f 70 65 72 61 6e 64 20  ht-hand operand 
5d40: 6f 66 20 74 68 65 20 49 4e 20 6f 70 65 72 61 74  of the IN operat
5d50: 6f 72 20 6f 72 20 61 73 20 61 20 73 63 61 6c 61  or or as a scala
5d60: 72 20 71 75 61 6e 74 69 74 79 2e 0a 49 6e 20 62  r quantity..In b
5d70: 6f 74 68 20 63 61 73 65 73 2c 20 74 68 65 20 53  oth cases, the S
5d80: 45 4c 45 43 54 20 73 68 6f 75 6c 64 20 68 61 76  ELECT should hav
5d90: 65 20 6f 6e 6c 79 20 61 20 73 69 6e 67 6c 65 20  e only a single 
5da0: 63 6f 6c 75 6d 6e 20 69 6e 20 69 74 73 0a 72 65  column in its.re
5db0: 73 75 6c 74 2e 20 20 43 6f 6d 70 6f 75 6e 64 20  sult.  Compound 
5dc0: 53 45 4c 45 43 54 73 20 28 63 6f 6e 6e 65 63 74  SELECTs (connect
5dd0: 65 64 20 77 69 74 68 20 6b 65 79 77 6f 72 64 73  ed with keywords
5de0: 20 6c 69 6b 65 20 55 4e 49 4f 4e 20 6f 72 0a 45   like UNION or.E
5df0: 58 43 45 50 54 29 20 61 72 65 20 61 6c 6c 6f 77  XCEPT) are allow
5e00: 65 64 2e 20 20 41 6e 79 20 4f 52 44 45 52 20 42  ed.  Any ORDER B
5e10: 59 20 63 6c 61 75 73 65 20 6f 6e 20 74 68 65 20  Y clause on the 
5e20: 73 65 6c 65 63 74 20 69 73 20 69 67 6e 6f 72 65  select is ignore
5e30: 64 2e 0a 41 20 53 45 4c 45 43 54 20 69 6e 20 61  d..A SELECT in a
5e40: 6e 20 65 78 70 72 65 73 73 69 6f 6e 20 69 73 20  n expression is 
5e50: 65 76 61 6c 75 61 74 65 64 20 6f 6e 63 65 20 62  evaluated once b
5e60: 65 66 6f 72 65 20 61 6e 79 20 6f 74 68 65 72 20  efore any other 
5e70: 70 72 6f 63 65 73 73 69 6e 67 0a 69 73 20 70 65  processing.is pe
5e80: 72 66 6f 72 6d 65 64 2c 20 73 6f 20 6e 6f 6e 65  rformed, so none
5e90: 20 6f 66 20 74 68 65 20 65 78 70 72 65 73 73 69   of the expressi
5ea0: 6f 6e 73 20 77 69 74 68 69 6e 20 74 68 65 20 73  ons within the s
5eb0: 65 6c 65 63 74 20 69 74 73 65 6c 66 20 63 61 6e  elect itself can
5ec0: 0a 72 65 66 65 72 20 74 6f 20 71 75 61 6e 74 69  .refer to quanti
5ed0: 74 69 65 73 20 69 6e 20 74 68 65 20 63 6f 6e 74  ties in the cont
5ee0: 61 69 6e 69 6e 67 20 65 78 70 72 65 73 73 69 6f  aining expressio
5ef0: 6e 2e 3c 2f 70 3e 0a 0a 3c 70 3e 57 68 65 6e 20  n.</p>..<p>When 
5f00: 61 20 53 45 4c 45 43 54 20 69 73 20 74 68 65 20  a SELECT is the 
5f10: 72 69 67 68 74 20 6f 70 65 72 61 6e 64 20 6f 66  right operand of
5f20: 20 74 68 65 20 49 4e 20 6f 70 65 72 61 74 6f 72   the IN operator
5f30: 2c 20 74 68 65 20 49 4e 0a 6f 70 65 72 61 74 6f  , the IN.operato
5f40: 72 20 72 65 74 75 72 6e 73 20 54 52 55 45 20 69  r returns TRUE i
5f50: 66 20 74 68 65 20 72 65 73 75 6c 74 20 6f 66 20  f the result of 
5f60: 74 68 65 20 6c 65 66 74 20 6f 70 65 72 61 6e 64  the left operand
5f70: 20 69 73 20 61 6e 79 20 6f 66 0a 74 68 65 20 76   is any of.the v
5f80: 61 6c 75 65 73 20 67 65 6e 65 72 61 74 65 64 20  alues generated 
5f90: 62 79 20 74 68 65 20 73 65 6c 65 63 74 2e 20 20  by the select.  
5fa0: 54 68 65 20 49 4e 20 6f 70 65 72 61 74 6f 72 20  The IN operator 
5fb0: 6d 61 79 20 62 65 20 70 72 65 63 65 64 65 64 0a  may be preceded.
5fc0: 62 79 20 74 68 65 20 4e 4f 54 20 6b 65 79 77 6f  by the NOT keywo
5fd0: 72 64 20 74 6f 20 69 6e 76 65 72 74 20 74 68 65  rd to invert the
5fe0: 20 73 65 6e 73 65 20 6f 66 20 74 68 65 20 74 65   sense of the te
5ff0: 73 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 57 68 65 6e  st.</p>..<p>When
6000: 20 61 20 53 45 4c 45 43 54 20 61 70 70 65 61 72   a SELECT appear
6010: 73 20 77 69 74 68 69 6e 20 61 6e 20 65 78 70 72  s within an expr
6020: 65 73 73 69 6f 6e 20 62 75 74 20 69 73 20 6e 6f  ession but is no
6030: 74 20 74 68 65 20 72 69 67 68 74 0a 6f 70 65 72  t the right.oper
6040: 61 6e 64 20 6f 66 20 61 6e 20 49 4e 20 6f 70 65  and of an IN ope
6050: 72 61 74 6f 72 2c 20 74 68 65 6e 20 74 68 65 20  rator, then the 
6060: 66 69 72 73 74 20 72 6f 77 20 6f 66 20 74 68 65  first row of the
6070: 20 72 65 73 75 6c 74 20 6f 66 20 74 68 65 0a 53   result of the.S
6080: 45 4c 45 43 54 20 62 65 63 6f 6d 65 73 20 74 68  ELECT becomes th
6090: 65 20 76 61 6c 75 65 20 75 73 65 64 20 69 6e 20  e value used in 
60a0: 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 2e 20  the expression. 
60b0: 20 49 66 20 74 68 65 20 53 45 4c 45 43 54 20 79   If the SELECT y
60c0: 69 65 6c 64 73 0a 6d 6f 72 65 20 74 68 61 6e 20  ields.more than 
60d0: 6f 6e 65 20 72 65 73 75 6c 74 20 72 6f 77 2c 20  one result row, 
60e0: 61 6c 6c 20 72 6f 77 73 20 61 66 74 65 72 20 74  all rows after t
60f0: 68 65 20 66 69 72 73 74 20 61 72 65 20 69 67 6e  he first are ign
6100: 6f 72 65 64 2e 20 20 49 66 0a 74 68 65 20 53 45  ored.  If.the SE
6110: 4c 45 43 54 20 79 65 69 6c 64 73 20 6e 6f 20 72  LECT yeilds no r
6120: 6f 77 73 2c 20 74 68 65 6e 20 74 68 65 20 76 61  ows, then the va
6130: 6c 75 65 20 6f 66 20 74 68 65 20 53 45 4c 45 43  lue of the SELEC
6140: 54 20 69 73 20 4e 55 4c 4c 2e 3c 2f 70 3e 0a 0a  T is NULL.</p>..
6150: 3c 70 3e 42 6f 74 68 20 73 69 6d 70 6c 65 20 61  <p>Both simple a
6160: 6e 64 20 61 67 67 72 65 67 61 74 65 20 66 75 6e  nd aggregate fun
6170: 63 74 69 6f 6e 73 20 61 72 65 20 73 75 70 70 6f  ctions are suppo
6180: 72 74 65 64 2e 20 20 41 20 73 69 6d 70 6c 65 0a  rted.  A simple.
6190: 66 75 6e 63 74 69 6f 6e 20 63 61 6e 20 62 65 20  function can be 
61a0: 75 73 65 64 20 69 6e 20 61 6e 79 20 65 78 70 72  used in any expr
61b0: 65 73 73 69 6f 6e 2e 20 20 53 69 6d 70 6c 65 20  ession.  Simple 
61c0: 66 75 6e 63 74 69 6f 6e 73 20 72 65 74 75 72 6e  functions return
61d0: 0a 61 20 72 65 73 75 6c 74 20 69 6d 6d 65 64 69  .a result immedi
61e0: 61 74 65 6c 79 20 62 61 73 65 64 20 6f 6e 20 74  ately based on t
61f0: 68 65 69 72 20 69 6e 70 75 74 73 2e 20 20 41 67  heir inputs.  Ag
6200: 67 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e  gregate function
6210: 73 0a 6d 61 79 20 6f 6e 6c 79 20 62 65 20 75 73  s.may only be us
6220: 65 64 20 69 6e 20 61 20 53 45 4c 45 43 54 20 73  ed in a SELECT s
6230: 74 61 74 65 6d 65 6e 74 2e 20 20 41 67 67 72 65  tatement.  Aggre
6240: 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 73 20 63  gate functions c
6250: 6f 6d 70 75 74 65 0a 74 68 65 69 72 20 72 65 73  ompute.their res
6260: 75 6c 74 20 61 63 72 6f 73 73 20 61 6c 6c 20 72  ult across all r
6270: 6f 77 73 20 6f 66 20 74 68 65 20 72 65 73 75 6c  ows of the resul
6280: 74 20 73 65 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54  t set.</p>..<p>T
6290: 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 73 69 6d  he following sim
62a0: 70 6c 65 20 66 75 6e 63 74 69 6f 6e 73 20 61 72  ple functions ar
62b0: 65 20 63 75 72 72 65 6e 74 6c 79 20 73 75 70 70  e currently supp
62c0: 6f 72 74 65 64 3a 3c 2f 70 3e 0a 0a 3c 74 61 62  orted:</p>..<tab
62d0: 6c 65 20 62 6f 72 64 65 72 3d 30 20 63 65 6c 6c  le border=0 cell
62e0: 70 61 64 64 69 6e 67 3d 31 30 3e 0a 3c 74 72 3e  padding=10>.<tr>
62f0: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
6300: 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 20  " align="right" 
6310: 77 69 64 74 68 3d 31 32 30 3e 61 62 73 28 3c 69  width=120>abs(<i
6320: 3e 58 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64  >X</i>)</td>.<td
6330: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65   valign="top">Re
6340: 74 75 72 6e 20 74 68 65 20 61 62 73 6f 6c 75 74  turn the absolut
6350: 65 20 76 61 6c 75 65 20 6f 66 20 61 72 67 75 6d  e value of argum
6360: 65 6e 74 20 3c 69 3e 58 3c 2f 69 3e 2e 3c 2f 74  ent <i>X</i>.</t
6370: 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c  d>.</tr>..<tr>.<
6380: 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20  td valign="top" 
6390: 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e 63 6f  align="right">co
63a0: 61 6c 65 73 63 65 28 3c 69 3e 58 3c 2f 69 3e 2c  alesce(<i>X</i>,
63b0: 3c 69 3e 59 3c 2f 69 3e 2c 2e 2e 2e 29 3c 2f 74  <i>Y</i>,...)</t
63c0: 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  d>.<td valign="t
63d0: 6f 70 22 3e 52 65 74 75 72 6e 20 61 20 63 6f 70  op">Return a cop
63e0: 79 20 6f 66 20 74 68 65 20 66 69 72 73 74 20 6e  y of the first n
63f0: 6f 6e 2d 4e 55 4c 4c 20 61 72 67 75 6d 65 6e 74  on-NULL argument
6400: 2e 20 20 49 66 0a 61 6c 6c 20 61 72 67 75 6d 65  .  If.all argume
6410: 6e 74 73 20 61 72 65 20 4e 55 4c 4c 20 74 68 65  nts are NULL the
6420: 6e 20 4e 55 4c 4c 20 69 73 20 72 65 74 75 72 6e  n NULL is return
6430: 65 64 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a  ed.</td>.</tr>..
6440: 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  <tr>.<td valign=
6450: 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67  "top" align="rig
6460: 68 74 22 3e 6c 61 73 74 5f 69 6e 73 65 72 74 5f  ht">last_insert_
6470: 72 6f 77 69 64 28 29 3c 2f 74 64 3e 0a 3c 74 64  rowid()</td>.<td
6480: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65   valign="top">Re
6490: 74 75 72 6e 20 74 68 65 20 52 4f 57 49 44 20 6f  turn the ROWID o
64a0: 66 20 74 68 65 20 6c 61 73 74 20 72 6f 77 20 69  f the last row i
64b0: 6e 73 65 72 74 20 66 72 6f 6d 20 74 68 69 73 0a  nsert from this.
64c0: 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 6f 20 74 68  connection to th
64d0: 65 20 64 61 74 61 62 61 73 65 2e 20 20 54 68 69  e database.  Thi
64e0: 73 20 69 73 20 74 68 65 20 73 61 6d 65 20 76 61  s is the same va
64f0: 6c 75 65 20 74 68 61 74 20 77 6f 75 6c 64 20 62  lue that would b
6500: 65 20 72 65 74 75 72 6e 65 64 0a 66 72 6f 6d 20  e returned.from 
6510: 74 68 65 20 3c 62 3e 73 71 6c 69 74 65 5f 6c 61  the <b>sqlite_la
6520: 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 28  st_insert_rowid(
6530: 29 3c 2f 62 3e 20 41 50 49 20 66 75 6e 63 74 69  )</b> API functi
6540: 6f 6e 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a  on.</td>.</tr>..
6550: 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  <tr>.<td valign=
6560: 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67  "top" align="rig
6570: 68 74 22 3e 6c 65 6e 67 74 68 28 3c 69 3e 58 3c  ht">length(<i>X<
6580: 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61  /i>)</td>.<td va
6590: 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72  lign="top">Retur
65a0: 6e 20 74 68 65 20 73 74 72 69 6e 67 20 6c 65 6e  n the string len
65b0: 67 74 68 20 6f 66 20 3c 69 3e 58 3c 2f 69 3e 20  gth of <i>X</i> 
65c0: 69 6e 20 63 68 61 72 61 63 74 65 72 73 2e 0a 49  in characters..I
65d0: 66 20 53 51 4c 69 74 65 20 69 73 20 63 6f 6e 66  f SQLite is conf
65e0: 69 67 75 72 65 64 20 74 6f 20 73 75 70 70 6f 72  igured to suppor
65f0: 74 20 55 54 46 2d 38 2c 20 74 68 65 6e 20 74 68  t UTF-8, then th
6600: 65 20 6e 75 6d 62 65 72 20 6f 66 20 55 54 46 2d  e number of UTF-
6610: 38 0a 63 68 61 72 61 63 74 65 72 73 20 69 73 20  8.characters is 
6620: 72 65 74 75 72 6e 65 64 2c 20 6e 6f 74 20 74 68  returned, not th
6630: 65 20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74 65  e number of byte
6640: 73 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c  s.</td>.</tr>..<
6650: 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22  tr>.<td valign="
6660: 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68  top" align="righ
6670: 74 22 3e 6c 6f 77 65 72 28 3c 69 3e 58 3c 2f 69  t">lower(<i>X</i
6680: 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69  >)</td>.<td vali
6690: 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72 6e 20  gn="top">Return 
66a0: 61 20 63 6f 70 79 20 6f 66 20 73 74 72 69 6e 67  a copy of string
66b0: 20 3c 69 3e 58 3c 2f 69 3e 20 77 69 6c 6c 20 61   <i>X</i> will a
66c0: 6c 6c 20 63 68 61 72 61 63 74 65 72 73 0a 63 6f  ll characters.co
66d0: 6e 76 65 72 74 65 64 20 74 6f 20 6c 6f 77 65 72  nverted to lower
66e0: 20 63 61 73 65 2e 20 20 54 68 65 20 43 20 6c 69   case.  The C li
66f0: 62 72 61 72 79 20 3c 62 3e 74 6f 6c 6f 77 65 72  brary <b>tolower
6700: 28 29 3c 2f 62 3e 20 72 6f 75 74 69 6e 65 20 69  ()</b> routine i
6710: 73 20 75 73 65 64 0a 66 6f 72 20 74 68 65 20 63  s used.for the c
6720: 6f 6e 76 65 72 73 69 6f 6e 2c 20 77 68 69 63 68  onversion, which
6730: 20 6d 65 61 6e 73 20 74 68 61 74 20 74 68 69 73   means that this
6740: 20 66 75 6e 63 74 69 6f 6e 20 6d 69 67 68 74 20   function might 
6750: 6e 6f 74 0a 77 6f 72 6b 20 63 6f 72 72 65 63 74  not.work correct
6760: 6c 79 20 6f 6e 20 55 54 46 2d 38 20 63 68 61 72  ly on UTF-8 char
6770: 61 63 74 65 72 73 2e 3c 2f 74 64 3e 0a 3c 2f 74  acters.</td>.</t
6780: 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c  r>..<tr>.<td val
6790: 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d  ign="top" align=
67a0: 22 72 69 67 68 74 22 3e 6d 61 78 28 3c 69 3e 58  "right">max(<i>X
67b0: 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 2c 2e 2e  </i>,<i>Y</i>,..
67c0: 2e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69  .)</td>.<td vali
67d0: 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72 6e 20  gn="top">Return 
67e0: 74 68 65 20 61 72 67 75 6d 65 6e 74 20 77 69 74  the argument wit
67f0: 68 20 74 68 65 20 6d 61 78 69 6d 75 6d 20 76 61  h the maximum va
6800: 6c 75 65 2e 20 20 41 72 67 75 6d 65 6e 74 73 0a  lue.  Arguments.
6810: 6d 61 79 20 62 65 20 73 74 72 69 6e 67 73 20 69  may be strings i
6820: 6e 20 61 64 64 69 74 69 6f 6e 20 74 6f 20 6e 75  n addition to nu
6830: 6d 62 65 72 73 2e 20 20 54 68 65 20 6d 61 78 69  mbers.  The maxi
6840: 6d 75 6d 20 76 61 6c 75 65 20 69 73 20 64 65 74  mum value is det
6850: 65 72 6d 69 6e 65 64 0a 62 79 20 74 68 65 20 75  ermined.by the u
6860: 73 75 61 6c 20 73 6f 72 74 20 6f 72 64 65 72 2e  sual sort order.
6870: 20 20 4e 6f 74 65 20 74 68 61 74 20 3c 62 3e 6d    Note that <b>m
6880: 61 78 28 29 3c 2f 62 3e 20 69 73 20 61 20 73 69  ax()</b> is a si
6890: 6d 70 6c 65 20 66 75 6e 63 74 69 6f 6e 20 77 68  mple function wh
68a0: 65 6e 0a 69 74 20 68 61 73 20 32 20 6f 72 20 6d  en.it has 2 or m
68b0: 6f 72 65 20 61 72 67 75 6d 65 6e 74 73 20 62 75  ore arguments bu
68c0: 74 20 63 6f 6e 76 65 72 74 73 20 74 6f 20 61 6e  t converts to an
68d0: 20 61 67 67 72 65 67 61 74 65 20 66 75 6e 63 74   aggregate funct
68e0: 69 6f 6e 20 69 66 20 67 69 76 65 6e 0a 6f 6e 6c  ion if given.onl
68f0: 79 20 61 20 73 69 6e 67 6c 65 20 61 72 67 75 6d  y a single argum
6900: 65 6e 74 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a  ent.</td>.</tr>.
6910: 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e  .<tr>.<td valign
6920: 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69  ="top" align="ri
6930: 67 68 74 22 3e 6d 69 6e 28 3c 69 3e 58 3c 2f 69  ght">min(<i>X</i
6940: 3e 2c 3c 69 3e 59 3c 2f 69 3e 2c 2e 2e 2e 29 3c  >,<i>Y</i>,...)<
6950: 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  /td>.<td valign=
6960: 22 74 6f 70 22 3e 52 65 74 75 72 6e 20 74 68 65  "top">Return the
6970: 20 61 72 67 75 6d 65 6e 74 20 77 69 74 68 20 74   argument with t
6980: 68 65 20 6d 69 6e 69 6d 75 6d 20 76 61 6c 75 65  he minimum value
6990: 2e 20 20 41 72 67 75 6d 65 6e 74 73 0a 6d 61 79  .  Arguments.may
69a0: 20 62 65 20 73 74 72 69 6e 67 73 20 69 6e 20 61   be strings in a
69b0: 64 64 69 74 69 6f 6e 20 74 6f 20 6e 75 6d 62 65  ddition to numbe
69c0: 72 73 2e 20 20 54 68 65 20 6d 6d 69 6e 69 6d 75  rs.  The mminimu
69d0: 6d 20 76 61 6c 75 65 20 69 73 20 64 65 74 65 72  m value is deter
69e0: 6d 69 6e 65 64 0a 62 79 20 74 68 65 20 75 73 75  mined.by the usu
69f0: 61 6c 20 73 6f 72 74 20 6f 72 64 65 72 2e 20 20  al sort order.  
6a00: 4e 6f 74 65 20 74 68 61 74 20 3c 62 3e 6d 69 6e  Note that <b>min
6a10: 28 29 3c 2f 62 3e 20 69 73 20 61 20 73 69 6d 70  ()</b> is a simp
6a20: 6c 65 20 66 75 6e 63 74 69 6f 6e 20 77 68 65 6e  le function when
6a30: 0a 69 74 20 68 61 73 20 32 20 6f 72 20 6d 6f 72  .it has 2 or mor
6a40: 65 20 61 72 67 75 6d 65 6e 74 73 20 62 75 74 20  e arguments but 
6a50: 63 6f 6e 76 65 72 74 73 20 74 6f 20 61 6e 20 61  converts to an a
6a60: 67 67 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f  ggregate functio
6a70: 6e 20 69 66 20 67 69 76 65 6e 0a 6f 6e 6c 79 20  n if given.only 
6a80: 61 20 73 69 6e 67 6c 65 20 61 72 67 75 6d 65 6e  a single argumen
6a90: 74 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c  t.</td>.</tr>..<
6aa0: 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22  tr>.<td valign="
6ab0: 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68  top" align="righ
6ac0: 74 22 3e 72 61 6e 64 6f 6d 28 2a 29 3c 2f 74 64  t">random(*)</td
6ad0: 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
6ae0: 70 22 3e 52 65 74 75 72 6e 20 61 20 72 61 6e 64  p">Return a rand
6af0: 6f 6d 20 69 6e 74 65 67 65 72 20 62 65 74 77 65  om integer betwe
6b00: 65 6e 20 2d 32 31 34 37 34 38 33 36 34 38 20 61  en -2147483648 a
6b10: 6e 64 0a 2b 32 31 34 37 34 38 33 36 34 37 2e 3c  nd.+2147483647.<
6b20: 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e  /td>.</tr>..<tr>
6b30: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
6b40: 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e  " align="right">
6b50: 72 6f 75 6e 64 28 3c 69 3e 58 3c 2f 69 3e 29 3c  round(<i>X</i>)<
6b60: 62 72 3e 72 6f 75 6e 64 28 3c 69 3e 58 3c 2f 69  br>round(<i>X</i
6b70: 3e 2c 3c 69 3e 59 3c 2f 69 3e 29 3c 2f 74 64 3e  >,<i>Y</i>)</td>
6b80: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
6b90: 22 3e 52 6f 75 6e 64 20 6f 66 66 20 74 68 65 20  ">Round off the 
6ba0: 6e 75 6d 62 65 72 20 3c 69 3e 58 3c 2f 69 3e 20  number <i>X</i> 
6bb0: 74 6f 20 3c 69 3e 59 3c 2f 69 3e 20 64 69 67 69  to <i>Y</i> digi
6bc0: 74 73 20 74 6f 20 74 68 65 0a 72 69 67 68 74 20  ts to the.right 
6bd0: 6f 66 20 74 68 65 20 64 65 63 69 6d 61 6c 20 70  of the decimal p
6be0: 6f 69 6e 74 2e 20 20 49 66 20 74 68 65 20 3c 69  oint.  If the <i
6bf0: 3e 59 3c 2f 69 3e 20 61 72 67 75 6d 65 6e 74 20  >Y</i> argument 
6c00: 69 73 20 6f 6d 69 74 74 65 64 2c 20 30 20 69 73  is omitted, 0 is
6c10: 20 0a 61 73 73 75 6d 65 64 2e 3c 2f 74 64 3e 0a   .assumed.</td>.
6c20: 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20  </tr>..<tr>.<td 
6c30: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69  valign="top" ali
6c40: 67 6e 3d 22 72 69 67 68 74 22 3e 73 75 62 73 74  gn="right">subst
6c50: 72 28 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c  r(<i>X</i>,<i>Y<
6c60: 2f 69 3e 2c 3c 69 3e 5a 3c 2f 69 3e 29 3c 2f 74  /i>,<i>Z</i>)</t
6c70: 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  d>.<td valign="t
6c80: 6f 70 22 3e 52 65 74 75 72 6e 20 61 20 73 75 62  op">Return a sub
6c90: 73 74 72 69 6e 67 20 6f 66 20 69 6e 70 75 74 20  string of input 
6ca0: 73 74 72 69 6e 67 20 3c 69 3e 58 3c 2f 69 3e 20  string <i>X</i> 
6cb0: 74 68 61 74 20 62 65 67 69 6e 73 0a 77 69 74 68  that begins.with
6cc0: 20 74 68 65 20 3c 69 3e 59 3c 2f 69 3e 2d 74 68   the <i>Y</i>-th
6cd0: 20 63 68 61 72 61 63 74 65 72 20 61 6e 64 20 77   character and w
6ce0: 68 69 63 68 20 69 73 20 3c 69 3e 5a 3c 2f 69 3e  hich is <i>Z</i>
6cf0: 20 63 68 61 72 61 63 74 65 72 73 20 6c 6f 6e 67   characters long
6d00: 2e 0a 54 68 65 20 6c 65 66 74 2d 6d 6f 73 74 20  ..The left-most 
6d10: 63 68 61 72 61 63 74 65 72 20 6f 66 20 3c 69 3e  character of <i>
6d20: 58 3c 2f 69 3e 20 69 73 20 6e 75 6d 62 65 72 20  X</i> is number 
6d30: 31 2e 20 20 49 66 20 3c 69 3e 59 3c 2f 69 3e 20  1.  If <i>Y</i> 
6d40: 69 73 20 6e 65 67 61 74 69 76 65 0a 74 68 65 20  is negative.the 
6d50: 74 68 65 20 66 69 72 73 74 20 63 68 61 72 61 63  the first charac
6d60: 74 65 72 20 6f 66 20 74 68 65 20 73 75 62 73 74  ter of the subst
6d70: 72 69 6e 67 20 69 73 20 66 6f 75 6e 64 20 62 79  ring is found by
6d80: 20 63 6f 75 6e 74 69 6e 67 20 66 72 6f 6d 20 74   counting from t
6d90: 68 65 0a 72 69 67 68 74 20 72 61 74 68 65 72 20  he.right rather 
6da0: 74 68 61 6e 20 74 68 65 20 6c 65 66 74 2e 20 20  than the left.  
6db0: 49 66 20 53 51 4c 69 74 65 20 69 73 20 63 6f 6e  If SQLite is con
6dc0: 66 69 67 75 72 65 64 20 74 6f 20 73 75 70 70 6f  figured to suppo
6dd0: 72 74 20 55 54 46 2d 38 2c 0a 74 68 65 6e 20 63  rt UTF-8,.then c
6de0: 68 61 72 61 63 74 65 72 73 20 69 6e 64 69 63 65  haracters indice
6df0: 73 20 72 65 66 65 72 20 74 6f 20 61 63 74 75 61  s refer to actua
6e00: 6c 20 55 54 46 2d 38 20 63 68 61 72 61 63 74 65  l UTF-8 characte
6e10: 72 73 2c 20 6e 6f 74 20 62 79 74 65 73 2e 3c 2f  rs, not bytes.</
6e20: 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a  td>.</tr>..<tr>.
6e30: 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  <td valign="top"
6e40: 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e 75   align="right">u
6e50: 70 70 65 72 28 3c 69 3e 58 3c 2f 69 3e 29 3c 2f  pper(<i>X</i>)</
6e60: 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22  td>.<td valign="
6e70: 74 6f 70 22 3e 52 65 74 75 72 6e 20 61 20 63 6f  top">Return a co
6e80: 70 79 20 6f 66 20 69 6e 70 75 74 20 73 74 72 69  py of input stri
6e90: 6e 67 20 3c 69 3e 58 3c 2f 69 3e 20 63 6f 6e 76  ng <i>X</i> conv
6ea0: 65 72 74 65 64 20 74 6f 20 61 6c 6c 0a 75 70 70  erted to all.upp
6eb0: 65 72 2d 63 61 73 65 20 6c 65 74 74 65 72 73 2e  er-case letters.
6ec0: 20 20 54 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61    The implementa
6ed0: 74 69 6f 6e 20 6f 66 20 74 68 69 73 20 66 75 6e  tion of this fun
6ee0: 63 74 69 6f 6e 20 75 73 65 73 20 74 68 65 20 43  ction uses the C
6ef0: 20 6c 69 62 72 61 72 79 0a 72 6f 75 74 69 6e 65   library.routine
6f00: 20 3c 62 3e 74 6f 75 70 70 65 72 28 29 3c 2f 62   <b>toupper()</b
6f10: 3e 20 77 68 69 63 68 20 6d 65 61 6e 73 20 69 74  > which means it
6f20: 20 6d 61 79 20 6e 6f 74 20 77 6f 72 6b 20 63 6f   may not work co
6f30: 72 72 65 63 74 6c 79 20 6f 6e 20 0a 55 54 46 2d  rrectly on .UTF-
6f40: 38 20 73 74 72 69 6e 67 73 2e 3c 2f 74 64 3e 0a  8 strings.</td>.
6f50: 3c 2f 74 72 3e 0a 3c 2f 74 61 62 6c 65 3e 0a 0a  </tr>.</table>..
6f60: 3c 70 3e 0a 54 68 65 20 66 6f 6c 6c 6f 77 69 6e  <p>.The followin
6f70: 67 20 61 67 67 72 65 67 61 74 65 20 66 75 6e 63  g aggregate func
6f80: 74 69 6f 6e 73 20 61 72 65 20 73 75 70 70 6f 72  tions are suppor
6f90: 74 65 64 3a 0a 3c 2f 70 3e 0a 0a 3c 74 61 62 6c  ted:.</p>..<tabl
6fa0: 65 20 62 6f 72 64 65 72 3d 30 20 63 65 6c 6c 70  e border=0 cellp
6fb0: 61 64 64 69 6e 67 3d 31 30 3e 0a 3c 74 72 3e 0a  adding=10>.<tr>.
6fc0: 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  <td valign="top"
6fd0: 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 20 77   align="right" w
6fe0: 69 64 74 68 3d 31 32 30 3e 61 76 67 28 3c 69 3e  idth=120>avg(<i>
6ff0: 58 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20  X</i>)</td>.<td 
7000: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74  valign="top">Ret
7010: 75 72 6e 20 74 68 65 20 61 76 65 72 61 67 65 20  urn the average 
7020: 76 61 6c 75 65 20 6f 66 20 61 6c 6c 20 3c 69 3e  value of all <i>
7030: 58 3c 2f 69 3e 20 77 69 74 68 69 6e 20 61 20 67  X</i> within a g
7040: 72 6f 75 70 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e  roup.</td>.</tr>
7050: 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67  ..<tr>.<td valig
7060: 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72  n="top" align="r
7070: 69 67 68 74 22 3e 63 6f 75 6e 74 28 3c 69 3e 58  ight">count(<i>X
7080: 3c 2f 69 3e 29 3c 62 72 3e 63 6f 75 6e 74 28 2a  </i>)<br>count(*
7090: 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67  )</td>.<td valig
70a0: 6e 3d 22 74 6f 70 22 3e 54 68 65 20 66 69 72 73  n="top">The firs
70b0: 74 20 66 6f 72 6d 20 72 65 74 75 72 6e 20 61 20  t form return a 
70c0: 63 6f 75 6e 74 20 6f 66 20 74 68 65 20 6e 75 6d  count of the num
70d0: 62 65 72 20 6f 66 20 74 69 6d 65 73 0a 74 68 61  ber of times.tha
70e0: 74 20 3c 69 3e 58 3c 2f 69 3e 20 69 73 20 6e 6f  t <i>X</i> is no
70f0: 74 20 4e 55 4c 4c 20 69 6e 20 61 20 67 72 6f 75  t NULL in a grou
7100: 70 2e 20 20 54 68 65 20 73 65 63 6f 6e 64 20 66  p.  The second f
7110: 6f 72 6d 20 28 77 69 74 68 20 6e 6f 20 61 72 67  orm (with no arg
7120: 75 6d 65 6e 74 29 0a 72 65 74 75 72 6e 73 20 74  ument).returns t
7130: 68 65 20 74 6f 74 61 6c 20 6e 75 6d 62 65 72 20  he total number 
7140: 6f 66 20 72 6f 77 73 20 69 6e 20 74 68 65 20 67  of rows in the g
7150: 72 6f 75 70 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e  roup.</td>.</tr>
7160: 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67  ..<tr>.<td valig
7170: 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72  n="top" align="r
7180: 69 67 68 74 22 3e 6d 61 78 28 3c 69 3e 58 3c 2f  ight">max(<i>X</
7190: 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c  i>)</td>.<td val
71a0: 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72 6e  ign="top">Return
71b0: 20 74 68 65 20 6d 61 78 69 6d 75 6d 20 76 61 6c   the maximum val
71c0: 75 65 20 6f 66 20 61 6c 6c 20 76 61 6c 75 65 73  ue of all values
71d0: 20 69 6e 20 74 68 65 20 67 72 6f 75 70 2e 0a 54   in the group..T
71e0: 68 65 20 75 73 75 61 6c 20 73 6f 72 74 20 6f 72  he usual sort or
71f0: 64 65 72 20 69 73 20 75 73 65 64 20 74 6f 20 64  der is used to d
7200: 65 74 65 72 6d 69 6e 65 20 74 68 65 20 6d 61 78  etermine the max
7210: 69 6d 75 6d 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e  imum.</td>.</tr>
7220: 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67  ..<tr>.<td valig
7230: 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72  n="top" align="r
7240: 69 67 68 74 22 3e 6d 69 6e 28 3c 69 3e 58 3c 2f  ight">min(<i>X</
7250: 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c  i>)</td>.<td val
7260: 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72 6e  ign="top">Return
7270: 20 74 68 65 20 6d 69 6e 69 6d 75 6d 20 76 61 6c   the minimum val
7280: 75 65 20 6f 66 20 61 6c 6c 20 76 61 6c 75 65 73  ue of all values
7290: 20 69 6e 20 74 68 65 20 67 72 6f 75 70 2e 0a 54   in the group..T
72a0: 68 65 20 75 73 75 61 6c 20 73 6f 72 74 20 6f 72  he usual sort or
72b0: 64 65 72 20 69 73 20 75 73 65 64 20 74 6f 20 64  der is used to d
72c0: 65 74 65 72 6d 69 6e 65 20 74 68 65 20 6d 69 6e  etermine the min
72d0: 69 6d 75 6d 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e  imum.</td>.</tr>
72e0: 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67  ..<tr>.<td valig
72f0: 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72  n="top" align="r
7300: 69 67 68 74 22 3e 73 75 6d 28 3c 69 3e 58 3c 2f  ight">sum(<i>X</
7310: 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c  i>)</td>.<td val
7320: 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72 6e  ign="top">Return
7330: 20 74 68 65 20 6e 75 6d 65 72 69 63 20 73 75 6d   the numeric sum
7340: 20 6f 66 20 61 6c 6c 20 76 61 6c 75 65 73 20 69   of all values i
7350: 6e 20 74 68 65 20 67 72 6f 75 70 2e 3c 2f 74 64  n the group.</td
7360: 3e 0a 3c 2f 74 72 3e 0a 3c 2f 74 61 62 6c 65 3e  >.</tr>.</table>
7370: 0a 7d 0a 0a 53 65 63 74 69 6f 6e 20 49 4e 53 45  .}..Section INSE
7380: 52 54 20 69 6e 73 65 72 74 0a 0a 53 79 6e 74 61  RT insert..Synta
7390: 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74  x {sql-statement
73a0: 7d 20 7b 0a 49 4e 53 45 52 54 20 5b 4f 52 20 3c  } {.INSERT [OR <
73b0: 63 6f 6e 66 6c 69 63 74 2d 61 6c 67 6f 72 69 74  conflict-algorit
73c0: 68 6d 3e 5d 20 49 4e 54 4f 20 3c 74 61 62 6c 65  hm>] INTO <table
73d0: 2d 6e 61 6d 65 3e 20 5b 28 3c 63 6f 6c 75 6d 6e  -name> [(<column
73e0: 2d 6c 69 73 74 3e 29 5d 20 56 41 4c 55 45 53 28  -list>)] VALUES(
73f0: 3c 76 61 6c 75 65 2d 6c 69 73 74 3e 29 20 7c 0a  <value-list>) |.
7400: 49 4e 53 45 52 54 20 5b 4f 52 20 3c 63 6f 6e 66  INSERT [OR <conf
7410: 6c 69 63 74 2d 61 6c 67 6f 72 69 74 68 6d 3e 5d  lict-algorithm>]
7420: 20 49 4e 54 4f 20 3c 74 61 62 6c 65 2d 6e 61 6d   INTO <table-nam
7430: 65 3e 20 5b 28 3c 63 6f 6c 75 6d 6e 2d 6c 69 73  e> [(<column-lis
7440: 74 3e 29 5d 20 3c 73 65 6c 65 63 74 2d 73 74 61  t>)] <select-sta
7450: 74 65 6d 65 6e 74 3e 0a 7d 0a 0a 70 75 74 73 20  tement>.}..puts 
7460: 7b 0a 3c 70 3e 54 68 65 20 49 4e 53 45 52 54 20  {.<p>The INSERT 
7470: 73 74 61 74 65 6d 65 6e 74 20 63 6f 6d 65 73 20  statement comes 
7480: 69 6e 20 74 77 6f 20 62 61 73 69 63 20 66 6f 72  in two basic for
7490: 6d 73 2e 20 20 54 68 65 20 66 69 72 73 74 20 66  ms.  The first f
74a0: 6f 72 6d 0a 28 77 69 74 68 20 74 68 65 20 22 56  orm.(with the "V
74b0: 41 4c 55 45 53 22 20 6b 65 79 77 6f 72 64 29 20  ALUES" keyword) 
74c0: 63 72 65 61 74 65 73 20 61 20 73 69 6e 67 6c 65  creates a single
74d0: 20 6e 65 77 20 72 6f 77 20 69 6e 20 61 6e 20 65   new row in an e
74e0: 78 69 73 74 69 6e 67 20 74 61 62 6c 65 2e 0a 49  xisting table..I
74f0: 66 20 6e 6f 20 63 6f 6c 75 6d 6e 2d 6c 69 73 74  f no column-list
7500: 20 69 73 20 73 70 65 63 69 66 69 65 64 20 74 68   is specified th
7510: 65 6e 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  en the number of
7520: 20 76 61 6c 75 65 73 20 6d 75 73 74 0a 62 65 20   values must.be 
7530: 74 68 65 20 73 61 6d 65 20 61 73 20 74 68 65 20  the same as the 
7540: 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e  number of column
7550: 73 20 69 6e 20 74 68 65 20 74 61 62 6c 65 2e 20  s in the table. 
7560: 20 49 66 20 61 20 63 6f 6c 75 6d 6e 2d 6c 69 73   If a column-lis
7570: 74 0a 69 73 20 73 70 65 63 69 66 69 65 64 2c 20  t.is specified, 
7580: 74 68 65 6e 20 74 68 65 20 6e 75 6d 62 65 72 20  then the number 
7590: 6f 66 20 76 61 6c 75 65 73 20 6d 75 73 74 20 6d  of values must m
75a0: 61 74 63 68 20 74 68 65 20 6e 75 6d 62 65 72 20  atch the number 
75b0: 6f 66 0a 73 70 65 63 69 66 69 65 64 20 63 6f 6c  of.specified col
75c0: 75 6d 6e 73 2e 20 20 43 6f 6c 75 6d 6e 73 20 6f  umns.  Columns o
75d0: 66 20 74 68 65 20 74 61 62 6c 65 20 74 68 61 74  f the table that
75e0: 20 64 6f 20 6e 6f 74 20 61 70 70 65 61 72 20 69   do not appear i
75f0: 6e 20 74 68 65 0a 63 6f 6c 75 6d 6e 20 6c 69 73  n the.column lis
7600: 74 20 61 72 65 20 66 69 6c 6c 20 77 69 74 68 20  t are fill with 
7610: 74 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75  the default valu
7620: 65 2c 20 6f 72 20 77 69 74 68 20 4e 55 4c 4c 20  e, or with NULL 
7630: 69 66 20 6e 6f 74 0a 64 65 66 61 75 6c 74 20 76  if not.default v
7640: 61 6c 75 65 20 69 73 20 73 70 65 63 69 66 69 65  alue is specifie
7650: 64 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20  d..</p>..<p>The 
7660: 73 65 63 6f 6e 64 20 66 6f 72 6d 20 6f 66 20 74  second form of t
7670: 68 65 20 49 4e 53 45 52 54 20 73 74 61 74 65 6d  he INSERT statem
7680: 65 6e 74 20 74 61 6b 65 73 20 69 74 20 64 61 74  ent takes it dat
7690: 61 20 66 72 6f 6d 20 61 0a 53 45 4c 45 43 54 20  a from a.SELECT 
76a0: 73 74 61 74 65 6d 65 6e 74 2e 20 20 54 68 65 20  statement.  The 
76b0: 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e  number of column
76c0: 73 20 69 6e 20 74 68 65 20 72 65 73 75 6c 74 20  s in the result 
76d0: 6f 66 20 74 68 65 0a 53 45 4c 45 43 54 20 6d 75  of the.SELECT mu
76e0: 73 74 20 65 78 61 63 74 6c 79 20 6d 61 74 63 68  st exactly match
76f0: 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 63   the number of c
7700: 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65 20 74 61  olumns in the ta
7710: 62 6c 65 20 69 66 0a 6e 6f 20 63 6f 6c 75 6d 6e  ble if.no column
7720: 20 6c 69 73 74 20 69 73 20 73 70 65 63 69 66 69   list is specifi
7730: 65 64 2c 20 6f 72 20 69 74 20 6d 75 73 74 20 6d  ed, or it must m
7740: 61 74 63 68 20 74 68 65 20 6e 75 6d 62 65 72 20  atch the number 
7750: 6f 66 20 63 6f 6c 75 6d 6e 73 0a 6e 61 6d 65 20  of columns.name 
7760: 69 6e 20 74 68 65 20 63 6f 6c 75 6d 6e 20 6c 69  in the column li
7770: 73 74 2e 20 20 41 20 6e 65 77 20 65 6e 74 72 79  st.  A new entry
7780: 20 69 73 20 6d 61 64 65 20 69 6e 20 74 68 65 20   is made in the 
7790: 74 61 62 6c 65 0a 66 6f 72 20 65 76 65 72 79 20  table.for every 
77a0: 72 6f 77 20 6f 66 20 74 68 65 20 53 45 4c 45 43  row of the SELEC
77b0: 54 20 72 65 73 75 6c 74 2e 20 20 54 68 65 20 53  T result.  The S
77c0: 45 4c 45 43 54 20 6d 61 79 20 62 65 20 73 69 6d  ELECT may be sim
77d0: 70 6c 65 0a 6f 72 20 63 6f 6d 70 6f 75 6e 64 2e  ple.or compound.
77e0: 20 20 49 66 20 74 68 65 20 53 45 4c 45 43 54 20    If the SELECT 
77f0: 73 74 61 74 65 6d 65 6e 74 20 68 61 73 20 61 6e  statement has an
7800: 20 4f 52 44 45 52 20 42 59 20 63 6c 61 75 73 65   ORDER BY clause
7810: 2c 0a 74 68 65 20 4f 52 44 45 52 20 42 59 20 69  ,.the ORDER BY i
7820: 73 20 69 67 6e 6f 72 65 64 2e 3c 2f 70 3e 0a 0a  s ignored.</p>..
7830: 3c 70 3e 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20  <p>The optional 
7840: 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65 20  conflict-clause 
7850: 61 6c 6c 6f 77 73 20 74 68 65 20 73 70 65 63 69  allows the speci
7860: 66 69 63 61 74 69 6f 6e 20 6f 66 20 61 6e 20 61  fication of an a
7870: 6c 74 65 72 6e 61 74 69 76 65 0a 63 6f 6e 73 74  lternative.const
7880: 72 61 69 6e 74 20 63 6f 6e 66 6c 69 63 74 20 72  raint conflict r
7890: 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69  esolution algori
78a0: 74 68 6d 20 74 6f 20 75 73 65 20 64 75 72 69 6e  thm to use durin
78b0: 67 20 74 68 69 73 20 6f 6e 65 20 63 6f 6d 6d 61  g this one comma
78c0: 6e 64 2e 0a 53 65 65 20 74 68 65 20 73 65 63 74  nd..See the sect
78d0: 69 6f 6e 20 74 69 74 6c 65 64 0a 3c 61 20 68 72  ion titled.<a hr
78e0: 65 66 3d 22 23 63 6f 6e 66 6c 69 63 74 22 3e 4f  ef="#conflict">O
78f0: 4e 20 43 4f 4e 46 4c 49 43 54 3c 2f 61 3e 20 66  N CONFLICT</a> f
7900: 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e  or additional in
7910: 66 6f 72 6d 61 74 69 6f 6e 2e 0a 46 6f 72 20 63  formation..For c
7920: 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 77 69 74  ompatibility wit
7930: 68 20 4d 79 53 51 4c 2c 20 74 68 65 20 70 61 72  h MySQL, the par
7940: 73 65 72 20 61 6c 6c 6f 77 73 20 74 68 65 20 75  ser allows the u
7950: 73 65 20 6f 66 20 74 68 65 0a 73 69 6e 67 6c 65  se of the.single
7960: 20 6b 65 79 77 6f 72 64 20 22 52 45 50 4c 41 43   keyword "REPLAC
7970: 45 22 20 61 73 20 61 6e 20 61 6c 69 61 73 20 66  E" as an alias f
7980: 6f 72 20 22 49 4e 53 45 52 54 20 4f 52 20 52 45  or "INSERT OR RE
7990: 50 4c 41 43 45 22 2e 0a 3c 2f 70 3e 0a 7d 0a 0a  PLACE"..</p>.}..
79a0: 53 65 63 74 69 6f 6e 20 7b 4f 4e 20 43 4f 4e 46  Section {ON CONF
79b0: 4c 49 43 54 20 63 6c 61 75 73 65 7d 20 63 6f 6e  LICT clause} con
79c0: 66 6c 69 63 74 0a 0a 53 79 6e 74 61 78 20 7b 63  flict..Syntax {c
79d0: 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65 7d 20  onflict-clause} 
79e0: 7b 0a 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 3c 63  {.ON CONFLICT <c
79f0: 6f 6e 66 6c 69 63 74 2d 61 6c 67 6f 72 69 74 68  onflict-algorith
7a00: 6d 3e 0a 7d 20 7b 63 6f 6e 66 6c 69 63 74 2d 61  m>.} {conflict-a
7a10: 6c 67 6f 72 69 74 68 6d 7d 20 7b 0a 52 4f 4c 4c  lgorithm} {.ROLL
7a20: 42 41 43 4b 20 7c 20 41 42 4f 52 54 20 7c 20 46  BACK | ABORT | F
7a30: 41 49 4c 20 7c 20 49 47 4e 4f 52 45 20 7c 20 52  AIL | IGNORE | R
7a40: 45 50 4c 41 43 45 0a 7d 0a 0a 70 75 74 73 20 7b  EPLACE.}..puts {
7a50: 0a 3c 70 3e 54 68 65 20 4f 4e 20 43 4f 4e 46 4c  .<p>The ON CONFL
7a60: 49 43 54 20 63 6c 61 75 73 65 20 69 73 20 6e 6f  ICT clause is no
7a70: 74 20 61 20 73 65 70 61 72 61 74 65 20 53 51 4c  t a separate SQL
7a80: 20 63 6f 6d 6d 61 6e 64 2e 20 20 49 74 20 69 73   command.  It is
7a90: 20 61 0a 6e 6f 6e 2d 73 74 61 6e 64 61 72 64 20   a.non-standard 
7aa0: 63 6c 61 75 73 65 20 74 68 61 74 20 63 61 6e 20  clause that can 
7ab0: 61 70 70 65 61 72 20 69 6e 20 6d 61 6e 79 20 6f  appear in many o
7ac0: 74 68 65 72 20 53 51 4c 20 63 6f 6d 6d 61 6e 64  ther SQL command
7ad0: 73 2e 0a 49 74 20 69 73 20 67 69 76 65 6e 20 69  s..It is given i
7ae0: 74 73 20 6f 77 6e 20 73 65 63 74 69 6f 6e 20 69  ts own section i
7af0: 6e 20 74 68 69 73 20 64 6f 63 75 6d 65 6e 74 20  n this document 
7b00: 62 65 63 61 75 73 65 20 69 74 20 69 73 20 6e 6f  because it is no
7b10: 74 0a 70 61 72 74 20 6f 66 20 73 74 61 6e 64 61  t.part of standa
7b20: 72 64 20 53 51 4c 20 61 6e 64 20 74 68 65 72 65  rd SQL and there
7b30: 66 6f 72 65 20 6d 69 67 68 74 20 6e 6f 74 20 62  fore might not b
7b40: 65 20 66 61 6d 69 6c 69 61 72 2e 3c 2f 70 3e 0a  e familiar.</p>.
7b50: 0a 3c 70 3e 54 68 65 20 73 79 6e 74 61 78 20 66  .<p>The syntax f
7b60: 6f 72 20 74 68 65 20 4f 4e 20 43 4f 4e 46 4c 49  or the ON CONFLI
7b70: 43 54 20 63 6c 61 75 73 65 20 69 73 20 61 73 20  CT clause is as 
7b80: 73 68 6f 77 6e 20 61 62 6f 76 65 20 66 6f 72 0a  shown above for.
7b90: 74 68 65 20 43 52 45 41 54 45 20 54 41 42 4c 45  the CREATE TABLE
7ba0: 2c 20 43 52 45 41 54 45 20 49 4e 44 45 58 2c 20  , CREATE INDEX, 
7bb0: 61 6e 64 20 42 45 47 49 4e 20 54 52 41 4e 53 41  and BEGIN TRANSA
7bc0: 43 54 49 4f 4e 20 63 6f 6d 6d 61 6e 64 73 2e 0a  CTION commands..
7bd0: 46 6f 72 20 74 68 65 20 43 4f 50 59 2c 20 49 4e  For the COPY, IN
7be0: 53 45 52 54 2c 20 61 6e 64 20 55 50 44 41 54 45  SERT, and UPDATE
7bf0: 20 63 6f 6d 6d 61 6e 64 73 2c 20 74 68 65 20 6b   commands, the k
7c00: 65 79 77 6f 72 64 73 0a 22 4f 4e 20 43 4f 4e 46  eywords."ON CONF
7c10: 4c 49 43 54 22 20 61 72 65 20 72 65 70 6c 61 63  LICT" are replac
7c20: 65 64 20 62 79 20 22 4f 52 22 2c 20 74 6f 20 6d  ed by "OR", to m
7c30: 61 6b 65 20 74 68 65 20 73 79 6e 74 61 78 20 73  ake the syntax s
7c40: 65 65 6d 20 6d 6f 72 65 0a 6e 61 74 75 72 61 6c  eem more.natural
7c50: 2e 20 20 42 75 74 20 74 68 65 20 6d 65 61 6e 69  .  But the meani
7c60: 6e 67 20 6f 66 20 74 68 65 20 63 6c 61 75 73 65  ng of the clause
7c70: 20 69 73 20 74 68 65 20 73 61 6d 65 20 65 69 74   is the same eit
7c80: 68 65 72 20 77 61 79 2e 3c 2f 70 3e 0a 0a 3c 70  her way.</p>..<p
7c90: 3e 54 68 65 20 4f 4e 20 43 4f 4e 46 4c 49 43 54  >The ON CONFLICT
7ca0: 20 63 6c 61 75 73 65 20 73 70 65 63 69 66 69 65   clause specifie
7cb0: 73 20 61 6e 20 61 6c 67 6f 72 69 74 68 6d 20 75  s an algorithm u
7cc0: 73 65 64 20 74 6f 20 72 65 73 6f 6c 76 65 0a 63  sed to resolve.c
7cd0: 6f 6e 73 74 72 61 69 6e 74 20 63 6f 6e 66 6c 69  onstraint confli
7ce0: 63 74 73 2e 20 20 54 68 65 72 65 20 61 72 65 20  cts.  There are 
7cf0: 66 69 76 65 20 63 68 6f 69 63 65 73 3a 20 52 4f  five choices: RO
7d00: 4c 4c 42 41 43 4b 2c 20 41 42 4f 52 54 2c 0a 46  LLBACK, ABORT,.F
7d10: 41 49 4c 2c 20 49 47 4e 4f 52 45 2c 20 61 6e 64  AIL, IGNORE, and
7d20: 20 52 45 50 4c 41 43 45 2e 20 54 68 65 20 64 65   REPLACE. The de
7d30: 66 61 75 6c 74 20 61 6c 67 6f 72 69 74 68 6d 20  fault algorithm 
7d40: 69 73 20 41 42 4f 52 54 2e 20 20 54 68 69 73 0a  is ABORT.  This.
7d50: 69 73 20 77 68 61 74 20 74 68 65 79 20 6d 65 61  is what they mea
7d60: 6e 3a 3c 2f 70 3e 0a 0a 3c 64 6c 3e 0a 3c 64 74  n:</p>..<dl>.<dt
7d70: 3e 3c 62 3e 52 4f 4c 4c 42 41 43 4b 3c 2f 62 3e  ><b>ROLLBACK</b>
7d80: 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 57 68 65  </dt>.<dd><p>Whe
7d90: 6e 20 61 20 63 6f 6e 73 74 72 61 69 6e 74 20 76  n a constraint v
7da0: 69 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72 73 2c  iolation occurs,
7db0: 20 61 6e 20 69 6d 6d 65 64 69 61 74 65 20 52 4f   an immediate RO
7dc0: 4c 4c 42 41 43 4b 0a 6f 63 63 75 72 73 2c 20 74  LLBACK.occurs, t
7dd0: 68 75 73 20 65 6e 64 69 6e 67 20 74 68 65 20 63  hus ending the c
7de0: 75 72 72 65 6e 74 20 74 72 61 6e 73 61 63 74 69  urrent transacti
7df0: 6f 6e 2c 20 61 6e 64 20 74 68 65 20 63 6f 6d 6d  on, and the comm
7e00: 61 6e 64 20 61 62 6f 72 74 73 0a 77 69 74 68 20  and aborts.with 
7e10: 61 20 72 65 74 75 72 6e 20 63 6f 64 65 20 6f 66  a return code of
7e20: 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49   SQLITE_CONSTRAI
7e30: 4e 54 2e 20 20 49 66 20 6e 6f 20 74 72 61 6e 73  NT.  If no trans
7e40: 61 63 74 69 6f 6e 20 69 73 0a 61 63 74 69 76 65  action is.active
7e50: 20 28 6f 74 68 65 72 20 74 68 61 6e 20 74 68 65   (other than the
7e60: 20 69 6d 70 6c 69 65 64 20 74 72 61 6e 73 61 63   implied transac
7e70: 74 69 6f 6e 20 74 68 61 74 20 69 73 20 63 72 65  tion that is cre
7e80: 61 74 65 64 20 6f 6e 20 65 76 65 72 79 0a 63 6f  ated on every.co
7e90: 6d 6d 61 6e 64 29 20 74 68 65 6e 20 74 68 69 73  mmand) then this
7ea0: 20 61 6c 67 6f 72 69 74 68 6d 20 77 6f 72 6b 73   algorithm works
7eb0: 20 74 68 65 20 73 61 6d 65 20 61 73 20 41 42 4f   the same as ABO
7ec0: 52 54 2e 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a 3c 64  RT.</p></dd>..<d
7ed0: 74 3e 3c 62 3e 41 42 4f 52 54 3c 2f 62 3e 3c 2f  t><b>ABORT</b></
7ee0: 64 74 3e 0a 3c 64 64 3e 3c 70 3e 57 68 65 6e 20  dt>.<dd><p>When 
7ef0: 61 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f  a constraint vio
7f00: 6c 61 74 69 6f 6e 20 6f 63 63 75 72 73 2c 20 74  lation occurs, t
7f10: 68 65 20 63 6f 6d 6d 61 6e 64 20 62 61 63 6b 73  he command backs
7f20: 20 6f 75 74 0a 61 6e 79 20 70 72 69 6f 72 20 63   out.any prior c
7f30: 68 61 6e 67 65 73 20 69 74 20 6d 69 67 68 74 20  hanges it might 
7f40: 68 61 76 65 20 6d 61 64 65 20 61 6e 64 20 61 62  have made and ab
7f50: 6f 72 74 73 20 77 69 74 68 20 61 20 72 65 74 75  orts with a retu
7f60: 72 6e 20 63 6f 64 65 0a 6f 66 20 53 51 4c 49 54  rn code.of SQLIT
7f70: 45 5f 43 4f 4e 53 54 52 41 49 4e 54 2e 20 20 42  E_CONSTRAINT.  B
7f80: 75 74 20 6e 6f 20 52 4f 4c 4c 42 41 43 4b 20 69  ut no ROLLBACK i
7f90: 73 20 65 78 65 63 75 74 65 64 20 73 6f 20 63 68  s executed so ch
7fa0: 61 6e 67 65 73 0a 66 72 6f 6d 20 70 72 69 6f 72  anges.from prior
7fb0: 20 63 6f 6d 6d 61 6e 64 73 20 77 69 74 68 69 6e   commands within
7fc0: 20 74 68 65 20 73 61 6d 65 20 74 72 61 6e 73 61   the same transa
7fd0: 63 74 69 6f 6e 0a 61 72 65 20 70 72 65 73 65 72  ction.are preser
7fe0: 76 65 64 2e 20 20 54 68 69 73 20 69 73 20 74 68  ved.  This is th
7ff0: 65 20 64 65 66 61 75 6c 74 20 62 65 68 61 76 69  e default behavi
8000: 6f 72 2e 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a 3c 64  or.</p></dd>..<d
8010: 74 3e 3c 62 3e 46 41 49 4c 3c 2f 62 3e 3c 2f 64  t><b>FAIL</b></d
8020: 74 3e 0a 3c 64 64 3e 3c 70 3e 57 68 65 6e 20 61  t>.<dd><p>When a
8030: 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c   constraint viol
8040: 61 74 69 6f 6e 20 6f 63 63 75 72 73 2c 20 74 68  ation occurs, th
8050: 65 20 63 6f 6d 6d 61 6e 64 20 61 62 6f 72 74 73  e command aborts
8060: 20 77 69 74 68 20 61 0a 72 65 74 75 72 6e 20 63   with a.return c
8070: 6f 64 65 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54  ode SQLITE_CONST
8080: 52 41 49 4e 54 2e 20 20 42 75 74 20 61 6e 79 20  RAINT.  But any 
8090: 63 68 61 6e 67 65 73 20 74 6f 20 74 68 65 20 64  changes to the d
80a0: 61 74 61 62 61 73 65 20 74 68 61 74 0a 74 68 65  atabase that.the
80b0: 20 63 6f 6d 6d 61 6e 64 20 6d 61 64 65 20 70 72   command made pr
80c0: 69 6f 72 20 74 6f 20 65 6e 63 6f 75 6e 74 65 72  ior to encounter
80d0: 69 6e 67 20 74 68 65 20 63 6f 6e 73 74 72 61 69  ing the constrai
80e0: 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 0a 61 72 65  nt violation.are
80f0: 20 70 72 65 73 65 72 76 65 64 20 61 6e 64 20 61   preserved and a
8100: 72 65 20 6e 6f 74 20 62 61 63 6b 65 64 20 6f 75  re not backed ou
8110: 74 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c  t.  For example,
8120: 20 69 66 20 61 6e 20 55 50 44 41 54 45 0a 73 74   if an UPDATE.st
8130: 61 74 65 6d 65 6e 74 20 65 6e 63 6f 75 6e 74 65  atement encounte
8140: 72 65 64 20 61 20 63 6f 6e 73 74 72 61 69 6e 74  red a constraint
8150: 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 6e 20 74 68   violation on th
8160: 65 20 31 30 30 74 68 20 72 6f 77 20 74 68 61 74  e 100th row that
8170: 0a 69 74 20 61 74 74 65 6d 70 74 73 20 74 6f 20  .it attempts to 
8180: 75 70 64 61 74 65 2c 20 74 68 65 6e 20 74 68 65  update, then the
8190: 20 66 69 72 73 74 20 39 39 20 72 6f 77 20 63 68   first 99 row ch
81a0: 61 6e 67 65 73 20 61 72 65 20 70 72 65 73 65 72  anges are preser
81b0: 76 65 64 0a 62 75 74 20 63 68 61 6e 67 65 73 20  ved.but changes 
81c0: 74 6f 20 72 6f 77 73 20 31 30 30 20 61 6e 64 20  to rows 100 and 
81d0: 62 65 79 6f 6e 64 20 6e 65 76 65 72 20 6f 63 63  beyond never occ
81e0: 75 72 2e 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a 3c 64  ur.</p></dd>..<d
81f0: 74 3e 3c 62 3e 49 47 4e 4f 52 45 3c 2f 62 3e 3c  t><b>IGNORE</b><
8200: 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 57 68 65 6e  /dt>.<dd><p>When
8210: 20 61 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69   a constraint vi
8220: 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72 73 2c 20  olation occurs, 
8230: 74 68 65 20 6f 6e 65 20 72 6f 77 20 74 68 61 74  the one row that
8240: 20 63 6f 6e 74 61 69 6e 73 0a 74 68 65 20 63 6f   contains.the co
8250: 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69  nstraint violati
8260: 6f 6e 20 69 73 20 6e 6f 74 20 69 6e 73 65 72 74  on is not insert
8270: 65 64 20 6f 72 20 63 68 61 6e 67 65 64 2e 20 20  ed or changed.  
8280: 42 75 74 20 74 68 65 20 63 6f 6d 6d 61 6e 64 0a  But the command.
8290: 63 6f 6e 74 69 6e 75 65 73 20 65 78 65 63 75 74  continues execut
82a0: 69 6e 67 20 6e 6f 72 6d 61 6c 6c 79 2e 20 20 4f  ing normally.  O
82b0: 74 68 65 72 20 72 6f 77 73 20 62 65 66 6f 72 65  ther rows before
82c0: 20 61 6e 64 20 61 66 74 65 72 20 74 68 65 20 72   and after the r
82d0: 6f 77 20 74 68 61 74 0a 63 6f 6e 74 61 69 6e 65  ow that.containe
82e0: 64 20 74 68 65 20 63 6f 6e 73 74 72 61 69 6e 74  d the constraint
82f0: 20 76 69 6f 6c 61 74 69 6f 6e 20 63 6f 6e 74 69   violation conti
8300: 6e 75 65 20 74 6f 20 62 65 20 69 6e 73 65 72 74  nue to be insert
8310: 65 64 20 6f 72 20 75 70 64 61 74 65 64 0a 6e 6f  ed or updated.no
8320: 72 6d 61 6c 6c 79 2e 20 20 4e 6f 20 65 72 72 6f  rmally.  No erro
8330: 72 20 69 73 20 72 65 74 75 72 6e 65 64 2e 3c 2f  r is returned.</
8340: 70 3e 3c 2f 64 64 3e 0a 0a 3c 64 74 3e 3c 62 3e  p></dd>..<dt><b>
8350: 52 45 50 4c 41 43 45 3c 2f 62 3e 3c 2f 64 74 3e  REPLACE</b></dt>
8360: 0a 3c 64 64 3e 3c 70 3e 57 68 65 6e 20 61 20 55  .<dd><p>When a U
8370: 4e 49 51 55 45 20 63 6f 6e 73 74 72 61 69 6e 74  NIQUE constraint
8380: 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72   violation occur
8390: 73 2c 20 74 68 65 20 70 72 65 2d 65 78 69 73 74  s, the pre-exist
83a0: 69 6e 67 20 72 6f 77 0a 74 68 61 74 20 69 73 20  ing row.that is 
83b0: 63 61 75 73 69 6e 67 20 74 68 65 20 63 6f 6e 73  causing the cons
83c0: 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e  traint violation
83d0: 20 69 73 20 72 65 6d 6f 76 65 64 20 70 72 69 6f   is removed prio
83e0: 72 20 74 6f 20 69 6e 73 65 72 74 69 6e 67 0a 6f  r to inserting.o
83f0: 72 20 75 70 64 61 74 69 6e 67 20 74 68 65 20 63  r updating the c
8400: 75 72 72 65 6e 74 20 72 6f 77 2e 20 20 54 68 75  urrent row.  Thu
8410: 73 20 74 68 65 20 69 6e 73 65 72 74 20 6f 72 20  s the insert or 
8420: 75 70 64 61 74 65 20 61 6c 77 61 79 73 20 6f 63  update always oc
8430: 63 75 72 73 2e 0a 54 68 65 20 63 6f 6d 6d 61 6e  curs..The comman
8440: 64 20 63 6f 6e 74 69 6e 75 65 73 20 65 78 65 63  d continues exec
8450: 75 74 69 6e 67 20 6e 6f 72 6d 61 6c 6c 79 2e 20  uting normally. 
8460: 20 4e 6f 20 65 72 72 6f 72 20 69 73 20 72 65 74   No error is ret
8470: 75 72 6e 65 64 2e 3c 2f 70 3e 0a 3c 70 3e 49 66  urned.</p>.<p>If
8480: 20 61 20 4e 4f 54 20 4e 55 4c 4c 20 63 6f 6e 73   a NOT NULL cons
8490: 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e  traint violation
84a0: 20 6f 63 63 75 72 73 2c 20 74 68 65 20 4e 55 4c   occurs, the NUL
84b0: 4c 20 76 61 6c 75 65 20 69 73 20 72 65 70 6c 61  L value is repla
84c0: 63 65 64 0a 62 79 20 74 68 65 20 64 65 66 61 75  ced.by the defau
84d0: 6c 74 20 76 61 6c 75 65 20 66 6f 72 20 74 68 61  lt value for tha
84e0: 74 20 63 6f 6c 75 6d 6e 2e 20 20 49 66 20 74 68  t column.  If th
84f0: 65 20 63 6f 6c 75 6d 6e 20 68 61 73 20 6e 6f 20  e column has no 
8500: 64 65 66 61 75 6c 74 0a 76 61 6c 75 65 2c 20 74  default.value, t
8510: 68 65 6e 20 74 68 65 20 41 42 4f 52 54 20 61 6c  hen the ABORT al
8520: 67 6f 72 69 74 68 6d 20 69 73 20 75 73 65 64 2e  gorithm is used.
8530: 3c 2f 70 3e 0a 3c 2f 64 64 3e 0a 3c 2f 64 6c 3e  </p>.</dd>.</dl>
8540: 0a 0a 3c 70 3e 0a 54 68 65 20 63 6f 6e 66 6c 69  ..<p>.The confli
8550: 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c  ct resolution al
8560: 67 6f 72 69 74 68 6d 20 63 61 6e 20 62 65 20 73  gorithm can be s
8570: 70 65 63 69 66 69 65 64 20 69 6e 20 74 68 72 65  pecified in thre
8580: 65 20 70 6c 61 63 65 73 2c 0a 69 6e 20 6f 72 64  e places,.in ord
8590: 65 72 20 66 72 6f 6d 20 6c 6f 77 65 73 74 20 74  er from lowest t
85a0: 6f 20 68 69 67 68 65 73 74 20 70 72 65 63 65 64  o highest preced
85b0: 65 6e 63 65 3a 0a 3c 2f 70 3e 0a 0a 3c 6f 6c 3e  ence:.</p>..<ol>
85c0: 0a 3c 6c 69 3e 3c 70 3e 0a 4f 6e 20 61 20 42 45  .<li><p>.On a BE
85d0: 47 49 4e 20 54 52 41 4e 53 41 43 54 49 4f 4e 20  GIN TRANSACTION 
85e0: 63 6f 6d 6d 61 6e 64 2e 0a 3c 2f 70 3e 3c 2f 6c  command..</p></l
85f0: 69 3e 0a 0a 3c 6c 69 3e 3c 70 3e 0a 4f 6e 20 69  i>..<li><p>.On i
8600: 6e 64 69 76 69 64 75 61 6c 20 63 6f 6e 73 74 72  ndividual constr
8610: 61 69 6e 74 73 20 77 69 74 68 69 6e 20 61 20 43  aints within a C
8620: 52 45 41 54 45 20 54 41 42 4c 45 20 6f 72 20 43  REATE TABLE or C
8630: 52 45 41 54 45 20 49 4e 44 45 58 0a 73 74 61 74  REATE INDEX.stat
8640: 65 6d 65 6e 74 2e 0a 3c 2f 70 3e 3c 2f 6c 69 3e  ement..</p></li>
8650: 0a 0a 3c 6c 69 3e 3c 70 3e 0a 49 6e 20 74 68 65  ..<li><p>.In the
8660: 20 4f 52 20 63 6c 61 75 73 65 20 6f 66 20 61 20   OR clause of a 
8670: 43 4f 50 59 2c 20 49 4e 53 45 52 54 2c 20 6f 72  COPY, INSERT, or
8680: 20 55 50 44 41 54 45 20 63 6f 6d 6d 61 6e 64 2e   UPDATE command.
8690: 0a 3c 2f 70 3e 3c 2f 6c 69 3e 0a 3c 2f 6f 6c 3e  .</p></li>.</ol>
86a0: 0a 0a 3c 70 3e 54 68 65 20 61 6c 67 6f 72 69 74  ..<p>The algorit
86b0: 68 6d 20 73 70 65 63 69 66 69 65 64 20 69 6e 20  hm specified in 
86c0: 74 68 65 20 4f 52 20 63 6c 61 75 73 65 20 6f 66  the OR clause of
86d0: 20 61 20 43 4f 50 59 2c 20 49 4e 53 45 52 54 2c   a COPY, INSERT,
86e0: 20 6f 72 20 55 50 44 41 54 45 0a 6f 76 65 72 72   or UPDATE.overr
86f0: 69 64 65 73 20 61 6e 79 20 61 6c 67 6f 72 69 74  ides any algorit
8700: 68 6d 20 73 70 65 63 69 66 69 65 64 20 62 79 20  hm specified by 
8710: 61 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 6f  a CREATE TABLE o
8720: 72 20 43 52 45 41 54 45 20 49 4e 44 45 58 2e 0a  r CREATE INDEX..
8730: 54 68 65 20 61 6c 67 6f 72 69 74 68 6d 20 73 70  The algorithm sp
8740: 65 63 69 66 69 65 64 20 77 69 74 68 69 6e 20 61  ecified within a
8750: 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 6f 72   CREATE TABLE or
8760: 20 43 52 45 41 54 45 20 49 4e 44 45 58 20 77 69   CREATE INDEX wi
8770: 6c 6c 2c 20 69 6e 20 74 75 72 6e 2c 0a 6f 76 65  ll, in turn,.ove
8780: 72 72 69 64 65 20 74 68 65 20 61 6c 67 6f 72 69  rride the algori
8790: 74 68 6d 20 73 70 65 63 69 66 69 65 64 20 62 79  thm specified by
87a0: 20 61 20 42 45 47 49 4e 20 54 52 41 4e 53 41 43   a BEGIN TRANSAC
87b0: 54 49 4f 4e 20 63 6f 6d 6d 61 6e 64 2e 0a 49 66  TION command..If
87c0: 20 6e 6f 20 61 6c 67 6f 72 69 74 68 6d 20 69 73   no algorithm is
87d0: 20 73 70 65 63 69 66 69 65 64 20 61 6e 79 77 68   specified anywh
87e0: 65 72 65 2c 20 74 68 65 20 41 42 4f 52 54 20 61  ere, the ABORT a
87f0: 6c 67 6f 72 69 74 68 6d 20 69 73 20 75 73 65 64  lgorithm is used
8800: 2e 3c 2f 70 3e 0a 0a 7d 0a 23 20 3c 70 3e 46 6f  .</p>..}.# <p>Fo
8810: 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66  r additional inf
8820: 6f 72 6d 61 74 69 6f 6e 2c 20 73 65 65 20 0a 23  ormation, see .#
8830: 20 3c 61 20 68 72 65 66 3d 22 63 6f 6e 66 6c 69   <a href="confli
8840: 63 74 2e 68 74 6d 6c 22 3e 63 6f 6e 66 6c 69 63  ct.html">conflic
8850: 74 2e 68 74 6d 6c 3c 2f 61 3e 2e 3c 2f 70 3e 0a  t.html</a>.</p>.
8860: 0a 0a 53 65 63 74 69 6f 6e 20 50 52 41 47 4d 41  ..Section PRAGMA
8870: 20 70 72 61 67 6d 61 0a 0a 53 79 6e 74 61 78 20   pragma..Syntax 
8880: 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20  {sql-statement} 
8890: 7b 0a 50 52 41 47 4d 41 20 3c 6e 61 6d 65 3e 20  {.PRAGMA <name> 
88a0: 3d 20 3c 76 61 6c 75 65 3e 20 7c 0a 50 52 41 47  = <value> |.PRAG
88b0: 4d 41 20 3c 66 75 6e 63 74 69 6f 6e 3e 28 3c 61  MA <function>(<a
88c0: 72 67 3e 29 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c  rg>).}..puts {.<
88d0: 70 3e 54 68 65 20 50 52 41 47 4d 41 20 63 6f 6d  p>The PRAGMA com
88e0: 6d 61 6e 64 20 69 73 20 75 73 65 64 20 74 6f 20  mand is used to 
88f0: 6d 6f 64 69 66 79 20 74 68 65 20 6f 70 65 72 61  modify the opera
8900: 74 69 6f 6e 20 6f 66 20 74 68 65 20 53 51 4c 69  tion of the SQLi
8910: 74 65 20 6c 69 62 72 61 72 79 2e 0a 54 68 65 20  te library..The 
8920: 70 72 61 67 6d 61 20 63 6f 6d 6d 61 6e 64 20 69  pragma command i
8930: 73 20 65 78 70 65 72 69 6d 65 6e 74 61 6c 20 61  s experimental a
8940: 6e 64 20 73 70 65 63 69 66 69 63 20 70 72 61 67  nd specific prag
8950: 6d 61 20 73 74 61 74 65 6d 65 6e 74 73 20 6d 61  ma statements ma
8960: 79 0a 72 65 6d 6f 76 65 64 20 6f 72 20 61 64 64  y.removed or add
8970: 65 64 20 69 6e 20 66 75 74 75 72 65 20 72 65 6c  ed in future rel
8980: 65 61 73 65 73 20 6f 66 20 53 51 4c 69 74 65 2e  eases of SQLite.
8990: 20 20 55 73 65 20 74 68 69 73 20 63 6f 6d 6d 61    Use this comma
89a0: 6e 64 0a 77 69 74 68 20 63 61 75 74 69 6f 6e 2e  nd.with caution.
89b0: 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 63 75 72  </p>..<p>The cur
89c0: 72 65 6e 74 20 69 6d 70 6c 65 6d 65 6e 74 61 74  rent implementat
89d0: 69 6f 6e 20 73 75 70 70 6f 72 74 73 20 74 68 65  ion supports the
89e0: 20 66 6f 6c 6c 6f 77 69 6e 67 20 70 72 61 67 6d   following pragm
89f0: 61 73 3a 3c 2f 70 3e 0a 0a 3c 75 6c 3e 0a 3c 6c  as:</p>..<ul>.<l
8a00: 69 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d 41 20 63  i><p><b>PRAGMA c
8a10: 61 63 68 65 5f 73 69 7a 65 3b 0a 20 20 20 20 20  ache_size;.     
8a20: 20 20 3c 62 72 3e 50 52 41 47 4d 41 20 63 61 63    <br>PRAGMA cac
8a30: 68 65 5f 73 69 7a 65 20 3d 20 3c 2f 62 3e 3c 69  he_size = </b><i
8a40: 3e 4e 75 6d 62 65 72 2d 6f 66 2d 70 61 67 65 73  >Number-of-pages
8a50: 3c 2f 69 3e 3c 62 3e 3b 3c 2f 62 3e 3c 2f 70 3e  </i><b>;</b></p>
8a60: 0a 20 20 20 20 3c 70 3e 51 75 65 72 79 20 6f 72  .    <p>Query or
8a70: 20 63 68 61 6e 67 65 20 74 68 65 20 6d 61 78 69   change the maxi
8a80: 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66 20 64 61  mum number of da
8a90: 74 61 62 61 73 65 20 64 69 73 6b 20 70 61 67 65  tabase disk page
8aa0: 73 20 74 68 61 74 20 53 51 4c 69 74 65 0a 20 20  s that SQLite.  
8ab0: 20 20 77 69 6c 6c 20 68 6f 6c 64 20 69 6e 20 6d    will hold in m
8ac0: 65 6d 6f 72 79 20 61 74 20 6f 6e 63 65 2e 20 20  emory at once.  
8ad0: 45 61 63 68 20 70 61 67 65 20 75 73 65 73 20 61  Each page uses a
8ae0: 62 6f 75 74 20 31 2e 35 4b 20 6f 66 20 6d 65 6d  bout 1.5K of mem
8af0: 6f 72 79 2e 0a 20 20 20 20 54 68 65 20 64 65 66  ory..    The def
8b00: 61 75 6c 74 20 63 61 63 68 65 20 73 69 7a 65 20  ault cache size 
8b10: 69 73 20 32 30 30 30 2e 20 20 49 66 20 79 6f 75  is 2000.  If you
8b20: 20 61 72 65 20 64 6f 69 6e 67 20 55 50 44 41 54   are doing UPDAT
8b30: 45 73 20 6f 72 20 44 45 4c 45 54 45 73 0a 20 20  Es or DELETEs.  
8b40: 20 20 74 68 61 74 20 63 68 61 6e 67 65 20 6d 61    that change ma
8b50: 6e 79 20 72 6f 77 73 20 6f 66 20 61 20 64 61 74  ny rows of a dat
8b60: 61 62 61 73 65 20 61 6e 64 20 79 6f 75 20 64 6f  abase and you do
8b70: 20 6e 6f 74 20 6d 69 6e 64 20 69 66 20 53 51 4c   not mind if SQL
8b80: 69 74 65 0a 20 20 20 20 75 73 65 73 20 6d 6f 72  ite.    uses mor
8b90: 65 20 6d 65 6d 6f 72 79 2c 20 79 6f 75 20 63 61  e memory, you ca
8ba0: 6e 20 69 6e 63 72 65 61 73 65 20 74 68 65 20 63  n increase the c
8bb0: 61 63 68 65 20 73 69 7a 65 20 66 6f 72 20 61 20  ache size for a 
8bc0: 70 6f 73 73 69 62 6c 65 20 73 70 65 65 64 0a 20  possible speed. 
8bd0: 20 20 20 69 6d 70 72 6f 76 65 6d 65 6e 74 2e 3c     improvement.<
8be0: 2f 70 3e 0a 20 20 20 20 3c 70 3e 57 68 65 6e 20  /p>.    <p>When 
8bf0: 79 6f 75 20 63 68 61 6e 67 65 20 74 68 65 20 63  you change the c
8c00: 61 63 68 65 20 73 69 7a 65 20 75 73 69 6e 67 20  ache size using 
8c10: 74 68 65 20 63 61 63 68 65 5f 73 69 7a 65 20 70  the cache_size p
8c20: 72 61 67 6d 61 2c 20 74 68 65 0a 20 20 20 20 63  ragma, the.    c
8c30: 68 61 6e 67 65 20 6f 6e 6c 79 20 65 6e 64 75 72  hange only endur
8c40: 65 73 20 66 6f 72 20 74 68 65 20 63 75 72 72 65  es for the curre
8c50: 6e 74 20 73 65 73 73 69 6f 6e 2e 20 20 54 68 65  nt session.  The
8c60: 20 63 61 63 68 65 20 73 69 7a 65 20 72 65 76 65   cache size reve
8c70: 72 74 73 0a 20 20 20 20 74 6f 20 74 68 65 20 64  rts.    to the d
8c80: 65 66 61 75 6c 74 20 76 61 6c 75 65 20 77 68 65  efault value whe
8c90: 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20 69  n the database i
8ca0: 73 20 63 6c 6f 73 65 64 20 61 6e 64 20 72 65 6f  s closed and reo
8cb0: 70 65 6e 65 64 2e 20 20 55 73 65 0a 20 20 20 20  pened.  Use.    
8cc0: 74 68 65 20 3c 62 3e 64 65 66 61 75 6c 74 5f 63  the <b>default_c
8cd0: 61 63 68 65 5f 73 69 7a 65 3c 2f 62 3e 20 70 72  ache_size</b> pr
8ce0: 61 67 6d 61 20 74 6f 20 63 68 65 63 6b 20 74 68  agma to check th
8cf0: 65 20 63 61 63 68 65 20 73 69 7a 65 20 70 65 72  e cache size per
8d00: 6d 61 6e 65 6e 74 6c 79 0a 20 20 20 20 3c 2f 70  manently.    </p
8d10: 3e 3c 2f 6c 69 3e 0a 0a 3c 6c 69 3e 3c 70 3e 3c  ></li>..<li><p><
8d20: 62 3e 50 52 41 47 4d 41 20 63 6f 75 6e 74 5f 63  b>PRAGMA count_c
8d30: 68 61 6e 67 65 73 20 3d 20 4f 4e 3b 0a 20 20 20  hanges = ON;.   
8d40: 20 20 20 20 3c 62 72 3e 50 52 41 47 4d 41 20 63      <br>PRAGMA c
8d50: 6f 75 6e 74 5f 63 68 61 6e 67 65 73 20 3d 20 4f  ount_changes = O
8d60: 46 46 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20 20 20 20  FF;</b></p>.    
8d70: 3c 70 3e 57 68 65 6e 20 6f 6e 2c 20 74 68 65 20  <p>When on, the 
8d80: 43 4f 55 4e 54 5f 43 48 41 4e 47 45 53 20 70 72  COUNT_CHANGES pr
8d90: 61 67 6d 61 20 63 61 75 73 65 73 20 74 68 65 20  agma causes the 
8da0: 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f  callback functio
8db0: 6e 20 74 6f 0a 20 20 20 20 62 65 20 69 6e 76 6f  n to.    be invo
8dc0: 6b 65 64 20 6f 6e 63 65 20 66 6f 72 20 65 61 63  ked once for eac
8dd0: 68 20 44 45 4c 45 54 45 2c 20 49 4e 53 45 52 54  h DELETE, INSERT
8de0: 2c 20 6f 72 20 55 50 44 41 54 45 20 6f 70 65 72  , or UPDATE oper
8df0: 61 74 69 6f 6e 2e 20 20 54 68 65 0a 20 20 20 20  ation.  The.    
8e00: 61 72 67 75 6d 65 6e 74 20 69 73 20 74 68 65 20  argument is the 
8e10: 6e 75 6d 62 65 72 20 6f 66 20 72 6f 77 73 20 74  number of rows t
8e20: 68 61 74 20 77 65 72 65 20 63 68 61 6e 67 65 64  hat were changed
8e30: 2e 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e 54 68 69  .</p>.    <p>Thi
8e40: 73 20 70 72 61 67 6d 61 20 6d 61 79 20 62 65 20  s pragma may be 
8e50: 72 65 6d 6f 76 65 64 20 66 72 6f 6d 20 66 75 74  removed from fut
8e60: 75 72 65 20 76 65 72 73 69 6f 6e 73 20 6f 66 20  ure versions of 
8e70: 53 51 4c 69 74 65 2e 0a 20 20 20 20 43 6f 6e 73  SQLite..    Cons
8e80: 69 64 65 72 20 75 73 69 6e 67 20 74 68 65 20 3c  ider using the <
8e90: 62 3e 73 71 6c 69 74 65 5f 63 68 61 6e 67 65 73  b>sqlite_changes
8ea0: 28 29 3c 2f 62 3e 20 41 50 49 20 66 75 6e 63 74  ()</b> API funct
8eb0: 69 6f 6e 20 69 6e 73 74 65 61 64 2e 3c 2f 70 3e  ion instead.</p>
8ec0: 3c 2f 6c 69 3e 0a 0a 3c 6c 69 3e 3c 70 3e 3c 62  </li>..<li><p><b
8ed0: 3e 50 52 41 47 4d 41 20 64 65 66 61 75 6c 74 5f  >PRAGMA default_
8ee0: 63 61 63 68 65 5f 73 69 7a 65 3b 0a 20 20 20 20  cache_size;.    
8ef0: 20 20 20 3c 62 72 3e 50 52 41 47 4d 41 20 64 65     <br>PRAGMA de
8f00: 66 61 75 6c 74 5f 63 61 63 68 65 5f 73 69 7a 65  fault_cache_size
8f10: 20 3d 20 3c 2f 62 3e 3c 69 3e 4e 75 6d 62 65 72   = </b><i>Number
8f20: 2d 6f 66 2d 70 61 67 65 73 3c 2f 69 3e 3c 62 3e  -of-pages</i><b>
8f30: 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20 20 20 20 3c 70  ;</b></p>.    <p
8f40: 3e 51 75 65 72 79 20 6f 72 20 63 68 61 6e 67 65  >Query or change
8f50: 20 74 68 65 20 6d 61 78 69 6d 75 6d 20 6e 75 6d   the maximum num
8f60: 62 65 72 20 6f 66 20 64 61 74 61 62 61 73 65 20  ber of database 
8f70: 64 69 73 6b 20 70 61 67 65 73 20 74 68 61 74 20  disk pages that 
8f80: 53 51 4c 69 74 65 0a 20 20 20 20 77 69 6c 6c 20  SQLite.    will 
8f90: 68 6f 6c 64 20 69 6e 20 6d 65 6d 6f 72 79 20 61  hold in memory a
8fa0: 74 20 6f 6e 63 65 2e 20 20 45 61 63 68 20 70 61  t once.  Each pa
8fb0: 67 65 20 75 73 65 73 20 61 62 6f 75 74 20 31 2e  ge uses about 1.
8fc0: 35 4b 20 6f 66 20 6d 65 6d 6f 72 79 2e 0a 20 20  5K of memory..  
8fd0: 20 20 54 68 69 73 20 70 72 61 67 6d 61 20 77 6f    This pragma wo
8fe0: 72 6b 73 20 6c 69 6b 65 20 74 68 65 20 3c 62 3e  rks like the <b>
8ff0: 63 61 63 68 65 5f 73 69 7a 65 3c 2f 62 3e 20 70  cache_size</b> p
9000: 72 61 67 6d 61 20 77 69 74 68 20 74 68 65 20 61  ragma with the a
9010: 64 64 69 74 69 6f 6e 0a 20 20 20 20 66 65 61 74  ddition.    feat
9020: 75 72 65 20 74 68 61 74 20 69 74 20 63 68 61 6e  ure that it chan
9030: 67 65 73 20 74 68 65 20 63 61 63 68 65 20 73 69  ges the cache si
9040: 7a 65 20 70 65 72 73 69 73 74 65 6e 74 6c 79 2e  ze persistently.
9050: 20 20 57 69 74 68 20 74 68 69 73 20 70 72 61 67    With this prag
9060: 6d 61 2c 0a 20 20 20 20 79 6f 75 20 63 61 6e 20  ma,.    you can 
9070: 73 65 74 20 74 68 65 20 63 61 63 68 65 20 73 69  set the cache si
9080: 7a 65 20 6f 6e 63 65 20 61 6e 64 20 74 68 61 74  ze once and that
9090: 20 73 65 74 74 69 6e 67 20 69 73 20 72 65 74 61   setting is reta
90a0: 69 6e 65 64 20 61 6e 64 20 72 65 75 73 65 64 0a  ined and reused.
90b0: 20 20 20 20 65 76 65 72 79 74 69 6d 65 20 79 6f      everytime yo
90c0: 75 20 72 65 6f 70 65 6e 20 74 68 65 20 64 61 74  u reopen the dat
90d0: 61 62 61 73 65 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a  abase.</p></li>.
90e0: 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d  .<li><p><b>PRAGM
90f0: 41 20 64 65 66 61 75 6c 74 5f 73 79 6e 63 68 72  A default_synchr
9100: 6f 6e 6f 75 73 3b 0a 20 20 20 20 20 20 20 3c 62  onous;.       <b
9110: 72 3e 50 52 41 47 4d 41 20 64 65 66 61 75 6c 74  r>PRAGMA default
9120: 5f 73 79 6e 63 68 72 6f 6e 6f 75 73 20 3d 20 4f  _synchronous = O
9130: 4e 3b 0a 20 20 20 20 20 20 20 3c 62 72 3e 50 52  N;.       <br>PR
9140: 41 47 4d 41 20 64 65 66 61 75 6c 74 5f 73 79 6e  AGMA default_syn
9150: 63 68 72 6f 6e 6f 75 73 20 3d 20 4f 46 46 3b 3c  chronous = OFF;<
9160: 2f 62 3e 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e 51  /b></p>.    <p>Q
9170: 75 65 72 79 20 6f 72 20 63 68 61 6e 67 65 20 74  uery or change t
9180: 68 65 20 73 65 74 74 69 6e 67 20 6f 66 20 74 68  he setting of th
9190: 65 20 22 73 79 6e 63 68 72 6f 6e 6f 75 73 22 20  e "synchronous" 
91a0: 66 6c 61 67 20 69 6e 0a 20 20 20 20 74 68 65 20  flag in.    the 
91b0: 64 61 74 61 62 61 73 65 2e 20 20 57 68 65 6e 20  database.  When 
91c0: 73 79 6e 63 68 72 6f 6e 6f 75 73 20 69 73 20 6f  synchronous is o
91d0: 6e 20 28 74 68 65 20 64 65 66 61 75 6c 74 29 2c  n (the default),
91e0: 20 74 68 65 20 53 51 4c 69 74 65 20 64 61 74 61   the SQLite data
91f0: 62 61 73 65 0a 20 20 20 20 65 6e 67 69 6e 65 20  base.    engine 
9200: 77 69 6c 6c 20 70 61 75 73 65 20 61 74 20 63 72  will pause at cr
9210: 69 74 69 63 61 6c 20 6d 6f 6d 65 6e 74 73 20 74  itical moments t
9220: 6f 20 6d 61 6b 65 20 73 75 72 65 20 74 68 61 74  o make sure that
9230: 20 64 61 74 61 20 68 61 73 20 61 63 74 75 61 6c   data has actual
9240: 6c 79 0a 20 20 20 20 62 65 20 77 72 69 74 74 65  ly.    be writte
9250: 6e 20 74 6f 20 74 68 65 20 64 69 73 6b 20 73 75  n to the disk su
9260: 72 66 61 63 65 2e 20 20 28 49 6e 20 6f 74 68 65  rface.  (In othe
9270: 72 20 77 6f 72 64 73 2c 20 69 74 20 69 6e 76 6f  r words, it invo
9280: 6b 65 73 20 74 68 65 0a 20 20 20 20 65 71 75 69  kes the.    equi
9290: 76 61 6c 65 6e 74 20 6f 66 20 74 68 65 20 3c 62  valent of the <b
92a0: 3e 66 73 79 6e 63 28 29 3c 2f 62 3e 20 73 79 73  >fsync()</b> sys
92b0: 74 65 6d 20 63 61 6c 6c 2e 29 20 20 49 6e 20 73  tem call.)  In s
92c0: 79 6e 63 68 72 6f 6e 6f 75 73 20 6d 6f 64 65 2c  ynchronous mode,
92d0: 0a 20 20 20 20 61 6e 20 53 51 4c 69 74 65 20 64  .    an SQLite d
92e0: 61 74 61 62 61 73 65 20 73 68 6f 75 6c 64 20 62  atabase should b
92f0: 65 20 66 75 6c 6c 79 20 72 65 63 6f 76 65 72 61  e fully recovera
9300: 62 6c 65 20 65 76 65 6e 20 69 66 20 74 68 65 20  ble even if the 
9310: 6f 70 65 72 61 74 69 6e 67 0a 20 20 20 20 73 79  operating.    sy
9320: 73 74 65 6d 20 63 72 61 73 68 65 73 20 6f 72 20  stem crashes or 
9330: 70 6f 77 65 72 20 69 73 20 69 6e 74 65 72 72 75  power is interru
9340: 70 74 65 64 20 75 6e 65 78 70 65 63 74 65 64 6c  pted unexpectedl
9350: 79 2e 20 20 54 68 65 20 70 65 6e 61 6c 74 79 20  y.  The penalty 
9360: 66 6f 72 0a 20 20 20 20 74 68 69 73 20 61 73 73  for.    this ass
9370: 75 72 61 6e 63 65 20 69 73 20 74 68 61 74 20 73  urance is that s
9380: 6f 6d 65 20 64 61 74 61 62 61 73 65 20 6f 70 65  ome database ope
9390: 72 61 74 69 6f 6e 73 20 74 61 6b 65 20 6c 6f 6e  rations take lon
93a0: 67 65 72 20 62 65 63 61 75 73 65 20 74 68 65 0a  ger because the.
93b0: 20 20 20 20 65 6e 67 69 6e 65 20 68 61 73 20 74      engine has t
93c0: 6f 20 77 61 69 74 20 6f 6e 20 74 68 65 20 28 72  o wait on the (r
93d0: 65 6c 61 74 69 76 65 6c 79 20 73 6c 6f 77 29 20  elatively slow) 
93e0: 64 69 73 6b 20 64 72 69 76 65 2e 20 20 54 68 65  disk drive.  The
93f0: 20 61 6c 74 65 72 6e 61 74 69 76 65 0a 20 20 20   alternative.   
9400: 20 69 73 20 74 6f 20 74 75 72 6e 20 73 79 6e 63   is to turn sync
9410: 68 72 6f 6e 6f 75 73 20 6f 66 66 2e 20 20 57 69  hronous off.  Wi
9420: 74 68 20 73 79 6e 63 68 72 6f 6e 6f 75 73 20 6f  th synchronous o
9430: 66 66 2c 20 53 51 4c 69 74 65 20 63 6f 6e 74 69  ff, SQLite conti
9440: 6e 75 65 73 0a 20 20 20 20 70 72 6f 63 65 73 73  nues.    process
9450: 69 6e 67 20 61 73 20 73 6f 6f 6e 20 61 73 20 69  ing as soon as i
9460: 74 20 68 61 73 20 68 61 6e 64 65 64 20 64 61 74  t has handed dat
9470: 61 20 6f 66 66 20 74 6f 20 74 68 65 20 6f 70 65  a off to the ope
9480: 72 61 74 69 6e 67 20 73 79 73 74 65 6d 2e 0a 20  rating system.. 
9490: 20 20 20 49 66 20 74 68 65 20 61 70 70 6c 69 63     If the applic
94a0: 61 74 69 6f 6e 20 72 75 6e 6e 69 6e 67 20 53 51  ation running SQ
94b0: 4c 69 74 65 20 63 72 61 73 68 65 73 2c 20 74 68  Lite crashes, th
94c0: 65 20 64 61 74 61 20 77 69 6c 6c 20 62 65 20 73  e data will be s
94d0: 61 66 65 2c 20 62 75 74 0a 20 20 20 20 74 68 65  afe, but.    the
94e0: 20 64 61 74 61 62 61 73 65 20 63 6f 75 6c 64 20   database could 
94f0: 28 69 6e 20 74 68 65 6f 72 79 29 20 62 65 63 6f  (in theory) beco
9500: 6d 65 20 63 6f 72 72 75 70 74 65 64 20 69 66 20  me corrupted if 
9510: 74 68 65 20 6f 70 65 72 61 74 69 6e 67 20 73 79  the operating sy
9520: 73 74 65 6d 0a 20 20 20 20 63 72 61 73 68 65 73  stem.    crashes
9530: 20 6f 72 20 74 68 65 20 63 6f 6d 70 75 74 65 72   or the computer
9540: 20 73 75 64 64 65 6e 6c 79 20 6c 6f 73 65 73 20   suddenly loses 
9550: 70 6f 77 65 72 2e 20 20 4f 6e 20 74 68 65 20 6f  power.  On the o
9560: 74 68 65 72 20 68 61 6e 64 2c 20 73 6f 6d 65 0a  ther hand, some.
9570: 20 20 20 20 6f 70 65 72 61 74 69 6f 6e 73 20 61      operations a
9580: 72 65 20 61 73 20 6d 75 63 68 20 61 73 20 35 30  re as much as 50
9590: 20 6f 72 20 6d 6f 72 65 20 74 69 6d 65 73 20 66   or more times f
95a0: 61 73 74 65 72 20 77 69 74 68 20 73 79 6e 63 68  aster with synch
95b0: 72 6f 6e 6f 75 73 20 6f 66 66 2e 0a 20 20 20 20  ronous off..    
95c0: 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e 54 68 69 73  </p>.    <p>This
95d0: 20 70 72 61 67 6d 61 20 63 68 61 6e 67 65 73 20   pragma changes 
95e0: 74 68 65 20 73 79 6e 63 68 72 6f 6e 6f 75 73 20  the synchronous 
95f0: 6d 6f 64 65 20 70 65 72 73 69 73 74 65 6e 74 6c  mode persistentl
9600: 79 2e 20 20 4f 6e 63 65 20 63 68 61 6e 67 65 64  y.  Once changed
9610: 2c 0a 20 20 20 20 74 68 65 20 6d 6f 64 65 20 73  ,.    the mode s
9620: 74 61 79 73 20 61 73 20 73 65 74 20 65 76 65 6e  tays as set even
9630: 20 69 66 20 74 68 65 20 64 61 74 61 62 61 73 65   if the database
9640: 20 69 73 20 63 6c 6f 73 65 64 20 61 6e 64 20 72   is closed and r
9650: 65 6f 70 65 6e 65 64 2e 20 20 54 68 65 0a 20 20  eopened.  The.  
9660: 20 20 3c 62 3e 73 79 6e 63 68 72 6f 6e 6f 75 73    <b>synchronous
9670: 3c 2f 62 3e 20 70 72 61 67 6d 61 20 64 6f 65 73  </b> pragma does
9680: 20 74 68 65 20 73 61 6d 65 20 74 68 69 6e 67 20   the same thing 
9690: 62 75 74 20 6f 6e 6c 79 20 61 70 70 6c 69 65 73  but only applies
96a0: 20 74 68 65 20 73 65 74 74 69 6e 67 0a 20 20 20   the setting.   
96b0: 20 74 6f 20 74 68 65 20 63 75 72 72 65 6e 74 20   to the current 
96c0: 73 65 73 73 69 6f 6e 2e 3c 2f 70 3e 0a 0a 3c 6c  session.</p>..<l
96d0: 69 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d 41 20 65  i><p><b>PRAGMA e
96e0: 6d 70 74 79 5f 72 65 73 75 6c 74 5f 63 61 6c 6c  mpty_result_call
96f0: 62 61 63 6b 73 20 3d 20 4f 4e 3b 0a 20 20 20 20  backs = ON;.    
9700: 20 20 20 3c 62 72 3e 50 52 41 47 4d 41 20 65 6d     <br>PRAGMA em
9710: 70 74 79 5f 72 65 73 75 6c 74 5f 63 61 6c 6c 62  pty_result_callb
9720: 61 63 6b 73 20 3d 20 4f 46 46 3b 3c 2f 62 3e 3c  acks = OFF;</b><
9730: 2f 70 3e 0a 20 20 20 20 3c 70 3e 57 68 65 6e 20  /p>.    <p>When 
9740: 6f 6e 2c 20 74 68 65 20 45 4d 50 54 59 5f 52 45  on, the EMPTY_RE
9750: 53 55 4c 54 5f 43 41 4c 4c 42 41 43 4b 53 20 70  SULT_CALLBACKS p
9760: 72 61 67 6d 61 20 63 61 75 73 65 73 20 74 68 65  ragma causes the
9770: 20 63 61 6c 6c 62 61 63 6b 0a 20 20 20 20 66 75   callback.    fu
9780: 6e 63 74 69 6f 6e 20 74 6f 20 62 65 20 69 6e 76  nction to be inv
9790: 6f 6b 65 64 20 6f 6e 63 65 20 66 6f 72 20 65 61  oked once for ea
97a0: 63 68 20 71 75 65 72 79 20 74 68 61 74 20 68 61  ch query that ha
97b0: 73 20 61 6e 20 65 6d 70 74 79 20 72 65 73 75 6c  s an empty resul
97c0: 74 0a 20 20 20 20 73 65 74 2e 20 20 54 68 65 20  t.    set.  The 
97d0: 74 68 69 72 64 20 22 3c 62 3e 61 72 67 76 3c 2f  third "<b>argv</
97e0: 62 3e 22 20 70 61 72 61 6d 65 74 65 72 20 74 6f  b>" parameter to
97f0: 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 69 73   the callback is
9800: 20 73 65 74 20 74 6f 20 4e 55 4c 4c 0a 20 20 20   set to NULL.   
9810: 20 62 65 63 61 75 73 65 20 74 68 65 72 65 20 69   because there i
9820: 73 20 6e 6f 20 64 61 74 61 20 74 6f 20 72 65 70  s no data to rep
9830: 6f 72 74 2e 20 20 42 75 74 20 74 68 65 20 73 65  ort.  But the se
9840: 63 6f 6e 64 20 22 3c 62 3e 61 72 67 63 3c 2f 62  cond "<b>argc</b
9850: 3e 22 20 61 6e 64 0a 20 20 20 20 66 6f 75 72 74  >" and.    fourt
9860: 68 20 22 3c 62 3e 63 6f 6c 75 6d 6e 4e 61 6d 65  h "<b>columnName
9870: 73 3c 2f 62 3e 22 20 70 61 72 61 6d 65 74 65 72  s</b>" parameter
9880: 73 20 61 72 65 20 76 61 6c 69 64 20 61 6e 64 20  s are valid and 
9890: 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 0a 20  can be used to. 
98a0: 20 20 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65     determine the
98b0: 20 6e 75 6d 62 65 72 20 61 6e 64 20 6e 61 6d 65   number and name
98c0: 73 20 6f 66 20 74 68 65 20 63 6f 6c 75 6d 6e 73  s of the columns
98d0: 20 74 68 61 74 20 77 6f 75 6c 64 20 68 61 76 65   that would have
98e0: 20 62 65 65 6e 20 69 6e 0a 20 20 20 20 74 68 65   been in.    the
98f0: 20 72 65 73 75 6c 74 20 73 65 74 20 68 61 64 20   result set had 
9900: 74 68 65 20 73 65 74 20 6e 6f 74 20 62 65 65 6e  the set not been
9910: 20 65 6d 70 74 79 2e 3c 2f 70 3e 0a 0a 3c 6c 69   empty.</p>..<li
9920: 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d 41 20 66 75  ><p><b>PRAGMA fu
9930: 6c 6c 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 73 20  ll_column_names 
9940: 3d 20 4f 4e 3b 0a 20 20 20 20 20 20 20 3c 62 72  = ON;.       <br
9950: 3e 50 52 41 47 4d 41 20 66 75 6c 6c 5f 63 6f 6c  >PRAGMA full_col
9960: 75 6d 6e 5f 6e 61 6d 65 73 20 3d 20 4f 46 46 3b  umn_names = OFF;
9970: 3c 2f 62 3e 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e  </b></p>.    <p>
9980: 54 68 65 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 73  The column names
9990: 20 72 65 70 6f 72 74 65 64 20 69 6e 20 61 6e 20   reported in an 
99a0: 53 51 4c 69 74 65 20 63 61 6c 6c 62 61 63 6b 20  SQLite callback 
99b0: 61 72 65 20 6e 6f 72 6d 61 6c 6c 79 20 6a 75 73  are normally jus
99c0: 74 0a 20 20 20 20 74 68 65 20 6e 61 6d 65 20 6f  t.    the name o
99d0: 66 20 74 68 65 20 63 6f 6c 75 6d 6e 20 69 74 73  f the column its
99e0: 65 6c 66 2c 20 65 78 63 65 70 74 20 66 6f 72 20  elf, except for 
99f0: 6a 6f 69 6e 73 20 77 68 65 6e 20 22 54 41 42 4c  joins when "TABL
9a00: 45 2e 43 4f 4c 55 4d 4e 22 0a 20 20 20 20 69 73  E.COLUMN".    is
9a10: 20 75 73 65 64 2e 20 20 42 75 74 20 77 68 65 6e   used.  But when
9a20: 20 66 75 6c 6c 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d   full_column_nam
9a30: 65 73 20 69 73 20 74 75 72 6e 65 64 20 6f 6e 2c  es is turned on,
9a40: 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 73 20 61 72   column names ar
9a50: 65 0a 20 20 20 20 61 6c 77 61 79 73 20 72 65 70  e.    always rep
9a60: 6f 72 74 65 64 20 61 73 20 22 54 41 42 4c 45 2e  orted as "TABLE.
9a70: 43 4f 4c 55 4d 4e 22 20 65 76 65 6e 20 66 6f 72  COLUMN" even for
9a80: 20 73 69 6d 70 6c 65 20 71 75 65 72 69 65 73 2e   simple queries.
9a90: 3c 2f 70 3e 3c 2f 6c 69 3e 0a 0a 3c 6c 69 3e 3c  </p></li>..<li><
9aa0: 70 3e 3c 62 3e 50 52 41 47 4d 41 20 69 6e 64 65  p><b>PRAGMA inde
9ab0: 78 5f 69 6e 66 6f 28 3c 2f 62 3e 3c 69 3e 69 6e  x_info(</b><i>in
9ac0: 64 65 78 2d 6e 61 6d 65 3c 2f 69 3e 3c 62 3e 29  dex-name</i><b>)
9ad0: 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20 20 20 20 3c 70  ;</b></p>.    <p
9ae0: 3e 46 6f 72 20 65 61 63 68 20 63 6f 6c 75 6d 6e  >For each column
9af0: 20 74 68 61 74 20 74 68 65 20 6e 61 6d 65 64 20   that the named 
9b00: 69 6e 64 65 78 20 72 65 66 65 72 65 6e 63 65 73  index references
9b10: 2c 20 69 6e 76 6f 6b 65 20 74 68 65 20 0a 20 20  , invoke the .  
9b20: 20 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74    callback funct
9b30: 69 6f 6e 0a 20 20 20 20 6f 6e 63 65 20 77 69 74  ion.    once wit
9b40: 68 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62  h information ab
9b50: 6f 75 74 20 74 68 61 74 20 63 6f 6c 75 6d 6e 2c  out that column,
9b60: 20 69 6e 63 6c 75 64 69 6e 67 20 74 68 65 20 63   including the c
9b70: 6f 6c 75 6d 6e 20 6e 61 6d 65 2c 0a 20 20 20 20  olumn name,.    
9b80: 61 6e 64 20 74 68 65 20 63 6f 6c 75 6d 6e 20 6e  and the column n
9b90: 75 6d 62 65 72 2e 3c 2f 70 3e 0a 0a 3c 6c 69 3e  umber.</p>..<li>
9ba0: 3c 70 3e 3c 62 3e 50 52 41 47 4d 41 20 69 6e 64  <p><b>PRAGMA ind
9bb0: 65 78 5f 6c 69 73 74 28 3c 2f 62 3e 3c 69 3e 74  ex_list(</b><i>t
9bc0: 61 62 6c 65 2d 6e 61 6d 65 3c 2f 69 3e 3c 62 3e  able-name</i><b>
9bd0: 29 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20 20 20 20 3c  );</b></p>.    <
9be0: 70 3e 46 6f 72 20 65 61 63 68 20 69 6e 64 65 78  p>For each index
9bf0: 20 6f 6e 20 74 68 65 20 6e 61 6d 65 64 20 74 61   on the named ta
9c00: 62 6c 65 2c 20 69 6e 76 6f 6b 65 20 74 68 65 20  ble, invoke the 
9c10: 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f  callback functio
9c20: 6e 0a 20 20 20 20 6f 6e 63 65 20 77 69 74 68 20  n.    once with 
9c30: 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75  information abou
9c40: 74 20 74 68 61 74 20 69 6e 64 65 78 2e 20 20 41  t that index.  A
9c50: 72 67 75 6d 65 6e 74 73 20 69 6e 63 6c 75 64 65  rguments include
9c60: 20 74 68 65 0a 20 20 20 20 69 6e 64 65 78 20 6e   the.    index n
9c70: 61 6d 65 20 61 6e 64 20 61 20 66 6c 61 67 20 74  ame and a flag t
9c80: 6f 20 69 6e 64 69 63 61 74 65 20 77 68 65 74 68  o indicate wheth
9c90: 65 72 20 6f 72 20 6e 6f 74 20 74 68 65 20 69 6e  er or not the in
9ca0: 64 65 78 20 6d 75 73 74 20 62 65 0a 20 20 20 20  dex must be.    
9cb0: 75 6e 69 71 75 65 2e 3c 2f 70 3e 0a 0a 3c 6c 69  unique.</p>..<li
9cc0: 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d 41 20 70 61  ><p><b>PRAGMA pa
9cd0: 72 73 65 72 5f 74 72 61 63 65 20 3d 20 4f 4e 3b  rser_trace = ON;
9ce0: 3c 62 72 3e 50 52 41 47 4d 41 20 70 61 72 73 65  <br>PRAGMA parse
9cf0: 72 5f 74 72 61 63 65 20 3d 20 4f 46 46 3b 3c 2f  r_trace = OFF;</
9d00: 62 3e 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e 54 75  b></p>.    <p>Tu
9d10: 72 6e 20 74 72 61 63 69 6e 67 20 6f 66 20 74 68  rn tracing of th
9d20: 65 20 53 51 4c 20 70 61 72 73 65 72 20 69 6e 73  e SQL parser ins
9d30: 69 64 65 20 6f 66 20 74 68 65 0a 20 20 20 20 53  ide of the.    S
9d40: 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 6f 6e  QLite library on
9d50: 20 61 6e 64 20 6f 66 66 2e 20 20 54 68 69 73 20   and off.  This 
9d60: 69 73 20 75 73 65 64 20 66 6f 72 20 64 65 62 75  is used for debu
9d70: 67 67 69 6e 67 2e 0a 20 20 20 20 54 68 69 73 20  gging..    This 
9d80: 6f 6e 6c 79 20 77 6f 72 6b 73 20 69 66 20 74 68  only works if th
9d90: 65 20 6c 69 62 72 61 72 79 20 69 73 20 63 6f 6d  e library is com
9da0: 70 69 6c 65 64 20 77 69 74 68 6f 75 74 20 74 68  piled without th
9db0: 65 20 4e 44 45 42 55 47 20 6d 61 63 72 6f 2e 0a  e NDEBUG macro..
9dc0: 20 20 20 20 3c 2f 70 3e 3c 2f 6c 69 3e 0a 0a 3c      </p></li>..<
9dd0: 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d 41 20  li><p><b>PRAGMA 
9de0: 69 6e 74 65 67 72 69 74 79 5f 63 68 65 63 6b 3b  integrity_check;
9df0: 3c 2f 62 3e 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e  </b></p>.    <p>
9e00: 54 68 65 20 63 6f 6d 6d 61 6e 64 20 64 6f 65 73  The command does
9e10: 20 61 6e 20 69 6e 74 65 67 72 69 74 79 20 63 68   an integrity ch
9e20: 65 63 6b 20 6f 66 20 74 68 65 20 65 6e 74 69 72  eck of the entir
9e30: 65 20 64 61 74 61 62 61 73 65 2e 20 20 49 74 0a  e database.  It.
9e40: 20 20 20 20 6c 6f 6f 6b 73 20 66 6f 72 20 6f 75      looks for ou
9e50: 74 2d 6f 66 2d 6f 72 64 65 72 20 72 65 63 6f 72  t-of-order recor
9e60: 64 73 2c 20 6d 69 73 73 69 6e 67 20 70 61 67 65  ds, missing page
9e70: 73 2c 20 61 6e 64 20 6d 61 6c 66 6f 72 6d 65 64  s, and malformed
9e80: 20 72 65 63 6f 72 64 73 2e 0a 20 20 20 20 49 66   records..    If
9e90: 20 61 6e 79 20 70 72 6f 62 6c 65 6d 73 20 61 72   any problems ar
9ea0: 65 20 66 6f 75 6e 64 2c 20 74 68 65 6e 20 61 20  e found, then a 
9eb0: 73 69 6e 67 6c 65 20 73 74 72 69 6e 67 20 69 73  single string is
9ec0: 20 72 65 74 75 72 6e 65 64 20 77 68 69 63 68 20   returned which 
9ed0: 69 73 0a 20 20 20 20 61 20 64 65 73 63 72 69 70  is.    a descrip
9ee0: 74 69 6f 6e 20 6f 66 20 61 6c 6c 20 70 72 6f 62  tion of all prob
9ef0: 6c 65 6d 73 2e 20 20 49 66 20 65 76 65 72 79 74  lems.  If everyt
9f00: 68 69 6e 67 20 69 73 20 69 6e 20 6f 72 64 65 72  hing is in order
9f10: 2c 20 22 6f 6b 22 20 69 73 0a 20 20 20 20 72 65  , "ok" is.    re
9f20: 74 75 72 6e 65 64 2e 3c 2f 70 3e 0a 0a 3c 6c 69  turned.</p>..<li
9f30: 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d 41 20 73 79  ><p><b>PRAGMA sy
9f40: 6e 63 68 72 6f 6e 6f 75 73 3b 0a 20 20 20 20 20  nchronous;.     
9f50: 20 20 3c 62 72 3e 50 52 41 47 4d 41 20 73 79 6e    <br>PRAGMA syn
9f60: 63 68 72 6f 6e 6f 75 73 20 3d 20 4f 4e 3b 0a 20  chronous = ON;. 
9f70: 20 20 20 20 20 20 3c 62 72 3e 50 52 41 47 4d 41        <br>PRAGMA
9f80: 20 73 79 6e 63 68 72 6f 6e 6f 75 73 20 3d 20 4f   synchronous = O
9f90: 46 46 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20 20 20 20  FF;</b></p>.    
9fa0: 3c 70 3e 51 75 65 72 79 20 6f 72 20 63 68 61 6e  <p>Query or chan
9fb0: 67 65 20 74 68 65 20 73 65 74 74 69 6e 67 20 6f  ge the setting o
9fc0: 66 20 74 68 65 20 22 73 79 6e 63 68 72 6f 6e 6f  f the "synchrono
9fd0: 75 73 22 20 66 6c 61 67 20 69 6e 0a 20 20 20 20  us" flag in.    
9fe0: 74 68 65 20 64 61 74 61 62 61 73 65 20 66 6f 72  the database for
9ff0: 20 74 68 65 20 64 75 72 61 74 69 6f 6e 20 6f 66   the duration of
a000: 20 74 68 65 20 63 75 72 72 65 6e 74 20 64 61 74   the current dat
a010: 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 2e 0a 20  abase connect.. 
a020: 20 20 20 54 68 65 20 73 79 6e 63 68 72 6f 6e 6f     The synchrono
a030: 75 73 20 66 6c 61 67 20 72 65 76 65 72 74 73 20  us flag reverts 
a040: 74 6f 20 69 74 73 20 64 65 66 61 75 6c 74 20 76  to its default v
a050: 61 6c 75 65 20 77 68 65 6e 20 74 68 65 20 64 61  alue when the da
a060: 74 61 62 61 73 65 0a 20 20 20 20 69 73 20 63 6c  tabase.    is cl
a070: 6f 73 65 64 20 61 6e 64 20 72 65 6f 70 65 6e 65  osed and reopene
a080: 64 2e 20 20 46 6f 72 20 61 64 64 69 74 69 6f 6e  d.  For addition
a090: 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 6f  al information o
a0a0: 6e 20 74 68 65 20 73 79 6e 63 68 72 6f 6e 6f 75  n the synchronou
a0b0: 73 0a 20 20 20 20 66 6c 61 67 2c 20 73 65 65 20  s.    flag, see 
a0c0: 74 68 65 20 64 65 73 63 72 69 70 74 69 6f 6e 20  the description 
a0d0: 6f 66 20 74 68 65 20 3c 62 3e 64 65 66 61 75 6c  of the <b>defaul
a0e0: 74 5f 73 79 6e 63 68 72 6f 6e 6f 75 73 3c 2f 62  t_synchronous</b
a0f0: 3e 20 70 72 61 67 6d 61 2e 3c 2f 70 3e 0a 20 20  > pragma.</p>.  
a100: 20 20 3c 2f 6c 69 3e 0a 0a 3c 6c 69 3e 3c 70 3e    </li>..<li><p>
a110: 3c 62 3e 50 52 41 47 4d 41 20 74 61 62 6c 65 5f  <b>PRAGMA table_
a120: 69 6e 66 6f 28 3c 2f 62 3e 3c 69 3e 74 61 62 6c  info(</b><i>tabl
a130: 65 2d 6e 61 6d 65 3c 2f 69 3e 3c 62 3e 29 3b 3c  e-name</i><b>);<
a140: 2f 62 3e 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e 46  /b></p>.    <p>F
a150: 6f 72 20 65 61 63 68 20 63 6f 6c 75 6d 6e 20 69  or each column i
a160: 6e 20 74 68 65 20 6e 61 6d 65 64 20 74 61 62 6c  n the named tabl
a170: 65 2c 20 69 6e 76 6f 6b 65 20 74 68 65 20 63 61  e, invoke the ca
a180: 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 0a  llback function.
a190: 20 20 20 20 6f 6e 63 65 20 77 69 74 68 20 69 6e      once with in
a1a0: 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20  formation about 
a1b0: 74 68 61 74 20 63 6f 6c 75 6d 6e 2c 20 69 6e 63  that column, inc
a1c0: 6c 75 64 69 6e 67 20 74 68 65 20 63 6f 6c 75 6d  luding the colum
a1d0: 6e 20 6e 61 6d 65 2c 0a 20 20 20 20 64 61 74 61  n name,.    data
a1e0: 20 74 79 70 65 2c 20 77 68 65 74 68 65 72 20 6f   type, whether o
a1f0: 72 20 6e 6f 74 20 74 68 65 20 63 6f 6c 75 6d 6e  r not the column
a200: 20 63 61 6e 20 62 65 20 4e 55 4c 4c 2c 20 61 6e   can be NULL, an
a210: 64 20 74 68 65 20 64 65 66 61 75 6c 74 0a 20 20  d the default.  
a220: 20 20 76 61 6c 75 65 20 66 6f 72 20 74 68 65 20    value for the 
a230: 63 6f 6c 75 6d 6e 2e 3c 2f 70 3e 0a 0a 3c 6c 69  column.</p>..<li
a240: 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d 41 20 76 64  ><p><b>PRAGMA vd
a250: 62 65 5f 74 72 61 63 65 20 3d 20 4f 4e 3b 3c 62  be_trace = ON;<b
a260: 72 3e 50 52 41 47 4d 41 20 76 64 62 65 5f 74 72  r>PRAGMA vdbe_tr
a270: 61 63 65 20 3d 20 4f 46 46 3b 3c 2f 62 3e 3c 2f  ace = OFF;</b></
a280: 70 3e 0a 20 20 20 20 3c 70 3e 54 75 72 6e 20 74  p>.    <p>Turn t
a290: 72 61 63 69 6e 67 20 6f 66 20 74 68 65 20 76 69  racing of the vi
a2a0: 72 74 75 61 6c 20 64 61 74 61 62 61 73 65 20 65  rtual database e
a2b0: 6e 67 69 6e 65 20 69 6e 73 69 64 65 20 6f 66 20  ngine inside of 
a2c0: 74 68 65 0a 20 20 20 20 53 51 4c 69 74 65 20 6c  the.    SQLite l
a2d0: 69 62 72 61 72 79 20 6f 6e 20 61 6e 64 20 6f 66  ibrary on and of
a2e0: 66 2e 20 20 54 68 69 73 20 69 73 20 75 73 65 64  f.  This is used
a2f0: 20 66 6f 72 20 64 65 62 75 67 67 69 6e 67 2e 3c   for debugging.<
a300: 2f 70 3e 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e 0a 0a  /p></li>.</ul>..
a310: 3c 70 3e 4e 6f 20 65 72 72 6f 72 20 6d 65 73 73  <p>No error mess
a320: 61 67 65 20 69 73 20 67 65 6e 65 72 61 74 65 64  age is generated
a330: 20 69 66 20 61 6e 20 75 6e 6b 6e 6f 77 6e 20 70   if an unknown p
a340: 72 61 67 6d 61 20 69 73 20 69 73 73 75 65 64 2e  ragma is issued.
a350: 0a 55 6e 6b 6e 6f 77 6e 20 70 72 61 67 6d 61 73  .Unknown pragmas
a360: 20 61 72 65 20 69 67 6e 6f 72 65 64 2e 3c 2f 70   are ignored.</p
a370: 3e 0a 7d 0a 0a 53 65 63 74 69 6f 6e 20 52 45 50  >.}..Section REP
a380: 4c 41 43 45 20 72 65 70 6c 61 63 65 0a 0a 53 79  LACE replace..Sy
a390: 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d  ntax {sql-statem
a3a0: 65 6e 74 7d 20 7b 0a 52 45 50 4c 41 43 45 20 49  ent} {.REPLACE I
a3b0: 4e 54 4f 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e  NTO <table-name>
a3c0: 20 5b 28 20 3c 63 6f 6c 75 6d 6e 2d 6c 69 73 74   [( <column-list
a3d0: 3e 20 29 5d 20 56 41 4c 55 45 53 20 28 20 3c 76  > )] VALUES ( <v
a3e0: 61 6c 75 65 2d 6c 69 73 74 3e 20 29 20 7c 0a 52  alue-list> ) |.R
a3f0: 45 50 4c 41 43 45 20 49 4e 54 4f 20 3c 74 61 62  EPLACE INTO <tab
a400: 6c 65 2d 6e 61 6d 65 3e 20 5b 28 20 3c 63 6f 6c  le-name> [( <col
a410: 75 6d 6e 2d 6c 69 73 74 3e 20 29 5d 20 3c 73 65  umn-list> )] <se
a420: 6c 65 63 74 2d 73 74 61 74 65 6d 65 6e 74 3e 0a  lect-statement>.
a430: 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65  }..puts {.<p>The
a440: 20 52 45 50 4c 41 43 45 20 63 6f 6d 6d 61 6e 64   REPLACE command
a450: 20 69 73 20 61 6e 20 61 6c 69 61 73 20 66 6f 72   is an alias for
a460: 20 74 68 65 20 22 49 4e 53 45 52 54 20 4f 52 20   the "INSERT OR 
a470: 52 45 50 4c 41 43 45 22 20 76 61 72 69 61 6e 74  REPLACE" variant
a480: 0a 6f 66 20 74 68 65 20 3c 61 20 68 72 65 66 3d  .of the <a href=
a490: 22 23 69 6e 73 65 72 74 22 3e 49 4e 53 45 52 54  "#insert">INSERT
a4a0: 20 63 6f 6d 6d 61 6e 64 3c 2f 61 3e 2e 20 20 54   command</a>.  T
a4b0: 68 69 73 20 61 6c 69 61 73 20 69 73 20 70 72 6f  his alias is pro
a4c0: 76 69 64 65 64 20 66 6f 72 0a 63 6f 6d 70 61 74  vided for.compat
a4d0: 69 62 69 6c 69 74 79 20 77 69 74 68 20 4d 79 53  ibility with MyS
a4e0: 51 4c 2e 20 20 53 65 65 20 74 68 65 20 0a 3c 61  QL.  See the .<a
a4f0: 20 68 72 65 66 3d 22 23 69 6e 73 65 72 74 22 3e   href="#insert">
a500: 49 4e 53 45 52 54 20 63 6f 6d 6d 61 6e 64 3c 2f  INSERT command</
a510: 61 3e 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e  a> documentation
a520: 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 0a   for additional.
a530: 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 3c 2f 70 3e  information.</p>
a540: 20 20 0a 7d 0a 0a 53 65 63 74 69 6f 6e 20 53 45    .}..Section SE
a550: 4c 45 43 54 20 73 65 6c 65 63 74 0a 0a 53 79 6e  LECT select..Syn
a560: 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65  tax {sql-stateme
a570: 6e 74 7d 20 7b 0a 53 45 4c 45 43 54 20 3c 72 65  nt} {.SELECT <re
a580: 73 75 6c 74 3e 20 5b 46 52 4f 4d 20 3c 74 61 62  sult> [FROM <tab
a590: 6c 65 2d 6c 69 73 74 3e 5d 0a 5b 57 48 45 52 45  le-list>].[WHERE
a5a0: 20 3c 65 78 70 72 3e 5d 0a 5b 47 52 4f 55 50 20   <expr>].[GROUP 
a5b0: 42 59 20 3c 65 78 70 72 2d 6c 69 73 74 3e 5d 0a  BY <expr-list>].
a5c0: 5b 48 41 56 49 4e 47 20 3c 65 78 70 72 3e 5d 0a  [HAVING <expr>].
a5d0: 5b 3c 63 6f 6d 70 6f 75 6e 64 2d 6f 70 3e 20 3c  [<compound-op> <
a5e0: 73 65 6c 65 63 74 3e 5d 2a 0a 5b 4f 52 44 45 52  select>]*.[ORDER
a5f0: 20 42 59 20 3c 73 6f 72 74 2d 65 78 70 72 2d 6c   BY <sort-expr-l
a600: 69 73 74 3e 5d 0a 5b 4c 49 4d 49 54 20 3c 69 6e  ist>].[LIMIT <in
a610: 74 65 67 65 72 3e 20 5b 4f 46 46 53 45 54 20 3c  teger> [OFFSET <
a620: 69 6e 74 65 67 65 72 3e 5d 5d 0a 7d 20 7b 72 65  integer>]].} {re
a630: 73 75 6c 74 7d 20 7b 0a 3c 72 65 73 75 6c 74 2d  sult} {.<result-
a640: 63 6f 6c 75 6d 6e 3e 20 5b 2c 20 3c 72 65 73 75  column> [, <resu
a650: 6c 74 2d 63 6f 6c 75 6d 6e 3e 5d 2a 0a 7d 20 7b  lt-column>]*.} {
a660: 72 65 73 75 6c 74 2d 63 6f 6c 75 6d 6e 7d 20 7b  result-column} {
a670: 0a 53 54 41 52 20 7c 20 3c 65 78 70 72 3e 20 5b  .STAR | <expr> [
a680: 20 5b 41 53 5d 20 3c 73 74 72 69 6e 67 3e 20 5d   [AS] <string> ]
a690: 0a 7d 20 7b 74 61 62 6c 65 2d 6c 69 73 74 7d 20  .} {table-list} 
a6a0: 7b 0a 3c 74 61 62 6c 65 3e 20 5b 2c 20 3c 74 61  {.<table> [, <ta
a6b0: 62 6c 65 3e 5d 2a 0a 7d 20 7b 74 61 62 6c 65 7d  ble>]*.} {table}
a6c0: 20 7b 0a 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 20   {.<table-name> 
a6d0: 5b 41 53 20 3c 61 6c 69 61 73 3e 5d 20 7c 0a 28  [AS <alias>] |.(
a6e0: 20 3c 73 65 6c 65 63 74 3e 20 29 20 5b 41 53 20   <select> ) [AS 
a6f0: 3c 61 6c 69 61 73 3e 5d 0a 7d 20 7b 73 6f 72 74  <alias>].} {sort
a700: 2d 65 78 70 72 2d 6c 69 73 74 7d 20 7b 0a 3c 65  -expr-list} {.<e
a710: 78 70 72 3e 20 5b 3c 73 6f 72 74 2d 6f 72 64 65  xpr> [<sort-orde
a720: 72 3e 5d 20 5b 2c 20 3c 65 78 70 72 3e 20 5b 3c  r>] [, <expr> [<
a730: 73 6f 72 74 2d 6f 72 64 65 72 3e 5d 5d 2a 0a 7d  sort-order>]]*.}
a740: 20 7b 73 6f 72 74 2d 6f 72 64 65 72 7d 20 7b 0a   {sort-order} {.
a750: 41 53 43 20 7c 20 44 45 53 43 0a 7d 20 7b 63 6f  ASC | DESC.} {co
a760: 6d 70 6f 75 6e 64 5f 6f 70 7d 20 7b 0a 55 4e 49  mpound_op} {.UNI
a770: 4f 4e 20 7c 20 55 4e 49 4f 4e 20 41 4c 4c 20 7c  ON | UNION ALL |
a780: 20 49 4e 54 45 52 53 45 43 54 20 7c 20 45 58 43   INTERSECT | EXC
a790: 45 50 54 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70  EPT.}..puts {.<p
a7a0: 3e 54 68 65 20 53 45 4c 45 43 54 20 73 74 61 74  >The SELECT stat
a7b0: 65 6d 65 6e 74 20 69 73 20 75 73 65 64 20 74 6f  ement is used to
a7c0: 20 71 75 65 72 79 20 74 68 65 20 64 61 74 61 62   query the datab
a7d0: 61 73 65 2e 20 20 54 68 65 0a 72 65 73 75 6c 74  ase.  The.result
a7e0: 20 6f 66 20 61 20 53 45 4c 45 43 54 20 69 73 20   of a SELECT is 
a7f0: 7a 65 72 6f 20 6f 72 20 6d 6f 72 65 20 72 6f 77  zero or more row
a800: 73 20 6f 66 20 64 61 74 61 20 77 68 65 72 65 20  s of data where 
a810: 65 61 63 68 20 72 6f 77 0a 68 61 73 20 61 20 66  each row.has a f
a820: 69 78 65 64 20 6e 75 6d 62 65 72 20 6f 66 20 63  ixed number of c
a830: 6f 6c 75 6d 6e 73 2e 20 20 54 68 65 20 6e 75 6d  olumns.  The num
a840: 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69  ber of columns i
a850: 6e 20 74 68 65 0a 72 65 73 75 6c 74 20 69 73 20  n the.result is 
a860: 73 70 65 63 69 66 69 65 64 20 62 79 20 74 68 65  specified by the
a870: 20 65 78 70 72 65 73 73 69 6f 6e 20 6c 69 73 74   expression list
a880: 20 69 6e 20 62 65 74 77 65 65 6e 20 74 68 65 0a   in between the.
a890: 53 45 4c 45 43 54 20 61 6e 64 20 46 52 4f 4d 20  SELECT and FROM 
a8a0: 6b 65 79 77 6f 72 64 73 2e 20 20 41 6e 79 20 61  keywords.  Any a
a8b0: 72 62 69 74 72 61 72 79 20 65 78 70 72 65 73 73  rbitrary express
a8c0: 69 6f 6e 20 63 61 6e 20 62 65 20 75 73 65 64 0a  ion can be used.
a8d0: 61 73 20 61 20 72 65 73 75 6c 74 2e 20 20 49 66  as a result.  If
a8e0: 20 61 20 72 65 73 75 6c 74 20 65 78 70 72 65 73   a result expres
a8f0: 73 69 6f 6e 20 69 73 20 7d 0a 70 75 74 73 20 22  sion is }.puts "
a900: 5b 4f 70 65 72 61 74 6f 72 20 2a 5d 20 74 68 65  [Operator *] the
a910: 6e 20 61 6c 6c 20 63 6f 6c 75 6d 6e 73 20 6f 66  n all columns of
a920: 20 61 6c 6c 20 74 61 62 6c 65 73 20 61 72 65 20   all tables are 
a930: 73 75 62 73 74 69 74 75 74 65 64 22 0a 70 75 74  substituted".put
a940: 73 20 7b 66 6f 72 20 74 68 61 74 20 6f 6e 65 20  s {for that one 
a950: 65 78 70 72 65 73 73 69 6f 6e 2e 3c 2f 70 3e 0a  expression.</p>.
a960: 0a 3c 70 3e 54 68 65 20 71 75 65 72 79 20 69 73  .<p>The query is
a970: 20 65 78 65 63 75 74 65 64 20 61 67 61 69 6e 20   executed again 
a980: 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 74 61 62 6c  one or more tabl
a990: 65 73 20 73 70 65 63 69 66 69 65 64 20 61 66 74  es specified aft
a9a0: 65 72 0a 74 68 65 20 46 52 4f 4d 20 6b 65 79 77  er.the FROM keyw
a9b0: 6f 72 64 2e 20 20 49 66 20 6d 6f 72 65 20 74 68  ord.  If more th
a9c0: 61 6e 20 6f 6e 65 20 74 61 62 6c 65 20 69 73 20  an one table is 
a9d0: 73 70 65 63 69 66 69 65 64 2c 20 74 68 65 6e 20  specified, then 
a9e0: 74 68 65 0a 71 75 65 72 79 20 69 73 20 61 67 61  the.query is aga
a9f0: 69 6e 73 74 20 74 68 65 20 28 69 6e 6e 65 72 29  inst the (inner)
aa00: 20 6a 6f 69 6e 20 6f 66 20 74 68 65 20 76 61 72   join of the var
aa10: 69 6f 75 73 20 74 61 62 6c 65 73 2e 20 20 41 20  ious tables.  A 
aa20: 73 75 62 2d 71 75 65 72 79 0a 69 6e 20 70 61 72  sub-query.in par
aa30: 65 6e 74 68 65 73 65 73 20 6d 61 79 20 62 65 20  entheses may be 
aa40: 73 75 62 73 74 69 74 75 74 65 64 20 66 6f 72 20  substituted for 
aa50: 61 6e 79 20 74 61 62 6c 65 20 6e 61 6d 65 20 69  any table name i
aa60: 6e 20 74 68 65 20 46 52 4f 4d 20 63 6c 61 75 73  n the FROM claus
aa70: 65 2e 0a 54 68 65 20 65 6e 74 69 72 65 20 46 52  e..The entire FR
aa80: 4f 4d 20 63 6c 61 75 73 65 20 6d 61 79 20 62 65  OM clause may be
aa90: 20 6f 6d 69 74 74 65 64 2c 20 69 6e 20 77 68 69   omitted, in whi
aaa0: 63 68 20 63 61 73 65 20 74 68 65 20 72 65 73 75  ch case the resu
aab0: 6c 74 20 69 73 20 61 0a 73 69 6e 67 6c 65 20 72  lt is a.single r
aac0: 6f 77 20 63 6f 6e 73 69 73 74 69 6e 67 20 6f 66  ow consisting of
aad0: 20 74 68 65 20 76 61 6c 75 65 73 20 6f 66 20 74   the values of t
aae0: 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20 6c 69  he expression li
aaf0: 73 74 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  st..</p>..<p>The
ab00: 20 57 48 45 52 45 20 63 6c 61 75 73 65 20 63 61   WHERE clause ca
ab10: 6e 20 62 65 20 75 73 65 64 20 74 6f 20 6c 69 6d  n be used to lim
ab20: 69 74 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  it the number of
ab30: 20 72 6f 77 73 20 6f 76 65 72 0a 77 68 69 63 68   rows over.which
ab40: 20 74 68 65 20 71 75 65 72 79 20 6f 70 65 72 61   the query opera
ab50: 74 65 73 2e 20 20 49 6e 20 74 68 65 20 63 75 72  tes.  In the cur
ab60: 72 65 6e 74 20 69 6d 70 6c 65 6d 65 6e 74 61 74  rent implementat
ab70: 69 6f 6e 2c 0a 69 6e 64 69 63 65 73 20 77 69 6c  ion,.indices wil
ab80: 6c 20 6f 6e 6c 79 20 62 65 20 75 73 65 64 20 74  l only be used t
ab90: 6f 0a 6f 70 74 69 6d 69 7a 65 20 74 68 65 20 71  o.optimize the q
aba0: 75 65 72 79 20 69 66 20 57 48 45 52 45 20 65 78  uery if WHERE ex
abb0: 70 72 65 73 73 69 6f 6e 20 63 6f 6e 74 61 69 6e  pression contain
abc0: 73 20 65 71 75 61 6c 69 74 79 20 63 6f 6d 70 61  s equality compa
abd0: 72 69 73 6f 6e 73 0a 63 6f 6e 6e 65 63 74 65 64  risons.connected
abe0: 20 62 79 20 74 68 65 20 41 4e 44 20 6f 70 65 72   by the AND oper
abf0: 61 74 6f 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68  ator.</p>..<p>Th
ac00: 65 20 47 52 4f 55 50 20 42 59 20 63 6c 61 75 73  e GROUP BY claus
ac10: 65 73 20 63 61 75 73 65 73 20 6f 6e 65 20 6f 72  es causes one or
ac20: 20 6d 6f 72 65 20 72 6f 77 73 20 6f 66 20 74 68   more rows of th
ac30: 65 20 72 65 73 75 6c 74 20 74 6f 0a 62 65 20 63  e result to.be c
ac40: 6f 6d 62 69 6e 65 64 20 69 6e 74 6f 20 61 20 73  ombined into a s
ac50: 69 6e 67 6c 65 20 72 6f 77 20 6f 66 20 6f 75 74  ingle row of out
ac60: 70 75 74 2e 20 20 54 68 69 73 20 69 73 20 65 73  put.  This is es
ac70: 70 65 63 69 61 6c 6c 79 20 75 73 65 66 75 6c 0a  pecially useful.
ac80: 77 68 65 6e 20 74 68 65 20 72 65 73 75 6c 74 20  when the result 
ac90: 63 6f 6e 74 61 69 6e 73 20 61 67 67 72 65 67 61  contains aggrega
aca0: 74 65 20 66 75 6e 63 74 69 6f 6e 73 2e 20 20 54  te functions.  T
acb0: 68 65 20 65 78 70 72 65 73 73 69 6f 6e 73 20 69  he expressions i
acc0: 6e 0a 74 68 65 20 47 52 4f 55 50 20 42 59 20 63  n.the GROUP BY c
acd0: 6c 61 75 73 65 20 64 6f 20 3c 65 6d 3e 6e 6f 74  lause do <em>not
ace0: 3c 2f 65 6d 3e 20 68 61 76 65 20 74 6f 20 62 65  </em> have to be
acf0: 20 65 78 70 72 65 73 73 69 6f 6e 73 20 74 68 61   expressions tha
ad00: 74 0a 61 70 70 65 61 72 20 69 6e 20 74 68 65 20  t.appear in the 
ad10: 72 65 73 75 6c 74 2e 20 20 54 68 65 20 48 41 56  result.  The HAV
ad20: 49 4e 47 20 63 6c 61 75 73 65 20 69 73 20 73 69  ING clause is si
ad30: 6d 69 6c 61 72 20 74 6f 20 57 48 45 52 45 20 65  milar to WHERE e
ad40: 78 63 65 70 74 0a 74 68 61 74 20 48 41 56 49 4e  xcept.that HAVIN
ad50: 47 20 61 70 70 6c 69 65 73 20 61 66 74 65 72 20  G applies after 
ad60: 67 72 6f 75 70 69 6e 67 20 68 61 73 20 6f 63 63  grouping has occ
ad70: 75 72 72 65 64 2e 20 20 54 68 65 20 48 41 56 49  urred.  The HAVI
ad80: 4e 47 20 65 78 70 72 65 73 73 69 6f 6e 0a 6d 61  NG expression.ma
ad90: 79 20 72 65 66 65 72 20 74 6f 20 76 61 6c 75 65  y refer to value
ada0: 73 2c 20 65 76 65 6e 20 61 67 67 72 65 67 61 74  s, even aggregat
adb0: 65 20 66 75 6e 63 74 69 6f 6e 73 2c 20 74 68 61  e functions, tha
adc0: 74 20 61 72 65 20 6e 6f 74 20 69 6e 20 74 68 65  t are not in the
add0: 20 72 65 73 75 6c 74 2e 3c 2f 70 3e 0a 0a 3c 70   result.</p>..<p
ade0: 3e 54 68 65 20 4f 52 44 45 52 20 42 59 20 63 6c  >The ORDER BY cl
adf0: 61 75 73 65 20 63 61 75 73 65 73 20 74 68 65 20  ause causes the 
ae00: 6f 75 74 70 75 74 20 72 6f 77 73 20 74 6f 20 62  output rows to b
ae10: 65 20 73 6f 72 74 65 64 2e 20 20 0a 54 68 65 20  e sorted.  .The 
ae20: 61 72 67 75 6d 65 6e 74 20 74 6f 20 4f 52 44 45  argument to ORDE
ae30: 52 20 42 59 20 69 73 20 61 20 6c 69 73 74 20 6f  R BY is a list o
ae40: 66 20 65 78 70 72 65 73 73 69 6f 6e 73 20 74 68  f expressions th
ae50: 61 74 20 61 72 65 20 75 73 65 64 20 61 73 20 74  at are used as t
ae60: 68 65 0a 6b 65 79 20 66 6f 72 20 74 68 65 20 73  he.key for the s
ae70: 6f 72 74 2e 20 20 54 68 65 20 65 78 70 72 65 73  ort.  The expres
ae80: 73 69 6f 6e 73 20 64 6f 20 6e 6f 74 20 68 61 76  sions do not hav
ae90: 65 20 74 6f 20 62 65 20 70 61 72 74 20 6f 66 20  e to be part of 
aea0: 74 68 65 0a 72 65 73 75 6c 74 20 66 6f 72 20 61  the.result for a
aeb0: 20 73 69 6d 70 6c 65 20 53 45 4c 45 43 54 2c 20   simple SELECT, 
aec0: 62 75 74 20 69 6e 20 61 20 63 6f 6d 70 6f 75 6e  but in a compoun
aed0: 64 20 53 45 4c 45 43 54 20 65 61 63 68 20 73 6f  d SELECT each so
aee0: 72 74 0a 65 78 70 72 65 73 73 69 6f 6e 20 6d 75  rt.expression mu
aef0: 73 74 20 65 78 61 63 74 6c 79 20 6d 61 74 63 68  st exactly match
af00: 20 6f 6e 65 20 6f 66 20 74 68 65 20 72 65 73 75   one of the resu
af10: 6c 74 20 63 6f 6c 75 6d 6e 73 2e 20 20 45 61 63  lt columns.  Eac
af20: 68 0a 73 6f 72 74 20 65 78 70 72 65 73 73 69 6f  h.sort expressio
af30: 6e 20 6d 61 79 20 62 65 20 6f 70 74 69 6f 6e 61  n may be optiona
af40: 6c 6c 79 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20  lly followed by 
af50: 41 53 43 20 6f 72 20 44 45 53 43 20 74 6f 20 73  ASC or DESC to s
af60: 70 65 63 69 66 79 0a 74 68 65 20 73 6f 72 74 20  pecify.the sort 
af70: 6f 72 64 65 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54  order.</p>..<p>T
af80: 68 65 20 4c 49 4d 49 54 20 63 6c 61 75 73 65 20  he LIMIT clause 
af90: 70 6c 61 63 65 73 20 61 6e 20 75 70 70 65 72 20  places an upper 
afa0: 62 6f 75 6e 64 20 6f 6e 20 74 68 65 20 6e 75 6d  bound on the num
afb0: 62 65 72 20 6f 66 20 72 6f 77 73 0a 72 65 74 75  ber of rows.retu
afc0: 72 6e 65 64 20 69 6e 20 74 68 65 20 72 65 73 75  rned in the resu
afd0: 6c 74 2e 20 20 41 20 4c 49 4d 49 54 20 6f 66 20  lt.  A LIMIT of 
afe0: 30 20 69 6e 64 69 63 61 74 65 73 20 6e 6f 20 75  0 indicates no u
aff0: 70 70 65 72 20 62 6f 75 6e 64 2e 0a 54 68 65 20  pper bound..The 
b000: 6f 70 74 69 6f 6e 61 6c 20 4f 46 46 53 45 54 20  optional OFFSET 
b010: 66 6f 6c 6c 6f 77 69 6e 67 20 4c 49 4d 49 54 20  following LIMIT 
b020: 73 70 65 63 69 66 69 65 73 20 68 6f 77 20 6d 61  specifies how ma
b030: 6e 79 0a 72 6f 77 73 20 74 6f 20 73 6b 69 70 20  ny.rows to skip 
b040: 61 74 20 74 68 65 20 62 65 67 69 6e 6e 69 6e 67  at the beginning
b050: 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74 20 73   of the result s
b060: 65 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41 20 63 6f  et.</p>..<p>A co
b070: 6d 70 6f 75 6e 64 20 53 45 4c 45 43 54 20 69 73  mpound SELECT is
b080: 20 66 6f 72 6d 65 64 20 66 72 6f 6d 20 74 77 6f   formed from two
b090: 20 6f 72 20 6d 6f 72 65 20 73 69 6d 70 6c 65 20   or more simple 
b0a0: 53 45 4c 45 43 54 73 20 63 6f 6e 6e 65 63 74 65  SELECTs connecte
b0b0: 64 0a 62 79 20 6f 6e 65 20 6f 66 20 74 68 65 20  d.by one of the 
b0c0: 6f 70 65 72 61 74 6f 72 73 20 55 4e 49 4f 4e 2c  operators UNION,
b0d0: 20 55 4e 49 4f 4e 20 41 4c 4c 2c 20 49 4e 54 45   UNION ALL, INTE
b0e0: 52 53 45 43 54 2c 20 6f 72 20 45 58 43 45 50 54  RSECT, or EXCEPT
b0f0: 2e 20 20 49 6e 0a 61 20 63 6f 6d 70 6f 75 6e 64  .  In.a compound
b100: 20 53 45 4c 45 43 54 2c 20 61 6c 6c 20 74 68 65   SELECT, all the
b110: 20 63 6f 6e 73 74 69 74 75 65 6e 74 20 53 45 4c   constituent SEL
b120: 45 43 54 73 20 6d 75 73 74 20 73 70 65 63 69 66  ECTs must specif
b130: 79 20 74 68 65 0a 73 61 6d 65 20 6e 75 6d 62 65  y the.same numbe
b140: 72 20 6f 66 20 72 65 73 75 6c 74 20 63 6f 6c 75  r of result colu
b150: 6d 6e 73 2e 20 20 54 68 65 72 65 20 6d 61 79 20  mns.  There may 
b160: 62 65 20 6f 6e 6c 79 20 61 20 73 69 6e 67 6c 65  be only a single
b170: 20 4f 52 44 45 52 20 42 59 0a 63 6c 61 75 73 65   ORDER BY.clause
b180: 20 61 74 20 74 68 65 20 65 6e 64 20 6f 66 20 74   at the end of t
b190: 68 65 20 63 6f 6d 70 6f 75 6e 64 20 53 45 4c 45  he compound SELE
b1a0: 43 54 2e 20 20 54 68 65 20 55 4e 49 4f 4e 20 61  CT.  The UNION a
b1b0: 6e 64 20 55 4e 49 4f 4e 20 41 4c 4c 0a 6f 70 65  nd UNION ALL.ope
b1c0: 72 61 74 6f 72 73 20 63 6f 6d 62 69 6e 65 20 74  rators combine t
b1d0: 68 65 20 72 65 73 75 6c 74 73 20 6f 66 20 74 68  he results of th
b1e0: 65 20 53 45 4c 45 43 54 73 20 74 6f 20 74 68 65  e SELECTs to the
b1f0: 20 72 69 67 68 74 20 61 6e 64 20 6c 65 66 74 20   right and left 
b200: 69 6e 74 6f 0a 61 20 73 69 6e 67 6c 65 20 62 69  into.a single bi
b210: 67 20 74 61 62 6c 65 2e 20 20 54 68 65 20 64 69  g table.  The di
b220: 66 66 65 72 65 6e 63 65 20 69 73 20 74 68 61 74  fference is that
b230: 20 69 6e 20 55 4e 49 4f 4e 20 61 6c 6c 20 72 65   in UNION all re
b240: 73 75 6c 74 20 72 6f 77 73 0a 61 72 65 20 64 69  sult rows.are di
b250: 73 74 69 6e 63 74 20 77 68 65 72 65 20 69 6e 20  stinct where in 
b260: 55 4e 49 4f 4e 20 41 4c 4c 20 74 68 65 72 65 20  UNION ALL there 
b270: 6d 61 79 20 62 65 20 64 75 70 6c 69 63 61 74 65  may be duplicate
b280: 73 2e 0a 54 68 65 20 49 4e 54 45 52 53 45 43 54  s..The INTERSECT
b290: 20 6f 70 65 72 61 74 6f 72 20 74 61 6b 65 73 20   operator takes 
b2a0: 74 68 65 20 69 6e 74 65 72 73 65 63 74 69 6f 6e  the intersection
b2b0: 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74 73 20   of the results 
b2c0: 6f 66 20 74 68 65 0a 6c 65 66 74 20 61 6e 64 20  of the.left and 
b2d0: 72 69 67 68 74 20 53 45 4c 45 43 54 73 2e 20 20  right SELECTs.  
b2e0: 45 58 43 45 50 54 20 74 61 6b 65 73 20 74 68 65  EXCEPT takes the
b2f0: 20 72 65 73 75 6c 74 20 6f 66 20 6c 65 66 74 20   result of left 
b300: 53 45 4c 45 43 54 20 61 66 74 65 72 0a 72 65 6d  SELECT after.rem
b310: 6f 76 69 6e 67 20 74 68 65 20 72 65 73 75 6c 74  oving the result
b320: 73 20 6f 66 20 74 68 65 20 72 69 67 68 74 20 53  s of the right S
b330: 45 4c 45 43 54 2e 20 20 57 68 65 6e 20 74 68 72  ELECT.  When thr
b340: 65 65 20 61 72 65 20 6d 6f 72 65 20 53 45 4c 45  ee are more SELE
b350: 43 54 73 0a 61 72 65 20 63 6f 6e 6e 65 63 74 65  CTs.are connecte
b360: 64 20 69 6e 74 6f 20 61 20 63 6f 6d 70 6f 75 6e  d into a compoun
b370: 64 2c 20 74 68 65 79 20 67 72 6f 75 70 20 66 72  d, they group fr
b380: 6f 6d 20 6c 65 66 74 20 74 6f 20 72 69 67 68 74  om left to right
b390: 2e 3c 2f 70 3e 0a 7d 0a 0a 53 65 63 74 69 6f 6e  .</p>.}..Section
b3a0: 20 55 50 44 41 54 45 20 75 70 64 61 74 65 0a 0a   UPDATE update..
b3b0: 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74  Syntax {sql-stat
b3c0: 65 6d 65 6e 74 7d 20 7b 0a 55 50 44 41 54 45 20  ement} {.UPDATE 
b3d0: 5b 20 4f 52 20 3c 63 6f 6e 66 6c 69 63 74 2d 61  [ OR <conflict-a
b3e0: 6c 67 6f 72 69 74 68 6d 3e 20 5d 20 3c 74 61 62  lgorithm> ] <tab
b3f0: 6c 65 2d 6e 61 6d 65 3e 0a 53 45 54 20 3c 61 73  le-name>.SET <as
b400: 73 69 67 6e 6d 65 6e 74 3e 20 5b 2c 20 3c 61 73  signment> [, <as
b410: 73 69 67 6e 6d 65 6e 74 3e 5d 20 0a 5b 57 48 45  signment>] .[WHE
b420: 52 45 20 3c 65 78 70 72 3e 5d 0a 7d 20 7b 61 73  RE <expr>].} {as
b430: 73 69 67 6e 6d 65 6e 74 7d 20 7b 0a 3c 63 6f 6c  signment} {.<col
b440: 75 6d 6e 2d 6e 61 6d 65 3e 20 3d 20 3c 65 78 70  umn-name> = <exp
b450: 72 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e  r>.}..puts {.<p>
b460: 54 68 65 20 55 50 44 41 54 45 20 73 74 61 74 65  The UPDATE state
b470: 6d 65 6e 74 20 69 73 20 75 73 65 64 20 74 6f 20  ment is used to 
b480: 63 68 61 6e 67 65 20 74 68 65 20 76 61 6c 75 65  change the value
b490: 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 0a   of columns in .
b4a0: 73 65 6c 65 63 74 65 64 20 72 6f 77 73 20 6f 66  selected rows of
b4b0: 20 61 20 74 61 62 6c 65 2e 20 20 45 61 63 68 20   a table.  Each 
b4c0: 61 73 73 69 67 6e 6d 65 6e 74 20 69 6e 20 61 6e  assignment in an
b4d0: 20 55 50 44 41 54 45 20 73 70 65 63 69 66 69 65   UPDATE specifie
b4e0: 73 0a 61 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 20  s.a column name 
b4f0: 74 6f 20 74 68 65 20 6c 65 66 74 20 6f 66 20 74  to the left of t
b500: 68 65 20 65 71 75 61 6c 73 20 73 69 67 6e 20 61  he equals sign a
b510: 6e 64 20 61 6e 20 61 72 62 69 74 72 61 72 79 20  nd an arbitrary 
b520: 65 78 70 72 65 73 73 69 6f 6e 0a 74 6f 20 74 68  expression.to th
b530: 65 20 72 69 67 68 74 2e 20 20 54 68 65 20 65 78  e right.  The ex
b540: 70 72 65 73 73 69 6f 6e 73 20 6d 61 79 20 75 73  pressions may us
b550: 65 20 74 68 65 20 76 61 6c 75 65 73 20 6f 66 20  e the values of 
b560: 6f 74 68 65 72 20 63 6f 6c 75 6d 6e 73 2e 0a 41  other columns..A
b570: 6c 6c 20 65 78 70 72 65 73 73 69 6f 6e 73 20 61  ll expressions a
b580: 72 65 20 65 76 61 6c 75 61 74 65 64 20 62 65 66  re evaluated bef
b590: 6f 72 65 20 61 6e 79 20 61 73 73 69 67 6e 6d 65  ore any assignme
b5a0: 6e 74 73 20 61 72 65 20 6d 61 64 65 2e 0a 41 20  nts are made..A 
b5b0: 57 48 45 52 45 20 63 6c 61 75 73 65 20 63 61 6e  WHERE clause can
b5c0: 20 62 65 20 75 73 65 64 20 74 6f 20 72 65 73 74   be used to rest
b5d0: 72 69 63 74 20 77 68 69 63 68 20 72 6f 77 73 20  rict which rows 
b5e0: 61 72 65 20 75 70 64 61 74 65 64 2e 3c 2f 70 3e  are updated.</p>
b5f0: 0a 0a 3c 70 3e 54 68 65 20 6f 70 74 69 6f 6e 61  ..<p>The optiona
b600: 6c 20 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73  l conflict-claus
b610: 65 20 61 6c 6c 6f 77 73 20 74 68 65 20 73 70 65  e allows the spe
b620: 63 69 66 69 63 61 74 69 6f 6e 20 6f 66 20 61 6e  cification of an
b630: 20 61 6c 74 65 72 6e 61 74 69 76 65 0a 63 6f 6e   alternative.con
b640: 73 74 72 61 69 6e 74 20 63 6f 6e 66 6c 69 63 74  straint conflict
b650: 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f   resolution algo
b660: 72 69 74 68 6d 20 74 6f 20 75 73 65 20 64 75 72  rithm to use dur
b670: 69 6e 67 20 74 68 69 73 20 6f 6e 65 20 63 6f 6d  ing this one com
b680: 6d 61 6e 64 2e 0a 53 65 65 20 74 68 65 20 73 65  mand..See the se
b690: 63 74 69 6f 6e 20 74 69 74 6c 65 64 0a 3c 61 20  ction titled.<a 
b6a0: 68 72 65 66 3d 22 23 63 6f 6e 66 6c 69 63 74 22  href="#conflict"
b6b0: 3e 4f 4e 20 43 4f 4e 46 4c 49 43 54 3c 2f 61 3e  >ON CONFLICT</a>
b6c0: 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20   for additional 
b6d0: 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 3c 2f 70 3e  information.</p>
b6e0: 0a 7d 0a 0a 53 65 63 74 69 6f 6e 20 56 41 43 55  .}..Section VACU
b6f0: 55 4d 20 76 61 63 75 75 6d 0a 0a 53 79 6e 74 61  UM vacuum..Synta
b700: 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74  x {sql-statement
b710: 7d 20 7b 0a 56 41 43 55 55 4d 20 5b 3c 69 6e 64  } {.VACUUM [<ind
b720: 65 78 2d 6f 72 2d 74 61 62 6c 65 2d 6e 61 6d 65  ex-or-table-name
b730: 3e 5d 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e  >].}..puts {.<p>
b740: 54 68 65 20 56 41 43 55 55 4d 20 63 6f 6d 6d 61  The VACUUM comma
b750: 6e 64 20 69 73 20 61 6e 20 53 51 4c 69 74 65 20  nd is an SQLite 
b760: 65 78 74 65 6e 73 69 6f 6e 20 6d 6f 64 65 6c 6c  extension modell
b770: 65 64 20 61 66 74 65 72 20 61 20 73 69 6d 69 6c  ed after a simil
b780: 61 72 0a 63 6f 6d 6d 61 6e 64 20 66 6f 75 6e 64  ar.command found
b790: 20 69 6e 20 50 6f 73 74 67 72 65 53 51 4c 2e 20   in PostgreSQL. 
b7a0: 20 49 66 20 56 41 43 55 55 4d 20 69 73 20 69 6e   If VACUUM is in
b7b0: 76 6f 6b 65 64 20 77 69 74 68 20 74 68 65 20 6e  voked with the n
b7c0: 61 6d 65 20 6f 66 20 61 0a 74 61 62 6c 65 20 6f  ame of a.table o
b7d0: 72 20 69 6e 64 65 78 20 74 68 65 6e 20 69 74 20  r index then it 
b7e0: 69 73 20 73 75 70 70 6f 73 65 20 74 6f 20 63 6c  is suppose to cl
b7f0: 65 61 6e 20 75 70 20 74 68 65 20 6e 61 6d 65 64  ean up the named
b800: 20 74 61 62 6c 65 20 6f 72 20 69 6e 64 65 78 2e   table or index.
b810: 0a 49 6e 20 76 65 72 73 69 6f 6e 20 31 2e 30 20  .In version 1.0 
b820: 6f 66 20 53 51 4c 69 74 65 2c 20 74 68 65 20 56  of SQLite, the V
b830: 41 43 55 55 4d 20 63 6f 6d 6d 61 6e 64 20 77 6f  ACUUM command wo
b840: 75 6c 64 20 69 6e 76 6f 6b 65 20 0a 3c 62 3e 67  uld invoke .<b>g
b850: 64 62 6d 5f 72 65 6f 72 67 61 6e 69 7a 65 28 29  dbm_reorganize()
b860: 3c 2f 62 3e 20 74 6f 20 63 6c 65 61 6e 20 75 70  </b> to clean up
b870: 20 74 68 65 20 62 61 63 6b 65 6e 64 20 64 61 74   the backend dat
b880: 61 62 61 73 65 20 66 69 6c 65 2e 0a 42 65 67 69  abase file..Begi
b890: 6e 6e 69 6e 67 20 77 69 74 68 20 76 65 72 73 69  nning with versi
b8a0: 6f 6e 20 32 2e 30 20 6f 66 20 53 51 4c 69 74 65  on 2.0 of SQLite
b8b0: 2c 20 47 44 42 4d 20 69 73 20 6e 6f 20 6c 6f 6e  , GDBM is no lon
b8c0: 67 65 72 20 75 73 65 64 20 66 6f 72 0a 74 68 65  ger used for.the
b8d0: 20 64 61 74 61 62 61 73 65 20 62 61 63 6b 65 6e   database backen
b8e0: 64 20 61 6e 64 20 56 41 43 55 55 4d 20 68 61 73  d and VACUUM has
b8f0: 20 62 65 63 6f 6d 65 20 61 20 6e 6f 2d 6f 70 2e   become a no-op.
b900: 0a 3c 2f 70 3e 0a 7d 0a 0a 0a 70 75 74 73 20 7b  .</p>.}...puts {
b910: 0a 3c 70 3e 3c 68 72 20 2f 3e 3c 2f 70 3e 0a 3c  .<p><hr /></p>.<
b920: 70 3e 3c 61 20 68 72 65 66 3d 22 69 6e 64 65 78  p><a href="index
b930: 2e 68 74 6d 6c 22 3e 3c 69 6d 67 20 73 72 63 3d  .html"><img src=
b940: 22 2f 67 6f 62 61 63 6b 2e 6a 70 67 22 20 62 6f  "/goback.jpg" bo
b950: 72 64 65 72 3d 30 20 2f 3e 0a 42 61 63 6b 20 74  rder=0 />.Back t
b960: 6f 20 74 68 65 20 53 51 4c 69 74 65 20 48 6f 6d  o the SQLite Hom
b970: 65 20 50 61 67 65 3c 2f 61 3e 0a 3c 2f 70 3e 0a  e Page</a>.</p>.
b980: 0a 3c 2f 62 6f 64 79 3e 3c 2f 68 74 6d 6c 3e 7d  .</body></html>}
b990: 0a                                               .